package Discr21_Pkg is type Position is record x,y,z : Float; end record; type Dim is (Two, Three); type VPosition (D: Dim := Three) is record x, y : Float; case D is when Two => null; when Three => z : Float; end case; end record; function To_Position (x, y, z : Float) return VPosition; end Discr21_Pkg;