OSVSVSC2MF 

ENTRY(入口)文

ENTRY(入口)文は、呼ばれたCOBOLプログラムへの代替の入口点を設定する。

一般形式

形式 1

形式 2

指令

  1. 予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この項に記述した構文または意味が影響を受ける可能性がある。

    • STICKY-LINKAGE - 同じプログラム内で異なる入口点を呼び出す間に、連絡節項目の番地を指定できる状態を維持するかどうかを制御する。

    • LITLINK - .objファイルを生成するときに、入口名の有効文字数を制御する。

構文規則

すべての形式
  1. 他のプログラム内に入れ子になっているプログラム内では、ENTRY文を使用できない。

  2. 定数-1は数字であってはならず、表意定数であってもならない。環境によっては、先頭の8文字だけが有効なものがある。

形式 1
  1. 形式 1はプログラム定義中にのみ指定できる。

  2. データ名-1は連絡節、

    ファイル節、および作業場所節

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

  3. データ名-2は連絡節、ファイル節、作業場所節のいずれかに、レベルが01または77の項目として定義されていなければならない。データ名-2は字類は何であってもよいが、長さが8バイトを超えてはならない。

形式 2
  1. 形式 2 を使用できるのは、プログラム名段落にEXTERNAL句が指定されているプログラム、つまり呼び出しプロトタイプ、の中だけである。

  2. データ名-1とデータ名-2は連絡節内の01レベルのレコードとして定義されていなければならない。

  3. 型定義名-1、型定義名-2、型定義名-3は、同じソース・ファイル中にTYPEDEF句を用いて、プログラマによって用途が定義されたものとして、予め定義されていなければならない。

一般規則

すべての形式
  1. 定数-1の内容は入口名を表す。それはプログラムへの入口点を指しており、手続き部の開始時点での省略時のCOBOL入口点の代りの入口点となる。プログラム名段落中のプログラム名は省略時のCOBOL入口点を示すと考えられる。

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

    入口名は多くの場合にプログラム名に等しく、両者は名前の形成に関する共通の規則に従う。その規則は、見出し部の章のプログラム名段落節に記載されている。定数-1はプログラム名段落の一般形式の定数-1に対応する。

  2. 定数-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. データ名-1がファイル節または作業場所節の中のレベルが01または77の項目として定義されている場合、オブジェクト・プログラム動作は下記のようになる。具体的には、データ名-1と同じ内容で連絡節内にデータ項目が宣言され、呼ばれるプログラム中の最初の文を実行する前にそのデータ項目の内容がデータ名-1に転記するかのように動作する。初期プログラムでは、それらの値はそのプログラムの作業場所節のデータを初期化するさいに上書きされるので、呼ばれたプログラムからは利用できない。

  2. 稼働しているランタイム要素がCOBOLである場合、下記の規則が適用される。稼働しているランタイム要素がCOBOLでない場合、どういうときにBY REFERENCE指定またはBY VALUE指定を使用する必要があるかの詳細については、インターフェイスに関するCOBOLシステム・ドキュメンテーションを参照。

  3. USING指定はプログラムで使用される仮パラメータまたはプログラムに渡される任意の引数を指す。プログラムに渡された引数は、稼働しているソース要素によって、CALL文のUSING指定を用いて識別される。2つの名前リストの間の対応関係は、位置に基づいて確立される。

  4. 引数が内容によって渡される場合、呼ばれるプログラムの動作は下記のようになる。具体的には、呼出しを開始するプロセスの間に呼ぶランタイム要素によって連絡節内のレコードが割り当てられ、そのレコードは呼び出すランタイム要素中の引数と同じ記憶領域を占めることはないかのように動作する。この割り当てられたレコードの長さは引数とちょうど同じ文字数である。その引数がその割り当てられたレコードに何も変換せずに転記される。その後で、そのレコードは呼ばれたプログラムによって、それは引数であり参照によって渡されたかのように処理される。

  5. 引数が参照によって渡された場合、仮パラメータが引数と同じ記憶領域を占めるかのように、呼ばれるプログラムは動作する。

  6. 引数が値によって渡される場合には、呼ばれるパラメータの動作は下記のようになる。具体的には、呼出しを開始するプロセスの間に呼ぶランタイム要素によって連絡節内のレコードが割り当てられ、そのレコードは呼び出すランタイム要素中の引数と同じ記憶領域を占めることはないかのように動作する。この割り当てられたレコードの長さは引数とちょうど同じ文字数である。その引数がその割り当てられたレコードに何も変換せずに転記される。その後で、そのレコードは呼ばれたプログラムによって、それは引数であり参照によって渡されたかのように処理される。

  7. 稼働している要素においては常に、データ名-1、

    データ名-2およびデータ名-3

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

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