Reference. It refers to a variable of any data type, data
organization, alignment, and storage class except:
A subscripted reference to a variable that is an unaligned fixed-length
bit string
A reference to a DEFINED or BASED variable or simple parameter,
which is an unaligned fixed-length bit string
A minor structure or union whose first base element is an unaligned
fixed-length bit string (except where it is also the first element
of the containing major structure or union)
A major structure or union that has the DEFINED attribute or
is a parameter, and that has an unaligned fixed-length bit string
as its first element
A reference that is not to connected storage
If x is a reference to:
An aggregate parameter, it must have the CONNECTED attribute
An aggregate, the returned value identifies the first element
A component or cross section of an aggregate, the returned value
takes into account subscripting and structure or union qualification
A varying string, the returned value identifies the 2-byte prefix
An area, the returned value identifies the control information
A controlled variable that is not allocated in the current program,
the null pointer value is returned
A based variable, the result is the value of the pointer explicitly
qualifying x (if it appears), or associated with x in
its declaration (if it exists), or a null pointer
A parameter, and a dummy argument has been created, the returned
value identifies the dummy argument