プロシージャー・インターフェース

プロトタイプ・プログラムまたはプロシージャーに呼び出しパラメーターまたは戻り値がある場合は、 メイン・ソース・セクション (サイクル・メイン・プロシージャーの場合) 内またはサブプロシージャー・セクション内に、 プロシージャー・インターフェース定義が定義される必要があります。プロトタイプが定義されている場合、プロシージャー・インターフェース定義は、プロシージャーの定義の中のプロトタイプ情報を繰り返します。 それ以外の場合には、コンパイラーがプロトタイプを暗黙的に定義できるようにする情報をプロシージャー・インターフェースが提供します。 プロシージャー・インターフェースは、プロシージャーへの入り口パラメーターを宣言し、プロシージャーの内部 定義を外部定義 (プロトタイプ) と確実に整合させるために使用されます。

プロシージャー・インターフェース定義に適用される規則は、次のとおりです。
  • 変更の始まりプロシージャー・インターフェースの名前は任意指定です。 指定される場合は、対応するプロトタイプ定義の名前と一致している必要があります。変更の終わり
  • 変更の始まり自由形式定義では、DCL-PI を指定することによって、プロシージャー・インターフェース定義を 開始します。固定形式定義では、「定義タイプ」記入項目 (24 から 25 桁目) に PI を 指定します。プロシージャー・インターフェース定義は、定義仕様書のどこにでも指定するこ とができます。 サイクル・メイン・プロシージャーでは、プロトタイプが 指定される場合は、プロシージャー・インターフェースの前に、それが参照するプロトタイプがなければなりません。 プロシージャー・インターフェースは、プロシージャーが値を戻す 場合、またはプロシージャーにパラメーターがある場合は必須であり、それ以外の場合は任意指定です。変更の終わり
  • その他のパラメーター定義は、このプロシージャー・インターフェースの指定の直後に続けなければなりません。
  • 変更の始まり自由形式のプロシージャー・インターフェースは END-PI で終わる必要があります。これは、DCL-PI ステートメント の末尾に指定するか、パラメーターの後にある別のステートメントとして指定します。変更の終わり
  • 変更の始まりプロシージャー・インターフェースの名前を指定する必要はありません。 自由形式定義では、名前を指定しないことを示すために *N を使用します。変更の終わり
  • 変更の始まりプロシージャー・インターフェースの名前を指定する場合は、プロシージャーの名前と同じでなければなりません。 サイクル・メイン・プロシージャーのプロシージャー・インターフェースであり、名前を 指定する場合は、前に指定されたプロトタイプの名前と同じでなければなりません。変更の終わり
  • パラメーター名を指定しなければなりませんが、それがプロトタイプに指定 された名前と一致している必要はありません。
  • データ・タイプ、長さ、および次元を含むパラメーターのすべての属性が、 対応するプロトタイプ定義の中のものと正確に一致していなければなりません。
  • パラメーターがデータ構造であることを示すには、 LIKEDS キーワードを使用して、別のデータ構造と同じサブフィールドを持つパラメーターを定義します。
  • PI 指定およびパラメーター指定に設定されたキーワードは、プロトタイプが明示的に指定されていれば、プロトタイプに指定されたものと一致していなければなりません。
  • プロトタイプが指定されない場合、EXTPGM キーワードまたは EXTPROC キーワードをプロシージャー・インターフェースに指定できます。
ヒント:

モジュールに、別のモジュールに定義されているプロトタイプ・プログラムまたはプロシージャーへの呼び出しが 含まれている場合、呼び出すプログラムおよびプロシージャーごとにプロトタイプ定義が なければなりません。必要なコーディングを最小にする 1 つの方法は、共用プロトタイプを /COPY ファ イルに保管することです。

プロトタイプ・プログラムまたはプロシージャーを他のユーザーに提供する場合 には、必ずプロトタイプも (/COPY ファイルに入れて) 提供してください。