in out
or out
has the form of a type conversion of a (variable) name as explained in section 6.4.1.
REAL(2*J) -- value is converted to floating point
INTEGER(1.6) -- value is 2
INTEGER(-0.4) -- value is 0
type
A_FORM is new
B_FORM;
Y : B_FORM;
Y := B_FORM(X); -- the reverse conversion
type
SEQUENCE is array
(INTEGER range
<>) of
INTEGER;
subtype
DOZEN is
SEQUENCE(1 .. 12);
LEDGER : array
(1 .. 100) of
INTEGER;
SEQUENCE(LEDGER(31 .. 42)) -- bounds are 31 and 42
DOZEN(LEDGER(31 .. 42)) -- bounds are those of DOZEN
p>
X : INTEGER := 2;
1 + 2 + X -- implicit conversion of each integer literal
X + (1 + 2) -- implicit conversion of each integer literal
-- universal_integer
A'LENGTH = B'LENGTH -- no implicit conversion: the type is
-- universal_integer
C : constant
:= 3 + 2; -- no implicit conversion: the type is
-- universal_integer
and
1 = 2 -- implicit conversion of 3, but not of 1 and 2