ILE COBOL 解説書

数字オペランドと非数字オペランドの比較

数字と非数字の比較の規則は、次の表にあります。 オペランドのいずれかがグループ項目の場合、非数字比較の規則が適用されます。

表 21 は、非数字オペランド と比較できる項目を要約したものです。

表 22 は、数字オペランド と比較できる項目を要約したものです。

表 21 および 表 22 で使用されている記号は次のとおりです。


表 21. 非数字の第 2 オペランドと比較できる項目

第 1 オペランド 第 2 オペランド
GR AL AN ANE NE FC1 NNL DB DBE DA TI TS NL
非数字オペランド
グループ (GR) NN NN NN NN NN NN NN

NN NN NN NN
英字 (AL) NN NN NN NN NN NN NN




NLN
英数字 (AN) NN NN NN NN NN NN NN

NN NN NN NLN
英数字編集 (ANE) NN NN NN NN NN NN NN

NN NN NN
数字編集 (NE) NN NN NN NN NN NN NN

NU NU NU
表意定数 (FC1) NN NN NN NN NN






NL4
非数字リテラル (NNL) NN NN NN NN NN



NN NN NN NLN
DBCS 項目 (DB)3






NN NN


NLN
DBCS 編集項目 (DBE)3






NN NN



日付 (DA)3 NN
NN NN NU
NN

DT
DT
時刻 (TI)3 NN
NN NN NU
NN


DT DT
タイム・スタンプ (TS)3 NN
NN NN NU
NN

DT DT DT
国別 (NL) NN NLN NLN

NL4 NLN NLN



NL
数字オペランド
表意定数 ZERO (ZR) NN NN NN NN NN







数字リテラル (NL) NN NN NN NN NN



NU NU NU
外部 10 進数 (ED)2 NN NN NN NN NN NN NN

NU NU NU
2 進数 (BI)








NU NU NU
算術式 (AE)








NU NU NU
ブール・データ項目またはブール・リテラル (BO)3












内部 10 進数 (ID)








NU NU NU
内部浮動小数点 (IFP)3












外部浮動小数点 (EFP)3 NN3 NN3 NN3 NN3 NN3 NN3 NN3





浮動小数点リテラル (FPL)3













表 22. 数字の第 2 オペランドと比較できる項目

第 1 オペランド 第 2 オペランド
ZR NL ED BI AE BO ID IFP3 EFP3 FPL3
非数字オペランド
グループ (GR) NN NN NN2




NN3
英字 (AL) NN NN NN2




NN3
英数字 (AN) NN NN NN2




NN3
英数字編集 (ANE) NN NN NN2




NN3
数字編集 (NE) NN NN NN2




NN3
表意定数 (FC1)

NN2




NN3
非数字リテラル (NNL)

NN2




NN3
日付 (DA)
NU NU2 NU NU
NU


時刻 (TI)
NU NU2 NU NU
NU


タイム・スタンプ (TS)
NU NU2 NU NU
NU


数字オペランド
表意定数 ZERO (ZR)

NU NU NU NU3 NU NU3 NU3
数字リテラル (NL)

NU NU NU
NU NU3 NU3
外部 10 進数 (ED) NU NU NU NU NU
NU NU3 NU3 NU3
2 進数 (BI) NU NU NU NU NU
NU NU3 NU3 NU3
算術式 (AE) NU NU NU NU NU
NU NU3 NU3 NU3
ブール・データ項目またはブール・リテラル (BO)3 NU3



NU3



内部 10 進数 (ID) NU NU NU NU NU
NU NU3 NU3 NU3
内部浮動小数点 (IFP)3 NU3 NU3 NU3 NU3 NU3
NU3 NU3 NU3 NU3
外部浮動小数点 (EFP)3 NU3 NU3 NU3 NU3 NU3
NU3 NU3 NU3 NU3
浮動小数点リテラル (FPL)3

NU3 NU3 NU3
NU3 NU3 NU3

表 21 および 表 22 の注

1
ZERO と NULL を除くすべての表意定数を含む

2
整数項目のみ

3
IBM 拡張

4
SPACE の場合のみ

数字オペランドの比較

数字オペランドの代数値が比較されます。

非数字オペランドの比較

非数字オペランドの比較は、使用されている文字セットの照合順序 について行われます。

PROGRAM COLLATING SEQUENCE 文節が OBJECT-COMPUTER 段落に指定されている場合、SPECIAL-NAMES 段落の英字名文節に関係づけられている照合順序が使用されます。 そうでなければ、固有 EBCDIC 文字セットが使用されます。

各オペランドのサイズは、そのオペランドの文字の合計数です。 以下の 2 つの場合が考えられます。

両オペランドのサイズが等しい場合
2 つのオペランドの対応する位置にある文字どうしが、左端の文字から始めて右端の文字まで比較されます。

