call または transfer ステートメントにおける特殊なパラメーターの参照情報

以下のように行うことができます。

以下のセクションで詳細に説明します。

call ステートメントで渡されるテキストまたは印刷のフォームのフォーマット

call ステートメントで渡すテキストまたは印刷のフォームは、8 バイトの付属フィールドで定義されます。このフィールドに続いて、各フィールドのデータ内容領域があります。 付属フィールドの最初の 6 バイトはブランクに設定されます。 付属フィールドの最後の 2 バイトには、データの長さが含まれます。 フィールド長は、フォームで定義されたフィールドの長さに設定されます。 8 バイトの接頭部は含まれません。呼び出し先プログラムで受け取られる構造体がフォームではない場合、その構造体には、各データ項目の前に 8 バイトのスペースが必要です。 呼び出し先プログラムは、渡されるフォームの変数フィールドのデータのみを変更できます。 例えば、呼び出し先プログラムは、フォーム変数の属性は変更できません。

図 1. call ステートメントを使用して渡されるフォーム領域のフォーマット
付属フィールドには 6 バイトのブランクと、フォーム・フィールドの長さを含む 2 バイトがあります。

AIX®システムから非 AIX システム (およびその逆) にフォームをパラメーターとして渡す場合、2 バイトの 2 進数フィールドを 2 バイト境界に調整する必要があります。これは、8 バイト・フィールドの 3 番目のバイトから始まります。

dliLib.psbData 構造体のフォーマット

EGL 生成の COBOL プログラムでは、プログラム間の PSB 情報の受け渡しに dliLib.psbData 構造を使用します。 dliLib.psbData について詳しくは、オンライン・ヘルプ・システムを参照してください。 dliLib.psbData は 12 バイトの構造であり、8 バイトの PSB 名とそれに続く 4 バイトのアドレスで構成されています。

CICS® の場合、 アドレスはユーザー・インターフェース・ブロック (UIB) を指しています。 UIB の長さは 6 バイトです。 先頭の 4 バイトには、PSB の PCB アドレス・リストのアドレスが格納されます。 最後の 2 バイトには、状況情報 (例: PSB に状況情報が含まれているかどうかの標識) が格納されます。

非 CICS システムの場合、アドレスはシミュレート UIB を指しています。 シミュレート UIB の長さは 6 バイトです。 先頭の 4 バイトには、PSB の PCB アドレス・リストのアドレスが格納されます。 最後の 2 バイトには、2 進ゼロを格納する必要があります。 PCB アドレス・リストは、IMS™ または DL/I 領域コントローラーが DL/I 実行単位の最初のプログラムを呼び出した場合にレジスター 1 で指し示されるリストである必要があります。

下の図に、dliLib.psbData のフォーマットを示します。

図 2. dliLib.psbData のフォーマット
dliLib.psbData のフォーマット

PCBRecord のフォーマット

DL/I 呼び出しでは呼び出し先プログラムは実際の DL/I PCB を指す必要があるため、PCB レコード・パラメーターは常に 4 バイトのポインターを使用して渡されます。 呼び出し先プログラムでは PCB のコピーを使用できません。 COMMDATA が指定されると、この 4 バイトのポインターは COMMAREA 内の PCB レコード引数が格納される位置に移動されます。

上記の考慮事項は、AIBTDLI および CBLTDLI の両方のインターフェースに対して適用されます。 @DLI プログラム・プロパティーに対応する callInterface フィールドに AIBTDLI インターフェース (デフォルト) を指定した場合、EGL は、AIB 制御ブロックを使用して AIB PCB 名に対応する PCB アドレスを検索し、そのアドレスに対して CBLTDLI 呼び出しを発行します。


フィードバック