Modifying fields in the command-level parameter structure by exits XFCAREQ and XFCAREQC
Some fields that are passed to a file control SPI request are used as input to the request, and some are used as output to the request. The method that your user exit program uses to modify a field depends on the usage of the field.
Input and output fields
- On INQUIRE FILE requests, all fields except FILE are output fields.
- On SET FILE requests, all fields are input fields.
For a full description of the parameters to INQUIRE FILE, see Table 1. For a full description of the parameters to SET FILE, see Table 2.
| Argument | Keyword | Data Type | Input/Output |
|---|---|---|---|
| Arg1 | FILE | CHAR(8) | See note. |
| Arg2 | DSNAME | CHAR(44) | Output |
| Arg3 | FWDRECSTATUS | BIN(31) | Output |
| Arg4 | STRINGS | BIN(31) | Output |
| Arg5 | BASEDSNAME | CHAR(44) | Output |
| Arg6 | LSRPOOLNUM | BIN(31) | Output |
| Arg7 | READ | BIN(31) | Output |
| Arg8 | UPDATE | BIN(31) | Output |
| Arg9 | BROWSE | BIN(31) | Output |
| Arg10 | ADD | BIN(31) | Output |
| Arg11 | DELETE | BIN(31) | Output |
| Arg12 | DISPOSITION | BIN(31) | Output |
| Arg13 | EMPTYSTATUS | BIN(31) | Output |
| Arg14 | OPENSTATUS | BIN(31) | Output |
| Arg15 | ENABLESTATUS | BIN(31) | Output |
| Arg16 | RECOVSTATUS | BIN(31) | Output |
| Arg17 | ACCESSMETHOD | BIN(31) | Output |
| Arg18 | TYPE | BIN(31) | Output |
| Arg19 | OBJECT | BIN(31) | Output |
| Arg20 | REMOTESYSTEM | CHAR(4) | Output |
| Arg21 | REMOTENAME | CHAR(8) | Output |
| Arg22 | RECORDFORMAT | BIN(31) | Output |
| Arg23 | BLOCKFORMAT | BIN(31) | Output |
| Arg24 | KEYLENGTH | BIN(31) | Output |
| Arg25 | KEYPOSITION | BIN(31) | Output |
| Arg26 | RECORDSIZE | BIN(31) | Output |
| Arg27 | RELTYPE | BIN(31) | Output |
| Arg28 | EXCLUSIVE | BIN(31) | Output |
| Arg29 | BLOCKKEYLEN | BIN(31) | Output |
| Arg30 | BLOCKSIZE | BIN(31) | Output |
| Arg31 | * | * | * |
| Arg32 | BUSY | BIN(31) | Output |
| Arg33 | TABLE | BIN(31) | Output |
| Arg34 | MAXNUMRECS | BIN(31) | Output |
| Arg35 | READINTEG | BIN(31) | Output |
| Arg36 | RLSACCESS | BIN(31) | Output |
| Arg37 | DEFINESOURCE | CHAR(8) | Output |
| Arg38 | INSTALLAGENT | BIN(31) | Output |
| Arg39 | INSTALLUSRID | CHAR(8) | Output |
| Arg40 | CHANGEAGENT | BIN(31) | Output |
| Arg41 to Arg51 | * | * | * |
| Arg52 | JOURNALNUM | BIN(15) | Output |
| Arg53 | LOADTYPE | BIN(31) | Output |
| Arg54 | CEDTPOOL | CHAR(8) | Output |
| Arg55 | TABLENAME | CHAR(8) | Output |
| Arg56 | UPDATEMODEL | BIN(31) | Output |
| Arg57 | REMOTETABLE | BIN(31) | Output |
| Arg58 | RBATYPE | BIN(31) | Output |
| Arg59 | CHANGEUSRID | CHAR(8) | Output |
| Arg60 | CHANGEAGREL | BIN(31) | Output |
| Arg61 | DEFINETIME | CHAR(8) | Output |
| Arg62 | CHANGETIME | CHAR(8) | Output |
| Arg63 | INSTALLTIME | CHAR(8) | Output |
- An input field if the request does not specify START, NEXT, or END
- An output field if the request specifies NEXT
- Omitted if the request specifies START or END.
| Argument | Keyword | Data Type | Input/Output |
|---|---|---|---|
| Arg1 | FILE | CHAR(8) | Input |
| Arg2 | DSNAME | CHAR(44) | Input |
| Arg3 | FWDRECSTATUS | BIN(31) | Input |
| Arg4 | STRINGS | BIN(31) | Input |
| Arg5 | * | * | * |
| Arg6 | LSRPOOLNUM | BIN(31) | Input |
| Arg7 | READ | BIN(31) | Input |
| Arg8 | UPDATE | BIN(31) | Input |
| Arg9 | BROWSE | BIN(31) | Input |
| Arg10 | ADD | BIN(31) | Input |
| Arg11 | DELETE | BIN(31) | Input |
| Arg12 | DISPOSITION | BIN(31) | Input |
| Arg13 | EMPTYSTATUS | BIN(31) | Input |
| Arg14 | OPENSTATUS | BIN(31) | Input |
| Arg15 | ENABLESTATUS | BIN(31) | Input |
| Arg16 | RECOVSTATUS | BIN(31) | Input |
| Arg17 | * | * | * |
| Arg18 | * | * | * |
| Arg19 | * | * | * |
| Arg20 | * | * | * |
| Arg21 | * | * | * |
| Arg22 | * | * | * |
| Arg23 | * | * | * |
| Arg24 | * | * | * |
| Arg25 | * | * | * |
| Arg26 | * | * | * |
| Arg27 | * | * | * |
| Arg28 | EXCLUSIVE | BIN(31) | Input |
| Arg29 | * | * | * |
| Arg30 | * | * | * |
| Arg31 | * | * | * |
| Arg32 | * | * | * |
| Arg33 | TABLE | BIN(31) | Input |
| Arg34 | MAXNUMRECS | BIN(31) | Input |
| Arg35 | READINTEG | BIN(31) | Input |
| Arg36 | RLSACCESS | BIN(31) | Input |
| Arg37 | * | * | * |
| Arg38 | * | * | * |
| Arg39 | * | * | * |
| Arg40 | * | * | * |
| Arg58 | * | * | * |
| Arg59 | * | * | * |
| Arg60 | * | * | * |
| Arg61 | * | * | * |
| Arg62 | * | * | * |
| Arg63 | * | * | * |
Modifying input fields
The correct method of modifying an input field is to create a new copy of it, and to change the address in the command-level parameter list to point to your new data.
Do not modify an input field by altering the data that is pointed to by the command-level parameter list. To do so would corrupt storage belonging to the application program and would cause a failure when the program attempted to reuse the field.
Modifying output fields
The technique described in Modifying input fields is not suitable for modifying output fields. (The results would be returned to the new area instead of the application’s area, and would be invisible to the application.)
An output field is modified by altering the data that is pointed to by the command-level parameter list. In the case of an output field, you can modify the application’s data in place, because the application is expecting the field to be modified anyway.