Provides support when performing arithmetic on mainframe-style pointers.
Syntax:
>>-.---.-.-------AMODE--"format"---.---------><
+-/-+ +---NO--AMODE-------------+
Parameters:
-
format
- The storage format of pointers:
- 24
- All pointers are stored in a 24-bit format. This format is compatible with "below-the-line" storage on the mainframe. The
top 8 bits of the pointer are masked off when the address of a linkage item is set from the pointer. This means that, as on
the mainframe, the top 8 bits can be manipulated directly by the user's code.
- 31
- All pointers are stored in a 31-bit format. This format is compatible with "above-the-line" storage on the mainframe. The
top bit of the pointer is masked off when the address of a linkage item is set from the pointer. This means that, as on the
mainframe, the top bit can be manipulated directly by the user's code.
Properties:
Default:
|
NOAMODE
|
Phase:
|
Syntax check
|
$SET:
|
Initial
|
Dependencies:
AMODE"31" sets DATA"31" immediately.
Comments:
In general, to eliminate potential problems that might occur when trying to be selective about which programs are compiled with this directive, we strongly recommended that you use the AMODE directive on all programs in the application, and that you use the same value for format for each subprogram.
The AMODE directive cannot be used for programs that need to call a Micro Focus library routine or an external API that expects pointer items to be in the native machine format, or for subprograms that use any of the CBL_ALLOC_* or CBL_FREE_* library routines.
AMODE is required when compiling applications that call assembler programs.