A Single Dimension Array is described by an Untouched Data Descriptor which has a Tag of 5, and occupies 1 Stack Cell.
0022 (02,000C) 5 240000 000100 EBCDICARRAY (EBCDIC array) Untouched, EBCDIC, Length=256 (Unreferenced olay space) 0021 (02,000B) 5 220000 00000C HEXARRAY (Hex array) Untouched, Hex, Length=12 (Unreferenced olay space) 0020 (02,000A) 5 210000 000002 DOUBLEARRAY (Double array) Untouched, Length=2, Double (Unreferenced olay space) 001F (02,0009) 5 200000 000011 SINGLEARRAY (Real array) Untouched, Length=17 (Unreferenced olay space)
When the Untouched Data Descriptor is referenced by an instruction, an interrupt occurs, and the MCP allocates memory for the array and replaces the Untouched Data Descriptor with a Touched Data Descriptor which references the memory.
This is the format of an Untouched Data Descriptor.
Tag 5 - UnTouched DataDesc | ||
---|---|---|
Field | Name | Description |
[47:2] | UntouchedTCBitsF | 0 |
[45:1] | UntouchedIBitF | Also called NEW_FORMATF and indicates the new format Untouched DataDesc if set to 1. The Algol Compiler generates an Untouched Descriptor with this bit set. |
[44:1] | UntouchedSBitF | Also called OBJ_FORMATF. Set to 0 for Single Dimension Arrays. |
[43:1] | UntouchedRBitF | ReadOnly Flag. |
[42:3] | UntouchedSzF | The size of the elements of the Array: SINGLE = 0 DOUBLE = 1 HEX = 2 EBCDIC = 4 |
[39:1] | SaveArrayF | 0 = Overlayable,1 = Save Array |
[38:39] | ExtLengthF | Extended Length. |
If a Single Dimension Array is declared in a Block, then BlockExit must be called and the SDTogF field of the Software Control Word must be set to ensure the array is deallocated.
Arrays are indexed from 0..SIZE(Array[*])-1;