移行対象のアプリケーションはメインフレーム環境から生成されているため、ランタイム アプリケーションでは、データベース要求モジュール (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=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB)1 |
COBOL | DBRM を作成し、メインフレームと同様にバインドしますが、コンパイル時にデータベースには接続しません。 | SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER,BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB, NOCHECK)1 |
COBOL | DBRM も SQL Server ストアド プロシージャも作成しません。 | SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME)1 |
COBOL | DBRM も SQL Server ストアド プロシージャも作成せず、コンパイル時にデータベースに接続しません。 | SQL(DBMAN={ODBC | ADO}, TARGETDB=MSSQLSERVER, BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, NOCHECK)1 |
PL/I | DBRM を作成し、メインフレームと同様にバインドします。 | SQL(DBMAN=ODBC, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB)1 |
PL/I | DBRM を作成し、メインフレームと同様にバインドしますが、コンパイル時にデータベースには接続しません。 | SQL(DBMAN=ODBC, TARGETDB=MSSQLSERVER, DB=databaseName, [PASS=userid.password, ] BEHAVIOR=OPTIMIZED, DIALECT=MAINFRAME, DBRMLIB, NOCHECK)1 |
1 DIALECT=MAINFRAME は自動的に CHECK、CHECKDUPCURSOR、CHECKSINGLETON、DETECTDATE、DATE=ISO、TIME=ISO を設定します。 |
IDE でアプリケーションをコンパイルするには、アプリケーションを含むプロジェクトをビルドします。HCOSS アプリケーションをビルドする際には、最初に適切な SQL コンパイラ指令オプションを設定し、多くの場合 SQL Server データベースへの接続を確立する必要があります。
userID.password
SQL(NOCHECK) 指令を指定した場合を除き、コンパイルする前に、DB 指令で指定したデータベースへの接続を、ODBC (ネイティブ アプリケーション) または ADO.NET (.NET アプリケーション) 接続で確立しておく必要があります。