EGLTDLI()

dliLib.EGLTDLI() システム関数は、CBLTDLI インターフェースを使用して DL/I 関数を直接呼び出します。

AIBTDLI インターフェースを使用して DL/I 関数を呼び出すには、dliLib.AIBTDLI() を使用します。

構文

  dliLib.EGLTDLI()(
    func CHAR(4) in,
    pcbrecord PCBRecord in
    parms... ANY)
func
ISRT や GHNP などの、4 文字の DL/I 関数名。
pcbrecord
プログラムの PSB レコード内の PCB レコードに割り当てた名前。
parms...
特定の DL/I 関数で必要なパラメーターと数および型が一致するパラメーターの完全なリスト。

発行する DL/I 呼び出しに対応する EGL I/O ステートメントがない場合は、dliLib.EGLTDLI() を使用できます。 例えば、主記憶データベース (MSDB) およびデータ入力データベース (DEDB) に対する DL/I FLD 呼び出しに対応する I/O ステートメントは EGL に用意されていません。この場合は、dliLib.EGLTDLI() を使用して、FLD 呼び出しを発行することができます。

まず最初に PSBRecord パーツを定義し、プログラム変数をその PSBRecord に基づくものにします。
Record CustomerPSBRecordPart type PSBRecord { defaultPSBName="STBICLG" } 
  // database PCB 
  customerPCB DB_PCBRecord { @PCB { pcbType = DB, 
  hierarchy = [ @relationship { segmentRecord = "CustomerRecordPart" },
  ...]}}; 
end

  mypsb CustomerPSBRecordPart;

dliLib.EGLTDLI() ではランタイム PCB 名は使用されないため、customerPCB レコードの pcbName プロパティーを指定する必要はありません。

次に、入出力域を定義し、SSA を定義してフォーマットします。dliLib.EGLTDLI() を使用する場合は、DL/I 規則に従って SSA を正しくフォーマットする必要があります。その後で、DL/I FLD 呼び出しを発行できます。
dliLib.EGLTDLI("FLD", customerPCB, myIOArea, mySSA1, ... mySSAn);
if (mypsb.customerPCB.statusCode != "  ")
   // エラー処理
end

PCB レコード (customerPCB) の名前を、その呼び出しの 2 番目の引数として指定します。EGL は、dliLib.EGLTDLI() を、DL/I CBLTDLI インターフェースを使用する DL/I 呼び出しに変換する。呼び出し後、EGL 事前定義レコード DB_PCBRecord 内のフィールドを使用して、結果を判別することができます。


フィードバック