- ソース・コード用のローカル PL/I プロジェクトを作成します。
- 「ローカル・リンク・オプション」プロパティー・ページを開き、DB2 ライブラリーをプロジェクトにリンクします。
- 「リンク・オプション」フィールドに、/de db2api.lib と入力します。
- 左側のリストで「ローカル PL/I ビルド・オプション」をクリックし、
次の情報を指定します。
- コンパイル・オプション
TEST,MACRO,OPTIONS
- SYSLIB
installation_directory¥EXTRAS¥INCLUDE¥PLI
注: installation_directory は、
実際の DB2 インストール・ディレクトリーに置き換えます。
- 「ソースに組み込み SQL が含まれている」を選択します。
- 「参照」をクリックして、DB2 接続を選択します。 データベースへの接続をまだセットアップしていない場合は、「新規接続」をクリックします。
- オプション: SQL プリプロセッサーに渡すための追加オプションを「その他の SQL オプション」フィールドに入力します。 複数の SQL オプションは、コンマで区切ります。
- 「OK」をクリックします。
注: DB2 関連のオプションを「コンパイル・オプション」フィールドに指定しないでください。
必要なコンパイラー・オプションとサブオプションは、選択済みの DB2 接続、および「その他の SQL オプション」フィールドに入力したオプションに基づいて、
自動的に生成されます。
- コードで SQL ステートメントを使用する前に、次のステートメントを挿入します。
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE SQLDA;
また、使用する SQL ステートメントがすべて、コード内で次のように形式設定されていることを確認してください。EXEC SQL statement;
ここで、
statement は使用する SQL ステートメントです。
例
- DB2 データベースにアクセスするためのサンプル PL/I コード
*PROCESS MARGINS(1,100) LANGLVL(SAA2) MACRO;
*PROCESS SOURCE XREF;
*PROCESS NOT('ª^') DFT(BYVALUE) ;
*PROCESS INCLUDE (EXT('CPY','INC','PLP','MRP'));
/*********************************************************************/
/* Author : Your name */
/* Date-written : 7/07/04 */
/* Primary Function(s) : Perfom a select on the Sample db2 DB */
/* */
/* What you need to change: */
/* Make sure you change the USERNAME and PASSWORD for your Sample */
/* DB2 database BOTH in the *PROCESS PP(SQL... statment and in the */
/* Connect query towards the middle of this example code. */
/* */
/*********************************************************************/
DB2Samp: PROCEDURE OPTIONS(MAIN);
DISPLAY('EXAMPLE STARTED.');
/*******************************************************************/
/* declare SQL structures */
/*******************************************************************/
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE SQLDA;
EXEC SQL WHENEVER SQLERROR CONTINUE;
DCL VALCODE BINARY(31) FIXED INIT(0);
DCL GOODCODE BINARY(31) FIXED INIT(0);
DCL FIRSTNME CHAR(30) var init('NOVAL');
/*******************************************************************/
/* CONNECT TO DATABASE IS MANDATORY OR TABLE WON'T BE FOUND */
/*******************************************************************/
EXEC SQL CONNECT TO sample USER 'USERNAME' using 'PASSWORD';
CALL PRSQLC ('CONNECT TO SAMPLE');
/********************************************************************/
/*Performs a SELECT to get the first name of the employee */
/*with and employee number of '000010' and store it in the variable */
/*FIRSTNME and then displays it. */
/********************************************************************/
EXEC SQL SELECT firstnme
INTO :FIRSTNME
FROM employee
WHERE empno = '000010';
DISPLAY('FIRSTNME');
DISPLAY('========');
DISPLAY(FIRSTNME);
DISPLAY('');
CALL PRSQLC ('SELECT');
/****************************************************/
/****************************************************/
/* The PRSQLC procedure verifys that the SQL worked.*/
/* If it does not work, it will display the SQLCode */
/* as well as the SQL error message. */
/* */
/* Written by: person */
/****************************************************/
/****************************************************/
PRSQLC: PROCEDURE(FUNCTION);
DECLARE FUNCTION CHARACTER (80) VARYING;
IF (SQLCODE = GOODCODE) THEN
PUT SKIP(2) EDIT (FUNCTION, ' WAS SUCCESSFUL')
(A(LENGTH(FUNCTION)), A(15));
ELSE DO;
IF (SQLCODE ^= 1) THEN DO;
PUT SKIP(2) EDIT (FUNCTION, ' GOT SQLCODE ', sqlcode)
(A(LENGTH(FUNCTION)), A(13), F(8));
PUT SKIP(2) EDIT (FUNCTION, ' GOT SQLERRM ', SQLERRM)
(A(LENGTH(FUNCTION)), A(13), A(70));
VALCODE = VALCODE + 1;
PUT SKIP(2) EDIT ('| VALCODE = ', VALCODE) (A(12), F(8));
END;
ELSE PUT SKIP(2) EDIT (FUNCTION, ' REACHED BOTTOM OF TABLE')
(A(LENGTH(FUNCTION)), A(24));
END;
END PRSQLC;
/**************************************************/
/**************************************************/
EXEC SQL COMMIT;
/*******************************************************************/
END DB2Samp;