PL/I macros that activate variables

Several PL/I macros shipped with Language Environment activate (%ACT) variables on behalf of the user program. Using them, code developers can use common Language Environment data types. Use of these variable names by a user program will result in a compile error. Table 1 lists the macros and the preprocessor variable names.

These PL/I preprocessor variables correspond with the Language Environment data types of the same name. Use them much as you would standard PL/I attributes. They can be used in combination with:
  • Storage class attributes (such as BASED)
  • Scope attributes (such as EXTERNAL)
  • Alignment attributes (such as ALIGNED)
  • Aggregation attributes, including dimensions and structure level numbers; in fact, some of the data types require the use of level numbers
The Language Environment data types must not be used in combination with:
  • Arithmetic attributes, including BASE, SCALR, MODE, PRECISION and PICTURE
  • String attributes, including BIT, CHAR, GRAPHIC, VARYING and PICTURE
  • Program control data Attributes, including AREA, ENTRY, FILE, LABEL, OFFSET, POINTER, TASK and VARIABLE
  • The LIKE attribute, although you can LIKEn another identifier to one declared using the Language Environment data types

It is strongly recommended that you always code the Language Environment data type as the last attribute in any identifier's declaration. Unlike true PL/I attributes, order sometimes counts.

There is another difference between these Language Environment data types and true PL/I attributes: some of them may not be used as parameter descriptors (in the parameter list of the ENTRY attribute). Consequently, some of the data types are available in two forms: with and without a "_PARM" suffix. In these cases, you must use the _PARM version when you specify a parameter descriptor, and the other version in all other contexts.

One final difference between the Language Environment data types in the following tablet and true PL/I attributes which you must be aware of is that the Language Environment data types must be treated as reserved words. Whereas PL/I attribute names can also be used as identifier names, the Language Environment data type names may not be used in any context other than that of an attribute.

Table 1. Variables activated by PL/I macros
PL/I macro Variables activated
CEEIBMAW INT2
  INT4
  FLOAT4
  FLOAT8
  FLOAT16
  COMPLEX4
  COMPLEX8
  COMPLEX16
  VSTRING
  VSTRING_PARM
  CHAR80
  FEEDBACK
  FEED_BACK
  FEEDBACK_PARM
  FEED_BACK_PARM
  CEE_ENTRY
  CEE_ENTRY_PARM
   
CEEIBMCT FBCHECK