手続き部の見出し

手続き部は、次のいずれかの形式の見出しで識別され、その見出しで開始する必要がある。

書き方 1 の一般形式

MF 

書き方 2 の一般形式


*
NETJVM 

書き方 3 の一般形式

指令

  1. 予約語リストのフラグ設定および修正を行うコンパイラ指令に加えて、以下の指令が、本セクションに記載の構文または意味内容に影響を与える可能性がある。
    • DEFAULTCALLS - 手続き部の見出しに明示的に指定されていない場合に、デフォルトの呼び出し規則を設定する。
    • STICKY-LINKAGE - 同じプログラム内で異なるエントリ ポイントを呼び出す間に、連絡節項目のアドレスを指定できる状態を維持するかどうかを制御する。

すべての書き方に関する構文規則

  1. MF 呼び名 (mnemonic-name) は、実行時要素が他の実行時要素により呼び出され、その実行時要素が COBOL システムのデフォルト設定として使用される以外の呼び出し規則を使用している場合にだけ必要である。通常は、COBOL のデフォルトの呼び出し規則は、COBOL 以外の言語の主要な処理系の実行時環境で使用されている規則と整合性がある。

    呼び名は特殊名段落中に定義しなければならない。その方法の詳細については、「環境部」の章の「特殊名段落」を参照。また、実行時環境においてサポートされている呼び出し規則の詳細については、インターフェイスに関する COBOL システムのドキュメントを参照。

  2. MF CHAINING および USING は同等である。
  3. ISO2002MF data-name-1 または data-name-2 を USAGE OBJECT REFERENCE 句で定義した場合、ACTIVE-CLASS 指定は使用できない。
  4. ISO2002MF data-name-3 は、連絡節でレベル 01 またはレベル 77 項目として定義されなければならない。data-name-3 のデータ記述項は、REDEFINES 句を含んではならない。連絡節中の別の場所にあるデータ項目では、REDEFINES 句で data-name-3 を指定してもよい。
  5. ISO2002MF data-name-3 は、data-name-1 および data-name-2 のいずれとも同じであってはならない。

書き方 1 の構文規則

  1. data-name-1 は、連絡節

    MF 、ファイル節、または作業場所節

    で、レベル 01 またはレベル 77 項目として定義されなければならない。特定の利用者定義語は、data-name-1 として 2 回以上現れてはならない。

    OSVSVSC2MF 2 回以上現れてもよい。

    data-name-1 のデータ記述項は、REDEFINES 句を含んではならない。

    OSVSVSC2MF REDEFINES 句を含んでもよい。

    しかし、data-name-1 は連絡節のどこにおいても REDEFINES 句の対象にできる。

  2. ISO2002MF data-name-2 は、連絡節

    MF 、ファイル節、または作業場所節 (ソース単位がメソッド定義またはメソッド プロトタイプ定義の場合は除く)

    で、レベル 01 またはレベル 77 項目として定義されなければならない。 data-name-2 は、字類が数字、オブジェクト、またはポインターのデータ項目として定義しなければならない。

    MF data-name-2 は字類は何であってもよいが、長さが 8 バイトを超えてはならない。

ISO2002MFNETJVM 

書き方 1 および 3 の構文規則

  1. ISO2002MFNETJVM RETURNING 指定は、関数定義および関数プロトタイプ定義の中で指定しなければならない。
  2. ISO2002MFNETJVM RETURNING 指定は、メソッド定義、プログラム定義、またはプログラム プロトタイプの中で指定できる。
MF 

書き方 2 の構文規則

  1. MF 書き方 2 を使用できるのは、プログラム名段落に EXTERNAL 句が指定されているプログラム、つまり呼び出しプロトタイプの中だけである。
  2. MF data-name-1 および data-name-2 は連絡節内の 01 レベルのレコードとして定義されていなければならない。
  3. MF typedef-name-1、typedef-name-2、typedef-name-3 は、同じソース ファイル中に TYPEDEF 句を用いて、プログラマーによって用途が定義されたものとして、あらかじめ定義されていなければならない。
NETJVM 

