ASCII 文字と EBCDIC 文字のデータ表現の違いによる問題を避けるために、CHAR(EBCDIC) コンパイラー・オプションを使用します。
Windows ベースのワークステーションは ASCII ベースの文字セットを使用しますが、メインフレームは EBCDIC 文字セットを使用します。したがって、大半の文字が、次の表に示すように異なる 16 進値を持ちます。
| 文字 | ASCII の場合の 16 進値 | EBCDIC の場合の 16 進値 |
|---|---|---|
| '0' から '9' | X'30' から X'39' | X'F0' から X'F9' |
| 'a' | X'61' | X'81' |
| 'A' | X'41' | X'C1' |
| ブランク | X'20' | X'40' |
また、次の表に示すように、文字データの EBCDIC 16 進値に依存するコードは、文字データが ASCII 値を持つ場合、ほとんどが失敗してしまいます。
| 比較 | ASCII の場合の評価 | EBCDIC の場合の評価 |
|---|---|---|
| 'a' < 'A' | 偽 | 真 |
| 'A' < '1' | 偽 | 真 |
| x >= '0' | 真の場合、x が数字であるかどうかは示されない | 真である場合、x はおそらく数字 |
| x = X'40' | x がブランクかどうかはテストされない | x かどうかがテストされる |
このような違いがあるため、文字ストリングのソート結果は EBCDIC と ASCII では異なります。 多くのプログラムでは、これらの違いによる影響はありませんが、プログラムが一部の文字ストリングの正確なソート順序に依存する場合は、論理エラーの可能性にも注意する必要があります。EBCDIC 照合シーケンスに依存するプログラムをワークステーションに移植する場合は、PROGRAM COLLATING SEQUENCE IS EBCDIC または COLLSEQ(EBCDIC) コンパイラー・オプションを使用して、EBCDIC 照合シーケンスを取得することができます。