対応する文字どうしが最後まですべて等しければ、両オペランドは等しいと見なされます。

等しくない文字の組が検出されると、それら 2 つの文字の照合順序での相対位置が判定されます。 照合順序での位置が高い方の文字を含むオペランドが、より大きいオペランドであると見なされます。

両オペランドのサイズが等しくない場合
2 つのオペランドのサイズが等しくないときは、あたかも短い方のオペランドが、長い方のオペランドのサイズに合わせてその右端がスペースで拡張されているかのようにして、比較されます。

数字および非数字オペランドの比較

上記で説明した非数字比較の規則が適用されます。 さらに、数字オペランドと非数字オペランドを比較するときは、その USAGE は同じでなければなりません。 そのような比較においては、以下の規則も適用されます。

いずれかのオペランドがグループ項目であれば、上述の非数字比較の規則が適用されます。 そのほかに、次の規則があります。

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

ブール・オペランドの比較

ブール・オペランドは、[NOT] EQUAL TO 比較条件においてのみ使用されます。 ブール・オペランドは、非ブール・オペランドと比較することはできません。 ブール・データ項目およびリテラルは、1 文字位置の長さでなければなりません。 2 つのブール・オペランドが共にブール 1 またはブール 0 の値を持つ場合には、この 2 つのオペランドは同等です。

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

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

DBCS オペランドの比較

DBCS または DBCS 編集オペランドの比較の規則は、非数字オペランドの比較の規則と同じです。 その比較は、DBCS 文字の 16 進数値の 2 進数照合順序に基づいています。 OBJECT-COMPUTER 段落の PROGRAM COLLATING 文節は、この比較には影響を及ぼしません。

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

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

国別オペランドの比較

クラスが NATIONAL であるオペランドは、クラスが NATIONAL である別のオペランドと比較することができます。 このような比較の結果は、UCS-2 文字セットの 16 進数値の 2 進数照合順序に基づきます。 2 つのオペランドのサイズが異なる場合、短い方のオペランドの右側が、埋め込み文字 (Padding Character) コンパイル・オプションまたは等価の処理オプションに指定されている埋め込み文字によって埋められます。 デフォルトは UCS-2 の 2 バイト文字のスペース文字 (NX"3000") です。

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

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

国別オペランドと非国別オペランドの比較

クラスが NATIONAL であるオペランドは、英字データ項目、英数字データ項目、DBCS データ項目、非数字リテラル、または DBCS リテラルと比較することができます。

国別項目以外のデータ項目またはリテラルは、MOVE ステートメントの規則に従って、クラスが国別で、同じ論理的な長さである基本データ項目に移動された場合と同様に処理されます。 それから、変換後の値が国別オペランドと比較されます。 項目の長さが異なる場合、短い方の項目の右側が、埋め込み文字 (Padding Character) コンパイル・オプションまたは等価の処理オプションに指定されている埋め込み文字によって埋められます。 デフォルトは、非国別オペランドが 1 バイト文字の項目である場合には、UCS-2 の 1 バイト文字のスペース文字 であり、非国別オペランドが 2 バイト文字の項目である場合 には、UCS-2 の 2 バイト文字のスペース文字 (NX"3000") です。

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

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

日時オペランドの比較

日時クラスの項目と非数字オペランド (数字編集オペランドを除く) との比較 の場合は、日時項目は非数字項目であるかのように扱われます。

日時クラスの項目と数字編集オペランドまたは数字オペランドとの比較時には、日時項目は編集解除されます。 編集解除の結果、この項目は 1 つの整数値となります。 その後、この整数値は他のオペランドと数字として比較されます。

1 つの日時項目と別の日時項目との比較時には、これらの項目は最初に共通の日付形式、時刻形式、またはタイム・スタンプ形式に変換されてから比較されます。 形式リテラルの一部であるが変換指定子ではない文字 (たとえば / または - などの文字) は、日時比較にまったく影響を及ぼしません。

日時項目とタイム・スタンプ項目との比較時には、タイム・スタンプの日付の部分だけが考慮されます。 時刻項目とタイム・スタンプ項目との比較時には、タイム・スタンプの時刻の部分だけが考慮されます。

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

指標名と指標データ項目の比較

指標名または指標データ項目 (またはその両方) を含んだ比較は、次の規則に従います。

表 23 は、指標名および指標データ項目に関する有効な比較を示しています。

表 23. 指標名と指標データ項目についての比較

比較される オペランド 指標名 指標データ項目 データ名 リテラル 算術式
指標名 オカレンス番号を比較 変換せずに比較 オカレンス番号とデータ名を比較 オカレンス番号とリテラルを比較 オカレンス番号と算術式を比較
指標データ項目 変換せずに比較 変換せずに比較 使用不可 使用不可 使用不可


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