Rational Developer for System z バージョン 7.6

PL/I を使用した DB2 データベースへの接続

始める前に

DB2® データベースへの接続を試みる前に、まずデータベース接続を構成し (データベース接続の構成を参照)、次にデータベース接続ウィザードを使用して、 そのデータベース接続を使用するようにワークベンチを構成する必要があります (OS/390® DB2 データベースへの接続方法の例については、 DB2 UDB zSeries データベースへの接続のセットアップを参照してください)。
  1. ソース・コード用のローカル PL/I プロジェクトを作成します。
  2. 「ローカル・リンク・オプション」プロパティー・ページを開き、DB2 ライブラリーをプロジェクトにリンクします。
  3. 「リンク・オプション」フィールドに、/de db2api.lib と入力します。
  4. 左側のリストで「ローカル PL/I ビルド・オプション」をクリックし、 次の情報を指定します。
    コンパイル・オプション
    TEST,MACRO,OPTIONS
    SYSLIB
    installation_directory¥EXTRAS¥INCLUDE¥PLI
    注: installation_directory は、 実際の DB2 インストール・ディレクトリーに置き換えます。
  5. 「ソースに組み込み SQL が含まれている」を選択します。
  6. 「参照」をクリックして、DB2 接続を選択します。 データベースへの接続をまだセットアップしていない場合は、「新規接続」をクリックします。
  7. オプション: SQL プリプロセッサーに渡すための追加オプションを「その他の SQL オプション」フィールドに入力します。 複数の SQL オプションは、コンマで区切ります。
  8. 「OK」をクリックします。
    注: DB2 関連のオプションを「コンパイル・オプション」フィールドに指定しないでください。 必要なコンパイラー・オプションとサブオプションは、選択済みの DB2 接続、および「その他の SQL オプション」フィールドに入力したオプションに基づいて、 自動的に生成されます。
  9. コードで 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;

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)