説明

ソフトウェア資源移行システム及び同移行方法

【課題】ホストプログラムを変更することなくダウンサイジングすること。
【解決手段】ダウンサイジング用コンパイラ290が、ホストプログラムソースのOS又は入出力命令文に対応する複数のランタイムを格納したランタイムテーブルを備え、入力したホストプログラムソースにランタイムテーブルに格納された前記OS等が含まれていると判定したとき、前記ランタイムをコンパイラのパラメタとして指定してホスト用のプログラムソースを読み込み、これをトークンに分解してオブジェクトコードを生成し、該オブジェクトコードの命令文にランタイム呼出が必要と判定し且つコンパイルにパラメタ指定があると判定したとき、ランタイムテーブルに格納したランタイムを呼び出すようにオブジェクトコードを生成し、該生成したオブジェクトコードをコンパイルしたサーバ実行オブジェクトに挿入してダウンサイジングを行うもの。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、COBOL等の過去のメインフレームに採用されたソフトウェア資源をオープン環境にダウンサイジング(リホスト)するためのソフトウェア資源移行システム及び同移行方法に係り、特にプログラム、JCL、帳票定義(書式)、画面定義、データをオープン環境に容易にダウンサイジングすることができるソフトウェア資源移行システム及び同移行方法に関する。
【背景技術】
【0002】
近年のコンピュータの性能向上および低価格化などにより、経費削減のため、従来のコンピュータシステムを汎用大型のメインフレームと呼ばれるホストからサーバへダウンサイジングするケースが増えている。この既存のコンピュータシステムはレガシーシステムと呼ばれ、例えばメインフレームと呼ばれる汎用機やオフィスコンピュータのシステムを示し、このレガシーシステムを構成しているリソースには、ホスト用のプログラム、JCL、COPY句(ファイル定義)、帳票/画面定義が含まれている。近年、このレガシーシステムを新しいオープン系システムに移行させる技術が、例えば下記特許文献1にて提案されている。
【0003】
この特許文献1には、メインフレーム用アプリケーションをクライアントで利用する際にクライアントの画面に表示されるフィールドを定義するメインフレーム毎のメインフレーム用画面定義体に基づいて、クライアントの画面に表示されるフィールドの配置などの画面構成情報を複数のメインフレームに対応可能な汎用画面フォームとして作成する手段と、メインフレーム用画面定義体に基づいて、クライアントの画面に表示されるフィールドの属性を複数のメインフレームに対応可能な汎用画面データとして作成する手段と、汎用画面フォームと汎用画面データとを融合してクライアントの入力画面を作成して汎用的通信規格を介してクライアントに送信する手段とをサーバに設け、メインフレームのアプリケーション資産を生かしてオープン環境に移行するダウンサイジング技術が記載されている。
【先行技術文献】
【特許文献】
【0004】
特開2004−355413号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述の従来のダウンサイジング技術は、例えばホストからサーバへのダウンサイジングにおいて、ホスト上のCOBOLプログラムをサーバ上で動作できるようにサーバ用のCOBOLプログラムに変換するものであり、例えばホスト用のCOBOLプログラムソースを文法の違いを訂正する様に変換してサーバ用COBOLプログラムソースに変換し、これをコンパイラによって機械語に翻訳したサーバ用オプジェクトプログラムに変換して行われていた。このホスト用COBOLプログラムとサーバ用COBOLプログラムとの主な違いは、例えば取り扱う周辺機器や文字コードや用意されているユーティリティプログラムの相違に対応する様に文法が定義されている点である。
【0006】
この従来技術によるダウンサイジング技術は、業務アルゴリズムの変更が発生する可能性があると共に、プログラム以外のソフトウェア資産(JCL、帳票定義[書式]または画面定義、データ)との相互の関連性を考慮しないため、プログラム以外のソフトウェア資産のホストからサーバへの移行について、個別に移行方法を検討して移行を実施する必要があると言う不具合があった。尚、JCLとは、Job Control Languageの略であって、メインフレームでバッチ処理を行なう際に、システムに対して実行するジョブの名前や使用する装置などを伝える言語を言う。
【0007】
また、従来技術は、前述のようにプログラムを変換することに加え、プログラム以外のソフトウェア資産を個別に移行する必要があることから、ホストからサーバへのダウンサイジング作業時間およびコストがかかるという不具合もあった。
【0008】
更に従来技術は、ダウンサイジング作業におけるその結果の妥当性検証では、プログラムとプログラム以外のソフトウェア資産の移行において相互の資産の関連性がなくなっているため、ファイルの妥当性検証が容易ではなく、手作業主体となり、短期間且つ低コストで検証作業を行うことが難しいと言う不具合もあった。
【0009】
本発明の目的は、コンピュータシステムのソフトウェア資産移行、例えばホストからサーバへのダウンサイジング作業において、ホスト上のプログラムの主要部を変更することなく移行し、プログラム以外のソフトウェア資産(JCL、帳票定義[書式]または画面定義、データ)はホスト環境におけるプログラムとの関連性を保つように自動変換で移行することを実現し、短期間、低コストでソフトウェア資産移行を行うことができるソフトウェア資源移行システム及び同移行方法を提供することである。
【課題を解決するための手段】
【0010】
前記目的を達成するために本発明は、ホストシステムのコンピュータが動作するホスト用文法により命令文が書かれたホストプログラムソースをサーバプログラムソースとし、該サーバプログラムソースを機械語の実行オブジェクトにコンパイルするダウンサイジング用コンパイラを備えるソフトウェア資源移行システムであって、
前記ダウンサイジング用コンパイラが、
前記ホストプログラムソースのOS又は入出力に関与する命令文と該命令文に対応する複数の処理方法情報毎のソフトウェアモジュールであるランタイム名を格納したランタイムテーブルと、該ランタイム名に対応するランタイムを格納する第1のメモリとを有し、
前記ホストプログラムソースを入力とし、該ホストプログラムソースに前記ランタイムテーブルに格納されたOS又は入出力に関与する命令文が含まれているか否かを判定する第1工程と、
該第1工程においてOS又は入出力に関与する命令文が含まれていると判定したとき、前記ランタイムテーブルの命令文に対応する処理方法情報に対応するランタイム名により指示されたランタイムをコンパイラのパラメタとして指定する第2工程と、
前記ホスト用のプログラムソースを読み込み、プログラミング言語においてソースコード中の文字列の中で意味を持つ最小単位の字句であるトークンに分解する第3工程と、
該第3工程により分解したトークンの列を基にプログラムの木構文を構築し、該構築したプログラムの木構文からコンパイラがソースコードを処理した結果生成される中間的なコード表現であるオブジェクトコードを生成する第4工程と、
該第4工程により生成したオブジェクトコードの命令文にランタイム呼出が必要か否かを前記ランタイムテーブルに該当命令文の処理が格納されているかによって判定する第5工程と、
該第5工程によってランタイム呼出が必要と判定したとき、前記命令文のコンパイルにパラメタ指定があるか否かを前記ランタイムテーブルを参照して判定する第6工程と、
該第6工程において命令文のコンパイルにパラメタ指定があると判定したとき、前記第1のメモリに格納したランタイムを呼び出すようにオブジェクトコードを生成し、該生成したオブジェクトコードをコンパイルしたサーバ実行オブジェクトに挿入する第7工程を実行することを第1の特徴とする。
【0011】
また本発明は、前記第2の特徴のソフトウェア資源移行システムにおいて、前記ホストシステムのコンピュータにより特定の機能を実行するユーティリティーソフトウェアを格納する第2のメモリと、該第2のメモリに格納したユーティリティーソフトウェアを起動するプログラムであるJCLを格納するJCLメモリと、サーバシステムのコンピュータにおいて前記ホストシステムのユーティリティーソフトウェアと同機能のユーティリティーソフトウェアを格納する第3のメモリと、前記ホストシステムの第2のメモリに格納したユーティリティーソフトウェアの名称と該名称のユーティリティーソフトウェアと同機能のユーティリティーソフトウェアが前記第3のメモリに格納されているか否かを示す有無情報を格納するユーティリティーテーブルと、ホストシステム用のJCLをサーバ用に変換するための変換ルール情報を格納するJCL変換ルールメモリと、前記JCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換するJCL変換ツールとを有し、
前記JCL変換ツールが、
前記JCLメモリに格納したJCLを読み込み、該読み込んだJCLが起動するユーティリティーソフトウェアが、前記第3のメモリに格納されているか否かを前記ユーティリティーテーブルの有無情報を参照して判定する第8工程と、
該第8工程において読み込んだJCLが起動するユーティリティーソフトウェアが第3のメモリに格納されていると判定したとき、前記JCL変換ツールにより、JCL変換ルールメモリに格納した変換ルール情報に基づいてJCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換する第9工程とを実行することを第2の特徴とする。
【0012】
また本発明は、前記第1又は第2のソフトウェア資源移行システムにおいて、前記サーバシステムが、ホストシステム用の帳票情報及び画面情報を左上を基点とした座標値と該座標値から延長する方向及び寸法値を規定するベクトル情報を格納する画面帳票情報メモリと、該画面帳票情報メモリに格納したベクトル情報を基に、サーバシステム用の帳票情報及び画面情報に変換する画面帳票変換ツールとを有し、
該画面帳票変換ツールが、
前記画面帳票情報メモリに格納したベクトル情報の座標値と寸法値とを基に、画面帳票の左上を基点とした描画を開始する開始座標値と該描画を終了する終点座標値に変換する第10工程を実行することを第3の特徴とする。
また本発明は、前記何れかの特徴のソフトウェア資源移行システムにおいて、前記ホストシステムが、ホストプログラムソースを機械語のホスト実行プログラムに実行するホストコンパイラと、データを入力として前記ホストコンパイラを実行した結果であるホスト結果ファイルデータを出力するホストコンピュータとを有し、
前記サーバシステムが、前記データを入力とし、前記ダウンサイジング用コンパイラが機械語にコンパイルしたサーバ実行オブジェクトを実行してサーバ結果ファイルデータを出力するサーバコンピュータと、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを比較する比較ツールとを有し、
前記サーバシステムの比較ツールが、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを1バイト単位で比較し、不一致の結果ファイルを出力する第11工程を実行することを第4の特徴とする。
【0013】
更に本発明は、ホストシステムのコンピュータが動作するホスト用文法により命令文が書かれたホストプログラムソースをサーバプログラムソースとし、該サーバプログラムソースを機械語の実行オブジェクトにコンパイルするダウンサイジング用コンパイラを備え、ダウンサイジング用コンパイラが、前記ホストプログラムソースのOS又は入出力に関与する命令文と該命令文に対応する複数の処理方法情報毎のソフトウェアモジュールであるランタイム名を格納したランタイムテーブルと、該ランタイム名に対応するランタイムを格納する第1のメモリとを有するソフトウェア資源移行システムの資源移行方法であって、
前記ダウンサイジング用コンパイラに、
前記ホストプログラムソースを入力とし、該ホストプログラムソースに前記ランタイムテーブルに格納されたOS又は入出力に関与する命令文が含まれているか否かを判定する第1工程と、
該第1工程においてOS又は入出力に関与する命令文が含まれていると判定したとき、前記ランタイムテーブルの命令文に対応する処理方法情報に対応するランタイム名により指示されたランタイムをコンパイラのパラメタとして指定する第2工程と、
前記ホスト用のプログラムソースを読み込み、プログラミング言語においてソースコード中の文字列の中で意味を持つ最小単位の字句であるトークンに分解する第3工程と、
該第工程3により分解したトークンの列を基にプログラムの木構文を構築し、該構築したプログラムの木構文からコンパイラがソースコードを処理した結果生成される中間的なコード表現であるオブジェクトコードを生成する第4工程と、
該第4工程により生成したオブジェクトコードの命令文にランタイム呼出が必要か否かを前記ランタイムテーブルに該当命令文の処理が格納されているかによって判定する第5工程と、
該第5工程によってランタイム呼出が必要と判定したとき、前記命令文のコンパイルにパラメタ指定があるか否かを前記ランタイムテーブルを参照して判定する第6工程と、
該第6工程において命令文のコンパイルにパラメタ指定があると判定したとき、前記第1のメモリに格納したランタイムを呼び出すようにオブジェクトコードを生成し、該生成したオブジェクトコードをコンパイルしたサーバ実行オブジェクトに挿入する第7工程を実行させることを第5の特徴とする。
【0014】
また本発明は、前記第5の特徴のソフトウェア資源移行方法において、前記ホストシステムのコンピュータにより特定の機能を実行するユーティリティーソフトウェアを格納する第2のメモリと、該第2のメモリに格納したユーティリティーソフトウェアを起動するプログラムであるJCLを格納するJCLメモリと、サーバシステムのコンピュータにおいて前記ホストシステムのユーティリティーソフトウェアと同機能のユーティリティーソフトウェアを格納する第3のメモリと、前記ホストシステムの第2のメモリに格納したユーティリティーソフトウェアの名称と該名称のユーティリティーソフトウェアと同機能のユーティリティーソフトウェアが前記第3のメモリに格納されているか否かを示す有無情報を格納するユーティリティーテーブルと、ホストシステム用のJCLをサーバ用に変換するための変換ルール情報を格納するJCL変換ルールメモリと、前記JCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換するJCL変換ツールとを設け、
前記JCL変換ツールに、
前記JCLメモリに格納したJCLを読み込み、該読み込んだJCLが起動するユーティリティーソフトウェアが、前記第3のメモリに格納されているか否かを前記ユーティリティーテーブルの有無情報を参照して判定する第8工程と、
該第8工程において読み込んだJCLが起動するユーティリティーソフトウェアが第3のメモリに格納されていると判定したとき、前記JCL変換ツールにより、JCL変換ルールメモリに格納した変換ルール情報に基づいてJCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換する第9工程とを実行させることを第6の特徴とする。
【0015】
また本発明は、前記第5又は第6の特徴のソフトウェア資源移行方法において、前記サーバシステムに、ホストシステム用の帳票情報及び画面情報を左上を基点とした座標値と該座標値から延長する方向及び寸法値を規定するベクトル情報を格納する画面帳票情報メモリと、該画面帳票情報メモリに格納したベクトル情報を基に、サーバシステム用の帳票情報及び画面情報に変換する画面帳票変換ツールとを設け、
該画面帳票変換ツールに、
前記画面帳票情報メモリに格納したベクトル情報の座標値と寸法値とを基に、画面帳票の左上を基点とした描画を開始する開始座標値と該描画を終了する終点座標値に変換する第10工程を実行させることを第7の特徴とする。
【0016】
また本発明は、前記何れかの特徴のソフトウェア資源移行方法において、前記ホストシステムに、ホストプログラムソースを機械語のホスト実行プログラムに実行するホストコンパイラと、データを入力として前記ホストコンパイラを実行した結果であるホスト結果ファイルデータを出力するホストコンピュータとを設け、
前記サーバシステムに、前記データを入力とし、前記ダウンサイジング用コンパイラが機械語にコンパイルしたサーバ実行オブジェクトを実行してサーバ結果ファイルデータを出力するサーバコンピュータと、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを比較する比較ツールとを設け、
前記サーバシステムの比較ツールに、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを1バイト単位で比較し、不一致の結果ファイルを出力する第11工程を実行させることを第8の特徴とする。
【発明の効果】
【0017】
本発明によるソフトウェア資源移行システム及び同移行方法は、ダウンサイジング用コンパイラが、ホストプログラムソース内の命令文にランタイムテーブルに格納されたOSや入出力に関与する命令文が含まれているとき、ランタイムテーブルの命令文に対応する処理方法情報に対応するランタイム名により指示されたランタイムをコンパイラのパラメタとして指定し、ランタイム呼出が必要と判定したパラメタ指定があると判定したとき、ランタイムを呼び出すようにオブジェクトコードを生成し、該生成したオブジェクトコードをコンパイラした機械語に挿入することによって、ホスト上のプログラムの主要部を変更することなくダウンサイジングを行うことができる。また、コンピュータシステムのソフトウェア資産移行、例えばホストからサーバへのダウンサイジング作業において、ホスト上のソフトウェア資産であるデータファイルを移行する場合、プログラムを変更することなくサーバ上で動作することと連携して、サーバ上のデータファイルのデータ形式をホストと同形式(EBCDIC)とすることによって、ソフトウェア資産をサーバ上で動作可能とする。
【0018】
更に本発明によれば、JCL変換ツールが、変換ルール情報を参照してホスト用のJCLをサーバ用のJCLに変換することや、ホストシステム用のベクトル形式の帳票情報及び画面情報を、サーバ用の座標指定形式の帳票情報及び画面情報に変換することによって、ホスト上のプログラムの主要部を変更することなくダウンサイジングを行うことができる。
【図面の簡単な説明】
【0019】
【図1】本発明の一実施形態によるソフトウェア資源移行システムを示す図。
【図2A】本実施形態によるプログラム移行の処理動作例を示すフロー図。
【図2B】本実施形態によるプログラム移行のコンパイラに係る処理動作例を示すフロー図。
【図2C】本実施形態によるJCL変換の処理動作例を示すフロー図。
【図2D】本実施形態による帳票(画面)変換の処理動作例を示すフロー図。
【図2E】本実施形態による帳票(画面)移行後の処理動作例を示すフロー図。
【図2F】本実施形態による検証の処理動作例を示すフロー図。
【図3】本実施形態によるコンパイラによるソフトウェア資産をサーバ上に移行する例を示す処理フロー図。
【図4】本実施形態によるホストと同形式のソフトウェア資産をサーバ上に移行する例を示す処理フロー図。
【図5】本実施形態によるユーティリティーの移行例を示す処理フロー図。
【図6】本実施形態によるJCL変換の処理動作例を示すフロー図。
【図7】本実施形態によるJCLとプログラムの連携例を示す図。
【図8】本実施形態による帳票(画面)変換例を示す図。
【図9】本実施形態によるダウンサイジング後の帳票(画面)出力例を示す図。
【図10】本実施形態によるダウンサイジング作業の妥当性を検証するときの結果データ比較例を示す図。
【発明を実施するための形態】
【0020】
以下、本発明によるソフトウェア資源移行システム及び同移行方法の一実施形態を図面を参照して詳細に説明する。
[構成]
図1は、本発明によるソフトウェア資産移行、例えばホストシステム100からサーバシステム200へのダウンサイジング作業におけるプログラムとJCL、帳票/画面定義のダウンサイジング実施と、ダウンサイジング後のプログラム実行における結果ファイルのデータ検証を行うソフトウェア資源移行システムの全体構成を示す図であって、本ソフトウェア資源移行システムは、レガシーシステムであるホストシステム100と、該ホストシステム100と接続され、ホストシステム100のソフトウェア資源が移行されるサーバシステム200とから構成される。
【0021】
前記ホストシステム100は、機械語である実行オブジェクト161を実行するホストコンピュータ160と、プログラムソース121/画面・帳票情報122/ユーティリティー(ソフトウェア)123/JCL124とを含むホスト資産120と、ホストコンピュータ160が処理対象とするデータであるファイル141及び142とを含むホスト入力ファイル140と、ジョブ起動130により実行処理されたジョブの結果であるファイル151及びスプール(データ)152を含むホストの結果ファイル150と、前記プログラムソース121をホストコンピュータ160に実行させるためにコンパイルするコンパイラ110とから構成される。
【0022】
前記サーバシステム200は、サーバ実行オブジェクト271を含むサーバコンピュータ270と、プログラムソース211/画面・帳票情報212/ユーティリティー213/変換後のJCLスプリクト214とを含むサーバ資産210と、処理対象となるデータであるファイル241及び252を含むサーバ入力ファイル250と、処理結果のデータであるファイル261及びスプール(データ)262を含むファイルサーバ結果ファイル260と、前記ホストシステム100のホスト結果ファイル150をダウンロードして格納するホスト結果ファイル230と、同様にホスト入力ファイル140をダウンロードして格納するホスト入力ファイル220と、前記ホスト資産120の画面・帳票情報122をサーバ用に変換して前記サーバ資産210に格納する変換ツール270と、前記ホストのJCL124をサーバ用に変換して前記サーバ資産210に格納する変換ツール272と、前記サーバが処理した結果ファイル260とホストが処理した結果ファイル230を比較して検証し、比較結果のレポート281及び実行LOG282を出力する比較ツール273とを備える。尚、前述した各構成は、コンピュータのハードウェア又はソフトウェアによって構成されるものである。
【0023】
この様に構成したソフトウェア資源移行システムは、次に述べる機能を有する。
(1)機能A:
本例のダウンサイジング実施においては、移行対象のホストシステム100上のプログラムソース121を変更せずにサーバシステム200へそのまま移行して、サーバ上の資産であるプログラムソース211とする。移行対象のホスト上の帳票/画面・帳票情報122は、変換ツール270により変換し、サーバ上の資産である帳票/画面・帳票情報212とする。ホストのユーティリティー(ソフトウェア)123は、サーバ上にホストと同等機能のサーバ用のユーティリティー213を用意する。移行対象のホスト上のJCL124は変換ツール272により変換し、サーバ上の資産としてJCLスクリプト214とする。
【0024】
(2)機能B:
ホストシステム100上でプログラムソース121および帳票/画面・帳票情報122を入力として、ホストのコンパイラ110で機械語にコンパイルすることにより、ホスト上の実行オブジェクトプログラムを作成する。このサーバ上の資産となったプログラムソース121および帳票/画面・帳票情報122を入力として、ホストと同様の手順により、本実施形態によるダウンサイジング用コンパイラ290でコンパイルすることにより、サーバ上の実行オブジェクトを作成する。
【0025】
(3)機能C:
ホスト上のJCL124により該当プログラムのジョブ130を起動することにより、ホスト上の入力ファイル140(本例ではファイルA、ファイルB)を入力し、該当プログラムの実行オブジェクトを実行し、ホスト上に結果ファイル150(本例ではファイルC、スプール)を出力し、ホストシステム100上の入力ファイル140(ファイルA、ファイルB)および結果ファイル150(ファイルC、スプール)をホストからサーバシステム200へダウンロードして、サーバシステム200上にホストの入力ファイル220(ファイルA、ファイルB)および結果ファイル230(ファイルC、スプール)を作成する。そして、入力ファイル220(ファイルA、ファイルB)をコピーしてサーバの入力ファイル250(ファイルA′、ファイルB′)を用意する。
【0026】
(4)機能D:
サーバシステム200上のJCLスクリプト214から該当プログラムのジョブを起動することにより、サーバ上の入力ファイル(ファイルA′、ファイルB′)を入力し、該当プログラムの実行オブジェクトを実行し、サーバ上に結果ファイル(ファイルC′、スプール)を出力する。
【0027】
(5)機能E:
サーバシステム200上での処理による結果ファイル260(ファイルC′、スプール)とホストシステム100上での処理による結果ファイル230(ファイルC、スプール)とを比較ツール273により比較することによって、サーバシステムの同値性比較を実施する機能。この比較により同値性検証を行って、ダウンサイジングの妥当性を検証することができる。
【0028】
[プログラムソース移行の説明]
次に本実施形態によるホストシステム100のソフトウェア資産であるプログラムの移行処理手順を図2A及び図2Bを参照して説明する。このプログラムの移行処理手順は、ダウンサイジング用コンパイラ290が、ホスト側のプログラムを変更することなくサーバ側で動作するための処理であって、図2Aに示す如く、ホストのプログラムソースを読み込むステップS11と、プログラムソースが読み込み終了かどうかの判定を行うステップS12と、プログラムソースが読み込み終了か否かを判定し、終了と判定したときに後述するステップS17に移行するステップS12と、該ステップS12において終了でないと判定したとき、該当のプログラムソースについて、資産移行に影響するOSや入出力等に関係した命令文かどうかの判定を行い、これら命令文でないと判定したとき、ステップS11に戻るステップS13とを実行する。このステップS13は、ソフトウェア資産であるプログラムを実行する際に必要となるソフトウェアモジュール(部品)であるランタイムに関して、下記表1のランタイムテーブルの例に示すように該当の命令文が存在するかどうかを判定するものである。尚、ランタイム(run−time)とは、複数のプログラムで共通して行うことができる処理を1つの部品(モジュール)にまとめたソフトウェアモジュール(部品)のことを言い、このランタイムテーブルは、ホスト用プログラムソースの命令文と該命令文による処理内容とケース毎の処理方法情報と該処理方法情報に応じて実行するランタイム名との関係を格納したものであり、例えばホスト用プログラムソースの命令文「WRITE命令」の処理内容が「変換後の文字コード」であり、シフトJISを使用する処理方法情報がケース1のランタイム名が「RUNTIME31」であることを示している。
【0029】
【表1】

