ISO2002MF 

リポジトリ段落

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

一般形式

指令

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

    • RDFPATH - リポジトリ・ファイル用の登録集の所在を指定する。

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

構文規則

  1. リポジトリ段落中にクラス名-1、インターフェイス名-2、属性名-1、またはプログラムプロトタイプ名のいずれかを2回以上指定する場合、その名前での指定はすべて同じでなければならない。

  2. 定数-1、定数-2、定数-3、定数-4、および定数-5は文字定数でなければならず、表意定数であってはならない。

  3. CLASS指定を書く場合、クラス名-2、クラス名-3、インターフェイス名-1は下記のどちらかでなければならない。

    1. それを含むクラス定義またはインターフェイス定義のパラメータ

    2. クラス名-1が定義されているのと同じリポジトリ段落中に定義されている

  4. このリポジトリ段落を含むクラス定義のクラス名段落のUSING指定またはこのリポジトリ段落を含むインターフェイス定義のインターフェイス名段落のUSING指定の中にクラス名-1を指定した場合、EXPANDS指定を書いてはならない。

  5. インターフェイス指定を書く場合、クラス名-4、インターフェイス名-3、インターフェイス名-4は下記のどちらかでなければならない。

    1. それを含むクラス定義またはインターフェイス定義のパラメータ

    2. インターフェイス名-2が定義されているのと同じリポジトリ段落中に定義されている

  6. このリポジトリ段落を含むクラス定義のクラス名段落のUSING指定またはこのリポジトリ段落を含むインターフェイス定義のインターフェイス名段落の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. NET指定したenum名-1が、リポジトリ段落の指定を含むデリゲート定義の名である場合は、enum名-1は、列挙定義を参照し、このenum指定子は無視される。

  17. クラス指定を書いた場合、

    1. 定数-1を指定したならば、クラスである定数-1に関する情報が外部リポジトリ中に存在しなければならない。

    2. 定数-1を指定しなかったならば、クラスであるクラス名-1に関する情報が外部リポジトリ中に存在しなければならない。

  18. インターフェイス指定を書いた場合、

    1. 定数-2を指定したならば、インターフェイスである定数-2に関する情報が外部リポジトリ中に存在しなければならない。

    2. 定数-2を指定しなかったならば、インターフェイスであるインターフェイス名-2に関する情報が外部リポジトリ中に存在しなければならない。

  19. PROPERTY指定を書いた場合、

    1. 定数-3を指定したならば、属性である定数-3に関する情報が外部リポジトリ中に存在しなければならない。定数-3はこの段洛中に宣言されたクラスまたはインターフェイスのどれかの一部である。

    2. 定数-3を指定しなかったならば、属性である属性名-1に関する情報が外部リポジトリ中に存在しなければならない。属性名-1はこの段洛中に宣言されたクラスまたはインターフェイスのどれかの一部である。

    3. NET
      DELEGATE句が指定された場合、
      1. 定数-6が指定された場合は、デリゲート定義定数-6用の外部リポジトリ内に情報がなければならない。

      2. 定数-6が指定されない場合は、 デリゲート定義定数-6用の外部リポジトリ内に情報がなければならない。

    4. NET
      ENUM句が指定された場合、
      1. 定数-7が指定された場合は、列挙定義定数-7用の外部リポジトリ内に情報がなければならない。 

      2. 定数-7が指定されない場合は、 列挙定義定数-7用の外部リポジトリ内に情報がなければならない。 

