-- Chapter 30 - Program 3 generic type LIMPRIV is limited private; -- Limited private type type PRIV is private; -- Private type type DISCRETE_TYPE is (<>); -- Discrete type type INT_TYPE is range <>; -- Integer type type MOD_TYPE is mod <>; -- Modular type type FLOAT_TYPE is digits <>; -- Floating point type type FIXED_TYPE is delta <>; -- Fixed point type type DECIMAL_TYPE is delta <> digits <>; -- Decimal type procedure AllGener; procedure AllGener is begin null; end AllGener; generic type LIMPRIV is limited private; type PRIV is private; type DISCRETE_TYPE is (<>); type MOD_TYPE is mod <>; type FLOAT_TYPE is digits <>; type FIXED_TYPE is delta <>; procedure ManyUsed(A, B, C : MOD_TYPE; Data_In : LIMPRIV; More_Dat : PRIV; List_Of : DISCRETE_TYPE; Real_Dat : FLOAT_TYPE; Fix_Dat : FIXED_TYPE); procedure ManyUsed(A, B, C : MOD_TYPE; Data_In : LIMPRIV; More_Dat : PRIV; List_Of : DISCRETE_TYPE; Real_Dat : FLOAT_TYPE; Fix_Dat : FIXED_TYPE) is Index2 : MOD_TYPE := 4; Index3 : INTEGER := 7; type NEW_INTEGER is new INTEGER range 12..34; Small_Int : NEW_INTEGER := 17; begin Index2 := A + B + C + MOD_TYPE(Index3) + MOD_TYPE(Small_Int); end ManyUsed; -- Result of execution -- (No results, this is not executable)