CALL DSNALI ステートメント・パラメーター・リスト

CALL DSNALI ステートメントは、CAF を明示的に呼び出します。 プログラムに CALL DSNALI ステートメントを組み込む際には、戻りコード・パラメーターに先行するすべてのパラメーターを指定する必要があります。

CALL DSNALI文では、標準の z/OS® CALLパラメータリストを使用します。 レジスター 1 は、実際のパラメーターを指し示す フルワード・アドレスのリストを指します。 最後のアドレスは、高位ビットに 1 が入っていなければなりま せん。

CALL DSNALI ステートメントでは、ゼロまたはブランクをコーディングすることによって、戻りコード・パラメーターに先行するパラメーターを省略できません。 明示接続要求の場合は、これらのパラメーターにデフォルトはありません。 デフォルトは、暗黙接続の場合にのみ設定されます。 戻りコード・パラメーターが先頭にあるすべてのパラメーターは、オプションです。

パラメーターの 1 つにデフォルト値を使用し、その後に続くパラメーターを指定する場合は、次のように CALL DSNALI ステートメントをコーディングします。
  • C言語の場合、CでCALL DSNALIステートメントをコーディングするときは、パラメーター自体ではなく、演算子(&)のアドレスを使用して、必要なすべてのパラメーターのアドレスを指定する必要があります。 例えば、CONNECT でstartecbパラメータを渡すには、4バイト整数のアドレス(&secb)を指定します。変更の開始
    char functn[13] = "CONNECT     ";
    char   ssid[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);
    変更の終わり
  • アセンブラー言語以外の言語の場合、CALL DSNALI ステートメント内でそのパラメーターに対してゼロをコーディングします。 例えば、CONNECT 呼び出しを COBOL プログラムの中にコーディングし、戻りコード・パラメーターを除くすべてのパラメーターを指定するとします。 次に示すステートメントのように、ステートメントを記述できます。
    CALL 'DSNALI' USING FUNCTN SSID TECB SECB RIBPTR
       BY CONTENT ZERO BY REFERENCE REASCODE SRDURA EIBPTR.
  • アセンブラー言語の場合、CALL DSNALI ステートメント内でそのパラメーターに対してコンマをコーディングします。 例えば、戻りコード・パラメーターを除くすべてのオプション・パラメーターを指定するには、次に示すようなステートメントを作成します。
    CALL DSNALI,(FUNCTN,SSID,TERMECB,STARTECB,RIBPTR,,REASCODE,SRDURA,EIBPTR,
    GROUPOVERRIDE)

次の図に、CONNECT 機能のサンプルのパラメーター・リスト構造を示します。

図1: CONNECT 呼び出しの場合のパラメーター・リスト
図の説明 summary.This 図は、CONNECT コールを説明するための一連のボックスと矢印を示しています。 詳細な説明をご用意しております。
前記の図は、CALL DSNALI ステートメントのパラメーターを省略して、CONNECT 呼び出しの後に戻りコードと理由コードのフィールドを制御する方法を示しています。 次に示すポイントのいずれかで、パラメーター・リストを終了できます。 これらの終了ポイントは、すべての CALL DSNALI ステートメントのパラメーター・リストに当てはまります。
  1. retcodereascode、および srdura などのパラメーターを指定せずにパラメーター・リストを終了させ、戻りコードを レジスター 15 に、理由コードをレジスター 0 に入れます。

    このポイントでパラメーター・リストを終了させたのは、レジスター 15 に入っている 戻りコードとレジスター 0 に入っている理由コードを 必要とする CAF プログラムとの互換性を保つためです。

  2. パラメーター retcode の後でパラメーター・リストを終了し、 戻りコードをパラメーター・リストに、 理由コードをレジスター 0 に入れます。

    このポイントでパラメーター・リストを終了すると、アプリケーション・プログラムが関連の理由コードを調べなくても、戻りコードに基づいて処置をとることができます。

  3. パラメーター reascode の後でパラメーター・リストを終了し、 戻りコードおよび理由コードをパラメーター・リストに入れます。

    このポイントでパラメーター・リストを終了させたのは、個々のレジスターの内容を 調べることができない高水準言語をサポートするためです。

    CAF アプリケーションをアセンブラー言語でコーディングする場合には、 理由コード・パラメーターを指定して、 戻りコード・パラメーターを省略できます。

  4. パラメーター srdura の後でパラメーター・ リストを終了します。

    CAF アプリケーションをアセンブラー言語でコーディングする場合には、このパラメーターを 指定して、retcode および reascode パラメーター を省略できます。

  5. パラメーター eibptr の後で パラメーター・リストを終了します。

    CAF アプリケーションをアセンブラー言語でコーディングする場合には、 このパラメーターを指定して、retcodereascode、 または srdura パラメーターを省略できます。

  6. パラメーター groupoverride の後で パラメーター・リストを終了します。

    CAF アプリケーションをアセンブラー言語でコーディングする場合には、 このパラメーターを指定して、retcodereascode,srdura、または eibptr パラメーターを省略できます。

戻りコードをパラメーター・リストに入れるよう指定している場合でも、 戻りコードは、特殊な戻りコード処理をサポートする 高水準言語で使用できるように、レジスター 15 にも入れられます。