OSVSVSC2MF 

ENTRY 文

ENTRY 文は、呼び出される側の COBOL プログラムへの代替のエントリ ポイントを設定する。

書き方 1 の一般形式


ENTRY Statement
MF 

書き方 2 の一般形式



指令

  1. 予約語リストのフラグ設定および修正を行うコンパイラ指令に加えて、STICKY-LINKAGE 指令は、同じプログラム内で異なるエントリ ポイントを呼び出す間に、連絡節項目のアドレスを指定できる状態を維持するかどうかを制御する。

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

  1. 他のプログラム内に入れ子になっているプログラム内では、ENTRY 文を使用できない。
  2. literal-1 は数値であってはならず、表意定数であってもならない。環境によっては、先頭の 8 文字だけが有効なものがある。
  3. 呼び名 (mnemonic-name) が必要なのは、呼び出す対象のオブジェクト プログラムで用いられている呼び出し規則と、COBOL システムのデフォルトの呼び出し規則とが異なる場合だけである。通常は、COBOL のデフォルトの呼び出し規則は、COBOL 以外の言語の主要な処理系の実行時環境で使用されている規則と整合性がある。

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

書き方 1 の構文規則

  1. 書き方 1 はプログラム定義中にのみ指定できる。
  2. data-name-1 は、連絡節

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

    に、レベルが 01 または 77 の項目として定義されていなければならない。

    MF 

  3. MF data-name-2 は、連絡節、ファイル節、作業場所節のいずれかに、レベルが 01 または 77 の項目として定義されていなければならない。data-name-2 は字類は何であってもよいが、長さが 8 バイトを超えてはならない。
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 句を用いて、プログラマーによって用途が定義されたものとして、あらかじめ定義されていなければならない。

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

  1. literal-1 の内容は入口名を表す。それはプログラムへのエントリ ポイントを指しており、手続き部の開始時点でのデフォルトの COBOL エントリ ポイントの代わりのエントリ ポイントとなる。プログラム名段落中のプログラム名はデフォルトの COBOL エントリ ポイントを示すと考えられる。

    実行用の COBOL のコードが収められているプログラム ファイルの名前は通常、基本的にプログラム名と同じであることに注意すること。呼び出しが行われたときにプログラム名または入口名がまだメモリにロードされていないと、ファイル名に基づいてプログラム ファイルが探されるが、プログラム名に基づいて探されているように見える。そのような状況において、プログラム名を参照する呼び出しは正常に行われるが、入口名を参照する呼び出しはエラーとなる可能性がある。

    入口名は多くの場合にプログラム名に等しく、両者は名前の形成に関する共通の規則に従う。その規則は「プログラム名段落」のトピックに記載されている。literal-1 はプログラム名段落の一般形式の literal-1 に対応する。

  2. literal-1 に入口名を指定した CALL 文を使用して呼び出す側のプログラムから呼び出される側のプログラムを呼び出すと、ENTRY 文の後ろの次の実行可能な文に制御が移される。
  3. 連絡節に宣言されているが ENTRY 文の USING 指定に宣言されていないデータ項目を参照できるのは、SET 文を実行してそれらのデータ項目をあるデータ項目にリンクしてある場合、またはコンパイラ指令の STICKY-LINKAGE が指定されている場合だけである。
  4. USING 指定には最大で 62 個のデータ名を指定できる。
  5. BY REFERENCE 指定と BY VALUE 指定はともに、別の BY REFERENCE 指定または BY VALUE 指定が出てくるまで、後続のパラメーターに効力を及ぼす。最初のパラメーターの前に BY REFERENCE 指定も BY VALUE 指定もない場合には、BY REFERENCE 指定があるものと見なされる。

書き方 1 の一般規則

  1. MF data-name-1 がファイル節または作業場所節の中のレベルが 01 または 77 の項目として定義されている場合、オブジェクト プログラム動作は下記のようになる。具体的には、data-name-1 と同じ内容で連絡節内にデータ項目が宣言され、呼び出される側のプログラム中の最初の文を実行する前にそのデータ項目の内容が data-name-1 に転記するかのように動作する。初期プログラムでは、それらの値はそのプログラムの作業場所節のデータを初期化する際に上書きされるので、呼び出される側のプログラムからは利用できない。
  2. 活性化する側の実行時要素が COBOL である場合、下記の規則が適用される。活性化する側の実行時要素が COBOL でない場合、どういう状況で BY REFERENCE 指定または BY VALUE 指定を使用する必要があるかの詳細については、インターフェイスに関する COBOL システムのドキュメントを参照。
  3. USING 指定はプログラムで使用される仮パラメーターまたはプログラムに渡される任意の引数を指す。プログラムに渡された引数は、活性化する側のソース要素によって、CALL 文の USING 指定を用いて識別される。2 つの名前リストの間の対応関係は、位置に基づいて確立される。
  4. 引数が内容によって渡される場合、呼び出される側のプログラムの動作は下記のようになる。具体的には、呼び出しを開始するプロセスの間に呼び出す側の実行時要素によって連絡節内のレコードが割り当てられ、そのレコードは呼び出す側の実行時要素中の引数と同じ記憶領域を占めることはないかのように動作する。この割り当てられたレコードの長さは引数とまったく同じ文字数である。その引数がその割り当てられたレコードに何も変換せずに転記される。その後で、そのレコードは呼び出される側のプログラムによって、それは引数であり参照によって渡されたかのように処理される。
  5. 引数が参照によって渡された場合、仮パラメーターが引数と同じ記憶領域を占めるかのように、呼び出される側のプログラムは動作する。
  6. MF 引数が値によって渡される場合には、呼び出される側のプログラムの動作は次のようになる。具体的には、呼び出しを開始するプロセスの間に呼び出す側の実行時要素によって連絡節内のレコードが割り当てられ、そのレコードは呼び出す側の実行時要素中の引数と同じ記憶領域を占めることはないかのように動作する。この割り当てられたレコードの長さは引数とまったく同じ文字数である。その引数がその割り当てられたレコードに何も変換せずに転記される。その後で、そのレコードは呼び出される側のプログラムによって、それは引数であり参照によって渡されたかのように処理される。
  7. 活性化される側の要素においては常に、data-name-1

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

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

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

書き方 2 の一般規則

  1. BY REFERENCE 指定で DELIMITED キーワードを使用して data-name-1 を渡す場合は、渡される元のパラメーターのコピーになるが、後続空白文字は null ターミネータに置き換えられる。このパラメーターへの変更は呼び出す側のプログラムに返されない。