表意定数値

表意定数値は COBOL システムによって生成され、下記の予約語を使用して参照される。これらの予約語は、表意定数として使用する場合は引用符で囲まない。表意定数の形式は単数形と複数形が同じであるため、どちらを使用してもよい。

表意定数の値およびそれらを参照するために使用する予約語を以下に示す。

表 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 リテラル リテラルを構成する文字列の 1 つ以上の文字を表す。リテラルは文字リテラル、

ISO2002MF 各国文字リテラル、または

ALL リテラル以外の表意定数のいずれかになる。

ISO2002MFXOPEN この文字リテラルおよび各国文字リテラルには、連結式も使用できる。

表意定数を指定する場合には ALL は不要であり、読みやすくするためにのみ用いる。
NULL、NULLS

1 つ以上の未設定ポインター

MFCOB370 または手続きポインター

を表す。USAGE POINTER

MFCOB370 または PROCEDURE-POINTER

を持つデータ項目、および値が NULL であるデータ項目は、どのデータ項目

MFCOB370 または手続き

のアドレスも表さないことが保証される。

NULL 値は環境によって異なり、通常は各環境用の COBOL 以外の言語で使用される等しい値と一致する。

表意定数が 1 つ以上の文字を含む文字列を表す場合、その長さは文脈に応じて COBOL システムが決定する。その際、以下の規則が順に適用される。

  1. ISO2002MFXOPEN 表意定数を連結式として指定している場合は、文字列の長さは 1 文字となる。
  2. 表意定数を VALUE 句内で指定した場合、または表意定数を他のデータ項目と関連付けた場合 (表意定数を他のデータ項目に転記したり、他のデータ項目と比較したりした場合など)、表意定数に指定した文字が 1 文字ずつ右方向に継ぎ足され、その長さが対応するデータ項目と等しいかそれより大きくなったところで止められる。その後、得られた文字列が右側から順次切り詰められ、残りの文字数が 1 または対応するデータ項目の長さのどちらか大きい方と等しくなったところで止められる。この処理は、データ項目と関連付けられる JUSTIFY 句が指定されている場合には、JUSTIFIED 句よりも先に独立して行われる。
  3. 表意定数が ALL リテラル以外の値である場合、文字列の長さは 1 文字となる。
  4. 文字列の長さはリテラルの長さとなる。

    MF DISPLAY 文の書き方 3 における表意定数の使用は、その一般規則で説明するとおり、特別な効果を持つ。

書き方にリテラルが示されている箇所では、任意の場所で表意定数を使用できる。ただし、リテラルが数値リテラルに限定されている箇所では、表意定数は ZERO (ZEROS、ZEROES) のみ使用できる。

表意定数の HIGH-VALUE(S) または LOW-VALUE(S) を使用する場合、各表意定数に関連付けられる実際の文字は、指定されているプログラムの文字照合順序によって決まる(「実行用計算機段落」および「実行用計算機段落」トピックを参照)。

表意定数を表す予約語は、それぞれが独立した文字列である。ただし、「ALL リテラル」は例外で、2 つの別々の文字列から構成される。

OSVSVSC2MF  QUOTE/QUOTES 表意定数の値は、APOST および QUOTE 指令の影響を受ける。

ANS85 長さが 2 桁以上ある表意定数の「ALL リテラル」を数字項目または数字編集項目に関係付けることは、ANSI'85 規格では廃要素に分類される。これは ANSI 規格の次の全面改訂時に削除される予定である。

MF この COBOL 処理系に組み込まれている方言は、この構文を全面的に使用できる。FLAGSTD 指令を使用すると、この構文の使用箇所をすべて検出できる。

XOPEN 廃要素の ALL リテラル構文は標準 COBOL 定義の一部であるが、X/Open の COBOL 言語定義からは明示的に除外されている。したがって、X/Open COBOL 準拠のソース プログラム内では、この構文は使用できない。