このタスクについて
COBOL を使用して DB2 データベースに接続するには、以下の手順を実行します。
手順
- Rational® Developer for System z®
でローカル COBOL プロジェクトを作成します。
- 「ローカル・リンク・オプション」プロパティー・ページを開き、DB2 ライブラリーをプロジェクトにリンクします。
- 「リンク・オプション」フィールドに、/de db2api.lib と入力します。
- 「ローカル COBOL ビルド・オプション」をクリックし、次の情報を指定します。
- SYSLIB
installation_directory¥INCLUDE¥COBOL_A
注: installation_directory は、
実際の DB2 インストール・ディレクトリーに置き換えます。
- 「ソースに組み込み SQL が含まれている」を選択します。
- 「参照」をクリックして、DB2 接続を選択します。
- オプション: SQL プリプロセッサーに渡すための追加オプションを「その他の SQL オプション」フィールドに入力します。 複数の SQL オプションは、コンマで区切ります。
- 「OK」をクリックします。
注: DB2 関連のオプションを「コンパイラー・オプション」フィールドに指定しないでください。
必要なコンパイラー・オプションとサブオプションは、選択済みの DB2 接続、および「その他の SQL オプション」フィールドに入力したオプションに基づいて、
自動的に生成されます。
- コードの WORKING-STORAGE、LOCAL-STORAGE、
または LINKAGE セクションで SQL ステートメントを使用する前に、
次のステートメントを挿入します。
EXEC SQL INCLUDE SQLCA END-EXEC;
- SQL ステートメントの範囲を、EXEC SQL ステートメントと
END-EXEC ステートメントで区切ります。
DB2 サンプル・データベースを使用する例を示します。
EXEC SQL UPDATE employee
SET firstnme = 'Myname'
WHERE empno = '000010' END-EXEC.
例
- DB2 データベースにアクセスするためのサンプル COBOL コード
* ---------------------------------------------------
* Module Name: COBOLDB2.cbl
*
* Description: Sample COBOL with DB2 program.
*
* Purpose: Performs a Select on the employee table
* in the Sample database shipped with DB2.
*
* COMPLILER OPTIONS (be sure to change the USERNAME and PASSWORD):
* DATA,EXIT(ADEXIT(FTTDBKW)),sql('database sample user USERNAME using PASSWORD')
*
* SYSLIB:
* C:¥Program Files¥IBM¥SQLLIB¥INCLUDE¥COBOL_A
*
* ILINK OPTIONS:
* /de db2api.lib
*
* ---------------------------------------------------
Identification Division.
Program-ID. COBOLDB2.
Data Division.
*Make sure you have SQLCA included in Working-Storage
Working-Storage Section.
EXEC SQL INCLUDE SQLCA END-EXEC.
*Data structure to store the Firstname of the employee
01 Program-pass-fields.
05 Firstnme Pic x(30).
Procedure Division.
*A Connection to the database must be made!
EXEC SQL CONNECT TO sample END-EXEC.
*Performs a SQL SELECT to get the firstname of the employee
*with the employee number of 10.
EXEC SQL SELECT firstnme INTO :Firstnme
FROM employee
WHERE empno = '000010' END-EXEC.
*Displays the firstname we pulled from the Sample database.
Display "Firstname"
Display "========="
Display Firstnme
Display " "
*Displays the status of the SQL statements
Display SQLCA
Goback.