vgLib.VGTDLI() システム関数は、CBLTDLI インターフェースを使用して DL/I 関数を直接呼び出します。
この関数と EGLTDLI() dliLib 関数の違いは、 この関数がインデックス変数を使用して呼び出しのための PCB を参照するのに対し、EGLTDLI() では PCB レコードの名前が使用される点のみです。 EGL では、VisualAge® Generator での CSPTDLI() 関数の互換性を確保するためにこの関数が含まれています。
vgLib.VGTDLI()(
func CHAR(4) in,
pcbindex SMALLINT in
parms... ANY)
AIBTDLI インターフェースを使用して DL/I 関数を呼び出すには、dliLib.AIBTDLI() を使用します。
Record CustomerPSBRecord type PSBRecord { defaultPSBName="STBICLG" }
// 3 other PCBs
...
// database PCB
customerPCB DB_PCBRecord { @PCB { pcbType = DB,
hierarchy = [ @relationship { segmentRecord = "CustomerRecord" },
...]}};
end
mypsb CustomerPSBRecord;
vgLib.VGTDLI() ではランタイム PCB 名は使用されないため、customerPCB レコードの pcbName プロパティーを指定する必要はありません。この例では、CustomerPSBRecord の customerPCB の前に PCB が 3 つあると想定しています。 vgLib.VGTDLI("FLD", 4, myIOArea, mySSA1, ... mySSAn);
if (mypsb.customerPCB.statusCode != " ")
// エラー処理
end
PCB の索引 (4) を、呼び出しの 2 番目の引数として指定しています。EGL は、vgLib.VGTDLI() を、DL/I CBLTDLI インターフェースを使用する DL/I 呼び出しに変換する。
呼び出し後、EGL 事前定義レコード DB_PCBRecord 内のフィールドを使用して、呼び出しの結果を判別することができます。