一般規則

  1. クラス名-1はそれが指定されている環境部の範囲内で使用できるクラスの名前である。

  2. AS指定を書いた場合、定数-1、定数-2、定数-3、または定数-5はそれぞれ、クラス、インターフェイス、プログラム、または関数が操作環境によって認識される名前である。定数-4は、指名された属性を実現するメソッドとして、操作環境によって認識される名前である。AS指定を書く必要があるのは、クラスやインターフェイスや属性の名前が利用者語を形成するための規則に従っていないか、または名前の大文字と小文字を区別する場合である。

  3. クラス名-3とインターフェイス名-1は、クラス名-2によって参照されるパラメータ化されたクラスのための、実パラメータである。

  4. クラス名-4とインターフェイス名-4は、インターフェイス名-3によって参照されるパラメータ化されたインターフェイスのための、実パラメータである。

  5. クラス指定子にEXPANDS指定を書いた場合、パラメータ化されているクラスであるクラス名-2から、クラス名-1がクラスとして作成される。クラス指定子のEXPANDS指定のUSING指定の中のパラメータの数は、クラス名-2のクラス名段落のUSING指定の中のパラメータの数と同じであるものとする。クラス名-1用のインターフェイスは、クラス名-2用に指定されたインターフェイスのパラメータをクラス指定子に指定されたパラメータで置き換えたものである。

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

  6. コンパイラはクラス名-1に指定されている情報を外部リポジトリと一緒に使用して、使用するクラスの詳細を決定する。そのクラスに関するリポジトリ情報は、ファイルに格納されていなければならない。そのファイル名はそのクラスを外部化した名前に拡張子rdfを付けたものでなければならない。RDFPATH指令を指定した場合には、そのファイルは指定されたディレクトリのもとに置かれていなければならない。そうでない場合には、.intファイルおよび.idyファイルが作成されるローカル・ディレクトリのもとにそのファイルが置かれていなければならない。

  7. インターフェイス名-2はそれが指定されている環境部の範囲内で使用できるインターフェイスの名前である。

  8. インターフェイス指定子にEXPANDS指定を書いた場合、パラメータ化されているインターフェイスであるインターフェイス名-3から、インターフェイス名-2がインターフェイスとして作成される。インターフェイス指定子のEXPANDS指定のUSING指定の中のパラメータの数は、インターフェイス名-3のインターフェイス名段落のUSING指定の中のパラメータの数と同じであるものとする。インターフェイス名-2用のインターフェイスは、インターフェイス名-3用に指定されたインターフェイスのパラメータをインターフェイス指定子に指定されたパラメータで置き換えたものである。

    インターフェイスinterface-名-2は、指定された各仮パラメータを対応する実パラメータに置き換えることにより、パラメータ化されたインターフェイスinterface-3から作成される。この置き換えは、COPYおよびREPLACE文の処理後に実行される。

  9. コンパイラはインターフェイス名-2に指定されている情報を外部リポジトリと一緒に使用して、使用するインターフェイスの詳細を決定する。そのクラスに関するリポジトリ情報は、ファイルに格納されていなければならない。そのファイル名はそのインターフェイスを外部化した名前に拡張子rdfを付けたものでなければならない。RDFPATH指令を指定した場合には、そのファイルは指定されたディレクトリのもとに置かれていなければならない。そうでない場合には、.intファイルおよび.idyファイルが作成されるローカル・ディレクトリのもとにそのファイルが置かれていなければならない。

  10. 属性名-1はそれが指定されている環境部の範囲内で使用できるオブジェクト属性の名前である。

  11. プログラムプロトタイプ名-1は、これを含む環境部の範囲全体で使用されるプログラムプロトタイプの名とする。

  12. NETデリゲート名-1は、 これを含む環境部の範囲全体で使用されるデリゲート定義の名前とする。

  13. NETEnum名-1は、 これを含む環境部の範囲全体で使用される列挙定義の名前とする。

  14. プログラムプロトタイプ名-1のプロトタイプ定義またはプログラム定義が、この翻訳集団中ですでに指定されている場合は、その定義を使用して、プログラムプロトタイプ名-1が示すプログラムの起動に関する詳細が決定される。そうでない場合は、外部リポジトリを使用して、外部化された名、プログラムプロトタイプ名-1のプログラムの起動に関する詳細が決定される。この場合、プログラムプロトタイプ名-1が参照されると、このプログラムが起動する。

  15. 関数プロトタイプ名-1は、これを含む環境部の範囲全体で使用される関数プロトタイプの名とする。

  16. 関数-プロトタイプ名-1のプロトタイプ定義または関数定義が、この翻訳集団中ですでに指定されている場合は、その定義を使用して、関数プロトタイプ名-1が示す関数の起動に関する詳細が決定される。そうでない場合は、外部リポジトリを使用して、外部化された名、関数プロトタイプ名-1の関数の起動に関する詳細が決定される。この場合、関数プロトタイプ名-1が参照されると、この関数が起動する。

  17. 関数指定で、組み込み関数名-1の前に語、FUNCTIONをつける必要はない。

  18. 関数指定の組み込み形式でALLを指定した場合は、 手続き部 - 組み込み関数の章の定義による、各組み込み関数名を指定したものと同様の結果となる。