The CHECK option specifies whether
the compiler should generate special code to detect various programming
errors.

.-+---+-----------------.
| '-,-' |
V .-NOCONFORMANCE-. |
>>-CHECK--(----+-+-CONFORMANCE---+-+-+--)----------------------><
| .-NOSTORAGE-. |
'-+-STORAGE---+-----'
ABBREVIATIONS: STG, NSTG
Specifying CHECK(CONFORMANCE) causes
the compiler to generate, under the following circumstances, code
that checks at run-time if the attributes of the arguments passed
to a procedure match those of the declared parameters
- If a parameter is a string (or
an array of strings) declared with a constant length, then the STRINGSIZE
condition will be raised if the argument passed does not have matching
length
- If a parameter is a string (or
an array of strings), then the STRINGSIZE condition will be raised
if the argument does not have the same length type (VARYING, NONVARYING
or VARYINGZ)
- If a parameter is an array (of
scalars or structures), then the SUBSCRIPTRANGE condition will be
raised if any constant bounds do not match those of the passed argument.
The SUBSCRIPTRANGE condition will also be raised if all the extents
are constant and the size and spacing of the array elements in the
argument do not match those in the parameter. Arrays inside a structure
are not checked.
- If a parameter is a structure or
union with constant extents, then the SUBSCRIPTRANGE condition will
be raised if the offset of the last element does not match that of
the passed argument.
- If the procedure has the RETURNS BYADDR attribute and that attribute
specifies a string type, then the STRINGSIZE condition will be raised
if the string passed for the RETURNS value does not have matching
length
This extra code will not be generated
if the NODESCRIPTOR option applies to the procedure or if the block
contains ENTRY statements or if the CMPAT(LE) option is in effect.
When you specify CHECK(STORAGE), the compiler calls slightly different
library routines for ALLOCATE and FREE statements (except when these
statements occur within an AREA). The following built-in functions,
described in the PL/I Language Reference, can be used only when CHECK(STORAGE) has been
specified:
- ALLOCSIZE
- CHECKSTG
- UNALLOCATED
AMODE(24) is not recommended for
Enterprise PL/I applications. For code compiled with the CHECK(STORAGE)
option, if you have to use AMODE(24), then you must also specify the
HEAP(,,BELOW) runtime option.
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)