OSVSVSC2MF 

ENTRY 文

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

書き方 1 の一般形式


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

書き方 2 の構文規則

  1. MF 書き方 2 を使用できるのは、プログラム ID 段落に 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 エントリ ポイントの代りのエントリ ポイントとなる。プログラム ID 段落中のプログラム名は省略時の COBOL エントリ ポイントを示すと考えられる。

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

    入口名は多くの場合にプログラム名に等しく、両者は名前の形成に関する共通の規則に従う。その規則は「プログラム ID 段落」の項に記載されている。literal-1 はプログラム ID 段落の一般形式の 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 ターミネータに置き換えられる。このパラメーターへの変更は呼び出し元プログラムに返されない。