特許第6491438号(P6491438)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立公共システムの特許一覧

<>
  • 特許6491438-マイグレーション支援装置 図000002
  • 特許6491438-マイグレーション支援装置 図000003
  • 特許6491438-マイグレーション支援装置 図000004
  • 特許6491438-マイグレーション支援装置 図000005
  • 特許6491438-マイグレーション支援装置 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6491438
(24)【登録日】2019年3月8日
(45)【発行日】2019年3月27日
(54)【発明の名称】マイグレーション支援装置
(51)【国際特許分類】
   G06F 8/51 20180101AFI20190318BHJP
   G06F 8/76 20180101ALI20190318BHJP
   G06F 17/22 20060101ALI20190318BHJP
【FI】
   G06F8/51
   G06F8/76
   G06F17/22 617
【請求項の数】2
【全頁数】13
(21)【出願番号】特願2014-174745(P2014-174745)
(22)【出願日】2014年8月29日
(65)【公開番号】特開2016-51235(P2016-51235A)
(43)【公開日】2016年4月11日
【審査請求日】2017年8月18日
(73)【特許権者】
【識別番号】596127554
【氏名又は名称】株式会社日立社会情報サービス
(74)【代理人】
【識別番号】110001807
【氏名又は名称】特許業務法人磯野国際特許商標事務所
(72)【発明者】
【氏名】坂井 孝介
(72)【発明者】
【氏名】城代 佳範
(72)【発明者】
【氏名】粟河 厚志
【審査官】 坂庭 剛史
(56)【参考文献】
【文献】 特開平06−348453(JP,A)
【文献】 特開2008−226010(JP,A)
【文献】 特開2010−224656(JP,A)
【文献】 安室浩和,APIから知るWindowsの仕組み:第16回 Unicodeを利用して複数の言語に対応する,日経ソフトウエア,日本,日経BP社,2003年 9月24日,第6巻,第10号(通巻65号),p.160−168,ISSN 1347-4685
【文献】 COBOL2002ユーザーズガイド 解説・手引書,日本,株式会社日立製作所,2004年 9月,第3版(3020-3-D42-10),p.686−687
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/51
G06F 8/76
G06F 17/22
(57)【特許請求の範囲】
【請求項1】
第1のコンピュータから第2のコンピュータへのマイグレーションを支援するマイグレーション支援装置であって、
前記第1のコンピュータが有する第1の文書ファイル中の文字データに割り当てられた第1の文字コードを、記憶部が有する文字コード変換表を参照して、前記第2のコンピュータが有する第2の文書ファイル中の文字データに割り当てられた第2の文字コードに変換する文字コード変換部と、
前記第1のコンピュータが有する、前記第1の文書ファイルを処理するための第1のプログラムを、前記第2のコンピュータが有する、前記第2の文書ファイルを処理するための第2のプログラムに変換するプログラム変換部と、
前記第2の文字コードが割り当てられた文字データを前記第2のプログラムに読み込ませることで、前記読み込まれた文字データについて、前記第2のプログラムが指定するメモリ上のエリアの数を、前記文字データに割り当てられていた第1の文字コードを表現するバイト列のバイト数と同じに定める交換情報を生成する交換情報生成部と、
前記交換情報により定められた数からなる前記エリアに、前記読み込まれた文字データに割り当てられた1つの前記第2の文字コードを格納するエリア格納部と、を備える、
ことを特徴とするマイグレーション支援装置。
【請求項2】
記文字データが半角英数文字、半角記号、または半角カナ文字の文字データである場合には、前記交換情報により定められた、前記エリアの数は1であり、
前記文字データが全角文字の文字データである場合には、前記交換情報により定められた、前記エリアの数は2である、
ことを特徴とする請求項1に記載のマイグレーション支援装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、いわゆるレガシーマイグレーション(以下、単に、「マイグレーション」と称する場合がある)の技術に関し、特に、文字コード体系の切り替えを伴うマイグレーションの技術に関する。
【背景技術】
【0002】
近年、これまで現行コンピュータで稼働してきた業務システム(レガシーシステム)を新規コンピュータに移行させるためのマイグレーションサービスを望む企業、自治体などが多い。マイグレーションの形態としては、例えば、汎用系のホストコンピュータ(または、オフコン)から、WINDOWS(登録商標)、UNIX(登録商標)、LINUX(登録商標)などのOS(Operating System)が稼働するオープン系のサーバコンピュータへのマイグレーション、という形態がある。なお、マイグレーションに関する技術は、数多く公開されており、例えば、特許文献1に公開されている。
【0003】
しかし、所定の文字コード体系(例:EBCDIK(Extended Binary Coded Decimal Interchange Kana Code)、KEIS(Kanji processing Extended Information System)、JIS8、SJIS(Shift JIS)。以下、「旧文字コード体系」と称する場合がある)でデータを取り扱っているホストコンピュータが、その文字コード体系にて標準では登録されていない外字を数多く登録していた場合(ホストコンピュータの外字エリアは9024文字分)がある。この場合、小さな外字エリアしか提供できないOS(WINDOWSが提供する外字エリアは1880文字分)が稼働するサーバコンピュータへのマイグレーションは実現できない。
【0004】
また、近年では、使用できる文字数が限られている現行コンピュータに対して、新規コンピュータでは、使用できる文字数を増やしてほしい、という要望が多くの企業、自治体などから出されている。具体的には、国際化に伴い、漢字だけでなく簡体字やハングル文字などの外国の文字も表現できるようにして欲しい、個人を正しく表記するために旧漢字も表現できるようにして欲しい、などの要望がある。
【0005】
そこで、これらの事情に対する対応策として、UTF(Unicode Transformation Format)−8、UTF−16など、といったより大規模な文字コード体系を、新文字コード体系として取り扱う新規コンピュータへのマイグレーションが考えられる。
【0006】
マイグレーションでは、主に、(1)業務システム上の既存のデータの移行、および、(2)そのようなデータにアクセスする、業務システム上で動作する既存のプログラムの移行、がなされる。よって、移行する既存の文字データは、新文字コード体系に対応するように文字コードを変換する必要がある。また、既存のプログラム(例えば、COBOL言語で記述されたプログラム)は、文字コードを変換した文字データを読み込むことができるように変換する必要がある。
【0007】
しかし、従来技術では、文字データに割り当てられた文字コードの変換と比較して、プログラムの変換は、非常に煩雑かつ困難である、という問題点があった。この問題点は、旧文字コード体系と新文字コード体系との組み合わせによっては、同じ文字であっても、その文字を表現するバイト列のバイト数が両文字コード体系間で相違すること、既存のプログラムが文字のバイト列を格納するために指定するメモリ上のエリアの長さが固定長であること、に起因する。プログラムの変換の際は、これらの事情を考慮してプログラムの記述内容を適宜修正する必要がある(修正をしないと、文字データの溢れ、位置ずれなどが生じ、プログラムは、目的とする文字データとは異なる文字データを取得してしまう)。しかし、エリアに格納される文字のバイト列によって修正パターンが異なるため、修正は非常に煩雑かつ困難な作業となる。特許文献1の技術を含めた従来技術において、このような作業に対する改善策は何ら存在しない。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特許第4405571号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
そこで、本発明は、このような事情に鑑みてなされたものであり、異なる文字コード体系への切り替えが伴うマイグレーションにおいて、マイグレーションの対象となるプログラムの変換を容易にすることを目的とする。
【課題を解決するための手段】
【0010】
前記目的を達成するために、本発明は、
第1のコンピュータから第2のコンピュータへのマイグレーションを支援するマイグレーション支援装置であって、
前記第1のコンピュータが有する第1の文書ファイル中の文字データに割り当てられた第1の文字コードを、記憶部が有する文字コード変換表を参照して、前記第2のコンピュータが有する第2の文書ファイル中の文字データに割り当てられた第2の文字コードに変換する文字コード変換部と、
前記第1のコンピュータが有する、前記第1の文書ファイルを処理するための第1のプログラムを、前記第2のコンピュータが有する、前記第2の文書ファイルを処理するための第2のプログラムに変換するプログラム変換部と、
前記第2の文字コードが割り当てられた文字データを前記第2のプログラムに読み込ませることで、前記読み込まれた文字データについて、前記第2のプログラムが指定するメモリ上のエリアの数を、前記文字データに割り当てられていた第1の文字コードを表現するバイト列のバイト数と同じに定める交換情報を生成する交換情報生成部と、
前記交換情報により定められた数からなる前記エリアに、前記読み込まれた文字データに割り当てられた1つの前記第2の文字コードを格納するエリア格納部と、を備える、
ことを特徴とする。
その他の手段については後記する。
【0011】
レガシーとしての第1のプログラムは、文字データのサイズ(項目の長さ)をバイト列のバイト数として扱い、バイト数と同じ数のエリアをメモリ上に指定して文字データのバイト列を格納していた。つまり、従来のように、第1のプログラムは、メモリ上に指定するエリアを、1バイトのデータを格納するためのエリアとし、バイト数単位で文字データを処理していた。また、第1のプログラムのソースコードの記述内容はその処理に対応したものとなっていた。
これに対し、変換した第2のプログラムは、文字コードの変換によって、1文字を表現するバイト列のバイト数が異なった文字データを処理する際、交換情報を参照することで、第1のプログラムが使用したエリアの数と同じ数のエリアを使用することができる。つまり、第2のプログラムは、メモリ上に指定するエリアを、1文字のデータを格納するための1または複数のエリアとし、文字数単位で文字データを処理することができる。よって、第2のプログラムで組まれたロジックを第1のプログラムで組まれたロジックと同じにすることができ、第2のプログラムのソースコードの記述内容のうち、ロジックに関する部分(例えば、COBOL言語における桁数)を修正する必要はない。
したがって、異なる文字コード体系への切り替えが伴うマイグレーションにおいて、マイグレーションの対象となるプログラムの変換を容易にすることができる。
【発明の効果】
【0012】
本発明によれば、異なる文字コード体系への切り替えが伴うマイグレーションにおいて、マイグレーションの対象となるプログラムの変換を容易にすることができる。
【図面の簡単な説明】
【0013】
図1】本実施形態のマイグレーション支援装置の機能構成を示す図である。
図2】交換情報のデータ構造を示す図である。
図3】本実施形態のマイグレーション支援装置の処理を示すフローチャートである。
図4】比較例として、EBCDIK+KEISコードからUTF−8コードへの変換に合わせてCOBOL言語のプログラムを変換する際、ソースコードの記述内容の修正を必要とすることを説明するための図である。
図5】本実施例として、EBCDIK+KEISコードからUTF−8コードへの変換に合わせてCOBOL言語のプログラムを変換する際、ソースコードの記述内容の修正を不要とすることを説明するための図である。
【発明を実施するための形態】
【0014】
図1に示すように、作業用PC1は、現行コンピュータ2から新規コンピュータ3へのマイグレーションを担当する作業員が操作するコンピュータであって、本実施形態のマイグレーション支援装置である。作業用PC1は、現行コンピュータ2から入力ファイル21および入力プログラム22を取得し、所定の変換(詳細は後記する)をした後、出力ファイル31および出力プログラム32として新規コンピュータ3に出力する。
【0015】
現行コンピュータ2(第1のコンピュータ)は、汎用系のホストコンピュータである。
新規コンピュータ3(第2のコンピュータ)は、オープン系のサーバコンピュータである。
【0016】
入力ファイル21(第1の文書ファイル)は、文字データを含む文書ファイルであって、現行コンピュータ2のレガシーである。入力ファイル21中の文字データは、現行コンピュータ2が取り扱っている文字コード体系に従う。現行コンピュータ2が取り扱っている文字コード体系は、半角英数文字、半角記号、および半角カナ文字の文字データについてはEBCDIKであり、全角文字の文字データについてはKEISである。本実施形態では、入力ファイル21中の文字データに割り当てられた文字コードを「EBCDIK+KEISコード」と称する場合がある。
【0017】
なお、EBCDIKは、半角英数文字、半角記号、および半角カナ文字については、1文字を1バイトで表現する(バイト数=1)。KEISは、全角文字については、1文字を2バイトで表現する(バイト数=2)。
【0018】
入力プログラム22(第1のプログラム)は、入力ファイル21を処理するためのプログラムであって、現行コンピュータ2のレガシーである。入力プログラム22は、COBOL言語で記述されており、その記述内容は、EBCDIK兼KEISからなる文字コード体系に即している。
【0019】
出力ファイル31(第2の文書ファイル)は、文字データを含む文書ファイルである。出力ファイル31中の文字データは、新規コンピュータ3が取り扱っている文字コード体系に従う。新規コンピュータ3が取り扱っている文字コード体系は、半角英数文字、半角記号、半角カナ文字、および全角文字のいずれの文字の文字データについてもUTF−8である。本実施形態では、出力ファイル31中の文字データに割り当てられた文字コードを「UTF−8コード」と称する場合がある。
【0020】
なお、UTF−8は、半角英数文字および半角記号については、1文字を1バイトで表現し(バイト数=1)、半角カナ文字および全角文字については、1文字を3バイトで表現する(バイト数=3)。
【0021】
出力プログラム32(第2のプログラム)は、出力ファイル31を処理するためのプログラムである。本実施形態では、出力プログラム32は、COBOL言語で記述されているとする。しかし、周知の形式的な記述を施すことで、出力プログラム32を、JAVA(登録商標)言語で記述することができる。
【0022】
なお、作業用PC1は、入力部、出力部、制御部、および記憶部といったハードウェアを含む。例えば、制御部がCPU(Central Processing Unit)から構成される場合、その制御部を含むコンピュータによる情報処理は、CPUによるプログラム実行処理で実現する。また、そのコンピュータが含む記憶部は、CPUが指令し、そのコンピュータの機能を実現するためのプログラムを記憶する。これによりソフトウェアとハードウェアの協働が実現される。前記プログラムは、記録媒体に記録したり、ネットワークを経由したりすることで提供される。
【0023】
図1に示すように、作業用PC1は、文字コード変換部11と、プログラム変換部12と、交換情報生成部13と、エリア格納部14といった機能部を有し、文字コード変換表Tと、交換情報Eとを記憶部に記憶している。
【0024】
文字コード変換部11は、入力ファイル21中の文字データに割り当てられたEBCDIK+KEISコード(第1の文字コード)を、文字コード変換表Tを参照して、出力ファイル31中の文字データに割り当てられたUTF−8コード(第2の文字コード)に変換する。
【0025】
プログラム変換部12は、文字コード変換部11による文字コードの変換に対応するように、入力プログラム22を出力プログラム32に変換する。プログラム変換部12は、出力プログラム32の記述言語を、入力プログラム22の記述言語と同じにするように変換することもできるし(例:COBOL→COBOL)、異なるように変換することもできる(例:COBOL→JAVA)。
【0026】
交換情報生成部13は、UTF−8コードが割り当てられた文字データを出力プログラム32に読み込ませることで、読み込まれた文字データについて、出力プログラム32が指定するメモリ上のエリアの数を、文字データに割り当てられていたEBCDIK+KEISコードを表現するバイト列のバイト数と同じに定める交換情報Eを生成する。
出力プログラム32が読み込む、UTF−8コードが割り当てられた文字データは、例えば、出力ファイル31から抽出した文字データである。
【0027】
エリア格納部14は、交換情報Eにより定められた数からなる前記エリアに、出力プログラム32に読み込まれた文字データに割り当てられた1つのUTF−8コードを格納する。
【0028】
文字コード変換表Tは、所定の文字集合(例えば、現行コンピュータ2が取り扱うEBCDIK兼KEISからなる文字コード体系にて規定されている文字の文字集合)に含まれる文字について、当該文字に割り当てられている、EBCDIK+KEISコードとUTF−8コードとを対応付けている。対応付けの詳細は周知であり、説明は省略する。
【0029】
交換情報生成部13が生成する交換情報Eは、UTF−8コードが割り当てられた文字データごとに、当該文字データのサイズ(項目の長さ)であるバイト数と、出力プログラム32が指定するメモリ上のエリアの数とを対応付けている。
図2に示すように、さまざまな文字データに割り当てられるUTF−8コードは、半角英数記号の文字(半角英数文字+半角記号)を表す文字コード、半角カナの文字を表す文字コード、全角文字を表す文字コードに分類することができる。分類された文字コードに対して、上記した「バイト数」および「エリアの数」が決定される。
【0030】
半角英数記号の文字を表す文字コードに対しては、先述の通り、UTF−8は対応する1文字を1バイトで表現するので、「バイト数」は「1」となる。また、先述の通り、EBCDIKは、半角英数文字および半角記号については、1文字を1バイトで表現するので、交換情報生成部13の機能により、「エリアの数」は「1」となる。
【0031】
半角カナの文字を表す文字コードに対しては、先述の通り、UTF−8は対応する1文字を3バイトで表現するので、「バイト数」は「3」となる。また、先述の通り、EBCDIKは、半角カナについては、1文字を1バイトで表現するので、交換情報生成部13の機能により、「エリアの数」は「1」となる。
【0032】
全角文字を表す文字コードに対しては、先述の通り、UTF−8は対応する1文字を3バイトで表現するので、「バイト数」は「3」となる。また、先述の通り、KEISは、全角文字については、1文字を2バイトで表現するので、交換情報生成部13の機能により、「エリアの数」は「2」となる。
【0033】
交換情報Eの内容は、現行コンピュータ2で取り扱う文字コード体系と、新規コンピュータ3で取り扱う文字コード体系との組み合わせによって決まる。
【0034】
≪処理≫
本実施形態の処理について説明する。この処理の主体は、作業用PC1の制御部であるが、説明の便宜上、「制御部」という語は省略する。
図3に示すように、作業用PC1は、現行コンピュータ2から新規コンピュータ3へのマイグレーションを行うにあたり、ステップS1から処理を開始する。
【0035】
ステップS1において、作業用PC1は、現行コンピュータ2から入力ファイル21および入力プログラム22を取得する。ステップS1の後、ステップS2に進む。
【0036】
ステップS2において、作業用PC1は、文字コード変換部11によって、取得した入力ファイル21中の文字データに対して、文字コードを、EBCDIK+KEISコードからUTF−8コードに変換し、出力ファイル31を生成する。ステップS2の後、ステップS3に進む。
【0037】
ステップS3において、作業用PC1は、プログラム変換部12によって、取得した入力プログラム22を出力プログラム32に変換する。ステップS3の後、ステップS4に進む。
【0038】
ステップS4において、作業用PC1は、UTF−8コードが割り当てられた文字データを出力プログラム32で読み込む。ステップS4の後、ステップS5に進む。
【0039】
ステップS5において、作業用PC1は、交換情報生成部13によって、ステップS4にて読み込まれた文字データについて、交換情報Eを生成する。ステップS5の後、ステップS6に進む。
【0040】
ステップS6において、作業用PC1は、エリア格納部14によって、交換情報Eが定めた数からなるエリア(出力プログラム32が指定するメモリ上のエリア)に、対応するUTF−8コード、つまり、ステップS4にて読み込まれた文字データに割り当てられたUTF−8コードを格納する。ステップS6の後、図3の処理を終了する。
【0041】
作業用PC1にて生成された出力ファイル31、出力プログラム32、および交換情報Eは、新規コンピュータ3に出力される。ここで、新規コンピュータ3にて、所定の業務処理を実行するために、出力プログラム32が出力ファイル31を開く場合を考える。この場合、出力プログラム32は、交換情報Eを参照して、出力プログラム32が指定するメモリ上のエリアに格納されているUTF−8コードに、出力プログラム32が定める順番でアクセスする。
【0042】
入力プログラム22は、入力ファイル21中の文字データのサイズ(項目の長さ)をバイト列のバイト数として扱い、バイト数と同じ数のエリアをメモリ上に指定して文字データのバイト列を格納していた。つまり、従来のように、現行コンピュータ2にて、入力プログラム22は、メモリ上に指定するエリアを、1バイトのデータを格納するためのエリアとし、バイト数単位で入力ファイル21中の文字データを処理することで、実質的に文字データを1文字ずつ順番に処理していた。
【0043】
EBCDIK+KEISコードからUTF−8コードに文字コードが変換されたことでバイト列のバイト数が変更した文字データに対して、交換情報Eは、出力プログラム32がメモリ上に指定するエリアの数を、入力プログラム22がメモリ上に指定していたエリアの数と同じにすることを可能にする。例えば、EBCDIK+KEISコードからUTF−8コードに変換されると、バイト列のバイト数が「2」から「3」に変更される全角文字の文字データに対して、出力プログラム32は、交換情報Eを参照することで、メモリ上に指定するエリアの数を、従来技術のように「3」ではなく、「2」にすることができる。エリア格納部14は、(連続する)2つ分のエリアに当該全角文字に割り当てられた1つのUTF−8コードを格納する。
【0044】
よって、出力プログラム32は、メモリ上に指定するエリアを、1バイトのデータを格納するためのエリアではなく、1文字のデータを格納するためのエリアとすることができ、文字数単位で出力ファイル31中の文字データを処理することができる。その結果、入力プログラム22が入力ファイル21中の文字データを1文字ずつ順番に処理するのと同様に、新規コンピュータ3にて、出力プログラム32は出力ファイル31中の文字データを1文字ずつ順番に処理することができる。つまり、文字データのサイズが異なる文字コードの変換を伴うマイグレーションを行ったとしても、出力プログラム32で組まれたロジックを入力ファイル21で組まれたロジックと同じままにすることができる。マイグレーションを行う作業者は、出力プログラム32のソースコードの記述内容のうち、ロジックに関する部分を修正する必要はない。
【0045】
なお、作業用PC1は、UTF−8コードが割り当てられた文字データのバイト列を1バイトずつ格納する規定個数分(例えば、全角文字であれば3個分)のエリア(1バイトのデータを格納するためのエリア)を、出力プログラム32がメモリ上に別途指定するように制御することができる。そして、作業用PC1は、エリア格納部14が1つのUTF−8コードを格納する1つまたは2つ分のエリアと、前記規定個数分のエリアとを紐づけるように制御する。よって、新規コンピュータ2にて、出力プログラム32が、エリア格納部14が格納したUTF−8コードにアクセスするとき、前記紐づけられたエリアに格納されているバイト列にアクセスすることで、対象となる文字データを処理することができる。
【0046】
≪具体例≫
図4図5を参照して、文字コード体系の切り替えを伴うマイグレーションによってプログラムを変換することの具体例を説明する。本具体例では、変換前プログラム(入力プログラム22に相当)も変換後プログラム(出力プログラム32に相当)もCOBOL言語で記述されている。変換前プログラムが扱う文字コードはEBCDIK+KEISコードであり、変換後プログラムが扱う文字コードはUTF−8コードである。
【0047】
図4には、従来技術としての比較例を示す。図4(a)の上部には、変換前プログラムのソースコードのうちデータ部ワーキング節の記述例が示されている。集団項目DATA‐Aのなかに、DATA‐A1およびDATA‐A2という変数(項目)がこの順番で宣言されている。
DATA‐A1において、「PIC X」は、1文字1バイトのデータ(EBCDIK)格納エリアをメモリ上に確保することを表しており、「(03)」は、このエリアが3つあることを表している(桁数は3)。よって、DATA‐A1に(半角文字)3文字分のデータを入力できる。
DATA‐A2において、「PIC N」は、1文字2バイトのデータ(KEIS)格納エリアをメモリ上に確保することを表しており、「(03)」は、このエリアが3つあることを表している(桁数は3)。よって、DATA‐A2に(全角文字)3文字分のデータを入力できる。
なお、COBOL言語は、変数を固定長で宣言する。
【0048】
図4(a)の下部には、上記記述例を具現化したエリアの模式図が示されている。1つのエリアを1つのボックスで表わすと、このボックスは、1バイトのデータ格納エリアを表している。この模式図によれば、変換前プログラムは、DATA‐A1に対して3バイト分のエリアをメモリ上に指定することで、DATA‐A1に3文字分のデータを入力できる。また、DATA‐A2に対して6バイト(2バイト×3)分のエリアをメモリ上に指定することで、DATA‐A2に3文字分のデータを入力できる。このように、変換前プログラムは、従来のように、文字データのバイト列が格納されるエリアを1バイトごとに指定しており、バイト数単位で文字データを処理する(左から順番にボックス内のバイト列に1つずつアクセスする)。
【0049】
ここで、マイグレーションにて文字コードを変換し、プログラムも変換する場合、1文字を表現するバイト列のバイト数が異なった文字データを間違いなく処理するために(目的とした文字データを確実に読み出すために)、従来技術では、変換後プログラムのロジックを手作業で修正する必要があった。
【0050】
図4(b)の上部には、変換後プログラムのソースコードのうちデータ部ワーキング節の記述例が示されている。プログラムの変換前後でロジックを同じにするためには、図4(a)の記述例に対して図中の下線部で示したような記述を追加する修正が必要である。
前記修正として、DATA‐A1については、桁数を3から9に変更している。このように桁数を変更させる理由は、EBCDIKが半角カナ1文字を1バイトで表現するのに対し、UTF−8は半角カナ1文字を3バイトで表現するため、DATA‐A1に半角カナ3文字分のバイト列が入力された場合に対応できるように(データの溢れを防ぐように)、DATA‐A1に9バイト分のエリア(3バイト×3文字)を持たせるためである。
また、前記修正として、DATA‐A2については、桁数を3から5に変更している。このように桁数を変更させる理由は、KEISが全角文字1文字を2バイトで表現するのに対し、UTF−8は全角文字1文字を3バイトで表現するため、DATA‐A2に全角文字3文字のバイト列が入力された場合に対応できるように、DATA‐A2に少なくとも9バイト分のエリア(3バイト×3文字)を持たせるためである。図4(b)の例では、DATA‐A2の桁数を5にすることで、DATA‐A2に10バイト分のエリアを持たせている。
【0051】
図4(b)の下部には、上記修正がなされた記述例を具現化したエリアの模式図が示されている。図4(b)に示すボックスは、図4(a)に示すボックス同様、1バイトのデータ格納エリアを表している。前記修正の結果、ボックスの数を増やすことで、DATA‐A1に3文字分のデータを入力できること、および、DATA‐A2に3文字分のデータを入力できること、という変換前プログラムの特性が変換後プログラムにおいても保持される。ただ、このようなボックスを増やすように、プログラムに組まれたロジックを修正することは、プログラム中のすべての変数に対して行う必要があるので、多大な作業量を必要とする。
【0052】
図5には、本実施例を示す。図5(a)は、図4(a)と同じである。つまり、変数DATA‐A1には3文字分のデータを入力でき、変数DATA‐A2には3文字分のデータを入力できる。
図5(b)の上部には、変換後プログラムのソースコードのうちデータ部ワーキング節の記述例が示されている。本実施例にてプログラムを変換する場合、すでに説明した交換情報Eが用いられる。
【0053】
すでに説明したように、交換情報Eによって、変換後プログラムがメモリ上に指定するエリアは、1バイトのデータを格納するためのエリアではなく、1文字のデータを格納するためのエリアとして機能する。このことは、図5(b)の下部に示すように、1つのボックスが、1つのエリアを半角英数記号カナ文字1文字のデータ格納エリアとして表すことと同義である。ここで、「半角英数記号カナ文字」という語は、半角英数文字、半角記号、および半角カナ文字をまとめた語である。半角英数記号カナ文字1文字のデータ格納エリアは、2つ並べると全角文字1文字のデータ格納エリアを表すことができる。
【0054】
したがって、図5(b)の記述例において、DATA‐A1の「PIC X(03)」は、半角英数記号カナ文字1文字のデータ(UTF−8)格納エリアをメモリ上に3つ確保することを表すことができる。このことは、図4(b)のように桁数を増やさなくても(ロジックを修正しなくても)、変数DATA‐A1には3文字分のデータ(UTF−8コードが割り当てられた文字データ)を入力できることを意味する。
【0055】
また、DATA‐A2の「PIC N(03)」は、全角文字1文字のデータ(UTF−8)格納エリアをメモリ上に3つ確保することを表すことができる。このことは、図4(b)のように桁数を増やさなくても(ロジックを修正しなくても)、変数DATA‐A2には3文字分のデータ(UTF−8コードが割り当てられた文字データ)を入力できることを意味する。
【0056】
すでに説明したように、1つまたは2つの半角英数記号カナ文字1文字のデータ格納エリアには、1つのUTF−8コードが格納される。よって、所定の業務処理の実行の際、変換後プログラムは、エリアに格納されたUTF−8コードに所定の順番でアクセスすれば、文字数単位で文字データを処理することができる。
【0057】
このように、交換情報Eを用いることで、変換後プログラムがメモリ上に指定するエリアの取り扱いを変えることで、プログラムに組まれたロジックを修正する、といった多大な作業量を無くすことができる。
【0058】
≪まとめ≫
本実施形態によれば、変換した出力プログラム32は、文字コードの変換によって、1文字を表現するバイト列のバイト数が異なった文字データを処理する際、交換情報Eを参照することで、入力プログラム32が使用したエリアの数と同じ数のエリアを使用することができる。つまり、出力プログラム32は、メモリ上に指定するエリアを、1文字のデータを格納するための1または複数のエリアとし、文字数単位で文字データを処理することができる。よって、出力プログラム32で組まれたロジックを入力プログラム32で組まれたロジックと同じにすることができ、出力プログラム32のソースコードの記述内容のうち、ロジックに関する部分を修正する必要はない。
したがって、異なる文字コード体系への切り替えが伴うマイグレーションにおいて、マイグレーションの対象となるプログラムの変換を容易にすることができる。
【0059】
≪その他≫
本実施形態では、EBCDIKおよびKEISを用いた文字コード体系から、UTF−8を用いた文字コード体系への切り替えが伴うマイグレーションについて説明した。しかし、JIS8およびSJISを用いた文字コード体系から、UTF−8を用いた文字コード体系への切り替えが伴うマイグレーションについても本発明を適用できる。
【0060】
なお、JIS8は、半角英数文字、半角記号、および半角カナ文字については、1文字を1バイトで表現する(バイト数=1)。SJISは、全角文字については、1文字を2バイトで表現する(バイト数=2)。
【0061】
また、本実施形態では、エリア格納部14が、出力プログラム32が指定するメモリ上のエリアにUTF−8コードを格納していた。しかし、UTF−8コードではなく、該当文字データを識別できる任意の形式のデータを格納することも可能である。
【0062】
また、本実施形態では、交換情報生成部13が交換情報Eを生成する際、出力プログラム32が読み込む、UTF−8コードが割り当てられた文字データは、例えば、出力ファイル31から抽出した文字データとした。しかし、例えば、作業用PC1が、所定の文字集合(例えば、UTF−8を取り扱うオープン系サーバコンピュータへのマイグレーションの場合、現存するすべての文字からなる文字集合)に含まれるすべての文字について、交換情報Eを生成するために、UTF−8コードが割り当てられた文字データを外部から事前に取得しておき、取得した文字データを出力プログラム32に読み込ませてもよい。
【0063】
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【0064】
1 作業用PC(マイグレーション支援装置)
11 文字コード変換部
12 プログラム変換部
13 交換情報生成部
14 エリア格納部
2 現行コンピュータ(第1のコンピュータ)
21 入力ファイル(第1の文書ファイル)
22 入力プログラム(第1のプログラム)
3 新規コンピュータ(第2のコンピュータ)
31 出力ファイル(第2の文書ファイル)
32 出力プログラム(第2のプログラム)
T 文字コード変換表
E 交換情報
図1
図2
図3
図4
図5