ISO2002MF 

リポジトリ段落

リポジトリ段落では、環境部の範囲内で使用できるプログラム プロトタイプ名 (program-prototypes-name)、関数プロトタイプ名 (function-prototype-name)、クラス名 (class-name)、デリゲート名 (delegate-name)、列挙名 (enum-name)、インターフェイス名 (interface-name)、およびプロパティ名 (property-name) を指定できる。さらに、FUNCTION という語を指定せずに使用できる組み込み関数名 (intrinsic-function-name) を宣言することもできる。

一般形式

注:関数指定を除き、以下の指定子の参照は、リポジトリ段落で指定しなくても、TYPE external-type-name 構文を使用して行うことができるようになった。ここで指定子が記載されているのは、下位互換性のためである。

*

指令

  1. 予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この節に記述した構文または意味が影響を受ける可能性がある。
    • REPOSITORY - リポジトリ ファイルを作成するか、コンパイルされるプログラムをリポジトリ ファイルと照合するように要求する。
    • RDFPATH - リポジトリ ファイル用のライブラリの場所を指定する。
    • ACTUAL-PARAMS - パラメーター化されたクラスまたはインターフェイスからのクラスまたはインターフェイスの作成に使用されるパラメーターを指定する。
    注:これらの指令はマネージ COBOL には適用されない。

構文規則

  1. リポジトリ段落でクラス名-1、デリゲート名-1、enum名-1、インターフェイス名-2、関数プロトタイプ名-2、組み込み関数名-1、プロパティ名-1、またはプログラムプロトタイプ名-1 を 2 回以上指定する場合、その名前での指定はすべて同じでなければならない。
  2. 定数-1、定数-2、定数-3、定数-4、定数-5、定数-6、および定数-7 は、文字リテラルでなければならず、表意定数であってはならない。
  3. CLASS 句を書く場合、クラス名-2、クラス名-3、およびインターフェイス名-1 は下記のどちらかでなければならない。
    1. それを含むクラス定義またはインターフェイス定義のパラメーター
    2. クラス名-1 が定義されているのと同じリポジトリ段落中に定義されている
  4. このリポジトリ段落を含むクラス定義のクラス ID 段落の USING 指定またはこのリポジトリ段落を含むインターフェイス定義のインターフェイス ID 段落の USING 指定の中にクラス名-1 を指定した場合、EXPANDS 指定を書いてはならない。
  5. INTERFACE 句を書く場合、クラス名-4、インターフェイス名-3、インターフェイス名-4 は下記のどちらかでなければならない。
    1. それを含むクラス定義またはインターフェイス定義のパラメーター
    2. インターフェイス名-2 が定義されているのと同じリポジトリ段落中に定義されている
  6. このリポジトリ段落を含むクラス定義のクラス ID 段落の USING 指定またはこのリポジトリ段落を含むインターフェイス定義のインターフェイス ID 段落の USING 指定の中にインターフェイス名-2 を指定した場合、EXPANDS 指定を書いてはならない。
  7. プログラムプロトタイプ名-1 は、この翻訳集団で既に指定されたプログラム プロトタイプまたはプログラム定義の名前でなければならない。または
    1. 定数-3 を指定しなかったならば、プログラムプロトタイプ名-1 に関する情報が外部リポジトリ中に存在しなければならない。
    2. 定数-3 を指定したならば、プログラム「定数-3」に関する情報が外部リポジトリ中に存在しなければならない。
  8. 関数プロトタイプ名-1 は、この翻訳集団で既に指定された関数プロトタイプまたは関数定義の名前でなければならない。または
    1. 定数-5 を指定しなかったならば、関数プロトタイプ名-1 に関する情報が外部リポジトリ中に存在しなければならない。
    2. 定数-5 を指定したならば、関数「定数-5」に関する情報が外部リポジトリ中に存在しなければならない。
  9. 組み込み関数名-1 は、このリポジトリ段落の範囲内で利用者語として指定してはならない。
  10. ALL が関数指定の組み込み形式で指定されている場合は、組み込み関数の名前はいずれも、リポジトリ段落の範囲内にある利用者語として指定してはならない。
  11. 指定したクラス名-1 がこのリポジトリ段落を含むクラス定義の名前である場合、クラス名-1 を参照するとそのクラス定義を参照することになり、このクラス指定は無視される。
  12. 指定したインターフェイス名-2 がこのリポジトリ段落を含むインターフェイス定義の名前である場合、インターフェイス名-2 を参照するとそのインターフェイス定義を参照することになり、このインターフェイス指定は無視される。
  13. 指定したプログラムプロトタイプ名-1 がこのリポジトリ段落を含むプログラム定義の名前またはそれを含むプログラムの名前である場合、プログラムプロトタイプ名-1 を参照すると指定されたプログラム定義を参照することになり、このプログラム指定は無視される。
  14. 指定した関数プロトタイプ名-1 がこのリポジトリ段落を含む関数定義の名前である場合、関数プロトタイプ名-1 を参照するとその関数定義を参照することになり、この関数指定は無視される。
  15. NET 指定したデリゲート名-1 がこのリポジトリ段落を含むデリゲート定義の名前である場合、デリゲート名-1 を参照するとそのデリゲート定義を参照することになり、このデリゲート指定は無視される。
  16. NETJVM 指定した enum名-1 がこのリポジトリ段落を含む列挙定義の名前である場合、enum名-1 を参照するとそのデリゲート定義を参照することになり、このENUM指定は無視される。
  17. CLASS 句を書いた場合:
    1. 定数-1 を指定したならば、クラス「定数-1」に関する情報が外部リポジトリ中に存在しなければならない。
    2. 定数-1 を指定しなかったならば、クラス名-1 に関する情報が外部リポジトリ中に存在しなければならない。
  18. INTERFACE 句を書いた場合:
    1. 定数-2 を指定したならば、インターフェイス「定数-2」に関する情報が外部リポジトリ中に存在しなければならない。
    2. 定数-2 を指定しなかったならば、インターフェイス名-2 に関する情報が外部リポジトリ中に存在しなければならない。
  19. PROPERTY 句を書いた場合:
    1. 定数-4 を指定したならば、プロパティ「定数-4」に関する情報が外部リポジトリ中に存在しなければならない。定数-4 はこのリポジトリ段洛中に宣言されたクラスまたはインターフェイスのいずれかの一部である。
    2. 定数-4 を指定しなかったならば、プロパティ名-1 に関する情報が外部リポジトリ中に存在しなければならない。プロパティ名-1 はこのリポジトリ段洛中に宣言されたクラスまたはインターフェイスのいずれかの一部である。
  20. NET DELEGATE 句を書いた場合:
    1. 定数-6 を指定したならば、デリゲート定義「定数-6」に関する情報が外部リポジトリ中に存在しなければならない。
    2. 定数-6 を指定しなかったならば、デリゲート定義であるデリゲート名-1 に関する情報が外部リポジトリ中に存在しなければならない。
  21. NETJVM ENUM 句を書いた場合:
    1. 定数-7 を指定したならば、列挙定義「定数-7」に関する情報が外部リポジトリ中に存在しなければならない。
    2. 定数-7 を指定しなかったならば、列挙定義 enum名-1 に関する情報が外部リポジトリ中に存在しなければならない。

