Previous 翻訳集団の定義の概要 環境部 Next

第 5 章 : 見出し部

5.1 見出し部

見出し部では、プログラム、

クラス、ファクトリオブジェクト、オブジェクト、メソッド、

関数、またはインターフェイス

を識別する。

この部全体を(見出しも含めて)プログラム定義中に指定しても指定しなくてもよい。

ソース要素を含むファイルのファイル名から得られる基本名からも、そのファイル中に定義されている最初のソース要素が識別される。

見出し部は、多くの段落から構成される。段落の見出しはその段落に含まれる情報の種類を示す。

AUTHOR、INSTALLATION、DATE-WRITTEN、DATE-COMPILED、およびSECURITYの各段落は、ANSI'85標準では廃要素に分類されている。ANSI'85標準の次の全面改訂の際に削除される予定である。

この構文は、ISO2002を除くMicro Focus COBOLに組み込まれているすべての方言で使用できる。FLAGSTDコンパイラ指令を使用すると、この構文が用いられているすべての箇所を見つけ出すことができる。

標準COBOL定義の一部を構成するにもかかわらず、X/Open COBOL言語定義では、廃要素が明示的に除外されている。したがって、X/Openに準拠する原始プログラムでは、それらを使用するべきではない。

一般形式

構文規則

  1. 段落はどのような順番で書いてもよい。

  2. 見出し部内の段落名の後ろの終止符は、書いても書かなくてもよい。同様に、プログラム名の後ろの終止符も、書いても書かなくてもよい。

  3. 注記項には、計算機の文字集合に属する任意の文字を、組み合わせて書ける。標識領域にハイフンを指定して、注記項を次の行に続けることはできない。しかし、コンパイラ指令のSOURCEFORMATにFIXEDを指定するか省略時の解釈としておくと、注記項を複数行にわたって書くことはできる。この場合、注記項を書ける範囲はB領域に限定される。次の行をA領域から書き始めると、注記項ではないものを書き始めたことになる。

    コンパイラ指令のSOURCEFORMATにFREEと指定すると、注記項を継続することはできない。次の行には注記項以外を記述しなければならない。

    注記項の中の任意の位置に、SKIP1, SKIP2, SKIP3, EJECT, TITLEの各文を含めることができる。これらの文は、1行に単独で書いた場合にその機能を発揮する。この場合は、これらの文は、注意項を終わらせることはない。

    注記項の中のB領域の任意の位置に、SKIP1, SKIP2, SKIP3, EJECTの各文を含めることができる。これらの文は、1行に単独で書いた場合にその機能を発揮する。この場合は、これらの文は注記項を終わらせることはない。

    注記項は、注記行のA領域またはB領域の任意の位置に書ける。ただし、次の行のA領域に下記のCOBOLの語のどれかを書くと、注記項は終わりとされ、次の段落または部が始まるものとみなされる。

    PROGRAM-ID
    AUTHOR
    INSTALLATION
    DATE-WRITTEN
    DATE-COMPILED
    SECURITY
    ENVIRONMENT
    DATA
    PROCEDURE

5.2 プログラム名段落

プログラム名(PROGRAM-ID)段落は、プログラムを識別する名前を付けるとともに、指定されたプログラム属性をプログラムに割り当てる。

プログラム名段落は、プログラムプロトタイプを識別する名前を指定する。

プログラム名段落は、呼出しプロトタイプを識別する名前を指定する。

一般形式

形式 1

形式 2

形式 3

形式 4

指令

  1. 予約語リストにフラグを付けたり、その内容を修正する機能を提供するコンパイラ指令に加えて、下記の指令がこの節に記述されている構文または意味内容に影響を与える可能性がある。

構文規則

すべての形式
  1. プログラム名-1は文字定数であってもよい。それを引用符で囲んでも囲まなくてもよい。定数の内容はプログラム名の構成規則に従っていなければならない。ただし、文字@,#, $を含んでいてもよい。

  2. プログラム名-1は他の利用者語と同じであってはならない。

    プログラム名-1はユーザーが定義した他の語と同じであってもよい。

