![]() |
COBOL言語の概要 | 翻訳集団の概念 | ![]() |
この章では、COBOL言語の概念を説明する。
COBOL言語の最も基本的でそれ以上分割できない単位は、文字である。COBOLの文字列および分離符として 使用できる文字集合は、英字、数字、特殊文字から構成される。文字集合を構成する文字を以下に示す。
| 文字
|
意味
|
|---|---|
| 0 から 9 | 数字 |
| A から Z | 大文字の英字 |
| a から z | |
| 空白 | |
| + | 正号 |
| - | 負号またはハイフン |
| * | 星印 |
| / | 斜線 |
| = | 等号 |
| \ | 通貨記号 |
| . | 終止符または小数点 |
| , | コンマまたは小数点 |
| ; | セミコロン |
| " | 引用符 |
| ' |
|
| ( | 左かっこ |
| ) | 右かっこ |
| > | より大きい記号 |
| < | より小さい記号 |
| : | |
| & | |
| _ | |
小文字を文字列や原文語に使用できる。
ただし、文字定数や絵記号として使用した場合は例外である。各小文字は、対応する大文字と等しいものとする。
このCOBOLシステムは、上記の文字集合に制限されている。しかし、文字定数、注記行、注記項、データの内容には、 COBOL 翻訳集団の文字を入れることができる。(付録の文字集合と文字の照合順序 を参照。)
個々の文字をつないで、文字列または分離符とする。分離符には他の分離符または文字列をつなぐことができる。 文字列には分離符だけをつなぐことができる。文字列と分離符をつないでいくことにより、 翻訳集団の本文ができる。
分離符(separator)は、1つ以上の句読文字をつないだものである。分離符の構成に関する規則を、以下に記す。
左右の引用符において、アポストロフィまたは引用符を引用記号文字として使用できる。
句読文字の右側の引用符とは、以下のいずれかである。
左側の引用符の直前は、空白、左かっこ、仮原文区切り記号のいずれかとする。右側の引用符の直後は、分離符の空白、コンマ、セミコロン、終止符、右かっこ、右側の仮原文区切り記号のどれかとする。左側の引用符の直前、および右側の引用符の直後のこれらの分離符は、分離符としての引用符の一部を構成するものではない。
左側の仮原文区切り記号の直前の空白は、省略可能。
仮原文区切り記号は一対として、仮原文
および動詞記号
を囲むときだけ使用する。 (翻訳指示文の原始文操作および Micro Focus COBOL OO言語拡張のメソッドインターフェイス定義の章を参照。)
PICTURE文字列(データ部 - データ記述のPICTURE(形式)句の章を参照。) または数字定数中の句読文字は、PICTURE句の文字列または数字定数を指定するための記号であり、句読文字とはみなされない。PICTURE句の文字列は、分離符の空白、コンマ、セミコロン、終止符によってのみ区切られる。
分離符の構成に関する規則は、文字定数、注記項、注記行の中の文字には適用しない。
文字列(character-string)はひとつながりの文字であって、COBOLの語、定数、PICTURE文字列、注記項を形成する。文字列は分離符で区切る。
COBOLの語(word)は30字以内の文字列であって、翻訳指示語、コンテキストセンシティブ語、利用者語、システム名、予約語、関数名に使用する。特殊文字を含まないCOBOLの語は文字と数字とハイフン
と下線から構成される。
非特殊文字語においては、ハイフン
または下線
を先頭または末尾に置いてはならない。小文字は対応する大文字と等しいものとみなされる。. .
文字列は31文字含むことができる。
原始要素内では、下記の規則が適用される。
利用者語:利用者語(user-defined word)はCOBOLの語であって、句や文の書き方を満足するように利用者が指定するものである。利用者語の各文字は下記の一連の文字の中から選択する。
実際の利用者語には以下の種類がある。
1つの原始要素の中では、利用者語が次に示すように互いに重ならない種類に分かれる
定数名、
データ名、
プロパティ名、
レコード名、
分割キー名、
型定義名
区分番号およびレベル番号を除く利用者語はすべて、上記の互いに重ならない種類のうちのただ1つに属する。更に、同じ種類の利用者語は、一意参照の節で指定されたものを除き、すべて一意でなければならない。
段落名、節名、レベル番号、区分番号以外の利用者語はすべて、最低限1文字の英字、
またはハイフンを1つ含まなければならない。
区分番号およびレベル番号は一意である必要はない。区分番号およびレベル番号は他の区分番号やレベル番号と同じであってもよいし、段落名や節名とも同じであってもよい。
下記の利用者語は操作環境に対して外部化される。
クラス名、
関数プロトタイプ名、
インターフェイス名、
メソッド名、
プログラムプロトタイプ名、
利用者関数名
これらの名前のいずれかの代わりに、またはそれに加えて、定数を指定した場合、その定数の内容が操作環境に対する外部名となる。そのさい、大文字と小文字は区別される。定数を指定しなかった場合は、小文字を大文字に変換して外部名が作成される。コンパイラ指令のFOLD-CALL-NAMEを使用すると、外部名化したクラス名、インターフェイス名、プログラム名を大文字にするか小文字にするかを制御できる。コンパイラ指令のOOCTRLを使用すると、外部名化したメソッド名を大文字にするか小文字にするかを制御できる。+Fと-Uを指定すると、メソッド名は小文字にされるこれが省略時の解釈である。
| 条件名: | 条件名(condition-name)とは、データ項目がとるすべての値の組の中の、特定の値または値の組または値の範囲に付けた名前である。条件名を付けたデータ項目を条件変数(conditional
variable)という。条件名は、データ部または環境部の特殊名段落の中で定義できる。特殊名段落では、実行時スイッチのオンの状態、オフの状態、または両方の状態に命名する。
条件名を使用するのは、次の場合だけである。
|
| |
定数名(constant-name)とは固定的な値に付けた名前である。 |
| 呼び名: | 呼び名(mnemonic-name)は、作成者語(implementor-name)に利用者語を割り当てるものである。この指定は環境部の特殊名段落の中で行う。(環境部の章の特殊名段落の節を参照。) |
| 段落名: | 段落名(paragraph-name)とは、手続き部の段落に付けた名前である。段落名が等しいと判断されるのは、同じ数の数字または文字が同じ順序で並んでいる場合だけである。 |
| 節名: | 節名(section-name)とは、手続き部の節に付けた名前である。節名が等しいと判断されるのは、同じ数の数字または文字が同じ順序で並んでいる場合だけである。 |
| その他の利用者語 | その他の利用者語の定義については、用語集を参照。 |
システム名: システム名(system-name)とは、操作環境との連絡に使用するCOBOLの語である。
システム名には、最低1つの英字を入れるか、
または1つのハイフンを入れる。
システム名には、以下の3種類がある。
1つの処理系の中では、システム名のそれぞれの種類は互いに重なり合わない。1つのシステム名はただ1つの種類に属する。
上記のシステム名は、それぞれ用語集に定義を記載してある。
関数名: 関数名(function-name)は、COBOL原始
要素の中で使用できる語のリストの1つである。
関数名と同じ語を利用者語またはシステム名として、原始要素中の別々の文脈において使用できる。ただし、LENGTHとRANDOMとSUMは例外で、利用者語またはシステム名としては使用できない。
(手続き部 - 組み込み関数の章の関数の定義の節を参照。)
予約語: 予約語(reserved word)とは、COBOL翻訳集団の中で用いる語のうちの、予め予約されていて、利用者語またはシステム名としては翻訳集団中で使用できないものである。予約後は、一般形式での指定に従ってのみ使用される (付録の予約語を参照。)
予約語には、下記の種類がある。
| 必要語: | 必要語(key word)とは、 翻訳集団の中である書き方をするときに、必ず書かなければならない語である。それぞれの一般形式の中で、必要語は大文字で記し下線を引いてある。
必要語には、下記の3種類がある。
|
| 補助語: | 補助語(optional word)とは、それぞれの一般形式の中で、大文字で記してあるが下線を引いてない語である。補助語は書いても書かなくてもよい。補助語を書いたか書かなかったかによって、COBOL 原始要素の意味が変わることはない。 |
| 特殊レジスタ: | 特殊レジスタ(special register)とは、COBOLの特殊な機能に関連する情報を記憶しておくために、COBOLコンパイラによって作成される記憶領域である。特殊レジスタには名前を付け、その名前によって参照する。これらについては、この節の特殊レジスタの項で後述する。 |
| 表意定数: | 表意定数(figurative constant)とは、特殊な定数値に予め付けた名前である。この名前によって、値を参照する。具体的な表意定数については、この節の表意定数の値の項で後述する。 |
| 特殊文字語: | 特殊文字語(special-character word)とは、特殊な文字の予約語である。 |
| 定義済みオブジェクト一意名: | あらかじめ定義されたオブジェクト一意名などの予約語である。以下のものがある。
|
文脈依存語:
文脈依存語は、一般形式に指定されているようにだけ予約されるCOBOLの語である。同じ語を、関数名、利用者語、システム名として使用できる。文脈依存語および予約された文脈については、付録の文脈依存語を参照。
ある原始要素の中に別の原始要素が、直接的または間接的に、含まれることがある。各原始要素は、他の原始要素によってまったく同じに名前を付けられた利用者語を使用することができる。 (COBOLの語の節の利用者語の解説を参照。) このような場合、ある原始要素で参照した名前は、違う種類の利用者語であってもその原始要素に記述されているものを指すのであって、他の原始要素中に記述されている同じ名前のものを指すのではない。
利用者語のうちの下記の種類に属するものは、利用者語を宣言した原始要素中の文または記述項においてだけ、参照できる。
利用者語のうちの下記の種類に属するものは、どのCOBOL原始要素からも参照できる。
利用者語のうちの下記の種類に属するものは、それらが構成節の中に宣言されている場合、その構成節を含む原始要素またはその原始要素に含まれる原始要素中の文または記述項からだけ、参照できる。
上記の条件に該当しない場合、利用者語のうちの下記の種類に属するものには、宣言および参照に関して、特別の表記法が適用される。
プログラムのプログラム名は、プログラムの見出し部のプログラム名段落で宣言される。プログラム名を参照できるのは、CALL(呼ぶ)文、
CHAIN文、
CANCEL 文、
SET文、および
プログラム終了見出しから1つの実行単位を構成するいくつかのプログラムに付けられたプログラム名は、必ずしも一意であるとは限らない。しかし、1つの実行単位中の2つのプログラム名が同じである場合、少なくとも一方のプログラムは、もう一方のプログラムを含まない別のプログラムの中に直接的または間接的に含まれていなければならない。
プログラム名の適用範囲を規定する規則は、下記のとおり。
または、プログラムに再帰的な属性がある場合は、そのプログラム自体の内部から参照できる。
ただし、共通属性をもつプログラムおよびそのプログラムに含まれるプログラムからは、そのプログラムが再帰的な属性を持つ場合を除き、そのプログラム名を参照できない。
原始要素の中に条件名、データ名、ファイル名、レコード名、報告書名、
および型定義名
が宣言されている場合、これらの名前はその原始要素の中でだけ参照できる。ただし、これらの名前のうちのいくつかが大域的に使用され、その原始要素中に他の原始要素が含まれる場合は、含まれる他の原始要素からも参照できる。
単一の原始要素の条件名、データ名、ファイル名、レコード名、報告書名、
および型定義名
に付けた名前の一意性に関する必要条件については、前述COBOLの語の節の利用者語の解説を参照。
ある原始要素の中で、その中に含まれる原始要素中に宣言されている条件名、データ名、ファイル名、レコード名、報告書名、
および型定義名
は参照できない。
大域名は、それが宣言されている原始要素の中、あるいはその原始要素に直接的または間接的に含まれている原始要素の中から参照できる。
原始要素Aに原始要素Bが直接的に含まれている場合、両方の原始要素で条件名、データ名、ファイル名、レコード名、報告書名、
および型定義名
をそれぞれ同じ利用者語を使用して設定できる。両方の原始要素中に存在する名前を原始要素B中で参照した場合、下記の規則に従って、どちらのものを指すかが判定される。
大域的属性をもつデータ項目が指標名を記述した表を含む場合、その指標名も大域的属性をもつことになる。したがって、指標名の範囲は、その指標名によって名付けられる指標を持つ表に名前を付けるデータ名のものと同じであり、データ名用の名前の範囲規則が適用される。
指標名を修飾することはできない。
指標名は修飾することができる。
![]()
ソース要素内で参照されるクラスのクラス名は、それを含むクラス定義の名前であるか、またはそのソース要素またはそれを含むソース要素の
またはクラス管理段落
内に宣言されていなければならない。
該当のクラス名に関して翻訳集団内で定義できるクラス定義は1つだけである。その翻訳集団内に定義がなくともかまわない。
ソース要素内で参照されるインターフェイスのインターフェイス名は、それを含むインターフェイス定義の名前であるか、またはそのソース要素またはそれを含むソース要素のリポジトリ段落内に宣言されていなければならない。
該当のインターフェイス名に関して翻訳集団内で定義できるインターフェイス定義は1つだけである。その翻訳集団内に定義がなくともかまわない。
ソース要素のクラス管理段落またはリポジトリ段落内で宣言されたクラス名またはインターフェイス名は、そのソース要素およびそれにネストされるソース要素の中で使用できる。
ソース要素のクラス管理段落で宣言されたクラス名またはインターフェイス名は、そのソース要素および内包されるソース要素の中で使用できる。
メソッドのメソッド名はメソッド名段落中に宣言する。メソッド名を参照できるのは、INVOKE文、メソッド終了見出し、および行中のメソッド呼出しだけである。
クラス定義中に宣言されるメソッドのメソッド名は、そのクラス定義内で一意であるものとする。子クラス内で宣言されるメソッドの名前が親クラスのものと同じであってもかまわない。 ただし、メソッド名段落の条件に従うものとする。
インターフェイス定義中に宣言されるメソッドのメソッド名は、そのインターフェイス定義内で一意であるものとする。継承を受けるインターフェイス内で宣言されるメソッドの名前が継承元のインターフェイスのものと同じであってもかまわない。ただし、メソッド名段落に記述されている条件に従うものとする。
![]()
ソース要素中で参照される関数プロトタイプ名は、それを含む関数定義であるか、または、レポジトリ段落とソース要素のいずれかで宣言されていなければならない。
関数プロトタイプ名がレポジトリ段落で指定され、かつ、その関数プロトタイプ名を宣言する関数プロトタイプが同じ翻訳集団中で指定されている場合は、指定された関数プロトタイプ名が使用され、外部レポジトリ中のこのプロトタイプの情報は無視される。
![]()
ソース要素中で参照されるプログラムプロトタイプ名は、それを含むプログラム定義のプログラム名、またはレポジトリ段落で宣言されたプログラムプロトタイプ名でなければならない。
プログラムプロトタイプがレポジトリ段落で指定され、かつ、同じプログラムプロトタイプ名を宣言するプログラムプロトタイプが同じ翻訳集団中で指定されている場合は、指定されたプログラムプロトタイプが使用され、このプロトタイプの外部レポジトリ中のこのプロトタイプの情報は無視される。
定数(literal)とは、以下のいずれかである。
各定数は、文字定数、数字定数、および各国語型定数のいずれかに属する。
文字定数(nonnumeric literal)とは、計算機の文字集合中で利用できる任意の文字を並べて、両端を引用符
またはアポストロフィ
で区切ったものである。文字定数の長さは1文字以上160文字以内である。引用符
またはアポストロフィ
を区切り文字として使用した場合、文字定数内にその区切り文字を含めるには、その文字を2つ並べて書く。 区切り文字ではない文字を文字定数内に含めるには、その文字を1つだけ書く。ランタイム要素中での文字定数の値は文字の列そのものである。ただし、次の条件がある。
その他の句読文字はすべて、分離符ではなく、文字定数の一部を構成する。すべての文字定数の項類(category)は英数字(alphanumeric)である。(データ部 - データ記述の章のPICTURE(形式)句の節を参照。)
さらに、16進数を文字定数として扱うことができる。このためには、X"nn"
という形式で文字定数を書き表わす。ここで、n は0-9とA-Fの16進文字を表わす。nn は160回まで繰り返すことができる。ただし、nの個数は偶数とする。
16進桁の個数は奇数でもよい。
数字定数(numeric literal)は、固定小数点数でも浮動小数点数でもよい。
数字定数は、"0"から"9"までの数字と正号、負号、小数点からなる文字列である。この処理系では、数字定数の長さは1文字以上18文字以内である。数字定数を作る際には、下記の規則が適用される。
上記の規則に適合するが、引用符で囲まれている定数は、文字定数として扱われる。
標準データ形式の文字で表した数字定数の大きさは、利用者が指定した数字の桁数に等しいものとする。
さらに、16進数を数字定数として扱うことができる。このためには、
H"nn" という形式で文字定数を書き表わす。ここで、nは0-9とA-Fの16進文字を表わす。nn
は8回まで繰り返すことができる。ただし、nの個数は偶数とする。
浮動小数点数定数の書き方は下記のとおり。
仮数部と指数部の符号は、付けても付けなくてもよい。符号を省略すると、正の数として扱われる。
仮数部の長さは、1文字以上16文字以内である。仮数部には小数点を含めなければならない。
指数部は、Eに続けて符号を記した後に、1文字または2文字で指定する。ただし、符号は付けても付けなくてもよい。
浮動小数点定数の値の範囲は、0.54E-78から0.72E+76までである。この範囲から外れる値に対しては診断メッセージが出され、値はそれぞれ0または0.72E+76で置き換えられる。整数の数値定数が必要なときに、浮動小数点数の数値定数を使用しないように、注意すること。
![]()
各国語型定数は、計算機内の保存場所で同一サイズの文字で表示される、一連の各国語文字である。詳しくは、使用しているCOBOLシステムの各国語データ(Unicode)に関する文書を参照。
実行時の定数の値は、定数の翻訳時の値の、対応する実行時の値への変換の結果である各国語文字である。
表意定数の値は、COBOLシステムによって作り出される。その値を、下記の予約語を使用して参照する。表意定数として使用するときは、この予約語を引用符で囲んではならない。表意定数の単数形と複数形の値は同じであるので、どちらを使用してもよい。
表意定数の値、およびそれらを参照するために使用する予約語を表 2-1に示す。
| 定数 | 内容 |
|---|---|
| ZERO ZEROS ZEROES |
値"0" を表わす。文脈によっては1つ以上の文字"0" を表わす |
| SPACE SPACES |
計算機の文字集合から1つ以上の空白文字を表わす |
| HIGH-VALUE HIGH-VALUES |
文字の照合順序の最も高い文字を1つ以上表わす(拡張ASCII文字集合ではx"FF") |
| LOW-VALUE LOW-VALUES |
文字の照合順序の最も低い文字を1つ以上表わす(拡張ASCII文字集合ではx"00") |
| QUOTE QUOTES |
1つ以上の文字「" 」を表わす。数値定数をくくるために、原始プログラム中で引用符の代りにQUOTEまたはQOUTESを使用することはできない。したがって、"ABD" を表わすために、QUOTE ABD QUOTEと記すのは誤りである。 |
| ALL literal |
指定された文字が何文字か含まれる文字列を表わす。定数は、文字定数または 表意定数でなければならない。ただし、定数としてALLを指定することはできない。 |
| NULLS |
1つ以上の未設定ポインタ値
を表わす。USAGE POINTER を持つデータ項目、および値がNULLであるポインタ変数はどのデータ項目 も指さないことが保証される。 NULL値は環境間で変化し、通常、各環境用のCOBOL以外の言語で使用される等しい値と一致する。 |
表意定数が何文字かの文字列を表わす場合、その長さは文脈に応じて、COBOLシステムによって決定される。その際、以下の規則が順に適用される。
DISPLAY文の形式
3 における表意定数の使用は、その一般規則で説明する通り、特別な効果を持つ。
形式に定数が示されているところでは、どこでも表意定数を使用できる。ただし、数字定数に限定されている箇所では、表意定数はZERO(ZEROS, ZEROES)だけを使用できる。
表意定数のHIGH-VALUE(S)またはLOW-VALUE(S)を使用した場合、 , 実際に表意定数が表わす文字は、指定されている文字の照合順序によって決まる。(環境部の章の実行用計算機段落および特殊名段落の節を参照。)
表意定数を表わす予約語は、それぞれが独立した文字列である。ただし、「ALL 定数」は例外で、2つの別々の文字列から構成される。
表意定数のQUOTE/QUOTESの値は、指令のAPOSTおよびQUOTEの影響を受ける。
定数の長さが2桁以上ある表意定数の「ALL
定数」を数字項目または数字編集項目に関係付けることは、ANSI '85標準では廃要素に分類される。これはANSI標準の次の全面改訂時に削除される予定である。
このCOBOL処理系に組み込まれている方言は、この構文を全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。
標準COBOL定義の一環であるにもかかわらず、この構文はX/OpenのCOBOL言語定義からは明示的に除外されている。したがって、X/Openに準拠するCOBOL原始プログラムの中では、この構文を使用すべきではない。
定数名(constant-name)とは、データ部の78レベルのデータ記述項(data description entry)に指定した利用者語である。形式に定数が示されているところでは、どこにでも定数名を使用できる。定数名の働きは、そのデータ記述項に値として指定した定数を書いたのと同じ結果が得られることにある。形式に整数の定数が示されているところでは、整数の値をもつ定数名を使用することができる。例としては、レベル番号、区分番号、PICTURE文字列が挙げられる。
定数名は、定義した後でだけ使用できる。定数名は前方参照の対象とはならない。
連結式は、連結演算子で分離された2個の作用対象から成る。
特殊レジスタ(special register)は、COBOLシステムによって作成されるデータ項目または一時的な値である。特殊レジスタを参照するには、対応する名前または式を使用する(表 2-2参照)。 その際、以下に示す特別な規則が適用される。また、特殊レジスタには暗黙のデータ記述(PICTURE)が想定される。
| 特殊レジスタ名または式 | 暗黙のデータ記述PICTURE | 使用法 |
|---|---|---|
| |
USAGE IS POINTER | データ名-1の番地を示すポインタ値を生成する。この式は、使用する文で一般形式として明示的に指定する。データ名-1は、連絡節で01レベルおよび77レベルのデータ項目として
宣言される。
|
|
|
X(8) | 現在の日付が記録される。(この日付けは、COBOL 実行環境から提供される。) 次の形式をしている。MM/DD/YY MM は月を、 DDは日を、YY は年(1900年からの下2桁)を表わす数字である。CURRENT-DATEはMOVE文の送出し側としてだけ使用できる。 |
| DEBUG-ITEM | 可変長のグループ項目 | デバッギング節が実行された原因となった理由に関する情報を表す。詳しくは、言語リファレンス - 追加トピックのデバッグモジュールの章を参照。 |
|
|
9(9) | データ名-2によって使用される、記憶領域の現在の バイト数を示す値を生成する。この式は、数字データ項目を使用できるところであればどこでも使用できる。ただし、添字付けまたは部分参照は例外とする。 |
| LINAGE-COUNTER | レコード順ファイル記述の中にLINAGE句が存在する場合に生成される。整数1または、LINAGE句のデータ名1が参照するデータ項目と同じサイズの、符号のつかない整数を説明しているとされる。 | |
|
|
S9(4) COMP
|
以下が可能となる。
プログラムの実行を最初に開始するときには、そのプログラムのRETURN-CODEはゼロに設定される。手続き部の文の中で基本データ項目を参照できるところならば、どこでもRETURN-CODEをデータ名として使用できる。 |
|
|
X(1) | 文字の表現形式を2バイト文字から1バイト文字に戻すために使用する。該当する環境において用いる。 |
|
|
X(1) | 文字の表現形式を1バイト文字から2バイト文字に切り替えるために使用する。該当する環境において用いる。 |
|
|
X(8) S9(8) COMP |
これらの特殊レジスタを手続き部の中で参照できる。ただし、その値はゼロ(数字レジスタの場合)または空白(英数字レジスタの場合)である。 |
|
|
S9(4) COMP | SORT手続きを異常終了させるために使用できる。このレジスタに値16を入れると、次のRELEASEまたはRETURNの後でSORT処理は停止される。 |
|
|
9(5) COMP | EXAMINE...TALLYING文によって作成される情報が記録される。手続き部の文の中で基本データ項目を参照できるところならば、どこでもTALLYをデータ名として使用できる。 |
|
|
9(6) DISPLAY | 現在の時刻(24時間制)が記録される。 (この時刻はCOBOL 実行環境から提供される)次の形式をしている。hhmmsshh は時間を、 mmは分を、 ssは秒を表わす数字である。TIME-OF-DAY
は、MOVE文の送出し側としてだけ使用できる。 |
|
|
X(20) |
COBOL 翻訳集団がCOBOLシステムに投入された時刻と日付が記録される。次の形式をしている。 WHEN-COMPILEDはMOVE文の送出し側としてだけ使用できる。 |
|
|
X(20) |
COBOL 翻訳集団がCOBOLシステムに投入された時刻と日付が記録される。次の形式をしている。 WHEN-COMPILEDはMOVE文の送出し側としてだけ使用できる。 |
| S9(9) COMP |
XMLパーサと、XML PARSE文に記述された処理手順との間で状況を伝達するために使用される。XMLパーサは、各イベントのXML-CODEを解析の終了時に設定する。利用者は、通常のイベントの後に、処理手順のXML-CODEを-1にリセットすることができ、これにより、XMLパーサが利用者の操作による例外として終了したことが示される。これは、返されたXML-CODEの値、-1で示されるEXCEPTION XMLイベントとは区別される。 |
|
| X(30) |
XMLパーサからのイベント情報を、XML PARSE文に記述された処理手順に伝達するために使用される。XMLパーサは、制御を処理手順に渡す前に、XML-EVENT特殊レジスタをXMLイベントの名前に設定する。XML-EVENTはデータを受領する項目として使用することはできない。 |
|
|
XML解析中に定義され、USAGE NATIONALである文書片を含む。XML-NTEXTは、含まれているXML文書片のサイズの、初歩的な各国語データ項目である。XML-NTEXTのサイズは、実行時に動的に変化する。 XML PARSE文の演算数が各国語データ項目である場合、ATTRIBUTE-NATIONAL-CHARACTERおよびCONTENT-NATIONAL-CHARACTERイベントに関しては、XMLパーサは、XML-NTEXTをイベントに関連づけられた文書片に設定した後で、制御を処理手順に渡す。 XML-NTEXTが設定されている場合、XML-TEXT特殊レジスタのサイズは0となる。どの時点でも、サイズが0でないのは、XML-NTEXTとXML-TEXT特殊レジスタのいずれかのみである。 XML-NTEXTに含まれる各国語文字の数を決定するには、LENGTH関数を使用すること。 XML-NTEXTは、受領する項目としては使用できない。 |
||
|
クラス文字である文書片を内包するためのXML解析中に定義される。XML-TEXTは、内包されるXML文書片のサイズの、初歩的な文字データ項目である。XML-TEXTのサイズは、実行時に動的に変化する。 XML PARSE文の演算数が文字データ項目である場合、ATTRIBUTE-NATIONAL-CHARACTERおよびCONTENT-NATIONAL-CHARACTERイベントを除き、XMLパーサは、XML-TEXTをイベントに関連づけられた文書片に設定した後で、制御を処理手順に渡す。 XML-TEXTが設定されている場合、XML-NTEXT特殊レジスタのサイズは0となる。どの時点でも、サイズが0でないのは、XML-NTEXTとXML-TEXT特殊レジスタのいずれかのみである。 XML-TEXTに含まれるバイト数を決定するには、LENGTH関数または、XML-TEXT用LENGTH OF特殊レジスタを使用すること。 XML-TEXT は、受領する項目としては使用できない。 |
| 1 | CURRENT-DATE特殊レジスタの内容の形式は、CURRENT-DATE指令の影響を受ける。 |
| 2 | LENGTH OF特殊レジスタは、Micro Focus 方言では英数字定数で続けても構わない。 |
| 3 | RETURN-CODE特殊レジスタのサイズは、XOPEN指令およびRTNCODE-SIZE指令の影響を受ける。 |
| 4 | XML-TEXT および XML-NTEXT の内容は、XML-EVENTの内容により変化する。詳しくは、表 2-3 を参照。 |
| XML-EVENTの内容 | XML-TEXTまたはXML-NTEXTの内容 |
|---|---|
| ATTRIBUTE-CHARACTER | 属性値の中の、定義済みの参照に対応する単一の文字。 |
| ATTRIBUTE-CHARACTERS | 引用符またはアポストロフィに囲まれた値。値に参照が含まれる場合は、属性値に含まれる文字列の一部でもあり得る。 |
| ATTRIBUTE-NAME | 属性名で、=の左にある文字列。 |
| ATTRIBUTE-NATIONAL-CHARACTER | XML PARSE文中の一意名-1で指定されたXML文書の種類にかかわらず、XML-TEXTは空(から)で、XML-NTEXTは、数字参照に対応する単一の各国語文字を含む。 |
| COMMENT | 左側の文字列、"<!--"と右側の文字列、"-->"の間の注釈テキスト。 |
| CONTENT-CHARACTER | 要素内容の中の、定義済みの参照に対応する単一の文字。 |
| CONTENT-CHARACTERS | 開始タグと終了タグの間の要素内容。ここに他の要素への参照が含まれる場合は、要素内容中の文字列の一部でもあり得る。 |
| CONTENT-NATIONAL-CHARACTER | XML PARSE文中の一意名-1で指定されたXML文書の種類にかかわらず、XML-TEXTは空(から)で、XML-NTEXTは、数字参照に対応する単一の各国語文字を含む(1)。 |
| DOCUMENT-TYPE-DECLARATION | 左右の文字列、 "<!DOCTYPE"および">"を含む、文書種別宣言全体。 |
| ENCODING-DECLARATION | 引用符またはアポストロフィに囲まれたXML宣言中の符号化宣言の値。 |
| END-OF-CDATA-SECTION | つねに文字列、"]]>"を含む。 |
| END-OF-DOCUMENT | 空で、サイズは0。 |
| END-OF-ELEMENT | 終了要素タグまたは空要素タグの名。 |
| EXCEPTION | 走査が完了した文書の一部で、例外が検出された場所までの部分(2)。特殊レジスタ、XML-CODEは、例外を示す一意のエラー符号を含む(3)。 |
| PROCESSING-INSTRUCTION-DATA | 右側の文字列、"?>"を除く、処理指示の残りの部分。ただし、直後の空白文字は含まれるが、直前の空白文字は含まれない。 |
| PROCESSING-INSTRUCTION-TARGET | 処理指示の対象の名で、処理指示の左側の文字列、"<?"の直後に置かれる。. |
| STANDALONE-DECLARATION | 引用符またはアポストロフィに囲まれた、XML宣言中の独立した宣言の値。 |
| START-OF-CDATA-SECTION | つねに、文字列、"<
代わりに、他の表を記述する指標を使用してもよい。ただし、2つの表に含まれる要素の数が同じであることが条件である。
同じ一意名の中で、添字と指標を混在させることができる。
NOBOUND指令を指定した場合は、この一般規則は実行時に適用されない。
添字が浮動小数点項目の場合、その値は最も近い整数に丸められるか、または、端数が切り捨てられる。
整数-2または
整数-3を指定した場合、添字の値は次のようにして決定される。演算子に"+" を指定した場合は、
整数-2または
整数-3の値が追加される。演算子に"-" を指定した場合は、
整数-2または
整数-3の値が差し引かれる。
これらは、指標名-1を用いて指定した値を用いて指定した値に対して行われる。
または、データ名-2を用いて指定した値に対して行われる場合もあり得る。
指標付け(indexing)を指定して、同種の要素からなる表の中の個々の要素を参照できる。指標(index)を付けるには、表を定義する際に、該当するレベルにINDEXED BY(指標付き)句を指定する。INDEXED BY句を用いて付けた名前を指標名(index-name)といい、付けた指標を参照するために使用できる。指標の値は、対応する表または別の表の中の要素の出現番号を表わす。指標名は、表の参照に使用する前に初期化しておく。指標名に初期値を与えるには、SET(設定)文を指定する。
添字は単なる数字データ項目または定数である。これに対し指標は、表中要素の出現番号を表わす特別な型の項目である。その表現形式は何通りかある。指標の内容は数値とはみなされない。
直接指標付け(direct indexing)は、添字と同じ形式で指標名を使用する方法である。相対指標付け(relative indexing)は、指標名の後ろに演算子"+" または "-" と符号の付かない整数を書き、その全体を一対の左かっこと右かっこで囲んで、表要素のデータ名の後ろに続けた形式で指標名を使用する方法である。相対指標付けによる出現番号は次のようにして決定される。演算子に"+" を指定した場合は、指標の値によって表される出現番号に定数の値が追加される。演算子に"-" を指定した場合は、指標の値によって表される出現番号から定数の値が差し引かれる。複数個の指標を用いるときは、データ構造の階層の上位のものから順に書く。
INDEXED BY句を指定することによってだけ、表に指標を付けることができる。
Aある表用に指定した指標を、他の表に適用できる。ただし、どちらの表も要素の数が同じであることが条件である。
指標付きの表の要素を参照する文を実行するとき、その表要素の指標名で参照される指標の値は、1から表要素の反復回数の最大値の範囲を外れてはならない。この制限は、相対指標付けの結果として得られる値にも当てはまる。
NOBOUND指令を指定した場合は、この一般規則は実行時に適用されない。
データ名には、指標名を3つまで指定できる。
データ名には指標名を7つまで指定できる。
データ名には指標名を16個まで指定できる。
指標付けの一般形式は、添字付け節に記した一般形式に含まれている。
関数一意名とは、関数を評価した結果として得られるデータ項目を一意に参照する名前である。この名前は、文字列と分離符を構文的に正しく組み合わせて付ける。

