(57)【要約】【課題】全角２バイト、半角１バイトで表現する文字コードのファイルに含まれるレコードを全角、半角共に同じバイト数で表現する文字コードで処理するソフトウェアの開発の負荷を軽減することを目的とする。【解決手段】１又は複数のバイト配列の文字コードで構成される項目を複数含む文字列レコードで構成されるファイルのレイアウトを示すファイルレイアウト情報に基づいて、文字列レコードの項目に対応した型別のコード変換器に設定情報を設定し、文字列レコードの文字コードの変換に係るソースコードを自動生成する生成手段を有することによって課題を解決する。【選択図】図１３
2010224656.tif 000002
【特許請求の範囲】
【請求項１】
１又は複数のバイト配列の文字コードで構成される項目を複数含む文字列レコードで構成されるファイルのレイアウトを示すファイルレイアウト情報に基づいて、前記文字列レコードの項目に対応した型別のコード変換器に設定情報を設定し、前記文字列レコードの文字コードの変換に係るソースコードを自動生成する生成手段を有することを特徴とするソースコード生成装置。
【請求項２】
前記生成手段は、前記ファイルレイアウト情報に基づいて、前記文字列レコードの項目に対応した型別のコード変換器に設定情報を設定すると共に前記型別のコード変換器を組み合わせることによって、前記文字列レコードの文字コードの変換に係るソースコードを自動生成することを特徴とする請求項１に記載のソースコード生成装置。
【請求項３】
前記ファイルを識別する識別情報を含むソースコード生成要求を受信する受信手段と、
前記受信手段で受信した前記ソースコード生成要求に含まれる前記識別情報で識別される前記ファイルに基づいて、前記ファイルのレイアウトを示すファイルレイアウト情報を記憶装置より検索する検索手段と、
を更に有し、
前記生成手段は、前記検索手段で検索した結果、取得したファイルレイアウト情報に基づいて、前記ファイルを構成するレコードの文字コードの変換に係るソースコードを自動生成することを特徴とする請求項１又は２に記載のソースコード生成装置。
【請求項４】
前記生成手段は、前記ファイルレイアウト情報に基づいて、前記型別のコード変換器に、前記文字列レコードを参照する参照情報、前記項目に係るバイト配列の開始位置、前記項目に係るバイト配列の長さを設定情報として設定することを特徴とする請求項１乃至３の何れか１項に記載のソースコード生成装置。
【請求項５】
前記文字列レコードには、予備部分が含まれることを特徴とする請求項４に記載のソースコード生成装置。
【請求項６】
コンピュータを、
１又は複数のバイト配列の文字コードで構成される項目を複数含む文字列レコードで構成されるファイルのレイアウトを示すファイルレイアウト情報に基づいて、前記文字列レコードの項目に対応した型別のコード変換器に設定情報を設定し、前記文字列レコードの文字コードの変換に係るソースコードを自動生成する生成手段として機能させることを特徴とするプログラム。
【請求項７】
ソースコード生成装置におけるソースコード生成方法であって、
１又は複数のバイト配列の文字コードで構成される項目を複数含む文字列レコードで構成されるファイルのレイアウトを示すファイルレイアウト情報に基づいて、前記文字列レコードの項目に対応した型別のコード変換器に設定情報を設定し、前記文字列レコードの文字コードの変換に係るソースコードを自動生成する生成ステップを有することを特徴とするソースコード生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード生成装置、プログラム及びソースコード生成方法に関する。
【背景技術】
【０００２】
日本語圏のパーソナルコンピュータでは漢字を表現する文字コードとしてＳｈｉｆｔ＿ＪＩＳを代表とする全角２バイト、半角１バイトで表現する文字コードが一般的であった。しかしながら、昨今、アプリケーションのグローバル化が進むにつれ、複数の言語圏に対応するための文字コードが整理され、全角文字も半角文字も１文字として扱う代わりに１文字をｎバイトで表現する文字コード（例えば、Ｕｎｉｃｏｄｅ等）が増えている。特に、パーソナルコンピュータ（以下、ＰＣともいう）では、このような文字コードを採用するものが増えてきた。
【０００３】
一方で、ホスト計算機等と連動するレガシーシステムにおいては、文字列の領域を容易に見積もれることもあり、全角２バイト、半角１バイトで表現する文字コードが根強く残っている。ＣＯＢＯＬに代表される固定長のデータ構造を扱うプログラム言語では、データのサイズをバイト単位で割り当てる。このため、ＰＣのＣＯＢＯＬでは固定長で設計のしやすいＳｈｉｆｔ＿ＪＩＳが採用されている。
【０００４】
ＣＯＢＯＬではファイルを扱う際にレコードを文字列で表現したものを扱う場合がある。これをＳＡＭファイルと言う。ＳＡＭファイルには、対応するレコード定義の情報がバイト単位に連結して記録されている。このため、ＣＯＢＯＬ以外の言語でＳＡＭファイルを扱う際には、項目ごとの切り出し及び連結等が必要となる。ここで、図１は、レコード定義、Ｓｈｉｆｔ＿ＪＩＳコードのレコードデータ、Ｕｎｉｃｏｄｅのレコードデータ、の一例を示す図である。なお、図１では、レコード定義の一例としてＣＯＢＯＬの場合を示している。
Ｓｈｉｆｔ＿ＪＩＳコードのシステムでは、レコード定義のバイトイメージと文字列の内部表現とが一致しているため切り出しは容易である。しかしながら、図１に示されるように、Ｕｎｉｃｏｄｅの場合、全角文字と半角文字とのバイト数の違いにより、レコード定義（ＣＯＢＯＬレコード定義）のバイトイメージと文字列の内部表現とに乖離が生じる。
【０００５】
図１において、例えば、上述したようにＳＡＭファイルで利用されるＳｈｉｆｔ＿ＪＩＳコードでは、全角文字２バイト、半角文字１バイトで表現される。よって、ＩＴＥＭ０１に配置される"あA"という文字列は、例えば、あ＝82A0、A=41等と表現される。一方、内部表現がＵｎｉｃｏｄｅであるアプリケーション内では、全角であろうが、半角であろうが、１文字２バイトとして扱われる。よって、ＩＴＥＭ０１に配置される"あA"という文字列は、例えば、あ＝3042、A=0041等と表現される。
このように、Ｓｈｉｆｔ＿ＪＩＳでは３バイトで表現される領域がＵｎｉｃｏｄｅでは４バイトで表現される。文字列が長いほどこの乖離は広がっていく。
Ｕｎｉｃｏｄｅの特に全角データと半角データとが混在するレコードを使用する場合、レコード定義のバイトイメージと一致させるための処理が必要となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−２９８０６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
図２は、従来における、Ｓｈｉｆｔ＿ＪＩＳコードのファイルに記載されたレコードをＵｎｉｃｏｄｅのアプリケーションがメモリに読み込み、処理（本来の処理）を行う際に必要となる処理の一例を示す図である。図２の例では、レコードαは、項目Ａ、Ｂ、Ｃを有し、項目Ｂと項目Ｃとの間に予備（ＦＩＬＬＥＲ）を含むものとしている。
図２に示されるように、従来では、例えば、ＰＣは、Ｕｎｉｃｏｄｅにおいて、項目からデータを読み出したり、データを書き込んだりするような本来の処理を行う前に、Ｓｈｉｆｔ＿ＪＩＳコードのＳＡＭファイルから各項目を切り出し、Ｓｈｉｆｔ＿ＪＩＳコードからＵｎｉｃｏｄｅへの文字コードの変換を行うと共に、レコード定義のバイトイメージとＵｎｉｃｏｄｅに変換したデータ（項目）との対応関係をつけ、メモリ上に格納する必要があった。また、ＰＣは、本来の処理を行った後、レコードをＳＡＭファイルに戻す際は、ＵｎｉｃｏｄｅからＳｈｉｆｔ＿ＪＩＳコードへの変換を行った後、項目を結合させ、ＳＡＭファイルに書き込む必要があった。これら切り出しや、変換、結合等の処理は、本来の処理に付随する処理である。しかしながら、レコードの種類、項目数等に比例し、前記付随する処理を実現させるためのコーディング量は増大する。このため、アプリケーション（ソフトウェア）の開発効率を悪化させる要因の一つとなると共に、保守効率を悪化させる要因の一つともなっていた。
【０００８】
また、図１に示されるように、従来の方法では、例えばレコードの項目の間等に予備が含まれる場合、この予備を排除したり、追加したりする処理のためのコーディングも必要となる。また、従来の方法では、後述する集団項目を扱うような処理のためのコーディングも別途、必要となる。
【０００９】
本発明はこのような問題点に鑑みなされたもので、全角２バイト、半角１バイトで表現する文字コードのファイルに含まれるレコードを全角、半角共に同じバイト数で表現する文字コードで処理するソフトウェアの開発の負荷を軽減することを目的とする。
【課題を解決するための手段】
【００１０】
そこで、本発明は、１又は複数のバイト配列の文字コードで構成される項目を複数含む文字列レコードで構成されるファイルのレイアウトを示すファイルレイアウト情報に基づいて、前記文字列レコードの項目に対応した型別のコード変換器に設定情報を設定し、前記型別のコード変換器を組み合わせることによって、前記文字列レコードの文字コードの変換に係るソースコードを自動生成する生成手段を有することを特徴とする。
【００１１】
係る構成とすることにより、ファイルレイアウト情報に基づいて、文字列レコードの文字コードの変換に係るソースコードが自動生成される。全角２バイト、半角１バイトで表現する文字コードのファイルに含まれるレコードを全角、半角共に同じバイト数で表現する文字コードで処理するソフトウェアの開発者は、自動生成されたソースコードを用いて、前記ソフトウェアを作成する。よって、全角２バイト、半角１バイトで表現する文字コードのファイルに含まれるレコードを全角、半角共に同じバイト数で表現する文字コードで処理するソフトウェアの開発の負荷を軽減することができる。
【００１２】
なお、生成手段は、例えば、後述する変換装置等に対応する。また、ファイルレイアウト情報は、例えば、後述するレコード定義等に対応する。
【００１３】
また、本発明は、プログラム及びソースコード生成方法としてもよい。
【発明の効果】
【００１４】
本発明によれば、全角２バイト、半角１バイトで表現する文字コードのファイルに含まれるレコードを全角、半角共に同じバイト数で表現する文字コードで処理するソフトウェアの開発の負荷を軽減することができる。
【図面の簡単な説明】
【００１５】
【図１】レコード定義、Ｓｈｉｆｔ＿ＪＩＳコードのレコードデータ、Ｕｎｉｃｏｄｅのレコードデータ、の一例を示す図である。
【図２】従来における、Ｓｈｉｆｔ＿ＪＩＳコードのファイルに記載されたレコードをＵｎｉｃｏｄｅのアプリケーションがメモリに読み込み、処理（本来の処理）を行う際に必要となる処理の一例を示す図である。
【図３】本実施形態のシステムのシステム構成の一例を示す図である。
【図４】レコード原始プログラムコード生成装置２のハードウェア構成の一例を示す図である。
【図５】レコード原始プログラムコード生成処理に係る一例のシーケンス図である。
【図６】本実施形態のシステムの機能の一例を示すクラス図である。
【図７】コード変換器の一例を示す図である。
【図８】集団項目変換器の一例を示す図である。
【図９】９型変換器の一例を示す図である。
【図１０】Ｘ型変換器の一例を示す図である。
【図１１】ＦＩＬＬＥＲの一例を示す図である。
【図１２】Ｓ９型変換器の一例を示す図である。
【図１３】図２と対比させ、本実施形態を説明するための図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について図面に基づいて説明する。
【００１７】
図３は、本実施形態のシステムのシステム構成の一例を示す図である。図３に示されるように、システムは、レコード定義レポジトリ装置１と、レコード原始プログラムコード生成装置２と、開発者装置３と、クライアント装置４と、がネットワーク５を介して接続されている。なお、図３では、クライアント装置４がネットワーク５に接続されているとして説明を行っているが、クライアント装置４は、ネットワーク５に接続されていなくてもよい。
レコード定義レポジトリ装置１は、図１に示したようなレコード定義を複数、記憶している。レコード原始プログラムコード生成装置２は、開発者装置３からの生成要求に基づいて、レコード定義レポジトリ装置１からレコード定義を取得し、取得したレコード定義に基づいて、図１に示されるＳＡＭファイルに含まれるレコードの項目に対応した型別のコード変換器に設定情報を設定し、前記型別のコード変換器を組み合わせることによって、前記レコードの文字コードの変換に係るレコード原始プログラムコードを自動生成する。
【００１８】
開発者装置３は、レコード原始プログラムコード生成装置２によって自動生成されたレコード原始プログラムコードを取得する。開発者は、開発者装置３を操作し、自動生成されたレコード原始プログラムコードを用いて、全角２バイト、半角１バイトで表現する文字コードのファイルに含まれるレコードを全角、半角共に同じバイト数で表現する文字コードで処理するソフトウェア（以下、単にソフトウェアという）を作成する。
なお、後述する図７〜図１２を用いて詳細に説明するが、コード変換器は、例えば、ソフトウェアからデータを書き込むよう指示されると、ＵｎｉｃｏｄｅのデータをＳｈｉｆｔ＿ＪＩＳのデータへと変換し、設定情報で設定されているレコードの位置に前記データを書き込む。また、型別のコード変換器は、ソフトウェアからデータを読み込むよう指示されると、設定情報で設定されているレコードの位置からＳｈｉｆｔ＿ＪＩＳのデータを読み込んで、Ｕｎｉｃｏｄｅのデータへと変換する。
【００１９】
開発者装置３で作成されたソフトウェア及び型別のコード変換器は、ネットワークを介して、又は記憶媒体等を介してクライアント装置４に配布され、例えば、Ｕｎｉｃｏｄｅのクライアント装置４で実行される。
【００２０】
図４は、レコード原始プログラムコード生成装置２のハードウェア構成の一例を示す図である。
図４に示されるようにレコード原始プログラムコード生成装置２は、ハードウェア構成として、ＣＰＵ１１を含む。ＣＰＵ１１が、記憶装置１３に記憶されているプログラムに基づき処理を行うことによって、変換装置の機能を実現する。
ＣＰＵ１１には、バス１０を介して、入力装置１２、記憶装置１３及び表示装置１４が接続されている。記憶装置１３は、例えば、ＲＯＭ、ＲＡＭ、ハードディスク装置等からなり、上述した各プログラム以外に、プログラムに基づく処理で用いられるデータを記憶する。表示装置１４は、情報を表示する例えばディスプレイ等である。入力装置１２は、情報を入力する例えば操作キー等である。
なお、レコード定義レポジトリ装置１、開発者装置３、クライアント装置４のハードウェア構成も図４に示すレコード原始プログラムコード生成装置２のハードウェア構成と同様である。
なお、入力装置１２及び表示装置１４は、レコード原始プログラムコード生成装置２の必須の構成要素ではない。
【００２１】
図５は、レコード原始プログラムコード生成処理に係る一例のシーケンス図である。
ＳＱ１０において、開発者装置３は、ＳＡＭファイルを識別する識別情報を含むレコード原始プログラムコード生成要求をレコード原始プログラムコード生成装置２に対して送信する。
レコード原始プログラムコード生成装置２は、記憶装置１３等にＳＡＭファイルとレコード定義とを対応付ける対応付け情報を保持しており、前記レコード原始プログラムコード生成要求に含まれるＳＡＭファイルの識別情報に基づいて、前記ＳＡＭファイルに対応するレコード定義を特定する。
レコード原始プログラムコード生成装置２は、特定したレコード定義を識別する識別情報を含む検索要求をレコード定義レポジトリ装置１に送信し、前記識別情報で識別されるレコード定義の取得をレコード定義レポジトリ装置１に対して要求する。
【００２２】
なお、開発者装置３は、レコード定義を識別する識別情報を含むレコード原始プログラムコード生成要求をレコード原始プログラムコード生成装置２に対して送信するようにしてもよい。このような場合、レコード原始プログラムコード生成装置２は、前記レコード原始プログラムコード生成要求に含まれるレコード定義を識別する識別情報を含む検索要求をレコード定義レポジトリ装置１に送信し、前記識別情報で識別されるレコード定義の取得をレコード定義レポジトリ装置１に対して要求する。
【００２３】
図６は、本実施形態のシステムの機能の一例を示すクラス図である。
図６に示されるように、本実施形態のシステムは、機能として、変換装置と、コード変換器と、を含む。コード変換器は、集団項目変換器と、９型変換器と、Ｓ９型変換器と、Ｘ型変換器と、を含む。なお、変換装置は、レコード原始プログラムコード生成装置２で実行されるプログラムである。また、コード変換器は、クライアント装置４等で実行されるプログラムである。また、変換器が上述した変換器以外の変換器を含んでもよい。
【００２４】
変換装置は、レコード定義に基づいて、ＳＡＭファイルに含まれるレコードの項目に対応した型別のコード変換器（例えば、集団項目変換器、９型変換器、Ｓ９型変換器、Ｘ型変換器等）に設定情報（例えば、後述する図７に示されるＩＤ、データ、開始位置、長さ、整数長、小数長等）を設定し、前記型別のコード変換器を組み合わせることによって、前記レコードの文字コードの変換に係るレコード原始プログラムコードを自動生成する。
なお、以降、図７〜図１２に示されるコード変換器には、変換装置が図１に示されるレコード定義に基づいて設定した設定情報やコード変換器の組み合わせの例を示している。
【００２５】
図７は、コード変換器の一例を示す図である。コード変換器は、ＣＯＢＯＬ文法におけるレコードに相当する。コード変換器は、データ部を参照するための要素を保持する。
図８は、集団項目変換器の一例を示す図である。集団項目変換器は、ＣＯＢＯＬ文法における集団項目に相当する。集団項目変換器は、データ部を参照するための要素を保持し、データをまとめることができる。
図９は、９型変換器の一例を示す図である。９型変換器は、ＣＯＢＯＬ文法における９タイプに相当する。９型変換器は、内部表現として数値をＳｈｉｆｔ＿ＪＩＳの文字列で保持し、入出力の際に、数値とＳｈｉｆｔ＿ＪＩＳ文字列との変換を行う。９型変換器は、データ領域を整数部と小数部とで表現された固定小数点として管理しており、精度を超える入力に対しては丸めを行う。
【００２６】
図１０は、Ｘ型変換器の一例を示す図である。Ｘ型変換器は、ＣＯＢＯＬ文法におけるＸタイプに相当する。Ｘ型変換器は、内部表現として数値をＳｈｉｆｔ＿ＪＩＳの文字コードで保持し、入出力の際に対象処理系コード（例えば、Ｕｎｉｃｏｄｅ）とＳｈｉｆｔ＿ＪＩＳコードの変換を行う。
図１１は、ＦＩＬＬＥＲの一例を示す図である。ＦＩＬＬＥＲに対応する変換器は存在しない。９型変換器、Ｓ９型変換器、Ｘ型変換器等の直接値を現す変換器によって管理されていない領域がＦＩＬＬＥＲである。
図１２は、Ｓ９型変換器の一例を示す図である。Ｓ９型変換器は、ＣＯＢＯＬ文法におけるＳ９タイプに相当する。Ｓ９型変換器は、内部表現として数値をＳｈｉｆｔ＿ＪＩＳコードの文字列で保持し、入出力の際に、数値とＳｈｉｆｔ＿ＪＩＳ文字列との変換を行う。Ｓ９型変換器は、データ領域を整数部と小数部とで表現された固定小数点として管理しており、精度を超える入力に対しては丸めを行う。Ｓ９型変換器と、９型変換器と、の違いは、Ｓ９型変換器は、符号が管理できることであり、負の数の場合、0x40を足すことで表現する。
【００２７】
図１３は、図２と対比させ、本実施形態を説明するための図である。図１３に示されるように、本実施形態では、変換装置が、レコード定義に基づいて、変換に係るソースコードを自動生成するので、開発者による個別のコーディングは不要となる。また、コーディングが不要であるため、レコードや項目数が増えても問題ない。また、開発者が、予備の部分を考慮する必要もなく、集団項目を扱うためのコーディングをする必要もない。
本実施形態によれば、例えば内部表現がＵｎｉｃｏｄｅのクライアント装置４のメモリに、Ｓｈｉｆｔ＿ＪＩＳコードの文字列が格納される。そして、各コード変換器が、アプリケーション等から呼び出され、データを書き込んだり、読み込んだりする度に、順次、変換に係る処理を実行する。
【００２８】
以上、上述したように本実施形態によれば、全角２バイト、半角１バイトで表現する文字コードのファイルに含まれるレコードを全角、半角共に同じバイト数で表現する文字コードで処理するソフトウェアの開発の負荷を軽減することができる。
また、本実施形態によれば、開発者が、自動生成されたソースコードを用いてソフトウェアを開発する際に、例えば、コード変換器に対してデータの書き込みを指示する実装（コーディング）を行う際に、例えば誤った型のデータ等の書き込みを指示した場合、コンパイル時等にエラーが表示されるため、修正を行うことができる。一方、図２に示したような従来例の場合、例え上述したような誤ったコーディングをした場合であっても、コンパイル時等にエラーは表示されない。
【００２９】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００３０】
２    レコード原始プログラムコード生成装置
１１  ＣＰＵ
１２  入力装置
１３  記憶装置
１４  表示装置
【図１】
2010224656.tif 000003
【図２】
2010224656.tif 000004
【図３】
2010224656.tif 000005
【図４】
2010224656.tif 000006
【図５】
2010224656.tif 000007
【図６】
2010224656.tif 000008
【図７】
2010224656.tif 000009
【図８】
2010224656.tif 000010
【図９】
2010224656.tif 000011
【図１０】
2010224656.tif 000012
【図１１】
2010224656.tif 000013
【図１２】
2010224656.tif 000014
【図１３】
2010224656.tif 000015