GTM-MML4VXJ
Skip to main content

NetCOBOL 技術情報:トラブルシューティング

エラー

Windows x86

NetCOBOL

Q

COBOL JEFオプションを使用して翻訳した場合、「JMN1008I-S 日本語利用者語の中に日本語文字として使用できない文字があります。」というエラーが出力されます。

A

COBOLソースに日本語利用者語を使用した場合、翻訳時にメッセージJMN1008I-Sが出力されることがあります。COBOLの翻訳オプションNCW(SYS)を指定してCOBOLで利用可能な日本語利用者語の範囲を拡張するか、Interstage Charset Managerなどの文字コード管理製品を使用して文字コード変換方法を変更してください。

次のような要件がある場合は、Interstage Charset ManagerやADJUSTなどの文字コード管理製品を使用し、文字コードの変換方法を変更してください。

  • ホストシステムとの煩雑なデータ交換が必要である。
  • 複数のシステム(OS)で運用するプログラムの開発をしている。

この他の場合は、ソースプログラムを翻訳する際の翻訳オプションにNCW(SYS)を追加してください。NCWオプションの詳細については、NetCOBOL使用手引書をご参照ください。


【ご参考】 JMN1008I-Sのメッセージは、以下の要因で発生します。

要因1、COBOLの日本語利用者語として使用可能な文字の範囲外の文字を使用

システムで扱える日本語文字は、次の3つのグループに分けられます。

システムで利用可能な日本語文字とCOBOLで利用可能なグループの図

NetCOBOL JEFオプション使用時の省略値はNCW(STD)であるため、太枠で示した(a)のグループに含まれる文字のみ取り扱うことができます。(a)に含まれない文字を日本語利用者語に使用した場合、翻訳時にメッセージJMN1008I-Sが出力されます。

翻訳オプションにNCW(SYS)を指定することで、(b)のグループの文字まで取り扱うことができるようになります。

要因2、SJISからJEFへの文字コードの変換の結果、COBOLで取り扱えない文字へ変換

NetCOBOL JEFオプションを使用する場合、COBOLコンパイラはソースプログラムをSJIS/ASCIIからEBCDIC/JEFに変換してから翻訳します。

ソースプログラムのコード変換の図

SJISからJEFへのコード変換には、使用可能文字数が「SJIS < JEF」(JEFの方がより多くの文字を使用できる仕様)であることから複数のコード変換方法(注1)があります。

たとえば、83年JIS変更文字(246字)の変換では、以下のように結果が異なります。

  • SJIS(R90)->JEF、字形重視、246字のうち42字が要因1の(b)の領域に変換
  • SJIS(MS)->JEF、字形重視、246字すべてが要因1の(b)の領域に変換
  • 領域重視、246字すべてが要因1の(a)の領域に変換

使用文字および変換方法の選択によっては、JIS第1、第2水準の文字が(b)グループに含まれる文字に変換されるため、翻訳オプションがNCW(STD)の場合にメッセージJMN1008I-Sが出力されます。

NetCOBOL JEFオプションでは、Interstage Charset ManagerやADJUSTなどの文字コード管理製品がインストールされていない場合は、常にSJIS(R90)->JEF、字形重視の変換になります。文字コード管理製品がインストールされている場合は、文字コード管理製品の設定に依存しますので、文字コード管理製品により適切な変換方法を設定してください。

注1)コード変換方法については、Interstage Charset Manager/ADJUSTなどの文字コード管理製品のマニュアルをご参照ください。