• 締切済み

<COBOLでのSJISファイル出力について>

<COBOLでのSJISファイル出力について> COBOL(開発環境はNETCOBOLです。)にて以下のような処理は可能でしょうか? 1.SJISで記載されたファイルを読み込む。 2.1のファイル内の全角カナについて半角カナに変換する。   ※数値項目などは特に変換しない。 3.2で返還した項目を置換後、再びSJISファイルとして出力する。 COBOL・文字コード共に理解が浅く答えが見つけられない状態です。 可能・不可能だけでもご教授頂けると大変助かります。 申し訳ありませんがよろしくお願いいたします。

みんなの回答

回答No.2

はじめまして、通るすがると申します。 COBOLは基幹業務系の開発言語なのであまりそのような制御プログラミング的な ことは行わないほうがいいと思います。第一に、デバックするときどのように確認 するのですか? display命令を多様して中身を確認した場合、場合により文字化け して確認できない可能性もあるかと思います。 おそらく、NETCOBOLということは開発環境は,EUC、UTF-8系の文字 コードを利用した環境かと思います。 通常そのような処理の場合は、ジョブ制御言語(js、JCL、シェルなど)で、一旦 開発環境の文字コードに置き換えたファイルを作成し、そのファイルをCOBOLで 作成したプログラムで全角半角制御などを行い、その開発環境にあったコードで別ファ イルへ出力後、ジョブ制御言語にて目的のコードに変換するように考えるのが妥当かと 思います。

  • seastar3
  • ベストアンサー率69% (99/142)
回答No.1

REDEFINES句を使って2バイト刻みのテーブルを作り、自作関数で文字列変換することになるでしょう。 シフトJISは、簡易的に16進数で8200(10進数で33024)以上の文字コードが全角文字と判断できます。 ただ、コード表を見ると半角カタカナは、小文字(ァィゥェォなど)を先頭にまとめていますが、シフトJISは大文字と小文字と交互(アァイィウゥエェオォなど)に並べています。単純に文字コードから33万ほど引けばいい訳ではないようです。 したがって、全角カタカナテーブルと添字を対応した半角カタカナテーブルを作って、全角カタカナの添字を使って対応した半角カタカナを拾ってくるような処理を組み立てることになるでしょう。 全角に戻すときもそのテーブルを活用できるでしょう。

関連するQ&A