ILE COBOL 解説書

COBOL 語

COBOL 語は、文字、数字、ハイフン、および 下線のセットから成る文字ストリングでなければなりません。

(ただし、ハイフンおよび下線を先頭文字または最後の文字として使用することはできません。) ILE COBOL 言語では、通常、それぞれの小文字は対応する大文字と等価です。

COBOL 語には、次の 5 つのタイプがあります。

ソース・プログラム内に含まれる特殊文字語ではないすべての COBOL 語には次の規則が適用されます。

ユーザー定義語

以下に、ユーザー定義語と、その構成時に従うべき規則をリストします。

ユーザー定義語のタイプ
一般規則
英字名
クラス名
条件名
定数名
データ名
ファイル名
指標名
ロケール名
簡略名
プログラム名
(含まれているプログラム
および最外部プログラムは
PROCEDURE リンケージ規則
を使って呼び出される)
レコード名
ルーチン名
タイプ名
各語には、最低 1 つの英字が含まれていなければならない。
ライブラリー名
プログラム名
(最外部プログラムは
PROGRAM リンケージ規則
を使って呼び出される)
テキスト名
各語には、最低 1 つの英字が含まれていなければならない。 最初の 10 文字は固有でなければならない。
段落名セクション名
各語には、英字が含まれている必要はない
レベル番号: 01 〜 49、66、77、88
セグメント番号: 00 〜 99
各語は 1 桁または 2 桁の整数でなければならないが、固有である必要はない。 (セグメント情報は構文検査だけ実行される。)

各ユーザー定義語の機能は、それが現れる文節またはステートメントで説明してあります。

関連情報

ユーザー定義語を参照する際の制約

通常、ユーザー定義語は、上記のテーブルにリストしたタイプのいずれか 1 つに属していなければなりません。 さらに、ユーザー定義語は、属するタイプの中で固有でなければなりません。

一般規則には、以下の 2 つの例外があります。

ユーザー定義語が宣言されているプログラムのステートメントおよび記入項目は、次のユーザー定義語のタイプを参照できます。

次のユーザー定義語のタイプは、どの COBOL プログラムでも参照できます。

次のタイプの名前は、構成セクションで宣言されていれば、 構成セクションを含んだプログラム、またはそのプログラム内に含まれるすべてのプログラムのいずれかにあるステートメントおよび記入項目から、参照できます。

システム名

システム名は、システムにとって特定の 意味を持つように IBM によって定義された文字ストリングです。 システム名には次の 4 つのタイプがあります。

コンピューター名は、DBCS 文字で書くことができます が、その他のシステム名は書くことができません。

関数名

関数名とは、COBOL ソース・プログラムで使用される、一連の指定された語の 1 つです。

関数名は、ILE COBOL によって提供される、組み込み関数の値を判別するためのメカニズムを指定します。

語 LENGTH、RANDOM、SUM、および WHEN-COMPILED の場合を除き、 別のコンテキストでは関数名として使用されている語をプログラムの中でユーザー定義語、 システム名、またはコンテキストに依存した語として使用できます。

+----------------------------------IBM 拡張----------------------------------+

コンテキストに依存した語

コンテキストに依存した語は、予約語の規則に従 って形成された COBOL 語で、一般形式で指定されたように使用できます。

同じ語が、関数名、ユーザー定義語、またはシステム名として使用されることがあります。

ILE COBOL のコンテキストに依存した語は 付録 D, ILE COBOL 関数名およびコンテキストに依存した語のリストにリストされています。

+------------------------------End of IBM 拡張-------------------------------+

予約語

予約語は、COBOL ソース・プログラムで事前定義 した意味を持つ文字ストリングのことで、言語定義形式の指定のとおりにのみ 使用できます。

ILE COBOL の予約語は 付録 E, ILE COBOL 予約語リストにリストしてあります。

予約語には、次の 5 つのタイプがあります。

キーワード

キーワードとは、特定の文節記入項目、または ステートメント内で必要な予約語のことです。

オプショナル語

オプショナル語とは、読みやすくするために文節記入項目、またはステートメントの形式の中に含められる予約語のことです。 それらはプログラムの意味や実行に影響を与えることはありません。 オプショナル語は形式内では大文字で表されますが、主パスの下部に書かれます。

特殊文字語

特殊文字語には、次の 2 つのタイプがあります。

表意定数

表意定数とは、特定の定数値に名前を付けて、それを参照する予約語のことです。 表意定数のための予約語とその意味を次に示します。

ZERO/ZEROS/ZEROES
コンテキストに従って、次の 1 つを表します。

+----------------------------------IBM 拡張----------------------------------+

+------------------------------End of IBM 拡張-------------------------------+

SPACE/SPACES
1 つまたは複数のブランクやスペースを表しますが、これは非数字リテラルとして扱われます。 SPACES は、DBCS データ項目に対して使用した場合、1 つまたは複数の 2 バイト・スペースを表します。 SPACES は、国別データ項目に対して使用した場合、1 つまたは複数の単一バイト UCS-2 スペースを表します。
HIGH-VALUE/HIGH-VALUES
使用する照合順序の中で最高の順位を持つ文字が 1 つまたは複数あることを表します。 NATIVE および EBCDIC の照合順序では、その文字は X'FF' になり、STANDARD-1 および STANDARD-2 の照合順序では、その文字は X'07' になります。 それ以外の照合順序の場合、実際に使用される文字は、照合順序に依存します。 HIGH-VALUE は非数字リテラルとして扱われます。
LOW-VALUE/LOW-VALUES
使用する照合順序の中で最低の順序を持つ文字が 1 つまたは複数あることを表します。 NATIVE、EBCDIC、STANDARD-1、および STANDARD-2 の照合順序では、その文字は X'00' となり、 それ以外の照合順序の場合、実際に使用される文字は、照合順序に依存します。 LOW-VALUE は非数字リテラルとして扱われます。
QUOTE/QUOTES
1 つまたは複数の引用符文字があることを表し、非数字でなければなりません。 非数字リテラルを囲むために、QUOTE または QUOTES を引用符やアポストロフィの代わりに用いることはできません。

