TAL Reference Manual
NAMEs and BLOCKs
TAL Reference Manual—526371-001
11-4
Examples of BLOCK Declarations
°
Share data with compilation units written in other languages
°
Run your program in the CRE
°
Use 0D as nil for pointers
•
Some of the AT and BELOW clauses are not portable to future software platforms.
Efficient Code
For extended pointers declared within BLOCK declarations that specify AT (0) or
BELOW (64), the compiler generates efficient code using the XX instructions (LWXX,
SWXX, LBXX, and SBXX). The INHIBITXX directive, which suppresses generation of
the XX instructions, has no effect on such BLOCK declarations.
The INT32INDEX directive suppresses the generation of XX instructions regardless of
the BLOCK declaration.
For information on the XX instructions, see the
System Description Manual for your
system.
Examples of BLOCK Declarations
1. This example declares a private global data block, which is accessible only to the
current compilation unit. The compiler gives this private block the identifier
specified in the NAME declaration for the current compilation unit:
BLOCK PRIVATE;
INT term_num;
LITERAL msg_buf = 79;
END BLOCK;
2. This example declares a named global data block, DEFAULT_VOL, which is
accessible to other compilation units:
BLOCK default_vol;
INT .vol_array [0:7],
.out_array [0:34];
END BLOCK;
3. This example declares a named global data block to be located below G[64]:
BLOCK extended_indexed_stuff BELOW (64);
INT .EXT sym_tab [0:32760],
.EXT err_tab [0:16380];
END BLOCK;