The following enhancements and changes have been added:
The CAST type function converts an expression using C rules.
CAST has the syntax: CAST(: t, x :)
t must be a defined scalar "C type". This means that t must be one of
x must be a scalar expression also having C type. Moreover, if x is FLOAT, then t must be FLOAT or FIXED BIN, and if t is FLOAT, then x must be FLOAT or FIXED BIN.
Any conversions that are needed follow C rules. This means that SIZE will not be raised by CAST, and if negative values are cast to UNSIGNED, then the result will be a large positive number.
As an example, if t is a type with the attributes UNSIGNED FIXED BIN(32), then CAST(: t, bin(-1,31) :) would return the value 4294967295.
The following changes have been made to increase compatibility with the old host compiler:
The following compiler/library problems have been fixed:
The following LPEX problems have been fixed:
Example: dcl 1 a, %include b;;
Example: dcl a(10) int init((10)0);
Example: dcl (abc)(2) char;
Example:
if a = b then c = d;
where the word "then" may be flagged.
Example: dcl a init((10)('$')) static;
Example: dcl e initial((*)0);
Example: %include "c:\abc.inc"
Example: dcl pdays(2) static ptr init to (varyingz) ('Sunday','Saturday');