プログラム・プロパティー @DLI によって、 値の設定ブロックを使用したプログラムによる DL/I 呼び出しの動作を指定できます。 プログラムにこのプロパティーを組み込むと、 EGL は DL/I データベースへの最新の呼び出しに関する詳細にアクセスできます。 詳細については、『DLIVar』を参照してください。
CICS® 以外の環境では、ランタイム PSB が実行単位でスケジュールされた最初のものである場合、変更できません。
以下の例で示すように、配列内のストリングの位置は、プログラム PSB レコード・パーツ にある PCB レコードの位置に一致しなければなりません。 また、配列にある空でない各ストリングは、プログラム・パラメーターのリストの PCB レコード名に一致する必要があります。
Record PSBRecordPart type PSBRecord {defaultPSBName = "ibmPSB"} // 以下のレコードの詳細はこの例では省略されます ioPCB IO_PCBRecord; dbPCB DB_PCBRecord; // パス済み db2PCB DB_PCBRecord; gsamPCB GSAM_PCBRecord; // パス済み gsam2PCB GSAM_PCBRecord; end プログラム PrintCatalog タイプ basicProgram (GSAM_PCB_parm GSAM_PCBRecord, DB_PCB_parm DB_PCBRecord) { @DLI{ psb = "myPSB", callInterface = CBLTDLI, pcbParms = ["", "DB_PCB_parm", "", "GSAM_PCB_parm", ""] } } myPSB PSBRecordPart;
pcbParms および psbParm プロパティーを指定した場合、 前者の PCB 指定アドレスは、後者の同等アドレスをオーバーライドします。
pcbParms = ["", "DB_PCB_parm", "", "GSAM_PCB_parm"]
後から PCB レコードを PSB レコード・パーツに追加する場合に配列エレメントの位置決めにおけるエラーを避けるため、PSB レコード・パーツの各 PCB レコードごとに配列エレメントを (例外なく) 組み込むようにします。
PSB レコード・パーツ内の PCB レコードが、そのパーツでの別の PCB レコードの再定義である場合、 オリジナルのレコードと再定義レコードはメモリーの同じ領域を表し、 pcbParms の配列を構成するときに 1 度だけカウントされます。
Record PSBDataRecord psbName char(8); psbRef int; end
プログラム Prog1 ( psbData PSBDataRecord ) { @DLI (psbParm = "psbData" ) }
pcbParms および psbParm プロパティーを指定した場合、 前者の PCB 指定アドレスは、後者の同等アドレスをオーバーライドします。
プログラムが受け取る名前とアドレスは、システム変数 DLILib.psbData に自動的に割り当てられます。
handleHardDLIErrors を no に設定していない (よって、変数を 0 に設定しない) 場合、VisualAge® Generator から移行されたコードが、以前のように機能しないことがあります。
詳細については、『DLIVar』および『例外処理』を参照してください。
関連概念
DL/I データベース・サポート
関連項目
DLIVar
例外処理
PCB レコード・パーツのプロパティー