@dli 複合プロパティーは、値の設定ブロックによってプログラムからの DL/I 呼び出しの振る舞いを指定する場合に使用します。
このプロパティーは、DL/I データベース I/O を実行するプログラム、または IMS/VS や IMS™ BMP ターゲット・プラットフォーム用に生成を予定しているプログラムに組み込む必要があります。
EGL では、PCB レコードの PCBName プロパティーを設定することにより、名前を識別します。 このプロパティーのデフォルトは、レコードの名前です。
program Prog1 type basicProgram
{ @DLI { psb = "myPSB" }}
// PSBRecord 定義に基づいて変数を宣言
myPSB CustomerPSBRecord;
PSBRecord は、暗黙的な DL/I データベース I/O を使用する場合のデフォルト SSA の作成時に EGL が使用するデータベース階層情報を提供します。 さらに CICS® の場合、PSBRecord は最初の DL/I データベース I/O の発生時に EGL がスケジュールするデフォルト 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
program Prog2 type 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 回のみカウントされます。
EGL は、PSB 情報を dliLib.psbData システム変数に格納します。 この変数には 12 バイトの領域があり、ランタイム PSB にアクセスするための名前およびアドレスが格納されます。 EGL では、事前定義のレコード PSBDataRecord を提供し、12 バイトの領域のフィールド構造が提供されます。 callInterface プロパティーの値が CBLTDLI であり、呼び出し先プログラムのパラメーターとして PSB 全体を受け取る必要がある場合は、psbParm プロパティーを使用して PSB 情報が格納されているプログラム・パラメーターを指定します。 このパラメーターの型定義として PSBDataRecord を使用してください。
program Prog3 type basicProgram
( psbData PSBDataRecord ) // PSB を受け取るためのパラメーター
{ @DLI { psb = "myPSB", psbParm = "psbData",
callInterface = CBLTDLI
}
}
// PSBRecord 定義に基づいて変数を宣言
myPSB CustomerPSBRecord;
EGL プログラムが呼び出されると、EGL では自動的に psbParm プロパティーで特定されるパラメーターからの情報を dliLib.psbData システム変数に割り当てます。
pcbParms プロパティーおよび psbParm プロパティーを指定する場合は、前者の PCB 固有のアドレスによって後者の相当するアドレスがオーバーライドされます。
VisualAge® Generator からマイグレーションされたコードでは、handleHardDLIErrors を NO に設定 (値を 0 に設定する) する場合を除き、以前と同様には動作しないことがあります。
詳しくは、『例外の処理』を参照してください。