【0030】
次いで本プログラム移行処理手順は、ステップS13により該当のプログラムソースがOSや入出力等に関係した命令文と判定したとき、サーバ側にOS/入出力等に該当したランタイムライブラリが存在するかどうかの判定を行い、存在しないと判定したとき、後述するステップS16に移行するステップS14を実行する。このステップS14は、表1のランタイムテーブルの例に示すように該当命令文の中の該当ケース毎の処理方法情報を持つランタイムが存在するかどうかを判定することによって行う。尚、ランタイム名に対応するランタイムは、ダウンサイジング用コンパイラ290のメモリに格納されている。
【0031】
本プログラム移行処理手順は、前記ステップS14において該当のランタイムが存在しないと判定したとき、新規にサーバの該当ランタイムを作成し、当該新規ランタイムを表1のランタイムテーブルに追加するステップS15と、サーバの該当ランタイムのインタフェースを指定する(具体的には、表1のランタイムテーブルにある該当処理のケースをコンパイラのパラメタとして指定)ステップS16と、前記ステップS12において読み込みが終了と判定したとき、ホストのプログラムをサーバ向けにコンパイルするステップS17とを実行する。
【0032】
該ステップS17によるコンパイル処理は、図2Bに示す如く、既知のコンパイラ処理であるステップS17aを実行する。このステップS17aは、サーバのプログラムソースの読み込み/読み込み終了の判定/終了していないとき、ソースコードを読み込んでトークン[プログラミング言語においてソースコードに出現する文字列の中で意味を持つ最小単位の字句]に分解することにより字句を解析し、トークン列をもとにプログラムの木構文を構築する構文解析やプログラム木構文からオブジェクトコード[コンパイラがソースコードを処理した結果生成される中間的なコード表現]生成を行う一連の処理)の一連の処理である。このステップS17aを実行した後、本実施形態によるコンパイル処理は、プログラムソースを変更しないことを前提に表1のランタイムテーブルに該当命令文の処理が存在するか否かを判定することによって、命令文がサーバ側のOS/入出力等に関連した処理に対応するプログラムの命令文はランタイム呼出が必要か否かを判定し、必要でないと判定したときに処理を終了するステップS18と、表1のランタイムテーブルに該当命令文の該当ケースについてコンパイルのパラメタ指定(パラメタ定義ファイルでも良い)があるかどうかを判定することにより、プログラムの該当命令文の該当ケースがコンパイルのパラメタ指定ありか否かを判定し、ないと判定したときに処理を終了するステップS19と、該ステップS19においてパラメタ指定があると判定したとき、表1のランタイムテーブルに存在する命令文の処理の該当ケースについてコンパイルのパラメタに基づいて、該当処理のランタイムを呼ぶようにオブジェクトコードを生成することにより、該当ランタイムを呼ぶオブジェクトコードを生成し、ステップS17aに戻るステップS20とを順次実行する。
【0033】
これら一連の処理によって本実施形態によるソフトウェア資源移行システムは、ランタイムを呼ぶオブジェクトコードを生成することができる。
【0034】
このランタイムを呼ぶオブジェクトコード生成の具体例を図3を参照して説明する。図3は、プログラムソースを変更することなく、サーバ側のOS/入出力等に関連した処理に対応する例として、ダウンサイジング用コンパイラによってデータのコード変換を行う該当のランタイムを呼ぶようにオブジェクトコードを生成する例を説明するための図である。
【0035】
まず、図3上段に示すホストシステム100における処理の場合、EBCDICを意識したコーディングを有するプログラムの例として、プログラムの中である項目エリアDATAを判定している16進のX’C1’はEBCDICの’A’を指しており、項目エリアDATAがEBCDICの’A’のときにWRITE処理を行うことがあり、このホストのプログラムを変更せずにサーバへコピーして移行する場合、図2Bで示したダウンサイジング用コンパイラでコンパイルを行う。このとき、サーバシステム上のプログラムは項目エリアDATAが’A’(16進のX’C1’)のときWRITE処理を行うようにするべきであるが、プログラムが取り扱うデータがシフトJISの場合’A’は16進のX’41’のため、プログラム中の判定で16進のX’C1’と不一致になり、ホスト処理と同じようにWRITE処理を行うことができなくなる。
【0036】
これを解決するため、本実施形態においてはダウンサイジング用コンパイラ向けのパラメタとしてのオープン系入出力装置のインタフェースについて「READ命令のケース1」と「WRITE命令のケース1」の指定を受けて、ダウンサイジング用コンパイラがREAD命令の後に、図3下段に示す如く、入力したシフトJISデータをEBCDICデータへコード変換するランタイム(表1の例ではRUNTIME41)を呼び出すように図2BのステップS20によりオブジェクトコードを生成する。
【0037】
また、WRITE命令の前に、出力するEBCDICデータをシフトJISデータへコード変換するランタイム(表1の例ではRUNTIME31)を呼び出すようにオブジェクトコードを生成する。表3にEBCDICデータとシフトJISデータの間の相互のコード変換に使用するコード変換テーブルの例を示す。
【0038】
【表3】

