Control block manipulation macro return and reason codes

The GENCB, MODCB, SHOWCB, and TESTCB macros can be executed (unlike the ACB, EXLST, and RPL macros). They cause control to be given to VSAM to perform the indicated task. VSAM indicates if the task was completed by a return code in register 15 (see Table 1).

Table 1. Return Codes in Register 15 After Control Block Manipulation Macros
Return Code Meaning
0(X'0') Task completed.
4(X'4') Task not completed.
8(X'8') An attempt was made to use the execute form of a macro to modify a keyword that is not in the parameter list. (See Use of list, execute, and generate forms of VSAM macros.)

You can cause an error if you specify the operands incorrectly.

When register 15 contains 4, register 0 contains a reason code indicating why VSAM could not perform the task. If you construct the parameter list, register 0 can contain reason codes 1, 2, 3, 10, 14, 20, and 21.

Table 2 describes each reason code returned in register 0.

Table 2. GENCB, MODCB, SHOWCB, and TESTCB Reason Codes Returned in Register 0
Reason Code Applicable Macros1 Reason VSAM Could Not Perform the Task
1(X'1') G,M,S,T The request type (generate, modify, show, or test) is invalid.
2(X'2') G,M,S,T The block type (access method control block, exit list, or request parameter list) is invalid.
3(X'3') G,M,S,T One of the keyword codes in the parameter list is invalid.
4(X'4') M,S,T The block at the address indicated is not of the type you indicated (access method control block, exit list, or request parameter list).
5(X'5') S,T Access method control block fields were to be shown or tested, but the data set is not open or it is not a VSAM data set.
6(X'6') S,T Access method control block information about an index was to be shown or tested, but no index was opened with the data set.
7(X'7') M,S An exit list was to be modified, but the list was not large enough to contain the new entry. Or, an exit was to be modified or shown but the specified exit wasn't in the exit list. (With TESTCB, if the specified exit address is not present, you get an unequal condition when you test for it.)
8(X'8') G There is not enough virtual storage in your program's address space to generate the access method control blocks, exit lists, or request parameter lists and no work area outside your address space was specified.
9(X'9') G,S The work area specified was too small for generation or display of the indicated control block or fields.
10(X'A') G,M With GENCB, exit list control block type was specified and you specified an exit without giving an address. With MODCB, exit list control block type was specified and you specified an exit without giving an address. In this case, either active or inactive must be specified, but load cannot be specified.
11(X'B') M Either (1) a request parameter list was to be modified, but the request parameter list defines an asynchronous request that is active (that is, no CHECK or ENDREQ has been issued on the request) and thus cannot be modified; or (2) MODCB is already issued for the control block, but has not yet completed.
12(X'C') M An access method control block was to be modified, but the data set identified by the access method control block is open and cannot be modified.
13(X'D') M An exit list was to be modified, and you attempted to activate an exit without providing a new exit address. Because the indicated exit list does not contain an address for that exit, your request cannot be honored.
14(X'E') G,M,T One of the option codes (for MACRF, ATRB, or OPTCD) has an invalid combination of option codes specified (for example, OPTCD=(ADR,SKP)).
15(X'F') G,S The work area specified did not begin on a fullword boundary.
16(X'10') G,M,S,T A VTAM® keyword or subparameter was specified but the AM=VTAM parameter was not specified. AM=VTAM must be specified to process a VTAM version of the control block.
19(X'13') M,S,T A keyword was specified that refers to a field beyond the length of the control block located at the indicated address. (For example, a VTAM keyword is specified, but the control block it points to is a shorter, non-VTAM block.)
20(X'14') S Keywords were specified which apply only if MACRF includes LSR or GSR.
21(X'15') S,T The block to be displayed or tested does not exist because the data set is a dummy data set.
22(X'16') S AM=VTAM was specified and the RPL FIELDS parameter conflicts with the RPLNIB bit status. Either RPLFIELDS=NIB was specified and the RPLNIB was off, or RPL FIELDS=ARG was specified and the RPLNIB bit was on.
23(X'17') G The value specified in the work area length parameter exceeds the 65,535 byte limit.
24(X'18') S,T The SMSVSAM server is not available.
25(X'19') S LOKEY is not supported for RLS.
26(X'1A') S,T This request was issued against an ACB open to a different instance of the SMSVSAM server. The OPEN is no longer valid.
27(X'1A') G,M,S,T This request was issued in AR ASC mode, home ASC mode. Or the RLS address space had to be accessed and the request was issued in secondary ASC mode.
Note:
  1. G=GENCB, M=MODCB, S=SHOWCB, T=TESTCB