形式 1および 2
  1. 他のプログラムに含まれないプログラムのプログラム名-1の最初の8文字はシステム内で一意でなければならない。先頭の文字はアルファベットでなければならない。そうでない場合は、下記の規則に従って変換される。:

    他のプログラムに含まれないプログラムのプログラム名-1の2文字目から8文字目までの間にハイフンがあると、それはゼロに変えられる。

    この動作はMAPNAMEコンパイラ指令を用いて制御する。

    他のプログラムに含まれるプログラムに関しては、プログラム名-1は長さが30文字まで任意のユーザー定義のCOBOLの語とすることができる。最初の8文字が一意である必要はない。上記のプログラム名の変換は行われない。小文字を使用してもかまわない。ただし、小文字を使用した場合、大文字と小文字は区別される。

  2. 他のプログラムに含まれるプログラムに、その親の翻訳単位内に含まれている他のプログラムと同じ名前を付けてはならない。

形式 2
  1. 任意指定のCOMMON句は、プログラムが他のプログラムに含まれる場合だけ指定できる。

  2. IS PROGRAM指定を書く場合は、COMMON句とINITIAL句のどちらか一方、または両方、

    またはRECURSIVE句

    を指定する。

  3. 定数-1は英数字の定数でなければならず、表意定数であってはならない。

  4. 他のプログラム内に含まれるプログラムの中に定数-1を指定してはならない。

  5. このプログラムを直接または間接に含むプログラムが初期プログラムである場合は、RECURSIVE句を指定してはならない。

  6. 他のプログラムに含まれるプログラムの中で、RECURSIVE句を 指定してはならない。

  7. 他のプログラムを含むプログラムの中で、RECURSIVE句を 指定してはならない。

形式 4
  1. Program-prototype-name-1は、プログラムプロトタイプを識別する。ただし、定数-1(指定されている場合)は、運用環境の外部のプログラムプロトタイプである。

一般規則

形式 1および2
  1. プログラム名-1はこのプログラム定義によって宣言されるプログラムに名前を付けるものであり、このプログラムに関する実行用プログラム・コード・ファイルと関連する。定数-1を指定した場合、それは運用環境の外部のプログラム名となる。

形式 2
  1. COMMON指定は、プログラムが共通のものであることを指定する。共通のプログラムは他のプログラムの中に含まれるが、親のプログラム以外のプログラムからも呼び出せる。

  2. INITIAL指定は、プログラムが初期処理用のものであることを指定する。初期プログラムが呼ばれると、そのプログラムおよびその中に含まれるすべてのプログラムが初期化される(翻訳集団の概念の章で前述した初期状態節を参照)。

  3. RECURSIVE句は、プログラムが再帰的であることを指定する。

    再帰プログラムに含まれるプログラムはいずれも再帰的である。

    局所記憶節の指定を含むプログラムは再帰的である。

    再帰的プログラムは、実行中に呼び出すことができる。また、自身を呼び出すこともできる。

  4. プログラム中でRECURSIVE句が指定されておらず、プログラムに対して暗黙的に指定されてもない場合は、そのプログラムを実行中に呼び出すことはできない。

  5. 共通、初期、および再帰プログラムに関する詳しい規則は、翻訳集団の概念の章の共通プログラム、初期プログラム、および再帰プログラム節で解説する。
形式 3
  1. Program-name-1は、呼出しプロトタイプの名を示す。このプロトタイプを使用して、構文のチェックが行われ、CALL定数文の有効性と性質が決定される。

5.3 クラス名段落

クラス名段落は、該当の見出し部でクラス定義を行おうとしていることを示し、クラスを識別する名前を指定するとともに、クラスにクラス属性を割り当てる。

一般形式

CLASS-ID. クラス名-1 [ AS 定数-1 ] [ IS FINAL ]
	[ INHERITS FROM  { クラス名-2 } ... ]
	[ USING { パラメータ名-1 } ... ] .

指令

  1. 予約語リストにフラグを付けたり、その内容を修正する機能を提供するコンパイラ指令に加えて、下記の指令がこの節に記述されている構文または意味内容に影響を与える可能性がある

    • ACTUAL-PARAMS - パラメータ化されたクラスやインタフェイスからのクラスの作成に使用されるパラメータを指定する。

