A Long Array occupies 1 Stack Cell for the Untouched_DD MOM Descriptor.
The Untouched_DD is created by calling the MCP ArrayDec Intrinsic. The Compiler stores the Untouched_DD returned by ArrayDec into the appropriate Stack Cell.
Long Array A[0:5073]; (02,0002) = A 0003:0000:1 LT48 BE 0003:0001 0000000013D2 (3"0000000000011722") (01,0004) = ARRAYDEC 0003:0002:0 MKSN DF 0003:0002:1 NAMC (01,0004) 6004 ARRAYDEC 0003:0002:3 NAMC (02,0002) 5002 0003:0002:5 STFF AF 0003:0003:0 ONE B1 0003:0003:1 LT8 16 B210 0003:0003:3 CHSN 8E 0003:0003:4 ENTR AB 0003:0003:5 NAMC (02,0002) 5002 0003:0004:1 OVRD BA
The declaration of ArrayDec is in the MCP at 4709950,
PROCEDURE ARRAYDEC (SIRW_TO_MOM,NO_OF_DIMS,TYPE_INFO); VALUE SIRW_TO_MOM, NO_OF_DIMS, TYPE_INFO; REAL NO_OF_DIMS; WORD SIRW_TO_MOM, TYPE_INFO;
Although ArrayDec is declared as a PROCEDURE, in this case it acts as a FUNCTION which returns an Untouched_DD for the MOM Descriptor.
... THIS_STACK[SI]:=IDD; // Store the Untouched_DD for the MOM ...
This means that after calling ArrayDec the Untouched_DD returned by ArrayDec must be stored into it's proper stack location.
The three parameters declared for ArrayDec are,
The TYPE_INFO for a Long Array must include the LongF Flag.
[46:1] | LongF | Long Unsegmented Array. ArrayDec resets this bit for certain Array types. |
---|
The maximum length for a LONG Array is 65536 Words.