dポイントプレゼントキャンペーン実施中!

汎用機(ACOS-4)でCOBOLを使って開発を行っている者です。
INファイルのある項目を全角変換し、
OUTファイルに出力するプログラムを作成しています。
ただ困った事に変換元の項目の内容が
半角のデータ、全角のデータ、半角全角が混在しているデータもあるのです。
現在は項目の中に半角スペースの文字コードが存在すれば全て半角とし、
以外は全て全角と判断しています。
もちろん項目中のデータが全て埋まっている場合や、
半角全角が混在しているデータについては文字化けを起こしています。

どなたかこのような変換について良い方法があればご教授願います。
宜しくお願い致します。

A 回答 (2件)

文字コードは何になりますでしょうか?


ACOSだとEBCIDIC/JIPSになるのでしょうか?

昔、富士通系の汎用機で開発をしていたときは、EBCIDIC(日本語コードは不明、JEF?)だったのですが、全角文字列の前後にシフトコード(そのときは16進数で28H,29H)が入っていました。そこで、28Hが出てきたところから29Hまでを全角として処理していました。
シフトコードが入っているならば同様の処理をすればよいと思うのですが、かなり昔の記憶なので自信が有りません。
参考URLは「EBCDIC シフトコード」で検索してヒットしたところです。

参考URL:http://www.bukkyo-u.ac.jp/mmc01/naito/articles/1 …
    • good
    • 0
この回答へのお礼

早速の回答をいただきありがとうございます。
汎用機のみの入力であれば、root139さんのおっしゃる通りなんですが、
実はこのデータの登録は汎用機の画面だけではなく、
数箇所のサーバーからそれぞれの画面で登録された内容がそれぞれの伝送手段で登録されているのです。
前後にシフトコードがあって半角、全角混在しているものもあれば、
シフトコードが無いのに全角文字が入っているものもあります。

「元々の仕様が統一されていない」と言ってしまえばそれまでなんですが、
今更しょうがないですよね。

root139さんのリンクは何かヒントになるような気がします。もうちょっと勉強してみます。
ありがとうございました。

お礼日時:2004/01/26 22:45

#1の方が書いておられますが、まず全角データと半角データの切り分けをACOS-4でどのように行っているかを見分ける必要が有ります。


ようは、話し言葉を書く際に「」で囲いますよね。
それと同じで、何か特定の文字列で全角の開始と
終了がかかれているはずです。それを見つけて
始まりの文字列が出てくるまでは、ふつうに半角から全角へのコード変換を行います。開始のコードが出てきたら、単純にコピーする。終了のコードが出てくるまで繰り返す。
こんな方法で良いのかと思いますがいかがでしょうか ?
    • good
    • 0
この回答へのお礼

どんなデータが存在するのか、もう少しパターンを洗い出して、
一つ一つ解決していきたいと思います。ありがとうございました。

お礼日時:2004/01/26 22:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています