Except where indicated, the compiler will flag the use of any language that is restricted.
RECORD I/O is supported, but with the following restrictions:
STREAM I/O is supported, but the following restrictions apply to PUT/GET DATA statements:
Structure expressions as arguments are not supported unless both of the following conditions are true:
An array expression is not allowed as an argument to a user function unless it is an array of scalars of known size. Consequently, any array of scalars of arithmetic type may be passed to a user function, but there may be problems with arrays of varying-length strings.
The following example shows a numeric array expression supported in a call:
dcl x entry, (y(10),z(10)) fixed bin(31);
call x(y + z);
The following unprototyped call would be flagged since it requires a string expression of unknown size:
dcl a1 entry;
dcl (b(10),c(10)) char(20) var;
call a1(b || c);However, the following prototyped call would not be flagged:
dcl a2 entry(char(30) var);
dcl (b(10),c(10)) char(20) var;
call a2(b || c);
Factored default specifications are not supported.
For example, a statement such as the following is not supported:
default ( range(a:h), range(p:z) ) fixed bin;
But you could change the above statement to the following equivalent and supported statement:
default range(a:h) fixed bin, range(p:z) fixed bin;
The use of a "(" after the DEFAULT keyword is reserved for the same purpose as under the ANSI standard: after the DEFAULT keyword, the standard allows a parenthesized logical predicate in attributes.
An extent of an automatic variable cannot be set by a function nested in the procedure where the automatic variable is declared or by an entry variable unless the entry variable is declared before the automatic variable.
Built-in functions are supported with the following exceptions/restrictions:
Support for iSUB defining is limited to arrays of scalars.
DBCS can be used only in the following:
G literals can start and end with a DBCS quote followed by either a DBCS G or an SBCS G.