HLASM Programmer's Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Exit-Specific Information Block

HLASM Programmer's Guide
SC26-4941-06

All user exits are passed an Exit-Specific Information block pointed to by the Exit Parameter List. It contains a list of character data items which describe the data for the exit, and the absolute and relative record numbers for the record passed to the exit.

On entry to the exit, the Member Name field contains spaces (unless the data set is a SYSLIB data set), the Data Set Name field contains the path name, and the Volume Serial field contains spaces.

The Exit-Specific Information block passed to all exits, except the LISTING exit, is shown in Figure 2. The Exit-Specific Information block passed to the LISTING exit has additional parameters as shown in Figure 1.
Figure 1. Exit-specific information block—LISTING exit
   0                    31
  ┌───────────────────────┐                   ┌─────────────────────────────┐
  │ Ptr to Exit Block     ├──────────────────>│Member Name (255 bytes)      │
  └───────────────────────┘                   ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Member Type (255 bytes)      │
                                              ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Data Set Name (255 bytes)    │
                                              ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Volume Serial (255 bytes)    │
                                              ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Relative Record (4 bytes)    │
                                              ├─────────────────────────────┤
                                              │Absolute Record (4 bytes)    │
                                              ├─────────────────────────────┤
                                              │Linecount Value (4 bytes)    │
                                              ├─────────────────────────────┤
                                              │Current page number (4 bytes)│
                                              └─────────────────────────────┘
Figure 2. Exit-specific information block—other exit types
   0                    31
  ┌───────────────────────┐                   ┌─────────────────────────────┐
  │ Ptr to Exit Block     ├──────────────────>│Member Name (255 bytes)      │
  └───────────────────────┘                   ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Member Type (255 bytes)      │
                                              ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Data Set Name (255 bytes)    │
                                              ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Volume Serial (255 bytes)    │
                                              ├─────────────────────────────┤
                                              │Reserved (1 byte)            │
                                              ├─────────────────────────────┤
                                              │Relative Record (4 bytes)    │
                                              ├─────────────────────────────┤
                                              │Absolute Record (4 bytes)    │
                                              └─────────────────────────────┘

The Exit-Specific Information block consists of these fields:

Member Name
Member name within the data set. It is always provided for library members and is also provided for data set members used sequentially on z/OS where the data set is a partitioned data set.

The assembler also sets this field as a parameter for the FIND operation. It is left-aligned and padded with spaces.

For output files, the information should not be updated after it has been set by the OPEN call.

The assembler uses this field to update the system variable symbols, as described in Table 1 (z/OS and CMS) and Table 2 (z/VSE).

Member Type
z/VM and z/OS
Always blank. This field is present to maintain compatibility with High Level Assembler running on z/VSE.
z/VSE
The file type of the member. This field is also set by the assembler as a parameter for the FIND operation. It is left-aligned and padded with spaces.
Data Set Name
The name of the data set from which the last input record was retrieved, or to which the next output record is written. It is left-aligned and padded with spaces.
z/VSE
For library data sets, the name includes the library and sublibrary name.

For output files, the information should not be updated after it has been set by the OPEN call.

The assembler uses this field to update the system variable symbols, as described in Table 1 (z/OS and CMS) and Table 2 (z/VSE).

Volume Serial
Volume serial where the data set is located. It is left-aligned and padded with spaces.

For output files, the information should not be updated after it has been set by the OPEN call.

The assembler uses this field to update the system variable symbols, as described in Table 1 (z/OS and CMS) and Table 2 (z/VSE).

Table 1. z/OS and CMS system variable symbols
Data Set Member Name Data Set Name Volume Serial
SYSIN &SYSIN_MEMBER &SYSIN_DSN &SYSIN_VOLUME
SYSLIB &SYSLIB_MEMBER &SYSLIB_DSN &SYSLIB_VOLUME
SYSPRINT &SYSPRINT_MEMBER &SYSPRINT_DSN &SYSPRINT_VOLUME
SYSTERM &SYSTERM_MEMBER &SYSTERM_DSN &SYSTERM_VOLUME
SYSPUNCH &SYSPUNCH_MEMBER &SYSPUNCH_DSN &SYSPUNCH_VOLUME
SYSLIN &SYSLIN_MEMBER &SYSLIN_DSN &SYSLIN_VOLUME
SYSADATA &SYSADATA_MEMBER &SYSADATA_DSN &SYSADATA_VOLUME
Table 2. z/VSE system variable symbols
Data Set Member Name Data Set Name Volume Serial
SYSIPT (IJSYSIN) &SYSIN_MEMBER &SYSIN_DSN &SYSIN_VOLUME
Library &SYSLIB_MEMBER &SYSLIB_DSN &SYSLIB_VOLUME
SYSLST (IJSYSLS) &SYSPRINT_MEMBER &SYSPRINT_DSN &SYSPRINT_VOLUME
SYSLOG &SYSTERM_MEMBER &SYSTERM_DSN &SYSTERM_VOLUME
SYSPCH (IJSYSPH) &SYSPUNCH_MEMBER &SYSPUNCH_DSN &SYSPUNCH_VOLUME
SYSADAT &SYSADATA_MEMBER &SYSADATA_DSN &SYSADATA_VOLUME
Relative Record Number
The relative record number is the number assigned to the current record being processed.
PROCESS Calls
For PROCESS calls, it represents the total number of records the assembler has passed to the exit for the current data set. Each time a new data set or library member is opened for input, the relative record number is reset to 1 for the first record. If the new data set is a library member, caused by a macro call or a COPY instruction, the relative record number is returned to the correct sequential number when the macro or COPY processing is complete.
LISTING Exit
The relative record number is reset to 1 for the LISTING exit whenever the assembler forces a page eject.
BATCH Assembler Option
The relative record number is reset to 1 for all output data sets before each assembly when the BATCH assembler option is specified.
READ and WRITE Calls
For READ calls and WRITE calls, the exit should maintain the relative record number. The assembler uses the relative record number in information messages when you specify the FLAG(RECORD) option. If you specify the ADATA option, the assembler includes the record number in the associated data file (ADATA) Source Analysis record.
Absolute Record Number
The absolute record number is the number assigned to the current record being processed. The number is incremented by 1 for each record since the assembly started. For PROCESS calls, it represents the total number of records provided to the exit for the current exit type. It starts at 1, but is not reset when the BATCH assembler option is specified to assemble multiple source programs.

For READ calls and WRITE calls, the exit should maintain the absolute record number. The number provided after READ calls is written to the associated data file (ADATA) in the Source Analysis record.

Linecount
This field is only provided for the LISTING exit.

The linecount value is set to the value of the LINECOUNT assembler option before the OPEN call to the LISTING exit. This option contains the number of lines per page in the assembler listing. The exit might change the linecount value only during the OPEN call.

For PROCESS calls, the linecount field contains the number of logical records written to the current listing page. A page eject occurs when the number exceeds the linecount value specified in the LINECOUNT assembler option or during the OPEN call.

Current Page Number
The assembler sets this field to the value of the current page number. Any change the exit makes to this number is ignored.

This field is only provided for the LISTING exit and only for the PROCESS, WRITE, and CLOSE call types.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014