TYPE_COERCION [ HP Pascal/iX Reference Manual ] MPE/iX 5.0 Documentation
HP Pascal/iX Reference Manual
TYPE_COERCION
TYPE_COERCION is a System Programming Option.
The TYPE_COERCION compiler option determines the level of value type
coercion that the compiler allows.
Syntax
{NONE }
{CONVERSION }
$TYPE_COERCION ' {STRUCTURAL }'$
{REPRESENTATION}
{STORAGE }
{NONCOMPATIBLE }
Parameters
NONE Prevents type coercion.
CONVERSION Permits value type coercion of ordinal and pointer
types. This is the most useful and transportable form
of type coercion.
STRUCTURAL Permits coercion of any data type to any structurally
compatible data type. (This is equivalent to renaming
components. It is fully transportable.)
REPRESENTATION Permits coercion of any data type to any
representation-size compatible data type.
Representation-size compatible types have identical
BitSizeof values.
STORAGE Permits any type coercion that does not extend the
amount of storage accessed. The data type being coerced
must have a Sizeof value less than or equal to the
Sizeof value of the data type to which it is being
coerced.
NONCOMPATIBLE Permits coercion of any data item to any data type.
This coercion can be dangerous, and errors cannot be
detected.
Default NONE.
Location Anywhere.
See Chapter 11 for more information on type coercion.
Example
0 1.000 0 $STANDARD_LEVEL 'HP_MODCAL'$
0 2.000 0 PROGRAM show_type_coercion;
0 3.000 0
0 4.000 0 TYPE
0 5.000 0 Rec1 = RECORD
1 6.000 0 F1 : integer;
2 7.000 0 F2 : integer;
3 8.000 0 END;
3 9.000 0 Arr1 = PACKED ARRAY [1..8] OF char;
4 10.000 0
4 11.000 0 VAR
4 12.000 0 R : Rec1;
5 13.000 0 A : Arr1;
6 14.000 0
6 15.000 1 BEGIN
6 16.000 1
6 17.000 1 R.F1 := 101; R.F2 := 280;
8 18.000 1
8 19.000 1 $TYPE_COERCION 'Structural'$
8 20.000 1
8 21.000 1 A := Arr1(R); {illegal, not structurally compatible}
^
**** ERROR # 1 COERCION REQUIRES $TYPE_COERCION 'REPRESENTATION'$ (809)
9 22.000 1
9 23.000 1 $TYPE_COERCION 'Representation'$
9 24.000 1
9 25.000 1 A := Arr1(R);
10 26.000 1
10 27.000 1 END.
MPE/iX 5.0 Documentation