呼び出しのプログラム名の解析

プログラム名は、CALL 命令の演算項目 2 で、あるいは、プロトタイプまたはプロシージャー・インターフェースの EXTPGM キーワードのパラメーターとして指定します。ライブラリー名を指定する場合には、直後に スラッシュを付けてプログラム名を 続けなければなりません (例えば、'LIB/PROG')。 ライブラリーを指定しない場合には、プログラムを見付けるためにライブラリ ー・リストが使用されます。*CURLIB はサポートされません。

次の規則に注意してください。
  • スラッシュを含むフィールドまたは名前のついた定数のブランク以外 のデータの合計長は 21 桁を超えることができません。
  • プログラムまたはライブラリー名が 10 桁を超えると、10 桁で切り捨てら れます。
プログラム名は、リテラル、フィールド、名前のついた定数、または配列 要素に指定されたとおりに正確に使用する、呼び出すプログラムが判別 されます。 特に、次のことに注意してください。
  • 先行または後書きのブランクは無視されます。
  • 項目の最初の文字がスラッシュの場合には、プログラムを見付けるのに、 ライブラリー・リストが使用されます。
  • 項目の最後の文字がスラッシュの場合には、コンパイル時メッセージが 出されます。
  • 小文字は大文字にシフトされません。
  • 引用符に囲まれた名前 (例えば、'“ABC”') には、常に 呼び出されるプログラムの名前の一部として引用符が含まれます。

プログラム参照は、目的プログラムへの分析解決のオーバーヘッドを避けるた めに、グループ化されます。 名前のついた定数またはリテラルを使用する特定のプログラムに対する参 照は、すべてそのプログラムが 1 回だけ分析解決されて、 そのプログラムに対する (名前のついた定数またはリテラルのみによる) 以後のすべての参照で分析解決が行われないようにグループ化されます。

プログラム参照は、 プログラムとライブラリー名の両方が同じ場合には、グループ化されます。 変数名によるプログラム参照はすべて変数名によってグループ化されます。 プログラム参照が変数で行われる場合には、その現在の値がその変数を使用 した前のプログラム参照で使用された値と比較されます。 値が変わっていない 場合には、分析解決は行われません。値が変わっている場合には、指定された新しいプログラムに対して分析解決が 行われます。 この規則が適用されるのは、変数名を使用する参照だけであることに注意して ください。 名前のついた定数またはリテラルを使用する参照は分析解決されず、変数 によるプログラム参照が再分析解決されるかどうかに影響を与えません。 図 1 に、プログラム参照のグループ化を示します。