表意定数

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

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

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

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

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

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

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

End of IBM Extension
表意定数の長さは、プログラムのコンテキストによって決まります。次の規則が適用されます。
  • 表意定数がデータ項目と関連している場合 (例えば、表意定数を他の項目へ移動するか、他の項目と比較する場合)、表意定数の文字ストリングの長さは 1 になるか、 または関連したデータ項目内の文字位置の数 (いずれか大きい方) に等しくなります。
  • ALL リテラル以外の表意定数が別のデータ項目と関連していない場合 (例えば、STOP、STRING、または UNSTRING ステートメントで使用する場合)、 文字ストリングの長さは 1 文字です。