構文規則

  1. 定数-1は英数字の定数であり、表意定数であってはならない。

  2. クラス名-2は、リポジトリ段落

    またはこのソース要素のクラス管理段落

    の中で指定されたクラスの名前とする。.

  3. クラス名-2は、クラス定義によって定義されたクラスの名前であってはならしない。

  4. クラス名-2は、クラス名-1を直接的にも間接的にも継承しない。

  5. クラス名-2は、FINAL句で定義されたクラスの名前であってはならない。

  6. パラメータ名-1は、このクラス定義のリポジトリ段落中のクラス指定子またはインターフェイス指定子に指定された名前とする。

  7. クラス名は、INHERITS 句内に2度以上存在してはならない。

  8. 同じ名の別のメソッドが2個以上継承されている場合は、そのどちらもFINAL句で指定してはならない。同じメソッドが、2個以上の中間の上位クラスを介して、その上位クラスから継承される場合は、FINAL句で指定することができる。

  9. メソッド名が2個以上の継承されたクラスから継承される場合で、これらのメソッド用のプロトタイプが、同じインターフェイスでメソッドを定義しており、このクラス内のプロトタイプのどれかのために、このクラスが、継承された全クラスと適合できない場合は、同じメソッド名のメソッドがこのクラスで宣言されるものとする。このメソッドは、この章のメソッド名段落節にある構文規則 9 に従う。


注: クラスA が、2 個のクラス、B と C からメソッドMを継承し、M 用のメソッドインターフェイスがクラスBとCでは異なっている(たとえば、BのMはクラスXのオブジェクトを返し、CのMは関係のないクラスYのオブジェクトを返す)とする。この場合は、クラスAで、Mによる有効なメソッドの優先が定義され、メソッドインターフェイスの適合性の問題が解決されていない限り、継承は無効である。これはつねに可能であるわけではない(つまり、継承は無効となる)が、継承を有効にできる場合もある。たとえば、XとYを継承するクラスとしてZを定義すると、Mによるメソッドの優先をクラスAで指定し、クラスZのオブジェクトが返されるようにすることができる。


一般規則

  1. クラス名-1は、このクラス定義を宣言するクラスの名とする。ただし、定数-1(存在する場合)は、運用環境で外部化されたクラスの名である。

  2. INHERITS句は、クラスの継承節に従い、クラス名-1により継承されるクラスの名とする。

  3. FINAL 句が指定されている場合は、そのクラスは他のクラスの上位クラスとはなり得ない。

  4. USING 指定があれば、パラメータ化されたクラスとなる。パラメータ名-1は、仮パラメータにつけられた名とする。パラメータ化されたクラスの動作について詳しくは、翻訳集団の概念の章のパラメータ化されたクラス節を参照。

  5. パラメータ名-1は、このクラス定義内で指定され、クラス名またはインターフェイス名のみが許可される。

  6. 同じクラスが2度以上継承されている場合、そのクラス用のデータは1度だけクラス名-1に追加される。


注: 同じクラスが直接継承されるのは、1度だけであるが、間接的には複数回継承され得る。たとえば、クラスDがクラスBおよびCから継承し、クラスBおよびCのどちらもクラスAから継承するとする。この場合、クラスDは、クラスBの上位クラスおよびクラスCの上位クラスとして、クラスAから間接的に2度継承する。


5.4 ファクトリ段落

ファクトリ段落は、この見出し部でファクトリ定義を行おうとしていることを示す。

一般形式

FACTORY.  [ IMPLEMENTS {インターフェイス名-1} ... . ]

構文規則

  1. インターフェイス名-1は、親のクラス定義のリポジトリ段落で指定されたインターフェイスの名前とする。

  2. 使用されたインターフェイスの各メソッドプロトタイプは、それにより、このクラスのファクトリインターフェイスが、使用されている全インターフェイスと適合するものとする。

一般規則

  1. IMPLEMENTS 句は、翻訳集団の概念の章のインターフェイスの処理系節に従い、親のクラスのファクトリオブジェクトにより使用されるインターフェイスの名を指定する。

  2. ファクトリオブジェクトは、以下の場合にインタフェイス int-1 を指定する。

    1. ファクトリオブジェクトが、int-1を指定する IMPLEMENTS句で定義されている。

    2. ファクトリオブジェクトが、int-1を継承するインターフェイスを使用している。

    3. ファクトリオブジェクトを含むクラスが、int-1 を使用するファクトリオブジェクトを含むクラスを継承している。

5.5 オブジェクト段落

オブジェクト段落は、この見出し部でオブジェクト定義を行おうとしていることを示す。

一般形式

OBJECT.  [ IMPLEMENTS {インターフェイス名-1} ... . ]

構文規則

  1. インターフェイス名-1は、 親のクラス定義のリポジトリ段落で指定されたインターフェイスの名前とする。

  2. 使用されたインターフェイスの各メソッドプロトタイプは、それにより、このクラスのファクトリインターフェイスが、使用されている全インターフェイスと適合するものとする。