一般規則

  1. クラス名-1 はそれが指定されている環境部の範囲内で使用できるクラスの名前である。
  2. AS 指定を書いた場合、定数-1、定数-2、定数-3、定数-5、または定数-6 はそれぞれクラス、インターフェイス、プログラム、関数、またはデリゲートが操作環境で認識される名前である。定数-4 は、指名されたプロパティを実装するメソッドとして、操作環境で認識される名前である。AS 指定を書く必要があるのは、クラス、インターフェイス、プロパティ、関数、またはデリゲートの名前が利用者語を形成するための規則に従っていない場合、または名前の大文字と小文字を区別する場合である。
  3. クラス名-3 およびインターフェイス名-1 は、クラス名-2 によって参照されるパラメーター化されたクラスのための実パラメーターである。
  4. クラス名-4 およびインターフェイス名-4 は、インターフェイス名-3 によって参照されるパラメーター化されたインターフェイスのための、実パラメーターである。
  5. クラス指定に EXPANDS 指定を書いた場合、パラメーター化されたクラスであるクラス名-2 からクラス名-1 が作成される。クラス指定の EXPANDS 指定の USING 指定の中のパラメーターの数は、クラス名-2 の CLASS-ID 段落の USING 指定の中のパラメーターの数と同じであるものとする。クラス名-1 用のインターフェイスは、クラス名-2 用に指定されたインターフェイスのパラメーターをクラス指定に指定されたパラメーターで置き換えたものである。

    クラス名-1 はパラメーター化されたクラスであるクラス名-2 から作成される。その際、仮パラメーターの各指定が対応する実パラメーターで置き換えられる。その置換は COPY 文と REPLACE 文の処理が終わった後で行われる。

  6. コンパイラはクラス名-1 に指定されている情報を外部リポジトリと一緒に使用して、使用するクラスの詳細を決定する。そのクラスに関するリポジトリ情報はファイルに格納されていなければならず、そのファイル名はそのクラスを外部化した名前に拡張子 rdf を付けたものとする。RDFPATH 指令を指定した場合には、そのファイルは指定されたディレクトリ内に置かれていなければならない。そうでない場合には、.int ファイルおよび .idy ファイルが作成されるローカル ディレクトリ内にそのファイルが置かれていなければならない。
  7. インターフェイス名-2 はそれが指定されている環境部の範囲内で使用できるインターフェイスの名前である。
  8. インターフェイス指定に EXPANDS 指定を書いた場合、パラメーター化されたインターフェイスであるインターフェイス名-3 からインターフェイス名-2 が作成される。インターフェイス指定の EXPANDS 指定の USING 指定の中のパラメーターの数は、インターフェイス名-3 の INTERFACE-ID 段落の USING 指定の中のパラメーターの数と同じであるものとする。インターフェイス名-2 用のインターフェイスは、インターフェイス名-3 用に指定されたインターフェイスのパラメーターをインターフェイス指定に指定されたパラメーターで置き換えたものである。

    インターフェイス名-2 はパラメーター化されたインターフェイスであるインターフェイス名-3 から作成される。その際、仮パラメーターの各指定が対応する実パラメーターで置き換えられる。その置換は COPY 文と REPLACE 文の処理が終わった後で行われる。

  9. コンパイラはインターフェイス名-2 に指定されている情報を外部リポジトリと一緒に使用して、使用するインターフェイスの詳細を決定する。そのクラスに関するリポジトリ情報はファイルに格納されていなければならず、そのファイル名はそのインターフェイスを外部化した名前に拡張子 rdf を付けたものとする。RDFPATH 指令を指定した場合には、そのファイルは指定されたディレクトリ内に置かれていなければならない。そうでない場合には、.int ファイルおよび .idy ファイルが作成されるローカル ディレクトリ内にそのファイルが置かれていなければならない。
  10. プロパティ名-1 はそれが指定されている環境部の範囲内で使用できるオブジェクト プロパティの名前である。
  11. プログラムプロトタイプ名-1 はそれが指定されている環境部の範囲内で使用できるプログラム プロトタイプの名前である。
  12. NET デリゲート名-1 はそれが指定されている環境部の範囲内で使用できるデリゲート定義の名前である。
  13. 関数指定の書き方 2 は注記にすぎない。
  14. function-identifier で、組み込み関数名-1 の前に FUNCTION という語を付ける必要はない。
  15. 関数指定の組み込み形式で ALL を指定した場合は、「組み込み関数」で定義されている各組み込み関数名を指定したものと同様の結果となる。
  16. NETJVM enum名-1 はそれが指定されている環境部の範囲内で使用できる列挙定義の名前である。
  17. プログラムプロトタイプ名-1 のプロトタイプ定義またはプログラム定義がこの翻訳集団中で既に指定されている場合は、その定義を使用して、プログラムプロトタイプ名-1 が示すプログラムの起動に関する詳細が決定される。そうでない場合は、外部リポジトリを使用して、外部化された名前であるプログラムプロトタイプ名-1 を持つプログラムの起動に関する詳細が決定される。このプログラムは、プログラムプロトタイプ名-1 が参照されると起動する。
  18. 関数プロトタイプ名-1 はそれが指定されている環境部の範囲内で使用できる関数プロトタイプの名前である。
  19. 関数プロトタイプ名-1 のプロトタイプ定義または関数定義がこの翻訳集団中で既に指定されている場合は、その定義を使用して、関数プロトタイプ名-1 が示す関数の起動に関する詳細が決定される。そうでない場合は、外部リポジトリを使用して、外部化された名前関数プロトタイプ名-1 を持つ関数の起動に関する詳細が決定される。この関数は、関数プロトタイプ名-1 が参照されると起動する。