The exit routine loads the Filter Management Table (FMT) module. The filter modules specified in the FMT are then loaded by the exit routine. Each filter module is called by the exit in three ways: once to process an OPEN request, multiple times to process ADATA records, and once to process a CLOSE request.
The filter modules must be placed in a library in the standard search order.
Each filter is called by the exit using the standard call interface in the following form:
CALL filter(exit_type,action,return_code,handle,record_length,record)
The exit branches to the filter module using the BASR assembler instruction.
Standard OS linkage conventions are used, and the registers on entry to the filter module are:
The high-order bit of the last fullword address is set to one.
Figure 66 shows the six fullwords in the parameter list.
*---------------*
*------->| exit_type |
| *---------------*
|
| *---------------*
| *----->| action |
*---------------* *--------------------------* | | *---------------*
| register 1 *----->| address of exit_type *-* |
*---------------* *--------------------------* | *---------------*
| address of action *---* *--->| return_code |
*--------------------------* | *---------------*
| address of return_code *-----*
*--------------------------* *---------------*
| address of handle *--------->| handle |
*--------------------------* *---------------*
| address of record_length *-----*
*--------------------------* | *---------------*
| address of record *-* *--->| record_length |
*--------------------------* | *---------------*
|
| *---------------*
*------->| record |
*---------------*The six parameters are:
The exit accepts the following return codes:
The exit accepts the following return codes:
The exit accepts the following return codes:
If all the filter modules request termination before the last ADATA record is processed, the following message is issued and the assembly continues:
When the Filter Management Table routine detects an error it directs the assembler to issue message ASMA940U and the assembly stops. The following text might be included in the ASMA940U message:
The exit uses version 2 of the exit definition, but the assembler uses a different version.
The exit was invoked with a valid type, but the type is not one that the exit can process. This is probably caused by an incorrect ADEXIT() suboption of the EXIT assembler option.
The exit has not yet been initialized, but was not entered with an OPEN request (action=0). There may be a failure in communication between the assembler and the exit.
The exit has been initialized, but was unexpectedly entered with an OPEN request (action=0). There may be a failure in communication between the assembler and the exit.
An action was requested that is inconsistent with the type of action the exit is able or was expecting to take. There may be a failure in communication between the assembler and the exit.
The exit was expecting an input record, but the record length was zero. There may be a failure in communication between the assembler and the exit.
The assembler was unable to load the Filter Management Table module xxxxxxxx. No SYSADATA processing is possible.
All of the filter modules loaded by the exit failed to open. No SYSADATA processing is possible.
[ Top of Page | Previous Page | Next Page | Contents | Index ]