ただし、以下の場合を除く。
また、利用者定義関数に対する同規則は、手続き部の章のパラメータおよび返却する項目への準拠性で解説する。
各国語の関数に対しても指定できる。
注:引数の有無にかかわらず、参照される関数(RANDOM関数など)については、正しく解釈されるよう、符号化に注意が必要である。以下に関数の例を示す。
FUNCTION MAX (FUNCTION RANDOM (A) B)
Aは、、RANDOM関数の引数と見なされる。このような関数で、AをMAX関数の2番めの引数とする場合は、以下のいずれかのように書かれなければならない。
FUNCTION MAX (FUNCTION RANDOM () A B) または
FUNCTION MAX ( (FUNCTION RANDOM) (A) B) または
FUNCTION MAX (FUNCTION RANDOM A B)
組み込み関数名-1が指定されている場合は、一時データ項目は、基本データ項目であり、その記述項と項類は組み込み関数の定義により指定される。この定義については、手続き部 - 組み込み関数の章の関数の定義で解説する。
関数プロトタイプ名-1が指定されている場合は、一時データ項目の記述、字類、および項類は、関数プロトタイプ名-1で指定された関数プロトタイプの手続き部見出しのRETURNING句で指定された項目の連絡節の記述により指定されたものである。
利用者定義関数については、手続き部の章の手続き部見出しおよびパラメータおよび返却する項目の準拠性にある。
整数の引数をとる関数では、浮動点引数が与えられた場合は、もっとも近い整数に値が丸められる。または、小数点以下は切り捨てられる。
関数プロトタイプ名-1が指定されている場合は、関数プロトタイプ名の適用規則で解説されている規則が指定される。その他に、環境部の章のリポジトリ段落節で解説する規則も指定される。
関数プロトタイプ名-1が指定されており、起動される関数はCOBOL関数である場合は、手続き部の章の手続き部見出し節の解説に従って実行される。
組み込み関数名-1が指定されている場合は、手続き部 - 組み込み関数の章の解説に従って実行される。
関数プロトタイプ名-1が指定されており、起動される関数はCOBOL関数である場合は、使用しているCOBOLシステムのマニュアルのインターフェイスに関する記述における定義に従って実行される。
部分参照(reference modification)とは、データ項目の一部を切り出してデータ項目を定義することである。切り出す範囲はデータ項目中の起点となる文字位置(切り出す文字の左端文字位置)と長さによって指定する。
一意名-1 ( 左端文字位置 : [長さ] )
外部浮動小数点数、
数字編集、英字、英数字編集のどれかであるとき、部分参照の目的上、そのデータ項目は同じ大きさの英数字データ項目として再定義されたものとして操作される。
浮動小数点数形式の式では、結果は丸められる。固定小数点数形式の式では、結果は切捨てられる。
浮動小数点数形式の式では、結果は丸められる。固定小数点数形式の式では、結果は切捨てられる。
注: 左端文字位置と長さの評価により生成された値が正しいかどうかの確認は行われない。値が、この規則で述べられた制限に適合しない場合は、未定義の結果が生じ、他のデータ項目が破壊される可能性がある。
外部浮動小数点数
のものは、字類も項類も英数字とみなされる。
一意名(identifier)とは、データを一意に参照するために、文字列と分離符をいくつか 並べたものである。
プロパティ名-1 OF 一意名-1
行内呼出し-1
一意名-2 オブジェクトビュー-1

