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)