書き方 3 の構文規則

  1. data-name-1、data-name-2、data-name-4、および data-name-5 は、連絡節内の 01 レベルのレコードとして定義されているか、その後に AS 指定がなければならない。
  2. type-name-1 は .NET ネイティブ型でなければならない。
  3. カスタム属性句 (custom-attribute-clause) については、「データ部」の章の「CUSTOM-ATTRIBUTE 句」のセクションを参照。
  4. YIELDING は反復子の文でのみ指定できる。「反復子名」を参照。
  5. YIELDING で指定する項目の型で、反復子の型が決まる。
  6. 構文「= default-expression」を含むパラメーターはオプション パラメーターであり、default-expression はパラメーターの型と互換性のある型を持つ定数に評価されなければならない。このようなオプション パラメーターはすべて、オプションではないパラメーターの後に指定する必要がある。

すべての書き方に関する一般規則

  1. USING 指定には最大で 5 個のデータ名を指定できる。

    ISO2002MFXOPEN USING 指定には最大で 62 個のデータ名を指定できる。

  2. BY REFERENCE、BY VALUE、BY OUTPUT の各指定はその後ろに続くパラメーターに効力を及ぼすが、別の BY REFERENCE、BY VALUE、または BY OUTPUT の指定が出てきたところでその効力は停止する。最初のパラメーターの前に BY REFERENCE、BY VALUE、BY OUTPUT のどの指定もないと、BY REFERENCE 指定があるものと見なされる。

書き方 1 の一般規則

ENTOSVSOS390 
  1. MF 呼び名は、このプログラムの呼び出し元のプログラムで採用されていると想定される呼び出し規則を識別する。この呼び出し規則は、呼び出し規則が明示的に指定されていない後続のエントリ ポイントにも使用される。実際に使用された呼び出し規則が呼び名によって示されたものと異なる場合、COBOL システムは混乱する。
  2. MF data-name-1 がレベル 01 またはレベル 77 項目としてファイル節または作業場所節に定義されている場合、活性化される側の実行時要素は、データ項目が data-name-1 と同じデータ宣言で連絡節に定義されたかのように動作し、活性化される側の実行時要素の最初の文の実行に先立って、このデータ項目の内容が data-name-1 に移動されたかのように動作する。最初のプログラムでは、これらの値はプログラムの作業記憶域のデータの初期化によって上書きされる。このため、呼び出し先のプログラムには使用できない。
  3. ENTOSVSOS390 活性化する側の実行時要素が COBOL である場合、下記の規則が適用される。活性化する側の実行時要素が COBOL でない場合、どういう状況で BY REFERENCE 指定または BY VALUE 指定を使用する必要があるかの詳細については、インターフェイスに関する COBOL システムのドキュメントを参照。
  4. ENTOSVSOS390 活性化される側の要素においては常に、data-name-1

    ISO2002MF 、data-name-2、および data-name-3

    への参照は連絡節中の記述に基づいて解明される。その記述で定義されている文字数が、活性化する側の要素中の対応するデータ項目よりも多いと、結果はどのようになるかわからない。この規則に外れるか、特定の実行時環境におけるシステム領域の最大許容サイズを超えると、システムは壊滅的な障害を起こす可能性がある。

  5. MF プログラムが呼び出され、USING 指定中の BY REFERENCE の作用対象が呼び出し元のプログラム中のパラメーターに対応する場合、参照のリンクが確立される。そのリンクは制御が呼び出し元のプログラムに戻されるまで持続する。その後、そのプログラムを取り消すことなく、再びそのプログラムを呼び出した場合、同じ BY REFERENCE の作用対象が呼び出し元のプログラムのパラメーターに対応しなければ、その作用対象を参照してはならない。ただし、コンパイラ指令の STICKY-LINKAGE を指定した場合は別である。
  6. ENTOSVSOS390 data-name 4 は、連絡節で定義されていなければならない。

