Return codes for manipulative macroinstructions

When the application program receives control from any of the manipulative macroinstructions (GENCB, MODCB, TESTCB, or SHOWCB), register 15 is set to one of the decimal values shown here:
0
The macroinstruction was completed successfully.

If the macroinstruction is GENCB, register 1 contains the address of the control blocks and register 0 contains their total length (in bytes).

4
An error occurred. A return code is placed in register 0 indicating the cause of the error. (See Table 1.)
8
An error occurred. Specifically, an attempt has been made to use the execute form of the macroinstruction to enter a new item in the parameter list. (Only modifications to existing parameter lists are allowed, as explained in Forms of the manipulative macroinstruction.) Register 0 is not set.

When a return code of 4 is placed in register 15, an error return code is placed in register 0. Table 1 explains these error return codes and indicates the manipulative macroinstructions that can return each code. An X in the macroinstruction column means that the return code value applies to that macroinstruction.

Table 1. Manipulative macroinstruction register 0 return codes when register 15 is 4
Decimal value GENCB MODCB SHOWCB TESTCB Explanation
1 X X X X Request type not valid. When the access method processed the execute form, it found that the part of the parameter list that indicates the type of request (GENCB, MODCB, SHOWCB, or TESTCB) had been destroyed.
2 X X X X Block type not valid. You modified the list form's parameter list. When the access method processed the execute form, it found that the part of the parameter list which indicates the type of control block (ACB, EXLST, RPL, or NIB) had been destroyed.
3 X X X X Keyword not valid. You modified the list form's parameter list. When the access method processed the execute form, it found that part of the parameter list representing keyword types (for example, FIELDS= and ERET=) had been destroyed.
4   X X X Block not valid. The address specified with the ACB, EXLST, RPL, or NIB keyword did not indicate a valid ACB, EXLST, RPL, or NIB control block, respectively.
5     X X Reserved (VSAM only)
6     X X Reserved (VSAM only)
7   X X   Field nonexistent. You attempted to modify or extract a field from an exit list, but the specified field does not exist. For example, you might have specified MODCB EXLST=EXLST1, LERAD=LERADPGM in order to place a valid address (LERADPGM) in EXLST1's LERAD field. The receipt of this return code means that EXLST1 has no LERAD field; you never specified on an EXLST or GENCB macroinstruction.
8 X       Insufficient main storage. There is not enough main storage in which to build the control block or blocks.
9 X   X   Insufficient program storage. The work area length you indicated with the LENGTH operand was not large enough to build the control blocks (GENCB) or to hold the control block fields (SHOWCB).
10 X X     No address supplied. You attempted to generate an EXLST entry without specifying an address. For example, coding TPEND= is not valid.
11   X     RPL active. You attempted to modify an RPL that was active (it must be inactive).
12   X     ACB open. You attempted to modify an ACB after it had been opened (the ACB must not be opened when you modify it).
13   X     Reserved (VSAM only)
14 X X   X Parameter list not valid. You modified the list form's parameter list. When the access method processed the execute form, it found that the parameter list now indicates mutually exclusive keywords (as though you had, for example, specified BLK=RPL,ECB=ECB1,EXIT=PGM on a GENCB macroinstruction).
15 X   X   Alignment not valid. The work area in your application program does not begin on a fullword boundary.
16 X X X X Control block not valid (access method not valid). You coded AM=VTAM® on the macroinstruction and included one or more parameters valid only for VSAM.
17       X No internal ECB. TESTCB (IO=COMPLETE) failed because there is no internal ECB in the RPL.
22     X   AM=VTAM was specified and the RPL field's parameter conflicted with the RPLNIB bit status. Either the RPLNIB field was specified and the RPLNIB bit was off, or the RPL ARG field was specified and the RPLNIB bit was on.