このチュートリアルでは、HCOSS を使用してラベル付き期間計算を変換し、日付フォーマットを管理することで、DB2 アプリケーションを SQL Server アプリケーションに移行する処理について説明します。
SQL Server では、ラベル付き期間計算は直接サポートされていません。HCOSS は、T-SQL への変換を処理して、ラベル付き期間を使用した EXEC SQL 文の DB2 構文を実装します。
また、このチュートリアルでは、Eclipse でポスト・ビルド・イベントを使用して、アプリケーションをバインドします。
要件
このチュートリアルを実行する前に、まず次の各チュートリアルを完了して、必須の PROD および TEST スキーマと、HCO_Test データベースへの接続が含まれた、HCO_Test という名前の SQL Server データベースを確実に構築しておく必要があります。
- チュートリアル:SQL Server データベースの作成
- Tutorial:Create a Database Connection
- チュートリアル:DB2 データベース移行またはチュートリアル:アプリケーション移行チュートリアルのためのセットアップ
Eclipse プロジェクト
このチュートリアル用に提供する Eclipse プロジェクトには、ネイティブ COBOL プロジェクトである LBLDURATION プロジェクトが含まれています。
フェーズ 1:Enterprise Developer および SQL Server 用 HCO の起動
Enterprise Developer ツールおよび HCOSS for SQL Server ツールが既に実行されている場合は、このフェーズをスキップしてください。
- [Start > All Programs > Micro Focus Enterprise Developer > Enterprise Developer for Eclipse] の順に選択して、Enterprise Developer を管理者として起動します。
- [Run > Tools > HCO for SQL Server] の順にクリックします。
フェーズ 2:ネイティブ・アプリケーションの解析、ビルド、およびバインド
- ネイティブ・アプリケーションを解析します。
-
- Eclipse IDE から、[File > Import] をクリックします。
- [General] を展開し、[Existing Projects into Workspace]、[Next] を選択します。
- [Set root directory] を選択し、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\SQL\hcoss\LBLDURATION ディレクトリをブラウズして、[OK] をクリックします。
- [Projects] リストで、[LBLDURATION] をオンにします。
- [Copy projects into workspace] をオンにします。
- [Finish] をクリックします。Eclipse によりプロジェクトがロードされ、自動的にビルドされます。
- [COBOL Explorer] で [LBLDURATION > COBOL Programs] を展開し、LBLDURATION.cbl ファイルをダブルクリックして、その内容を表示します。特に、次の EXEC SQL 文に注意してください。
EXEC SQL
DECLARE CSR69 CURSOR FOR SELECT
A.PROJNO
,A.PROJNAME
,A.PRSTDATE
,A.PRENDATE
,(((DAYS(A.PRENDATE) - DAYS(A.PRSTDATE) ) / 7) + 1) * 40
AS MANHOURS
FROM PROJ A
ORDER BY A.PROJNAME
END-EXEC
これには、次のラベル付き期間計算が含まれています。
,(((DAYS(A.PRENDATE) - DAYS(A.PRSTDATE) ) / 7) + 1) * 40
この場合、次のような計算で DAYS ラベル付き期間を使用していることになります。
- プロジェクトの開始日から終了日までの間の日数から開始します。
- その数を 7 で割って週数を求めます。
- 1 週未満は切り捨てられることを考慮して、1 を加算します。
- その結果に 40 を掛けて、プロジェクトを完了するまでに必要な時間数を求めます。
- コード・エディタを閉じます。
- LBLDURATION プロジェクトのプロジェクト・プロパティを開きます。
- [Micro Focus > Project Settings > COBOL] の順に展開し、[SQL Settings] を選択します。いくつかの OpenESQL コンパイラ指令が既に設定されています。次の表に、各コンパイラ指令の簡単な説明を示します。
SQL(DBMAN=ODBC)
|
ODBC 接続を使用します。
|
SQL(TARGETDB=MSSQLSERVER)
|
ターゲット・データベースは SQL Server です。
|
SQL(DB=HCODemo)
|
SQL Server 接続の名前は HCODemo です。
|
SQL(DIALECT=MAINFRAME)
|
HCOSS データベースの構文変換が有効です。
|
SQL(DBRMLIB)
|
EXEC-SQL コマンドが抽出され、データベース要求モジュール (Database Request Module; DBRM) に配置されます。
|
SQL(DATE=USA)
|
日付の出力は米国フォーマットです。
|
SQL(INIT)
|
データベース接続を開始します。
|
SQL(QUALIFIER=TEST)
|
スキーマ修飾子は TEST です。
|
SQL(NOCHECK)
|
SQL コンパイル時のチェックは行われません。
|
- ポスト・ビルド・イベントを定義します。
-
- [Properties] ウィンドウで、[Micro Focus > Build Configurations > Events] を展開します。
- [Post build event command line] フィールドに、次のコマンドを入力します。
DSN SYSTEM(HCODemo) @"LBLDURATION.hcodsn"
このコマンドは、DSN バインド・ユーティリティを呼び出し、使用する SQL データベースを指定し、バインド・スクリプト・ファイルの場所と名前を示します。Eclipse は、アプリケーションをビルドした直後にこのイベントを実行し、その際に自動的にアプリケーションをバインドします。
- [OK] をクリックします。Eclipse は、ネイティブ・アプリケーションを自動的にビルドします。
- バインド・スクリプト・ファイルの内容を表示します。
-
- [COBOL Explorer] で、LBLDURATION.hcodsn を開き、内容を確認します。このバインド・スクリプト・ファイルには、LBLDURATION メンバを LBLDURATION という名前のプランにバインドする、BIND PLAN コマンドが 1 つ含まれます
- 結果を確認します。
-
- Microsoft SQL Server Management Studio を使用して、SQL Server インスタンスに接続します。
- [Object Explorer] で、[Databases > HCO_Test > Programmability > Stored Procedures] の順に展開し、パッケージおよびプランを実行した際に HCOSS によって作成された、ストアド・プロシージャを確認します。
- PLN:LBLDURATION.LBLDURATIONconsistency-token$0 という名前 (consistency-token は生成された整合性トークンの値) のストアド・プロシージャを開きます。
ここで、アプリケーション・コードの SQL を確認できます。また、HCOSS により、元の DB2 DAYS 式が T-SQL 構文 (これにより SQL Server で同じ機能が再作成されます) に変換されたことも確認できます。このようになるのは、コンパイル時に SQL(DIALECT=MAINFRAME) 指令を設定したためです。
フェーズ 3:ネイティブ・アプリケーションの実行
- [COBOL Explorer] で、LBLDURATION.cbl ソース・ファイルを開きます。
- GO BACK 行にブレーク・ポイントを設定します。
- [Run > Debug] をクリックして、デバッグを開始します。
- [Debug As] ダイアログ・ボックスが表示されたら、[COBOL Application] を選択して、[OK] をクリックします。
- [Debug] パースペクティブを開くかどうかを尋ねるプロンプトが表示されたら、[Yes] をクリックします。
- [Resume] をクリックして、ブレーク・ポイントから続行します。
出力から、計算結果は、各プロジェクトを完了するために必要な時間数を示していることがわかります。出力の日付はすべて米国フォーマットです。
注:出力ウィンドウが見えない場合は、Eclipse を最小化してウィンドウを表示させてください。
このチュートリアルはこれで終了です。