(57)【要約】【課題】文字コード体系の異なるホストシステム間のデータ移行の際に、シフトコードを除いたデータ長を保持したままデータ変換を可能とする。【解決手段】１バイト文字及び２バイト文字の開始位置にシフトコードを設ける第１の文字コード体系のデータから、２バイト文字の開始位置と終了位置にシフトコードを設ける第２の文字コード体系のデータへとデータ変換を行うデータ変換装置において、第１の文字コード体系のデータを入力データとして読み込み、１バイトずつ取得し、取得した各バイトに対して第１の文字コード体系のシフトコードであるか否かを判定して第２の文字コード体系のシフトコードを設定することにより、第２の文字コード体系の変換後データへと変換し、変換後データのデータ長が入力データのデータ長に達していない場合は残りのバイトに第２の文字コード体系のシフトコードを設定する。【選択図】図４
2015172857.tif 000002
【特許請求の範囲】
【請求項１】
２バイト文字を含む可能性のあるデータについて、１バイト文字及び２バイト文字の開始位置にシフトコードを設ける第１の文字コード体系のデータから、２バイト文字の開始位置と終了位置にシフトコードを設ける第２の文字コード体系のデータへとデータ変換を行うデータ変換装置において、
第１の文字コード体系のデータを入力データとして読み込む手段と、
前記入力データから１バイトずつ取得し、取得した各バイトに対して第１の文字コード体系のシフトコードであるか否かを判定することを含む複数の判定を行って第２の文字コード体系のシフトコードを設定することにより、前記入力データを第２の文字コード体系の変換後データへと変換する手段と、
前記変換後データのデータ長が前記入力データのデータ長に達していない場合は残りのバイトに第２の文字コード体系のシフトコードを設定する手段と、を備えたことを特徴とするデータ変換装置。
【請求項２】
２バイト文字を含む可能性のあるデータについて、１バイト文字及び２バイト文字の開始位置にシフトコードを設ける第１の文字コード体系のデータから、２バイト文字の開始位置と終了位置にシフトコードを設ける第２の文字コード体系のデータへとデータ変換を行うデータ変換プログラムにおいて、データ変換装置に対し、
第１の文字コード体系のデータを入力データとして読み込む機能と、
前記入力データから１バイトずつ取得し、取得した各バイトに対して第１の文字コード体系のシフトコードであるか否かを判定することを含む複数の判定を行って第２の文字コード体系のシフトコードを設定することにより、前記入力データを第２の文字コード体系の変換後データへと変換する機能と、
前記変換後データのデータ長が前記入力データのデータ長に達していない場合は残りのバイトに第２の文字コード体系のシフトコードを設定する機能と、を実現させることを特徴とするデータ変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字コード体系の異なるホストシステム間のデータ移行において、データ長を保証しつつ、一方のホストシステムのデータを他方のホストシステムで使用可能な形式のデータに変換するデータ変換装置及びプログラムに関する。
【背景技術】
【０００２】
一般にコンピュータシステムは、プログラムを記述するためのコンピュータ言語及び当該コンピュータ言語に適した所定のデータ形式に基づいて構築されるものであるが、これらコンピュータ言語及びデータ形式は、時代と供にＦＯＲＴＲＡＮ、ＣＯＢＯＬ、ＢＡＳＩＣ、Ｃ＋＋、ＪＡＶＡ（登録商標）、Ｐｅｒｌ等の如く推移するため、過去のコンピュータシステムで作成したプログラムやデータの過去資産を近年のコンピュータシステムで使用するためには、過去資産を近年のコンピュータシステムで使用できる形式に変換を行う必要がある。
【０００３】
尚、種々のワードプロセッサ等のデータ作成装置で作成したデータを他形式のデータに変換する技術が記載された文献としては、例えば下記特許文献１が挙げられ、この特許文献１には、変換後のデータ形式が通常は統一されることを考慮し、予め変換後のデータ形式が指定されている場合には個々のデータ変換後の形式を指定せずにデータ変換を実行する技術が記載されている。
【先行技術文献】
【非特許文献】
【０００４】
【特許文献１】特開２００９−２７７０９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、異なる文字コード体系のコンピュータシステムでは、シフトコードの意味や長さは必ずしも同じではない。例えば、あるホストシステム（「第１のホストシステム」とする）では、シフトコードの0x0A42は２バイト文字の始まりを意味し、0x0A41は１バイト文字の始まりを意味するのに対して、別のホストシステム（「第２のホストシステム」とする）では、0x0A42、0x0A41に相当するシフトコードは存在せず、２バイト文字の始まりにシフトアウトと言われるシフトコードの0x0E、終わりにシフトインと言われるシフトコードの0x0Fを付加するのがルールである。
【０００６】
このため、第１のホストシステムから第２のホストシステムにマイグレーションする場合、当然、データ移行も必要となるが、両システム上のシフトコードの扱いが異なることから、固定長データ形式の場合、データ移行時にシフトコードを除いたデータ長が変わってしまい、第１のホストシステムで出力した帳票と、第２のホストシステムで出力した帳票の出力結果が異なってしまうといった不具合が生じている。
【０００７】
例えば、図１のデータを帳票出力すると、第１のホストシステムでは図２の出力結果が得られるが、第２のホストシステムでは図３の出力結果となり、電話番号３０２の出力位置がずれてしまう。原因は、契約者氏名３０１の末尾にスペースが挿入されてしまっているためである。契約者氏名３０１のデータについて、第１のホストシステムでは先頭が0x0A41で、その後ろに「マイケル シ゛ョンソン」（実際は図示の通り半角カタカナ）と続くが、このデータを第２のホストシステムへデータ移行すると、先頭から「マイケル シ゛ョンソン」となり、その後ろに２バイト分のスペースが続く。第２のホストシステムでは１バイト文字に対して付加するシフトコードは存在しないため、この２バイト分のスペースは、0x0A41がなくなったことによる余剰エリアである。第２のホストシステムに渡すデータは、当該編集処理の前に初期化されているため、余剰エリアにはスペースが設定される。そのため、このレコードを帳票出力すると、第２のホストシステムでは電話番号３０２が２バイト分後方にずれることになる。要するに、データ移行した際に、シフトコードを除いたデータ長が変わってしまったことが原因である。
【０００８】
本発明の目的は、あるホストシステムから文字コード体系の異なる別のホストシステムにデータ移行した際に、シフトコードを除いたデータ長を保持したまま、文字コード体系を変換するデータ変換装置及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明は以下の構成を提供する。
本発明の一態様は、２バイト文字を含む可能性のあるデータについて、１バイト文字及び２バイト文字の開始位置にシフトコードを設ける第１の文字コード体系のデータから、２バイト文字の開始位置と終了位置にシフトコードを設ける第２の文字コード体系のデータへとデータ変換を行うデータ変換装置において、第１の文字コード体系のデータを入力データとして読み込む手段と、前記入力データから１バイトずつ取得し、取得した各バイトに対して第１の文字コード体系のシフトコードであるか否かを判定することを含む複数の判定を行って第２の文字コード体系のシフトコードを設定することにより、前記入力データを第２の文字コード体系の変換後データへと変換する手段と、前記変換後データのデータ長が前記入力データのデータ長に達していない場合は残りのバイトに第２の文字コード体系のシフトコードを設定する手段と、を備えたことを特徴とする。
【００１０】
本発明の別の態様は、２バイト文字を含む可能性のあるデータについて、１バイト文字及び２バイト文字の開始位置にシフトコードを設ける第１の文字コード体系のデータから、２バイト文字の開始位置と終了位置にシフトコードを設ける第２の文字コード体系のデータへとデータ変換を行うデータ変換プログラムにおいて、データ変換装置に対し、第１の文字コード体系のデータを入力データとして読み込む機能と、前記入力データから１バイトずつ取得し、取得した各バイトに対して第１の文字コード体系のシフトコードであるか否かを判定することを含む複数の判定を行って第２の文字コード体系のシフトコードを設定することにより、前記入力データを第２の文字コード体系の変換後データへと変換する機能と、前記変換後データのデータ長が前記入力データのデータ長に達していない場合は残りのバイトに第２の文字コード体系のシフトコードを設定する機能と、を実現させることを特徴とする。
【発明の効果】
【００１１】
本発明のデータ変換装置及びプログラムによれば、次のような効果がある。
文字コード体系の異なる第１のホストシステムから第２のホストシステムにデータ移行した際に、シフトコードを除いたデータ長を保持したまま、文字コード体系を変換することができるので、双方のシステムにおける帳票の出力結果を一致させることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の課題例を示すデータの構成図である。
【図２】図２は。本発明の課題例を示す帳票の出力結果である。
【図３】図３は、本発明の課題における不具合例を示す帳票の出力結果である。
【図４】図４は、本発明の実施形態の一例を示すシステム構成図である。
【図５】図５は、契約データベースに格納されているデータの構成図である。
【図６】図６は、契約一覧帳票の出力結果である。
【図７】図７は、契約データベースに格納されている契約始期年月日の説明図である。
【図８】図８は、誤ったデータ変換をした契約始期の説明図である。
【図９】図９は、誤ったデータ変換後の契約一覧帳票の出力結果である。
【図１０】図１０は、正しくデータ変換をした契約始期の説明図である。
【図１１】図１１は、データ変換処理の概要を示すフローチャートである。
【図１２】図１２は、コード変換処理の概要を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、文字コード体系の異なるホストシステム間におけるマイグレーションにおいて適用可能な本発明によるデータ変換装置及びプログラムの実施形態について説明する。
【００１４】
図４は、本発明の実施形態の一例を含むシステム全体の構成図である。所定の文字コード体系をもつ第１のホストシステム４０１と、第１のホストシステムとは異なる文字コード体系をもつ第２のホストシステム４０２が存在する。
【００１５】
第１のホストシステムは、データ入力を行うホスト端末４０３と、入力データを格納する契約データベース４０４とを接続され、処理機能として、契約データベース４０４の更新処理を行うＤＢ更新部４０５と、ホスト端末４０３の帳票出力要求に対して、契約一覧帳票４０６を出力するための帳票編集部４０７とを備えている。
【００１６】
第２のホストシステム４０２も同様にデータ入力を行うホスト端末４０８と入力データを格納する契約データベース４０９とを接続され、処理機能として、契約データベース４０９の更新処理を行うＤＢ更新部４１０と、ホスト端末４０８の帳票出力要求に対して、契約一覧帳票４１１を出力するための帳票編集部４１２とを備えている。
【００１７】
ここでは、一例として、第１及び第２のホストシステムに接続されたデータベースが契約データベースであり、格納されるデータが契約データであり、出力される帳票が契約一覧帳票であり、ホストシステムが契約データの入力及びデータ更新処理と帳票出力処理を行う場合について説明するが、本発明を適用するデータの内容は契約データに限定されるものではない。
【００１８】
第１と第２のホストシステム４０１、４０２の各々の文字コード体系は、２バイト文字を含む可能性のあるデータ項目のデータに付加するシフトコードの長さ及び位置が異なる。第１のホストシステム４０１のもつ第１の文字コード体系では、１バイト文字（半角文字）及び２バイト文字（全角文字）にシフトコードを設ける。例えばシフトコードとして、半角文字については0x0A41を、全角文字については0x0A42を開始位置に設ける。一方、第２のホストシステム４０２のもつ第２の文字コード体系では、２バイト文字（全角文字）のみにシフトコードを設ける。例えばシフトコードとして、全角文字について開始位置に0x0Eを終了位置に0x0Fを設ける。
【００１９】
本発明によるデータ変換装置４１３は、契約データベース４０４から契約データベース４０９へデータ移行するためのデータ変換処理を行う。データ変換装置４１３は、適宜のコンピュータであり、本発明のデータ変換処理を行うためのデータ変換プログラムを導入されている。コンピュータのＣＰＵがデータ変換プログラムをメモリに読み込み実行することにより、データ変換装置として機能するものである。
【００２０】
図５は、図４に示した契約データベース４０４に格納される契約データの一例を示す図である。図に示すように、証券番号５０１、契約始期５０２、区分５０３のデータ項目から構成される。このうち、契約始期５０２は２バイト文字と１バイト文字の混在が可能なデータ項目であり、区分５０３は２バイト文字のデータ項目である。
【００２１】
第１のホストシステム４０１がこの契約データを帳票出力した場合、帳票の１行目には、証券番号５０１として「14012201     」、契約始期５０２として「2014年 1月30日」、区分５０３として「当社単独引受」が連結され、文字列「14012201     2014年 1月30日当社単独引受」が契約一覧帳票４０６に出力される。帳票の２行目には、文字列「14040801     2014年 5月 1日他社幹事引受」が出力される。図６は、契約一覧帳票４０６の出力結果を示す図である。
【００２２】
図７は、契約始期５０２の「2014年 1月30日」が、第１の文字コード体系に従って契約データベース４０４に格納された状態を示す図である。このときの全データ長は２６バイトであり、シフトコード（0x0A41及び0x0A42）のデータ長は１２バイトであり、シフトコードを除いた文字コードのデータ長は１４バイトである。
【００２３】
契約データベース４０４に格納された図７のデータを、契約データベース４０９にデータ移行する際に、第２の文字コード体系に従って図８のようにデータ変換するのは誤りである。第２の文字コード体系では、シフトコード（0x0E及び0x0F）のデータ長は６バイトになる。図８では、シフトコードのデータ長が減ったために空いた２１〜２６バイト目にスペースが設定されている。すなわちシフトコードを除いた文字コードのデータ長は２０バイトに変わっている。この結果、このデータを契約一覧帳票４１１に出力すると、図９の出力結果となり、区分９０１が「      当社単」と出力されてしまう。原因は、図８で６バイト分のスペースが追加されたために、後続の区分９０１が６バイト分後方にずれ、末尾の６バイト分が入りきらないためである。
【００２４】
この不具合を防ぐには、図１０に示す形式にて第２のホストシステム４０２にデータ移行してやればよい。図８との違いは、２１〜２６バイト目にスペースではなくシフトコードを設定している点である。こうすることでシフトコードを除いた文字コードのデータ長は、１４バイトと変わらないため、後続の「和文」がずれることもない。
【００２５】
次に、シフトコードを除いたデータ長を保持したままデータ変換するための処理について説明する。
【００２６】
図１１は、データ変換装置４１３における処理の概要を示すフローチャートである。
データ変換装置４１３は、契約データベース４０４から取得した契約データを入力とし（ステップ１１０１）、レコードを１行ずつ読み込んで（ステップ１１０２、１１０３）、第１の文字コード体系から第２の文字コード体系への変換が必要なデータ項目に対してコード変換した後（ステップ１１０４、１１０５）、契約データベース４０９に登録するためのデータを出力する（ステップ１１０６）。全てのレコードの処理が完了したならば、当該契約データの処理を終了する。
【００２７】
図１２は、図１１のステップ１１０４又は１１０５におけるコード変換処理の概要を示すフローチャートである。コード変換処理では、第１の文字コード体系から第２の文字コード体系へのシフトコードの変換を行うとともに、２バイト文字の文字コード自体が異なる場合は文字コードの変換も行う。
【００２８】
まず、変換対象のデータ項目の入力データの先頭から１バイトを読み込む（ステップ１２０１）。取得した１バイトがシフトコードである場合は、第１の文字コード体系におけるシフトコード0x0A42、0x0A41のいずれであるかを判別する。0x0A42の場合は（ステップ１２０２）、変換後データに、第２の文字コード体系のシフトコードのうちシフトアウト0x0Eを設定し（ステップ１２０３）、フラグをＯＮにする（ステップ１２０４）。フラグは、直近に現れたシフトコードが0x0A42、0x0A41のいずれであったかを判定するのに用いる。
【００２９】
読み込んだ１バイトが0x0A41でフラグがＯＮの場合（ステップ１２０５）、直近の0x0A42との間には１又は複数の２バイト文字が存在するため、それらの２バイト文字を変換し、変換後データに設定する（ステップ１２０６）。２バイト文字については、第１と第２の文字コード体系の互いの文字コードが異なる場合は、コード変換する。さらにそれに続く次のバイトに、第２の文字コード体系のシフトコードのうちシフトイン0x0Fを設定し（ステップ１２０７）、フラグをＯＦＦにする（ステップ１２０８）。
【００３０】
読み込んだ１バイトがシフトコード0x0A42、0x0A41のいずれでもなくフラグがＯＦＦの場合（ステップ１２０９）、読み込んだ１バイトは１バイト文字であるため、そのまま変換後データに設定する（ステップ１２１０）。この場合、１バイト文字については、第１と第２の文字コード体系の双方のコードは同じと想定しているため、コード変換は不要である。
【００３１】
上記の処理を入力データの末尾まで繰り返した後、変換後データのバイト数が入力データのバイト数に達していなければ（ステップ１２１１）、残りのバイトに第２の文字コード体系のシフトコード0x0E0Fを埋めるように設定する（ステップ１２１２）。
【００３２】
この処理によって、文字コードのデータ長を保証した変換が可能となる。この変換したデータを第２のホストシステムの契約一覧帳票４１１に出力すると、第１のホストシステムの契約一覧帳票４０６に出力したのと同じ結果を得られる。
【００３３】
以上のように、本発明のデータ変換装置及びプログラムによれば、異なる文字コード体系のシステムへマイグレーションする場合でも、文字コード体系の差異を吸収するための編集処理を追加せずとも、元のシステムと同じ帳票出力結果を提供することができる。
【符号の説明】
【００３４】
４０１…第１のホストシステム、４０２…第２のホストシステム、４０３…ホスト端末（第１のホストシステム）、４０４…契約データベース（第１のホストシステム）、４０６…契約一覧帳票（第１のホストシステム）、４０８…ホスト端末（第２のホストシステム）、４０９…契約データベース（第２のホストシステム）、４１１…契約一覧帳票（第２のホストシステム）。
【図１】
2015172857.tif 000003
【図２】
2015172857.tif 000004
【図３】
2015172857.tif 000005
【図４】
2015172857.tif 000006
【図５】
2015172857.tif 000007
【図６】
2015172857.tif 000008
【図７】
2015172857.tif 000009
【図８】
2015172857.tif 000010
【図９】
2015172857.tif 000011
【図１０】
2015172857.tif 000012
【図１１】
2015172857.tif 000013
【図１２】
2015172857.tif 000014