一般規則

  1. IMPLEMENTS 句は、翻訳集団の概念の章のインターフェイスの処理系節に従い、親のクラスのインスタンスオブジェクトにより使用されるインターフェイスの名を指定する。

  2. インスタンスオブジェクトは、以下の場合にインタフェイス int-1 を指定する。

    1. インスタンスオブジェクトが、int-1を指定する IMPLEMENTS句で定義されている。

    2. インスタンスオブジェクトが、int-1を継承するインターフェイスを使用している。

    3. インスタンスオブジェクトを含むクラスが、int-1 を使用するファクトリオブジェクトを含むクラスを継承している。

5.6 メソッド名段落

メソッド名段落は、この見出し部でメソッド定義を行おうとしていることを示し、メソッドまたはメソッドプロトタイプを識別する名前を指定するとともに、メソッドにメソッド属性を割り当てる。

一般形式

構文規則

  1. 定数-1は英数字の定数であり、表意定数であってはならない。

  2. 親のオブジェクトまたはファクトリの定義の作業場所節にデータ名としてプロパティ名-1を指定した場合、そのデータ名のデータ記述項にPROPERTY指定を書いてはならない。

  3. GET指定を書いた場合、手続き部の見出し中にメソッドのUSING指定パラメータを書いてはならず、メソッドに単一のRETURNING指定を書かなければならない。

  4. SET指定を書いた場合、手続き部の見出し中にメソッドのUSING指定パラメータを書かなければならず、RETURNING指定を書いてはならない。

  5. OVERRIDE 指定は、メソッドプロトタイプで使用してはならない。

  6. OVERRIDE指定が使用されている場合は、上位クラスで定義されたメソッド定義により宣言されたメソッドと同じ名のメソッドが存在していなければならない。上位クラスにあるメソッドは、FINAL句で定義されていてはならない。

  7. OVERRIDE が使用されていない場合で、

    1. このメソッド定義がクラス定義に含まれる場合は、継承されたメソッドはどれも、このメソッド定義で宣言されたメソッドと同じ名であってはならない。

    2. このメソッド定義がインターフェイス定義に含まれる場合は、 継承されたメソッドプロトタイプはどれも、このメソッド定義で宣言されたメソッドプロトタイプと同じ名であってはならない。

  8. FINAL句は、メソッドプロトタイプで指定されていてはならない。

  9. メソッド名-1または定数-1が、親の定義より継承されたメソッド名と同じである場合は、手続き部見出しの中のパラメータ宣言および返される項目が適合規則に従ったものでなければならない。これにより、このメソッド定義を含む定義が、手続き部の章のパラメータおよび戻り項目の適合節に従い、継承された定義すべてに適合することが保証される。

一般規則

  1. このメソッド定義により宣言されるメソッドの名は、以下のように決定される。

    1. PROPERTY句を指定した場合、メソッド名は下記のように設定される。

             
      1. GET指定を書いた場合、文字"GET"にプロパティ名-1を大文字化したものが結合される。

      2. SET指定を書いた場合、文字"SET"にプロパティ名-1を大文字化したものが結合される。

    2. PROPERTY句を指定しなかった場合、メソッド名-1がメソッド名となる。ただし、定数-1を指定した場合、それは運用環境の外部にあるクラスの名前を指す。

  2. OVERRIDE 指定は、このメソッドが継承されたメソッドに優先することを示す。

  3. FINAL 句は、どの下位クラスでも、このメソッドが他のメソッドに優先されないことを示す。

  4. メソッドの名前は、このメソッドが定義されているクラスのオブジェクトに関するメソッド呼出しの中で参照できる。

  5. 指定した利用者語がこのメソッド定義のデータ部および上位のファクトリ定義またはオブジェクト定義のデータ部の中に定義されている場合、このメソッドにおいて使用した利用者語はこのメソッド内の宣言を参照する。このメソッドから上位のファクトリ定義またはオブジェクト定義中の宣言を呼び出すことはできない。

  6. GET指定を指定した場合、このメソッドはプロパティ名-1のプロパティ読み出しメソッドとなる。

  7. SET指定を指定した場合、このメソッドはプロパティ名-1のプロパティ設定メソッドとなる。

5.7 インターフェイス名段落

INTERFACE-ID段落は、この見出し部でインターフェイス定義を行おうとしていることを示し、インターフェイスを識別する名前を指定するとともに、インターフェイスにインターフェイス属性を割り当てる。