オブジェクト属性はオブジェクトからの情報の読出しおよびオブジェクトへの情報の書戻しを行うための特別な構文を形成する働きをする。オブジェクト属性にアクセスする仕組みとして、オブジェクト読出しメソッドとオブジェクト設定メソッドがある。オブジェクト読出しメソッドには、GET PROPERTY句を用いて明示的に定義したメソッドと、PROPERTY句を用いて記述されたデータ項目のために暗黙的に生成されるメソッドとがある。オブジェクト設定メソッドには、SET PROPERTY句を用いて明示的に定義したメソッドと、PROPERTY句を用いて記述されたデータ項目のために暗黙的に生成されるメソッドとがある。
行内呼出し-1は行内メソッド呼出し節で定義される。
オブジェクトビュー-1はオブジェクトビュー節で定義される。
番地指定子はデータ番地一意名節およびプログラム番地一意名節で定義される。
.各条件名は一意であるか、または修飾、指標付け、添字付けによって一意にしなければならない。条件名を一意にするために修飾する場合は、関連する条件変数を最初の修飾語として使用できる。修飾する場合、条件変数に関連する名前の階層系列または条件変数自体を使用して、条件名を一意にする。
条件変数を参照するのに指標付けまたは添字付けが必要な場合は、その条件名を参照するときにも、同じ組合わせの指標付けまたは添字付けを使用する。
条件名の修飾、指標付け、添字付けの組合わせの形式と制限は、一意名の場合のデータ名-1を条件名-1と置き換えたものと同じである。
一般形式において条件名というときは、必要に応じて修飾、指標付け、添字付けしたものを含む。
行内メソッド呼出しは、メソッドの呼出しにより返された一時データ項目を参照する。

