このチュートリアルでは DB2 アプリケーションを SQL Server アプリケーションに移行し、HCOSS を使用して機能エミュレーションを追加するプロセスについて説明します。
このチュートリアルでは、機能エミュレーションの追加について次のプロセスにより順を追って説明します。
- DB2 の標準数学関数を表す数学関数を SQL Server に追加する
- Customize SQL Name Mapping ツールを使用して、DB2 関数を新しい SQL Server 関数にマッピングする
このチュートリアルでは、Eclipse でビルド後のイベントを使用したアプリケーションのバインドについても説明します。
要件
このチュートリアルを実施する前に、まず次のチュートリアルを完了して、必要な PROD と TEST のスキーマを含んだ HCO_Test という名前の SQL Server データベースと、HCO_Test データベースへの接続を確立しておく必要があります。
- 『チュートリアル:SQL Server データベースの作成』
- 『Tutorial:Create a Database Connection』
- 『チュートリアル:DB2 データベース移行』または『チュートリアル:アプリケーションの移行 チュートリアルのためのセットアップ』
Eclipse プロジェクト
このチュートリアルで使用する Eclipse プロジェクト には、ネイティブ COBOL プロジェクトの FunctionEmulation プロジェクトが含まれています。
第 1 段階:ユーザ定義関数の作成
- SQL Server Management Studio を起動し、HCO_Test データベースを選択します。
- FunctionEmulation.sql ファイルを探して開きます。このファイルは %PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\SQL\hcoss\FunctionEmulation ディレクトリにあります。
このファイルには、例題コードに必要なユーザ定義の数学関数を作成するスクリプトが含まれています。
- [Execute] をクリックします。
- Object Explorer から、[HCO_Test > Programmability > Functions > Scalar-Valued Functions] を展開して選択し、[Refresh] をクリックしてフォルダを更新します。これで、新規作成された関数が表示されます。
第 2 段階:Enterprise Developer および HCO for SQL Server の起動
Enterprise Developer ツールおよび HCOSS for SQL Server ツールが既に実行している場合は、この段階をスキップしてください。
- [Start > All Programs > Micro Focus Enterprise Developer > Enterprise Developer for Eclipse] の順に選択して、Enterprise Developer を管理者として起動します。
- Eclipse IDE から、[Run > Tools > HCO for SQL Server] の順にクリックします。
第 3 段階:HCOSS の関数マッピング
- HCO for SQL Server インターフェイスから、[Customize SQL Name Mappings] をクリックします。
- グリッドの下部までスクロールして、最初の空のセルをダブルクリックして編集可能にします。次の情報を該当する行と列に入力し、それぞれに対応する [Is Function] ボックスをオンにします。
DB2 関数 / 特殊レジスタ
|
SQL Server での対応先
|
atanh
|
dbo.atanh
|
cosh
|
dbo.cosh
|
sinh
|
dbo.sinh
|
tanh
|
dbo.tanh
|
- [Save] をクリックして接続をマッピングします。
第 4 段階:ネイティブ・アプリケーションの分析、ビルド、バインド
- ネイティブ・アプリケーションの分析
-
- Eclipse IDE から、[File > Import] をクリックします。
- [General] を展開し、[Existing Projects into Workspace] を選択して、[Next] をクリックします。
- [Set root directory] を選択し、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\SQL\hcoss\FunctionEmulation ディレクトリを参照して、[OK] をクリックします。
- [Projects] リストで、[FunctionEmulation] をオンにします。
- [Copy projects into workspace] をオンにします。
- [Finish] をクリックします。Eclipse はプロジェクトをロードし、それを自動的にビルドします。
- COBOL Explorer から、[FunctionEmulation > COBOL Programs] を展開し、[FunctionEmulation.cbl] ファイルをダブルクリックして内容を表示します。ユーザ定義の関数を参照する EXEC SQL 文に特に注意してください。
- コード・エディタを閉じます。
- [FunctionEmulation] プロジェクトのプロジェクト・プロパティを開きます。
- [Micro Focus > Project Settings > COBOL] の順に展開し、[SQL Settings] を選択します。いくつかの OpenESQL コンパイラ指令が既に設定されています。次の表に、それぞれの概要を示します。
SQL(TARGETDB=MSSQLSERVER)
|
ターゲット・データベースは SQL Server です。
|
SQL(DB=HCODemo)
|
SQL Server 接続名は HCODemo です。
|
SQL(DIALECT=MAINFRAME)
|
HCOSS データベース構文変換を有効にします。
|
SQL(DBRMLIB)
|
EXEC-SQL コマンドを抽出し、データベース要求モジュール (DBRM) に置きます。
|
SQL(INIT)
|
データベース接続を開始します。
|
SQL(NOCHECK)
|
SQL のコンパイル時検証は実行されません。
|
- ビルド後のイベントの定義
-
- [Properties] ウィンドウで、[Micro Focus > Build Configurations > Events] を展開します。
- [Post build event command line] フィールドに次のコマンドを入力します。
DSN SYSTEM(HCODemo) @"FunctionEmulation.hcodsn"
このコマンドは DSN バインド・ユーティリティを呼び出し、使用する SQL データベース接続を指定し、バインド・スクリプト・ファイルの場所と名前を提示します。Eclipse はアプリケーションのビルドの直後にこのイベントを実行し、その時点でアプリケーションを自動的にバインドします。
- [OK] をクリックします。Eclipse はネイティブのアプリケーションを自動的にビルドします。
- バインド・スクリプト・ファイルの内容の表示
-
- COBOL Explorer から、FunctionEmulation.hcodsn を開いて内容を検証します。バインド・スクリプト・ファイルには、FunctionEmulation メンバを FunctionEmulation という名前のプランにバインドする BIND PLAN コマンド 1 つが含まれています。
- 結果の検証
-
- Microsoft SQL Server Management Studio を使用して、SQL Server インスタンスに接続します。
- Object Explorer で、[Databases > HCO_Test > Programmability > Stored Procedures] の順に展開し、パッケージとプランを実行したとき HCOSS により作成されたストアド・プロシージャを確認します。
- 名前の一部に PLN を含んでいるストアド・プロシージャを開きます。
この中に、ユーザ定義関数を呼び出すアプリケーション・コードが表示されます。
第 5 段階:ネイティブ・アプリケーションの実行
- COBOL Explorer から、FunctionEmulation.cbl ソース・ファイルを開きます。
- if sqlcode = 0 を含んでいる行にブレーク・ポイントを設定します。
- [Run > Debug] をクリックしデバッグを開始します。
- [Debug As] ダイアログ・ボックスの指示が表示された場合は、[COBOL Application] を選択し、[OK] をクリックします。
- [Debug] パースペクティブを開く指示が表示されたら、[Yes] をクリックします。
- [Resume] をクリックしてブレーク・ポイント設定を続行します。
出力から、結果がユーザ定義の関数によって実行された計算であることがわかります。
注:出力ウィンドウが見えない場合は、Eclipse を最小化してウィンドウが見えるようにします。
これでこのチュートリアルは終了です。