【0039】
このようにして、本実施形態によるソフトウェア資源移行システムは、プログラムソースを変更することなくコンパイルを行って移行資産をサーバ上で動作可能とすることができる。
【0040】
次に前記図3の活用例を図4を参照して説明する。図4は、プログラムソースを変更しないために、プログラム内で取り扱うデータのデータ形式をホストと同形式(EBCDIC)とすることにより、ソフトウェア資産をサーバ上に移行し実行する例を示す処理フローである。
【0041】
まず、ホストシステムでは、ホスト上のプログラム内および外部システム10、ホスト系プリンタ11、MT12等で取り扱うデータ形式はEBCDICとなっている。これをサーバへ移行するときにおいて、プログラムを変更しないために、プログラム内部で取り扱うデータ形式をホストと同形式とする。ただし、オンライン端末16やオープン系プリンタ17とのやり取りはオープン系のコードであるシフトJIS(SJIS)コード等へ変換する必要がある。
【0042】
このため、本ソフトウェア資源移行システムは、前述の図2Aおよび図2Bで述べたようにプログラムにおいてオープン系入出力等に関係した命令があるときはコード変換処理(EBCDIC←→SJIS)のランタイムを呼ぶようにコンパイルすることにより、ホスト上のソフトウェア資産であるプログラムおよびデータを変更することなく、プログラムとデータの関連性を保って資産移行してサーバ上で動作可能とすることができる。
【0043】
[JCL変換の説明]
次に本実施形態によるJCL変換を図2Cを参照して説明する。図2Cは、ホストシステムからサーバシステムへのダウンサイジング作業において、ホスト上のプログラム以外のソフトウェア資産であるJCLに対する変換ツール272による変換処理動作例を示すフローチャートである。
【0044】
この変換処理動作は、図2Cに示す如く、ホストシステムのJCL124を読み込むステップS21と、次にJCLが読み込み終了かどうかの判定を行い、終了と判定したときに処理を終了するステップS22と、該ステップS22において終了でないと判定したとき、下記表2のユーティリティーテーブルに該当機能のユーティリティー(ソフトウェア)が存在するかどうかを判定することにより、該当JCL文中の起動プログラムがユーティリティーかどうかの判定を行い、存在しないと判定したときに処理を終了するステップS23を実行する。尚、表2は、ソートやマージ等の機能に対応するユーティリティー名とサーバシステム上での相当するユーティリティー(ソフトウェア)が存在するか否かを格納したテーブルであり、変換ツール272に含まれるものであるが、これに限られるものではない。
【0045】
【表2】