書き方 1 および 3 の一般規則

  1. USING 指定は、引数が渡されるプログラム、

    ISO2002 関数、

    ISO2002MF またはメソッド

    で使用される仮パラメーターの名前を指す。渡された引数は、活性化する側のソース要素において次のいずれかによって識別される。

    • CALL 文の USING 指定
    • ISO2002 関数一意名中の引数
    • ISO2002MF INVOKE 文の USING 指定
    • ISO2002MF メソッドの文中呼び出しで指定された引数
    • ISO2002MF 暗黙的 SET プロパティ メソッドの呼び出しに関するオブジェクト プロパティの規則で定義された引数

    2 つの名前リストの間の対応関係は、位置に基づいて確立される。

  2. 引数が内容によって渡される場合、活性化される側の実行時要素の動作は下記のようになる。具体的には、活性化を開始するプロセスの間に活性化する側の実行時要素によって連絡節内のレコードが割り当てられ、そのレコードは活性化する側の実行時要素中の引数と同じ記憶領域を占めることはないかのように動作する。

    ISO2002MF 活性化する側の実行時要素のリポジトリ段落に活性化される側の実行時要素のプログラム指定子が含まれていない場合、割り当てられたレコードは次のように扱われる。

    割り当てられたレコードは引数と同じ長さと見なされ、引数が可変反復データ項目として記述されている場合は最大長が使用される。その引数がその割り当てられたレコードに何も変換せずに転記される。このレコードは、その後、活性化される側の実行時要素において、引数として参照によって渡されるものとして扱われる。

    ISO2002MF 活性化される側の実行時要素が次のいずれかである場合は動作が異なる。

    ISO2002MF 
    • ISO2002MF 活性化する側の実行時要素のリポジトリ段落にプログラム指定子が含まれているプログラム
    • ISO2002MF メソッド
    • ISO2002MF 関数

    ISO2002MF この場合、割り当てられたレコードは次のいずれかとなる。

    ISO2002MF 
    • ISO2002MF 仮パラメーターが ANY LENGTH 句で記述されている場合は、引数と同じ項類、用途、および長さのデータ項目
    • ISO2002MF 仮パラメーターが可変反復データ項目として記述されている場合は、仮パラメーターと同じ記述およびバイト数 (最大長が使用される) のデータ項目

    ISO2002MF 次のいずれかにおいて、引数が送り出し側作用対象として使用され、割り当てられたレコードが受け取り側作用対象として使用される。

    ISO2002MF 
    • ISO2002MF 仮パラメーターが数値の場合、ROUNDED 指定を伴わない COMPUTE 文
    • ISO2002MF 仮パラメーターの字類が指標、オブジェクト、またはポインターの場合、SET 文
    • ISO2002MF MOVE 文

    ISO2002MF 割り当てられたレコードは、その後、引数として参照によって渡されるものとして扱われる。

  3. 引数が参照によって渡された場合、仮パラメーターが引数と同じ記憶領域を占めるかのように、活性化される側の実行時要素は動作する。
  4. ISO2002MF 引数が値によって渡される場合、活性化される側の実行時要素の動作は下記のようになる。具体的には、活性化を開始するプロセスの間に活性化する側の実行時要素によって連絡節内のレコードが割り当てられ、そのレコードは活性化する側の実行時要素中の引数と同じ記憶領域を占めることはないかのように動作する。この割り当てられたレコードの長さは引数とまったく同じ文字数である。その引数がその割り当てられたレコードに何も変換せずに転記される。このレコードは、その後、活性化される側の実行時要素において、引数として参照によって渡されるものとして扱われる。
  5. data-name-1 に OPTIONAL 指定が使用されている場合は、対応する有効な引数を指定するか、対応する引数を OMITTED に置き換えることができる。data-name-1 に OPTIONAL 指定が使用されていない場合は、OMITTED 指定を対応する引数として使用することはできない。

    COBOL では、戻り項目の領域が活性化する側のソース単位で割り当てられる。活性化される側の要素に含まれるのは連絡節の正式な記述のみとなる。

    この形式のオプション パラメーターは、マネージ COBOL で使用できるオプション パラメーターとは異なり、VALUE パラメーターに適用される。このようなパラメーターは、「= default-expression」構文を使用して指定する。一般規則 18 を参照。

MF 