+----------------------------------IBM 拡張----------------------------------+

APOST がコンパイラー・オプションとして指定されるとき、 表意定数 QUOTE にはアポストロフィの EBCDIC 値が含まれます。

+------------------------------End of IBM 拡張-------------------------------+

ALL リテラル
リテラルを構成する文字ストリングが 1 回または複数あることを表します。 リテラルは、ALL リテラル以外の非数字リテラルまたは表意定数でなければなりません。

ALL リテラル以外の表意定数を使用する場合には、ALL という語は余分であり、 読みやすくするだけの目的で使用します。 INSPECT、STOP、または STRING ステートメントの中で表意定数の ALL リテラルを使用してはなりません。

注:
表意定数 ALL リテラルが、数字または数字編集項目に関連した場合や、リテラルの長さが 1 より大きい場合、 それは古くなったエレメントであり、ANSI 規格の次の改訂から削除されます。

+----------------------------------IBM 拡張----------------------------------+

ALL リテラルに使用できるリテラルは、ブール・リテラル、DBCS リテラル、または国別の 16 進リテラルです。

+------------------------------End of IBM 拡張-------------------------------+

+----------------------------------IBM 拡張----------------------------------+

NULL/NULLS
USAGE IS POINTER 文節、USAGE IS PROCEDURE-POINTER 文節、ADDRESS OF 句、または ADDRESS OF 特殊レジスターにより定義されたデータ項目には、 有効なアドレスが含まれていないことを示すために使用される値を表します。 NULL は、構文形式で明示的に許可されている場合にだけ使用できます。

ILE COBOL 言語では、NULL の値は定義されていません。

+------------------------------End of IBM 拡張-------------------------------+

ZERO、SPACE、HIGH-VALUE、LOW-VALUE、QUOTE、および NULL の単数形と複数形は等価なので、いずれを使用してもかまいません。 たとえば、DATA-NAME-1 が 5 文字のデータ項目の場合、 次のステートメントはどれも、DATA-NAME-1 に 5 桁のスペースを埋めます。

MOVE SPACE TO DATA-NAME-1
MOVE SPACES TO DATA-NAME-1
MOVE ALL SPACES TO DATA-NAME-1

「リテラル」が形式の中のどこにあっても、明示的に禁止されている場合以外は、表意定数を使用できます。 形式の中に数字リテラルがある場合には、使用できる表意定数は ZERO だけです。 表意定数は、それがある関数への引数となっている算術式の中以外においては、関数の引数として使用できません。

+----------------------------------IBM 拡張----------------------------------+

表意定数 ZERO はブール・リテラルとして使用できます。

+------------------------------End of IBM 拡張-------------------------------+

表意定数の長さは、プログラムのコンテキストによって決まります。次の規則が適用されます。

特殊レジスター

特殊レジスターとは、コンパイラーにより生成される記憶域に名前を付ける予約語のことです。 その主な用途は、特定の COBOL 機能が作成した情報を保管することです。 このような記憶域はおのおのが固定の名前をもっているので、プログラムの中で改めて定義する必要はありません。

この指定の一般的な形式では、他に制限がなければ、データ名または ID が指定されているところではどこでも、特殊レジスターを使用できます。 ただし、特殊レジスターはデータ名または ID と同一のカテゴリーであることが条件です。 修飾が許可されている場合は、特殊レジスターに固有性を与えるために修飾できます。

プログラムの制御が、CALL ステートメントによって、実行単位内で あるプログラムから別のプログラムに最初に移されると、コンパイラーは、特殊レジスター・フィールド を初期値に設定します。RETURN-CODE および SORT-RETURN 特殊レジスターは、 以下の場合、初期値にリセットされます。

その他のすべての場合、特殊レジスターが初期値にリセットされることはありません。 特殊レジスターは、前回に、プログラム制御が CALL ステートメントによって移された ときに保存された値のままです。

英数字の引数が許可されている場合は、特に禁止されていない限り、英数字レジスターを関数で指定できます。

英数字の引数が許可されている場合は、特に禁止されていない限り、英数字特殊レジスターを関数で指定できます。

それぞれの特殊レジスターについては、次に示されたページから始まるセクションに説明されています。

特殊レジスターには次のものがあります。

このレジスターは構文検査だけ実行されます。

特殊レジスター
ページ

DEBUG-ITEM
このレジスターは構文検査だけ実行されます。

LINAGE-COUNTER
"LINAGE-COUNTER 特殊レジスター"

+----------------------------------IBM 拡張----------------------------------+

ADDRESS OF
"ADDRESS OF 特殊レジスター"

DB-FORMAT-NAME
"DB-FORMAT-NAME 特殊レジスター"

LENGTH OF
"LENGTH OF 特殊レジスター"

LOCALE OF
"LOCALE OF 特殊レジスター"

FORMAT OF
"FORMAT OF 特殊レジスター"

RETURN-CODE
"RETURN-CODE 特殊レジスター"

SORT-RETURN
"SORT-RETURN 特殊レジスター"

WHEN-COMPILED
"WHEN-COMPILED 特殊レジスター"

XML-CODE
"XML-CODE 特殊レジスター"

XML-EVENT
"XML-EVENT 特殊レジスター"

XML-NTEXT
"XML-NTEXT 特殊レジスター"

XML-TEXT
"XML-TEXT 特殊レジスター"

+------------------------------End of IBM 拡張-------------------------------+


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]