Kednos PL/I for OpenVMS Systems
User Manual


Previous Contents Index

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:

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 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:
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.


Previous Next Contents Index