J2S1-9360-02Z0
DBアクセスライブラリ for COBOL
V1.0
APIリファレンス
まえがき
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
まえがき
■本書の目的
本書は、DBアクセスクラスライブラリの機能概要および使用方法を説明しています。 本書は、読者の方々がデータベースのデータを操作するためのさまざまなプログラムを作成 できるようになることを目的に書かれています。 DBアクセスクラスライブラリは、以下の基本ソフトウェアで動作します。 ● 日本語Solaris 2.6 ● 日本語Solaris 7 ● 日本語Solaris 8■本書の対象読者
本書は、データベースを処理するプログラムを開発する方に読んでいただくように書かれて います。本書を読むには、以下に示す技術および知識が必要です。 ● 使用するDBMSの機能概要 ● SQLに関する知識 ● オブジェクト指向のプログラミングに関する知識 ● 簡単なプログラムが作成できる程度のCOBOLに関する知識■本書の位置付け
NetCOBOLシリーズにおける本書の位置付け、および関連マニュアルについて は、“NetCOBOL解説書”を参照してください。■登録商標について
Oracleは、米国ORACLE Corporationの登録商標です。 SymfoWAREは、富士通株式会社の登録商標です。 Sun,SolarisおよびNFSは、米国Sun Microsystems,Inc.の商標です。まえがき
そのほか、本書に記載されている会社名および製品名は、それぞれ各社の商標または登録商 標です。
2000年8月
All Rights Reserved,Copyright(C) 富士通株式会社 1998-2002
目次
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
目次
まえがき 目次 第1章 DBアクセスクラスライブラリの概要 1.1 DBアクセスクラスライブラリとは 1.2 サポートするデータベース 1.3 接続形態 1.3.1 ローカルアクセス 1.3.2 リモートアクセス 1.4 提供するクラス 第2章 DBアクセスクラスライブラリの環境設定 2.1 環境設定の方法 2.2 動作環境ファイルの作成 2.2.1 動作環境ファイルの記述形式 2.2.2 動作環境ファイルの例 2.3 DBALIB_CONFIGの設定 第3章 開発方法 3.1 プログラムの作成 3.2 プログラムの翻訳 3.3 オブジェクトファイルのリンク 3.4 アプリケーションの実行 第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする 4.1.1 FJDB-SESSIONクラスのオブジェクトを作成する 4.1.2 データベースと接続する 4.1.3 レコードセットのデータを扱うためのバインドテーブルを作成する 4.1.4 レコードセットを使用してデータを参照する 4.1.4.1 データ参照の例(レコードセットを使用してデータを参照する) 4.1.5 レコードセットを使用してデータを更新する 4.1.5.1 データ更新の例(レコードセットを使用してデータを更新する) 4.2 FJDB-COMMANDクラスのオブジェクトを使用してデータ更新をする 4.2.1 動的パラメタを扱うためのバインドテーブルを作成する 4.2.2 FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する 4.2.2.1 データ更新の例(FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する) 4.3 直接、SQL文を実行する 4.3.1 SQL文を使用してデータを更新する目次 4.4 エラーの情報(例外オブジェクト)に対する処理の記述方法 4.5 オブジェクトの回収処理の記述方法 第5章 ログ取得機能 5.1 ログ取得機能とは 5.2 ログの書式 5.3 ログの種類 5.4 ログの取得方法 第6章 DBアクセスクラスライブラリのAPIリファレンス 6.1 クラス 6.1.1 FJDB-SESSIONクラス 6.1.2 FJDB-DATABASEクラス 6.1.3 FJDB-COMMANDクラス 6.1.4 FJDB-RECORDSETクラス 6.1.5 FJDB-ERRORクラス 6.2 メソッド 6.2.1 ADD-NEW-RECORDメソッド 6.2.2 BEGIN-TRANメソッド 6.2.3 BIND-FIELDSメソッド 6.2.4 BIND-PARAMETERSメソッド 6.2.5 COMMIT-TRANメソッド 6.2.6 CREATE-COMMANDメソッド 6.2.7 DELETE-RECORDメソッド 6.2.8 EDIT-RECORDメソッド 6.2.9 EXECUTE-COMMANDメソッド 6.2.10 EXECUTE-SQLメソッド 6.2.11 GET-ATメソッド 6.2.12 GET-BOOKMARKメソッド 6.2.13 GET-CLASS-NAMEメソッド 6.2.14 GET-CODEメソッド 6.2.15 GET-COUNTメソッド 6.2.16 GET-EDIT-MODEメソッド 6.2.17 GET-MESSAGEメソッド 6.2.18 GET-METHOD-NAMEメソッド 6.2.19 GET-NAMEメソッド 6.2.20 GET-NATIVE-ERROR-CODEメソッド 6.2.21 GET-NEXTメソッド 6.2.22 GET-RECORD-COUNTメソッド 6.2.23 GET-SEVERITYメソッド 6.2.24 GET-SQLメソッド 6.2.25 GET-SQLSTATEメソッド 6.2.26 IS-BOFメソッド 6.2.27 IS-BOOKMARKABLEメソッド 6.2.28 IS-EOFメソッド 6.2.29 IS-SCROLLABLEメソッド 6.2.30 IS-UPDATABLEメソッド
目次 6.2.31 MOVE-FIRSTメソッド 6.2.32 MOVE-LASTメソッド 6.2.33 MOVE-NEXTメソッド 6.2.34 MOVE-PREVIOUSメソッド 6.2.35 OPEN-DATABASEメソッド 6.2.36 OPEN-RECORDSETメソッド 6.2.37 REFRESH-RECORDSETメソッド 6.2.38 ROLLBACK-TRANメソッド 6.2.39 SET-BOOKMARKメソッド 6.2.40 SET-NAME メソッド 6.2.41 UPDATE-RECORDメソッド 6.3 バインドテーブル作成のためのメソッド 6.3.1 NEWメソッド 6.3.2 REGISTERメソッド 6.3.3 REGISTER-VARYINGメソッド 6.3.4 REGISTER-LARGE-DATAメソッド 6.3.5 REGISTER-INDICATORメソッド 6.3.6 REGISTER-VARYING-INDICATORメソッド 6.3.7 REGISTER-LARGE-DATA-INDICATORメソッド 6.4 オブジェクトを作成する 6.4.1 FJDB-SESSIONクラスのオブジェクトの作成 6.4.2 FJDB-DATABASEクラスのオブジェクトの作成 6.4.3 FJDB-COMMANDクラスのオブジェクトの作成 6.4.4 FJDB-RECORDSETクラスのオブジェクトの作成 第7章 マルチスレッド 7.1 マルチスレッド環境下での動作 7.2 マルチスレッドプログラムの翻訳 第8章 DBMSとCOBOLのデータ型の関係 8.1 DBMSのデータ型とCOBOLのデータ型の表現形式 8.1.1 SymfoWAREの場合 8.1.2 Oracleの場合 8.2 変換サポート範囲 8.2.1 SymfoWAREの場合 8.2.2 Oracleの場合 第9章 メソッドの使用例 9.1 MOVE-LAST,GET-RECORD-COUNTメソッドの使用例 9.2 GET-EDIT-MODE,IS-BOFメソッドの使用例 9.3 GET-BOOKMARK,SET-BOOKMARK,MOVE-PREVIOUSメソッドの使用例 9.4 BEGIN-TRAN,COMMIT-TRAN,ROLLBACK-TRANメソッドの使用例 9.5 REFRESH-RECORDSET,EDIT-RECORDメソッドの使用例 9.6 GET-SQLメソッドの使用例 9.7 GET-NAME,SET-NAME,IS-SCROLLABLE,IS-UPDATABLE,IS-BOOKMARKABLEメソッドの使用例 9.8 GET-AT,GET-COUNT,GET-MESSAGE,GET-SQLSTATE,GET-CODE, GET-NATIVE-ERROR-CODE,GET-SEVERITY,GET-CLASS-NAME,
目次 GET-METHOD-NAME,GET-NEXTメソッドの使用例 9.9 REGISTER-VARYINGメソッドの使用例 9.10 REGISTER-LARGE-DATAメソッドの使用例 9.11 REGISTER-INDICATORメソッドの使用例 9.12 REGISTER-VARYING-INDICATORメソッドの使用例 9.13 REGISTER-LARGE-DATA-INDICATORメソッドの使用例 第10章 DBアクセスクラスライブラリ使用時の注意事項 10.1 レコードセットの行の更新時の注意事項 10.2 バインドテーブルに関する注意事項 10.3 SymfoWARE使用時の注意事項 10.4 Oracle使用時の注意事項 10.5 マルチスレッドプログラム作成時の注意事項 付録A 動作環境ファイルのパラメタ一覧 付録B メッセージ一覧 用語集
第1章 DBアクセスクラスライブラリの概要
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第1章
DBアクセスクラスライブラリの概要
DBアクセスクラスライブラリの概要を説明します。 1.1 DBアクセスクラスライブラリとは 1.2 サポートするデータベース 1.3 接続形態 1.4 提供するクラス1.1 DBアクセスクラスライブラリとは
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第1章 DBアクセスクラスライブラリの概要
1.1 DBアクセスクラスライブラリとは
DBアクセスクラスライブラリは、NetCOBOLで作成したアプリケーションから、データ ベースにアクセスするためのオブジェクト指向型のインタフェースです。 DBアクセスクラ スライブラリは、プラットフォームおよびデータベースの種類に依存せず、複数種のデータ ベースに対して統一されたインタフェースでアクセス可能です。1.2 サポートするデータベース
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第1章 DBアクセスクラスライブラリの概要
1.2 サポートするデータベース
DBアクセスクラスライブラリがサポートするデータベースを以下に示します。
● SymfoWARE
● Oracle (Oracle Call Interfaceを利用)
1.3 接続形態
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第1章 DBアクセスクラスライブラリの概要
1.3 接続形態
DBアクセスクラスライブラリを使用してデータベースにアクセスする際の、接続形態につ いて説明します。 データベースへのアクセス方法には、以下の2種類の形態があります。 ● ローカルアクセス ● リモートアクセス 1.3.1 ローカルアクセス 1.3.2 リモートアクセス1.3.1 ローカルアクセス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第1章 DBアクセスクラスライブラリの概要 1.3 接続形態
1.3.1 ローカルアクセス
ローカルアクセスは、DBアクセスクラスライブラリとデータベースが同一サーバシステム にある接続形態です。
1.3.2 リモートアクセス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第1章 DBアクセスクラスライブラリの概要 1.3 接続形態
1.3.2 リモートアクセス
リモートアクセスは、DBアクセスクラスライブラリとデータベースが別サーバシステムにある 接続形態です。
1.4 提供するクラス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第1章 DBアクセスクラスライブラリの概要
1.4 提供するクラス
DBアクセスクラスライブラリが提供するクラスを使用して、データベースにアクセスし、 データの操作を行います。 DBアクセスクラスライブラリが提供するクラスとクラス階層関係を示します。 図中のクラス名をマウスでクリックすると、クラスの説明と各クラスが持つメソッドの一覧 を参照できます。第2章 DBアクセスクラスライブラリの環境設定
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第2章
DBアクセスクラスライブラリの環境設定
DBアクセスクラスライブラリの環境設定に関する説明をします。 2.1 環境設定の方法 2.2 動作環境ファイルの作成 2.3 DBALIB_CONFIGの設定2.1 環境設定の方法
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第2章 DBアクセスクラスライブラリの環境設定
2.1 環境設定の方法
DBアクセスクラスライブラリの環境設定は、以下の設定が必要です。 −動作環境ファイルの作成 −環境変数DBALIB_CONFIGの設定 環境変数DBALIB_CONFIGの設定は、DBアクセスクラスライブラリを使用するアプリケー ションを実行するすべてのログインユーザで行う必要があります。2.2 動作環境ファイルの作成
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第2章 DBアクセスクラスライブラリの環境設定
2.2 動作環境ファイルの作成
DBアクセスクラスライブラリが動作する情報を記述したファイルを作成する必要がありま す。動作環境ファイルの作成手順を説明します。 1.動作環境ファイルの雛形を複写する。 動作環境ファイルの雛形をプログラム実行時のカレントディレクトリなどに複写しま す。 動作環境ファイルの雛形"dbalib.cfg"は、ファウンデーションクラスライブラリ運用環 境をインストールしたディレクトリのetcディレクトリ配下に格納されています。 [例]ファウンデーションクラスライブラリ運用環境のインストールディレクトリに/opt を指定した場合、/opt/FJSVcbrfd/etc配下に格納されます。 2.動作環境パラメタを設定する。 動作環境パラメタは、テキスト形式の動作環境ファイルに汎用エディタを利用して設 定してください。 動作環境パラメタの詳細は、付録A.動作環境ファイルのパラメタ一覧を参照してく ださい。 2.2.1 動作環境ファイルの記述形式 2.2.2 動作環境ファイルの例2.2.1 動作環境ファイルの記述形式
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第2章 DBアクセスクラスライブラリの環境設定 2.2 動作環境ファイルの作成
2.2.1 動作環境ファイルの記述形式
動作環境ファイルを記述する文法の一般形式を以下に示します。 // コメント [GlobalOptions] パラメタ=値 // コメント [データベース環境名1] パラメタ=値 [データベース環境名2] パラメタ=値 動作環境ファイルは、[GlobalOptions]セクションと[データベース環境名]セクションで構成 されます。各セクションについて説明します。 ◆[GlobalOptions]セクション ログの取得などの動作に関する情報を設定します。 ◆[データベース環境名]セクション 接続するデータベースに関する情報を設定します。 [データベース環境名]セクションで設定したセクション名は、OPEN-DATABASEメ ソッドなどのデータベース環境名を指定する引数に指定します。 行の先頭に//を記述した場合、その行はコメント行とみなします。 各セクションで指定するパラメタの詳細は、付録A.動作環境ファイルのパラメタ一覧を参 照してください。2.2.2 動作環境ファイルの例
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第2章 DBアクセスクラスライブラリの環境設定 2.2 動作環境ファイルの作成
2.2.2 動作環境ファイルの例
動作環境ファイルを記述例を以下に示します。 // 動作環境定義 [GlobalOptions] TempFileDirectory=/tmp LogMode=On LogStyle=PerSession LogFile=/tmp/dbalib.log // SymfoWAREにリモート接続する場 合 [SAMPLE_DB1] DriverType=SymfoWARE DriverDSN=KANRIDB DBMSLocation=Remote HostName=SYMFO_SV PortNumber=2005 // SymfoWAREにローカル接続する場 合 [SAMPLE_DB2] DriverType=SymfoWARE DriverDSN=KANRIDB DBMSLocation=Local // Oracleに接続する場合 [SAMPLE_DB3] DriverType=Oracle DriverDSN=orcl2.3 DBALIB_CONFIGの設定
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第2章 DBアクセスクラスライブラリの環境設定
2.3 DBALIB_CONFIGの設定
DBアクセスクラスライブラリが2.2 環境定義ファイルの作成で作成したファイルを読み込む ために、環境変数"DBALIB_CONFIG"を設定する必要があります。設定方法を以下に示しま す。 環境変数"DBALIB_CONFIG"の設定方法 DBALIB_CONFIG=<ファイル名> [例] 環境定義ファイル名をdbalib.cfgとし、/opt/FJSVcbrfd/etcに格納した場合は、以下 のように設定します。 Cシェルの場合:setenv DBALIB_CONFIG /opt/FJSVcbrfd/etc/dbalib.cfg Bシェル、Kシェルの場合:
DBALIB_CONFIG=/opt/FJSVcbrfd/etc/dbalib.cfg; export DBALIB_CONFIG
第3章 開発方法
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第3章
開発方法
DBアクセスクラスライブラリを使用したアプリケーションの開発方法を説明します。 3.1 プログラムの作成 3.2 プログラムの翻訳 3.3 オブジェクトファイルのリンク 3.4 アプリケーションの実行3.1 プログラムの作成
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第3章 開発方法
3.1 プログラムの作成
第4章以降で説明するDBアクセスクラスライブラリの各機能を使用して、プログラムを作成 /編集します。 OPEN-DATABASEメソッドやOPEN-RECORDSETメソッドなどで使用する記号定数は、登 録集ファイル"FJDBOPT.cbl"に定義されています。記号定数を使用する場合は、以下のよう にしてください。● 環境部構成節特殊名段落の SYMBOLIC CONSTANT句 にCOPY文を記述し、登録集
ファイルを指定してください。 例) ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. SYMBOLIC CONSTANT COPY FJDBOPT. . プログラムを作成する際の注意事項は、第10章 DBアクセスクラスライブラリ使用時の注意 事項を参照してください。
3.2 プログラムの翻訳
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第3章 開発方法
3.2 プログラムの翻訳
プログラムを翻訳します。マルチスレッドプログラムを作成する場合、第7章 マルチスレッドを参照してください。
3.3 オブジェクトファイルのリンク
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第3章 開発方法
3.3 オブジェクトファイルのリンク
オブジェクトファイルをリンクし、実行可能ファイルを作成します。 オブジェクトファイルをリンクする際は、共用オブジェクトファイル"libdbalcob.so"を結合 する必要があります。 マルチスレッドプログラムを作成する場合、第7章 マルチスレッドを参照してください。3.4 アプリケーションの実行
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第3章 開発方法
3.4 アプリケーションの実行
アプリケーションを実行します。 DBアクセスクラスライブラリを利用したアプリケーションを実行する場合、DBアクセス クラスライブラリの環境設定をする必要があります。環境設定の方法については、第2章 DB アクセスクラスライブラリの環境設定を参照してください。第4章 DBアクセスクラスライブラリの使用例
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章
DBアクセスクラスライブラリの使用例
DBアクセスクラスライブラリを使用してデータベースのデータを操作(参照、更新)する には、以下の方法があります。 ● FJDB-RECORDSETクラスのオブジェクト(レコードセット)を使用する ● FJDB-COMMANDクラスのオブジェクトを使用する ● 直接、SQL文を実行する また、プログラム中には、以下の処理を必ず記述します。 ● エラーの情報(例外オブジェクト)に対する処理 ● オブジェクトの回収処理 それぞれの方法について、DBアクセスクラスライブラリの使用例を説明します。 4.1 レコードセットを使用してデータの参照または更新をする 4.2 FJDB-COMMANDクラスのオブジェクトを使用してデータ更新をする 4.3 直接、SQL文を実行する 4.4 エラーの情報(例外オブジェクト)に対する処理の記述方法 4.5 オブジェクトの回収処理の記述方法4.1 レコードセットを使用してデータの参照または更新をする
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例
4.1 レコードセットを使用してデータの参照または更
新をする
FJDB-RECORDSETクラスのオブジェクト(レコードセット)を使用して、データを操作す るプログラムの例および記述方法を説明します。ここでは、データを参照する例とデータを 更新する例を説明します。使用するプログラムの処理概要は、"4.1.4.1 データ参照の例"およ び"4.1.5.1 データ更新の例"を参照してください。 プログラムは、以下の順序で記述します。 4.1.1 FJDB-SESSIONクラスのオブジェクトを作成する 4.1.2 データベースと接続する 4.1.3 レコードセットのデータを扱うためのバインドテーブルを作成する 4.1.4 レコードセットを使用してデータを参照する 4.1.5 レコードセットを使用してデータを更新する4.1.1 FJDB-SESSIONクラスのオブジェクトを作成する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする
4.1.1 FJDB-SESSIONクラスのオブジェクトを作成する
DBアクセスクラスライブラリを使用して、データベースを操作するためには、まず、最上 位のオブジェクトであるFJDB-SESSIONクラスのオブジェクトを作成する必要があります。 FJDB-SESSIONクラスのオブジェクトを作成するための手順を説明します。 1. クラスを定義します CONFIGURATION SECTIONのリポジトリ段落で、使用するクラスを定義します。 CONFIGURATION SECTION. REPOSITORY. CLASS FJDB-SESSION CLASS FJDB-ERROR. 2. 変数を定義します プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION. *オブジェクト変数の定義01 SESSION-A USAGE OBJECT REFERENCE FJDB-SESSION. 01 ERROR-A USAGE OBJECT REFERENCE FJDB-ERROR.
3. FJDB-SESSIONクラスのオブジェクトを作成します
CREATE-OBJECTメソッドを使用して、FJDB-SESSIONクラスのオブジェクトを作成 します。
INVOKE FJDB-SESSION "CREATE-OBJECT" USING ERROR-A
RETURNING SESSION-A.
4.1.2 データベースと接続する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする
4.1.2 データベースと接続する
データベースと接続するための手順を説明します。 1. クラスと記号定数を定義します CONFIGURATION SECTIONのリポジトリ段落で、使用するクラスを定義します。 また、特殊名段落に、プログラムで使用する記号定数の登録集を指定します。 CONFIGURATION SECTION. REPOSITORY. CLASS FJDB-SESSION CLASS FJDB-DATABASE CLASS FJDB-ERROR. SPECIAL-NAMES. SYMBOLIC CONSTANT COPY FJDBOPT. . 2. 変数を定義します プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION. *オブジェクト変数の定義01 SESSION-A USAGE OBJECT REFERENCE FJDB-SESSION. 01 DATABASE-A USAGE OBJECT REFERENCE FJDB-DATABASE. 01 ERROR-A USAGE OBJECT REFERENCE FJDB-ERROR. *データ設定用変数の定義
01 DSN PIC X(10). 01 UID PIC X(10). 01 PWD PIC X(10). 01 SCM PIC X(10).
01 DB-OPT PIC S9(9) COMP-5. *復帰値の変数の定義
4.1.2 データベースと接続する
3. 変数に値を設定します
OPEN-DATABASEメソッド発行時に必要な情報を変数に設定します。 MOVE "DB01" TO DSN. *>データベース環境名
MOVE "YODA" TO UID. *>ユーザID MOVE "YODA" TO PWD. *>パスワード
MOVE "GENERAL" TO SCM. *>デフォルトスキーマ MOVE FJDB-SCDBOPT-DEFAULT TO DB-OPT. *>オプション 4. データベースと接続します
OPEN-DATABASEメソッドを使用して、データベースと接続します。 FJDB-DATABASEクラスのオブジェクトが作成されます。
INVOKE SESSION-A "OPEN-DATABASE" USING DSN UID PWD SCM DB-OPT DATABASE-A RETURNING RET-CODE.
4.1.3 レコードセットのデータを扱うためのバインドテーブルを作成する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする
4.1.3 レコードセットのデータを扱うためのバインドテーブルを作成す
る
レコードセットのデータを扱うためのバインドテーブルを作成します。 バインドテーブルとは、レコードセットのデータや動的パラメタを扱うためのCOBOL変数の オブジェクトです。 レコードセットや動的パラメタを使用してデータを操作する場合に、バインドテーブルが必 要となります。バインドテーブルとレコードセットを関連づけることで、データが操作でき ます。 "4.1.4.1 データ参照の例"および"4.1.5.1 データ更新の例" で示すレコードセット"RECORDSET-A"に対応するバインドテーブルを作成します。 1. クラス名を定義します ここでは、バインドテーブルのクラス名と して"BINDTBL"と定義します。 クラス名は、任意の名称です。 REPOSITORY.CLASS BINDTBL AS "*COB-BINDTABLE". 2. 変数を定義します
プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION.
*オブジェクト変数の定義
01 BIND-A USAGE OBJECT REFERENCE BINDTBL. *バインドテーブルに登録する項目数を設定するための変数 01 FLD-NUM PIC S9(9) COMP-5.
*レコードセットのデータを扱うための変数 01 BIND-NO PIC S9(9) COMP-5. 01 BIND-NAME PIC X(50).
4.1.3 レコードセットのデータを扱うためのバインドテーブルを作成する 3. 変数に値を設定します バインドテーブル作成に必要な情報を変数に設定します。 バインドテーブルを作成するためのNEWメソッド発行時に指定する引数には、レコー ドセットのフィールド数以上の値を指定する必要があります。 MOVE 3 TO FLD-NUM. (バインドテーブルに登録する項目数) 4. バインドテーブルのオブジェクトを作成します NEWメソッドを使用して、バインドテーブルのオブジェクト"BIND-A"を作成しま す。
INVOKE BINDTBL "NEW" USING FLD-NUM RETURNING BIND-A. 5. バインドテーブルに変数を登録します
REGISTERメソッドを使用して、2.で宣言した変数をバインドテーブルに登録します。 登録する順番は、レコードセットのフィールドの順番と対応させる必要があります。 INVOKE BIND-A "REGISTER" USING BIND-NO.
INVOKE BIND-A "REGISTER" USING BIND-NAME. INVOKE BIND-A "REGISTER" USING BIND-ADDRESS.
4.1.4 レコードセットを使用してデータを参照する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする
4.1.4 レコードセットを使用してデータを参照する
FJDB-RECORDSETクラスのオブジェクト(レコードセット)とバインドテーブルを使用し てデータを参照します。 レコードセットは、FJDB-DATABASEクラスのOPEN-RECORDSETメソッドを使用して作 成します。 データの参照は、レコードセット上のカレント行に対して行えます。レコードセットの作成 直後のカレント行は、レコードセットの先頭行です。レコードセット上でカレント行を移動 させることで、操作の対象となる行を特定できます。 ここでは、"4.1.4.1 データ参照の例"で示すレコードセット"RECORDSET-A "を作成し、デー タベースのデータを参照する例を説明します。 1. クラスと記号定数を定義します CONFIGURATION SECTIONのリポジトリ段落で、使用するクラスを定義します。 また、特殊名段落に、プログラムで使用する記号定数の登録集を指定します。 CONFIGURATION SECTION. REPOSITORY. : CLASS FJDB-RECORDSET : SPECIAL-NAMES. SYMBOLIC CONSTANT COPY FJDBOPT. . 2. 変数を定義します プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION. *オブジェクト変数の定義 :4.1.4 レコードセットを使用してデータを参照する
:
*データ設定用変数の定義
01 XSQL PIC X(255).
01 RS-OPT PIC S9(9) COMP-5. :
*復帰値の変数の定義
01 RET-CODE PIC S9(9) COMP-5. : 3. レコードセットを作成します データベースに対してSQL文による問合せを行い、検索結果であるレコードセットを 作成します。 FJDB-DATABASEクラスのOPEN-RECORDSETメソッドを使用します。 ここでは、例として"4.1.4.1 データ参照の例"に示すレコードセット"RECORDSET-A" を作成します。 (1)OPEN-RECORDSETメソッド発行時に指定する引数の変数(XSQLおよびRS-OPT)に 指定する値を代入します。
MOVE "SELECT NO,NAME,ADDRESS FROM EMPLOYEE" TO XSQL. MOVE FJDB-SCRSOPT-DEFAULT TO RS-OPT.
(2)レコードセットを作成します。
INVOKE DATABASE-A "OPEN-RECORDSET" USING XSQL RS-OPT RECORDSET-A RETURNING RET-CODE. 4. バインドテーブルとレコードセットを関連づけます FJDB-RECORDSETクラスのBIND-FIELDSメソッドを使用して、バインドテーブルと レコードセットの関連づけを行います。 BIND-FIELDSメソッドが発行されると、バインドテーブルに登録した変数にレコー ドセットのカレント行の値が設定されます。
INVOKE RECORDSET-A "BIND-FIELDS" USING BIND-A RETURNING RET-CODE. 5. データを参照します
FJDB-RECORDSETクラスのIS-EOFメソッドとMOVE-NEXTメソッドを使用して、 レコードセットのカレント行が最終行になるまで、データを参照します。IS-EOFメ ソッドは、カレント行が最終行より後ろにあるかどうかを返却します。
4.1.4 レコードセットを使用してデータを参照する
PERFORM TEST BEFORE UNTIL RECORDSET-A::"IS-EOF" NOT = 0 DISPLAY "NO=" BIND-NO
DISPLAY "NAME=" BIND-NAME
DISPLAY "ADDRESS=" BIND-ADDRESS
INVOKE RECORDSET-A "MOVE-NEXT" RETURNING RET-CODE END-PERFORM.
4.1.4.1 データ参照の例(レコードセットを使用してデータを参照する)
4.1.4.1 データ参照の例(レコードセットを使用してデータを参照する)
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする 4.1.4 レコードセットを使用してデータを参照する
4.1.4.1 データ参照の例(レコードセットを使用してデータを参照す
る)
下図は、以下の処理をしているイメージ図です。 1.データベース環境'COMPANY'のEMPLOYEE表から、OPEN-RECORDSETメソッドを使用 してレコードセット"RECORDSET-A"を作成します。 2.BIND-FIELDSメソッドを使用して、レコードセット"RECORDSET-A"とバインドテーブ ル"BIND-A"を関連づけます。 3.バインドテーブル"BIND-A"に登録した変数を参照して、データベースのデータを参照し ます。 4.MOVE-NEXTメソッドとIS-EOFメソッドを使用して、最終行までデータを参照します。4.1.4.1 データ参照の例(レコードセットを使用してデータを参照する)
4.1.5 レコードセットを使用してデータを更新する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする
4.1.5 レコードセットを使用してデータを更新する
FJDB-RECORDSETクラスのオブジェクト(レコードセット)とバインドテーブルを使用し てデータを更新するための手順を説明します。 レコードセットを作成するまでの手順については、4.1.1 FJDB-SESSIONクラスのオブジェ クトを作成する、4.1.2 データベースと接続する 、4.1.3 レコードセットのデータを扱うため のバインドテーブルを作成するおよび4.1.4 レコードセットを使用してデータを参照するを 参照してください。 ここでは、レコードセットを使用してデータを参照するで使用したレコードセッ ト"RECORDSET-A "を更新(データの削除および追加)し、更新結果をデータベースに反 映する例を説明します。 処理の概要は、"4.1.5.1データ更新の例"を参照してください。 1. レコードセットのカレント行を先頭行に位置づけます FJDB-RECORDSETクラスのMOVE-FIRSTメソッドを使用して、レコードセットのカ レント行を先頭行に位置づけます。INVOKE RECORDSET-A "MOVE-FIRST" RETURNING RET-CODE. 2. データを削除します
レコードセットのカレント行のフィールド"NO"のデータが1000未満の場合、データ ベースからカレント行を削除します。
PERFORM TEST BEFORE UNTIL RECORDSET-A::"IS-EOF" NOT = 0 IF BIND-NO < 1000 THEN
INVOKE RECORDSET-A "DELETE-RECORD" RETURNING RET-CODE END-IF
INVOKE RECORDSET-A "MOVE-NEXT" RETURNING RET-CODE END-PERFORM.
4.1.5 レコードセットを使用してデータを更新する
レコードセットにデータを追加し、データベースを更新します。 (1)ADD-NEW-RECORDメソッドを使用して、行を追加します。 INVOKE RECORDSET-A "ADD-NEW-RECORD" RETURNING RET-CODE. (2)バインドテーブルに登録した変数に、追加するデータを設定します。 MOVE 2000 TO BIND-NO. MOVE "栗田" TO BIND-NAME. MOVE "小田原" TO BIND-ADDRESS. (3) UPDATE-RECORDメソッドを使用して、バインドテーブルに設定されているデー タを、レコードセットとデータベースに反映します。
INVOKE RECORDSET-A "UPDATE-RECORD" RETURNING RET-CODE.
4.1.5.1 データ更新の例(レコードセットを使用してデータを更新する)
4.1.5.1 データ更新の例(レコードセットを使用してデータを更新する)
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.1 レコードセットを使用してデータの参照または更新をする 4.1.5 レコードセットを使用してデータを更新する
4.1.5.1 データ更新の例(レコードセットを使用してデータを更新す
る)
下図は、以下の処理をしているイメージ図です。 1.レコードセットを使用してデータを参照するで使用したレコードセット"RECORDSET-A" のカレント行は、すでに最終行の後ろに位置づいているので、MOVE-FIRSTメソッドを使 用して、カレント行を先頭行に位置づけます。 2.MOVE-NEXTメソッド、IS-EOFメソッドとDELETE-RECORDメソッドを使用してフィー ルド"NO"のデータが1000未満のレコードを削除します。 3.ADD-NEW-RECORDメソッドを使用して、行を追加します。 4.レコードセット"RECORDSET-A"と関連づいているバインドテーブル"BIND-A"に登録し た変数BIND-NO、BIND-NAME、BIND-ADDRESSに追加するデータを設定します。 5.UPDATE-RECORDメソッドを使用して、バインドテーブルに設定されているデータを、 レコードセットとデータベースに反映します。4.1.5.1 データ更新の例(レコードセットを使用してデータを更新する)
4.2 FJDB-COMMANDクラスのオブジェクトを使用してデータ更新をする
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例
4.2 FJDB-COMMANDクラスのオブジェクトを使用
してデータ更新をする
FJDB-COMMANDクラスのオブジェクトを使用して、データを操作するプログラムの例お よび記述方法を説明します。使用するプログラムの処理概要は、データ更新の例を参照して ください。 FJDB-COMMANDクラスのオブジェクトとバインドテーブルを使用することにより、SQL文 の実行時に動的パラメタの値だけを指定し、SQL文を繰り返し実行することができま す。FJDB-COMMANDクラスのオブジェクトを使用することで、2回目以降のSQL文実行時 の翻訳の処理時間が削減できます。 プログラムは、以下の順序で記述します。 "FJDB-SESSIONクラスのオブジェクトを作成する"および"データベースと接続する"処理の プログラムの記述は、レコードセットを使用する場合の記述と同様です。"4.1.1 FJDB-SESSIONクラスのオブジェクトを作成する"および"4.1.2 データベースと接続する"を参照し てください。4.2 FJDB-COMMANDクラスのオブジェクトを使用してデータ更新をする
4.2.1 動的パラメタを扱うためのバインドテーブルを作成する
4.2.2 FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する
4.2.1 動的パラメタを扱うためのバインドテーブルを作成する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.2 FJDB-COMMANDクラスのオブジェクトを使用してデータ更新をする
4.2.1 動的パラメタを扱うためのバインドテーブルを作成する
動的パラメタを扱うためのバインドテーブルを作成します。 バインドテーブルは、COBOLの変数のオブジェクトです。 レコードセットや動的パラメタを使用してデータを操作する場合に、バインドテーブルが必 要となります。 バインドテーブルと動的パラメタを関連づけることで、データが操作できます。 ここでは、"4.2.2.1 データ更新の例"で示すSQL文の動的パラメタに対応するバインドテーブ ルを作成します。 1. クラスを定義します ここでは、バインドテーブルのクラス名と して"BINDTBL"と定義します。 クラス名は、任意の名称です。 REPOSITORY.CLASS BINDTBL AS "*COB-BINDTABLE". 2. 変数を定義します
プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION.
*オブジェクト変数の定義
01 BIND-A USAGE OBJECT REFERENCE BINDTBL. *バインドテーブルに登録する項目数を設定するための変数 01 PRM-NUM PIC S9(9) COMP-5.
*動的パラメタを扱うバインドテーブルの変数 01 BIND-NO PIC S9(9) COMP-5.
01 BIND-NAME PIC X(50). 01 BIND-ADDRESS PIC X(100). 3. 変数に値を設定します
4.2.1 動的パラメタを扱うためのバインドテーブルを作成する バインドテーブル作成に必要な情報を変数に設定します。 バインドテーブルを作成するためのNEWメソッド発行時に指定する引数には、SQL文 で指定する動的パラメタ数以上の値を指定する必要があります。 MOVE 3 TO PRM-NUM. (バインドテーブルに登録する項目数) 4. バインドテーブルのオブジェクトを作成します NEWメソッドを使用して、バインドテーブルのオブジェクト"BIND-A"を作成しま す。
INVOKE BINDTBL "NEW" USING PRM-NUM RETURNING BIND-A. 5. バインドテーブルに変数を登録します
REGISTERメソッドを使用して、動的パラメタを扱うための変数をバインドテーブル に登録します。
登録する順番は、動的パラメタの記述順と対応させる必要があります。 INVOKE BIND-A "REGISTER" USING BIND-NO.
INVOKE BIND-A "REGISTER" USING BIND-NAME. INVOKE BIND-A "REGISTER" USING BIND-ADDRESS.
4.2.2 FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.2 FJDB-COMMANDクラスのオブジェクトを使用してデータ更新をする
4.2.2 FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行
する
FJDB-COMMANDクラスのオブジェクトとバインドテーブルを使用してデータを更新しま す。 FJDB-COMMANDクラスのオブジェクトは、FJDB-DATABASEクラスのCREATE-COMMANDメソッドを使用して作成します。 ここでは、4.1.4 レコードセットを使用してデータを参照するで使用したデータベースに対 して、"4.2.2.1 データ更新の例"で示すSQL文を表すFJDB-COMMANDクラスのオブジェクト を使用して、データを追加する例を説明します。 1. クラスを定義します CONFIGURATION SECTIONのリポジトリ段落で、使用するクラスを定義します。 CONFIGURATION SECTION REPOSITORY. : CLASS FJDB-COMMAND. : 2. 変数を定義します プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION. *オブジェクト変数の定義 :01 COMMAND-A USAGE OBJECT REFERENCE FJDB-COMMAND. :
*動的パラメタを扱うバインドテーブルの変数 01 BIND-NO PIC S9(9) COMP-5.
4.2.2 FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する
01 BIND-ADDRESS PIC X(100). *データ設定用変数の定義
01 XSQL PIC X(255). *データ返却用の変数の定義
01 ROW-COUNT PIC S9(9) COMP-5. *復帰値の変数の定義
01 RET-CODE PIC S9(9) COMP-5. : 3. FJDB-COMMANDクラスのオブジェクトを作成します データベースに対して実行するSQL文を表す、FJDB-COMMANDクラスのオブジェク トを作成します。FJDB-DATABASEクラスの CREATE-COMMANDメソッド を使用し ます。 ここでは、"4.2.2.1 データ更新の例"で示すSQL文を表す"COMMAND-A"を作成しま す。 CREATE-COMMANDメソッドで指定するSQL文の動的パラメタは、"?"で表します。 (1)CREATE-COMMANDメソッド発行時に指定する引数の変数(XSQL)に値を代入 します。
MOVE "INSERT INTO EMPLOYEE(NO,NAME,ADDRESS) VALUES(?,?,?)" TO XSQL.
(2)FJDB-COMMANDクラスのオブジェクトを作成します。
INVOKE DATABASE-A "CREATE-COMMAND" USING XSQL COMMAND-A RETURNING RET-CODE.
4. バインドテーブルとFJDB-COMMANDクラスのオブジェクトを関連づけます FJDB-COMMANDクラスの BIND-PARAMETERSメソッド を使用して、FJDB-COMMANDクラスのオブジェクトとバインドテーブルの関連づけを行います。 INVOKE COMMAND-A "BIND-PARAMETERS" USING BIND-A
RETURNING RET-CODE. 5. バインドテーブルの変数に、挿入するデータを設定します
バインドテーブルに登録した変数に、SQL文の実行時に指定するパラメタの値を設定 します。
4.2.2 FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する MOVE 3000 TO BIND-NO. MOVE "加藤" TO BIND-NAME. MOVE "沼津" TO BIND-ADDRESS. 6. SQL文を実行します FJDB-COMMANDクラスの EXECUTE-COMMANDメソッド を使用して、SQL文を実 行します。 EXECUTE-COMMANDメソッドが発行されると、バインドテーブルに登録されてい る変数の値が、動的パラメタに設定されます。 4.で設定した値が、データベースに挿入されます。
INVOKE COMMAND-A "EXECUTE-COMMAND" USING ROW-COUNT
RETURNING RET-CODE.
4.2.2.1 データ更新の例(FJDB-COMMANDクラスのオブジェクトを使用してSQL文を 実行する)
4.2.2.1 データ更新の例(FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する)
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.2 FJDB-COMMANDクラスのオブジェクトを使用してデータ更新をする 4.2.2 FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する
4.2.2.1 データ更新の例(FJDB-COMMANDクラスのオブジェクトを使
用してSQL文を実行する)
下図は、以下の処理をしているイメージ図です。 1.CREATE-COMMANDメソッドを使用して、FJDB-COMMANDクラスのオブジェク ト"COMMAND-A"を作成します。 2.BIND-PARAMETERSメソッドを使用して、FJDB-COMMANDクラスのオブジェク ト"COMMAND-A"とバインドテーブル"BIND-A"を関連づけます。 3.FJDB-COMMANDクラスのオブジェクト"COMMAND-A"と関連づいているバインドテー ブル"BIND-A"に登録した変数BIND-NO、BIND-NAME、BIND-ADDRESSに追加するデー タを設定します。 4.EXECUTE-COMMANDメソッドを使用して、バインドテーブルに設定されているデータ を、データベースに反映します。4.2.2.1 データ更新の例(FJDB-COMMANDクラスのオブジェクトを使用してSQL文を実行する)
4.3 直接、SQL文を実行する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例
4.3 直接、SQL文を実行する
レコードセットやFJDB-COMMANDクラスのオブジェクトを使用しないで、データベース に対して更新処理を行うことができます。行の更新、削除、挿入が可能です。 バインドテーブルを作成する必要はありません。 プログラムは、以下の順序で記述します。 "FJDB-SESSIONクラスのオブジェクトを作成する"および"データベースと接続する"処理の プログラムの記述は、レコードセットを使用する場合の記述と同様です。"4.1.1 FJDB-SESSIONクラスのオブジェクトを作成する"および"4.1.2 データベースと接続する"を参照し てください。 4.3.1 SQL文を使用してデータを更新する4.3.1 SQL文を使用してデータを更新する
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例 4.3 直接、SQL文を実行する
4.3.1 SQL文を使用してデータを更新する
レコードセットやFJDB-COMMANDクラスのオブジェクトを使用しないで、データベース に対して更新処理を行うことができます。行の更新、削除、挿入が可能です。 バインドテーブルを作成する必要はありません。 FJDB-DATABASEクラスのEXECUTE-SQLメソッドを使用して、データベースを更新しま す。 ここでは、4.1.5 レコードセットを使用してデータを更新するで行を追加したデータベース に対して、レコードセットを使用しないで、追加した行を削除する例を説明します。 1. 変数を定義します プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION. *データ設定用変数の定義 01 XSQL PIC X(255). *データ返却用の変数の定義01 ROW-COUNT PIC S9(9) COMP-5. *復帰値の変数の定義
01 RET-CODE PIC S9(9) COMP-5. 2. SQL文を実行します
FJDB-DATABASEクラスの EXECUTE-SQLメソッド を使用して、データベースに対し てSQL文を実行します。
(1)EXECUTE-SQLメソッド発行時に指定するSQL文を変数(XSQL)に代入します。 MOVE "DELETE FROM EMPLOYEE WHERE NO = 2000" TO XSQL.
(2)EXECUTE-SQLメソッドを発行します。 データベースからデータが削除されます。
4.3.1 SQL文を使用してデータを更新する
RETURNING RET-CODE. DISPLAY "COUNT= " ROW-COUNT.
4.4 エラーの情報(例外オブジェクト)に対する処理の記述方法
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例
4.4 エラーの情報(例外オブジェクト)に対する処理
の記述方法
DBアクセスクラスライブラリの使用中にエラーが発生した場合、エラーコード、メッセー ジ、SQLSTATEなどのエラーの詳細情報は、FJDB-ERRORクラスのオブジェクトを例外オ ブジェクトとして扱うことで取得できます。 DBアクセスクラスライブラリを使用したプログラム中には、例外オブジェクトに対する処 理を手続き部の宣言部分に必ず記述します。 プログラム中に例外オブジェクトに対する処理を記述しておくと、DBアクセスクラスライ ブラリでエラーが発生した場合に、記述されているエラー処理が実行され、エラーの情報を 取得することができます。 エラー処理の記述例を以下に示します。 以下の例では、エラー処理の後に、GO TO文を記述しているため、"ERR-PROC"に制御が移 ります。 GO TO文がない場合、エラーが発生した行の直後に制御が戻ります。 1. クラスを定義します CONFIGURATION SECTIONのリポジトリ段落で、使用するクラスを定義します。 CONFIGURATION SECTION REPOSITORY. CLASS FJDB-ERROR. 2. 変数を定義します プログラムで使用する変数を定義します。 WORKING-STORAGE SECTION *オブジェクト変数の定義01 ERROR-A USAGE OBJECT REFERENCE FJDB-ERROR. *エラーの情報を格納するための変数の定義
4.4 エラーの情報(例外オブジェクト)に対する処理の記述方法
01 ERROR-COUNT PIC S9(9) COMP-5. 01 ERROR-MESSAGE PIC X(200).
01 SQLSTATE PIC X(5).
01 SQLSTATE-SIZE PIC S9(9) COMP-5. 01 MESSAGE-SIZE PIC S9(9) COMP-5. *復帰値の変数の定義
01 RET-CODE PIC S9(9) COMP-5.
3. 例外オブジェクトに対する処理を宣言部分に記述します エラーが発生した場合の処理を記述します。
プログラム中に、必ず記述します。 DECLARATIVES.
ERR SECTION.
USE AFTER EXCEPTION FJDB-ERROR.
INVOKE EXCEPTION-OBJECT "GET-COUNT" RETURNING ERROR-COUNT PERFORM ERROR-COUNT TIMES
INVOKE EXCEPTION-OBJECT "GET-SQLSTATE"
USING SQLSTATE SQLSTATE-SIZE RETURNING RET-CODE
INVOKE EXCEPTION-OBJECT "GET-MESSAGE"
USING ERROR-MESSAGE MESSAGE-SIZE RETURNING RET-CODE
DISPLAY "SQLSTATE=" SQLSTATE DISPLAY "MESSAGE=" ERROR-MESSAGE
INVOKE EXCEPTION-OBJECT "GET-NEXT" RETURNING RET-CODE END-PERFORM. GO TO ERR-PROC. END DECLARATIVES. : : ERR-PROC. : : STOP RUN.
4.5 オブジェクトの回収処理の記述方法
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第4章 DBアクセスクラスライブラリの使用例
4.5 オブジェクトの回収処理の記述方法
DBアクセスクラスライブラリを使用したプログラム中には、作成したオブジェクトを回収 するための処理を必ず記述します。 不要なオブジェクトは、プログラム終了前に、SET文を使用して、オブジェクトにNULLを 設定することで回収できます。 オブジェクトの回収処理の記述例を以下に示します。 CONFIGURATION SECTION REPOSITORY. CLASS FJDB-SESSION CLASS FJDB-DATABASE. : :01 SESSION-A USAGE OBJECT REFERENCE FJDB-SESSION. 01 DATABASE-A USAGE OBJECT REFERENCE FJDB-DATABASE. : : PROCEDURE DIVISION : *データ操作のための処理 :
SET DATABASE-A TO NULL. SET SESSION-A TO NULL. STOP RUN.
END PROGRAM SAMPLE.
第5章 ログ取得機能
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第5章
ログ取得機能
ログ取得機能に関する説明をします。 5.1 ログ取得機能とは 5.2 ログの書式 5.3 ログの種類 5.4 ログの取得方法5.1 ログ取得機能とは
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第5章 ログ取得機能
5.1 ログ取得機能とは
ログ取得機能は、アプリケーション実行時のエラー情報や実行ログを取得するための機能で す。
5.2 ログの書式
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第5章 ログ取得機能
5.2 ログの書式
取得されたログは、以下の書式でファイルに出力されます。 [スレッドID] メッセージ [スレッドID] には以下の値が出力されます。 ● シングルスレッドの場合 …… すべて同じ値 ● マルチスレッドの場合 ……… スレッドごとに一意の値5.3 ログの種類
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第5章 ログ取得機能
5.3 ログの種類
ログには、以下の種類があります。 ● ログ DBアクセスクラスライブラリでエラーが発生した場合に出力されるエラーメッセー ジです。 出力例を以下に示します。[181] Error : [SymfoWARE ODBC Driver][SymfoWARE Server] JYP2079E 一意性制約に違反しました.
[181] Code : 0xc0041389 [181] NativeErrorCode : -2079 [181] SQLState : 23000
[181] Error : 準備済ステートメントの実行に失敗しました.[SQL 'INSERT INTO CT3.CHAR_TBL(C_CHAR1,C_NCHAR1,C_NCHAR25) VALUES(?,?,?)'] [181] Code : 0xc004113a [181] NativeErrorCode : 0 [181] Error : SQLの実行が失敗しました. [コマンド 'C061d2b10'] [データ ベース 'CTDB'] [SQL 'INSERT INTO CT3.CHAR_TBL(C_CHAR1,C_NCHAR1,C_NCHAR25) VALUES(?,?,?)'] [181] Code : 0xc0041068 [181] NativeErrorCode : 0 ● 詳細ログ プログラム中で実行されたメソッドとメソッドの処理経過時間を出力します。 プログラムでの実行シーケンスの確認や処理時間の調査をする場合に利用します。 出力例を以下に示します。
5.3 ログの種類
[181] ### FJDB-SESSION::CREATE-OBJECT Start ### Time:1998/10/30 17:5:33.460
[181] ### FJDB-SESSION::CREATE-OBJECT End ### Time:1998/10/30 17:5:33.520(0:0:0.060)
[181] ### FJDB-SESSION::OPEN-DATABASE Start ### Time:1998/10/30 17:5:33.520
[181] ### FJDB-SESSION::OPEN-DATABASE End ### Time:1998/10/30 17:5:34.340(0:0:0.820)
[181] ### FJDB-DATABASE::EXECUTE-SQL Start ### Time:1998/10/30 17:5:34.400
[181] ### FJDB-DATABASE::EXECUTE-SQL End ### Time:1998/10/30 17:5:34.730(0:0:0.330)
[181] ### FJDB-DATABASE::CREATE-COMMAND Start ### Time:1998/10/30 17:5:34.730
[181] ### FJDB-DATABASE::CREATE-COMMAND End ### Time:1998/10/30 17:5:34.950(0:0:0.220)[181] ###
FJDB-COMMAND::BIND-PARAMETERS Start ### Time:1998/10/30 17:5:35.220 [181] ### FJDB-COMMAND::BIND-PARAMETERS End ###
Time:1998/10/30 17:5:35.220(0:0:0.000)
[181] ### FJDB-COMMAND::EXECUTE-COMMAND Start ### Time:1998/10/30 17:5:35.220
[181] Error : [SymfoWARE ODBC Driver][SymfoWARE Server] JYP2079E 一意性制約に違反しました.
[181] Code : 0xc0041389 [181] NativeErrorCode : -2079 [181] SQLState : 23000
[181] Error : 準備済ステートメントの実行に失敗しました.[SQL 'INSERT INTO CT3.CHAR_TBL(C_CHAR1,C_NCHAR1,C_NCHAR25) VALUES(?,?,?)'] [181] Code : 0xc004113a [181] NativeErrorCode : 0 [181] Error : SQLの実行が失敗しました. [コマンド 'C061d2650'] [データ ベース 'CTDB'] [SQL 'INSERT INTO CT3.CHAR_TBL(C_CHAR1,C_NCHAR1,C_NCHAR25) VALUES(?,?,?)'] [181] Code : 0xc0041068 [181] NativeErrorCode : 0 [181] ### FJDB-COMMAND::EXECUTE-COMMAND End ### Time:1998/10/30 17:5:35.550(0:0:0.330)
5.4 ログの取得方法
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第5章 ログ取得機能
5.4 ログの取得方法
ログを取得するための指定は、DBアクセスクラスライブラリの動作環境ファイルで設定し ます。 ログを取得するには、取得する情報に応じて、[GlobalOptions]セクションのLogModeパラメ タに"On"または"Detail"を設定し、[GlobalOptions]セクションのLogFileパラメタに出力先の ファイル名を指定します。 ログは、通常、すべてのプロセスで同じファイルに取得されますが、プロセス単位で別の ファイルに取得したい場合には、[GlobalOptions]セクションのLogStyleパラメタ に"PerProcess"を設定します。 動作環境ファイルのパラメタについては、付録A.動作環境ファイルのパラメタ一覧を参照 してください。第6章 DBアクセスクラスライブラリのAPIリファレンス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第6章
DBアクセスクラスライブラリの
APIリファレンス
DBアクセスクラスライブラリが提供するAPIを説明します。 6.1 クラス 6.2 メソッド 6.3 バインドテーブル作成のためのメソッド 6.4 オブジェクトを作成する6.1 クラス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第6章 DBアクセスクラスライブラリのAPIリファレンス
6.1 クラス
DBアクセスクラスライブラリが提供するクラスを説明します。 6.1.1 FJDB-SESSIONクラス 6.1.2 FJDB-DATABASEクラス 6.1.3 FJDB-COMMANDクラス 6.1.4 FJDB-RECORDSETクラス 6.1.5 FJDB-ERRORクラス6.1.1 FJDB-SESSIONクラス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第6章 DBアクセスクラスライブラリのAPIリファレンス 6.1 クラス
6.1.1 FJDB-SESSIONクラス
■メソッド一覧 ● GET-NAME ● OPEN-DATABASE ● SET-NAME ■説明 FJDB-SESSIONクラスは、アプリケーションで利用するデータベースを管理するクラ スです。 ■解説 FJDB-SESSIONクラスは、DBアクセスクラスライブラリの最上位クラスであ り、CREATE-OBJECTメソッドを使用して作成します。 [FJDB-SESSIONクラスのオブジェクトの作成]INVOKE FJDB-SESSION "CREATE-OBJECT" USING ERROR-A RETURNING SESSION-A.
CREATE-OBJECTメソッドを使用したFJDB-SESSIONクラスのオブジェクトの作成に ついての詳細は、6.4.1 FJDB-SESSIONクラスのオブジェクトの作成を参照してくださ い。
6.1.2 FJDB-DATABASEクラス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第6章 DBアクセスクラスライブラリのAPIリファレンス 6.1 クラス
6.1.2 FJDB-DATABASEクラス
■メソッド一覧 ● BEGIN-TRAN ● COMMIT-TRAN ● CREATE-COMMAND ● EXECUTE-SQL ● GET-NAME ● OPEN-RECORDSET ● ROLLBACK-TRAN ■説明 FJDB-DATABASEクラスは、サーバに接続されているデータベースを表すクラスで す。 ■解説 FJDB-DATABASEクラスのオブジェクトは、FJDB-SESSIONクラスのOPEN-DATABASEメソッド、またはCREATE-OBJECTメソッドを使用して作成します。 [FJDB-DATABASEクラスのオブジェクトの作成] (OPEN-DATABASEメソッドを使用する)INVOKE SESSION-A "OPEN-DATABASE" USING DSN UID PWD SCM DATABASE-A RETURNING RET-CODE.
OPEN-DATABASEメソッドを使用したFJDB-DATABASEクラスのオブジェクトの作 成についての詳細は、6.2.35 OPEN-DATABASEメソッドを参照してください。 (CREATE-OBJECTメソッドを使用する)
6.1.2 FJDB-DATABASEクラス
INVOKE FJDB-DATABASE "CREATE-OBJECT" USING DSN UID PWD SCM OPT ERROR-A RETURNING DATABASE-A
CREATE-OBJECTメソッドを使用したFJDB-DATABASEクラスのオブジェクトの作 成についての詳細は、6.4.2 FJDB-DATABASEクラスのオブジェクトの作成を参照し てください。
6.1.3 FJDB-COMMANDクラス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第6章 DBアクセスクラスライブラリのAPIリファレンス 6.1 クラス
6.1.3 FJDB-COMMANDクラス
■メソッド一覧 ● BIND-PARAMETERS ● EXECUTE-COMMAND ● GET-NAME ● GET-SQL ● OPEN-RECORDSET ● SET-NAME ■説明 FJDB-COMMANDクラスは、SQL文を表すクラスです。 ■解説 FJDB-COMMANDクラスのオブジェクトは、FJDB-DATABASEクラスのCREATE-COMMANDメソッド、またはCREATE-OBJECTメソッドを使用して作成します。 [FJDB-COMMANDクラスのオブジェクトの作成] (CREATE-COMMANDメソッドを使用する)INVOKE DATABASE-A "CREATE-COMMAND" USING SQL COMMAND-A RETURNING RET-CODE.
CREATE-COMMANDメソッドを使用したFJDB-COMMANDクラスのオブジェクトの 作成についての詳細は、6.2.6 CREATE-COMMANDメソッド を参照してください。 (CREATE-OBJECTメソッドを使用する)
6.1.3 FJDB-COMMANDクラス RETURNING COMMAND-A. CREATE-OBJECTメソッドを使用したFJDB-COMMANDクラスのオブジェクトの作 成についての詳細は、6.4.3 FJDB-COMMANDクラスのオブジェクトの作成を参照し てください。 FJDB-COMMANDクラスのオブジェクトには、SQL文が含まれています。FJDB-COMMANDクラスのオブジェクトに含まれるSQL文は、EXECUTE-COMMANDメ ソッドまたはOPEN-RECORDSETメソッドを使用して実行できます。 FJDB-COMMANDクラスのオブジェクトを使用すると、パラメタの値だけが異な るSQL文を複数回発行する場合に、SQL文の翻訳処理を行わずに、2回目以降のSQL 文の実行が可能となります。
6.1.4 FJDB-RECORDSETクラス
DBアクセスクラスライブラリ for COBOL V1.0 APIリファレンス - for SolarisTM Environment -
第6章 DBアクセスクラスライブラリのAPIリファレンス 6.1 クラス
6.1.4 FJDB-RECORDSETクラス
■メソッド一覧 ● ADD-NEW-RECORD ● BIND-FIELDS ● DELETE-RECORD ● EDIT-RECORD ● GET-BOOKMARK ● GET-EDIT-MODE ● GET-NAME ● GET-RECORD-COUNT ● GET-SQL ● IS-BOF ● IS-BOOKMARKABLE ● IS-EOF ● IS-SCROLLABLE ● IS-UPDATABLE ● MOVE-FIRST ● MOVE-LAST ● MOVE-NEXT ● MOVE-PREVIOUS ● REFRESH-RECORDSET ● SET-BOOKMARK ● SET-NAME ● UPDATE-RECORD ■説明 FJDB-RECORDSETクラスは、指定した問合せ(SQL文)によるデータベースに対する検索結果 (行の集合)を表すクラスです。 DBアクセスクラスライブラリでは、FJDB-RECORDSETクラスの個々のオブジェクト(データ ベースの検索結果)をレコードセットと呼びます。 ■解説6.1.4 FJDB-RECORDSETクラス FJDB-RECORDSETクラスのオブジェクトは、FJDB-DATABASEクラスおよびFJDB-COMMAND クラスのOPEN-RECORDSETメソッド、またはCREATE-OBJECTメソッドを使用して作成しま す。 [FJDB-RECORDSETクラスのオブジェクトの作成] (OPEN-RECORDSETメソッドを使用する)
INVOKE DATABASE-A "OPEN-RECORDSET" USING SQL OPT RECORDSET-A RETURNING RET-CODE.
OPEN-RECORDSETメソッドを使用したFJDB-RECORDSETクラスのオブジェクトの作成につい ての詳細は、6.2.36 OPEN-RECORDSETメソッドを参照してください。
(CREATE-OBJECTメソッドを使用する)
INVOKE FJDB-RECORDSET "CREATE-OBJECT" USING SQL RSOPT RSORT DSN UID PWD SCM OPT ERROR-A RETURNING RECORDSET-A. CREATE-OBJECTメソッドを使用したFJDB-RECORDSETクラスのオブジェクトの作成について の詳細は、6.4.4 FJDB-RECORDSETクラスのオブジェクトの作成を参照してください。 FJDB-RECORDSETクラスのメソッドを使用して、以下の操作を行うことができます。 ❍ レコードセットの行の位置づけの変更 (先頭行に移動/次の行に移動/前の行に移動/最終行に移動) ❍ レコードセットの行を更新 (行の追加/行の更新/行の削除)