【0046】
前記ステップS23において該当機能のユーティリティーが存在すると判定したとき、本変換処理動作は、表2のユーティリティーテーブルに存在する該当のユーティリティーについてサーバ上の作成有無が有か否かを判定することによって、サーバ側に該当ユーティリティーと同等機能が用意されているかどうかの判定を行い、用意されていると判定したとき、後述のステップS26に移行するステップS24と、該ステップS24により該当ユーティリティーと同等機能が用意されていないと判定したとき、新規にサーバの該当ユーティリティーを作成し、表2のユーティリティーテーブルのサーバ上の作成有無を有に更新するステップS25と、図6に示す処理によってサーバ向けJCLスクリプトへ変換(表4のJCL変換ルールのように変換前JCLを変換後JCLへ変換)し、前記ステップS21に戻るステップS26とを実行する。
【0047】
【表4】

【0048】
前記表4に示すJCL変換ルールは、ホスト用プログラムソースでは「//ジョブ名 JOB パラメタ」を「% JOB ジョブ名 パラメタ」に変換する如く、先頭記号の変換とジョブ名項目とジョブ名の順番を変更することである。
【0049】
このJCL変換ルールによる具体的変換例は、図7に示す如く、例えば図7(a)に示すホスト用プログラムソースにおいて「PROGRAM−ID」として「PROGRAM1」が指定され、図7(b)に示す如く、前記「PROGRAM1」の入力データのファイルとして「INP01」、出力データのファイルとして「OUT01」が指定され、JCLにおいて、入力データのファイル「INP01」のデータセット名(DSN)が「TEST.IDATA」が指定され、出力データのファイル「OUT01」のデータセット名(DSN)が「TEST.ODATA」が指定されているとき、図7(c)に示す如く、表5に示したファイル作成ルールに従い、フォルダー「DASD」の下にファイル「TEST.IDATA」を作成し、フォルダー「MT」の下位にフォルダー「VSN001」、この下位にフォルダー「01SL」を作成し、このフォルダーにファイル「TEST.ODATA」を格納することが定義されている。
【0050】
また図7に示すプログラムと変換後JCLの関係は、図7(a)に示すプログラム中のINPUT−OUTPUT SECTIONにおいて記述された7行目のSELECT文のDD名(例ではINP01)および8行目のDD名(例ではOUT01)は各々が、図7(b)に示すJCL中の4行目のDD文のDD名(例ではINP01)および5行目のDD文のDD名(例ではOUT01)と連携しており、プログラムが実行されることにより、JCL中のDD名(例ではINP01,OUT01)の次に記述されたホストのJCL文法を踏襲したパラメタを基に、サーバ環境においてファイルの作成位置が表5に示した規則に従って決定される関係にある。表5にファイル作成ルールの例を示すが、サーバ上のファイルはJCLのDD文に記述されたパラメタから表5におけるフォルダー作成順位に基づいてフォルダーを順に下降しネスト(入れ子構造)化して作成する。
【0051】
【表5】

