v60NumWithCharBehavior ビルド記述子オプションは、割り当てと比較で EGL が NUM 型を処理する方法に影響を与えます。
バージョン 7 から、EGL は、CHAR 値に対する割り当てまたは比較時に他の数値型を処理するときと同じ方法で NUM 型を方法で処理します。
v60NumWithCharBehavior ビルド記述子オプションが YES に設定されている場合は、EGL は、以前のバージョンと VisualAge® Generator で行っていた方法で NUM 型変数を処理します。動作の違いは微妙で複雑です。このオプションは、VisualAge Generator をエミュレートする必要がある場合のみ YES に設定する必要があります。詳しくは、このトピックの例を参照してください。
VisualAge Generator およびバージョン 6.0 では、データを移動および割り当てるときに、生成される COBOL プログラムに対する動作が異なります。VisualAge Generator では、数値が移動または割り当てられる前に数値の符号が変更されませんでしたが、バージョン 6.0 では符号が変更されていました。つまり、VisualAge Generator は修正なしのバイト移動を行い、バージョン 6.0 は、表示可能な NUM 値になるように符号を設定した後でバイト移動を実行します。ほとんどの場合、この違いはわかりませんが、上位ニブルに 16 進数 C (x'Cx') を持つバイトが NUM フィールドに含まれているとき、移動に影響を及ぼす可能性があります。したがって、望まれる結果が VisualAge Generator の動作を完全にエミュレートすることである場合は、追加のシンボリック・パラメーター VAGNUMWITHCHARBEHAVIOR も YES の値に設定する必要があります。
v60NumWithCharBehavior オプションは、spacesZero や blanksAsZero などの他のビルド記述子オプションの動作に影響を与えることがあります。 詳しくは、spacesZeroおよびblanksAsZeroを参照してください。
ほとんどの場合、v60NumWithCharBehavior ビルド記述子オプションを手動で設定する必要はありません。
if( "2009-03-26" > 0)
...
end
0 は比較のために "0" に変換されます。 バージョン 7 の動作では、0 は数値であり、"2009-03-26" は無効な数値であるため比較は失敗します。
num_var NUM = -4;
char_var CHAR(1);
char_var = num_var; // value of char_var is 't'
バージョン 7 の動作では、char_var の値は -4 です。