This calling standard distinguishes three classes of argument items according to the mechanism used to pass the argument:
Argument items are not self-defining; interpretation of each argument item depends on agreement between the calling and called procedures.
This standard does not dictate which of the above mechanisms must be used by a given language compiler. Language semantics and/or interoperability considerations may require different mechanisms to be used in any given situation.
An immediate value argument item contains the value of the data item. The argument item, or the value contained in it, is to be directly associated with the parameter.
A reference argument item contains the address of a data item such as a scalar, string, array, record, or procedure. That data item is to be associated with the parameter.
A descriptor argument item contains the address of a descriptor, which contains structural information about the argument's type (such as array bounds) and the address of a data item. That data item is to be associated with the parameter.
This standard does not define a standard set of descriptors. Consequently, descriptors cannot be used as part of a standard call.