【0052】
表5に示したルールに基づいてファイルを入力する場合もファイルを出力する場合も、該当ファイルの場所を特定することができる。このファイル作成ルールは、オープン環境においてファイルの作成位置を取り決めておくためのものであって、ファイルは、JCLのDD文に記述されたパラメタから表5のフォルダー作成順位に基づいて、フォルダーを順に下降してネスト(入れ子構造)化して作成する。例えば、JCLのDD文に、UNIT=a、VOL=SER=b、LABEL=(c,d)およびDSN=e(eはホスト上のデータセット名で、オープン環境のファイル名に使用)の記述があるとき、次のようにフォルダー(a)を作成、(a)の下のフォルダー(b)を作成、(b)の下にフォルダー(cd)を作成して、最下位のフォルダー(cd)の下にファイル(e)を作成する。
【0053】
尚、DD文パラメタについて常に全てのパラメタの記述があるとは限らないため、一部のパラメタの記述がないときは該当パラメタのフォルダー作成を不要としてフォルダー作成順を前詰めしてファイルを作成する。例えば、上記の例でLABEL=(c,d)のパラメタ記述がないときは、フォルダー(a)、(b)を作成して、最下位のフォルダー(b)の下にファイル(e)を作成する。また、DD文パラメタにDISP=Xが存在して、Xが(NEW)を含む値のときは上記の該当フォルダーが存在しなければフォルダーを作成し、存在すればフォルダーを作成しないものとして、最下位フォルダーの下にファイルを作成する。また、Xが(SHR)または(OLD)を含む値のときはフォルダーおよびファイルを作成せず、ファイル作成ルールに基づいてファイルを参照するものとする。
【0054】
従って、表5に示したようにDD文のDISP(Disposition)オペランドが、ファイルの新規作成を意味するパラメタ(例では‘NEW’)を含む値のときは前述の該当フォルダーが存在しなければ新たにフォルダーを作成し、存在すればフォルダーを作成しないことにより、最下位フォルダーの下にファイルを作成する。また、DISPオペランドがファイルの参照または更新を意味するパラメタ(例では‘SHR’または‘OLD’)を含む値のときは前述の該当フォルダーおよびファイルを作成せず、ファイル作成ルールに基づいたファイルの位置を特定して該当ファイルを参照するものとする。図7のプログラムとJCLの連携例に示すようにJCL中の4行目のDD文(DD名がINP01)では、DISPオペランドがファイルの参照を意味するパラメタ(例では‘SHR’)のため前述の表5のファイル作成ルールに基づいてフォルダー(例ではDASD)の下に存在するファイル(例ではTEST.IDATA)を参照することになり、JCL中の5行目のDD文(DD名がOUT01)では、DISPオペランドにファイルの新規作成を意味するパラメタ(例では‘NEW’)を含むため前述の表5のファイル作成ルールに基づいてフォルダー(例ではMTの下のVSN001の下の01SL)の下にファイル(例ではTEST.ODATA)を作成するが、各フォルダーが存在しなければ作成するものとする。これにより、本実施形態においては、JCL体系を変更することなく、プログラムを変更することなく、移行資産をサーバ上で動作可能とすることができる。
【0055】
[帳票(画面)の変換処理の説明]
本実施形態によるソフトウェア資源移行システムは、ホスト上のプログラム以外のソフトウェア資産である帳票(画面)の変換から、ダウンサイジング後の帳票(画面)出力を有するプログラムを実行するものであり、この帳票(画面)の変換処理を図2D及び図2Eのフローを参照して説明する。
【0056】
本実施形態による帳票(画面)の変換処理は、変換ツール270が、図2Dに示す如く、ホストシステムの帳票(画面)定義情報122を読み込むステップS31と、この定義情報の読み込みが終了したか否かを判定し、終了したと判定したときに後述のステップS35に移行するステップS32と、該ステップS32により読み込みが終了していないと判定したとき、読み込んだ定義情報中の定義情報が文字・けい線の定義かどうかの判定し、文字・けい線でないと判定したときにステップS35に移行するステップS33とを実行する。このステップS33による判定は、下記表6の帳票(画面)変換ルールの例における変換前の定義文の中の横けい線部(表6の例ではHorizontal Line部)・縦けい線部(表6の例ではVertical Line部)や文字部(表6の例ではText部)等が存在するか否かにより行う。
【0057】
【表6】

