Kednos PL/I for OpenVMS Systems
User Manual
15.2 Addressability
Variables are either addressable or nonaddressable.
In some contexts, such as in argument lists of certain built-in
functions, a variable must be addressable. A variable is addressable if
it has all of the following properties:
- It is not suitable for bit-string overlay defining; that is, it
does not consist entirely of unaligned bit data.
- It is not an unconnected array (typically a member of an array of
structures).
- It is not declared with the VALUE attribute.
These rules ensure that the variable can occupy contiguous storage
beginning on a byte boundary. (Note that constants are never
addressable in PL/I.)
Appendix A
PL/I Messages
This appendix describes the messages produced by the following:
- The Kednos PL/I for OpenVMS VAX and Kednos PL/I for OpenVMS Alpha compilers
- The OpenVMS run-time system
- The CRX (%CRX messages issued during use of the Common Data
Dictionary)
The description of each message gives the severity, followed by
additional explanatory text and suggested action. Compiler messages
with severities of Error or Fatal require that you recompile the
program after correcting the source text.
A.1 Compiler Messages
This section list the diagnostic messages produced by the Kednos PL/I for OpenVMS VAX
and Kednos PL/I for OpenVMS Alpha compilers, alphabetized by identification.
ADDRARG, The argument of ADDR must be a byte addressable
reference.
Error: The argument of the ADDR built-in function is
not on a byte boundary. For example, this error occurs if the argument
is an unaligned bit string.
User Action: Verify that the correct argument is
specified for the ADDR built-in function. If a bit-string variable is
correctly specified, check that the declaration of the variable has the
ALIGNED attribute.
ADDRNOTREF, The argument of ADDR must be a reference to a
variable.
Error: The ADDR built-in function specifies an
argument that is a constant or a global symbol.
User Action: Verify that the correct argument is
specified for the ADDR built-in function and that the argument is not a
constant.
AGGMISMAT, The source and target of an assignment are aggregates
that do not match as required by the language rules.
Error: An assignment statement assigning the value of
one array to another or one structure to another references arrays or
structures that are not identical. This form of assignment is valid
only when arrays with the same data type, number of dimensions, and
extents are used, and when structures with the same hierarchy and data
types are used.
User Action: Verify that the references in the
assignment statement refer to the correct aggregates. Use separate
assignment statements if the source and target of an assignment are
aggregates that do not match.
ALIGNARRAY, The CDD description for array item entity
contains the ALIGNED attribute. ALIGNED is being ignored by PL/I.
Informational: Kednos PL/I for OpenVMS VAX does not support the
ALIGNED attribute on arrays, so if it is specified in CDD it is ignored.
User Action: No action is necessary.
ALIGNED, Entity has been declared with the ALIGNED
attribute. Only BIT or CHARACTER string variables can be declared
ALIGNED.
Error: The ALIGNED attribute is specified with a
conflicting attribute.
User Action: Correct the declaration of the variable.
AMBIGREF, This statement contains an ambiguous reference to
entity.
Error: This error is produced when more than one
structure contains a member with the same identifier name, and the name
is referenced without a structure qualifier.
User Action: Determine the member name that should be
referenced and correct the reference by including a structure qualifier
of the form name1.name2.name3... in the statement.
ANYCNOTSTAR, The ANY and CHARACTER attributes can only be used
together if the CHARACTER attribute is CHARACTER(*).
Warning: The ANY and CHARACTER attributes can be used
together only in the parameter declaration ANY CHARACTER(*).
Fixed-length ANY CHARACTER declarations are not allowed.
User Action: Correct the declaration to specify the
length as an asterisk.
ARGCVRT, Implicit conversion. A procedure argument,
entity, has been converted to the parameter type
entity.
Warning: The data type of the indicated argument does
not match the data type of the corresponding parameter descriptor, and
the PL/I compiler has converted the argument to the data type of the
parameter. This situation may or may not constitute an error.
User Action: To avoid this message in circumstances in
which you want the compiler to convert the argument, use an explicit
conversion built-in function (for example, CHARACTER, BINARY, or
FLOAT). You can also suppress the message by compiling the program with
the /NOWARNINGS qualifier.
ARGLEQ253, A procedure reference contains more than 253
arguments.
Error: A CALL statement or a function reference
specifies an argument list with more than 253 arguments.
User Action: Examine the argument list to see if there
is a syntax error. If the list is correct, simplify the program so that
no procedure requires more than 253 arguments.
ARGOMIT, An argument can be omitted with the ,, notation only when
the called procedure is declared as OPTIONS(VARIABLE) or when the
formal parameter is declared with the OPTIONAL attribute.
Error: An argument list in a procedure invocation
contains null arguments, for example (a,,b).
User Action: Verify that the argument list in the
procedure invocation specifies all arguments that are required. If the
procedure accepts default arguments, declare the formal parameters with
the OPTIONAL attribute.
ARITHSYN, Invalid syntax in an arithmetic constant.
Error: The statement contains an arithmetic constant
that is incorrectly specified.
User Action: This message may be followed by
additional messages that provide syntactic reasons for the failure.
Determine the type of constant required in the statement and the
correct way to specify the constant. Correct the statement.
ARRAYOVFL, FIXEDOVERFLOW occurred in calculating the multipliers or
virtual origin of the array entity.
Error: In an array with constant bounds (for some or
all of its dimensions), the FIXEDOVERFLOW condition occurred when the
compiler tried to calculate the multipliers and virtual origins of the
array.
User Action: Check that the values specified for the
array bounds are correct. Avoid using lower bound values that are very
large numbers.
ASSIGNCVT, Implicit conversion in an assignment, entity
has been converted to an entity target.
Warning: The data type of the indicated expression
does not match the data type of the target variable in the assignment,
and the PL/I compiler has converted the expression to the data type of
the target variable. This situation may or may not constitute an error.
User Action: To avoid this message in circumstances in
which you want the compiler to convert the expression to the data type
of the target, use an explicit conversion built-in function (for
example, CHARACTER, BINARY, or FLOAT). You can also suppress the
message by compiling the program with the /NOWARNINGS qualifier.
ATTRNOTSPC, Incomplete attributes have been specified for
entity.
Error: Something is missing in a declaration.
User Action: Correct the declaration.
BADAGGARG, Entity is an invalid array, structure, or area
argument. Such an argument must be a variable reference, must not be
enclosed in parentheses, and must exactly match the corresponding
parameter.
Error: An array dimension or a structure declaration
specified in a parameter descriptor does not match the corresponding
dimension or structure of the variable specified in the procedure
reference. For example, this error occurs if a parameter descriptor
specifies a two-dimensional array and the procedure reference specifies
the corresponding argument with a reference to a three-dimensional
array.
User Action: Determine whether the parameter
descriptor correctly specifies the data type, dimensions, and structure
of the required parameter. If so, correct the declaration of the
corresponding argument or the corresponding argument reference. If the
argument is specified correctly, correct the parameter descriptor. If
the procedure is a non-PL/I procedure, use the ANY attribute in the
parameter descriptor.
BADALLOCN, The argument of ALLOCATION must be a reference to a
CONTROLLED variable.
Error: The ALLOCATION built-in function returns the
number of generations of a variable and is used only with CONTROLLED
variables. A variable with a storage class other than CONTROLLED was
given as the argument of the ALLOCATION built-in function.
User Action: Supply a valid argument and recompile the
program.
BADANYARG, The procedure argument, entity, is not valid
for passing to the corresponding parameter, which was declared as ANY
or ANY VALUE.
Error: A parameter descriptor specifies ANY or ANY
VALUE, but the argument list specifies an expression that is not valid
for these argument-passing attributes. For example, this error occurs
when an expression whose value cannot be contained within 32 bits is
specified for a parameter declared with the VALUE attribute.
User Action: Determine how the argument is to be
passed, and correct either the parameter descriptor or the argument
reference.
BADARG, The procedure argument, entity, is not valid for
conversion to the entity parameter type.
Error: The indicated reference or expression specified
in an argument cannot be converted to the data type of the
corresponding parameter.
User Action: Determine whether the parameter
descriptor was correctly specified or if the argument is correct, and
change either the parameter descriptor or the argument list.
BADARITH, The noncomputational value, entity, has been
used in a context requiring an arithmetic value.
Error: The indicated expression or reference has a
data type that cannot be converted to an arithmetic expression, yet has
been specified in a context that requires an arithmetic expression.
User Action: Correct the expression so that it
specifies an arithmetic data type or a data type that can be converted
to arithmetic.
BADASSIGN, The source operand, entity, of an assignment is
invalid for conversion to the entity target.
Error: The variable or expression on the right side of
the assignment statement has a data type that is incompatible with the
data type of the target.
User Action: Correct the expression so that it
specifies a data type that can be converted to the data type of the
target. If the target is an array variable, or a member of a
dimensioned structure, be sure that the array reference contains a
valid subscript.
BADATATYPE, An expected entity value was not found. One of
the values in this statement has a data type that is inconsistent with
the context in which the value is used.
Error: A data item of one type has been specified in a
context where an item of another data type is required. For example,
this error occurs if the target label on the GOTO statement is not a
label but a variable declared with other data type attributes.
User Action: Verify the data type of the item, and
correct the declaration of the variable.
BADBASE, The CDD description for structure item entity
specifies an incompatible base.
Error: PL/I supports only decimal or binary numbers.
The Common Data Dictionary structure item entity is neither
decimal nor binary.
User Action: Change the Common Data Dictionary
description to an appropriate data type.
BADBIT, The noncomputational value, entity, has been used
in a context requiring a bit-string value.
Error: The indicated name or expression has a data
type that cannot be converted to a bit string.
User Action: Correct the expression or the reference
so that it has a data type that can be converted to a bit string.
BADBITCON, A bit-string constant contains an invalid digit or the
digit following the B is not 1, 2, 3, or 4.
Error: A bit-string constant is incorrectly specified.
User Action: Determine the correct base for the
bit-string constant, and correct the specification.
BADCHAR, A noncomputational value, entity, has been used
in a context requiring a character-string value.
Error: The indicated variable or expression has a data
type that cannot be converted to a character string, but is used in a
context that would require such conversion.
User Action: Correct the expression so that it
specifies a character-string data type or a data type that can be
converted to character.
BADCLATTR, Entity is declared with duplicate or
conflicting attributes. Entity conflicts with
entity.
Error: This error occurs when conflicting attributes
of any type are specified. Two examples of errors that produce this
message are as follows:
- File description attributes are specified with data type
attributes, or are specified for file variables or file parameters.
- The VALUE attribute is specified for any variable for which no data
type attributes are specified, or is specified with the READONLY
attribute.
User Action: Determine which is the incorrect
attribute of the name, and remove it from the declaration.
BADCLSLABL, The closure label in this statement does not match the
label prefix of the containing DO, SELECT, BEGIN, or PROCEDURE
block.
Error: Multiple closure is not permitted in
PL/I. Each DO, BEGIN, PROCEDURE, and SELECT statement in the
program must have a corresponding END statement.
User Action: Verify the label on the END statement in
error. The label must match the label on the most recent DO, BEGIN,
PROCEDURE, or SELECT statement that does not already have a
corresponding END statement.
BADCMPAREA, AREAs cannot be compared using relational
operators.
Error: An AREA variable cannot be used in an
expression with a relational operator.
User Action: Change the program to avoid using AREA
variables in relational expressions.
BADCOMPARE, Invalid comparison. The operands of relational
operators must both be arithmetic values, string values, or compatible
noncomputational items. Noncomputational data other than AREAs can be
compared only for equality.
Error: A variable or value of a noncomputational data
type is specified in a relational operation using the < or>
operators or forms of these operators. For example, this error occurs
if you use pointer or file variables in a comparison that tests
something other than equality or inequality.
User Action: Verify that the correct variable
references are specified in the expression and that the statement does
not violate the rules for operands of relational operators. Correct the
statement.
BADCONARG, The first argument, entity, of a conversion
built-in function is not a computational value.
Error: The indicated argument reference or expression
does not have a computational data type and therefore cannot be
converted to the computational data type result of the function.
User Action: Correct the argument list for the
function.
BADDEFBAS, The base reference specified for the DEFINED variable
entity is not a connected variable reference.
Error: A variable is declared with the DEFINED
attribute, and the variable specified in the DEFINED attribute is a
variable whose storage is unconnected.
User Action: Correct the variable declaration so that
it refers to a variable whose storage is connected.
BADELEREF, The refer element entity references storage in
the containing structure.
Error: The refer element cannot reference any storage
in the structure containing the refer element.
User Action: Change the refer element.
BADENVAL, Invalid argument in an ENVIRONMENT option. An
entity was not found where expected.
Error: An ENVIRONMENT option requires a restricted
integer expression, a Boolean expression, a character string, or a
variable reference. The statement in error contains an ENVIRONMENT
option that specifies a value that is not consistent with its type. For
example, this error occurs if a character-string argument is specified
for the MAXIMUM_RECORD_SIZE argument.
User Action: Determine the data type required, and
correct the ENVIRONMENT option.
BADEXTRACT, The first argument of INT or POSINT is an array,
structure, or named constant.
Error: The first element of INT or POSINT must be a
reference to a scalar variable or expression. It cannot be an array,
structure, or named constant. It can, however, be an array member or an
elementary structure member.
User Action: Make certain that the first element of
INT or POSINT is a legal argument.
BADFILATTR, This statement contains inconsistent file description
attributes or options that conflict with those attributes.
Error: The attributes specified for a file constant in
a DECLARE or OPEN statement are incompatible; for example, both the
STREAM and the UPDATE attributes are specified. This error also occurs
when conflicting ENVIRONMENT options are specified for a file.
User Action: Determine which attributes or options are
in conflict, and correct the statement.
BADFMTLABL, Entity is not the label of a FORMAT
statement.
Error: An R format item in a format specification list
for a GET or PUT statement contains a reference to a name that is not
the label of a FORMAT statement.
User Action: Verify that the label matches the label
on a valid FORMAT statement, and correct the statement.
BADFREETAR, A FREE statement must free a nonmember BASED or
CONTROLLED variable.
Error: A FREE statement specifies a variable that is
not a BASED variable, a CONTROLLED variable, or a variable that is a
member of a structure.
User Action: Correct the reference in the FREE
statement.
BADINITVAL, Entity has been declared with an INITIAL
attribute. An INITIAL attribute cannot be specified for variables of
this storage class.
Warning: The INITIAL attribute is specified for a
defined variable or for a parameter.
User Action: Ensure that the variable has the
AUTOMATIC, STATIC, BASED, CONTROLLED, or GLOBALDEF attribute. The
INITIAL attribute is invalid for all other storage classes.
BADINT, The noncomputational value, entity, has been used
in a context requiring an integer value.
Error: The indicated expression or reference has a
data type that cannot be converted to an integer, yet has been used in
a context that requires an integer.
User Action: Correct the reference so that it
specifies an integer.
BADKEYARG, The keyword argument entity does not match any
formal argument name for this preprocessor procedure.
Error: A keyword specified in a preprocessor procedure
with the STATEMENT option does not match any of the parameters.
User Action: Check the spelling of the keyword and
recompile.
BADLABSUB, The label index in a LEAVE statement must be an integer
constant.
Error: The label can be a label constant or a
subscripted label constant, but the subscript must be specified with an
integer constant.
User Action: If the label constant is a subscripted
label constant, ensure that the subscript is an integer constant.
BADLEAVE, The LEAVE statement must be contained by a DO group in
this block.
Error: A LEAVE statement must be contained in a
DO-group, which can be nested. However, all DO-groups containing the
LEAVE statement must be in the same block.
User Action: Ensure that the LEAVE statement is
contained within a DO-group and that they are both contained in the
same block.
BADLEFTSID, One of the targets of this assignment is not a variable
or pseudovariable reference.
Error: The left side of an assignment statement
contains a constant or an invalid reference.
User Action: If the target of the assignment is a
variable, ensure that it is properly declared. If the target is a
function reference, it must be one of the PL/I built-in functions that
are valid as pseudovariables.
BADLIKEDCL, A variable declared with the LIKE attribute references
another variable declared circularly LIKE itself.
Error: The LIKE attribute can reference major or minor
structures known to the current block. But the LIKE attribute cannot
directly or indirectly reference a structure containing itself.
User Action: If the LIKE attribute has already been
used once, it may be necessary to specifically declare the members of
the structure. Frequently used structure declarations can be entered in
the VAX Common Data Dictionary and then used repeatedly in programs.
BADLIKEREF, A variable declared with the LIKE attribute must
reference a legal structure.
Error: The referenced structure contains errors that
prohibit it from being recognized as a legal structure. Other error
messages probably indicate the source of the error in the referenced
structure.
User Action: Determine the errors in the referenced
structure and correct them.
BADLIKEVAR, Entity, which has been declared with the LIKE
attribute, is not a structure variable.
Error: The LIKE attribute can be applied only to major
and minor structures that are known to the current block.
User Action: Check if the referenced structure is
contained in the current block. If it is, determine whether it meets
the syntax requirements of the LIKE attribute.
BADMEMBER, Entity has been declared with the MEMBER
attribute, but it is not a structure member.
Error: The MEMBER keyword can be used only to denote
that an item is a member of a structure. It cannot be used to force an
entity that is not a structure member to have the MEMBER attribute.
User Action: Make the entity being declared into a
structure member or remove the MEMBER keyword.