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.