BackbuttonLong Arrays

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,

  1. An SIRW to the Untouched MOM Descriptor (SIRW_TO_MOM).
  2. The Number of Dimensions (NO_OF_DIMS).
  3. Information about the type of array being declared (See the layout of TYPE_INFO).

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.