• ベストアンサー

COBOLで全角変換を行いたいのですが...

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

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

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

参考URL:
http://www.bukkyo-u.ac.jp/mmc01/naito/articles/19880300.html
knights_m
質問者

お礼

早速の回答をいただきありがとうございます。 汎用機のみの入力であれば、root139さんのおっしゃる通りなんですが、 実はこのデータの登録は汎用機の画面だけではなく、 数箇所のサーバーからそれぞれの画面で登録された内容がそれぞれの伝送手段で登録されているのです。 前後にシフトコードがあって半角、全角混在しているものもあれば、 シフトコードが無いのに全角文字が入っているものもあります。 「元々の仕様が統一されていない」と言ってしまえばそれまでなんですが、 今更しょうがないですよね。 root139さんのリンクは何かヒントになるような気がします。もうちょっと勉強してみます。 ありがとうございました。

その他の回答 (1)

  • 530529
  • ベストアンサー率16% (86/521)
回答No.2

#1の方が書いておられますが、まず全角データと半角データの切り分けをACOS-4でどのように行っているかを見分ける必要が有ります。 ようは、話し言葉を書く際に「」で囲いますよね。 それと同じで、何か特定の文字列で全角の開始と 終了がかかれているはずです。それを見つけて 始まりの文字列が出てくるまでは、ふつうに半角から全角へのコード変換を行います。開始のコードが出てきたら、単純にコピーする。終了のコードが出てくるまで繰り返す。 こんな方法で良いのかと思いますがいかがでしょうか ?

knights_m
質問者

お礼

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

関連するQ&A

  • COBOLによる全角・半角混在→全角に

    いつもお世話になっております。 COBOLで全角、半角が混在したデータを全角だけに変換したいのですが、 何か良い方法はありませんでしょうか? 宜しくお願い致します。

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

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

  • COBOLでの全角文字の判定をしたい。

    商品マスタの名称 X(80)には半角全角が混在しています。 ジャーナルファイルの商品名称はX(40)しかありません。 マスタから名称を設定するときに単純にX(80)→X(40)とするとちょうど文字の切れ目ならいいのですが、全角文字がまたがっていると文字化けしてしまいます。 そこで40バイト目が全角だったら 39バイトしか転送したくありません。 40バイト目が全角かどうか、どう判定すれば出来ますか?

  • 全角半角変換 C++/CLI

    C++/CLI(VC++2008) で (1)たとえば 東京bay を 東京bay にという風に全角半角混在の文字列のなかの半角文字を全角文字に変換するにはどうすればよろしいでしょうか (2)全角半角混在の文字列のなかの全角文字を半角文字に変換するにはどうすればよろしいでしょうか  

  • 半角全角混在(JIS)をJEF+EBCDICへのコード変換

    仕事で行うのに必要です。 パソコン(JIS8)から汎用機k-6700a(JEF+EBCDIC)へデータを送ります。 その際、日本語項目で半角全角混在のデータがあり変換させるのに 苦労しています。 汎用機k-6700a側で変換を掛けたいのですが、何か良い手はないでしょうか? 自分で調べた限りでは、サービスツールの標準コード変換サブルーチンで JIS8⇒JEF+EBICDICはできるみたいなのですが、半角全角の区別をどう付けて 良いものかどうか・・・ わかりやすい解答をお待ちしています。

  • COBOLで半角カナを全角カナに変換

    COBOLの初心者です。半角カナを全角カナに変換するルーチンを作成するように言われて困っています。ヒントとなるようなサンプルソースを教えて頂けないでしょうか。

  • IME-2000の文字登録、何故か全角・半角が...

    IME-2000を利用しているのですが、英数字が含まれている文字(単語)を登録すると、元々半角の文字を登録しても、何故か半角のみの文字だけでなく、全て全角、半角全角の混在したものが登録されて、いざ変換しようとしたら、変換語列の中に全てが表示され、本来出そうと思っている文字を選び出すのが大変な状態になっています。 もっと面倒なのは、英単語やe-mailアドレス(全て半角の英数字の場合)を登録したときなのですが、半角、全角のみならず、頭文字が大文字、小文字、または大文字・小文字の混在した物と8個も登録されている始末。 こういうのを直すとしたら、どうしたらいいでしょう?

  • COBOLの自動変換について(HOSTのリプレイス)

    COBOLの変換について 今回、ACOS(NEC)からZ/OS(IBM)へのCOBOLの変換を担当することになりました。(HOST汎用機です) 自力では、期間的に不可能な分量(300本を6ヶ月で変換!!!)です。 変換していただける会社を探していますが、HOSTからHOSTへの変換をしていただける会社が見つかりません。(HOSTからサーバーへはあるのですが) つきましては、次の2点について、お教えください。 1.NECからIBMへのCOBOLの変換をしていただける会社をお教えください。 2.変換をお願い出来たとして、事前に準備が必要なこと等ありましたら、お教えください。

  • 全角半角?

    ACCESS97を使用しています。 次のような文字があります。 4-22 これを4バイトのデータに追加したところ "‐"と"-"によって "4‐2"となります。 "‐"…全角 "-"…半角という意味でしょうか? またStrConv関数で全角⇔半角、大文字⇔小文字をしたのですが 変換できません。 目的は 4‐22 のデータを 4-22 というように変換して 4バイトのところに全て追加できるようにしたいのです。  (数字ではなく "-"横棒を変換) ACCESSで可能でしょうか?

  • ACCESSで全角と半角を変換する

    いつもお世話になっております 早速ですが、 ACCESS2000(OSはWindowsXP)での質問です 住所録を整理しているのですが、 住所欄に全角と半角の入力が混在しています 英数字及びハイフンは半角に カタカナは全角に変換したいのですが、 いい方法はないでしょうか? ちなみにStrconv関数をつかって 何とかしようと思ったのですが、 すべて変換されるので、どうもうまくいきません よろしくお願いします

専門家に質問してみよう