表意定数

表意定数は、特定の定数値を指定および参照する予約済みの語です。表意定数のための予約語とその意味を次に示します。

ZERO/ZEROS/ZEROES
コンテキストに従って、次の 1 つを表します。
  • 数字のゼロ (0)
  • 非数字のゼロ (0) の 1 つ以上のオカレンス
  • IBM Extension
    ブール値 B"0"
    End of IBM Extension
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 Extension

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

End of IBM Extension
ALL リテラル
リテラルを構成する文字ストリングが 1 回または複数あることを表します。 リテラルは、ALL リテラル以外の非数字リテラルまたは表意定数でなければなりません。
ALL リテラル以外の表意定数を使用する場合には、ALL という語は余分であり、 読みやすくするだけの目的で使用します。 INSPECT、STOP、または STRING ステートメントの中で表意定数の ALL リテラルを使用してはなりません。
注: 表意定数 ALL リテラルが、数字または数字編集項目に関連した場合や、リテラルの長さが 1 より大きい場合、 それは古くなったエレメントであり、ANSI 規格の次の改訂から削除されます。
IBM Extension

変更の始まり ALL リテラルに使用できるリテラルは、ブール・リテラル、DBCS リテラル、または国別リテラルです。 変更の終わり

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

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

End of IBM Extension
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 Extension

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

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