書き方 2 の一般規則

  1. MF 呼び出しプロトタイプ (プログラム名段落中の EXTERNAL 句付きのプログラム) が書き方 2 の手続き部の見出しを持ち、同じソース ファイル中の他のプログラムがこの呼び出しプロトタイプのプログラム名を参照する CALL 定数文を持っている場合、以下の規則が適用される。
    1. 呼び出し規則が CALL 文中に記述されている場合、これはプロトタイプに (明示的または暗黙的に) 記述されたものと一致しなければならない。CALL 文に呼び出し規則が記述されていない場合、プロトタイプに (明示的または暗黙的に) 記述された呼び出し規則が使用される。
    2. CALL 文に記述されたパラメーターの数は、プロトタイプに記述されたパラメーターの数と同じでなければならない (REPEATED 指定により許されたものを除く)。
    3. CALL 文に記述された各パラメーターには、以下の規則が適用される。
      1. BY REFERENCE 指定または BY CONTENT 指定がパラメーターと関連している場合、プロトタイプ中の相応するパラメーターは、BY REFERENCE で指定されなければならない。
      2. BY VALUE 指定がパラメーターと関連している場合、プロトタイプ中の相応するパラメーターは、BY VALUE で指定されなければならない。
      3. CALL 文中のパラメーターが BY REFERENCE 指定、BY CONTENT 指定、BY VALUE 指定を持たない場合、プロトタイプに (明示的または暗黙的に) 記述された指定が使用される。
      4. この規則は、相応する呼び出しプロトタイプが見つからない場合に適用される規則をオーバーライドする。つまり、呼び出しプロトタイプが使用されない場合、最初の BY 指定までのすべてのパラメーターは、BY REFERENCE が指定され、BY 指定の後のすべてのパラメーター (これ自体は明示的な BY 指定を持たない) が最後の 1 つを使用するかのように扱われる。しかし、相応する呼び出しプロトタイプが見つかる場合は、BY 指定用の定義が優先する。
      5. プロトタイプ中のパラメーターの字類が数字である場合、またはそのパラメーターがポインターか指標データ項目の場合、CALL 文中のパラメーターは同じデータ定義を持たなければならない。
      6. プロトタイプ中のパラメーターの字類が英数字である場合、CALL 文中のパラメーターの字類も英数字で、プロトタイプ中のパラメーターと少なくとも同じ長さでなければならない。
      7. ANY がプロトタイプに記述されている場合、CALL 文中のパラメーターはどの字類でもよい。
    4. CALL 文が GIVING 句または RETURNING 句を含んでいる場合、プロトタイプも句を含んでいなければならない (逆も同様)。CALL に記述されたデータ項目のデータ定義は、プロトタイプに記述されたデータ項目のものと同じでなければならない。
    5. プロトタイプ中の DELIMITED BY SIZE 指定は、英数字パラメーター用にだけ使用される。この場合、CALL 文中の対応するパラメーターは暗黙に割り当てられたデータ領域に移動され、バイナリ 0 (x"00") 文字がこのデータのコピーの直後に置かれる。BY SIZE 指定が省略されると、CALL 文中の対応するパラメーターが暗黙に割り当てられたデータ領域に移動され、バイナリ 0 (x"00") 文字がコピー データの最後のスペース以外の文字の直後に置かれる。これは、null で終わるテキスト文字列を使用する C 言語のような言語とのインターフェイスを取ることを目的としている。
    6. REPEATED 指定は、最終パラメーターの integer-1 以上 integer-2 以下の繰り返しがあることを示す。integer-1 TO integer-2 が記述されないと、integer-1 は 0 となり、integer-2 は無限となる。
NETJVM 

書き方 3 の一般規則

  1. data-name-5 が参照するデータ項目には、実行時要素が活性化された時点では値が格納されていない。data-name-5 が参照するデータ項目が受け取り項目になる前にその値にアクセスしようとすると実行時例外が発生する。
  2. 活性化される側の要素においては常に、data-name-1、data-name-2、data-name-4、および data-name-5 への参照は連絡節または AS 指定の記述に基づいて解明される。その記述で定義されている文字数が、活性化する側の要素中の対応するデータ項目よりも多いと、結果はどのようになるかわからない。この規則に外れるか、特定の実行時環境におけるシステム領域の最大許容サイズを超えると、システムは壊滅的な障害を起こす可能性がある。
  3. CUSTOM-ATTRIBUTE 句が指定されている場合、カスタム属性情報は生成されたコードに含まれる。
  4. メソッドを呼び出す際、呼び出し元のコードでオプション パラメーターを省略することもできる。この場合、default-expression で指定されたデフォルト値が渡される。オプション パラメーターを省略する場合は、その後に続くパラメーターもすべて省略する必要がある。