文字フィールドの DBCS データ

  1. OPM RPG/400 では、制御仕様書の 57 桁目 (透過性検査) により、RPG/400 コンパイラーが DBCS 文字を調べるために、文字リテラルおよび固定情報を走査 するかどうかを指定することができます。 コンパイラーが透過リテラルを走査するように指定し、 シフトアウトに続くアポストロフィで始まる文字リテラルが 透過性検査を通らなかった場合には、 そのリテラルが透過的でないリテラルとして 再解析されます。

    ILE RPG では、コンパイラーが文字リテラルに対して透過性検査を実行する かどうかを指定するオプションは制御仕様書にはありません。 文字リテラルにシフトアウト制御文字が入っている場合には、文字リテラル 内のシフトアウト文字の位置に関係なく、シフトアウト文字は DBCS データ の始めを示します。 コンパイラーは次のことを検査します。

    上記の条件が満たされなければ、コンパイラーは診断メッセージを出し、 リテラルは再解析されません。その結果、OPM RPG コンパイラーによって行われる透過性検査に通らない 文字リテラルが OPM RPG プログラムにあれば、ILE RPG ではこのような プログラムはコンパイル・エラーを受け取ります。

  2. OPM RPG/400 では、文字リテラルの中の シフトアウト制御文字とシフトイン制御文字で囲まれた中に連続した 2 個のアポストロフィが ある場合に、その文字リテラルが透過リテラルでなければ、連続した 2 個のアポストロフィは 1 個のアポストロフィと見なされます。以下のような場合、文字リテラルは透過リテラルはありません。

    ILE RPG では、文字リテラルの中の シフトアウト制御文字とシフトイン制御文字で囲まれた中に連続した 2 個の アポストロフィがある場合に、 アポストロフィは 1 個のアポストロフィとは見なされません。文字リテラルの中の 1 対のアポストロフィは、 シフトアウト制御文字とシフトイン制御文字で囲まれた中にない場合にだけ、 1 個のアポストロフィと見なされます。

  3. ILE RPG では、シフトアウト文字に対してリテラルの検査を 避けたい (すなわち、シフトアウト文字をシフトアウト文字として解釈したくない) 場合には、リテラ ル全体を 16 進リテラルとして指定する必要があります。例えば、リテラル 'AoB' がある場合 (ここで、'o' は シフトアウト制御文字を表す) には、 このリテラルを X'C10EC2' としてコーディングしなければなりません。