質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
COBOL

COBOL(COmmon Business Oriented Langage)は、実務処理用に開発されたプログラミング言語です。

Q&A

解決済

2回答

8497閲覧

COBOL CNVDFで文字化けする

Chika

総合スコア12

COBOL

COBOL(COmmon Business Oriented Langage)は、実務処理用に開発されたプログラミング言語です。

0グッド

0クリップ

投稿2016/09/10 06:49

COBOLファイルをエクセルやら何やらと連携させたいという話です。

兎に角必要最低限しかインストールされていない環境ですが、(オフィスと連携させるモジュールがあるらしいのですが、それは使えませんでした)CNVDFは使えます。
そこでCNVDFでCSVにしてそこからVBで作ったモノを介してエクセル等と連携させることになりましたが、書き出したCSVが文字化けして困っています。
(小樽市の樽とか・・・)

たとえば住所表示のプログラムとかで表示させた時、COBOLオフコン上の画面では、問題無く表示されています。また、帳票を定義して印刷しても普通に表示されるそうです。
CNVDFを介した時だけ文字化けする、との事です。

外字テーブルが何らかの原因でクリアされているのでは、と思いましたが、「画面上で表示出来ている以上テーブルはあるはずだ」との事です。。

ちなみに私自身はCSV→VBの部分を受けており、COBOLファイル→CSVは別の者が受けています。且つ、私はCOBOLは不案内である上に環境も会社にしかない状態です。
漠然とした状態で申し訳ありませんが、お知恵をお借りしたく。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

iwamoto_takaaki

2016/09/10 10:45 編集

IBMの汎用機でCOBOLの業務をしていた者です。 CNVDFに関して知らなかったのでググッてみたら、富士通のオフコンのコマンドのようですが間違いありませんか? あと文字コードに関しての知識はありますか?
Chika

2016/09/10 13:27

担当者に確認しました。富士通だそうです。 JEFコードを使用しているようですね。当方はPC側なのでSJISとかならソコソコですが、JEFコード体系は詳しくありません。また、COBOL側の担当者もいまいち詳しい訳ではないようです。
guest

回答2

0

JEFの拡張漢字の変換のトピックということで、
状況から富士通のオフコン(PRIMERGY6000)ということで回答させて頂きます。

PCとの連携方法は3つにあります。

CNVDF
コマンド[CNVDF]時にコード変換を行いたい場合は、オフコン上にコード変換テーブルを用意する必要があります。

コマンド[GENCDTBL]でソースからコード変換テーブルをファイル[XCDCVTBL.XCRMLIB]に作成します。
作成したコード変換テーブルはコマンド[DSPCDTBL]で確認することが出来ます。
コード変換テーブルをクリアしたい場合はXCDCVTBL.XCRMLIBを削除します。

■コード変換テーブルを作成するためのソースファイルの記述ルール
例:1行目は固定
2,4行目は注釈で変換する文字を表示させています
3,5行目は先頭1文字スペースで変換させるコードを記述します

1.00 /DEFCDPR JEFKANA SJISMS
2.00 *樽
3.00 C3AE:924D
4.00 *喝
5.00 B3E5:8A85

※コード変換表は富士通のSoftwareから取得出来たりします。
http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/unyo05/unyo0423.html
↑ここにもある程度あります。SJISのJEF 順番になっていますので、コード変換テーブル用のソースを作る時は JEF:SJISの順番に換えてください。

ODBC

(オフィスと連携させるモジュールがあるらしいのですが、それは使えませんでした)

これはRDA-SVを使ったODBC経由での連携の事であると思います。
連携を行うための前提条件として

オフコン側
・RDA-SV/TCPのオプションを導入済み。(コマンド[DSPRDAT]で確認出来ます)
・連携したいファイル(PF)をコマンド[CTLSYST]→2.情報の設定にて追加を行う。

WindowsPC側
・RDA-SVのドライバーを入れる必要がある。
・管理ツール→データ ソース (ODBC)→データソースを設定する。

この連携方法だと拡張文字の変換もある程度カバーしてくれます。

FIMPORT/FEXPORT
オフコンのソースやファイルを、テキストやバイナリに変換してくれるコマンドです。
ソース→テキストは拡張漢字などもカバーしてくれます。
ファイル→テキストは日本語項目の排出・取込の際にフィールドの前後に'28''29'のコードを挿入しておく必要があります。

投稿2016/12/22 08:35

shinpia

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

IBMの汎用機でCOBOLの業務をしていた者です。

まずは、オフコン上で表示される表示される文字が変換で表示されなくなるのはごく普通のことです。アルファベットならいざしらず、漢字であればよく似た字を同じものと考えるのか、別の字と考えるのか、単なる誤字と捉えるのかなどかなり複雑な問題の上に成り立っており、変換が出来ない字というのが山程あります。

EBCDIC->sjisの変換を指定たことがある人が言っていたのですが・・・
変換時に問題があることが多く、問題があった文字を1つずつ変換テーブルを登録していたと言ってました。

今回のケースでも、何らかの理由でJEFコードとSJISが対応していないことから問題が起こっていると思われます。
バイナリエディタで変換が出来ていない文字のJEFコードを確かめ、SJISに変換出来るようにする必要があると思います。

JEFコードのマップですがこのようになっているようです。
まず、JEFコードですが、SJISの第一水準漢字・第二水準漢字・非漢字には対応しているようですが、それ以外の漢字はそれぞれの文字の対応になっているようです。

まずは、変換元のコードがこの範囲に入っているかを確認して下さい。

たとえは「樽」の字であれば、このページで調べるとSJISコード"924d"で対応するJEFコードは”70C3”と”C3AE”が挙げられています。”C3AE”はJIS第一水準漢字ですが、”70C3”はJEF拡張漢字です。私の環境では両方の字体を確認出来ませんが、CNVDFの仕様はどちらも通しているのでしょうか?確認する必要があると思います。

さらに、このサイトの樽の字は、Wikipediaの「小樽市」と違う字が表示されています。
この字はSJISでは、異字体を認めていないようなので(参照:JIS X 0213: 2004)、変換がうまくいかない可能性があります。

他には、外字登録のエリアを使っていたら、どのように変換すべきか対応を考える必要があります。

ということで、SJISに変換可能な文字に変換する同じ編成のファイルを用意する必要があると思います。

ところで、COBOLに反応して答えましたが、COBOLは全く関係ありません。文字コードの話でした。(笑

投稿2016/09/10 16:41

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chika

2016/09/11 00:09

オフコンから書き出す部分での話でしたのでCOBOL区分でしていました。 (担当者はどうか知りませんが)こちらも今回初めてオフコンでの文字コードがJEFコードなんていうモノだと知った次第でした。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問