移行対象のアプリケーションはメインフレーム環境から生成されているので、ランタイム アプリケーションでは、データベース要求モジュール (DBRM) を参照するパッケージまたはプランから該当するすべての SQL 文が検出されることが前提になります。DBRM にはコンパイル時にアプリケーションのソース コードから抽出された SQL 文が含まれています。
このメインフレームの動作を模倣するために、HCOSS には SQL コンパイラ指令オプションのセットが用意されており、これによりアプリケーションのコンパイル時にアプリケーションのソース コードにある EXEC SQL 文を DBRM に抽出できます。ポスト コンパイルのステップで、DBRM をアプリケーションにバインドすることで実行時に DBRM にアクセスできるようになります。
以下のサンプルのユースケース シナリオは、HCOSS アプリケーションに設定可能な一般的な SQL コンパイラ指令を示しています。
プログラムのタイプ | シナリオ | SQL コンパイラ指令オプション |
---|---|---|
COBOL | DBRM を作成し、メインフレームのようにバインドします。 | SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ]BEHAVIOR=MAINFRAME, DIALECT=MAINFRAME, DBRMLIB)1 |
COBOL | DBRM を作成し、メインフレームのようにバインドしますが、コンパイル時にデータベースには接続しません。 | SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER,BEHAVIOR=MAINFRAME, DIALECT=MAINFRAME, DBRMLIB, NOCHECK)1 |
COBOL | DBRM を作成せず、SQL Server ストアド プロシージャを作成しません。 | SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=MAINFRAME, DIALECT=MAINFRAME)1 |
COBOL | DBRM を作成せず、SQL Server ストアド プロシージャを作成せず、コンパイル時にデータベースには接続しません。 | SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, BEHAVIOR=MAINFRAME, DIALECT=MAINFRAME, NOCHECK)1 |
PL/I | DBRM を作成し、メインフレームのようにバインドします。 | SQL(DBMAN=ODBC, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=MAINFRAME, DIALECT=MAINFRAME, DBRMLIB)1 |
PL/I | DBRM を作成し、メインフレームのようにバインドしますが、コンパイル時にデータベースには接続しません。 | SQL(DBMAN=ODBC, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=MAINFRAME, DIALECT=MAINFRAME, DBRMLIB, NOCHECK)1 |
1 DIALECT=MAINFRAME は自動的に CHECK、CHECKDUPCURSOR、CHECKSINGLETON、DETECTDATE、DATE=ISO、TIME=ISO を設定します。 |
IDE では、アプリケーションを含んでいるプロジェクトをビルドすることでアプリケーションをコンパイルします。HCOSS アプリケーションをビルドするとき、最初に適切な SQL コンパイラ指令オプションを設定し、多くの場合 SQL Server データベースへの接続を確立する必要があります。
コンパイルの前に、SQL(NOCHECK) 指令を指定していない限り、DB 指令により指定されたデータベースへの接続を ODBC (ネイティブ アプリケーション) または ADO.NET (マネージ アプリケーション) 接続によって確立する必要があります。