ISO2002MF 

リポジトリ段落

リポジトリ段落では、環境部の範囲内で使用できるプログラム プロトタイプ名、関数プロトタイプ名、クラス名、デリゲート名、列挙名、インターフェイス名、およびプロパティ名を指定できる。また、FUNCTION という語を指定せずに使用できる組み込み関数名を宣言することもできる。

一般形式

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


指令

  1. 予約語リストのフラグ設定および修正を行うコンパイラ指令に加えて、以下の指令が、本セクションに記載の構文または意味内容に影響を与える可能性がある。
    • REPOSITORY - リポジトリ ファイルを作成するか、翻訳されるプログラムをリポジトリ ファイルと照合するように要求する。
    • RDFPATH - リポジトリ ファイル用のライブラリの場所を指定する。
    • ACTUAL-PARAMS - パラメーター化されたクラスまたはインターフェイスからのクラスまたはインターフェイスの作成に使用されるパラメーターを指定する。
    注: これらの指令は JVM COBOL には適用されない。

構文規則

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

一般規則

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

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

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

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

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