CALL DSNALI statement parameter list

The CALL DSNALI statement explicitly invokes CAF. When you include CALL DSNALI statements in your program, you must specify all parameters that come before the return code parameter.

For CALL DSNALI statements, use a standard z/OS® CALL parameter list. Register 1 points to a list of fullword addresses that point to the actual parameters. The last address must contain a 1 in the high-order bit.

In CALL DSNALI statements, you cannot omit any of parameters that come before the return code parameter by coding zeros or blanks. No defaults exist for those parameters for explicit connection requests. Defaults are provided for only implicit connections. All parameters starting with the return code parameter are optional.

When you want to use the default value for a parameter but specify subsequent parameters, code the CALL DSNALI statement as follows:
  • For C-language, when you code CALL DSNALI statements in C, you need to specify the address of every required parameter, using the "address of" operator (&), and not the parameter itself. For example, to pass the startecb parameter on CONNECT, specify the address of the 4-byte integer (&secb).
    functn char[13] = "CONNECT     ";
    ssid   char[ 5] = "DB2A";
    int    tecb     = 0;
    int    secb     = 0;
    ptr    ribptr;
    int    retcode;
    int    reascode;
    ptr    eibptr;
    
    fnret = dsnali(&functn[0], &ssid[0], &tecb, &secb, &ribptr, &retcode, &reascode, 
                   NULL, &eibptr);
  • For other languages except assembler language, code zero for that parameter in the CALL DSNALI statement. For example, suppose that you are coding a CONNECT call in a COBOL program, and you want to specify all parameters except the return code parameter. You can write a statement similar to the following statement:
    CALL 'DSNALI' USING FUNCTN SSID TECB SECB RIBPTR
       BY CONTENT ZERO BY REFERENCE REASCODE SRDURA EIBPTR.
  • For assembler language, code a comma for that parameter in the CALL DSNALI statement. For example, to specify all optional parameters except the return code parameter write a statement similar to the following statement:
    CALL DSNALI,(FUNCTN,SSID,TERMECB,STARTECB,RIBPTR,,REASCODE,SRDURA,EIBPTR,
    GROUPOVERRIDE)

The following figure shows a sample parameter list structure for the CONNECT function.

Figure 1. The parameter list for a CONNECT call
Begin figure summary.This figure shows a series of boxes and arrows to illustrate a CONNECT call. Detailed description available.
The preceding figure illustrates how you can omit parameters for the CALL DSNALI statement to control the return code and reason code fields after a CONNECT call. You can terminate the parameter list at any of the following points. These termination points apply to all CALL DSNALI statement parameter lists.
  1. Terminates the parameter list without specifying the parameters retcode, reascodeand srdura and places the return code in register 15 and the reason code in register 0.

    Terminating the parameter list at this point ensures compatibility with CAF programs that require a return code in register 15 and a reason code in register 0.

  2. Terminates the parameter list after the parameter retcode and places the return code in the parameter list and the reason code in register 0.

    Terminating the parameter list at this point enables the application program to take action, based on the return code, without further examination of the associated reason code.

  3. Terminates the parameter list after the parameter reascode and places the return code and the reason code in the parameter list.

    Terminating the parameter list at this point provides support to high-level languages that are unable to examine the contents of individual registers.

    If you code your CAF application in assembler language, you can specify the reason code parameter and omit the return code parameter.

  4. Terminates the parameter list after the parameter srdura.

    If you code your CAF application in assembler language, you can specify this parameter and omit the retcode and reascode parameters.

  5. Terminates the parameter list after the parameter eibptr.

    If you code your CAF application in assembler language, you can specify this parameter and omit the retcode, reascode, or srdura parameters.

  6. Terminates the parameter list after the parameter groupoverride.

    If you code your CAF application in assembler language, you can specify this parameter and omit the retcode, reascode,srdura, or eibptr parameters.

Even if you specify that the return code be placed in the parameter list, it is also placed in register 15 to accommodate high-level languages that support special return code processing.