形象定数 とは、特定の定数値に名前を付け、それを参照する場合に使用する予約語です。 形象定数の予約語とその意味は、次のとおりです。
英数字を指定する必要がある文脈で形象定数 ZERO、ZEROS、または ZEROES を使用すると、英数字ゼロが使用されます。 国別文字ゼロを指定する必要がある文脈では、国別文字ゼロ (値 NX'0030') が使用されます。文脈が判別できない場合は、英数字ゼロが使用されます。
HIGH-VALUE は、英数字を必要とする文脈内では英数字リテラルとして扱われます。EBCDIC 照合シーケンスの英数字データでは、値は X'FF' です。その他の英数字データでは、値は有効になっている照合シーケンスによって異なります。
HIGH-VALUE は、国別文字を必要とする文脈で使用された場合には、国別リテラルとして扱われます。値は、国別文字の NX'FFFF' です。
文脈を判別できない場合は英数字文脈と見なされ、値の X'FF' が使用されます。
使用上の注意: あるデータ表現と別の表現との間の変換が行われることになる方法では、HIGH-VALUE (または HIGH-VALUE から割り当てられた値) は使用しないでください。X'FF' は有効な EBCDIC 文字を表しません。また、NX'FFFF' は有効な国別文字を表しません。英数字または国別の HIGH-VALUE 表現をもう一方の表現に変換すると、置換文字が使用されるようになります。例えば、X'FF' を UTF-16 へ変換すると、NX'FFFF' ではなく、1 つの置換文字が使用されます。
LOW-VALUE は、英数字を必要とする文脈内では英数字リテラルとして扱われます。EBCDIC 照合シーケンスの英数字データでは、値は X'00' です。その他の英数字データでは、値は有効になっている照合シーケンスによって異なります。
LOW-VALUE は、国別文字を必要とする文脈で使用された場合には、国別リテラルとして扱われます。値は、国別文字の NX'0000' です。
文脈を判別できない場合は、英数字文脈と見なされ、値の X'00' が使用されます。
QUOTE または QUOTES は、英数字を指定する必要がある文脈で使用された場合には英数字を表し、 国別文字を指定する必要がある文脈で使用された場合には国別文字を表します。引用符の国別文字値は NX'0022' です。アポストロフィの国別文字値は NX'0027' です。
英数字リテラルを囲むのに、QUOTE および QUOTES を引用符またはアポストロフィの代わりに使用することはできません。
リテラル が形象定数でない場合、ALL リテラル はそのリテラルを構成する文字ストリングの 1 つまたは複数のオカレンスを表します。
リテラル が形象定数の場合、ワード ALL は意味を持たず、読みやすさの目的でのみ使用されます。
CALL、INSPECT、INVOKE、STOP、または STRING の各ステートメントでは、形象定数 ALL リテラル を使用することはできません。
シンボリック文字 は常に英数字を表し、英数字から国別文字への暗黙の変換が定義されている場合にのみ、 国別文字を指定する必要がある文脈で使用できます。(例えば、受け取り項目が国別クラスの項目である MOVE ステートメントでは、国別文字を使用できます。これは、送り出し項目が英数字であり、受け取り項目が国別である場合は暗黙の変換が定義されるからです。)
NULL、ZERO、SPACE、HIGH-VALUE、LOW-VALUE、 および QUOTE の単数形と複数形は同義で使用できます。 例えば、DATA-NAME-1 が 5 文字のデータ項目の場合は、次の各ステートメントによって 5 つのスペースが DATA-NAME-1 に移動されます。
MOVE SPACE TO DATA-NAME-1 MOVE SPACES TO DATA-NAME-1 MOVE ALL SPACES TO DATA-NAME-1
COBOL の規則によって形象定数名の特定のスペルが許可されているときは、その形象定数名について 任意の代替スペルを指定することができます。
リテラル が構文図で現れている場所では、明示的に禁止されているところを除いて、どこでも形象定数を使用することができます。構文図の中で数字リテラルが現れるときは、 形象定数 ZERO (ZEROS または ZEROES) だけを使用することができます。 形象定数は、関数の引数として機能する算術式の中以外では、 関数の引数として使用できません。
形象定数の長さは、使用される文脈によって異なります。 次の規則が適用されます。