COBOL製品技術情報(FAQ)


AIX 上で Visual COBOL 移行後に全角文字が文字化けする

Visual COBOL のコンパイラは様々な文字集合で書かれた COBOL ソースに一律で対応するために、読み込んだソースコード行をいったん Unicode に変換してから構文解析を行っています。
文字定数中に書かれた文字も同様であり、これを構文解析後にオブジェクトコードやコンパイルリストに反映させる際に元の文字集合に逆変換します。この際に使用される変換機能は弊社製品の独自のものではなく OS 提供の iconv が使用されます。
IBM 拡張文字と NEC 選定文字の両方に存在する文字コードは、AIX日本語処理機能ユーザーズ・ガイド (リンク確認:2024/02/19) 「6.8.2 同一文字の処理」に記載されておりますように、IBM 拡張文字が優先的に選択されるため、NEC 選定文字のコードと異なるコードに変換されます。

例えば、Visual COBOL 上で NEC 選定文字「℡(0x8784)」を使用するためには、以下のように16進数で記述する必要があります。

       working-storage section. 
         01 test01 pic x(2) value x'8784'. 
       procedure division. 
         display test01. 
         display '℡'. 
         stop run.