一般形式

INTERFACE-ID. インターフェイス名-1 [ AS 定数-1 ]
	[ INHERITS FROM { インターフェイス名-2 } ... ]
	[ USING { パラメータ名-1 } ... ] .

指令

  1. 予約語リストにフラグを付けたり、その内容を修正する機能を提供するコンパイラ指令に加えて、下記の指令がこの節に記述されている構文または意味内容に影響を与える可能性がある

    • ACTUAL-PARAMS - パラメータ化されたクラスやインタフェイスからのインターフェイスの作成に使用されるパラメータを指定する。

構文規則

  1. 定数-1は英数字の定数であり、表意定数であってはならない。

  2. インターフェイス-2このソース要素のリポジトリ段落中に指定されたインターフェイスの名前でなければならない。

  3. インターフェイス名-2はインターフェイス-1から直接的にも間接的にも継承してはならない。

  4. パラメータ名-1は、このインターフェイス定義のリポジトリ段落中のクラス指定子またはインターフェイス指定子の中に指定された名前でなければならない。

  5. メソッド名が2個以上のインターフェイスから継承されている場合は、継承された各インターフェイス内のメソッドプロトタイプにより、このインターフェイスが継承された全インターフェイスに適合するものとする。

一般規則

  1. インターフェイス名-1はこのインターフェイス定義に宣言されたインターフェイスに名前を付ける。しかし、定数-1を指定した場合、それは運用環境の外部にあるインターフェイスの名前を指す。

  2. INHERITS指定は、翻訳集団の概念の章のインターフェイスの継承節に基づいてインターフェイス名-1によって継承される、インターフェイスの名前を指定する。

  3. USING指定は、該当のインターフェイスがパラメータ化されていることを指定する。パラメータ名-1は仮パラメータに付けられた名前である。

  4. パラメータ名-1は、クラス名またはインターフェイス名が許されている、このインターフェイス定義中のみで指定する。

5.8 関数名段落

関数名段落は、関数の識別名を指定し、その関数に選択された属性を割り当てる。

一般形式

形式 1(定義)
FUNCTION-ID. 利用者関数名-1 [ AS 定数-1 ].
形式 2(プロトタイプ)
FUNCTION-ID. 
   関数プロトタイプ名-1 [ AS 定数-1 ] IS PROTOTYPE.

構文規則

  1. 定数-1 は英数字の定数であり、表意定数であってはならない。

一般規則

形式 1
  1. 利用者関数名-1は、この関数定義により宣言される関数の名となる。ただし、定数-1(指定されている場合)は、運用環境の外部にある関数の名とする。

形式 2
  1. 関数プロトタイプ名-1は、この関数定義により宣言される関数プロトタイプの名となる。ただし、定数-1(指定されている場合)は、運用環境の外部にある関数プロトタイプの名とする。

5.9 翻訳日付段落

機能

翻訳日付(date-compiled)段落は、原始プログラム・リストの見出し部の中に、中間コードが生成された日を挿入する。

一般形式

指令

  1. 予約語リストにフラグを付けたり、その内容を修正する機能を提供するコンパイラ指令に加えて、下記の指令がこの節に記述されている構文または意味内容に影響を与える可能性がある。

構文規則

  1. 注記項には、計算機の文字集合に属する任意の文字を組み合わせて書ける。標識領域にハイフンを指定して、注記項を次の行に続けることはできない。しかし、注記項を複数行にわたって書くことはできる。この場合、注記項を書ける範囲はB領域に限定される。次の行をA領域から書き始めると、注記項ではない段落を書き始めたことになる。

一般規則

  1. 翻訳日付段落が書いてあると(注記項の有無を問わない)、COBOLシステムは生成される実行用プログラム・コードに日付注記項を挿入する。プログラム・リスト中では、その内容は下記の形に置き換えられる。
      DATE-COMPILED. 現在の日付と時刻。

    ここで、日付と時刻の形式は、DD-MMM-YY hh:mmである。

    DATE指令を使用すると、注記項を置き換えるためにCOBOLコンパイラによって使用される文字列を変形できる。

    翻訳日付段落に挿入される値は、組込み関数のWHEN-COMPILEDで使用される値でもある。ただし、両者の形式に違いがあることもある。.


Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている 固有の商標および商品名は国際法によって保護されています。


Previous 翻訳集団の定義の概要 環境部 Next