行内メソッド呼出しは、適切な形式で実行されたINVOKE文により返された一時一意名と同じ字類、項類、および内容の一時データ項目を参照するものとする。INVOKE文の例を以下に示す。
INVOKE 一意名-1 定数-1 USING 引数 RETURNING 一時一意名ここで、
INVOKE 一意名-1 定数-1 RETURNING 一時一意名
INVOKE 字類名-1 定数-1 USING 引数 RETURNING 一時一意名
INVOKE 字類名-1 定数-1 RETURNING 一時一意名
オブジェクトビューにより、オブジェクト参照が指定された記述を持っているように取り扱われるようになる。実行時に、この記述が有効かどうか、オブジェクトが検査される。

データ番地一意名は、データ項目の番地を含む一意のデータ項目を参照する。
ADDRESS of 一意名-1

一意名-1または定数-1が指定される場合は、COBOL言語の概念の章のCOBOLの語節の解説に従って、この値を使用して参照先プログラムが識別される。
COBOLの原始要素には、下記の4種類の明示指定と暗黙指定がある。
COBOL原始要素プログラム中では、手続き部の文で、データ項目を明示的にも暗黙的にも参照できる。 明示参照(explicit reference)とは、手続き部の文に参照対象項目の名前を書いた場合、またはCOPY(複写)文、
REPLACE文、
INC文、または++INCLUDE文
を実行して参照対象項目の名前を手続き部に複写してきた場合の参照をいう。 暗黙参照(implicit reference)とは、手続き部の文に参照対象項目の名前を書かないでデータ項目を参照することをいう。
PERFORM(実行)文を実行する際にも、暗黙参照が発生する。これは、PERFORM文に関連する制御機構がVARYING句、AFTER句、UNTIL句に指定された指標名または一意名によって参照される、指標またはデータ項目を初期化したり変更したり評価したりした場合である。このような暗黙参照は、データ項目が命令の実行に係わるときだけ行われる。
制御の流れでは、書かれている順に文から文へと制御が移行する。ただし、この順序より優先される制御の明示移行が存在する場合、または制御を渡すことのできる次の実行可能な文が存在しない場合を除く。文から文への制御の移行は、手続き部文がとくに書かれていなくても行われる。したがって、制御の暗黙移行と呼ばれる。
COBOLには、暗黙的な制御移行の機構を明示的にも暗黙的にも変更する手段が備わっている。
制御の暗黙移行は、連続する完結文および連続する文の間で起こるほか、手続き分岐文を実行することなく通常の制御の流れを変えるときにも起こる。文から文への制御の流れを暗黙のうちに変更する方法には、以下のものがある。
注:その宣言部分の節に暗黙に制御が移る。この宣言部分の節が実行された後で、暗黙のうちに制御が戻る(上記1.を参照)。
USE AFTER ERROR PROCEDURE ON ファイル名.
IF 状態キー-1 >= 3
DISPLAY エラーメッセージ UPON CONSOLE
STOP RUN.
エラーメッセージの定義については、エラーメッセージを参照。
制御の明示移行とは、手続き分岐文または条件文を実行することによって、制御の暗黙移行の機構を変えることをいう。文の間の制御の明示移行は、手続き分岐文または条件文を実行することによってだけ引き起こされる。完結文の間の制御の明示移行は、IF(判断)文のNEXT SENTENCE(次の完結文)句またはSEARCH(表引き)文を実行することによってだけ引き起こされる。
手続き分岐文のALTER(変更)文を実行することは、直接的に制御の明示移行を引き起こす訳ではなく、関連するGO TO(飛び越し)文を実行するときの制御の明示移行に影響する。手続き分岐文のEXIT PROGRAM(プログラムの出口)文は、呼ばれたプログラムの中で実行されると、制御の明示移行を引き起こす。
「次の実行完結文」(next executable sentence)という用語は、上記の規則に従って制御が暗黙のうちに移されるか、またはNEXT SENTENCE句によって明示的に制御を移される、次のCOBOL完結文を指すために用いる。次の実行完結文は、現在の完結文を終了させる分離符の終止符の直後の完結文である。
「次の実行文」(next executable statement)という用語は、上記の規則および手続き部の各言語要素に関連する規則に従って制御が移される、次のCOBOL文を指すために用いる。
以下の場合には、次の実行文は存在しない。
GOBACK(復帰)文、
EXIT
METHOD(メソッド出口)文、
EXIT
FUNCTION(関数出口)文、
またはEXIT PROGRAM(プログラム出口)文。
属性は、暗黙的にも明示的にも指定できる。明示的に指定した属性を、明示属性(explicit attribute)という。属性を明示的に指定しないと、省略時の解釈が取られる。このような属性を、暗黙属性(implicit attribute)という。
たとえば、データ項目の用途(usage)は指定しなくてよい。指定のないデータ項目の用途はDISPLAY(表示用)と解釈される。
PICTURE文字列が"G"または"N"を持たないを除く。この場合、データ項目の用途はDISPLAY-1である。
範囲符は、手続き部のある種の文(範囲明示文)の範囲を区切る。これには、明示範囲符と暗黙範囲符の2種類がある。
有効な明示範囲符には以下のものがある。
END-ADD
END-PERFORM
END-ACCEPT
END-CALL
END-CHAIN
END-COMPUTE
END-DELETE
END-DISPLAY
END-DIVIDE
END-EVALUATE
END-IF
END-MULTIPLY
END-READ
END-RETURN
END-REWRITE
END-SEARCH
END-START
END-STRING
END-SUBTRACT
END-UNSTRING
END-WRITE
注:COBOL言語の方言が異なると、範囲符と対になる範囲明示文が異なることがあるので注意。
暗黙範囲符は下記の場合に発生する。
Copyright © 2002 Micro Focus
International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名は国際法によって保護されています。
![]() |
COBOL言語の概要 | 翻訳集団の概念 | ![]() |