MOVE および算術演算の不定の結果

Enterprise Developer および RM/COBOL では、数字と英数字のデータ項目を含む MOVE 文、算術演算、および比較のそれぞれの結果が異なります。

このような非互換性のほとんどは、関連するデータ項目を再定義するか、比較を再コーディングすることで解決できます。Enterprise Developer で英数字から数字へのデータ項目の MOVE 文を含むプログラムをサブミットすると、このことを示す警告メッセージが表示されます。

次のデータ項目および手続き文を含むソース プログラムをサブミットすると、指定したテストは実行時に失敗します。

 01 numeric-field        pic 9(5). 
 procedure division. 
     move "abc" to numeric-field. 
     if numeric-field = "00abc" 
         ....

RM コンパイラ指令が設定されている場合、Enterprise Developer では、数字項目を右揃えの英数字項目として扱うことで、英数字から数字への MOVE に関する RM/COBOL の動作を部分的にエミュレートします。ただし、RM/COBOL ではリテラル ABC は数字として扱われ、00ABC は数字項目に配置されるため、上記の例は依然として失敗します。Enterprise Developer で文を正常に実行するには、ソース プログラムのテストを次のように修正します。

     if numeric-field = " abc"

修正後に、ソース プログラムを再度サブミットします。