【0058】
前記ステップS33において定義情報が文字・けい線の定義と判定したとき、本変換処理は、表6の帳票(画面)変換ルールの例のように、変換前の横けい線部(表6の例ではHorizontal Line部)・縦けい線部(表6の例ではVertical Line部)や文字部(表6の例ではText部)を変換後の例の始点x座標・始点y座標、終点x座標・終点y座標等へ変換することによって、文字・けい線の定義をサーバ上の定義情報へ変換するステップS34と、変換後の文字・けい線の修正があるかどうかを判定するステップS35と、図8に示した帳票(画面)の変換の例(帳票(書式)定義名がN001の例)における吹き出しの定義文の中の横線部・縦線部および文字部の値を修正することによって、変換後の文字・けい線の定義を修正するステップS36とを実行する。
【0059】
前述した定義情報の変換は、例えば、変換前の横線定義が命令文を含む「 Horizontal Line SP(050,005),LENGTH(032)」であったものを、変換後においては、「始点x座標:300、始点y座標:70、終点x座標:492、終点y座標:70」の如く、座標情報に変換するものであり、この変換方法は、帳票の変換前ページの左上を起点に横方向文字位置をa(桁/インチ)、行位置をb(行/インチ)として、線の長さをc、文字の幅をdとしたとき、これらの値をもとに帳票を変換するため定義情報として、横方向文字間隔をα(ドット)、行間隔をβ(ドット)、フォントタイプをデフォルトで明朝としたときのフォントサイズを算出する乗数をγとしたとき、当該ルールの例では、横方向文字間隔のαを6、行間隔のβを14、フォントサイズの算出乗数のγを0.275と仮定する(γは、この例ではeが40のときフォントサイズが11となるため逆算して求めた結果、0.275となる)。尚、資産移行の際の出力装置(プリンタ等)のスペックにより、変換前後の帳票のけい線等の位置が若干ずれる可能性があるため、その際はα、β、γの値を変更することとする。
【0060】
次に本実施形態による帳票(画面)の変換処理は、帳票(画面)定義の変換後にサーバ上で該当の帳票(画面)出力を有するプログラムを実行する。この帳票(画面)出力処理手順は、図2Eに示す如く、変換ツール270が、前記図2Dの処理により変換した該当プログラムを実行するステップS41と、図9の帳票(画面)の出力の例のように、JCL中の帳票出力を行うDD名(例ではSYSOUT)にあるFCBパラメタ(例では帳票(書式)定義名がN001)から該当帳票(N001)のイメージ情報を図9の(a)のように出力エリアへ出力することによって、変換後の帳票(画面)の文字・けい線のイメージ情報を出力エリアへ出力するステップS42と、プログラムが実行終了かどうかを判定し、終了と判定したときに後述のステップS46に移行するステップS43とを実行する。
【0061】
次いで本帳票(画面)出力処理手順は、ステップS43において実行終了でないと判定したとき、その実行処理が帳票(画面)データの出力処理かどうかの判定を行い、該当の出力処理でないと判定したときにステップS43に戻るステップS44と、該ステップS44において該当の出力処理であると判定したとき、図9の帳票(画面)の出力の例に示す如くプログラム中のINPUT−OUTPUT SECTIONにおいて記述されたDD名(例ではSYSOUT)に該当するファイル定義のレコードをデータとして出力することにより図9の(b)に示す如くデータのみ出力を行うことによって、該当データを出力エリアの該当部分へ出力し、ステップS43に戻るステップS45と、前記ステップS43において実行終了と判定したとき、図9の帳票(画面)の出力の例における(a)と(b)を合成することによって、帳票(画面)のイメージ情報と帳票(画面)のデータを一緒にした図9(c)に示す帳票(画像)をポストスクリプトへ変換して出力するステップS46を実行する。
【0062】
本実施形態による帳票(画面)出力処理手順は、前述の一連の処理によって、ホストシステム上のソフトウェア資産であるプログラムを変更することなく、JCLおよび帳票(画面)との関連性を保って資産移行してサーバシステム上で動作可能とすることができる。
【0063】
尚、帳票(画面)を出力した際に出力装置(プリンタ等)のスペック等によって、プログラム実行処理で出力した帳票(画面)において変換前後の文字・けい線の位置が若干相違することがあるため、その際は表6の帳票(画面)変換ルールにおける乗数α、β、γの値を変更して位置調整を行うこととする。具体的には、図2Dにおけるステップ31からステップ36の処理を繰り返して、図8の帳票(画面)の変換の例における文字・けい線の定義を修正することになる。
【0064】
[ダウンサイジング検証処理の説明]
次にホストシステムからサーバシステムへのダウンサイジング作業実施後のプログラムの実行および実行後にホストの結果ファイルとサーバで実行した結果ファイルを比較してダウンサイジング作業の妥当性を検証する検証処理を図2Fを参照して説明する。
【0065】
この検証処理は、図2Fに示す如く、まずサーバシステム200上の該当ジョブを起動するステップS51と、当該プログラムの実行を開始するステップS52と、該プロクラム実行による入力ファイルを入力するステップS53と、実行オブジェクトであるプログラム処理を行うステップS54と、該プログラム処理による結果ファイルを出力するステップS55と、当該プログラム実行を終了するステップS56と、サーバシステムの該当プログラムの結果ファイルとホストサーバの該当プログラムの結果ファイルとの比較を開始するステップS57を実行する。
【0066】
次いで本検証処理は、前記比較ツール273が、ホストシステムからコピーした結果ファイル230を読み込むステップS58と、サーバシステムで実行した結果ファイル260を読み込むステップS59と、これらステップS58及び59による両ファイル共に読み込み終了か否かを判定し、読み込み終了と判定したときに処理を終了するステップS60と、該ステップS60において両ファイル共に読み込みが終了していないと判定したとき、両ファイルの結果データを1バイト単位に比較して値が一致するかどうかの判定を行い、一致すると判定したときに後述のステップS63に移行するステップS61と、該ステップS61において、一致しないと判定したとき、不一致の結果データ情報を出力するステップS61と、該ステップS63又はステップS60において読み込み終了と判定したとき、LOGを出力するステップS63を実行する。
【0067】
前記ステップS61による両ファイルの結果データを1バイト単位に比較して値が一致するかどうかの判定は、図10の結果データ比較例の(b)「不一致ありの例」に示す如く、「Input File 1」と「Input File 2」を1バイト単位に比較することよって行う。この(b)「不一致ありの例」の例では「Input File 1」の10バイト目が10進数で‘9’(16進数ではX’F9’)、「Input File 2」の10バイト目が10進数で‘0’(16進数ではX’F0’)のため、不一致であることが判定される。尚、図10(a)は、(a)は全件一致の例である。
【0068】
このように本実施形態による検証処理は、によれば、ダウンサイジング実施前のホストシステムの結果ファイルとダウンサイジング実施後のサーバシステムの結果ファイルを容易に比較してダウンサイジング作業の妥当性を検証することができる。
【0069】
[ユーティリティー処理の説明]
次に本例のダウンサイジング作業において、ホスト上のソフトウェア資産であるJCLを変更することなく移行するために、JCLから起動するユーティリティーについて図1で述べたようにサーバシステム上にホストシステムと同等機能のユーティリティーを用意して移行する例を示す処理を図5を参照して説明する。
【0070】
このユーティリティー処理は、ホストシステム100のプログラムが、元データとなる「File1」を入力としたプログラムである「PROGRAM1」が、データである「FILE3」及びパラメタである「PARAMETER」を参照してユーティリティーである「SORT&MARGE」によりソート及びマージを実行し、この結果データである「FILE4」をパラメタである「PARAMETER」を参照し、印刷ユーティティーである「PRINT」によりレポートを印刷する一連の処理を行うものとし、前記「PROGRAM1」「SORT&MERGE」「PRINT」がJCLにて起動されるジョブとする。
【0071】
さて、前述のホストシステムのユーティリティーをサーバへ移行する際、従来ではホスト側と同等機能のユーティリティーがサーバ側で用意されていない場合、図5の符号200aの「サーバ(JCL変更あり」に示す如く、既存プログラムである「PROGRAM1」に加え、ホスト側のユーティリティー「SORT&MERGE」と同機能を成す「PROGRAM2」、「PROGRAM3」、「PROGRAM4」を追加すると共に、ホスト側のユーティリティー「PRINT」と同機能を成す「PROGRAM5」を追加することが必要となり、新規にプログラムを4本作成すると共にJCLの変更が発生する。
【0072】
これに対して本実施形態による処理は、図5の符号200bの「サーバ(JCL変更なし」に示す如く、サーバ側で「SORT&MERGE」及び「PRINT」を予め用意しておき、このサーバ側ユーティリティーをプログラム進行に従って実行させることによって、ホスト上のシフトウェア資産であるJCLを変更することなく、新たにプログラムを新規作成することなく既存のプログラムのままで移行することができ、且つ、運用方法の見直しが不要となる。尚、サーバ側で予め用意するユーティリティーは前記の例に限られるものではなく、旧資産のCOBOLで使用される汎用的な各種ユーティリティーを全て用意しておくものである。
【0073】
このように本実施形態によるソフトウェア資源移行システムは、図2A〜図2Bを主に参照して説明した如く、ダウンサイジング用コンパイラ290が、プログラムの命令文と該命令文に対応する複数ケース毎のランタイム名を格納したランタイムテーブルを有し、制御手段が、ホスト用のプログラムソース内の命令文にランタイムテーブルに格納されたOSや入出力に関与する命令文が含まれているか否かを判定する第1工程と、該第1工程においてランタイムテーブルに格納されたOSや入出力に関与する命令文が含まれていると判定したとき、ランタイムテーブルの命令文に対応するケースをコンパイラのパラメタとして指定する第2工程と、ホスト用プログラムソースをサーバ用の機械語にコンパイルするとき、ソースコードを読み込んでトークンに分解する第3工程と、該第3工程により分解したトークンの列を基にプログラムの木構文を構築し、該構築したプログラムの木構文からコンパイラがソースコードを処理した結果生成される中間的なコード表現であるオブジェクトコードを生成する第4工程と、該第4工程により生成したオブジェクトコードの命令文にランタイム呼出が必要か否かを前記ランタイムテーブルに該当命令文の処理が格納されているかによって判定する第5工程と、該第5工程によってランタイム呼出が必要と判定したとき、前期命令文のコンパイルにパラメタ指定があるか否かを前記ランタイムテーブルを参照して判定する第6工程と、該第6工程において命令文のコンパイルにパラメタ指定があると判定したとき、前記第1のメモリに格納したランタイムを呼び出すようにオブジェクトコードを生成し、該生成したオブジェクトコードをコンパイルしたサーバ実行オブジェクトに挿入する第7工程を実行する。これにより、サーバシステム用にホストのプログラムソースをコンパイルすることができる。
【0074】
これを具体的に説明すると本実施形態によるソフトウェア資源移行システムは、ホスト側のプログラムソースをサーバ側のプログラムソースにコンパイラするとき、ダウンサイジング用コンパイラ290が、前述した図2BのステップS19にて指定したパラメタを読み込み、該パラメタにより指定されるランタイムを用いてコンパイルを実行することによって、例えば、図3を主に参照して説明した如く、パラメタが「READ命令のケース1」及び「WRITE命令のケース1」のとき、表1のランタイムテーブルの「RUNTIME41」及び「RUNTIME32」を実行することによって、元のプログラムソースにランタイムをコールする命令を埋め込む様に変換することによって、指示されたコード変換(「シフトJIS」→「EBCDIC」、「EBCDIC」→「シフトJIS」)を行うことができる。このデータ形式の変換は、図4に示した如きホスト側の「EBCDIC」をサーバ側の周辺装置に使用される「シフトJIS」に変換するときも行うことができる。
【0075】
更に、前記ホストシステムのコンピュータにより特定の機能を実行するユーティリティーソフトウェアを格納する第2のメモリと、該第2のメモリに格納したユーティリティーソフトウェアを起動するプログラムであるJCLを格納するJCLメモリと、サーバシステムのコンピュータにおいて前記ホストシステムのユーティリティーソフトウェアと同機能のユーティリティーソフトウェアを格納する第3のメモリと、前記ホストシステムの第2のメモリに格納したユーティリティーソフトウェアの名称と該名称のユーティリティーソフトウェアと同機能のユーティリティーソフトウェアが前記第3のメモリに格納されているか否かを示す有無情報を格納するユーティリティーテーブルと、ホストシステム用のJCLをサーバ用に変換するための変換ルール情報を格納するJCL変換ルールメモリと、前記JCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換するJCL変換ツールとを有し、前記JCL変換ツールが、前記JCLメモリに格納したJCLを読み込み、該読み込んだJCLが起動するユーティリティーソフトウェアが、前記第3のメモリに格納されているか否かを前記ユーティリティーテーブルの有無情報を参照して判定する第8工程と、該第8工程において読み込んだJCLが起動するユーティリティーソフトウェアが第3のメモリに格納されていると判定したとき、前記JCL変換ツールにより、JCL変換ルールメモリに格納した変換ルール情報に基づいてJCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換する第9工程とを実行する。
【0076】
更に本実施形態によるソフトウェア資源移行システムは、変換ツール270が、ホスト側の線横線/縦線の種別を示す「線種(Horizontal/Vertical)」と、帳票又は画面の左上端を基準として横文字位置(a)及び縦文字位置(b)と、線の「長さ」を指定するベクトル形式の帳票情報や画面情報を、表6に示す如く、始点のXY座標及び終点のXY座標に変換することによって、ホスト側におけるベクトル形式の帳票情報や画面情報をサーバ側のプリンタや表示装置用の座標情報に変換する第10工程を実行することによって、サーバシステム側において帳票印字及び表示を行うことができる。
【0077】
更に本実施形態によるソフトウェア資源移行システムは、ホストシステム100が、ホストプログラムソースを機械語のホスト実行プログラムに実行するホストコンパイラ110と、データを入力として前記ホストコンパイラを実行した結果であるホスト結果ファイルデータを出力するホストコンピュータ160とを有し、サーバシステム200が、前記データを入力とし、ダウンサイジング用コンパイラ290が機械語にコンパイルしたサーバ実行オブジェクトを実行してサーバ結果ファイルデータを出力するサーバコンピュータ270と、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを比較する比較ツール273とを有し、該比較ツール273が、ホスト結果ファイルデータとサーバ結果ファイルデータとを1バイト単位で比較し、不一致の結果ファイルを出力する第11工程とを実行することによって、ダウンサイジング作業における結果ファイルの検証を行うことができる。
【符号の説明】
【0078】
10:外部システム、11:ホスト系プリンタ、16:オンライン端末、17:オープン系プリンタ、100:ホストシステム、110:コンパイラ、120:ホスト資産、121:プログラムソース、122:画面・帳票情報、140:ホスト入力ファイル、150:ホスト結果ファイル、160:ホストコンピュータ、161:実行オブジェクト、200:サーバシステム、210:サーバ資産、211:プログラムソース、212:画面・帳票情報、213:ユーティリティー、220:ホスト入力ファイル、230:ホスト結果ファイル、250:サーバ入力ファイル、260:ファイルサーバ結果ファイル、270:サーバコンピュータ、275:変換ツール、271:サーバ実行オブジェクト、272:変換ツール、273:比較ツール、281:レポート、290:ダウンサイジング用コンパイラ。

【特許請求の範囲】
【請求項1】
ホストシステムのコンピュータが動作するホスト用文法により命令文が書かれたホストプログラムソースをサーバプログラムソースとし、該サーバプログラムソースを機械語の実行オブジェクトにコンパイルするダウンサイジング用コンパイラを備えるソフトウェア資源移行システムであって、
前記ダウンサイジング用コンパイラが、
前記ホストプログラムソースのOS又は入出力に関与する命令文と該命令文に対応する複数の処理方法情報毎のソフトウェアモジュールであるランタイム名を格納したランタイムテーブルと、該ランタイム名に対応するランタイムを格納する第1のメモリとを有し、
前記ホストプログラムソースを入力とし、該ホストプログラムソースに前記ランタイムテーブルに格納されたOS又は入出力に関与する命令文が含まれているか否かを判定する第1工程と、
該第1工程においてOS又は入出力に関与する命令文が含まれていると判定したとき、前記ランタイムテーブルの命令文に対応する処理方法情報に対応するランタイム名により指示されたランタイムをコンパイラのパラメタとして指定する第2工程と、
前記ホスト用のプログラムソースを読み込み、プログラミング言語においてソースコード中の文字列の中で意味を持つ最小単位の字句であるトークンに分解する第3工程と、
該第工程3により分解したトークンの列を基にプログラムの木構文を構築し、該構築したプログラムの木構文からコンパイラがソースコードを処理した結果生成される中間的なコード表現であるオブジェクトコードを生成する第4工程と、
該第4工程により生成したオブジェクトコードの命令文にランタイム呼出が必要か否かを前記ランタイムテーブルに該当命令文の処理が格納されているかによって判定する第5工程と、
該第5工程によってランタイム呼出が必要と判定したとき、前記命令文のコンパイルにパラメタ指定があるか否かを前記ランタイムテーブルを参照して判定する第6工程と、
該第6工程において命令文のコンパイルにパラメタ指定があると判定したとき、前記第1のメモリに格納したランタイムを呼び出すようにオブジェクトコードを生成し、該生成したオブジェクトコードをコンパイルしたサーバ実行オブジェクトに挿入する第7工程を実行するソフトウェア資源移行システム。
【請求項2】
前記ホストシステムのコンピュータにより特定の機能を実行するユーティリティーソフトウェアを格納する第2のメモリと、該第2のメモリに格納したユーティリティーソフトウェアを起動するプログラムであるJCLを格納するJCLメモリと、サーバシステムのコンピュータにおいて前記ホストシステムのユーティリティーソフトウェアと同機能のユーティリティーソフトウェアを格納する第3のメモリと、前記ホストシステムの第2のメモリに格納したユーティリティーソフトウェアの名称と該名称のユーティリティーソフトウェアと同機能のユーティリティーソフトウェアが前記第3のメモリに格納されているか否かを示す有無情報を格納するユーティリティーテーブルと、ホストシステム用のJCLをサーバ用に変換するための変換ルール情報を格納するJCL変換ルールメモリと、前記JCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換するJCL変換ツールとを有し、
前記JCL変換ツールが、
前記JCLメモリに格納したJCLを読み込み、該読み込んだJCLが起動するユーティリティーソフトウェアが、前記第3のメモリに格納されているか否かを前記ユーティリティーテーブルの有無情報を参照して判定する第8工程と、
該第8工程において読み込んだJCLが起動するユーティリティーソフトウェアが第3のメモリに格納されていると判定したとき、前記JCL変換ツールにより、JCL変換ルールメモリに格納した変換ルール情報に基づいてJCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換する第9工程とを実行する請求項1記載のソフトウェア資源移行システム。
【請求項3】
前記サーバシステムが、ホストシステム用の帳票情報及び画面情報を左上を基点とした座標値と該座標値から延長する方向及び寸法値を規定するベクトル情報を格納する画面帳票情報メモリと、該画面帳票情報メモリに格納したベクトル情報を基に、サーバシステム用の帳票情報及び画面情報に変換する画面帳票変換ツールとを有し、
該画面帳票変換ツールが、
前記画面帳票情報メモリに格納したベクトル情報の座標値と寸法値とを基に、画面帳票の左上を基点とした描画を開始する開始座標値と該描画を終了する終点座標値に変換する第10工程を実行する請求項1又は2記載のソフトウェア資源移行システム。
【請求項4】
前記ホストシステムが、ホストプログラムソースを機械語のホスト実行プログラムに実行するホストコンパイラと、データを入力として前記ホストコンパイラを実行した結果であるホスト結果ファイルデータを出力するホストコンピュータとを有し、
前記サーバシステムが、前記データを入力とし、前記ダウンサイジング用コンパイラが機械語にコンパイルしたサーバ実行オブジェクトを実行してサーバ結果ファイルデータを出力するサーバコンピュータと、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを比較する比較ツールとを有し、
前記サーバシステムの比較ツールが、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを1バイト単位で比較し、不一致の結果ファイルを出力する第11工程を実行する請求項1から3何れかに記載のソフトウェア資源移行システム。
【請求項5】
ホストシステムのコンピュータが動作するホスト用文法により命令文が書かれたホストプログラムソースをサーバプログラムソースとし、該サーバプログラムソースを機械語の実行オブジェクトにコンパイルするダウンサイジング用コンパイラを備え、ダウンサイジング用コンパイラが、前記ホストプログラムソースのOS又は入出力に関与する命令文と該命令文に対応する複数の処理方法情報毎のソフトウェアモジュールであるランタイム名を格納したランタイムテーブルと、該ランタイム名に対応するランタイムを格納する第1のメモリとを有するソフトウェア資源移行システムの資源移行方法であって、
前記ダウンサイジング用コンパイラに、
前記ホストプログラムソースを入力とし、該ホストプログラムソースに前記ランタイムテーブルに格納されたOS又は入出力に関与する命令文が含まれているか否かを判定する第1工程と、
該第1工程においてOS又は入出力に関与する命令文が含まれていると判定したとき、前記ランタイムテーブルの命令文に対応する処理方法情報に対応するランタイム名により指示されたランタイムをコンパイラのパラメタとして指定する第2工程と、
前記ホスト用のプログラムソースを読み込み、プログラミング言語においてソースコード中の文字列の中で意味を持つ最小単位の字句であるトークンに分解する第3工程と、
該第工程3により分解したトークンの列を基にプログラムの木構文を構築し、該構築したプログラムの木構文からコンパイラがソースコードを処理した結果生成される中間的なコード表現であるオブジェクトコードを生成する第4工程と、
該第4工程により生成したオブジェクトコードの命令文にランタイム呼出が必要か否かを前記ランタイムテーブルに該当命令文の処理が格納されているかによって判定する第5工程と、
該第5工程によってランタイム呼出が必要と判定したとき、前記命令文のコンパイルにパラメタ指定があるか否かを前記ランタイムテーブルを参照して判定する第6工程と、
該第6工程において命令文のコンパイルにパラメタ指定があると判定したとき、前記第1のメモリに格納したランタイムを呼び出すようにオブジェクトコードを生成し、該生成したオブジェクトコードをコンパイルしたサーバ実行オブジェクトに挿入する第7工程を実行させるソフトウェア資源移行方法。
【請求項6】
前記ホストシステムのコンピュータにより特定の機能を実行するユーティリティーソフトウェアを格納する第2のメモリと、該第2のメモリに格納したユーティリティーソフトウェアを起動するプログラムであるJCLを格納するJCLメモリと、サーバシステムのコンピュータにおいて前記ホストシステムのユーティリティーソフトウェアと同機能のユーティリティーソフトウェアを格納する第3のメモリと、前記ホストシステムの第2のメモリに格納したユーティリティーソフトウェアの名称と該名称のユーティリティーソフトウェアと同機能のユーティリティーソフトウェアが前記第3のメモリに格納されているか否かを示す有無情報を格納するユーティリティーテーブルと、ホストシステム用のJCLをサーバ用に変換するための変換ルール情報を格納するJCL変換ルールメモリと、前記JCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換するJCL変換ツールとを設け、
前記JCL変換ツールに、
前記JCLメモリに格納したJCLを読み込み、該読み込んだJCLが起動するユーティリティーソフトウェアが、前記第3のメモリに格納されているか否かを前記ユーティリティーテーブルの有無情報を参照して判定する第8工程と、
該第8工程において読み込んだJCLが起動するユーティリティーソフトウェアが第3のメモリに格納されていると判定したとき、前記JCL変換ツールにより、JCL変換ルールメモリに格納した変換ルール情報に基づいてJCLメモリに格納されたホスト用のJCLを前記変換ルール情報を参照してサーバ用のJCLに変換する第9工程とを実行させる請求項5記載のソフトウェア資源移行方法。
【請求項7】
前記サーバシステムに、ホストシステム用の帳票情報及び画面情報を左上を基点とした座標値と該座標値から延長する方向及び寸法値を規定するベクトル情報を格納する画面帳票情報メモリと、該画面帳票情報メモリに格納したベクトル情報を基に、サーバシステム用の帳票情報及び画面情報に変換する画面帳票変換ツールとを設け、
該画面帳票変換ツールに、
前記画面帳票情報メモリに格納したベクトル情報の座標値と寸法値とを基に、画面帳票の左上を基点とした描画を開始する開始座標値と該描画を終了する終点座標値に変換する第10工程を実行させる請求項5又は6記載のソフトウェア資源移行方法。
【請求項8】
前記ホストシステムに、ホストプログラムソースを機械語のホスト実行プログラムに実行するホストコンパイラと、データを入力として前記ホストコンパイラを実行した結果であるホスト結果ファイルデータを出力するホストコンピュータとを設け、
前記サーバシステムに、前記データを入力とし、前記ダウンサイジング用コンパイラが機械語にコンパイルしたサーバ実行オブジェクトを実行してサーバ結果ファイルデータを出力するサーバコンピュータと、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを比較する比較ツールとを設け、
前記サーバシステムの比較ツールに、前記ホスト結果ファイルデータとサーバ結果ファイルデータとを1バイト単位で比較し、不一致の結果ファイルを出力する第11工程を実行させる請求項5から7何れかに記載のソフトウェア資源移行方法。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図2C】
image rotate

【図2D】
image rotate

【図2E】
image rotate

【図2F】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2010−205068(P2010−205068A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−51142(P2009−51142)
【出願日】平成21年3月4日(2009.3.4)
【出願人】(000152985)株式会社日立情報システムズ (409)
【出願人】(597158067)株式会社ドット研究所 (1)
【Fターム(参考)】