Comments
Transcript
PowerRDBconnector説明書 SQL Server編 - ソフトウェア
PowerRDBconnector クライアントパッケージ for NetCOBOL V3.0 L10 PowerRDBconnector 説明書 SQL Server 編 Windows B1FW-5771-01Z0 2008 年 8 月 まえがき 製品の呼び名について 本書に記載されている製品の名称を、以下のように略して表記します。オペレーティング・システムを総称して、OS と記載します。デー タベース製品を総称して、データベースと記載します。 ・ 以下の製品を、「PowerRDBconnector」と記載します。 - PowerRDBconnector クライアントパッケージ for NetCOBOL (本製品) ・ 以下の製品を、「Windows」または、「Windows 2000」と記載します。 - Microsoft(R) Windows(R) 2000 Professional operating system - Microsoft(R) Windows(R) 2000 Server - Microsoft(R) Windows(R) 2000 Advanced Server ・ 以下の製品を、「Windows」または、「Windows XP」と記載します。 - Microsoft(R) Windows(R) XP Professional operating system ・ 以下の製品を、「Windows」または、「Windows Vista」と記載します。 - Microsoft(R) Windows Vista(R) Business - Microsoft(R) Windows Vista(R) Enterprise - Microsoft(R) Windows Vista(R) Ultimate ・ 以下の製品を、「Windows」または、「Windows Server 2003」と記載します。 - Microsoft(R) Windows Server(R) 2003, Standard Edition - Microsoft(R) Windows Server(R) 2003, Enterprise Edition - Microsoft(R) Windows Server(R) 2003 R2, Standard Edition - Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition ・ 以下の製品を、「Windows」または、「Windows Server 2003(x64)」と記載します。 - Microsoft(R) Windows Server(R) 2003, Standard x64 Edition - Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition - Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition - Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition ・ 以下の製品を、「Windows」または、「Windows Server 2008」と記載します。 - Microsoft(R) Windows Server(R) 2008 Standard - Microsoft(R) Windows Server(R) 2008 Enterprise ・ 以下の製品を、「Windows」または、「Windows Server 2008(x64)」と記載します。 - Microsoft(R) Windows Server(R) 2008 Standard (x64) - Microsoft(R) Windows Server(R) 2008 Enterprise (x64) ・ 以下の製品を、「SQL Server」または、「SQL Server 2000」と記載します。 - Microsoft(R) SQL Server(R) 2000 Enterprise Edition - Microsoft(R) SQL Server(R) 2000 Standard Edition - Microsoft(R) SQL Server(R) 2000 Workgroup Edition -i- - Microsoft(R) SQL Server(R) 2000 Developer Edition ・ 以下の製品を、「SQL Server」または、「SQL Server 2005」と記載します。 - Microsoft(R) SQL Server(R) 2005 Workgroup Edition - Microsoft(R) SQL Server(R) 2005 Standard Edition - Microsoft(R) SQL Server(R) 2005 Enterprise Edition - Microsoft(R) SQL Server(R) 2005 Developer Edition - Microsoft(R) SQL Server(R) 2005 Standard Edition x64 Extended - Microsoft(R) SQL Server(R) 2005 Enterprise Edition x64 Extended - Microsoft(R) SQL Server(R) 2005 Developer Edition x64 Extended ・ 以下の製品を、「Oracle」または、「Oracle9i」と記載します。 - Oracle9i Database Enterprise Edition Release 2 - Oracle9i Database Standard Edition Release 2 - Oracle9i Database Standard Edition One Release 2 - Oracle9i Database Personal Edition Release 2 ・ 以下の製品を、「Oracle」または、「Oracle10g」と記載します。 - Oracle Database 10g Enterprise Edition Release 1 / Release 2 - Oracle Database 10g Standard Edition Release 1 / Release 2 - Oracle Database 10g Standard Edition One Release 1 / Release 2 - Oracle Database 10g Personal Edition Release 1 / Release 2 ・ 以下の製品を、「Oracle」または、「Oracle10g(x64)」と記載します。 - Oracle Database 10g Enterprise Edition Release 2 for Microsoft Windows (x64) - Oracle Database 10g Standard Edition Release 2 for Microsoft Windows (x64) ・ 以下の製品を、「Oracle」または、「Oracle11g」と記載します。 - Oracle Database 11g Enterprise Edition - Oracle Database 11g Standard Edition - Oracle Database 11g Standard Edition One - Oracle Database 11g Personal Edition ・ 以下の製品を、「Oracle」または、「Oracle11g(x64)」と記載します。 - Oracle Database 11g Enterprise Edition for Microsoft Windows (x64) - Oracle Database 11g Standard Edition for Microsoft Windows (x64) ・ 以下の製品を、「NetCOBOL」または、「NetCOBOL for Windows」と記載します。 - NetCOBOL Base Edition for Windows V7.0 - NetCOBOL Standard Edition for Windows V7.0 - NetCOBOL Professional Edition for Windows V7.0 - NetCOBOL Base Edition 開発パッケージ for Windows V7.2/V8.0 - NetCOBOL Standard Edition 開発パッケージ for Windows V7.2/V8.0 - NetCOBOL Professional Edition 開発パッケージ for Windows V7.2/V8.0 - NetCOBOL Base Edition クライアント運用パッケージ for Windows V7.0/V7.2/V8.0 - ii - - NetCOBOL Standard Edition クライアント運用パッケージ for Windows V7.0/V7.2/V8.0 - NetCOBOL Base Edition 開発パッケージ V9.0/V10.0.0(注) - NetCOBOL Standard Edition 開発パッケージ V9.0/V10.0.0(注) - NetCOBOL Professional Edition 開発パッケージ V9.0/V10.0.0(注) - NetCOBOL クライアント運用パッケージ V9.0/V10.0.0(注) - NetCOBOL Base Edition クライアント運用パッケージ V9.0/V10.0.0(注) - NetCOBOL Standard Edition クライアント運用パッケージ V9.0/V10.0.0(注) ・ 以下の製品を、「NetCOBOL」または、「NetCOBOL for .NET」と記載します。 - NetCOBOL Base Edition for .NET V2.0 - NetCOBOL Standard Edition for .NET V2.0 - NetCOBOL Base Edition 開発パッケージ for .NET V2.1/V3.0/V3.1 - NetCOBOL Standard Edition 開発パッケージ for .NET V2.1/V3.0/V3.1 - NetCOBOL Base Edition クライアント運用パッケージ for .NET V2.0/V2.1/V3.0/V3.1 - NetCOBOL Standard Edition クライアント運用パッケージ for .NET V2.0/V2.1/V3.0/V3.1 - NetCOBOL Enterprise Edition 開発パッケージ for .NET V3.0/V3.1 (注) 製品名に、for Windows と付いていませんが、「NetCOBOL for .NET」と区別するときに、本書では、「NetCOBOL for Windows」と 略して表記します。 PowerRDBconnector 説明書の体系 PowerRDBconnector 説明書は、以下の 2 冊から構成されています。 ・ 「PowerRDBconnector 説明書 SQL Server 編」 ・ 「PowerRDBconnector 説明書 Oracle 編」 なお、PowerRDBconnector サーバパッケージ for NetCOBOL と、PowerRDBconnector クライアントパッケージ for NetCOBOL は、別 マニュアルです。 本書は、以下について説明しています。 ・ PowerRDBconnector クライアントパッケージ for NetCOBOL ・ SQL Server との接続 上記以外の接続の場合には、対応するマニュアルを参照してください。 本書の目的 本書は、PowerRDBconnector の製品概要および環境設定から運用管理について説明しています。 本書の読者 本書は、PowerRDBconnector の導入、環境設定および運用管理を行う方を対象としています。 本書を読むにあたり、以下の事項について熟知している必要があります。 ・ NetCOBOL ・ SQL Server - iii - ・ Windows 本書の構成 本書は、以下の章で構成しています。 第 1 章 導入前に考慮すること 本製品を使用する際に考慮および配慮が必要なことを説明します。 PowerRDBconnector の導入を判断する前に、業務システムの機能範囲に適合するかを開発者が判断する上で、特に注意すべき観 点を確認するときにお読みください。 第 2 章 PowerRDBconnector とは PowerRDBconnector の特長と機能について説明しています。 業務システムにおける本製品の機能の適用方法や範囲を明確化するためにお読みください。 第 3 章 PowerRDBconnector の使用手引き PowerRDBconnector の環境設定と使用方法について説明しています。 PowerRDBconnector を使用し、業務アプリケーションの開発、保守を行うのに必要な作業方法を説明しています。 第 4 章 COBOL アプリケーションの開発について 本製品を使用する際の注意事項を説明しています。 業務アプリケーションの開発時に、他のシステムから COBOL アプリケーションを移行する場合に、特に注意すべきこと、および COBOL アプリケーション開発時の注意事項を確認するときにお読みください。 第 5 章 エラー時の対処 PowerRDBconnector 使用時に発生したエラーの原因と対処、およびトレース機能について説明します。 エラーが発生したときにお読みください。 付録 A 他製品のファイル資源 他製品(ファイルシステム、データベース系)のファイル資源との関係、および代替方法について説明します。 開発者が、業務システムの機能・構成設計時に移行前のデータベース資産としてよく使用される論理ファイルとの違いについて確認 するときにお読みください。 付録 B トラブルシューティング PowerRDBconnector の使用時に発生したトラブルの調査方法、およびトラブル事例について説明します。 トラブルが発生したときにお読みください。 付録 C 開発用サンプル情報 PowerRDBconnector を使用する上で役立つサンプル集です。 開発者およびシステム管理者が、業務アプリケーションを開発するときに、参考にしてください。 付録 D リリース情報 PowerRDBconnector のリリース情報について説明します。 開発者およびシステム管理者が、前版との機能差を確認するときにお読みください。 - iv - 本書の読み方 本書は、PowerRDBconnector の使用方法について記載しています。 ・ NetCOBOL については、NetCOBOL のマニュアルを参照してください。 ・ SQL Server については、SQL Server Books Online を参照してください。 製品の仕様について PowerRDBconnector は、本書の記載範囲で検証しています。本書に記載していない PowerRDBconnector、オペレーティング・システ ムやデータベースの機能については、PowerRDBconnector の動作保証ができません。このため、この機能を使用する場合には、自己 責任で十分検証した上で使用してください。 商標について ・ Microsoft、Windows、Windows Vista、Windows NT、Windows Server、SQL Server またはその他のマイクロソフト製品の名称およ び製品名は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。 ・ Oracle またはその他の Oracle 製品の名称および製品名は、米国 Oracle Corporation の登録商標です。 ・ その他、本書に記載されているシステム名、製品名などには、必ずしも商標表示(TM、R)を付記していません。 マニュアルの変更点について 本書は、以下のマニュアルを元に作成されています。 ・ PowerRDBconnector クライアントパッケージ for NetCOBOL V2.0L20 PowerRDBconnector 説明書(SQL Server 編) 前版のマニュアルからの主な追加、変更点は、以下のとおりです。 変更点 No 変更箇所 1 マニュアルの形式を富士通標準形式に変更しました。 全体 2 以下の OS をサポートしました。 2.3 ・ Microsoft(R) Windows Server(R) 2008 Standard ・ Microsoft(R) Windows Server(R) 2008 Enterprise ・ Microsoft(R) Windows Server(R) 2008 Standard (x64) ・ Microsoft(R) Windows Server(R) 2008 Enterprise (x64) (注) Windows Server 2008 のサポートについて Windows Server 2008 上の PowerRDBconnector からアクセス可能なデータベースは、 SQL Server 2005 のみです。 3 以下の NetCOBOL をサポートしました。 2.3 ・ NetCOBOL Base Edition 開発パッケージ V10.0.0 ・ NetCOBOL Standard Edition 開発パッケージ V10.0.0 ・ NetCOBOL Professional Edition 開発パッケージ V10.0.0 ・ NetCOBOL クライアント運用パッケージ V10.0.0 ・ NetCOBOL Base Edition クライアント運用パッケージ V10.0.0 ・ NetCOBOL Standard Edition クライアント運用パッケージ V10.0.0 4 JIS X 0213:2004 に対応した文字セット(JIS2004)の注意事項を追加しました。 -v- 3.1.3 変更点 No 変更箇所 3.1.4 3.1.5 3.7 4.1.2.7 5 COBOL アプリケーションの文字コード系と SQL Server の文字コード系について記事を 追加しました。 4.1.2.7 6 NetCOBOL の RCS コンパイルオプション(UTF16)について記載しました。 3.1.6.1 7 UTF-8 で作成された PowerRDBconnector 動作環境ファイル、COBOL 初期化ファイルを サポートしました。 3.1.4 8 サポートする OS とデータベースの組合わせについて記載しました。 2.3.2.3 9 未サポートの運用形態について記載しました。 2.3.2.4 10 開発用サンプル情報に以下を追加しました。 付録 C 3.1.5 ・ PowerRDBconnector 動作環境ファイルのサンプル ・ COBOL 初期化ファイルのサンプル ・ エントリ情報ファイルのサンプル ・ セッションサブルーチンのサンプル ・ 認証サブルーチンのサンプル ・ トランザクションサブルーチンのサンプル 11 unicode 使用時の注意事項を追加しました。 3.7.1 12 リリース情報を変更しました。 付録 D 高度な安全性が要求される用途への使用について 本製品は、一般事務用、パーソナル用、家庭用、通常の産業等の一般的用途を想定して開発・設計・製造されているものであり、原子 力施設における核反応制御、航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持のための医療 用機器、兵器システムにおけるミサイル発射制御など、極めて高度な安全性が要求され、仮に当該安全性が確保されない場合、直接 生命・身体に対する重大な危険性を伴う用途(以下「ハイセイフティ用途」という)に使用されるよう開発・設計・製造されたものではあり ません。 お客さまは本製品を必要な安全性を確保する措置を施すことなくハイセイフティ用途に使用しないでください。 また、お客さまがハイ セイフティ用途に本製品を使用したことにより発生する、お客様または第三者からのいかなる請求または損害賠償に対しても富士通株 式会社およびその関連会社は一切責任を負いかねます。 インターネットでの使用について 本製品はインターネットへのサービスを提供する用途を想定して設計・製造されておりません。 インターネットに接続しない環境(ロー カルネットワークまたはイントラネット内)で使用するか、 インターネットに接続して使用する場合は、運用環境によりセキュリティ侵害対 策を構築した上でご使用ください。 2008 年 8 月 Copyright FUJITSU LIMITED 2003-2008 - vi - 目 次 第 1 章 導入前に考慮すること....................................................................................................................................................1 1.1 本製品を使用する前に.......................................................................................................................................................................1 1.2 本製品で実現できる性能....................................................................................................................................................................1 1.3 本製品で実現できる排他制御............................................................................................................................................................2 1.4 対象とする既存システム......................................................................................................................................................................2 1.5 データベース製品の使用における注意.............................................................................................................................................2 1.6 インターネットでの使用について........................................................................................................................................................2 第 2 章 PowerRDBconnector とは.............................................................................................................................................3 2.1 PowerRDBconnector の特長..............................................................................................................................................................3 2.1.1 入出力文でのデータベースアクセス...........................................................................................................................................3 2.1.2 2 種類のプログラミングスタイル...................................................................................................................................................3 2.1.2.1 シングルセッションプログラミング..........................................................................................................................................3 2.1.2.2 マルチセッションプログラミング.............................................................................................................................................4 2.1.3 既存 COBOL 資産の活用...........................................................................................................................................................5 2.1.4 データベースを活用したシステム構築........................................................................................................................................5 2.2 機能.....................................................................................................................................................................................................5 2.2.1 ファイルアクセス機能...................................................................................................................................................................5 2.2.1.1 ファイルアクセス機能............................................................................................................................................................6 2.2.1.2 COBOL アプリケーションから利用できる機能範囲.............................................................................................................6 2.2.1.3 参考:データベースの機能範囲...........................................................................................................................................9 2.2.2 プログラミングスタイル................................................................................................................................................................10 2.2.2.1 プロセスとスレッド................................................................................................................................................................10 2.2.2.2 シングルスレッド(プロセス)プログラムとマルチスレッドプログラム....................................................................................10 2.2.2.3 プログラミングスタイルとは..................................................................................................................................................10 2.2.2.4 シングルセッション...............................................................................................................................................................11 2.2.2.5 マルチセッション..................................................................................................................................................................11 2.2.3 認証機能....................................................................................................................................................................................12 2.2.4 トランザクション機能...................................................................................................................................................................12 2.2.5 排他制御....................................................................................................................................................................................12 2.3 システム構成.....................................................................................................................................................................................12 2.3.1 必要なソフトウェア......................................................................................................................................................................13 2.3.1.1 開発時のシステム構成........................................................................................................................................................13 2.3.1.2 運用時のシステム構成........................................................................................................................................................14 2.3.2 運用形態....................................................................................................................................................................................15 2.3.2.1 開発時の形態......................................................................................................................................................................16 2.3.2.2 運用時の形態......................................................................................................................................................................16 2.3.2.3 サポートする OS とデータベースの組合せ........................................................................................................................18 2.3.2.4 未サポートの運用形態........................................................................................................................................................19 第 3 章 PowerRDBconnector の使用手引き............................................................................................................................20 3.1 環境構築...........................................................................................................................................................................................20 3.1.1 PowerRDBconnector を構成する要素.......................................................................................................................................20 3.1.2 環境構築の手順.........................................................................................................................................................................21 3.1.3 データベースオブジェクトの作成...............................................................................................................................................22 3.1.3.1 データベースオブジェクトの作成手順................................................................................................................................23 3.1.3.2 データベースの作成...........................................................................................................................................................23 3.1.3.3 データベースにアクセスするための権限設定...................................................................................................................24 3.1.3.4 ファイルとテーブルまたはビューの対応.............................................................................................................................24 3.1.3.5 列定義の対応......................................................................................................................................................................25 3.1.4 PowerRDBconnector 動作環境ファイル....................................................................................................................................29 3.1.5 COBOL 初期化ファイル............................................................................................................................................................34 3.1.6 コンパイル方法...........................................................................................................................................................................37 3.1.6.1 NetCOBOL for Windows でのコンパイル方法..................................................................................................................37 3.1.6.2 NetCOBOL for .NET でのコンパイル方法.........................................................................................................................38 - vii - 3.2 セッションの制御方法........................................................................................................................................................................40 3.2.1 セッションの制御方法.................................................................................................................................................................40 3.2.2 セッションサブルーチンのインターフェース..............................................................................................................................42 3.2.2.1 セッション開設サブルーチンのインターフェース...............................................................................................................42 3.2.2.2 セッション閉設サブルーチンのインターフェース...............................................................................................................43 3.2.3 セッションの使用例.....................................................................................................................................................................44 3.3 認証...................................................................................................................................................................................................45 3.3.1 Windows 認証の使用方法........................................................................................................................................................45 3.3.2 データベース認証の使用方法(シングルセッション)................................................................................................................46 3.3.2.1 データベース認証の動作概要(シングルセッション).........................................................................................................46 3.3.2.2 認証情報登録サブルーチンのインターフェース(シングルセッション).............................................................................47 3.3.3 データベース認証の使用方法(マルチセッション)...................................................................................................................49 3.3.3.1 データベース認証の動作概要(マルチセッション)............................................................................................................49 3.3.3.2 認証情報登録サブルーチンのインターフェース(マルチセッション)................................................................................50 3.4 トランザクション..................................................................................................................................................................................51 3.4.1 トランザクション機能とは.............................................................................................................................................................51 3.4.2 トランザクションの使用方法(シングルセッション).....................................................................................................................51 3.4.2.1 トランザクションプログラム(シングルセッション).................................................................................................................52 3.4.2.2 トランザクション使用時の注意事項(シングルセッション)..................................................................................................52 3.4.2.3 トランザクションサブルーチンのインターフェース(シングルセッション)...........................................................................53 3.4.3 トランザクションの使用方法(マルチセッション)........................................................................................................................54 3.4.3.1 トランザクションプログラム(マルチセッション)....................................................................................................................55 3.4.3.2 トランザクション使用時の注意事項(マルチセッション).....................................................................................................56 3.4.3.3 トランザクションサブルーチンのインターフェース(マルチセッション)..............................................................................56 3.5 排他制御...........................................................................................................................................................................................58 3.5.1 排他制御の種類.........................................................................................................................................................................58 3.5.2 レコードロック機能......................................................................................................................................................................59 3.5.2.1 トランザクション未適用時のレコードロック..........................................................................................................................59 3.5.2.2 トランザクション適用時のレコードロック..............................................................................................................................59 3.5.2.3 レコードロックの獲得待合わせ...........................................................................................................................................60 3.5.3 テーブルロック機能....................................................................................................................................................................60 3.5.3.1 テーブルロック機能の使用方法.........................................................................................................................................60 3.5.3.2 テーブルロック解除時のトランザクション取消し機能.........................................................................................................62 3.6 タイムアウト機能.................................................................................................................................................................................62 3.6.1 レコードロック獲得の待合わせ..................................................................................................................................................63 3.6.2 処理完了待合わせ時間の設定.................................................................................................................................................63 3.6.3 高負荷な実行環境での SQL Server の処理完了の待合わせ.................................................................................................63 3.7 データ補正機能................................................................................................................................................................................63 3.7.1 後方空白補正............................................................................................................................................................................64 3.7.2 項目属性に違反するデータのチェックと補正...........................................................................................................................66 3.7.2.1 データチェック.....................................................................................................................................................................68 3.7.2.2 データ補正..........................................................................................................................................................................69 第 4 章 COBOL アプリケーションの開発について.....................................................................................................................72 4.1 開発のポイント...................................................................................................................................................................................72 4.1.1 環境設定のポイント....................................................................................................................................................................72 4.1.1.1 ファイル識別名について.....................................................................................................................................................72 4.1.1.2 データベースの照合順序について....................................................................................................................................72 4.1.2 データベース作成のポイント......................................................................................................................................................72 4.1.2.1 混在項目を使用する場合...................................................................................................................................................72 4.1.2.2 OCCURS 句、REDEFINES 句を使用する場合.................................................................................................................73 4.1.2.3 ビューについて....................................................................................................................................................................73 4.1.2.4 列の定義について..............................................................................................................................................................73 4.1.2.5 データベースで扱えないデータ値との整合性について...................................................................................................73 4.1.2.6 インデックスの作成について...............................................................................................................................................74 4.1.2.7 文字コードについて............................................................................................................................................................74 4.1.2.8 ユーティリティを使用する場合............................................................................................................................................75 - viii - 4.1.3 COBOL アプリケーション作成のポイント...................................................................................................................................76 4.1.3.1 トランザクションについて.....................................................................................................................................................76 4.1.3.2 テーブルロック機能について..............................................................................................................................................77 4.1.3.3 レコードロック機能について................................................................................................................................................77 4.1.3.4 OUTPUT モードのオープンについて................................................................................................................................77 4.1.3.5 レコードの削除方法について.............................................................................................................................................77 4.1.3.6 LOW-VALUE、HIGH-VALUE について..........................................................................................................................77 4.1.3.7 使用メモリ量について.........................................................................................................................................................78 4.1.3.8 マルチセッションプログラミングについて............................................................................................................................78 4.1.4 性能向上のポイント....................................................................................................................................................................79 4.1.4.1 インデックスの定義..............................................................................................................................................................79 4.1.4.2 データ更新時のトランザクション適用.................................................................................................................................79 4.1.4.3 トランザクションログファイルのディスク配置.......................................................................................................................79 4.1.4.4 データベース・ユーティリティの活用..................................................................................................................................80 4.2 注意事項...........................................................................................................................................................................................80 4.2.1 トランザクションに関する注意事項............................................................................................................................................80 4.2.1.1 トランザクションの確定、取消しを実行せずに終了した場合.............................................................................................80 4.2.1.2 テーブルロック機能とトランザクションについて..................................................................................................................81 4.2.2 排他制御に関する注意事項.....................................................................................................................................................83 4.2.2.1 COBOL アプリケーションを終了した場合..........................................................................................................................83 4.2.2.2 削除したレコードの待合せについて..................................................................................................................................83 4.2.2.3 テーブルロックの排他制御について..................................................................................................................................83 4.2.2.4 デッドロック状態について...................................................................................................................................................85 4.2.3 COBOL アプリケーションに関する注意事項............................................................................................................................86 4.2.3.1 キーに重複した値がある索引ファイルについて................................................................................................................86 4.2.3.2 ビューの使用について........................................................................................................................................................86 4.2.3.3 レコードの格納位置について.............................................................................................................................................86 4.2.3.4 文字コード変換について....................................................................................................................................................87 4.2.3.5 OUTPUT モードのオープンの使用について....................................................................................................................87 4.2.4 マルチスレッド使用時の注意事項.............................................................................................................................................87 4.2.4.1 マルチスレッドプログラムについて.....................................................................................................................................87 4.2.4.2 スレッドとセッションの関係について...................................................................................................................................87 4.2.4.3 セッションとトランザクションの関係について......................................................................................................................89 4.2.5 リモートのデータベースアクセスに関する注意事項.................................................................................................................90 4.2.5.1 大量のレコードアクセスについて........................................................................................................................................90 4.2.5.2 セキュリティについて...........................................................................................................................................................90 第 5 章 エラー時の対処............................................................................................................................................................92 5.1 エラー時の対処.................................................................................................................................................................................92 5.1.1 ファイルアクセス時のエラー情報...............................................................................................................................................93 5.1.1.1 ファイルアクセス時のイベントログ情報...............................................................................................................................93 5.1.1.2 イベントログに出力されないエラー情報.............................................................................................................................94 5.1.1.3 ファイルアクセス時のエラーコード一覧..............................................................................................................................94 5.1.1.4 COBOL アプリケーション終了時のメッセージ一覧.........................................................................................................101 5.1.1.5 データベースのエラー発生時のイベントログ情報...........................................................................................................102 5.1.2 トランザクションアクセス時のエラー情報.................................................................................................................................103 5.1.2.1 トランザクションアクセス時のイベントログ情報.................................................................................................................103 5.1.2.2 トランザクションアクセス時のエラーコード一覧................................................................................................................104 5.1.3 認証情報登録サブルーチンのエラー情報.............................................................................................................................104 5.1.3.1 認証情報登録サブルーチンのイベントログ情報.............................................................................................................105 5.1.3.2 認証情報登録サブルーチンのエラーコード一覧............................................................................................................105 5.1.4 セッションサブルーチンのエラー情報.....................................................................................................................................106 5.1.4.1 セッションサブルーチンのイベントログ情報.....................................................................................................................106 5.1.4.2 セッションサブルーチンのエラーコード一覧....................................................................................................................106 5.2 トレース出力機能............................................................................................................................................................................107 5.2.1 トレース機能の使用方法..........................................................................................................................................................107 5.2.2 トレースの種類..........................................................................................................................................................................108 - ix - 5.2.3 トレース情報の内容..................................................................................................................................................................108 5.2.3.1 トレース情報の形式...........................................................................................................................................................108 5.2.3.2 トレースの出力例...............................................................................................................................................................111 付録 A 他製品のファイル資源................................................................................................................................................117 A.1 論理ファイル...................................................................................................................................................................................117 付録 B トラブルシューティング................................................................................................................................................120 B.1 トラブルへの対処方法....................................................................................................................................................................120 B.2 事例.................................................................................................................................................................................................120 B.2.1 製品仕様について...................................................................................................................................................................120 B.2.2 トラブル事例.............................................................................................................................................................................121 B.2.3 性能..........................................................................................................................................................................................125 付録 C 開発用サンプル情報..................................................................................................................................................126 C.1 NetCOBOL for .NET のプログラム原型........................................................................................................................................126 C.1.1 XMROTSTR サブルーチン....................................................................................................................................................126 C.1.2 XMROTEND サブルーチン...................................................................................................................................................126 C.1.3 XMROTCNL サブルーチン....................................................................................................................................................127 C.1.4 XMROTRBK サブルーチン...................................................................................................................................................127 C.1.5 XMROAUTH サブルーチン...................................................................................................................................................128 C.2 マニュアル内で使用した図表に対するテキスト形式の雛型.........................................................................................................128 C.2.1 PowerRDBconnector 動作環境ファイルのサンプル..............................................................................................................128 C.2.2 COBOL 初期化ファイルのサンプル.......................................................................................................................................129 C.2.3 エントリ情報ファイルのサンプル..............................................................................................................................................129 C.2.4 セッションサブルーチンのサンプル........................................................................................................................................129 C.2.5 認証サブルーチンのサンプル................................................................................................................................................130 C.2.6 トランザクションサブルーチンのサンプル...............................................................................................................................131 付録 D リリース情報...............................................................................................................................................................133 D.1 リリース情報....................................................................................................................................................................................133 D.2 非互換について.............................................................................................................................................................................135 索引......................................................................................................................................................................................136 -x- 第1章 導入前に考慮すること 本章では、本製品を使用する際に考慮および配慮することを説明します。 この製品をはじめてお使いになる方は、必ずお読みください。 1.1 本製品を使用する前に 本製品は、データベースをファイルシステムと同様に READ/WRITE 文でアクセスするためのものですが、ファイルシステム系製品の 機能互換を保証するものではありません。 本製品を使用する上で排他制御、データ構造、性能確保などの考慮が必要です。 例えば、ファイルアクセス系製品とは、データ値の扱いが異なります。データベースでは、文字データ型には文字のみ、数字データ型 には数値のみが格納可能です。一方、COBOL ではプログラミングの仕方で、数字データ型に文字が設定されることがあります。 このようなデータ操作はできないため、COBOL アプリケーションの修正が必要となります。 詳しくは、「第 3 章 PowerRDBconnector の使用手引き」および「第 4 章 COBOL アプリケーションの開発について」を参照してくださ い。 1.2 本製品で実現できる性能 本製品は、データベース製品が提供する SQL アクセスインターフェースを使用して、COBOL アプリケーションの入出力文を処理しま す。 そのため実現できる性能は、入出力文を直接サポートしているファイルシステム系製品に対して、入出力文で記述した COBOL アプリ ケーションからアクセスした場合と同等の性能を保証するものではなく、入出力文の処理論理を変更せずに、SQL アクセスインター フェースでアクセスした場合と同等となります。 一般的に、SQL アクセスインターフェースを持つデータベース製品は、以下の傾向があります。 ・ アプリケーションで集合操作の処理を行うと、性能がよくなります。 ・ アプリケーションで、カーソルを宣言し、1 レコードずつ処理すると、集合操作と比較してデータ件数に応じて性能が劣化します。 本製品では、COBOL のアクセス文に合わせ、カーソルを宣言し、1 レコードずつ処理しています。このため、本製品を使用したアプリ ケーションの性能よりも、データベース製品へ直接 SQL 文でアクセスするアプリケーションの方が高性能となります。 データ検索では、COBOL の索引ファイルのレコードキーに対応するデータベースのインデックスが必要です。 データ更新を行うと、データベースではデータ保証のため、履歴管理されているトランザクションログファイルにも更新が行われます。 そのため、履歴管理されないファイルシステム系製品と同等の更新性能は得られません。 データ更新の性能を向上させるには、トランザクションを適用して、複数の更新データをまとめて確定するなどの方法があります。性能 向上については、「4.1.4 性能向上のポイント」を参照してください。 -1- 1.3 本製品で実現できる排他制御 データベースでは、排他制御の仕組みがファイルシステム系製品と大きく異なります。また、データベース製品によっても排他制御の 仕組みが異なります。 このため、使用するデータベースで実現している排他制御の理解が必要です。 本製品の排他制御について、詳しくは「3.5 排他制御」を参照してください。 1.4 対象とする既存システム 本製品は、既存システムの入出力文で記述した COBOL アプリケーションを、SQL 文を使用した COBOL アプリケーションに書き直さ ずに、活用することを目的としたものです。 主に、以下の既存システムの入出力文で記述した COBOL アプリケーションを対象としています。 ・ 中小規模のシステム ・ 既存システムの COBOL アプリケーションの活用 ・ CSP/FX(FX-RDB)、ASP(RDB/6000、Symfoware6000)からの移行 1.5 データベース製品の使用における注意 データベース製品を使用するため、データベースを熟知した、高い技術力を持つ技術者が業務を設計してください。 1.6 インターネットでの使用について 本製品はインターネットへのサービスを提供する用途を想定して設計・製造されておりません。このため、以下の環境で使用してくださ い。 ・ インターネットに接続しない環境(ローカルネットワークまたはイントラネット内) ・ インターネットに接続して使用する場合は、VPN、ファイアーウォールなど運用環境によりセキュリティ侵害対策を構築した環境 -2- 第2章 PowerRDBconnector とは 本章では、PowerRDBconnector の機能について説明します。 開発者およびシステム管理者が、業務システムを設計するときに、本製品の機能範囲を理解するためにお読みください。 2.1 PowerRDBconnector の特長 本製品は、データベースをファイルシステムと同様に READ/WRITE 文でアクセスするためのものです。 ここでは、PowerRDBconnector の特長を説明します。 2.1.1 入出力文でのデータベースアクセス PowerRDBconnector は、COBOL アプリケーションの OPEN、START、READ、REWRITE、WRITE、DELETE、CLOSE といった入出 力文で、一般の順ファイルや索引ファイルと同様に、データベースのテーブルまたはビューにアクセスできます。 図 2.1 入出力文でのデータベースアクセス 2.1.2 2 種類のプログラミングスタイル 本製品は、以下の 2 つのプログラミングスタイルが可能です。 ・ シングルセッションプログラミング ・ マルチセッションプログラミング セッションは、「認証、排他制御、トランザクション制御を行う単位」のことです。 2.1.2.1 シングルセッションプログラミング コンソールアプリケーションや、バッチアプリケーションなどのように、1 プロセス上で 1 つのユーザーアプリケーションを動作させるプロ グラミングスタイルです。 -3- シングルセッションプログラミングの場合、COBOL アプリケーションと PowerRDBconnector の間には、暗黙のセッションが1つあるもの とみなされ、データベースとのセッションも、プロセス上に1つだけ開設されます。 図 2.2 シングルセッションプログラミングの概要 シングルセッションプログラミングとは、PowerRDBconnector V1.0 からサポートされているプログラミングスタイルのことです。 シングルセッションプログラミングの利点については、「表 2.4 プログラミングスタイルごとの利点について」を参照してください。 2.1.2.2 マルチセッションプログラミング マルチスレッドで動作する Web アプリケーションのように、1 プロセス上でユーザーアプリケーションを複数動作させるため、アプリケー ションでセッションの制御を行うプログラミングスタイルです。 マルチセッションプログラミングの場合、PowerRDBconnector のセッションと、データベースのセッションは、1対1に対応付けられます。 図 2.3 マルチセッションプログラミングの概要 マルチセッションプログラミングの利点については、「表 2.4 プログラミングスタイルごとの利点について」を参照してください。 -4- 2.1.3 既存 COBOL 資産の活用 入出力文で記述した従来の COBOL アプリケーションを、SQL 文による記述に設計変更せずに、データベース(テーブル、ビュー)に アクセスできるため、従来の COBOL アプリケーションのソースコードや開発スキルを活用できます。 例えば、ファイルシステムのデータをデータベースに移行し、入出力文で記述した COBOL アプリケーションを活用して、データベー スにアクセスすることができます。 図 2.4 既存 COBOL 資産の活用 なお、COBOL アプリケーションのプログラミングで考慮すべきポイントが、いくつかあります。詳しくは、「第 4 章 COBOL アプリケーショ ンの開発について」を参照してください。 2.1.4 データベースを活用したシステム構築 データベースのバックアップ機能、リカバリ機能、クラスタシステムなどを活用して、一般のファイルシステムよりも堅牢性のある業務シス テムを構築できます。 また、業務に合わせ、COBOL 以外の言語で作成したアプリケーションとデータベースを共有することができます。 2.2 機能 本節では、PowerRDBconnector の機能について説明します。 2.2.1 ファイルアクセス機能 COBOL アプリケーションからデータベースのテーブルまたはビューを、ファイル(順ファイル、索引ファイル)としてアクセスできます。 -5- ファイルアクセス機能 2.2.1.1 以下にファイルアクセス機能を示します。 表 2.1 ファイルアクセス機能 編成 ORGANIZATION アクセスモード ACCESS MODE データベースオブジェクト SEQUENTIAL(順ファイル) SEQUENTIAL(順呼出し) テーブル、ビュー SEQUENTIAL(順呼出し) INDEXED(索引ファイル) RANDOM(乱呼出し) テーブル、ビュー、インデックス DYNAMIC(動的呼出し) 図 2.5 ファイルアクセス機能 ビューへのファイルアクセスには、テーブルへのアクセスと比較していくつかの制約があります。詳細は、「4.2.3.2 ビューの使用につい て」を参照してください。 2.2.1.2 COBOL アプリケーションから利用できる機能範囲 PowerRDBconnector を使用してデータベースにアクセスするために使用できる COBOL の機能範囲を以下に示します。 表 2.2 COBOL アプリケーションの機能範囲 項目 ファイル レコード ファイル編成 レコード形式 利用可否 レコード順ファイル ○ 相対ファイル ×:エラー(注 1) 索引ファイル ○ 固定長レコード形式 ○ 可変長レコード形式 ×:エラー レコードの最大長(バイト数) -6- 8,060 項目 SELECT 句 ASSIGN 句 利用可否 OPTIONAL 指定 ×:無効(注 2) ファイル識別名指定 ○ ファイル識別名定数指定 ○ データ名指定 ○ ファイル状態 ○(注 4) (注 3) FILE STATUS 句 AUTOMATIC LOCK MODE 句 EXCLUSIVE ×:無効(注 5) MANUAL RECORD KEY 句 ALTERNATE ファイル 管理記述項 RECORD KEY 句 レコード キーの項目 文 プログラミング トランザクション セッション ○ 指定できるキー項目の最大個数 (注 6) 英数字 ○ 日本語 ○ 符号なし外部 10 進数 ○ 符号付き外部 10 進数 ○ 符号なし内部 10 進数 ○ 符号付き内部 10 進数 ○ 符号なし 2 進数 ○ 符号付き 2 進数 ○ キーの降順評価 ×:指定不可 多重項目キー ○ OPEN 文 ○ CLOSE 文 ○ READ 文 ○ WRITE 文 ○ REWRITE 文 ○ START 文 ○ DELETE 文 ○ シングルセッション ○ マルチセッション ○(注 7) 開始 ○ 確定 ○ 取消し ○ 操作(注 8) 分離レベル 排他制御(注 9) 15 対象 ReadCommitted テーブルロック ○ レコードロック ○ 1 セッションで可能な最大オープン数 128 1 システムでの最大セッション数 512 1 システムで可能な最大多重実行可能なプロセス数 100(注 10) -7- 項目 利用可否 最大合計列名長(1 つのテーブル/ビューに対する全列名の合計サイズ) 40,960(注 11) ○:使用可能 ×:使用不可 エラー :エラー終了します。 無効 :指定した動作が行われません。 指定不可:サポートしていないため、指定する方法がありません。 注 1)相対ファイル COBOL ファイルシステムの相対ファイルなどを使用してください。 指定した場合、OPEN 文実行時、以下の COBOL エラーが発生します。 -“JMP0001I-U ファイルのオープンに失敗しました.” 注 2)OPTIONAL 指定 ファイルが存在しない場合、ファイルなしのエラーとなります。自動生成は行いません。 注 3)ASSIGN 句 ASSIGN 句はファイル識別名で行い、「3.1.5 COBOL 初期化ファイル」に指定することを推奨します。なお、PowerRDBconnector ではファイル識別名を一意の名前で指定してください。 注 4)FILE STATUS 句 入出力状態の詳細情報(FILE STATUS 02)は返却しません。指定した場合でも常に初期値が通知されます。 注 5)LOCK MODE 句 エラーとなりませんが、LOCK MODE 句で指定したロック機構は動作しません。 注 6)ALTERNATE RECORD KEY 句 指定できるキー項目の最大個数は、RECORD KEY 句と合わせて 16 個です。 注 7)マルチセッション マルチセッションは、以下の環境で使用できます。 - 「NetCOBOL for .NET V3.0/V3.1」を用いてコンパイルし、かつセッションを制御するユーザーアプリケーションを作成した場 合。 ASP.NET や Interstage などと連携するときは、マルチセッションのプログラミングが必要です。MeFt/Web のマルチスレッドモデ ルには対応していません。 注 8)トランザクション操作 トランザクション操作をするには、PowerRDBconnector が提供するトランザクションサブルーチンを CALL 文で呼び出します。トラン ザクションは、セッション単位に開始、確定および取消しができます。 -8- 注 9)排他制御 レコードロックは、PowerRDBconnector がセッション単位で自動的に行います。テーブルロックは、COBOL 初期化ファイルの指定 により行います。テーブルロックの指定方法は、「3.1.5 COBOL 初期化ファイル」を参照してください。 注 10)1 システムで可能な最大多重実行数 同時実行できる最大多重実行数は、アプリケーションの処理内容(入出力文回数)、データベースおよび使用するハードウェア (CPU、ハードディスク能力、データベースに割り当てる実メモリ)の要件に依存します。例えば、バッチプログラムの大量データ処 理は、高負荷となるため、多重実行に耐えられません。 注 11)最大合計列名長 データベースのテーブルおよびビューを作成する際、列名の長さの合計が、半角文字で 40,960 文字、全角文字の場合は 20,480 文字以下にしてください。 2.2.1.3 参考:データベースの機能範囲 ここでは、データベースの機能範囲を入出力文で記述した COBOL の機能範囲に置き換えて説明します。詳細は、SQL Server の Books Online を参照してください。 表 2.3 参考:データベースの機能範囲 項目 SQL Server の機能範囲 isql、 ファイル定義ツール Enterprise Manager ユーティリティなど ファイルの最大サイズ(バイト) 32T ファイルの最大数 約 20 億 別名 シノニム(注) レコードの最大長(バイト) 8,060 レコード内の最大項目数(列数) 1,024 レコードの最大数(行数) 無制限 ファイル レコード RECORD KEY 句 ファイル 管理記述項 ALTERNATE RECORD KEY 句 指定できる項目の最大個数 16 指定できる項目総長の最大(バイト) 900 指定できるキーの最大個数 無制限 指定できる項目の最大個数 16 指定できる項目総長の最大(バイト) 900 多重項目キーに定義できる最大列数 16 トランザクション ○ リカバリ ○ バックアップ ○ 1 テーブルに定義できるインデックス数 249 1 セッションで可能な最大オープン数 特に記載なし 1 システムで可能な最大オープン数 特に記載なし データベースの機能範囲について SQL Server の Books Online を元に記載しています。詳しくは、Microsoft 社が提供している情報を参照してください。 -9- 注 1)シノニム SQL Server 2005 で定義できますが、PowerRDBconnector はサポートしていません。 2.2.2 プログラミングスタイル ここでは、次の 2 種類のプログラミングスタイルについて説明します。 ・ シングルセッション ・ マルチセッション 2.2.2.1 プロセスとスレッド Windows は、実行するプログラムごとにプロセスを割り当て、各プロセスに、メモリ上のプログラムのコード、データ、オープンされてい るファイル、動的に割り当てられたメモリ資源など、OS の資源を割り当てます。 Windows は、CPU の実行時間をプロセス内に生成されたスレッド単位に割り当てます。 スレッドとは、CPU に実行時間を割り当てる最小単位です。つまり、1 プロセスの内部に多数のスレッドを生成することで、複数のコード (プログラム)を同時に実行することができます。 1つのプロセス内のスレッドは、プロセスの仮想メモリ空間やグローバル変数などを共有します。このため、スレッド間のデータ交換など にかかる CPU 負荷が、プロセス間のデータ交換に比べて非常に小さくなります。 Windows は、プロセス内で複数スレッドを実行しない場合でも、CPU 時間の割り当てはスレッド単位になるので、プロセスが起動され ると、少なくとも 1 つのスレッドを起動するようになっています。 2.2.2.2 シングルスレッド(プロセス)プログラムとマルチスレッドプログラム シングルスレッド(プロセス)プログラムとは、1つのプロセス内で、1 つのスレッドを実行するプログラムのことです。 それに対し、マルチスレッドプログラムとは、1つのプロセス内で、複数のスレッド(マルチスレッド)でプログラムを実行できるプログラム のことです。 2.2.2.3 プログラミングスタイルとは PowerRDBconnector を使用する場合、「表 2.4 プログラミングスタイルごとの利点について」で示される 2 つのプログラミングスタイルが 選択できます。 表 2.4 プログラミングスタイルごとの利点について プログラミングス タイル シングルスレッ マルチスレッドでの ド(プロセス)で 動作 の動作 利点 ・ 1 プロセス上の全てのアクセスをデータベースと1つの セッションで実行します。 シングルセッ ションプログラミ ング ・ データベースとのセッションを意識せず、アプリケーショ ンを作成できます。 ・ 既存 COBOL 資産のプログラミングスタイルを変更せ ずに開発できます。 - 10 - ○ × プログラミングス タイル シングルスレッ マルチスレッドでの ド(プロセス)で 動作 の動作 利点 ・ マルチスレッドで動作可能なアプリケーションを作成で マルチセッショ ンプログラミング きます。 ○ (注) ・ スレッド単位にセッションを保持できます。 ○ ・ ASP.NET モデルで動作できるアプリケーションが開発 できます。 ○:使用可能 ×:使用不可 注) マルチセッションプログラミングで作成されたプログラムは、シングルスレッド(プロセス)でも動作可能です。 シングルスレッド(プロセス)プログラムを、マルチセッションで作成する必要はありません。 “マルチスレッド”と“マルチセッション”という表現は似ていますが、本書では以下のように使い分けています。 - プログラムや OS 資源について関係がある場合には、プロセスやスレッド(マルチスレッド)という用語を使います。 - PowerRDBconnector を使ったプログラミングのスタイルについては、セッションという用語を使います。 シングルセッション 2.2.2.4 1 プロセス上の全てのアクセスをデータベースと1つのセッションで実行する方式です。 シングルセッションのプログラミングスタイルを使用する場合、以下の章を参照してください。 表 2.5 シングルセッション使用時の各機能の説明 機能 説明部分 セッションの使用方法 セッションを意識する必要はありません。 コンパイル方法 「3.1.6 コンパイル方法」 データベース認証の使用方法 「3.3.2 データベース認証の使用方法(シングルセッション)」 トランザクションの使用方法 「3.4.2 トランザクションの使用方法(シングルセッション)」 マルチセッション 2.2.2.5 アプリケーションがセッションを複数開設して、セッションごとにデータベースへアクセスする方式です。 マルチセッションのプログラミングスタイルを使用する場合、以下の章を参照してください。 表 2.6 マルチセッション使用時の各機能の参照箇所 機能 説明部分 セッションの使用方法 「3.2 セッションの制御方法」 コンパイル方法 「3.1.6 コンパイル方法」 データベース認証の使用方法 「3.3.3 データベース認証の使用方法(マルチセッション)」 トランザクションの使用方法 「3.4.3 トランザクションの使用方法(マルチセッション)」 - 11 - 2.2.3 認証機能 SQL Server では、Windows 認証か、データベース認証かのいずれかで認証し、データベースにアクセスすることができます。 PowerRDBconnector は、どちらの認証方法も使用可能です。 ・ Windows 認証の場合 COBOL アプリケーションが動作するプロセスのユーザー ID でデータベースにアクセスできるよう、データベースを適切に設定し てください。 ・ データベース認証の場合 COBOL アプリケーションの中から、認証情報登録サブルーチンを呼び出して、データベースが備えているデータベース認証を使 用できます。 詳しくは「3.1.3.3 データベースにアクセスするための権限設定」と、「3.3 認証」を参照してください。 2.2.4 トランザクション機能 複数のファイルまたは、複数のレコード間のデータ整合性をセッション単位で保証するために、COBOL アプリケーションからトランザク ション操作(開始、確定、取消し)を行うことができます。詳しくは、「3.4 トランザクション」を参照してください。 図 2.6 トランザクション機能 2.2.5 排他制御 アプリケーションが多重動作するシステムにおいて、データの内容を保証するため、テーブルやレコードに対してセッション単位でロック (排他制御)を行います。 詳しくは、「3.5 排他制御」を参照してください。 2.3 システム構成 本節では、システムを構成するソフトウェアと運用環境について説明します。 - 12 - 2.3.1 必要なソフトウェア PowerRDBconnector を使用するには、以下の製品が必要です。 2.3.1.1 開発時のシステム構成 (1) OS 以下のいずれかの製品が必要です。(注 1) ・ Windows 2000 Professional Service 4 ・ Windows XP Professional Edition Service Pack 2/3 ・ Windows Vista Business Service Pack 1 (注 2) ・ Windows Vista Enterprise Service Pack 1 (注 2) ・ Windows Vista Ultimate Service Pack 1 (注 2) ・ Windows 2000 Server Service Pack 4 ・ Windows 2000 Advanced Server Service Pack 4 ・ Windows Server 2003 Standard Edition Service Pack 2 ・ Windows Server 2003 Enterprise Edition Service Pack 2 ・ Windows Server 2003, Standard Edition Release 2 Service Pack 2 ・ Windows Server 2003, Enterprise Edition Release 2 Service Pack 2 ・ Microsoft Windows Server 2008 Standard(注 3) ・ Microsoft Windows Server 2008 Enterprise(注 3) 注 1) 64 ビット OS 上での、動作はサポートしていません。 注 2) Windows Vista で、SQL Server 2005 を使用するときは、SQL Server 2005 の Service Pack2 以降を適用してください。 注 3) Windows Server 2008 で、SQL Server 2005 を使用するときは、SQL Server 2005 の Service Pack2 以降を適用してください。 (2) COBOL 以下のいずれかの製品が必要です。(注 1) ・ NetCOBOL Base Edition for Windows V7.0 ・ NetCOBOL Standard Edition for Windows V7.0 ・ NetCOBOL Professional Edition for Windows V7.0 ・ NetCOBOL Base Edition 開発パッケージ for Windows V7.2/V8.0 ・ NetCOBOL Standard Edition 開発パッケージ for Windows V7.2/V8.0 ・ NetCOBOL Professional Edition 開発パッケージ for Windows V7.2/V8.0 ・ NetCOBOL Base Edition 開発パッケージ V9.0/V10.0.0 ・ NetCOBOL Standard Edition 開発パッケージ V9.0/V10.0.0 ・ NetCOBOL Professional Edition 開発パッケージ V9.0/V10.0.0 ・ NetCOBOL Base Edition for .NET V2.0 - 13 - ・ NetCOBOL Standard Edition for .NET V2.0 ・ NetCOBOL Base Edition 開発パッケージ for .NET V2.1/V3.0/V3.1 ・ NetCOBOL Standard Edition 開発パッケージ for .NET V2.1/V3.0/V3.1 注 1) NetCOBOL に含まれている PowerCOBOL はサポートしていません。 (3) データベース PowerRDBconnector をインストールするコンピュータ内か、ネットワーク接続された Windows のサーバコンピュータ内に、以下のいず れかの製品が必要です。 ・ SQL Server 2000 Workgroup Edition ・ SQL Server 2000 Standard Edition Service Pack 4(注) ・ SQL Server 2000 Enterprise Edition Service Pack 4(注) ・ SQL Server 2005 Developer Edition(32 ビット) ・ SQL Server 2005 Workgroup Edition(32 ビット) ・ SQL Server 2005 Standard Edition(32 ビット)(注) ・ SQL Server 2005 Enterprise Edition(32 ビット)(注) 注) 同梱されている SQL Server 2000 Personal Edition、SQL Server 2005 Personal Edition も含みます。 2.3.1.2 運用時のシステム構成 (1) OS PowerRDBconnector をインストールするクライアントコンピュータに、以下のいずれかの製品が必要です。(注 1) ・ Windows 2000 Professional Service Pack 4 ・ Windows XP Professional Edition Service Pack 2/3 ・ Windows Vista Business Service Pack 1 (注 2) ・ Windows Vista Enterprise Service Pack 1 (注 2) ・ Windows Vista Ultimate Service Pack 1 (注 2) データベース製品をネットワーク接続された別のサーバコンピュータにインストールする場合、サーバコンピュータに、以下のいずれか の製品が必要です。 ・ Windows 2000 Server Service Pack 4 ・ Windows 2000 Advanced Server Service Pack 4 ・ Windows Server 2003, Standard Edition Service Pack 2 ・ Windows Server 2003, Enterprise Edition Service Pack 2 ・ Windows Server 2003, Standard Edition Release 2 Service Pack 2 ・ Windows Server 2003, Enterprise Edition Release 2 Service Pack 2 ・ Microsoft Windows Server 2008 Standard(注 3) ・ Microsoft Windows Server 2008 Enterprise(注 3) - 14 - 注 1) 64 ビット OS 上での、動作はサポートしていません。 注 2) Windows Vista で、SQL Server 2005 を使用するときは、SQL Server 2005 の Service Pack2 以降を適用してください。 注 3) Windows Server 2008 で、SQL Server 2005 を使用するときは、SQL Server 2005 の Service Pack2 以降を適用してください。 (2) COBOL PowerRDBconnector をインストールするクライアントコンピュータに、以下のいずれかの製品が必要です。(注 1) ・ NetCOBOL Base Edition クライアント運用パッケージ for Windows V7.0/V7.2/V8.0 ・ NetCOBOL Standard Edition クライアント運用パッケージ for Windows V7.0/V7.2/V8.0 ・ NetCOBOL Base Edition クライアント運用パッケージ V9.0/V10.0.0 ・ NetCOBOL Standard Edition クライアント運用パッケージ V9.0/V10.0.0 ・ NetCOBOL Base Edition クライアント運用パッケージ for.NET V2.0/V2.1/V3.0/V3.1 ・ NetCOBOL Standard Edition クライアント運用パッケージ for.NET V2.0/V2.1/V3.0/V3.1 注 1) NetCOBOL に含まれている PowerCOBOL はサポートしていません。 (3) データベース PowerRDBconnector をインストールするコンピュータ内か、ネットワーク接続された Windows のサーバコンピュータ内に、以下のいず れかの製品が必要です。 ・ SQL Server 2000 Workgroup Edition ・ SQL Server 2000 Standard Edition Service Pack 4(注) ・ SQL Server 2000 Enterprise Edition Service Pack 4(注) ・ SQL Server 2005 Developer Edition(32 ビット) ・ SQL Server 2005 Workgroup Edition(32 ビット) ・ SQL Server 2005 Standard Edition(32 ビット)(注) ・ SQL Server 2005 Enterprise Edition(32 ビット)(注) 注) 同梱されている SQL Server 2000 Personal Edition、SQL Server 2005 Personal Edition も含みます。PowerRDBconnector クライアン トパッケージで、Personal Edition を使用するときには、スタンドアロン運用で使用してください。 2.3.2 運用形態 本製品は、NetCOBOL が動作するコンピュータにインストールし、データベースがインストールされているコンピュータにアクセスしま す。 PowerRDBconnector クライアントパッケージは、クライアントコンピュータ内で、クライアントサーバ形態またはスタンドアロン運用を行う 場合に使用します。 - 15 - 2.3.2.1 開発時の形態 コンピュータは、サーバコンピュータおよびクライアントコンピュータが使用できます。 NetCOBOL の開発系製品と同時に使用してください。 データベースは、PowerRDBconnector をインストールしたコンピュータと同じコンピュータ内か、Windows の異なるデータベースサー バ内に配置することができます。 図 2.7 PowerRDBconnector クライアントパッケージ for NetCOBOL 運用形態 1 2.3.2.2 運用時の形態 【スタンドアロン運用時】 コンピュータは、クライアントコンピュータが使用できます。 NetCOBOL のクライアント運用系製品と同時に使用してください。 データベースは、PowerRDBconnector をインストールしたコンピュータと同じコンピュータに配置することができます。 リモート端末や、WWW ブラウザ経由のアクセスはできません。コンソール端末からアクセスできます。 - 16 - 図 2.8 PowerRDBconnector クライアントパッケージ for NetCOBOL 運用形態 2 【クライアントサーバ運用時】 コンピュータは、クライアントコンピュータが使用できます。 NetCOBOL のクライアント運用系製品と同時に使用してください。 データベースは、PowerRDBconnector をインストールしたコンピュータと異なる Windows のデータベースサーバ内に配置することが できます。 リモート端末や、WWW ブラウザ経由のアクセスはできません。コンソール端末からアクセスできます。 図 2.9 PowerRDBconnector クライアントパッケージ for NetCOBOL 運用形態 3 【ターミナルサービス/Citrix Presentation Server(MetaFrame)運用時】 コンピュータは、アプリケーションサーバコンピュータが使用できます。 NetCOBOL のクライアント運用系製品と同時に使用してください。 データベースは、PowerRDBconnector をインストールしたコンピュータと異なる Windows のデータベースサーバ内に配置することが できます。 ターミナルサービスや Citrix Presentation Server(MetaFrame)を使用したリモート端末や、コンソール端末からアクセスできます。アプリ ケーションサーバ内のバッチ型アプリケーションは使用できません。 - 17 - 図 2.10 PowerRDBconnector クライアントパッケージ運用形態 2.3.2.3 サポートする OS とデータベースの組合せ PowerRDBconnector がサポートしている OS とデータベースの組合せを、以下に示します。 PowerRDBconnector とデータベースを同じコンピュータ上にインストールする場合に、使用可能な OS とデータベースの組合せ ○:使用可能 ×:使用不可能 注 1:ただし、JIS2004 固有文字の読書きはできません。 PowerRDBconnector とデータベースを別々のコンピュータ上にインストールする場合に、使用可能な OS とデータベースの組合せ - 18 - ○:使用可能 ×:使用不可能 注 1:ただし、JIS2004 固有文字の読書きはできません。 2.3.2.4 未サポートの運用形態 PowerRDBconnector は、以下の運用形態はサポートしていません。 ・ 64 ビット OS で、32 ビットおよび 64 ビットの COBOL アプリケーションからのアクセス ・ 仮想マシン上での動作 ・ Server Core インストールオプションでインストールした Windows Server 2008 上での動作 ・ guest ユーザーでの動作 ・ PowerRDBconnector をインストールした Windows コンピュータから、Windows 以外のデータベースサーバに対してアクセスする 運用 ・ 1 つの COBOL アプリケーションから、2 つ以上のサーバコンピュータに対するアクセス - 19 - 第3章 PowerRDBconnector の使用手引き 本章では、PowerRDBconnector の使用方法について説明します。 開発者およびシステム管理者が、業務アプリケーションの設計時に、PowerRDBconnector の知っておきたい機能や NetCOBOL アプ リケーションの環境構築、およびアプリケーションの開発方法について説明します。 3.1 環境構築 本節では、PowerRDBconnector の環境設定方法について説明します。 3.1.1 PowerRDBconnector を構成する要素 PowerRDBconnector を構成する要素は以下のようになります。 図 3.1 PowerRDBconnector を構成する要素 各構成要素を以下に示します。 表 3.1 PowerRDBconnector を構成する要素 COBOL アプリケーション 入出力文で記述した COBOL アプリケーション COBOL 初期化ファイル COBOL アプリケーションの実行情報を記述したテキス トファイル PowerRDBconnector 動作環境ファイル PowerRDBconnector の動作環境を記述したテキストファ イル PowerRDBconnector 本ソフトウェア ODBC ドライバ データベースにアクセスするインターフェース - 20 - COBOL アプリケーション 入出力文で記述した COBOL アプリケーション Microsoft SQL Server 2000 ODBC ドライバ(SP4)を使 用 Microsoft SQL Server 2005 Native Client ドライバを使 用 データベース PowerRDBconnector がアクセスする SQL Server テーブル データファイルに相当するデータベースオブジェクト ビュー 索引ファイルに相当するデータベースオブジェクト インデックス レコードキーに相当するデータベースオブジェクト 3.1.2 環境構築の手順 必要な環境構築の手順を説明します。 NetCOBOL 製品 のインストール NetCOBOL 製品をインストールします。 詳しくは、NetCOBOL のマニュアルを参照してください。 ↓ データベース製品 のインストール SQL Server をインストールします。 詳しくは、SQL Server の Books Online を参照してください。なお、SQL Server に最新パッチを適用してください。 ↓ PowerRDBconnector のインストール SQL Server 用の PowerRDBconnector をインストールします。 詳しくは、製品 CD に格納されている README.txt を参照してください。 ↓ PowerRDBconnector は、NetCOBOL およびデータベースの実行環境が 正しく設定されたプロセス上で動作できます。正しく設定されているか確 認してください。 環境の確認 ・ NetCOBOL 詳しくは、NetCOBOL のマニュアルを参照してください。 ・ SQL Server 詳しくは、SQL Server の Books Online を参照してください。 ↓ データベース オブジェクトの作成 COBOL アプリケーションからアクセスするテーブルおよびビュー、インデッ クスを作成します。 ↓ PowerRDBconnector 動作環境ファイルの作成 PowerRDBconnector 動作環境ファイルを作成します。 ↓ COBOL 初期化ファイルの作成 COBOL アプリケーションの実行に必要な COBOL 初期化ファイルを作成 します。 ↓ - 21 - 入出力文 COBOL アプリケーション の作成 COBOL アプリケーションを作成します。 COBOL アプリケーションの作成は、NetCOBOL のマニュアルを参照して ください。入出力文によるファイルアクセスは、「第 3 章 PowerRDBconnector の使用手引き」を参照してください。 ↓ COBOL アプリケーションの動作を確認します。 COBOL アプリケーション のテスト COBOL アプリケーションが単体で正常に動作することを確認します。ファ イルアクセスでエラーが通知される場合、「5.1 エラー時の対処」を参照し て対処してください。 ↓ データベースをチューニングします。 データベースのチューニング 実際の運用に近い環境で動作確認を行い、SQL Server のチューニング を行います。チューニングせずに運用を開始すると、最適な性能が得られ ず、タイムアウトが発生する場合があります。 SQL Server のチューニング方法については、SQL Server の Books Online 等を参照してください。 ↓ COBOL アプリケーション の運用 3.1.3 COBOL アプリケーションの運用を開始します。 データベースオブジェクトの作成 COBOL で定義されているファイルに対応するデータベースオブジェクト(テーブルまたはテーブルとビュー)を作成します。 図 3.2 データベースオブジェクトの作成 - 22 - 3.1.3.1 データベースオブジェクトの作成手順 以下の手順を参考に作成します。正しく作成しないと動作できませんので、注意して作成してください。 ・ データベース テーブルおよびビューを格納するデータベースを作成します。 「3.1.3.2 データベースの作成」を参考に、データベースを作成しま す。 データベースの作成 ・ データベースのアクセス権限 テーブルやビューへアクセスするために、COBOL アプリケーション を起動するユーザーにアクセス権限を設定します。 「3.1.3.3 データベースにアクセスするための権限設定」を参考に、 ユーザーのアクセス権限を設定します。 ↓ ・ テーブル名 テーブルまたはテーブルとビューで任意の名前で定義します。「表 3.2 ファイルとテーブルまたはビューの対応」を参考にテーブルやビュー を構成します。 ・ ファイル構成 SQL 定義文の作成 レコードキーを定義するファイルは、インデックスまたはプライマリキー を定義します。「表 3.2 ファイルとテーブルまたはビューの対応」を参 考にデータベースオブジェクトを構成します。 ・ レコード構成 COBOL アプリケーションのファイル記述項(FD 句)のレコード記述 項に定義されている基本項目からテーブルまたはビューの列を定義 します。「COBOL 定義とデータベース定義の対応」を参考に列定義 (データ型、列名)を構成します。なお、各列には NOT NULL 制約 を定義してください。 ↓ SQL 定義文の実行 3.1.3.2 作成した SQL 定義文を実行します。 SQL Server の isql ユーティリティ等で実行できます。 データベースの作成 COBOL アプリケーションからアクセスするテーブルおよびビューを格納するデータベースを作成します。なお、既存のデータベースを 使用する場合には、新たにデータベースを作成する必要はありません。 データベースの作成は、SQL Server が提供する以下のいずれかを使用します。 ・ SQL Server Enterprise Manager ・ Transact-SQL(CREATE DATABASE コマンド) データベースのデータファイルおよびトランザクションログは、領域の自動拡張および自動圧縮が可能ですが、自動拡張や自動圧縮 が動作すると COBOL アプリケーションからのアクセス性能の低下やタイムアウトが発生する場合があります。このため、領域の自動拡 張および自動圧縮は有効にしないことを推奨します。 データファイルおよびトランザクションログの最大サイズを設定、または自動拡張を無効にした場合、ファイルサイズの上限に達すると SQL Server は領域不足を通知します。このため、データファイルのサイズを十分に割り当ててください。トランザクションログのファイル サイズは、最大でデータファイルの 2 倍必要になります。 - 23 - 領域不足が発生した場合には、SQL Server Enterprise Manager や Transact-SQL(ALTER DATABASE コマンド)で領域を拡張でき ます。 データベースの作成方法について、詳しくは SQL Server の Books Online を参照してください。 3.1.3.3 データベースにアクセスするための権限設定 COBOL アプリケーションからテーブルおよびビューへアクセスするための権限を、以下の手順で設定してください。 (1) ログインユーザーの追加 次のユーザーを SQL Server のログインユーザーに追加してください。 - Windows 認証使用時 COBOL アプリケーションを起動するドメインまたはコンピュータのユーザー - データベース認証使用時 COBOL アプリケーションの認証情報登録サブルーチンで指定するユーザー (2) テーブルおよびビューのアクセスに必要なシステム権限の設定 SQL Server のログインユーザーには、テーブルおよびビューのアクセスに必要な権限を設定してください。 (3) "db_ddladmin"システム権限の設定 OUTPUT モードで OPEN 文を実行する COBOL アプリケーションを起動するユーザーについては、データベースロール に“db_ddladmin”を設定してください。 SQL Server のログインユーザー追加および権限の設定は、SQL Server のユーティリティを使用して行います。ログインユーザーの追 加方法および権限の設定方法については、SQL Server の Books Online を参照してください。 COBOL アプリケーション中で認証情報登録サブルーチンを使用して、データベース認証機能を使用する場合は、「3.3.2 データベー ス認証の使用方法(シングルセッション)」「3.3.3 データベース認証の使用方法(マルチセッション)」を参照してください。 3.1.3.4 ファイルとテーブルまたはビューの対応 COBOL アプリケーションで扱うファイルと、データベースで扱うテーブルまたはビューの対応を以下に示します。 表 3.2 ファイルとテーブルまたはビューの対応 ファイル編成 データベースオブジェクト 以下のいずれかを作成 ・ テーブルを作成 順ファイル ・ テーブルとビューを作成 補足 テーブルのみを作成する場合はテーブルの列名、テー ブルとビューを作成する場合はビューの列名を「COBOL 定義とデータベース定義の対応」に説明した列名にし てください。 テーブルとビューを作成する場合は、テーブルの列名 は任意の名前で作成できます。 以下のいずれかを作成 ・ インデックス付きテーブルを作成 ・ 上記のテーブルを導出元にした 索引ファイル ビューを作成 テーブルのみを作成する場合はテーブルの列名、テー ブルとビューを作成する場合はビューの列名を「COBOL 定義とデータベース定義の対応」に説明した列名にし てください。 テーブルとビューを作成する場合は、テーブルの列名 は任意の名前で作成できます。 RECORD KEY 句にあたる列にインデックスを設定しま す。 - 24 - ファイル編成 データベースオブジェクト 補足 UNIQUE 制約は、RECORD KEY 句の WITH DUPLICATE がない場合に指定してください。 インデックス付きテーブルを導出元にしたビューも索引 ファイルとしてアクセスできます。 ビューに対するアクセス機能については、「4.2.3.2 ビューの使用について」を参照してください。 ビューの構成については、「【ファイル記述項からテーブルまたはビューの作成例】」を参照してください。 3.1.3.5 列定義の対応 COBOL のレコード記述項とデータベースの列定義の対応を以下に示します。 COBOL 定義とデータベース定義の対応 表 3.3 COBOL 定義と SQL Server 列定義の対応 データベース定義 COBOL 定義 項目 の 種類 PICTURE 句 USAGE 句 データ型 精度(p) 位取り(s) なし 1 ~ 18 0 ~ 18 NUMERIC(p,s) <文字列>_UNSIGN_NUMERIC または <文字列>_UNUM あり 1 ~ 18 0 ~ 18 NUMERIC(p,s) <文字列>_NUMERIC または <文字列>_NUM なし 1 ~ 18 0 ~ 18 DECIMAL(p,s) <文字列>_UNSIGN_DECIMAL または <文字列>_UDEC あり 1 ~ 18 0 ~ 18 DECIMAL(p,s) <文字列>_DECIMAL または <文字列>_DEC 1~4 --- SMALLINT <文字列>_UNSIGN_SMALLINT または <文字列>_USINT 5~9 --- INTEGER <文字列>_UNSIGN_INTEGER または <文字列>_UINT 10 ~ 18 --- BIGINT <文字列>_UNSIGN_BIGINT または <文字列>_UBINT 1~4 --- SMALLINT <文字列>_SMALLINT または <文字列>_SINT DISPLAY (外部 10 進) 数字 項目 PACKED-DECIMAL (内部 10 進) 整数 項目 COMP、 COMPUTATIONAL 、 BINARY (2 進) 列名 符号 なし あり - 25 - データベース定義 COBOL 定義 項目 の 種類 PICTURE 句 USAGE 句 英数 字 項目 X(英数字) 日本 語 項目 N(日本語) バイ ナリ項 目 X(バイナリ) 符号 データ型 精度(p) 位取り(s) 5~9 --- INTEGER <文字列>_INTEGER または <文字列>_INT 10 ~ 18 --- BIGINT <文字列>_BIGINT または <文字列>_BINT p --- CHAR(p) p --- NCHAR(p) p --- CHAR(p×2) p --- NCHAR(p) p --- BINARY(p) --- --- --- 列名 <文字列>_CHAR または <文字列>_CHR <文字列>_NCHAR または <文字列>_NCHR <文字列>_BINARY または <文字列>_BIN 精度(p) :精度は、全体桁数および項目の長さ(文字数)です。 位取り(s):位取りは、小数部の桁数です。 文字列:任意の文字列です。 COBOL のレコード記述項と、データベースの列定義の対応には、以下の注意事項があります。 1. COBOL のレコード記述項のレコード長とテーブルの行長が一致しているか COBOL がチェックします。必ず、レコード記述項に 合わせてテーブルの列を定義してください。 2. 必ず、RECORD KEY 句に定義したキーに対応するインデックスを定義してください。 3. COBOL のレコード記述項に定義した OCCURS 句は、繰り返された基本項目が列になります。 4. COBOL のレコード記述項に定義した REDEFINES 句は、再定義された最下位レベル番号の基本項目が列になります。 5. BINARY データ型に対応させた X 項目は、レコードキーにできません。 BINARY データ型に対応させた X 項目は、1つの項目に、英数字項目と数字項目が混在して使用されているような場合に使 用します。BINARY データ型に対応させた X 項目は、PowerRDBconnector およびデータベースでは変換/補正を行いません。 このため COBOL アプリケーションで項目に応じてデータ内容を自由に定義できます。 6. USAGE 句が COMP-5 の場合は、エラーとはなりませんが、データが正しく評価されません。 7. 作成できるテーブルおよびビューの制限値(最大テーブル数、最大テーブルサイズ、最大行長、最大列数、最大列長、最大列 名長など)は、SQL Server の Books Online を参照してください。 8. 文字列の後方空白の扱いについては、「3.7.1 後方空白補正」を参照してください。 9. データベースの仕様で、英数字項目および日本語項目で定義するデータベースの精度(p)には、以下の制限があります。 表 3.4 データベースの文字列データの精度 項目の種類 データ型 精度 英数字項目 CHAR 8,000 日本語項目 NCHAR 4,000 なお、unicode は UTF-8 で扱う場合、1 文字が最大 3 バイトで表現されます。UTF-16 で扱う場合、1 文字が最大 4 バイトで表現 されます。 - 26 - 10. 列名は、ASCII コードまたはシフト JIS コード(JIS X 0208-1990)の文字セットで記述してください。JIS X 0213:2004 に対応した 文字セット(JIS2004)では、4 バイトの文字や、シフト JIS コード(JIS X 0208-1990)に存在しない文字はエラーとなります。このため unicode 固有文字や、JIS2004 で追加された文字は使用しないでください。 11. JIS2004 の文字コード系を使用時は、JIS2004 の 1 文字につき、COBOL の英数字項目または日本語項目を 2 文字分用意して ください。対応するデータベースの項目型も、2 文字分に対応したサイズを指定してください。 【ファイル記述項からテーブルまたはビューの作成例】 以下に、ファイル記述項からテーブルまたはビューを作成する例について説明します。 1. ファイル記述項(FD 句)のレコード記述項の例を以下に示します。 2. レコード記述項のレコード構造のレイアウトは以下のようになります。 下線部のデータ項目が最下位レベル番号の基本項目になります。 3. 「表 3.2 ファイルとテーブルまたはビューの対応」と「COBOL 定義とデータベース定義の対応」に基づいて、以下の SQL 定義文 (CREATE 文)を作成します。 以下の 2 通りで作成できます。 - テーブルのみを作成 - テーブルとビューを作成 索引ファイルで定義されているので、インデックスは必ず作成します。 - 27 - COBOL 初期化ファイルに指定する TableName を求めます。 - テーブルのみを作成する場合 (1)テーブル名 T1 が COBOL 初期化ファイルに指定する TableName(FILE1=TableName=T1)になります。 - テーブルとビューを作成する場合 (2)ビュー名 V1 が COBOL 初期化ファイルに指定する TableName(FILE1=TableName=V1)になります。 (3)列名は、FD 句のデータ項目名を使用しています。 (4)OCCURS 句で定義している繰返し項目 C6 の列名は、"_"+添字番号にしています。 (5)全ての列に NOT NULL 制約を定義しています。 (6)レコードキーに対して、インデックスを定義しています。 4. 作成されたテーブルは以下のレコード構造になります。 - 28 - 5. SQL 定義文を実行します。 isql ユーティリティなどを使用して実行してください。 3.1.4 PowerRDBconnector 動作環境ファイル PowerRDBconnector 動作環境ファイルは、ファイル名 "DBIO_ENV" で作成し、以下のプロパティを記述してください。 PowerRDBconnector の動作環境ファイルの書式 ; PowerRDBconnector の動作環境 ServerName=<データベースのサーバ名> DataSourceName=<データベース名> TimeOut=<タイムアウト時間> Suppress=<後方空白補正> DataCheck=<データチェック> ErrorLog=<エラーログの出力先> TraceMode=<トレースモード> TraceSize=<トレースファイルのサイズ> TraceLevel=<トレースのレベル> ・ PowerRDBconnector 動作環境ファイル(DBIO_ENV)の格納先は、以下 3 通りのいずれかで設定します。 1. 環境変数DBIO_ENV に PowerRDBconnector 動作環境ファイルのファイル名を含むフルパスで設定 設定例:DBIO_ENV=C:¥apl¥DBIO_ENV 動作環境の設定内容は、サーバ一意の設定となります。 2. 実行プログラムと同じディレクトリに格納 動作環境の設定内容は、実行プログラム(EXE ファイル)を格納するディレクトリで一意の設定となります。 パス名には、JIS2004 で追加された文字などのシフト JIS 範囲外の文字を含めないでください。 3. アプリケーション起動時のカレントパスに格納 動作環境の設定内容は、実行プログラムを呼び出す業務アプリケーションや利用者の実行環境毎に任意の設定となりま す。 PowerRDBconnector は、ファイルのオープン時に、PowerRDBconnector 動作環境ファイル(DBIO_ENV)を、上記の順序で検索 します。 ・ ASCII コード、シフト JIS コード(JIS X 0208-1990)または UTF-8 コードのテキストファイルで記述します。 ただし、UTF-8 の文字コードで作成する場合は、以下の点に注意してください。 - BOM 付きの UTF-8 の文字コード系のテキストファイルとして作成してください。 - PowerRDBconnector 動作環境ファイルの内容はシフト JIS 範囲内の文字で記述してください。 ・ プロパティ名は行の先頭から始めてください。 - 29 - ・ プロパティ名と値は = (等号)でつなぎます。 = の前後に空白、タブなどは記述できません。プロパティ名のみまたはプロパティ名と =だけで、値の指定のない記述はエラーとなります。 ・ 大文字と小文字を区別します。 ・ 行先頭に ; (セミコロン)文字がある行はコメント行とします。行途中の ; 文字はコメントとなりません。 ・ アプリケーションを実行するユーザーからの読取り権限が必要です。 ・ ASP.NET で使用する場合、以下のいずれかの格納先を設定してください。 1. 環境変数DBIO_ENV に PowerRDBconnector 動作環境ファイルのファイル名を含むフルパスで設定 環境変数を変更した場合、Windows の再起動が必要です。 2. Internet Information Service(IIS)のカレントパスに格納 初期値は「x:¥Windows¥system32¥Inetsvr」または「x:¥Windows¥system32」です。カレントパスを変更する場合、アプリケー ションで以下のように記述してください。なお、カレントパスは、セッション開設前に設定してください。 (記述例) CLASS CLASS-ENVIRONMENT AS "System.Environment" PROPERTY PROP-CURRENTDIRECTORY AS "CurrentDirectory" SET PROP-CURRENTDIRECTORY OF CLASS-ENVIRONMENT TO "変更先パス名". カレントパスはスレッドではなく、プロセスで1つです。COBOL プログラム内でカレントパスを変更すると、PowerRDBconnector 動作環境ファイルを正しく読み込めないことがあるため、以下のいずれかの対処を行ってください。 - IIS の1プロセス内でカレントパスを変更しない場合。 PowerRDBconnector 動作環境ファイルごとに IIS のプロセスを分離してください。 1つの IIS のプロセス内で動作するスレッドでは、同じカレントパスを使用してください。詳細は、IIS のマニュアルやヘル プを参照してください。 - IIS の 1 プロセス内でカレントパスを変更する場合。 カレントパスの変更により、異なる PowerRDBconnector 動作環境ファイルを参照する場合は、カレントパスの変更からス レッド初回の OPEN 文まで、スレッドのロックを行ってください。 各プロパティの指定方法を以下に示します。 PowerRDBconnector 動作環境ファイルのプロパティ 表 3.5 PowerRDBconnector 動作環境ファイルのプロパティ プロパティ名 ServerName DataSourceName 指定 有無 値と意味 必須 SQL Server データベースが存在するサーバのホスト名または、IP アドレスを半角 255 文字以内で指定します。記号として半角アンダーバー(_)、半角ハイフン(-)、 半角円記号(¥)が使用できます。日本語の混在指定も可能です。半角円記号(¥) だけを指定することはできません。 必須 データベース名を指定します。半角英数字 64 文字以内で指定します。先頭に数 字は指定できません。 ※PowerRDBconnector では、ODBC データソースアドミニストレータで ODBC 環 境を設定する必要はありません。 - 30 - プロパティ名 指定 有無 値と意味 ※DataSourceName プロパティで指定する値は、SQL Server データベースのデー タベース名であり、ODBC データソースアドミニストレータでのデータソース名では ありません。 データベースの処理完了待合わせ時間を秒単位で指定します。レコードロックの 獲得を待合わせタイムアウト時間としても使用されます。 ・ 0 データベースの処理が完了するまで待ち続けます。 TimeOut 選択 ・ 1 ~ 600 データベースの処理が完了するまで、指定時間だけ待合わせます。指定時間 経過後、獲得できない場合、エラー復帰します。 省略した場合には、30(秒)が指定されたものとして動作します。 データベースの処理完了の待合わせについては、「3.6 タイムアウト機能」を参照 してください。 後方空白補正の有無を指定します。以下に指定値と意味を示します。 ・ “ON” 後方空白補正を行います。 Suppress 選択 (注意が 必要) ・ “OFF” 後方空白補正を行いません。 省略した場合は、ON が指定されたものとみなします。 COBOL 初期化ファイルで Suppress プロパティが指定された場合は、COBOL 初 期化ファイルの値が有効となります。 詳細は、「3.7.1 後方空白補正」を参照してください。 データのチェックを行うか否かを指定します。以下に指定値と意味を示します。 ・ “NONE” データチェックを行わず、データの補正を行います。 ・ “C” 英数字項目と日本語項目のデータチェックを行います。 ・ “U” DataCheck 選択 (注意が 必要) 外部十進項目のデータチェックを行います。 ・ “P” 内部十進項目のデータチェックを行います。 複数指定する場合は、”/”で区切って指定してください。 例:文字チェックと内部十進数チェックを行う場合。 DataCheck=C/P 省略した場合は、C/U/P が指定されたものとみなします。 データ内容のチェックを行わない場合、項目属性に違反するデータは補正されま す。詳細は、「3.7.2 項目属性に違反するデータのチェックと補正」を参照してくだ さい。 - 31 - トラブルが発生したとき、PowerRDBconnector 内部調査用の情報を取得する場合に、以下のプロパティを指定してください。これらの プロパティを設定すると、性能が著しく低下する場合があります。通常の運用では設定しないでください。 表 3.6 トラブル発生時に必要な PowerRDBconnector 動作環境ファイルのプロパティ プロパティ名 指定 値と意味 有無 エラーログおよびトレース情報の格納ディレクトリを指定します。 ErrorLog プロパティが指定されると、指定したディレクトリにログファイル (FJSVdbio.log)を作成し、エラーログを採取します。既に存在している場合は追記し ます。 エラーログの最大サイズは 256K バイトで 2 世代分のエラーログを保持します。な お、COBOL アプリケーションが異常終了するような場合にのみエラーログを採取す るため、極端に大きくなることはありません。 エラーログは、PowerRDBconnector の内部情報であり、内容は可変です。当社技術 員からの依頼により採取してください。 格納ディレクトリを指定するときの注意事項を以下に示します。 ・ ドライブ直下は指定できません。 ・ 半角英数字、半角記号(¥ | : * ? " < > /)の文字を使って、200 バイト以内の値で 指定してください。 ・ 全角文字を含むディレクトリは指定しないでください。指定すると格納先を保証 ErrorLog 選択 できません。 ・ 実行プログラム(EXE ファイル)を格納するディレクトリからの相対パスも指定可 能です。相対指定は、”.¥”で開始します。 例)ErrorLog=.¥ ただし、絶対パスに変換した場合に、200 バイト以内になるように指定してくださ い。 ・ 環境変数は指定できません。 ・ 存在するディレクトリで、書込み権限のあるディレクトリを指定してください。 ・ 存在しないディレクトリを指定した場合、エラーは通知されず、イベントログに警 告のメッセージが通知されます。このとき、エラーログおよびトレース情報は採取 されません。 ・ 書込み権限のないディレクトリを指定した場合、Windows Vista や Windows Server 2008 では、ファイルの仮想化(リダイレクション)が生じることがあります。リダイレク ションが生じた場合は、以下のイベントログに出力されます。 アプリケーションとサービス → Microsoft → Windows → UAC-FileVirtualization トレース情報の採取有無を指定します。以下に指定値と意味を示します。 ・ “ON” トレース情報を採取します。 TraceMode 選択 ・ “OFF” トレース情報を採取しません。 トレースを採取する場合、本プロパティと ErrorLog プロパティの 2 つを指定してくだ さい。 - 32 - プロパティ名 指定 値と意味 有無 トレースは、ErrorLog プロパティで指定したログ格納ディレクトリにトレースファイル (FJSVdbio_trc.log)を作成し、トレース情報を採取します。ErrorLog プロパティまたは TraceMode プロパティの設定を省略した場合、トレース情報は採取されません。 TraceMode プロパティの指定に誤りがあった場合、エラーは通知されず、トレース情 報は採取されません。このため、1 度 COBOL アプリケーションを実行し、トレース情 報が採取されていることを確認してください。 トレース情報の最大サイズを K バイト単位で指定します。 1 から 204800 の値を指定します。 省略された場合、4,096(K バイト)が指定されたものとして動作します。 なお、ErrorLog プロパティで指定されたディレクトリに 2 世代分のトレース情報を格 納するため、TraceSize で指定したサイズの 2 倍のディスク空き容量が必要となりま す。 TraceSize 選択 TraceMode プロパティを省略または値に OFF を設定した場合、TraceSize プロパティ の設定は無効です。 TraceSize プロパティの指定に誤りがあった場合、エラーは通知されません。204,800 (K バイト)が指定されたものとして動作します。ただし、数値以外の文字が指定され た場合、エラーは通知されず、トレース情報は採取されません。 注意 トレース情報は、COBOL アプリケーションを単体実行して採取してください。な お、COBOL アプリケーションが多重動作する環境では、最大で TraceSize×2 ま でトレース情報を格納します。 トレースを採取する場合に、トレースの出力レベルを指定します。 以下に指定値と意味を示します。 ・ 0 アクセス情報のみ出力します。 ・ 1 TraceLevel 選択 (注意が 必要) 0 に加え、列情報およびイベントログ内容を出力します。 ・ 2 1 に加え、エラー発生時のデータ内容を出力します。 ・ 3 2 に加え、アクセス時のキー値の内容および入出力データの内容を出力します。 省略した場合は、0 が指定されたものとみなします。 トレース内容の詳細は、「5.2 トレース出力機能」を参照してください。 PowerRDBconnector 動作環境ファイル(DBIO_ENV)の記述例 SQL Server を構築するサーバのホスト名が snake、データベース名が pubs の記述です。 PowerRDBconnector 動作環境ファイル(DBIO_ENV) の記述例 ; PowerRDBconnector 動作環境ファイル ServerName=snake.domain.com DataSourceName=pubs - 33 - 3.1.5 COBOL 初期化ファイル COBOL 初期化ファイルには、ASSIGN 句のファイル識別名とデータベースのテーブル、ビューとの関連付けを行います。 関連付けの指定方法として、次の方法があります。 ・ COBOL 初期化ファイルに指定する方法 ・ 環境変数に指定する方法 ・ web の場合には実行環境ユーティリティでファイル(web.config)に指定する方法 本マニュアルは COBOL 初期化ファイルに定義する場合を例に記載します。詳しくは、NetCOBOL のマニュアルを参照してください。 COBOL 初期化ファイルの書式 ファイル識別名=TableName=<テーブル名またはビュー名>&SchemaName=<スキーマ名>&AccessMode=<アクセ スモード>&TableLock=<テーブルロック>,ファイル識別名定数 ・ テーブルおよびビュー毎にファイル識別名を記述します。 ・ ASCII コード、シフト JIS コード(JIS X 0208-1990)または UTF-8 コードのテキストファイルで記述します。 ただし、UTF-8 の文字コードで作成する場合は、以下の点に注意してください。 - BOM 付きの UTF-8 の文字コード系のテキストファイルとして作成してください。 - COBOL 初期化ファイルの内容はシフト JIS 範囲内の文字で記述してください。 - スキーマ名、表名に、JIS X 0213:2004 に対応した文字セット(JIS2004)で追加された文字などのシフト JIS 範囲外の文字は、 エラーとなることがあるため、使用しないでください。 - UTF-8 コードの COBOL 初期化ファイルは、NetCOBOL V10.0.0 から使用できます。 ・ プロパティ名と値は = でつなぎます。 = の前後に空白、タブなどは記述できません。 ・ プロパティ名=値 は & でつなぎます。 & の前後に空白、タブなどは記述できません。 ・ 大文字・小文字を区別します。 ・ ファイル識別名定数の前は、 , (カンマ)で区切ります。 各変数の指定方法を以下に示します。 COBOL 初期化ファイル 表 3.7 COBOL 初期化ファイルのプロパティ プロパティ名 ファイル識別名 指定 有無 必須 値と意味 SELECT 句(ファイル記述項)の ASSIGN 句に指定したファイル識別名 を指定します。 - 34 - プロパティ名 指定 有無 値と意味 COBOL のファイル名をデータベースのテーブルまたはビューに割り付 けます。 ファイル識別名に対するテーブル名またはビュー名を指定します。 TableName 必須 半角英数字、半角記号(アンダーバー(_)、ハイフン(-)、円記号(¥))で 128 文字以内、または全角で 64 文字以内の値を指定します。また、先 頭に数字は指定できません。 SQL Server 2005 のシノニムは指定できません。 ファイル識別名に対するテーブルの所有者名を指定します。 SchemaName 必須 半角英数字、記号で 128 文字以内、または全角で 64 文字以内の値を 指定します。指定可能な文字は SQL Server の仕様に準じます。 また、先頭に数字は指定できません。 ファイル識別名に対するアクセスモードを指定します。 以下に指定値と意味を示します。 ・ "SEQUENTIAL" 順呼出し ・ "RANDOM" AccessMode 必須 乱呼出し ・ "DYNAMIC" 動的呼出し 本モードは COBOL アプリケーションの ACCESS MODE 句に指定する 値と同意です。入出力文 COBOL アプリケーションの ACCESS MODE 句の指定と異なる場合は、動作の保証ができません。 Truncate 選択 (注意が 必要) OUTPUT モードでビューをオープンする場合、導出元テーブル名を指 定します。 Truncate を使用する場合の注意事項については、「4.2.3.5 OUTPUT モードのオープンの使用について」を参照してください。 テーブルロックの使用有無を指定します。以下に指定値と意味を示しま す。 ・ "ON" テーブルロックを行います。 TableLock 選択 ・ "OFF" テーブルロックは行わず、レコードロックとなります。 省略した場合、OFF(レコードロック)を指定したものとして動作します。 テーブルロックについて、詳しくは「3.5.3 テーブルロック機能」を参照し てください。 後方空白補正の有無を指定します。以下に指定値と意味を示します。 ・ "ON" Suppress 選択 後方空白補正を行います。 ・ "OFF" 後方空白補正を行いません。 - 35 - プロパティ名 指定 有無 値と意味 省略した場合は、PowerRDBconnector 動作環境ファイルで指定された Suppress プロパティが有効となります。 詳細は、「3.7.1 後方空白補正」を参照してください。 ファイル識別名定数 必須 識別値 "RDM" を指定します。 シングルセッションプログラミングの場合、トランザクションサブルーチン または認証情報登録サブルーチンを使用する場合は、エントリ情報の記 述が必要です。エントリ情報は COBOL 初期化ファイル(COBOL85.CBR )に記述します。 @CBR_ENTRYFILE=エントリ情報ファイル名 エントリ情報ファイルの内容は、以下の形式で記述します。 エントリー情報 選択 [ENTRY] ;トランザクションサブルーチン XMROTSTR=F3BWS1CB.DLL XMROTEND=F3BWS1CB.DLL XMROTCNL=F3BWS1CB.DLL XMROTRBK=F3BWS1CB.DLL ; 認証情報登録サブルーチン XMROAUTH=F3BWS1SB.DLL 詳しくは、NetCOBOL のマニュアルを参照してください。 マルチセッションプログラミングの場合は、エントリ情報は必要ありませ ん。 COBOL 初期化ファイル(COBOL85.CBR)の記述例 COBOL の索引ファイルのファイル識別名 EMPLOYEE をテーブル名 employee で所有者(スキーマ名) dbo に、COBOL の索引ファ イルのファイル識別名 CUSTOMER をテーブル名 customer で所有者(スキーマ名) dbo に対応付け、エントリ情報ファイルに ENTRY.ENT を使用するための記述です。 (1)COBOL 初期化ファイル(COBOL85.CBR)の記述例 EMPLOYEE=TableName=employee&SchemaName=dbo&AccessMode=RANDOM&Suppress=OFF,RDM CUSTOMER=TableName=customer&SchemaName=dbo&AccessMode=RANDOM&Suppress=OFF,RDM @CBR_ENTRYFILE=ENTRY.ENT (2)エントリ情報ファイル(ENTRY.ENT)の記述例 [ENTRY] ;トランザクションサブルーチン XMROTSTR=F3BWS1CB.DLL XMROTEND=F3BWS1CB.DLL XMROTCNL=F3BWS1CB.DLL XMROTRBK=F3BWS1CB.DLL ; 認証情報登録サブルーチン XMROAUTH=F3BWS1SB.DLL 注意 エントリ情報ファイルは、NetCOBOL for Windows の場合のみ必要です。 - 36 - コンパイル方法 3.1.6 ここでは、翻訳オプションおよび、リンクの方法を説明します。 PowerRDBconnector を使用する COBOL アプリケーションをコンパイルする場合、必要に応じた翻訳オプションを設定し、NetCOBOL でコンパイルしてください。その後、NetCOBOL のリンカを利用して PowerRDBconnector のサブルーチンをリンクします。 NetCOBOL for Windows でのコンパイル方法 3.1.6.1 [翻訳オプション] PowerRDBconnector に関連する翻訳オプションを説明します。各オプションについての詳細は、「NetCOBOL のマニュアル」を参照し てください。 表 3.8 NetCOBOL for Windows の翻訳オプション 翻訳オプション名 機能 ASCOMP5 2 進項目の解釈の指定 DLOAD プログラム構造の指定 注意事項 NONE 以外を指定しないでください。 DLOAD:動的プログラム構造 NODLOAD:動的リンク構造 SJIS:シフト JIS RCS 実行時コード系の指定 UCS2:unicode(注 1) UTF16:unicode/JIS2004(注 2) THREAD マルチスレッドプログラム 作成の指定 SINGLE のみを指定してください。 MULTI は指定しないでください。 (注 1) NetCOBOL V10.0.0 の場合、RCS オプションの UCS2 は UTF16 と同じ意味です。しかし本書では、NetCOBOL V10.0.0 以外のと きと区別するため、NetCOBOL V10.0.0 の RCS オプションに unicode を指定する場合は UTF16 と記載します。 (注 2) NetCOBOL V10.0.0 から、RCS オプションに、UTF16 が指定可能です。 例)翻訳オプションの指定例を以下に 2 つ示します。 ・ COBOL ソースの先頭に、「@OPTIONS ASCOMP5(NONE),DLOAD,RCS(SJIS)」と記述します。 ・ 翻訳オプションに、「/wc,”ASCOMP5(NONE),DLOAD,RCS(SJIS)”」と記述します。 [動的プログラム構造の場合] NetCOBOL の翻訳時に以下の翻訳オプションを指定します。 翻訳オプション:DLOAD リンク方法について、詳しくは NetCOBOL のマニュアルを参照してください。 さらに実行時、COBOL 初期化ファイル(COBOL85.CBR)にエントリ情報(@CBR_ENTRYFILE)を指定します。エントリ情報の指定方 法については、「3.1.5 COBOL 初期化ファイル」を参照してください。 - 37 - なお、本製品が提供するサブルーチンは、PowerRDBconnector が提供するシステムライブラリです。COBOL アプリケーションに静的 リンクしないでください。 [動的リンク構造の場合] NetCOBOL の翻訳時に以下の翻訳オプションを指定します。 翻訳オプション:NODLOAD さらに、以下のインポートライブラリをリンクしてください。 表 3.9 シングルセッションプログラミングのインポートライブラリ ファイル名 格納ディレクトリ ・ SQL Server 2000 の場合 PowerRDBconnector インストールディレクトリ¥SQLSV2K F3BWS1CB.LIB ・ SQL Server 2005 の場合 F3BWS1SB.LIB PowerRDBconnector インストールディレクトリ¥SQLSV2005 リンク方法について、詳しくは NetCOBOL のマニュアルを参照してください。 なお、本製品が提供するサブルーチンは、PowerRDBconnector が提供するシステムライブラリです。COBOL アプリケーションに静的 リンクしないでください。 [使用可能なサブルーチン] NetCOBOL for Windows から以下のサブルーチンを呼び出すことができます。 表 3.10 NetCOBOL for Windows で使用可能なサブルーチン一覧 機能 サブルーチン名 トランザクションの開始 XMROTSTR トランザクションの確定 XMROTEND トランザクションの取消し XMROTCNL テーブルロック解除時のトランザクションの取消し XMROTRBK 認証情報の登録 XMROAUTH 上記サブルーチンの使い方は、「3.4.2 トランザクションの使用方法(シングルセッション)」、「3.3.2 データベース認証の使用方法(シン グルセッション)」を参照してください。 3.1.6.2 NetCOBOL for .NET でのコンパイル方法 [翻訳オプション] PowerRDBconnector の動作に影響のある翻訳オプションについて以下に示します。各オプションの使用方法については、NetCOBOL のマニュアルを参照してください。 - 38 - 表 3.11 NetCOBOL for .NET の翻訳オプション 翻訳オプション名 機能 ASCOMP5 2 進項目の解釈の指定 注意事項 NONE 以外を指定しないでください。 SJIS:シフト JIS RCS 実行時コード系の指定 UTF8-UCS2:unicode SJIS-UCS2:英数字項目がシフト JIS、日本語項目が unicode(注 1) SHREXT ファイル共用の指定 SHREXT:ファイル共用 NOSHREXT:ファイル共用なし platform 生成されるファイルが動 作するプラットフォームの 指定 通常省略できますが、Windows Server 2003 (x64)、 Windows Server 2008 (x64)で動作させる場合は、x86 と 指定してください。 注 1) RCS オプションの SJIS-UCS2 の指定は「NetCOBOL for .NET V2.1L20」から用意されていますが、SJIS-UCS2 は、以下の環境で 使用できます。 - 「NetCOBOL for .NET V3.0/V3.1」を用いてコンパイルし、セッションを指定し実行した場合。 注 2) NetCOBOL for .NET には、マルチスレッドプログラムについての翻訳オプションはありません。NetCOBOL for .NET で翻訳した場 合、マルチスレッドプログラムとなります。マルチスレッドプログラムでも実行環境によって、ASP.NET のように Web で動作させる場 合にはマルチスレッドとして動作したり、コンソールアプリケーションのようにシングルスレッド(プロセス)プログラムとして動作したり します。 例) 翻訳オプションの指定例を以下に 2 つ示します。 - COBOL ソースの先頭に、「@OPTIONS ASCOMP5(NONE),SHREXT,RCS(SJIS)」と記述します。 - 翻訳オプションに、「/wc:” ASCOMP5(NONE),SHREXT,RCS(SJIS)”」と記述します。 [リンク方法] NetCOBOL for .NET は、全てマルチスレッドプログラムとして翻訳されます。マルチスレッドの COBOL アプリケーションから PowerRDBconnector を呼び出す場合、セッションを制御してください(マルチセッションプログラム)。セッションを制御しないシングル セッションプログラムと、マルチセッションプログラムとでは、サブルーチンの使用方法が異なります。それぞれ使い方を示します。 シングルセッションプログラミングの場合 シングルセッションプログラミングの場合、「表 3.12 シングルセッションプログラミングで使用可能なサブルーチン一覧」に示すサブルー チンが使用できます。 なお、NetCOBOL for .NET から以下のサブルーチンを呼び出す場合は、プログラム原型を定義してください。プログラム原型につい ては、NetCOBOL のマニュアルを参照してください。 プログラム原型のサンプルについては、「付録 C 開発用サンプル情報」を参照してください。 表 3.12 シングルセッションプログラミングで使用可能なサブルーチン一覧 機能 トランザクションの開始 サブルーチン名 XMROTSTR - 39 - 機能 サブルーチン名 トランザクションの確定 XMROTEND トランザクションの取消し XMROTCNL テーブルロック解除時のトラ ンザクションの取消し XMROTRBK 認証情報の登録 XMROAUTH 上記サブルーチンの使い方は、「3.4.2 トランザクションの使用方法(シングルセッション)」、「3.3.2 データベース認証の使用方法(シン グルセッション)」を参照してください。 マルチセッションプログラミングの場合 マルチセッションプログラミングの場合、「表 3.13 マルチセッションプログラミングで使用可能なサブルーチン一覧」に示すサブルーチ ンが使用できます。 なお、NetCOBOL for .NET から以下のサブルーチンを呼び出す場合は、プログラム原型の定義は必要ありません。 表 3.13 マルチセッションプログラミングで使用可能なサブルーチン一覧 機能 サブルーチン名 トランザクションの開始 トランザクションの確定 トランザクションの取消し COB_PRDB_TRAN テーブルロック解除時のトラ ンザクションの取消し セッションの開設 COB_PRDB_START セッションの閉設 COB_PRDB_END 認証情報の登録 COB_PRDB_AUTH 上記サブルーチンの使い方は、「3.4.3 トランザクションの使用方法(マルチセッション)」、「3.3.3 データベース認証の使用方法(マル チセッション)」を参照してください。 マルチセッションプログラミングの場合の注意事項を以下に示します。 ・ シングルセッションプログラミングで使用可能なサブルーチンとマルチセッションプログラミングで使用可能なサブルーチンは、混 在して使用できません。 ・ エントリ情報は必要ありません。 3.2 セッションの制御方法 本節では、マルチセッションプログラミングスタイルで使用するセッションの制御方法について説明します。 3.2.1 セッションの制御方法 PowerRDBconnector をマルチセッションプログラミングで使用する場合、アクセス文やサブルーチンが、どのセッションで動作するかを 特定するために、セッションを指定します。 - 40 - PowerRDBconnector のセッションは、以下のように指定します。 図 3.3 セッションサブルーチンの使用方法 COBOL アプリケーションから以下のサブルーチンを CALL 文で呼び出すことで、セッションの制御ができます。 表 3.14 セッション指定サブルーチンの一覧 機能 サブルーチン名 セッションの開設 COB_PRDB_START セッションの閉設 COB_PRDB_END セッション開設後の初回 OPEN 文でデータベースに接続されます。セッション閉設時にデータベースから切り離されます。使用例として 「図 3.4 セッションサブルーチンの使用例」、「3.2.3 セッションの使用例」を参照してください。 セッションサブルーチン使用時は、以下の点に注意してください。 ・ セッションを開設していないプログラムは、シングルセッションプログラムとして解釈されます。 ・ シングルセッションプログラミングの場合、セッションサブルーチンの呼出しは不要です。 ・ 一度セッションを開設したプログラムは、セッションを閉設しても、シングルセッションプログラムとして、OPEN 文を呼び出すことは できません。 ・ セッションは、“セッション ID”という文字列で管理され、COBOL アプリケーションから、セッションサブルーチンのパラメーターとし て指定します。 ・ PowerRDBconnector へのセッションとデータベースへのセッションは、1 対 1 に対応しています。 ・ NetCOBOL for .NET V3.0/V3.1 のみ使用できます。それ以外の NetCOBOL では使用できません。 ・ セッションサブルーチンは、COBOL 初期化ファイルのエントリ情報は不要です。 ・ 1つのスレッドで、セッションを開設後、閉設する前に別のセッションを開設しないでください。 - 41 - セッションサブルーチンのインターフェース 3.2.2 セッションサブルーチンのインターフェースは、以下のとおりです。 セッション開設サブルーチンのインターフェース 3.2.2.1 ・ 機能 PowerRDBconnector へのセッションを開設します。 ・ 呼出し形式 CALL “COB_PRDB_START” USING BY REFERENCE セッション ID RETURNING 復帰値. ・ パラメーターのデータ定義 01 セッション ID 01 復帰値 PIC X(30). PIC S9(9) COMP-5. ※上記は全て、必ずレベル番号 01 で記載してください。 ・ パラメーターの意味 - セッション ID(必須) 英数字項目 30 バイト以内で指定します。 文字の種類の制約はありません。途中に空白がある場合、空白以降の文字は切り捨てられるため、空白の入らない連続した 文字列を指定してください。 なお、本パラメーターは必ず指定してください。 ・ 復帰値 復帰値は、以下のとおりです。 表 3.15 COB_PRDB_START サブルーチンの復帰値 復帰値 意味 イベントログ出力の有無 0 正常 なし -1 エラー あり -2 内部矛盾 あり PowerRDBconnector がインストールされていない、または動作でき る環境ではありません。 なし -200 ・ 注意事項 本サブルーチンの注意事項を以下に示します。 - 本サブルーチンが実行された以降はマルチセッションプログラミングとして解釈されます。このため、以下のシングルセッション で使用するサブルーチンは使用できません。 XMROTSTR、XMROTEND、XMROTCNL、XMROTRBK、XMROAUTH - 42 - 本サブルーチンではデータベースへの接続は行われません。データベースへの接続は初回オープン時に行われます。また、デー タベースへの接続は COB_PRDB_END サブルーチンが呼び出されるまで保持されます。 セッション閉設サブルーチンのインターフェース 3.2.2.2 ・ 機能 PowerRDBconnector へのセッションを閉設します。 ・ 呼出し形式 CALL “COB_PRDB_END” USING BY REFERENCE セッション ID RETURNING 復帰値. ・ パラメーターのデータ定義 01 セッション ID 01 復帰値 PIC X(30). PIC S9(9) COMP-5. ※上記は全て、必ずレベル番号 01 で記載してください。 ・ パラメーターの意味 - セッション ID(必須) 英数字項目 30 バイト以内で指定します。 文字の種類の制約はありません。途中に空白がある場合、空白以降の文字は切り捨てられるため、空白の入らない連続した 文字列を指定してください。 なお、本パラメーターは必ず指定してください。 ・ 復帰値 復帰値は、以下のとおりです。 表 3.16 COB_PRDB_END サブルーチンの復帰値 復帰値 意味 イベントログ出力の有無 0 正常 なし -1 エラー あり -2 内部矛盾 あり セッション ID の指定が正しくありません。 なし -201 ・ 注意事項 本サブルーチンの注意事項を以下に示します。 - 本サブルーチンが実行されても、プロセスが終了するまではマルチセッションプログラミングとして解釈されます。このため、以 下のシングルセッションで使用するサブルーチンは使用できません。 XMROTSTR、XMROTEND、XMROTCNL、XMROTRBK、XMROAUTH - 本サブルーチンは、同一セッションでオープンした全てのファイルをクローズした後、呼び出してください。未クローズのファイ ルがある場合、本サブルーチンは、エラーとなります。 - 同一セッションで本サブルーチンを複数回呼び出した場合、2 回目以降の呼出しは無効となり正常終了します。 - 43 - - 指定されたセッション ID が一度も開設されていない場合、本サブルーチンはエラー終了します。 セッションサブルーチンでエラーが発生した場合は、エラー情報が Windows のイベントログ(アプリケーションログ)へ出力されます。 エラー情報は、「5.1.4 セッションサブルーチンのエラー情報」を参照してください。 図 3.4 セッションサブルーチンの使用例 3.2.3 セッションの使用例 セッションが必要な使用例のモデルを以下に示します。 (1) Internet Explorer の画面経由の使用例 Internet Explorer の画面に対応した、ASP.NET のプログラムを呼び出す場合。 - 44 - 図 3.5 セッション使用例 1 この場合、PowerRDBconnector のセッションと、IIS のセッションとが 1 対 1 に対応するようにして、データベースにアクセスする COBOL プログラムを開発します。 ASP.NET の場合、端末と IIS のスレッドが固定化されないため、1 回のアクセスのたびに、セッションの開設からセッションの閉設まで を行ってください。 なお、上記使用例の運用には、PowerRDBconnector サーバパッケージが必要です。 3.3 認証 本節では、PowerRDBconnector の認証機能について説明します。 PowerRDBconnector は、SQL Server が備えている 2 つの認証機能のどちらの方法でも使用可能です。 3.3.1 Windows 認証の使用方法 SQL Server がインストールされているコンピュータに、COBOL アプリケーションを起動するドメインまたはコンピュータのユーザーを登 録することで、Windows 認証が使用できます。 Windows 認証を使用する場合、COBOL アプリケーションおよび PowerRDBconnector への設定は必要ありません。なお Windows 認 証は、シングルセッションプログラムとマルチセッションプログラムの両方で使用できます。 Windows 認証の詳細については、SQL Server の Books Online を参照してください。 - 45 - データベース認証の使用方法(シングルセッション) 3.3.2 シングルセッションプログラミングでの、データベース認証の使用方法について説明します。 CALL 文で認証情報登録サブルーチン(XMROAUTH)を呼び出すことで、データベース認証を行います。 3.3.2.1 データベース認証の動作概要(シングルセッション) データベース認証は、以下のように動作します。 ・ 認証情報登録サブルーチンは、指定された認証情報を内部的に記憶します。 ・ 実際のデータベースへの認証や接続は、プロセス初回または、全ファイルクローズ後の次の OPEN 文実行時となります。認証に 失敗すると、OPEN 文でエラーとなります。 ・ データベースに接続するまでに、2 回以上呼び出すと、後から指定された認証情報が有効となります。 図 3.6 認証情報登録サブルーチンの使用方法 認証情報登録サブルーチンを使用する場合は、以下の点に注意してください。 ・ 認証情報登録サブルーチンを動的プログラム構造で使用する場合は、COBOL 初期化ファイルにエントリ情報の記述が必要で す。詳しくは、NetCOBOL のマニュアルを参照してください。 例)エントリ情報ファイル(ENTRY.ENT)を指定する場合 COBOL 初期化ファイル(COBOL85.CBR) @CBR_ENTRYFILE=ENTRY.ENT エントリ情報ファイル(ENTRY.ENT) [ENTRY] ; 認証情報登録サブルーチン XMROAUTH=F3BWS1SB.DLL 認証情報登録サブルーチンは、PowerRDBconnector が提供するシステムライブラリです。COBOL アプリケーションに静的リンクし ないでください。詳しくは、「3.1.6 コンパイル方法」および「NetCOBOL 使用手引書」を参照してください。 ・ 認証情報登録サブルーチンは、初回の OPEN 文より前に実行してください。既に OPEN 文実行後に、認証情報登録サブルーチ ンを呼び出してもシーケンスエラーとなりません。 次のプロセス初回の OPEN 文実行時に、登録した認証情報を使用してデータベースに接続されます。 ・ 指定された認証情報は、そのままデータベースに渡されます。このため、認証情報の制約(文字数、使用可能文字など)はデータ ベースの仕様に準じます。 ・ 認証種別にデータベース認証を指定し、認証情報登録サブルーチンを実行した場合、以下の処理を行うまで、データベース認証 が適用されます。 - プロセスの終了。 - 46 - - 認証種別に Windows 認証を指定した認証情報登録サブルーチンの再呼出し。 ・ データベース認証は、データベースのユーザー名とパスワードをプログラムで扱うため、セキュリティに注意してください。詳しくは、 「4.2.5.2 セキュリティについて」を参照してください。 3.3.2.2 認証情報登録サブルーチンのインターフェース(シングルセッション) 認証情報登録サブルーチンのインターフェースは、以下のとおりです。 認証情報の登録 ・ 機能 データベースに対する認証情報を登録します。 ・ 呼出し形式 CALL “XMROAUTH”USING 認証用登録情報 エラー情報 RETURNING 復帰値. ・ パラメーターのデータ定義 01 認証用登録情報. 02 認証種別 02 ユーザー名長 02 ユーザー名 02 パスワード長 02 パスワード 01 エラー情報. 02 終了情報 02 詳細情報 02 FILLER 01 復帰値 PIC 9(9) COMP-5. PIC 9(9) COMP-5. PIC X(260). PIC 9(9) COMP-5. PIC X(260). PIC S9(9) COMP-5. PIC S9(9) COMP-5. PIC S9(9) VALUE 0. PIC S9(9) COMP-5 VALUE 0. ※上記は、必ずレベル番号 01 で記載してください。 ※FILLER は、0 を設定してください。 ・ パラメーターの意味 - 認証種別(必須) 認証の種別を指定します。 1:Windows 認証 2:データベース認証 - ユーザー名長 データベース認証のユーザー名の長さを 10 進数のバイト長で指定します。1 から 256 まで指定できます。データベース認証 の場合、必要です。 - ユーザー名 データベース認証のユーザー名を指定します。最大 256 バイトまで指定できます。データベース認証の場合、必要です。 - パスワード長 データベース認証のパスワードの長さを 10 進数のバイト長で指定します。1 から 256 まで指定可能です。データベース認証 の場合、必要です。 - 47 - - パスワード データベース認証のパスワードを指定します。最大 256 バイトまで指定できます。データベース認証の場合、必要です。 - 終了情報/詳細情報 終了情報および詳細情報については、「表 5.8 認証情報登録サブルーチン終了コード」を参照してください。 ・ 復帰値 復帰値は、以下のとおりです。 表 3.17 XMROAUTH サブルーチンの復帰値 復帰値 意味 イベントログ出力の有無 0 正常 なし -1 エラー なし 認証情報登録サブルーチンでパラメーターエラーが発生した場合は、エラー情報にエラーコードが通知され、認証情報の登録は行わ れません。Windows のイベントログ(アプリケーションログ)へエラー情報は出力されません。エラー情報は、「5.1.3 認証情報登録サブ ルーチンのエラー情報」を参照してください。 「図 3.7 認証情報登録サブルーチンの使用例」に使用例を示します。 図 3.7 認証情報登録サブルーチンの使用例 - 48 - 3.3.3 データベース認証の使用方法(マルチセッション) マルチセッションプログラミングでの、データベース認証の使用方法について説明します。 CALL 文で認証情報登録サブルーチン(COB_PRDB_AUTH)を呼び出すことで、データベース認証を行います。 3.3.3.1 データベース認証の動作概要(マルチセッション) データベース認証は、以下のように動作します。 ・ 認証情報登録サブルーチンは、指定された認証情報を内部的に記憶します。 ・ 実際のデータベースへの認証や接続は、セッション開始後、初回 OPEN 文実行時となります。認証に失敗すると、OPEN 文でエ ラーとなります。 ・ データベースに接続するまでに、2 回以上呼び出すと、後から指定された認証情報が有効となります。 図 3.8 認証情報登録サブルーチンの使用方法 認証情報登録サブルーチンを使用する場合は、以下の点に注意してください。 ・ 認証情報登録サブルーチンを使用する場合には、まずセッションの開設を行ってください。 ・ 認証情報登録サブルーチンは、初回の OPEN 文より前に実行してください。OPEN 文実行後に、認証情報登録サブルーチンを 呼び出してもシーケンスエラーとなりません。 セッション閉設後、再度 OPEN 文を実行した場合は、登録された認証情報を使用してデータベースに接続されます。 - 49 - ・ 指定された認証情報は、そのままデータベースに渡されます。このため、認証情報の制約(文字数、使用可能文字など)はデータ ベースの仕様に準じます。 ・ 認証種別にデータベース認証を指定し、認証情報登録サブルーチンを実行した場合、以下の処理を行うまで、データベース認証 が適用されます。 - セッションの閉設。 - 認証種別に Windows 認証を指定した認証情報登録サブルーチンの再呼出し。 ・ データベース認証は、データベースのユーザー名とパスワードをプログラムで扱うため、セキュリティに注意してください。詳しくは、 「4.2.5.2 セキュリティについて」を参照してください。 3.3.3.2 認証情報登録サブルーチンのインターフェース(マルチセッション) 認証情報登録サブルーチンのインターフェースは、以下のとおりです。 認証情報の登録 ・ 機能 データベースに対する認証情報を登録します。 ・ 呼出し形式 CALL "COB_PRDB_AUTH" USING BY REFERENCE セッション ID BY REFERENCE 認証用登録情報 BY REFERENCE エラー情報 RETURNING 復帰値. ・ パラメーターのデータ定義 01 セッション ID 01 認証用登録情報. 02 認証種別 02 ユーザー名長 02 ユーザー名 02 パスワード長 02 パスワード 01 エラー情報. 02 終了情報 02 詳細情報 02 FILLER 01 復帰値 PIC X(30). PIC 9(9) COMP-5. PIC 9(9) COMP-5. PIC X(260). PIC 9(9) COMP-5. PIC X(260). PIC S9(9) COMP-5. PIC S9(9) COMP-5. PIC S9(9) VALUE 0. PIC S9(9) COMP-5 VALUE 0. ※上記は、必ずレベル番号 01 で記載してください。 ※FILLER は、0 を設定してください。 ・ パラメーターの意味 - セッション ID(必須) 英数字項目 30 バイト以内で指定します。 文字の種類の制約はありません。途中に空白がある場合、空白以降の文字は切り捨てられるため、空白の入らない連続した 文字列を指定してください。なお、本パラメーターは必ず指定してください。 - 認証種別(必須) 認証の種別を指定します。 - 50 - 1:Windows 認証 2:データベース認証 - ユーザー名長 データベース認証のユーザー名の長さを 10 進数のバイト長で指定します。1 から 256 まで指定できます。データベース認証 の場合、必要です。 - ユーザー名 データベース認証のユーザー名を指定します。最大 256 バイトまで指定できます。データベース認証の場合、必要です。 - パスワード長 データベース認証のパスワードの長さを 10 進数のバイト長で指定します。1 から 256 まで指定可能です。データベース認証 の場合、必要です。 - パスワード データベース認証のパスワードを指定します。最大 256 バイトまで指定できます。データベース認証の場合、必要です。 - 終了情報/詳細情報 終了情報および詳細情報については、「表 5.8 認証情報登録サブルーチン終了コード」を参照してください。 ・ 復帰値 復帰値は、以下のとおりです。 表 3.18 COB_PRDB_AUTH サブルーチンの復帰値 復帰値 イベントログ出力の有無 0 正常 なし -1 エラー あり セッション ID の指定が正しくありません。 なし -201 3.4 意味 トランザクション 本節では、トランザクション機能の作り方について説明します。 3.4.1 トランザクション機能とは トランザクション機能とは、アプリケーションのデータのやりとりを1単位(トランザクション単位)に分割、その単位で処理を保証し、複数 ファイルおよび複数レコード間の一貫性を保証する機能です。 トランザクション機能により、アプリケーションプログラムの実行中に何らかのエラーが発生したときに、トランザクション単位に処理を取 り消すことができます。 アプリケーションプログラムが中断した場合には、実行中であったトランザクションを取り消し、アプリケーションプログラムがファイルに 与える影響を局所化し、アプリケーションプログラムの再実行を容易に行うことができます。 3.4.2 トランザクションの使用方法(シングルセッション) - 51 - 3.4.2.1 トランザクションプログラム(シングルセッション) PowerRDBconnector は、“トランザクションの開始”、“トランザクションの確定”、および“トランザクションの取消し”の 3 種類のサブルー チンを、COBOL アプリケーションから呼び出すことで、トランザクション機能を実現します。 以下に、トランザクションサブルーチンの使用方法を示します。 図 3.9 トランザクションサブルーチンの使用方法(シングルセッション) トランザクションサブルーチンを以下に示します。 表 3.19 トランザクションサブルーチンの一覧 トランザクション サブルーチン名 開始 XMROTSTR 確定 XMROTEND 取消し XMROTCNL テーブルロック解除時の取消し※ XMROTRBK ※:トランザクションを使用せず、テーブルロック区間内で更新されたレコードを、テーブルロック解除時に、更新前に戻す場合に使用 します。詳細は、「3.5.3.2 テーブルロック解除時のトランザクション取消し機能」を参照してください。 トランザクションは、以下のように動作します。 ・ トランザクションを開始していない場合は、データベースのオートコミット機能で動作します。 ・ トランザクション分離レベルは、ReadCommitted が使用されます。 ・ トランザクションは、セッション単位に開始、確定、取消しが行われます。 3.4.2.2 トランザクション使用時の注意事項(シングルセッション) トランザクションの使用方法には、以下の注意事項があります。 ・ トランザクションサブルーチンを動的プログラム構造で使用する場合は、COBOL 初期化ファイルにエントリ情報の記述が必要で す。詳しくは、NetCOBOL のマニュアルを参照してください。 例)エントリ情報ファイル(ENTRY.ENT)を指定する場合 COBOL 初期化ファイル(COBOL85.CBR) @CBR_ENTRYFILE=ENTRY.ENT - 52 - エントリ情報ファイル(ENTRY.ENT) [ENTRY] ;トランザクションサブルーチン XMROTSTR=F3BWS1CB.DLL XMROTEND=F3BWS1CB.DLL XMROTCNL=F3BWS1CB.DLL XMROTRBK=F3BWS1CB.DLL トランザクションサブルーチンは、PowerRDBconnector が提供するシステムライブラリです。COBOL アプリケーションに静的リンク しないでください。詳しくは、「3.1.6 コンパイル方法」および「NetCOBOL 使用手引書」を参照してください。 ・ 初回のトランザクションの開始は、OPEN 文発行後、かつ、他の入出力文(READ、WRITE、REWRITE、DELETE、START 文)を 発行する前に、呼び出してください。 また、トランザクションの確定および取消しは、最終の CLOSE 文を発行するより前に、呼び出してください。 ・ トランザクションの確定および取消し後に、トランザクションを開始する場合は、トランザクション開始用のサブルーチンを再度呼び 出してください。 ・ テーブルロックを指定したファイルのオープン中は、トランザクション操作(開始、確定、取消し)が無効となります。テーブルロック についての詳細は、「3.5.3 テーブルロック機能」、「4.1.3.2 テーブルロック機能について」、「4.2.2.3 テーブルロックの排他制御に ついて」を参照してください。 ・ トランザクションを開始し、トランザクションの確定および取消しを実行しなかった場合は、トランザクションが取り消されます。具体 例を以下に示します。 - トランザクションの確定および取消しを実行せずに CLOSE 文を実行した場合。 - タスクマネージャで COBOL アプリケーションのプロセスを停止した場合。 - COBOL アプリケーションが、アプリケーションエラーで中断した場合 - COBOL アプリケーション動作中に、データベースサービスを中断またはネットワークを中断した場合。 3.4.2.3 トランザクションサブルーチンのインターフェース(シングルセッション) トランザクションサブルーチンのインターフェースは、以下のとおりです。 (1)トランザクション開始 ・ 機能 トランザクションの開始を宣言します。 トランザクション機能を使用するにあたって必ず発行してください。 ・ 呼出し形式 CALL “XMROTSTR” - 53 - (2)トランザクション確定 ・ 機能 現在のトランザクションを終了し、トランザクション中に更新された内容を全て確定します。 ・ 呼出し形式 CALL “XMROTEND” (3)トランザクション取消し ・ 機能 現在のトランザクションを終了し、トランザクション中に更新された内容を全て取り消します。 ・ 呼出し形式 CALL “XMROTCNL” (4)テーブルロック解除時のトランザクション取消し ・ 機能 テーブルロック解除時に、テーブルロック区間中に更新された内容を全て取り消します。 ・ 呼出し形式 CALL “XMROTRBK” ・ 注意事項 本サブルーチンの注意事項を以下に示します。 - テーブルロックが有効な区間内で呼び出した場合のみ有効です。この範囲外で呼び出した場合には、無効となります。 - テーブルロック対象のファイル全てをクローズした後は、本サブルーチンの指定は無効となります。 詳細は、「3.5.3.2 テーブルロック解除時のトランザクション取消し機能」を参照してください。 トランザクションサブルーチンでシーケンスエラーやデータベースのエラーが発生した場合は、イベントログ(アプリケーションログ)へエ ラー情報を出力後、COBOL アプリケーションは終了します。エラー情報は、「5.1.2 トランザクションアクセス時のエラー情報」を参照し てください。トランザクションサブルーチンを使用する場合の注意については、「4.2.1 トランザクションに関する注意事項」を参照してく ださい。 3.4.3 トランザクションの使用方法(マルチセッション) トランザクションサブルーチンのインターフェースは、以下のとおりです。 - 54 - 3.4.3.1 トランザクションプログラム(マルチセッション) PowerRDBconnector は、“トランザクションの開始”、“トランザクションの確定”、および“トランザクションの取消し”の 3 種類のサブルー チンを、COBOL アプリケーションから呼び出すことで、トランザクション機能を実現します。 以下に、トランザクションサブルーチンの使用方法を示します。 図 3.10 トランザクションサブルーチンの使用方法(マルチセッション) トランザクションサブルーチンを以下に示します。 表 3.20 トランザクションサブルーチンの一覧 トランザクション サブルーチン名 開始 1 確定 取消し パラメーター値 2 COB_PRDB_TRAN 3 テーブルロック解除時の取消し※ 4 - 55 - ※:トランザクションを使用せず、テーブルロック区間内で更新されたレコードを、テーブルロック解除時に、更新前に戻す場合に使用 します。詳細は、「3.5.3.2 テーブルロック解除時のトランザクション取消し機能」を参照してください。 トランザクションは、以下のように動作します。 ・ トランザクションを開始していない場合は、データベースのオートコミット機能で動作します。 ・ トランザクション分離レベルは、ReadCommitted が使用されます。 ・ トランザクションは、セッション単位に開始、確定、取消しが行われます。 3.4.3.2 トランザクション使用時の注意事項(マルチセッション) トランザクションの使用には、以下の注意事項があります。 ・ トランザクションサブルーチンを使用する場合は、必ずセッションの開設を行ってください。 ・ 初回のトランザクションの開始は、OPEN 文発行後、かつ、他の入出力文(READ、WRITE、REWRITE、DELETE、START 文)を 発行する前に、呼び出してください。 また、トランザクションの確定および取消しは、最終の CLOSE 文を発行するより前に、呼び出してください。 ・ トランザクションの確定および取消し後に、トランザクションを開始する場合は、トランザクション開始を再度呼び出してください。 ・ テーブルロックを指定したファイルのオープン中は、トランザクション操作(開始、確定、取消し)が無効となります。 ・ トランザクションを開始し、トランザクションの確定および取消しを実行しなかった場合は、トランザクションが取り消されます。具体 例を以下に示します。 - トランザクションの確定および取消しを実行せずに CLOSE 文を実行した場合。 - タスクマネージャで COBOL アプリケーションのプロセスを停止した場合。 - COBOL アプリケーションが、アプリケーションエラーで中断した場合 - COBOL アプリケーション動作中に、データベースサービスを中断またはネットワークを中断した場合。 ・ マルチセッションプログラムの注意事項は、「4.1.3.8 マルチセッションプログラミングについて」や、「4.2.4 マルチスレッド使用時の 注意事項」を参照してください。 3.4.3.3 トランザクションサブルーチンのインターフェース(マルチセッション) マルチセッションプログラミングを用いる場合のトランザクションサブルーチンのインターフェースは、以下のとおりです。 トランザクションの制御 ・ 機能 マルチセッションプログラミングの場合のトランザクション制御を行います。 - 56 - ・ 呼出し形式 CALL “COB_PRDB_TRAN”USING BY REFERENCE セッション ID BY VALUE トランザクション種別 RETURNING 復帰値. ・ パラメーターのデータ定義 01 セッション ID 01 トランザクション種別 01 復帰値 PIC X(30). PIC 9(9) COMP-5. PIC S9(9) COMP-5. ※上記は全て、必ずレベル番号 01 で記載してください。 ・ パラメーターの意味 - セッション ID(必須) 英数字項目 30 バイト以内で指定します。 文字の種類の制約はありません。途中に空白がある場合、空白以降の文字は切り捨てられるため、空白の入らない連続した 文字列を指定してください。 なお、本パラメーターは必ず指定してください。 - トランザクション種別(必須) 処理するトランザクション種別を指定します。 1:トランザクション開始 2:トランザクション確定 3:トランザクション取消し 4:テーブルロック解除時のトランザクション取消し なお、本パラメーターは必ず指定してください。 ・ 復帰値 復帰値は、以下のとおりです。 表 3.21 COB_PRDB_TRAN サブルーチンの復帰値 復帰値 意味 イベントログ出力の有無 0 正常 なし -1 エラー あり -2 内部矛盾 あり -3 トランザクション種別の指定に誤りがあります。 あり -201 セッション ID の指定が正しくありません。 なし -202 無効なトランザクション種別が指定されました。 なし トランザクションサブルーチンでシーケンスエラーやデータベースのエラーが発生した場合は、イベントログ(アプリケーションログ) へエラー情報を出力後、COBOL アプリケーションは終了しません。エラー情報は、「5.1.2 トランザクションアクセス時のエラー情 報」を参照してください。 ・ 注意事項 トランザクションサブルーチンを使用する場合の注意については、「4.2.1 トランザクションに関する注意事項」を参照してください。 - 57 - 排他制御 3.5 本節では、PowerRDBconnector の排他制御について説明します。 3.5.1 排他制御の種類 排他制御には、以下の 2 つの機能があります。 ・ レコードロック機能 レコードロック機能とは、ある業務の START 文で位置付けたレコードや READ 文で読み込んだレコードに対して、排他制御を行 う機能です。 このとき、他の業務からの該当レコードへの読込み操作は、待ち合わせとなります。 複数の端末から同じファイルにアクセスするオンラインアプリケーションに適しています。詳しくは、「3.5.2 レコードロック機能」を参 照してください。 ・ テーブルロック機能 テーブルロック機能とは、ある業務で使用しているファイルのオープンからクローズまでの間に、他の業務からの該当ファイルへの オープンに対して、排他制御を行う機能です。 COBOL 初期化ファイルと PowerRDBconnector 動作環境ファイルに、TableLock プロパティを指定することで使用できます。 1つのプログラムが実行中ファイルを占有するバッチ型業務に適しています。 レコードロックを獲得しているテーブルに対して、他の業務からテーブルロックで OPEN 文を実行すると、オープンは待ち合わせ ずに排他エラーで即時に復帰します。 テーブルロック機能は、SQL Server のトランザクション機能を使用します。本製品でテーブルロック機能を使用する場合、テーブル ロック対象のファイルに対するオープンからクローズまでの間を、強制的に 1 つのトランザクション区間とすることで、テーブルロッ クを実現します。このため、オープンからクローズまでの区間でアプリケーションが終了した場合、この区間の全て更新が取り消さ れることとなります。詳しくは、「3.5.3 テーブルロック機能」を参照してください。 テーブルロック機能およびレコードロック機能の使用有無にかかわらず、以下の注意事項があります。 ・ OUTPUT モードでオープン直後から最初の入出力文までは、テーブルロックを使用した状態になります。 ・ OUTPUT モードでオープンしたファイルに対して、同一プロセス内で二重にオープンすることはできません。 OUTPUT モードでオープンしたファイルに関するその他の注意については、「4.2.3.5 OUTPUT モードのオープンの使用につい て」を参照してください。 ・ 処理順序によっては、デッドロックが検出されることがあります。 ・ 排他制御は、セッション単位に行われます。 - 58 - 排他制御の注意については、「4.2.2 排他制御に関する注意事項」を参照してください。 レコードロック機能 3.5.2 I-O モードでオープンした後、START 文で位置付けたレコードや、READ 文で読込んだレコードに対して、レコードロックが獲得され、 他の業務からの位置付けや読込み操作を待ち合わせる機能です。 なお、INPUT モードでオープンした場合、レコードロックの待合せは発生しません。 トランザクションを適用した場合、アクセスした全てのレコードに対して、レコードロックが獲得され、他の業務からの位置付け、読込み、 更新や削除の操作を待ち合わせさせることができます。 アクセスして獲得されたレコードロックは、トランザクションの確定または取消しで解放されます。 レコードロックの注意事項については、「4.1.3.3 レコードロック機能について」を参照してください。 3.5.2.1 トランザクション未適用時のレコードロック (1)レコードロック獲得 I-O モードでオープンし、以下の操作を行ったレコードに対してレコードロックを獲得します。 ・ START 文で位置付けたレコード(※) ・ READ 文で読み込んだレコード ※) DYNAMIC モードでオープンし、START FIRST 文を実行した場合は位置付けされた先頭のレコードに対するレコードロックは獲 得されません。 (2)レコードロック解放 獲得されたレコードロックは、以下の操作で解放されます。 表 3.22 トランザクション未適用時のレコードロック解放タイミング アクセスモード レコードロックの解放タイミング ・ 次のレコードに位置付け(START)または読み込んだ(READ)場合 SEQUENTIAL ・ EOF を検出した場合 ・ CLOSE 文を実行した場合 ・ 読込み(READ)、更新(REWRITE)、削除(DELETE)を行った場合 RANDOM ・ CLOSE 文を実行した場合 ・ 次のレコードに位置付け(START)または読込んだ(READ)場合 DYNAMIC ・ EOF を検出した場合 ・ CLOSE 文を実行した場合 3.5.2.2 トランザクション適用時のレコードロック - 59 - (1)レコードロック獲得 I-O モード、OUTPUT モード、または EXTEND モードでオープンし、以下の操作を行った全てのレコードに対してレコードロックを獲 得します。 ・ START 文で位置付けたレコード ・ READ 文で読み込んだレコード ・ トランザクション中に REWRITE 文で更新したレコード ・ トランザクション中に DELETE 文で削除したレコード ・ トランザクション中に WRITE 文で追加したレコード (2)レコードロック解放 獲得されたレコードロックは、以下の操作で解放されます。 ・ トランザクションの確定または取消し 注意) トランザクションを確定または取消しする直前に、位置付けまたは読込んだレコードのレコードロックは解放されません。 3.5.2.3 レコードロックの獲得待合わせ レコードロックを獲得しているレコードに対して、別の COBOL アプリケーションから以下の操作を行うとレコードロック獲得の待合わせ が発生します。 ・ レコードロックの獲得 ・ 乱呼出しの REWRITE 文および DELETE 文 レコードロック獲得の待合わせは、PowerRDBconnector 動作環境ファイルの TimeOut プロパティで指定できます。レコードロック獲得 の待合わせについては、「3.6 タイムアウト機能」を参照してください。 DELETE 文で削除したレコードにレコードロックが獲得され、WRITE 文でレコードロック獲得の待合わせが発生する場合があります。 詳しくは、「4.2.2.2 削除したレコードの待合せについて」、「4.2.3.6 読み取り一貫性に関する注意事項」を参照してください。 3.5.3 テーブルロック機能 テーブルロックは、オープン中に、他の業務からのオープンを防ぐ機能です。 3.5.3.1 テーブルロック機能の使用方法 COBOL 初期化ファイルの TableLock プロパティに ON を指定することにより、OPEN 文でテーブルロックを行います。テーブルロック 対象の全てのテーブルをクローズすると、テーブルロックを解除します。 テーブルロックが有効なテーブルの OPEN 文で強制的にトランザクションを開始して CLOSE 文でトランザクションを確定することでテー ブルロックを実現します。テーブルロックを指定したファイルのオープン中は、トランザクション操作(開始、確定、取消し)が無効となり ます。 強制的に開始するトランザクションの注意については、「4.2.2.3 テーブルロックの排他制御について」を参照してください。 - 60 - INPUT モードでオープンすると、Share(共有モード)でテーブルロックを行います。INPUT モードでオープン後、同一テーブルに対し て別の COBOL アプリケーションからのオープンを防ぐことはできません。 INPUT 以外のモードでオープンすると、Exclusive(占有モード)でテーブルロックを行います。INPUT 以外のモードでオープンした後、 同一テーブルに対して別の COBOL アプリケーションからのオープンはできません。 [テーブルロック機能の使用方法] COBOL 初期化ファイルの TableLock プロパティに ON を指定してください。 例)テーブルロックのファイル EMPLOYEE に対する記述例 テーブルロックの指定時は、ファイル単位に指定できるため、ファイルのロック動作は以下のようになり、テーブルロックとレコードロック が混在できます。 表 3.23 テーブルロックの指定 TableLock の指定 ファイルのロック動作 指定あり テーブルロック 指定なし レコードロック また、テーブルロックの注意事項については、「4.1.3.2 テーブルロック機能について、「4.2.2.3 テーブルロックの排他制御について」、 「4.2.3.5 OUTPUT モードのオープンの使用について」を参照してください。 [テーブルロック解除時のデータの扱いについて] テーブルロックは、PowerRDBconnector 内部で強制的にトランザクションを制御して実現しているため、テーブルロック解除時には、 データは次のように扱われます。 表 3.24 テーブルロック解除時のデータの扱い テーブルロック解除のタイミング テーブルロック区間内の更新データの扱い テーブルロック対象の全てのテーブルをクローズした とき。 更新データが反映されます。 テーブルロック対象の全てのテーブルをクローズせずに COBOL アプリケーションを終了させたとき。 更新データが反映されます。 タスクマネージャで COBOL アプリケーションのプロセ スを停止した場合。 更新データは反映されません。 COBOL アプリケーションが、アプリケーションエラーで 中断した場合 更新データは反映されません。 COBOL アプリケーション動作中に、データベースサー ビスを中断またはネットワークを中断した場合。 更新データは反映されません。 - 61 - テーブルロック解除時のトランザクション取消し機能 3.5.3.2 テーブルロック機能は、テーブルロックが有効なテーブルの OPEN 文で強制的にトランザクションを開始して CLOSE 文でトランザク ションを確定することで実現しています。 アプリケーションを強制的に中断した場合には、テーブルロック区間内で更新された内容が取り消されます。このような、強制的な中断 と同じように処理したい場合(エラーを検出した場合など)は、テーブルロック解除時に、強制的にトランザクションを取り消し、更新され た全ての内容を取り消すことができます。 テーブルロックが有効な区間で、“XMROTRBK”または、”COB_PRDB_TRAN” (トランザクション種別:4)サブルーチンを呼び出すこ とで、テーブルロックを解除するときに強制的にトランザクションを取り消すことができます。 [サブルーチン名] ・ シングルセッションプログラミングの場合 CALL “XMROTRBK” ・ マルチセッションプログラミングの場合 CALL “COB_PRDB_TRAN” (トランザクション種別:4) サブルーチンの使用方法は、「3.4.2 トランザクションの使用方法(シングルセッション)」および「3.4.3 トランザクションの使用方法 (マルチセッション)」を参照してください。 [注意事項] ・ 本サブルーチンは、テーブルロックが有効な区間内で呼び出した場合のみ有効です。この範囲外で呼び出した場合には、無効と なります。 ・ シングルセッションプログラミングの場合とマルチセッションプログラミングの場合で更新を取り消すトランザクションの範囲が以下の ように異なります。 - シングルセッションプログラミングの場合(XMROTRBK) テーブルロック対象のファイルを全てクローズするまでの他のテーブルへの更新を含む全ての更新を取り消します。 - マルチセッションプログラミングの場合(COB_PRDB_TRAN/トランザクション種別:4) セッションを閉設するサブルーチン(COB_PRDB_END)を呼び出すまでの他のテーブルへの更新を含む全ての更新を取り消 します。 テーブルロック対象のファイルを全てクローズしても更新は取り消されません 。セッションを閉設するサブルーチン (COB_PRDB_END)が呼び出された時点で更新が取り消されます。 3.6 タイムアウト機能 本節では、PowerRDBconnector のタイムアウト機能について説明します。 入出力文によるデータベースへのアクセスで、処理完了の待合わせ時間を指定できます。指定した時間を超えて処理が完了しない と、タイムアウトを検出してエラー(FILE STATUS:90、iserrno:255)を通知します。 タイムアウト機能には、2 つの用途があります。 - 62 - ・ レコードロック獲得の待合わせ ・ 高負荷な実行環境での SQL Server の処理完了の待合わせ 3.6.1 レコードロック獲得の待合わせ COBOL アプリケーションが多重動作する環境では、レコードロックの獲得待ちになると、レコードロックが解放されるのを待合わせま す。 このような場合に、レコードロックを獲得するまでの時間を指定できます。 レコードロック獲得の待合わせでタイムアウトが発生した場合、このときトランザクションを開始した状態であっても自動的にトランザクショ ンが確定または取消しすることはありません。COBOL アプリケーションは、トランザクションの確定または取消しを行ってください。 なお、SQL Server は、PowerRDBconnector 動作環境ファイルの TimeOut プロパティの設定値よりも前にタイムアウトのエラーを通知 する場合があります。この場合、SQL Server の動作環境を見直してください。 3.6.2 処理完了待合わせ時間の設定 処理完了待合わせ時間の設定方法については、「3.1.4 PowerRDBconnector 動作環境ファイル」を参照してください。 例)レコードロック獲得待合わせ時間に 60 秒を指定するための記述例 PowerRDBconnector 動作環境ファイル(DBIO_ENV) ; PowerRDBconnector 動作環境ファイル ServerName=snake DataSourceName=pubs TimeOut=60 3.6.3 高負荷な実行環境での SQL Server の処理完了の待合わせ データベースへのアクセスで大量のデータを処理する場合や複数のアプリケーションが同時に動作する環境では、SQL Server の負 荷が高くなり、一時的に処理の完了を待合わせる場合があります。 例)OPEN 文でタイムアウトが発生する例 インデックスが定義されておらず、かつレコード件数が大量にある表に対して、索引ファイルとして OPEN 文を実行した場合。 レコードロック獲得の待合わせ以外でタイムアウトが発生する場合、SQL Server の動作環境を確認し、必要に応じて SQL Server を チューニングまたは SQL Server に割り当てる実メモリを追加してください。それでもなお、タイムアウトのエラーが検出されるようでした ら、PowerRDBconnector 動作環境ファイルの TimeOut プロパティの値を大きくしてください。SQL Server のチューニング方法につい ては、SQL Server の Books Online を参照してください。 3.7 データ補正機能 本節は、アクセス時の例外的なデータに対する扱いについて説明します。データの表現形式についての説明であるため、COBOL ア プリケーションがデータベースにアクセスでき、アクセスするデータ内容が明確になった際に、お読みください。 特に、ファイルシステムを用いた COBOL アプリケーションからの移行や、データ表現が変わるような移行を行う場合に、お読みくださ い。 - 63 - 後方空白補正 3.7.1 文字項目のデータで、設定したデータ長が項目長に満たない場合、COBOL ランタイムは、指定したデータの後方に空白を設定しま す。文字項目にデータを設定する場合、COBOL アプリケーションで半角空白や全角空白を意識して設定している場合と、空白を意 識せず設定している場合とで、後方空白の扱いが異なります。 このどちらの場合でも、COBOL アプリケーションが想定したように動作できるようにするため、PowerRDBconnector では、後方空白補 正機能を用意しています。 後方空白補正機能では、以下のように後方空白を扱います。 表 3.25 文字列データの後方空白の扱い COBOL の入出力文 列名 _CHAR READ 文 WRITE 文 および REWRITE 文 アプリケーションへ半角空白を設定します。 シフト JIS で動作する COBOL の場合 アプリケーションへ、全角空白を設定します。文字列 が奇数バイトの場合、全角空白を設定前に、半角空 白 1 文字を設定します。 _NCHAR unicode で動作する COBOL の場合 アプリケーションへ、半角空白を設定します。 後方の半角空白と全角空白を削除し、データ ベースへ格納します。 その後、データベースが半角空白を設定しま す。 格納先のデータ型が NCHAR の場合、以下 のようになります。 後方の空白の部分には、全角空白は格納さ れません。 データベースの列長に不足する分だけ半角 空白が格納されます。 全文字が空白の場合も、データベースの列長 分だけ半角空白が格納されます。 [後方空白補正機能の使用方法] ・ COBOL アプリケーション全体に指定する場合 PowerRDBconnector 動作環境ファイルの Suppress プロパティに ON を指定してください。 例)PowerRDBconnector 動作環境ファイル(DBIO_ENV)の記述例 ; PowerRDBconnector 動作環境ファイル ServerName=snake.domain.com DataSourceName=pubs Suppress=ON ・ 特定のファイルのみに指定する場合 COBOL 初期化ファイルの Suppress プロパティに ON を指定してください。 例)ファイル EMPLOYEE に対する COBOL 初期化ファイル(COBOL85.CBR)の記述例 ; COBOL 初期化ファイル EMPLOYEE=TableName=employee&SchemaName=dbo &AccessMode=RANDOM&Suppress=ON,RDM [後方空白補正機能の注意事項] 後方空白補正について、以下の注意が必要です。 - 64 - ・ Suppress プロパティの初期値が ON であるため、Suppress プロパティを指定していない場合は、無条件に後方空白補正が行われ ます。 ・ PowerRDBconnector 動作環境ファイルの Suppress プロパティの指定値は、COBOL 初期化ファイルの Suppress プロパティの初 期値となるため、PowerRDBconnector 動作環境ファイルと COBOL 初期化ファイルにそれぞれ指定した場合、以下のように扱わ れます。 表 3.26 Suppress プロパティの扱い Suppress プロパティの指定 PowerRDBconnector 動作 環境ファイル ON OFF 指定なし(初期値 ON) 動作 COBOL 初期化ファイル ON 後方空白補正を行います。 OFF 後方空白補正を行いません。 指定なし 後方空白補正を行います。 ON 後方空白補正を行います。 OFF 後方空白補正を行いません。 指定なし 後方空白補正を行いません。 ON 後方空白補正を行います。 OFF 後方空白補正を行いません。 指定なし 後方空白補正を行います。 ・ 後方空白補正を行った場合の影響について 「表 3.25 文字列データの後方空白の扱い」の”WRITE 文および REWRITE 文“の欄にあるように、書込み時に、データベースの 列長に満たない場合、半角空白が格納されます。 このため、データ型が NCHAR で、後方空白に半角空白が設定された場合、全角空白ではなく、不足分だけ半角空白が格納さ れます。このデータに対し、以下のように扱われます。 - 後方空白補正を指定しアクセスすると正常にデータが読み込まれます。 - 後方空白補正の指定がない場合、後方に空白が必要以上につながったように読み込まれます。 - PowerRDBconnector を使用しないアプリケーションの場合、後方に空白が必要以上つながったように読み込まれます。 ・ 後方空白補正を行わなかった場合の影響について - 項目内のデータは項目長分全てが評価されるため、キー値を指定する場合、空白以外の部分は一致しても、空白部分が全 角空白と半角空白が混在していると、指定したキー値で思ったようにはアクセスできないことがあります。 例)以下は同じデータとして扱われません。 全角空白:□、半角空白:_ と示します。 - COBOL アプリケーションで NCHAR 属性に対して後方に半角空白をつめて書き込んだ場合、PowerRDBconnector を使用し ない別のアプリケーションで、後方の空白が必要以上につながったように読込まれます。現象を回避するには、COBOL アプ リケーションで、後方の空白部分に全角空白文字を設定してください。 ・ unicode の文字コード系を使用する場合の注意事項 - 65 - 以下の COBOL アプリケーションで、日本語項目の内容を文字比較すると、想定外の比較結果となることがあります。 - NetCOBOL for Windows で、実行コード系が unicode の COBOL アプリケーションの場合で、かつ - 後方空白補正を行った場合 現象を回避するには、後方空白補正機能を使わない(Suppress プロパティに OFF を設定)ようにしてください。 なお、PowerRDBconnector を使用しない場合でも、日本語項目の後方空白部分が半角空白の場合、同様の現象が発生します。 詳細は、NetCOBOL のマニュアルを参照してください。 3.7.2 項目属性に違反するデータのチェックと補正 COBOL アプリケーションでは、レコード内の同じ位置のデータに対して、複数の属性を再定義したり、または複数のアプリケーション で異なった属性で定義したりすることが可能なため、項目属性に違反するデータが生じることがあります。 項目属性で規定されたデータとは、以下のデータです。 a. 英数字項目と日本語項目 データが全て文字コードに準拠したコードから生成されています。 b. 外部十進項目 データが以下の形式で構成されています。 - ゾーン部:3 - 数字部:0 ~ 9 - 符号部:符号なしの場合は 3、符号付の場合は 4,5 c. 内部十進項目 データが以下の形式で構成されています。 - 数字部:0 ~ 9 - 符号部:符号なしの場合は 0xF、符号付の場合は 0xC、0xD PowerRDBconnector 経由では、データベースに異常なデータが設定されないよう、項目属性に違反するデータの扱いを選択すること ができます。この機能は、PowerRDBconnector 動作環境ファイルの DataCheck プロパティにデータチェックの有無を設定することで使 用できます。 ・ DataCheck プロパティに、データチェックを行う指定があった場合(DataCheck=C/U/P など)、データのチェックを行い、項目属性に 違反する場合には、データ例外のエラーとします。詳細は、「3.7.2.1 データチェック」を参照してください。 ・ DataCheck プロパティに、データチェックを行わないと指定された場合(DataCheck=NONE など)、データのチェックは行わず、補正 可能なデータ部分をデータベース定義に応じて補正します。詳細は、「3.7.2.2 データ補正」を参照してください。 [データのチェックと補正の使用方法] ・ データチェックを、全ての属性に対して行う場合、以下のいずれかを行ってください。 - PowerRDBconnector 動作環境ファイルに DataCheck プロパティを記述しないでください。 - PowerRDBconnector 動作環境ファイルに DataCheck プロパティを以下のように指定してください。 PowerRDBconnector 動作環境ファイル(DBIO_ENV)の記述例 ; PowerRDBconnector 動作環境ファイル ServerName=snake.domain.com - 66 - DataSourceName=pubs DataCheck=C/U/P ・ データチェックを、特定の属性に対して行う場合、DataCheck プロパティを以下のように指定してください。以下の例では、データ チェックを、英数字項目と日本語項目、および外部十進項目に対して行い、内部十進項目に対しては、データの補正を行います。 PowerRDBconnector 動作環境ファイル(DBIO_ENV) の記述例 ; PowerRDBconnector 動作環境ファイル ServerName=snake.domain.com DataSourceName=pubs DataCheck=C/U 上記機能は、“英数字項目と日本語項目”、“外部十進項目”、および“内部十進項目”のそれぞれで指定できます。DataCheck プロパ ティの指定方法については、「3.1.4 PowerRDBconnector 動作環境ファイル」および、「表 3.27 DataCheck プロパティの扱い」を参照し てください。 [データのチェックと補正の注意事項] DataCheck プロパティについて、以下の注意事項があります。 ・ DataCheck プロパティにデータチェックを行う指定がある場合、または DataCheck プロパティを指定しない場合、違反している項目 属性は、データ例外のエラーとなります。 ・ データのチェックまたは補正は、以下の処理で動作します。 - WRITE 文または REWRITE 文実行に、データをデータベースに書き込む場合 - キー指定でアクセス時のキー値を解釈する場合 ・ PowerRDBconnector 動作環境ファイルの DataCheck プロパティの指定値と、データのチェックする属性およびデータの補正する 属性を以下に示します。 表 3.27 DataCheck プロパティの扱い 指定なし C/U/P C/U C/P U/P C U P NONE 英数字項目と日本 語項目 ○ ○ ○ ○ × ○ × × × 外部十進項目 ○ ○ ○ × ○ × ○ × × 内部十進項目 ○ ○ × ○ ○ × × ○ × 英数字項目と日本 語項目 × × × × ○ × ○ ○ ○ 外部十進項目 × × × ○ × ○ × ○ ○ 内部十進項目 × × ○ × × ○ ○ × ○ DataCheck プロパティ デー タ チェ ック デー タ補 正 ○:対象 ×:非対象 - 67 - 3.7.2.1 データチェック DataCheck プロパティを指定しない、または DataCheck プロパティに項目種類(DataCheck=C/U/P)を指定した場合、指定した属性の データチェックは以下のように行われます。 a. 英数字項目と日本語項目 DataCheck プロパティに”C”を指定した場合、以下のデータチェックが行われます。 - 項目データが全て 0x00 となっている場合は、データ例外のエラーとなります。 - データの途中に 0x00 が存在する場合、エラーとならず、そのままデータベースにデータを渡します。0x00 の位置による動 作は、「表 3.31 データ途中に 0x00 が存在する場合の動作」を参照してください。 b. 外部十進項目 DataCheck プロパティに”U”を指定した場合、以下のデータチェックが行われます。 - 項目定義の符号属性と、データの符号部が一致しているかチェックされます。 例)属性が符号なしであるが、データの符号部が 4、5 の場合 - 符号部に異常なデータがないかチェックされます。 - ゾーン部に異常なデータがないかチェックされます。 例)数値“123”のデータが、“0x313233”であるはずが“0x313203”などの場合 表 3.28 外部十進のデータチェック 列情報 データ データ内容 _UNSIGN あり _UNSIGN なし _UNSIGN あり _UNSIGN なし 結果 備考 COBOL の データ定義 例 符号部が 0x3* (符号なしデータ) PIC 9(n) 正常 符号部が 0x5* (符号ありの負の値) PIC S9(n) エラー 符号部が 0x4* (符号ありの正の値) PIC S9(n) エラー 符号部が 0x3* (符号なしデータ) PIC 9(n) エラー 符号部が 0x5* (符号ありの負の値) PIC S9(n) 正常 符号部が 0x4* (符号ありの正の値) PIC S9(n) 正常 全て空白 - エラー LOW-VALUE - エラー HIGH-VALUE - エラー 0x00 または 0x20 を含みます - エラー ゾーン部が異常 - エラー 数字部が異常 - エラー c. 内部十進項目 DataCheck プロパティに”P”を指定した場合、以下のデータチェックが行われます。 - 68 - *は 0 ~ 9 n は整数 - 項目定義の符号属性と、データの符号部が一致しているかチェックされます。 例)属性が符号なしであるが、データの符号部がCの場合 - 符号部に異常なデータがないかチェックされます。 表 3.29 内部十進のデータチェック 列情報 データ データ内容 _UNSIGN あり _UNSIGN なし _UNSIGN あり _UNSIGN なし 3.7.2.2 結果 備考 COBOL のデータ 定義例 符号部が 0x*F (符号なしの値) PIC 9(n) COMP 正常 符号部が 0x*C (符号ありの正の値) PIC S9(n) COMP エラー 符号部が 0x*D (符号ありの負の値) PIC S9(n) COMP エラー 符号部が 0x*F (符号なしの値) PIC 9(n) COMP エラー 符号部が 0x*D (符号ありの負の値) PIC S9(n) COMP 正常 符号部が 0x*C (符号ありの正の値) PIC S9(n) COMP 正常 数字部が 0 ~ 9 以外 *は 0 ~ 9 n は整数 エラー データ補正 以下のような場合には、データ内容と属性が矛盾することがあります。 ・ あるレコード内の同じ位置のデータに対して、複数の属性で再定義した場合。 ・ 複数のアプリケーションから異なった属性で定義した場合 COBOL アプリケーションの数が多い、または影響する部分がどこかわからないなど、データ内容に応じた正しい属性で定義しなおす ことができないときがあります。 この場合、データ補正を行うことで、COBOL アプリケーションの対応を少なくすることができます。 DataCheck プロパティに項目種類を指定しない場合、指定した属性のデータチェックを行わず、COBOL アプリケーションからデータ ベースへデータを渡すとき(REWRITE 文、WRITE 文およびキー指定時)、以下のように補正が行われます。 a. 英数字項目と日本語項目 DataCheck プロパティに”C”を指定しない場合、以下のように補正が行われます。 - 項目データが全て 0x00 となっている場合、半角空白(0x20)に置き換えて正常なデータとして扱います。 表 3.30 文字データの補正 列名 COBOL 文字コード指定 0x00 と置き換える文字コード _CHAR unicode 半角空白(0x20) _CHAR シフト JIS 半角空白(0x20) _NCHAR unicode 半角空白(0x20) _NCHAR シフト JIS 半角空白(0x20) - 69 - - データの途中に 0x00 が存在する場合、エラーとならず、そのままデータベースにデータを渡します。このため、コード系と 0x00 の位置によって以下のように動作します。 表 3.31 データ途中に 0x00 が存在する場合の動作 COBOL の文字コード系 列名 動作 シフト JIS - 0x00 以降のデータが欠如します。 0x0000 以降が欠如します。 0x00nn の下位バイト以降が欠如します。 _CHAR 0xnn00 以降が欠如します。 (nn:任意の 16 進数) unicode 0x0000 以降が欠如します。 _NCHAR 0x00nn や 0xnn00 のデータがあっても、データの欠如は発 生しません。 (nn:00 以外の任意の 16 進数) b. 外部十進項目 DataCheck プロパティに”U”を指定しない場合、以下のように補正が行われます。 - HIGH-VALUE、LOW-VALUE、全てが半角空白の場合は数値の 0 として扱います。 - 項目定義の符号属性とデータの符号に不一致があった場合、正の値として扱います。 - 符号部に異常があった場合、正の値として扱います。 - ゾーン部に異常があった場合、ゾーン部を補正し正常なデータとして扱います。 表 3.32 外部十進のデータ補正 列情報 _UNSIGN あり _UNSIGN なし _UNSIGN あり _UNSIGN なし データ内容 COBOL 定義例 補正内容 符号部が 0x3* (符号なしデータ) PIC 9(n) 正常 符号部が 0x5* (符号ありの負の値) PIC S9(n) 符号なしの正の値に補正 します。 符号部が 0x4* (符号ありの正の値) PIC S9(n) 符号なしの正の値に補正 します。 符号部が 0x3* (符号なしデータ) PIC 9(n) 符号部が 0x5* (符号ありの負の値) PIC S9(n) 符号部が 0x4* (符号ありの正の値) PIC S9(n) 正の値に補正します。 正常 正常 全て半角空白 数値の 0 に置換します。 LOW-VALUE 数値の 0 に置換します。 HIGH-VALUE (キー値の指定時) 数値の 0 に置換します。 - 70 - 備考 *は 0 ~ 9 n は整数 列情報 データ内容 COBOL 定義例 補正内容 HIGH-VALUE (書込み時) エラーとなります。 0x00 または 0x20 を含 みます。 異常部分を数値の 0 に 置換します。注 1 ゾーン部が不正 ゾーン部に 0x3*を設定し ます。 数字部が異常 エラーとなります。 備考 *は 0 ~ 9 注 1) 最終バイトが 0x00、0x20 の場合、符号無の場合は 0x30、符号付の場合は 0x40 として置換します。 例) - 前方に空白ありの場合 ’ 123’⇒‘00123’として扱います - 後方に空白ありの場合 ’123 ’⇒‘12300’として扱います - 混在した場合 ’1 2 3’⇒‘10203’として扱います a. 内部十進項目 DataCheck プロパティに”P”を指定しない場合、以下のように補正が行われます。 - 符号部に異常なデータがあった場合、正の値として扱います。 注意 数字部に異常があった場合、データ補正ができないため、データベースアクセス時にエラーとなります。 表 3.33 内部十進のデータ補正 列情報 _UNSIGN あり _UNSIGN なし _UNSIGN あり _UNSIGN なし データ内容 COBOL のデータ 定義例 補正内容 符号部が 0x*F (符号なしデータ) PIC 9(n) COMP 正常 符号部が 0x*D (符号ありの負の値) PIC S9(n) COMP 正の値に補正します。 符号部が 0x*C (符号ありの正の値) PIC S9(n) COMP 正の値に補正します。 符号部が 0x*F (符号なしデータ) PIC 9(n) COMP 正の値に補正します。 符号部が 0x*D (符号ありの負の値) PIC S9(n) COMP 正常 符号部が 0x*C (符号ありの正の値) PIC S9(n) COMP 正常 数字部が 0 ~ 9 以外 エラー - 71 - 備考 *は 0 ~ 9 n は整数 第4章 COBOL アプリケーションの開発について 本章では、COBOL アプリケーションの開発で考慮が必要なことを説明します。 開発者およびシステム管理者が、他のシステムから COBOL アプリケーションを移行する場合に注意すべきこと、および COBOL アプ リケーション開発時の注意事項を確認するときにお読みください。 4.1 開発のポイント 本節では、PowerRDBconnector を使用した COBOL アプリケーションの開発について説明します。 COBOL アプリケーションのファイルアクセス機能とデータベースで備える機能では、インターフェースやデータ属性など、機能の相違 点を考慮して COBOL アプリケーションを開発しなければなりません。特に、既存の COBOL アプリケーションを活用して開発する場 合には、本章を参照してください。 PowerRDBconnector で使用できる COBOL アプリケーションのファイルアクセス機能は、NetCOBOL が提供する機能と一部異なりま すので、事前に「2.2.1.2 COBOL アプリケーションから利用できる機能範囲」を参照して確認してください。 4.1.1 環境設定のポイント 環境設定時のポイントを説明します。 4.1.1.1 ファイル識別名について COBOL 初期化ファイルに指定するファイル識別名は、一意の名前で指定してください。 以下のような入出力文 COBOL アプリケーションでは、ASSIGN 句に指定するファイル識別名に同じ名前を使用することが多いため、 既存の COBOL アプリケーションを活用する場合には、ファイル識別名が一意になるように変更してください。 ・ 複数の SELECT 句に同一ファイル名で定義し、かつ ・ 異なったアクセスモードで定義しているアプリケーション。 4.1.1.2 データベースの照合順序について キー値およびレコードの並び順は、データベースの照合順序に依存します。照合順序の変更が必要な場合には、データベースを構 築する前に行ってください。 データベースの照合順序については、SQL Server の Books Online を参照してください。 4.1.2 データベース作成のポイント データベースの作成時のポイントを説明します。 4.1.2.1 混在項目を使用する場合 混在項目をデータベースの 1 つの列に対応付けることはできません。混在項目をデータ型毎に分割して COBOL のレコード記述項を 変更してください。変更したレコード記述項に合わせてデータベースの列を定義してください。 - 72 - 4.1.2.2 OCCURS 句、REDEFINES 句を使用する場合 最下位レベル番号の基本項目に合わせてデータベースの列を定義してください。 4.1.2.3 ビューについて COBOL アプリケーションからビューへアクセスする場合、テーブルのアクセスに比べていくつかの制限事項があります。必要に応じて データベースの構成を変更して対処してください。ビューに関する注意については、「4.2.3.2 ビューの使用について」を参照してくださ い。 4.1.2.4 列の定義について COBOL のレコード記述項の定義とデータベースの列定義が正しく対応されていないと、COBOL アプリケーションは正しく動作しませ ん。 NetCOBOL は、COBOL のレコード記述項のレコード長と、データベースで定義された列長が一致しているか、OPEN 文でチェックし ます。必ず、レコード記述項に合わせて列と、列名のサフィックスを定義してください。 レコード長が一致しない場合、NetCOBOL が以下の実行時エラーを通知します。 メッセージ番号 “JMP0310I-I” $3 “INV-LRECL” 「3.1.3.5 列定義の対応」を参照して、COBOL のレコード記述項とデータベースの定義を確認してください。 上記以外の NetCOBOL の実行時エラーについては、「5.1.1.4 COBOL アプリケーション終了時のメッセージ一覧」を参照してくださ い。 4.1.2.5 データベースで扱えないデータ値との整合性について データベースには、データ型で定義した値のみを格納できます。 ・ 数字型へは、数値のみ格納できます。 ・ 文字型へは、文字のみ格納できます。 例えば、以下のようにして、COBOL の数字項目に文字データを格納することはできません。 - 73 - 基本項目のデータ型でデータを入力してください。 なお、PowerRDBconnector では、上記の不整合なデータに対して、エラーにするか補正するかが選択できます。詳細については、「3.7 データ補正機能」を参照してください。 インデックスの作成について 4.1.2.6 RECORD KEY 句を使用してアクセスするテーブルには、必ず、RECORD KEY 句で定義したキーに対応するインデックスを CREATE INDEX 文で定義してください。インデックスを定義しないとデータ更新できません。 インデックスには、UNIQUE 制約またはプライマリー制約を推奨します。UNIQUE 制約またはプライマリーを設定しないと、キー値が重 複することがあります。キー値が重複した場合、注意が必要です。キー値が重複した場合の注意については、「4.2.3.1 キーに重複した 値がある索引ファイルについて」を参照してください。 文字コードについて 4.1.2.7 COBOL アプリケーションとデータベースで扱う文字のコード系が一致しない場合でも、PowerRDBconnector は変換しません。 ユーザー定義文字は、シフト JIS のコード系の範囲および unicode のコード系の範囲内で使用できます。 PowerRDBconnector は、unicode コード系の場合に、UTF-8 と UCS2(UTF-16)との間でコード変換を行う場合があります。文字コード 変換の注意については、「4.2.3.4 文字コード変換について」を参照してください。 SQL Server の文字コード系と、COBOL アプリケーションの文字コードの対応について以下に示します。 表 4.1 COBOL アプリケーションの実行時コード系と SQL Server の文字コード系について SQL Server の文字コード系 COBOL アプリケーションの文字コード系 種別 文字コード系 SJIS 系 NetCOBOL for .NET UTF8 系 混在系 SJIS 系 NetCOBOL for Windows UTF16 系 シフト JIS UCS2(UTF-16) USAGE 句 CHAR NCHAR X(英数字) ○ ○ N(日本語) ○ ○ X(英数字) ○(注) ○ N(日本語) ○(注) ○ X(英数字) ○ ○ N(日本語) ○(注) ○ X(英数字) ○ ○ N(日本語) ○ ○ X(英数字) ○(注) ○ N(日本語) ○(注) ○ (注)シフト JIS の範囲でしかデータが入りません。シフト JIS 範囲外のデータが入った場合、文字化けすることがあります。 文字コード系の表記は、NetCOBOL for .NET または NetCOBOL for Windows をコンパイル時に以下のオプションを選択した場合 です。 SJIS 系:RCS オプションに SJIS を指定した COBOL アプリケーション UTF8 系:RCS オプションに UTF8-UCS2 を指定した COBOL アプリケーション 混在系:RCS オプションに SJIS-UCS2 を指定した COBOL アプリケーション UTF16 系:RCS オプションに UCS2 または UTF16 を指定した COBOL アプリケーション 上の表は、シフト JIS の COBOL アプリケーションから、unicode のデータベースにアクセスできるということを示しています。 - 74 - COBOL ランタイムが補正する空白文字種別の違いがありますので、シフト JIS のときと全く同じ COBOL アプリケーションが動作でき るとは限りません。詳細は、「[後方空白補正機能の注意事項]」を参照してください。 【JIS2004 の文字コードについて】 JIS X 0213:2004 に対応した Windows の文字セット(JIS2004)でサポートされた 1 文字が 4 バイトの文字(JIS2004 固有文字)を扱う場 合について以下に示します。 ・ JIS2004 固有文字が使える環境 以下の環境で JIS2004 固有文字は使用できます。 - PowerRDBconnector がインストールされている OS が、Windows XP、Windows Server 2003、Windows Vista、または Windows Server 2008 の場合 - SQL Server 2005 ただし、データベースの問題により、JIS2004 固有文字は正しく検索できません。 - NetCOBOL V10.0.0 を使用する場合 上記の場合、COBOL の USAGE 句には、1 文字に、JIS2004 以外の 1 文字を使用する 2 倍の定義を行ってください。なおデー タベースの定義も、2 倍の定義に対応した長さを指定してください。 ・ JIS2004 固有文字が使えない環境 以下の環境では JIS2004 固有文字は使用できません。 - Windows 2000 の場合 - SQL Server 2000 の場合 - NetCOBOL V10.0.0 以外の NetCOBOL を使用する場合 上記の場合、JIS2004 で追加された文字(JIS2004 の文字セットでは、4 バイトの文字や、シフト JIS コード(JIS X 0208-1990)に存 在しない文字)をレコード内のデータに使用すると、エラーや、文字化けが生じることがあります。 また、パス名、スキーマ名、表名、列名に使用すると、エラーとなります。このため、JIS2004 で追加された文字は、使わないでくだ さい。 なお、Windows Server 2008 や Windows Vista では、JIS X 0213:2004 に対応した文字セット(JIS2004)が使用できます。 4.1.2.8 ユーティリティを使用する場合 COBOL アプリケーション以外のアプリケーションやユーティリティとテーブルを共用する際は、COBOL で扱えるデータが格納されるよ うにしてください。 ・ 符号なし数字項目および符号なし整数項目にマイナス値が格納されてしまうことがあります。 符号なし数字項目および符号なし整数項目でマイナス値は扱えません。 マイナス値の格納を制限したい場合は、データベースの機能(CHECK 制約)で可能です。 ・ 整数項目の精度(p)より大きい整数値が格納されてしまうことがあります。 整数値の範囲を制限したい場合は、データベースの機能(CHECK 制約)で可能です。 - 75 - ・ NULL 値が格納されてしまうことがあります。 NULL 値は扱えません。NULL 値が格納されないように制限したい場合は、データベースの機能(NOT NULL 制約)で NULL 値 の書込みを制限できます。 ・ 2 進項目の精度(p)より大きい整数値が格納されてしまうことがあります。 SMALLINT、INTEGER、BIGINT には以下の整数値が格納できます。整数値の範囲を制限したい場合は、データベースの機能 (CHECK 制約)で可能です。 - SMALLINT -2^15 (-32,768) から 2^15 - 1 (32,767) までの整数値 - INTEGER -2^31 (-2,147,483,648) から 2^31 - 1 (2,147,483,647) までの整数値 - BIGINT -2^63 (-9,223,372,036,854,775,808) から 2^63 -1 (9,223,372,036,854,775,807) までの整数値 ・ データ溢れが発生することがあります。 文字データをデータベースに格納する場合、データ溢れが発生することがありますので、以下の注意が必要です。データ溢れが 発生すると、COBOL の FILE STATUS に 90 を通知します。 - X 項目と CHAR または NCHAR を対応させている場合 CHAR または NCHAR に全角文字が格納されていると、データ漏れが発生します。 例えば、以下の場合に発生します。 - X(2) の X 項目に対して、CHAR(2) の全角文字'A'を READ すると X 項目を unicode(UTF-8)で扱う NetCOBOL for .NET で 3 バイトが必要となり、データ溢れが発生します。 - X(4) の X 項目に対して、NCHAR(4) の全角文字'ABCD'を READ すると 8 バイトが必要となり、データ溢れが発生しま す。 - N 項目と CHAR を対応させている場合 N 項目を unicode(UCS2)で扱う NetCOBOL for .NET でデータ溢れが発生します。 例えば、N(2) の N 項目に対して、CHAR(4) の半角文字'ABCD'を UCS2 で READ すると 8 バイトが必要となり、データ溢れ が発生します。 CHAR(p) は、半角文字だけであれば、p 文字格納できますが、全角文字を含むと、p 文字は格納できません。 NCHAR(p) は、全角文字だけで p 文字格納できます。 4.1.3 COBOL アプリケーション作成のポイント COBOL アプリケーション作成時のポイントを説明します。 4.1.3.1 トランザクションについて トランザクション区間内で OPEN 文は実行できません。また、START 文または READ 文、REWRITE 文、DELETE 文、WRITE 文の 直後にトランザクションは開始できません。トランザクションで操作するファイルは、オープンしてから入出力文を実行するまでの間に同 じセッション内でトランザクションを開始してください。 トランザクションを繰り返し実行する COBOL アプリケーションでは、トランザクションの開始、終了前後でオープン、クローズすることを 避け、全てのファイルをオープンしてからトランザクションを開始することを推奨します。 - 76 - 4.1.3.2 テーブルロック機能について テーブルロックを指定したファイルをオープンすると、強制的にトランザクションを開始するため、COBOL アプリケーションのトランザク ション制御で不具合が生じないか、以下の動作について確認してください。 ・ レコードの更新や削除、追加処理で、データベースからトランザクション確定ができないエラー(データベースのサービス停止な ど)が通知されると、オープン直後の状態に戻ります。 ・ テーブルロックを指定したファイルのオープン中は、トランザクションの操作(開始、確定、取消し)が無効となります。トランザクショ ンサブルーチンの CALL 文は何もせず、正常に復帰します。テーブルロックが有効なファイルが同じセッション内で全てクローズ された時点でデータを確定します。 ・ テーブルロック対象のファイルとレコードロック対象のファイルが混在使用されている場合、テーブルロック対象ファイルの CLOSE 文の実行タイミングによっては、レコードロック対象のファイルの複数レコードもロックされます。詳しくは、「4.2.2.3 テーブルロックの 排他制御について」を参照してください。 ・ テーブルロック区間で、“XMROTRBK”または、”COB_PRDB_TRAN” (トランザクション種別:4)サブルーチンを呼び出している と、テーブルロック区間内で更新されたデータは取り消されます。詳しくは、「3.5.3.2 テーブルロック解除時のトランザクション取消 し機能」を参照してください。 4.1.3.3 レコードロック機能について 多重動作する COBOL アプリケーションで、I-O モードでオープンし、START 文や READ 文でレコードを操作する場合、以下のように COBOL アプリケーションで対処してください。 ・ トランザクションを適用しない DYNAMIC アクセスモードの場合、START FIRST 文では、位置付けされた先頭のレコードのレコー ドロックは獲得されません。READ 文でレコードを読み込んでレコードロックを獲得してください。 ・ トランザクションを適用しない DYNAMIC アクセスモードの場合、READ 文で読み込んだレコードに対して、REWRITE 文(更新) や DELETE 文(削除)を行っても、レコードロックは解除されません。業務アプリケーションで、画面の入力待ちを行うためなど、レ コードロックを解除したい場合、START FIRST 文を実行してレコードロックを解除してください。 4.1.3.4 OUTPUT モードのオープンについて OUTPUT モードでオープンしているファイルは、同じ COBOL アプリケーション内または別の COBOL アプリケーションでオープンす ることができません。OUTPUT モードでオープンするファイルは、他の COBOL アプリケーションと共用しないようにしてください。OUTPUT モードでオープンするファイルは、テーブルロックを行ってください。 ビュー表に対して OUTPUT モードでオープンする場合は、COBOL 初期化ファイルの Truncate プロパティに導出元表名を指定して ください。 OUTPUT モードでオープンする場合の注意について、詳しくは「4.2.3.5 OUTPUT モードのオープンの使用について」を参照してくだ さい。 4.1.3.5 レコードの削除方法について レコードを削除するには、必ず DELETE 文を使用してください。レコードの先頭にバイナリデータの‘FF’を書き込んでレコード削除す ることはできません。 4.1.3.6 LOW-VALUE、HIGH-VALUE について 表意定数の LOW-VALUE、HIGH-VALUE を使用した全ての入出力文操作はできません。 - 77 - ・ LOW-VALUE、HIGH-VALUE の値を使用した WRITE 文および REWRITE 文など。 ・ LOW-VALUE、HIGH-VALUE の値をキー値とした START 文および READ 文など。 論理的にレコードを位置付けるには、以下の代替方法があります。 ・ LOW-VALUE :START ファイル名 FIRST RECORD KEY IS [データ名-1]…] ・ HIGH-VALUE:START ファイル名 FIRST ・ RECORD KEY IS [データ名-1]…] WITH REVERSED ORDER データ補正の使用有無によって、LOW-VALUE、HIGH-VALUE を指定した場合に、エラーまたは、数値の 0 に補正されます。詳細 は、「3.7.2 項目属性に違反するデータのチェックと補正」、「表 3.28 外部十進のデータチェック」、および「表 3.29 内部十進のデータ チェック」を参照してください。 4.1.3.7 使用メモリ量について PowerRDBconnector で使用するメモリ量の概算値を以下に示します。なお、計算式には、NetCOBOL やデータベース内部で獲得さ れるメモリ容量は含まれません。 ・ プロセス終了まで保持するメモリ容量 513×(セッション数、シングルセッションプログラミングの場合は 1)(単位:K バイト) ・ 使用スタック域の容量(各スレッド単位) 64 (単位:K バイト) ・ 1つのファイルをオープンする単位で CLOSE 文まで保持するメモリ容量 (データベースで定義している列名長の合計)+(レコード長×16)+(項目数×68)+(キー項目数×24)+ {項目数×(COBOL に記述している最大の列名長+ 10)+ 200}(単位:バイト) ※複合キーの場合、キー項目数とは構成している基本のキー項目の総和です。 ・ 1つのファイルをオープンする単位で OPEN 文実行時に必要なメモリ容量 (レコード長×3)+(項目数×72)+ 64,000(単位:バイト) 項目数、列名長およびキー項目の数が多いほどメモリ使用量が増加するため、必要以上にキー項目の数を増やすなどを行わないよ う注意してください。 4.1.3.8 マルチセッションプログラミングについて マルチセッションプログラミングを使用する場合、セッションサブルーチンを組み込む必要があります。このためシングルセッションプロ グラミングで記述された COBOL アプリケーションをそのままマルチセッションプログラミングでは使用できません。以下の注意点を考 慮し、必要な箇所を修正してください。 ・ マルチセッションプログラミングでは、セッションサブルーチンを使用してください。セッションサブルーチンについては、「3.2 セッ ションの制御方法」を参照してください。 - 78 - ・ トランザクションサブルーチンや認証情報登録サブルーチンの名称および記述方法を修正してください。トランザクションサブルー チンについては、「3.4.3 トランザクションの使用方法(マルチセッション)」を、認証情報登録サブルーチンについては、「3.3.3 デー タベース認証の使用方法(マルチセッション)」を参照してください。 ・ トランザクションサブルーチンでエラーが発生した場合、シングルセッションプログラミングでは強制的にプログラムが終了します が、マルチスレッドプログラミングでは、エラー通知されます。このためマルチスレッドプログラミングで、トランザクションサブルーチ ンを使用するときには、エラー処理が必要です。トランザクションサブルーチンのエラーについては、「5.1.2 トランザクションアクセ ス時のエラー情報」を参照してください。 4.1.4 性能向上のポイント 運用により性能向上させるためのポイントを説明します。 4.1.4.1 インデックスの定義 検索性能を向上させるためインデックスを作成し、索引ファイルによるファイルアクセスで最適な性能が得られます。 4.1.4.2 データ更新時のトランザクション適用 データ更新性能を向上させるには、トランザクションを適用して更新データをまとめて確定する考慮が必要です。 データベースでは、データ更新を行うと更新されたデータは、データファイルに加えて、トランザクションログファイルへも書込み処理が 行われます。 データ更新性能を向上させるには、書込み回数を減少させてください。トランザクションを適用すると、トランザクション中のデータ更新 の書込み回数が最小限に抑えられ、更新されたデータは確定することで、まとめて書き込まれます。 例えば、COBOL アプリケーションで、トランザクション開始後に、WRITE 文を 1 万回実行する毎に確定させるなどの方法があります。 テーブルロック機能を使用すると、強制的にトランザクションが適用されるため、データ更新はクローズ時に確定しますので、書込み回 数を減少させることができます。 なお、トランザクション操作を行う際の注意については、「4.2.2.3 テーブルロックの排他制御について」を参照してください。 4.1.4.3 トランザクションログファイルのディスク配置 トランザクションログファイルは、データファイルと別の物理ディスクに配置することを推奨します。 SQL Server は、データ更新を行うと更新されたデータをデータファイルに書込み、トランザクションログファイルへも書き込みます。 データファイルと別の物理ディスクに配置しないと書込みが 1 つの物理ディスクに集中するため、ディスクへの書込みが頻繁に行わ れ、性能が低下する場合があります。また、データファイルの物理ディスクにハード障害が発生した場合、トランザクションログファイル も破壊され、バックアップした時点のデータでしか復旧できなくなりなります。 - 79 - 4.1.4.4 データベース・ユーティリティの活用 順アクセスの性能(特に WRITE)は、一般にファイルシステム系製品と比較して、処理時間がかかります。大量のデータコピーを行う場 合は、PowerRDBconnector を使用せずにデータベース製品で提供されているユーティリティを活用してください。 データコピーを前提に設計されたデータベース製品のユーティリティは、そのデータベース製品で最も高速にデータコピーできるよう に設計されています。 SQL Server では、以下のユーティリティでデータを高速にコピーできます。 ・ データ変換サービス(DTS) データベースをコピーします。 ・ bcp ユーティリティ テーブルやビューをコピーします。 注意事項 4.2 本節では、「4.1 開発のポイント」で説明した開発手法が適用できない場合の注意事項を説明します。 4.2.1 トランザクションに関する注意事項 ここでは、トランザクションに関する注意事項を説明します。 4.2.1.1 トランザクションの確定、取消しを実行せずに終了した場合 COBOL アプリケーションではトランザクションの確定または取消し、およびファイルのクローズを行ってください。 トランザクションサブルーチンを使用する COBOL アプリケーションにおいて、トランザクションの確定または取消し、およびファイルをク ローズせずに COBOL アプリケーションが終了した場合、トランザクションは以下のようになります。 ・ トランザクションの確定または取消しを行わずに全てのファイルをクローズした場合、トランザクションは取り消されます。 図 4.1 トランザクションの確定、取消しを実行しない場合のトランザクション処理 ・ トランザクションを終了(確定または取消し)せず、またはファイルをクローズせずにアプリケーションが終了した場合、トランザクショ ンは取り消されます。 - 80 - 図 4.2 トランザクションの確定、取消しおよび CLOSE を実行しない場合のトランザクション処理 ・ タスクマネージャーなどで COBOL アプリケーションを強制終了した場合、データベースにより、トランザクションは取り消されます。 ・ COBOL アプリケーションが、トランザクションを終了(確定または取消し)する前に、アプリケーションエラーで中断した場合、デー タベースによりトランザクションは取り消されます。 ・ COBOL アプリケーション動作中に、データベースサービスを中断またはネットワークを中断した場合、トランザクションは取り消さ れます。 図 4.3 プログラム中断した場合のトランザクション処理 4.2.1.2 テーブルロック機能とトランザクションについて テーブルロックを指定したファイルをオープンすると、強制的にトランザクションを開始するため、テーブルロックを指定したファイルの オープン中は、トランザクションの操作(開始、確定、取消し)が無効となります。トランザクションサブルーチンの CALL 文は何もせず、 正常に復帰します。テーブルロックが有効なファイルが全てクローズされた時点でデータを確定します。 このため、できるだけテーブルロックとトランザクションを同時に使わないようお勧めします。同時に使った場合には、トランザクションは 以下のようになります。 - 81 - (1)テーブルロック開始後にトランザクションの開始が行われる場合。 テーブルロック区間に含まれるトランザクション区間内で更新されたデータの反映や、取消しは、テーブルロック解除時の更新データ の扱いと同じに扱われます。 このため、テーブルロック解除時のトランザクション取消し機能が実行されると、トランザクション区間内の更新も取り消されます。テーブ ルロックについては、「3.5.3 テーブルロック機能」を参照してください。 テーブルロックが解除されたとき、トランザクション区間が続いているようなシーケンスであっても、トランザクション開始処理は無効であ るため、トランザクションとはなっておらず、レコードロックで動作します。 図 4.4 テーブルロック開始後にトランザクションが開始された場合のトランザクション処理 (2)テーブルロック開始前にトランザクションの開始が行われる場合。 テーブルロックを開始しようとするとき、既にトランザクションが開始しているため、エラーとなります。 - 82 - 図 4.5 テーブルロック開始前にトランザクションが開始された場合のトランザクション処理 4.2.2 排他制御に関する注意事項 ここでは、排他制御に関する注意事項を説明します。 4.2.2.1 COBOL アプリケーションを終了した場合 ・ テーブルロックで強制的に開始されたトランザクションは確定されます。 トランザクションを取消す場合は、トランザクションサブルーチンのテーブルロック解除時の取消しを実行してください。 ・ テーブルロックまたはレコードロックの解放が遅れる場合があります。 このため、直後に実行する COBOL アプリケーションでタイムアウトまたは排他エラーが発生する場合があります。しばらくしてから COBOL アプリケーションを再実行してください。 4.2.2.2 削除したレコードの待合せについて UNIQUE 制約のインデックスを持つテーブルに対して、以下の条件を満たす場合には、WRITE 文でレコードロックの待ち合わせが発 生します。 ・ レコードロックを獲得し、かつ、レコードを削除する場合。 ・ レコードロックを解放していない状態にて、他のセッションやアプリケーションから削除したレコードと同一のキー値に対し、レコード の書き込みを行う場合。 4.2.2.3 テーブルロックの排他制御について テーブルロックを使用するセッションは、ファイルの OPEN 文で強制的にトランザクションを開始して CLOSE 文でトランザクションを確 定することでテーブルロックを実現します。テーブルロックの排他制御で動作するトランザクションについて、以下の注意があります。 ・ トランザクションは、テーブルロックが有効なファイルが全てクローズされるまで確定しません。(「参考例 2」を参照してください。) - 83 - ・ 排他モードが変化しない場合があります。 例えば、1つのアプリケーションで、ファイル A をオープン中に、ファイル B を I-O オープン(Exclusive)した後、一旦クローズして INPUT オ ー プ ン (Share) し て も 、 先 に 排 他 モ ー ド が 強 い Exclusive( 占 有 モ ー ド ) で ロ ッ ク さ れ て い る た め 、 フ ァ イ ル B は、 Exclusive(占有モード)のままとなります。(「参考例 3」を参照してください。) ・ テーブルロックを指定したファイルのオープン中に、テーブルロックを指定しないファイルを操作する場合、テーブルロックの強制 的なトランザクションに従って操作されます。 (「参考例 4」を参照してください。) 参考として、1つのアプリケーションが1つまたは2つのファイルを使用した入出力文操作順序の組合せによるトランザクション区間の遷 移を示します。 トランザクション区間は以下の表記です。 図 4.6 参考例 1)1 ファイルの単純な入出力操作の場合 図 4.7 参考例 2)トランザクション区間がファイル A の入出力操作に依存する場合 ファイル A のオープン中にファイル B がオープンされるため、テーブルロックはテーブルロック対象の全てのファイルがクローズす るまで区間が延長されます。 - 84 - 図 4.8 参考例 3)排他モードが変化しない場合 1つのアプリケーションで、ファイル A をオープン中に、ファイル B を I-O オープン(Exclusive)した後、INPUT オープン(Share)して も、先に排他モードが強い Exclusive(占有モード)でロックされているため、ファイル B は、Exclusive(占有モード)のままとなります。 図 4.9 参考例 4)テーブルロック対象のファイル A と、テーブルロック対象のファイル B が混在する場合 ファイル A のオープン中にファイル B がオープンされるため、テーブルロックはテーブルロック対象の全てのファイルがクローズす るまでトランザクション区間が延長されます。 4.2.2.4 デッドロック状態について テーブルロックまたはレコードロックを使用する場合、処理順序によっては、他のセッションや他のアプリケーションとたすき掛けとなり、 デッドロック状態となることがあります。 ・ テーブルロックの例 以下の処理順序でデッドロックが発生します。 1. 先行アプリケーションが A テーブルをテーブルロックし、B テーブルをテーブルロックしません。 - 85 - 2. 後行アプリケーションが A テーブルをテーブルロックしないで、B テーブルをテーブルロックします。 3. 先行アプリケーションが B テーブルに対して、以下のいずれかの操作を行います。 WRITE/REWRITE/DELETE/OUTPUT OPEN 4. 後行アプリケーションが A テーブルに対して、以下のいずれかの操作を行います。 WRITE/REWRITE/DELETE/OUTPUT OPEN ・ レコードロックの例 複数プロセスで、同じテーブルのレコードを READ する場会、トランザクションが継続している間は、I-O オープンで READ した行 はロックされたままとなっているため、別のレコードを READ すると、デッドロックが発生することがあります。 ・ マルチセッションプログラムの例 マルチセッションプログラムの場合、1つのプログラムでも異なるセッションアクセスするため、テーブルロックやレコードロックによる デッドロックが発生します。 4.2.3 COBOL アプリケーションに関する注意事項 ここでは、COBOL アプリケーションに関する注意事項を説明します。 4.2.3.1 キーに重複した値がある索引ファイルについて 索引ファイルのキーに重複した値がある場合は、以下の注意が必要です。 ・ キーに重複した値があるレコードの並び順は格納順になりません。 データベースの制御上の順番となるためです。 ・ キーを指定した更新や削除は行わないでください。 キーを指定して更新または削除を行うと、データベースから検索された同一キーのレコードのうち、最初のレコードが更新または削 除されます。この場合、対象のレコードは、データベースの並び順に依存し、利用者からは特定できないためです。 ・ キーに重複した値があるレコードに対し、操作中に読取り方向を変更しないでください。 読取り方向を変更すると、データベースへ再度検索を行います。このとき、重複したキーのレコードがデータベースの並び順で検 索されます。このため、読取り方向変更前に読み取った順序の逆順に読み取れない場合があります。 4.2.3.2 ビューの使用について ビューを使用する場合、以下の注意が必要です。 ・ 結合ビューおよび UNION 結合ビューは、更新できません。 ・ OUTPUT モードでオープンできません。ただし、COBOL 初期化ファイルの Truncate プロパティを使用することで可能となります。 ・ 関数、副問合せなどが定義されたビューには、アクセスできません。 ・ ビューを構成するテーブルの列属性を変更した場合、ビューを 1 度削除して再作成してください。 4.2.3.3 レコードの格納位置について WRITE 文でレコードを追加した場合、レコードはテーブルの最後に格納されるとは限りません。データベースの仕様に依存します。順 編成ファイルに対して、書込み順どおりに読み込まれない場合があります。 - 86 - 4.2.3.4 文字コード変換について データベースに格納される文字コードは、データベースのテーブル定義または設定で異なります。特殊文字、ユーザー定義文字など の文字セットに注意してください。 ・ PowerRDBconnector は、Interstage Charset Manager の文字コード変換プログラムは使用しません。 ・ unicode とシフト JIS の文字セット間のコード変換は、PowerRDBconnector では行っていません。 4.2.3.5 OUTPUT モードのオープンの使用について OUTPUT モードでテーブルまたはビューをオープンする場合、以下の注意事項があります。 ・ OUTPUT モードで OPEN 文を実行する COBOL アプリケーションを起動するユーザーについては、データベースロール に“db_ddladmin”を設定してください。 ・ OUTPUT モードでオープンしたファイルに対して、2 重にオープンすることはできません。 ・ OUTPUT モードでオープン直後から最初の入出力文までは、テーブルロックを使用した状態になります。 ・ COBOL 初期化ファイルの Truncate プロパティを使用することで、ビューを OUTPUT モードでオープンすることができます。 ・ テーブルロック対象のテーブルを OUTPUT モードでオープンした場合、トランザクションの適用有無に関わらず、ファイルをクロー ズせずに COBOL アプリケーションを終了するとデータは初期化され、COBOL アプリケーション終了直前までに WRITE 文が成 功したレコードを格納します。 ・ レコードロック対象のテーブルを OUTPUT モードでオープンした後にトランザクションを開始後、1 度もトランザクションを確定せず に、トランザクションを取消しまたは COBOL アプリケーションを終了した場合、テーブルのデータは初期化されず、オープン前の データに戻ります。 4.2.4 マルチスレッド使用時の注意事項 ここでは、マルチセッションプログラミングを使用したマルチスレッドプログラムの開発についての注意事項を説明します。 4.2.4.1 マルチスレッドプログラムについて マルチスレッドプログラムについての主な注意点を以下に示します。 ・ マルチスレッドプログラムは、多重動作時のプログラムのデバッグが、プロセスプログラムより難しくなります。 ・ プロセスプログラムは、エラーが発生したプロセスだけが影響を受け、他のプロセスには影響がおよびません。しかしマルチスレッ ドプログラムは、1つのスレッドでエラーが発生すると、同じプロセス内の他のスレッドにも影響がおよぶことがあります。 例えば、マルチスレッドプログラムが多重動作している場合、1つのスレッドで、プログラムを中断してしまうと、同じプロセスの他の スレッドも中断されてしまいます。 このため、特にエラー処理を注意して開発してください。 ・ マルチスレッドプログラムでは、共有資源(静的な変数、カレントパスなど)を各スレッドが操作する場合は、共有資源に矛盾が生じ ないように、スレッドをロックする必要があります。 ・ マルチスレッドプログラミングの場合、スレッドのスタック域がアプリケーションで規定された値を超えないように考慮する必要があり ます。PowerRDBconnector は、スタック域として64KB を使用します。 4.2.4.2 スレッドとセッションの関係について マルチセッションプログラミングを用いて、マルチスレッド環境で動作させた場合の、スレッドとセッションの関係について以下に示しま す。なお、例では、次の記号を使用しています。 ・ COB_PRDB_START SES1:COB_PRDB_START サブルーチンを使用し、SES1 というセッションを開設します。 - 87 - ・ COB_PRDB_END SES1:COB_PRDB_END サブルーチンを使用し、SES1 というセッションを閉設します。 図 4.10 例 1 1つのプログラムをシングルスレッドで動作させる場合 コンソールアプリケーションや、シングルセッションプログラムを単純にマルチセッションプログラムに変更した場合、上図のよう になります。 図 4.11 例 2 同じプログラムを複数のスレッドで動作させる場合 例 1 のプログラムが複数のスレッドで動作した場合、上図のようになります。 マルチスレッドプログラミングで、スレッド間で同じ COBOL 言語のファイル結合子を共有する方法は、翻訳オプションに SHREXT を 指定した上で以下のいずれかの指定をしてください。 ・ スレッド間共有外部ファイル(EXTERNAL 句) ・ 静的に定義したファイル(STATIC) ・ オブジェクト内に定義したファイル(OBJECT) 以下に、スレッド間共有外部ファイル(EXTERNAL 句)を使った例を示します。その他の場合は、「NetCOBOL のマニュアル」を参照し てください。 例 3 スレッド間でファイルを共有する場合 OPEN 文、CLOSE 文およびアクセス文が異なるプログラムの場合。 - 88 - 図 4.12 アクセスするスレッドが1つの場合 図 4.13 アクセスするスレッドが複数の場合 ※)この場合、スレッド 2 の READ 文とスレッド 3 の WRITE 文は同時に実行されず、先に実行した文の終了を待って次の文が実行さ れます。 例 4 スレッド間でファイルを共有する場合(使用できない例) 1つのセッションを使用し、OPEN 文、CLOSE 文およびアクセス文が異なるプログラムの場合。 EXTERNAL 句の宣言がないため、同じファイルに対してスレッドをまたがってアクセスできません。 図 4.14 スレッド間でファイルを共有する場合(使用できない例) 4.2.4.3 セッションとトランザクションの関係について マルチセッションプログラミングを用いて、マルチスレッド環境で動作した場合の、スレッドとセッションおよびトランザクションの関係に ついて以下に示します。なお、例では、次の記号を使用しています。 ・ COB_PRDB_START SES1:COB_PRDB_START サブルーチンを使用し、SES1 というセッションを開設します。 - 89 - ・ COB_PRDB_END SES1:COB_PRDB_END サブルーチンを使用し、SES1 というセッションを閉設します。 ・ COB_PRDB_TRAN SES1:COB_PRDB_TRAN サブルーチンを使用し、SES1 というセッションを指定します。 例 1 トランザクション区間が1つのスレッドに閉じる場合 単純な COBOL プログラムの場合、データベースにアクセスする部分は1つのスレッドで行われます。この場合の例を示します。 図 4.15 トランザクション区間が1つのスレッドに閉じる場合 4.2.5 リモートのデータベースアクセスに関する注意事項 ここでは、リモートのデータベースに対して COBOL アプリケーションからアクセスする場合についての注意事項を説明します。 4.2.5.1 大量のレコードアクセスについて リモートデータベースに COBOL アプリケーションから、アクセスする場合、レコード 1 件毎にネットワークを通じたアクセスが発生しま す。このため大量のレコードアクセスを行うと、以下の影響が発生します。 ・ ネットワーク負荷の増加 ・ レコードアクセス性能の劣化 上記のため、大量のレコードアクセスを行うバッチ型のアプリケーションは、データベースを格納したコンピュータ上で実行してくださ い。 4.2.5.2 セキュリティについて リモートデータベースにアクセスする場合、データ内容がネットワーク上で通信されます。このため、ネットワーク上のセキュリティの確保 が必要です。 データベース認証を行う場合は、COBOL アプリケーション内で、ユーザー名、パスワードの管理についてのセキュリティを確保してく ださい。 例) ・ 認証情報登録サブルーチンに使用する、ユーザー名、パスワードは、COBOL アプリケーション実行時に、ユーザーから入力して もらう。 ・ 認証情報登録サブルーチンの使用後は、ユーザー名、パスワードの領域を、空白データなどで初期化する。 ネットワーク上は、データベース、Windows やその他の製品が備えているセキュリティ機能を使用して、セキュリティの確保を行ってく ださい。 - 90 - - 91 - 第5章 エラー時の対処 本章では、PowerRDBconnector 使用時に発生したエラーの原因と対処、およびトレース機能について説明します。エラーが発生した ときにお読みください。 5.1 エラー時の対処 本節では、エラー発生時の対処について説明します。 エラー発生時は、エラー情報をアプリケーションログに出力します。アプリケーションログは、Windows のイベントビューアで参照できま す。 ファイルアクセスでエラーが発生した場合は、COBOL アプリケーションに FILE STATUS を通知します。なお、FILE STATUS の入出 力状態値がエラーでも PowerRDBconnector のエラー情報が出力されていない場合は、NetCOBOL でエラーを検出した可能性があ ります。その場合は、NetCOBOL のマニュアルを参照してください。 以下の手順を参考に対処してください。 アプリケーションの状態を確認します。 COBOL アプリケーションのアクセスで エラー発生 FILE STATUS の入出力状態値を確認します。 使用しているデータベース、テーブル、ビューを特定します。 ↓ アプリケーションログを確認します。 アプリケーションログ の確認 エラー情報(エラーコードとエラー詳細コード)から原因を調査しま す。「5.1.1.3 ファイルアクセス時のエラーコード一覧」、「5.1.2.2 トラン ザクションアクセス時のエラーコード一覧」、「5.1.3.2 認証情報登録 サブルーチンのエラーコード一覧」、および「5.1.4.2 セッションサブ ルーチンのエラーコード一覧」を参考に調査してください。 エラー情報にメッセージが含まれる場合は、データベースの実行環 境を調査してください。 ↓ データベースの実行環境を確認します。 データベースの確認 アプリケーションログに出力されているメッセージを参考に、使用し ているファイル(テーブル、ビューおよびインデックス)が使用可能な 状態か、SQL Server の保守機能(SQL プロファイラ等)を使用して動 作状況を調査します。SQL Server の Books Online を参考に対処し てください。 ↓ エラーが再現する場合、エラーログおよびトレース情報を採取しま す。 エラーログ、トレース情報の採取と調査 トレース情報を調査し、COBOL アプリケーションを調査してくださ い。トレース情報については、「5.2 トレース出力機能」を参照してく ださい。 エラーログは、内部情報です。当社技術員からの依頼により採取し てください。 - 92 - 5.1.1 5.1.1.1 ファイルアクセス時のエラー情報 ファイルアクセス時のイベントログ情報 ファイルアクセス時にエラーが発生すると、以下の形式でエラー情報が出力されます。 表 5.1 ファイルアクセス時のイベントログ情報 出力先 アプリケーションログ ソース FSP_RDBCONNECTOR_FJSVDBIO 出力形 式 <process id> プロセス ID。 <thread id> スレッド ID。 <function name> エラーが発生した関数名。 <error code> エラーコード。 <error code1> エラー詳細コード 1。 <error code2> エラー詳細コード 2。 <error code3> エラー詳細コード 3。 <error code4> エラー詳細コード 4。 <table name> エラーが発生したテーブル名またはビュー名を出力します。※ PowerRDBconnector 動作環境ファイルおよび COBOL 初期化ファ イルが正しく設定されていない場合には通知されません。 <column name> エラーが発生した列名を出力します。※ <parameter name> エラーが発生した PowerRDBconnector 動作環境ファイルのプロパ ティ名を出力します。※ <database message> SQL Server から通知されたメッセージを出力します。 SQL Server でエラーが検出された場合に出力します。SQL Server の Books Online を参照して調査してください。 SQL Server でエラーが発生していない場合には、メッセージは出力 されません。 ※:エラー内容によっては、出力されないことがあります。 出力例 - 93 - イベントログに出力されないエラー情報 5.1.1.2 以下の FILE STATUS が通知された場合は、アプリケーションログにエラー情報は出力されません。 表 5.2 アプリケーションログに出力されないエラー情報 意味 FILE STATUS iserrno 10 110 EOF が検出されました。 22 100 キー値に重複データが検出されました。 23 111 目的のレコードが見つかりません。 ファイルアクセス時のエラーコード一覧 5.1.1.3 FILE STATUS 句を指定したアプリケーションについて、ファイルアクセス時のエラーコードを以下に示します。ただし、NetCOBOL で エラーを検出するコードについては、iserrno、isstat は通知されません。 表 5.3 ファイルアクセスエラーコード一覧 FILE STAT iserrno US 10 進数 error code 意味 isstat 1 2 3 4 ・ EOF が検出されました。 10 110 ‘1’ 0x30 ‘1’ 0x30 されました。 100 ‘2’ 0x32 ‘2’ 0x32 ・ WRITE 文 、 REWRITE 文 で重複するキー値を指定し ないでください。 に存在していません。 ‘2’ 0x33 ‘2’ はテーブルの UNIQUE 属 性を外してください。 文の実行時に、同じキー値が テーブルに存在していまし た。 ・ 指定されたキー値がテーブル 111 ・ 重複するキー値を扱う場合 ・ WRITE 文または REWRITE ・ 目的のレコードがありません。 23 ・ 対処は特にありません。 ※エラー情報はアプリケーション ログに出力されません。 ・ キー値に重複データが検出 22 対処 0x33 ※エラー情報はアプリケーション ログに出力されません。 ・ 入 出 力 文 COBOL ア プ リ ケーションの START 文またはキー付き READ 文、REWRITE 文、 DELETE 文に指定している キー値がテーブルにあるか 確認してください。 ※エラー情報はアプリケーション ログに出力されません。 ・ メモリ領域獲得に失敗しまし 30 ― ― ― ― ― ・ メモリを増設してください。も しくは、仮想メモリ(スワップ) を増やしてください。 た。 - 94 - FILE STAT iserrno US 10 進数 error code 意味 isstat 1 2 3 4 ・ ファイルが多すぎます。 ・ ハンドルに誤りがあります。 ・ OPEN 文で指定されたテー ブルが存在しません。 ・ COBOL 初 期 化 フ ァ イ ル の 35 37 2 ― ‘0’ ― 0x00 ― ‘0’ ― 0x00 ― SchemaName 、 TableName プロパティに存在しないス キーマ名、テーブル名が指定 されています。 ― ― ― ― ― 0x00 ‘0’ 0x00 ・ ファイル属性に一致しないア ・ 当社技術員に連絡してくだ クセスがありました。 ・ COBOL 初期化ファイルで め、ファイルのオープンがで きません。 指定したファイル属性と、 ファイル属性とが一致するよ うにしてください。 ん。 ・ 索引ファイルのキー項目に対 ・ 索引ファイルのキーの属性 する属性(オフセット、大きさ、 WITH DUPLICATES 等)が 一致しません。 が、ファイルと一致するよう にしてください。 ・ RANDOM アクセスモードで ・ COBOL 初期化ファイルと、 ・ トランザクションを開始後、 ・ その他の内部エラーが発生 しました。 5 ‘0’ 0x00 ‘1’ 0x00 90 5 ‘9’ 0x02 ‘9’ 0x02 90 5 ‘9’ 0x03 ‘9’ 0x03 ・ 未サポートのコード系が指定 されました。 ・ 入出力エラーが発生しまし た。 ・ 入出力エラーが発生しまし た。 ‘0’ 0x00 ‘0’ 0x00 ・ トランザクション開始後、 OPEN 文を実行していない か確認してください。 ・ 当社技術員に連絡してくだ さい。 ・ COBOL の翻訳オプションを 確認してください。 ・ 当社技術員に連絡してくだ ・ 当社技術員に連絡してくだ さい 動されていません。 6 COBOL ソース中のアクセス モードの指定が同じである か確認してください。 さい ・ データベースのサービスが起 90 さい。 ・ ファイル属性に一致しないた OPEN 文を実行しました。 90 指定したスキーマ名、テー ブル名を確認し、適切なス キーマ名、テーブル名に修 正してください。 スまたは他のセッションで OUTPUT オープンされてい ないか確認してください。 キー指定がありません。 ‘0’ ・ COBOL 初期化ファイルに ・ 対象テーブルが他のプロセ ・ DYNAMIC アクセスモードで 5 ください。 ションで OUTPUT オープン されています。 キー指定がありません。 90 ・ アプリケーションを見直して ・ 他のプロセスまたは他のセッ ・ ファイル編成が一致しませ 39 対処 ・ データベースにアクセスする ための権限がありません。 - 95 - ・ データベースのサービスが 起動されているか確認して ください。 ・ データベースにアクセスす るための権限があるか確認 してください。 FILE STAT iserrno US 10 進数 error code 意味 対処 ・ データベースにログイン情報 ・ データベースに Windows isstat 1 2 3 4 が登録されていません。 認証のログイン情報が登録 されているか確認してくださ い。 ・ PowerRDBconnector 動作環 ・ サーバ環境または動作環境 境ファイルの ServerName プ ロパティで指定されたサーバ が見つかりません。 の設定を確認してください。 ・ PowerRDBconnector 動作環 境ファイルの DataSourceName プロパティ で指定されたデータベースが 見つかりません。 90 9 ‘0’ 0x00 ‘0’ 0x00 90 12 ‘0’ 0x00 ‘0’ 0x00 ・ 可変長レコード形式が指定さ れました。 ・ メモリが不足しています。 90 13 ‘0’ 90 14 ‘9’ 90 22 ‘0’ 0x00 ‘0’ 0x00 ‘9’ 0x00 ‘0’ 0x00 0x00 0x00 ‘9’ 0x34 ‘9’ 0x34 ・ OS、データベースのメモリ設 ・ データベースまたはスキー ・ データベースまたはスキー マ、テーブルに対するアクセ ス権限がありません。 マ、テーブルの権限設定を 確認してください。 ・ OUTPUT オープンするユー ・ ユーザーのデータベース ザーのデータベースロール に db_ddladmin が設定されてい ません。 ロールを確認してください。 ・ ファイルディスクリプタが正し ・ 当社技術員に連絡してくだ くありません。 さい。 ・ 1 テーブル内の列名長の合 ・ テーブルおよびビューを作 計(最大合計列名長)が半角 40,960 文字または全角 20, 480 文字を超えました。 成する際、列名の長さの合 計が、半角 40,960 文字ま たは全角 20,480 文字以下 で定義してください。 ・ サポートしていないデータ ・ 接続先データベースを確認 ベースへ接続しようとしまし た。 データベースと異なるデータ ベースに接続しようとしまし た。 22 ているか確認してください。 定環境を見直し、適切に対 処してください。 ・ インストール時に選択した 90 ・ 固定長レコード形式になっ してください。 ・ 接続先のデータベースとイ ンストール時に選択したデー タベースを確認してくださ い。 ・ COBOL のデータ型とテーブ ・ テーブル定義およびテーブ ルのデータ型で一致していな いものがあります。 ルに格納されているデータ を確認し、「3.1.3.5 列定義の 対応」を参照して適切なテー ブル定義に修正してくださ い。 ・ テーブルの列名に誤りがあり ます。 ・ 未サポートのデータ型の列が 存在します。 - 96 - FILE STAT iserrno US 10 進数 error code 意味 対処 ・ 符号なしのデータ型で定義さ ・ テーブルの列属性および れる列に符号付きのデータを 書き込もうとしました。 テーブルに格納されている データの確認をしてくださ い。テーブルの列属性につ いては、「3.1.3.5 列定義の 対応」を参照してください。 isstat 1 2 3 4 ・ 未サポートのデータ型のデー タを検出しました。 ・ 文字コード変換に失敗しまし た。 90 22 ‘9’ 0x35 ‘9’ の扱いについては、「3.7.2 項目属性に違反するデータ のチェックと補正」を参照し てください。 0x35 ・ 使用できないキー値が入力さ れました。 90 101 ‘9’ 0x00 ‘9’ 0x00 90 101 ‘9’ 0x00 ‘9’ 0x32 90 102 ‘9’ 0x00 ‘1’ 0x00 90 102 ‘9’ 0x00 ‘2’ 0x00 ‘9’ 0x00 ‘3’ 確認してください。 ・ COBOL またはテーブルの テーブルの定義長を超えて います。 定義長を確認してください。 ・ ファイルディスクリプタが正し ・ 当社技術員に連絡してくだ くありません。 ・ ファイルディスクリプタが正し くありません。 ・ COBOL 初期化ファイルの読 込みに失敗しました。 さい。 ・ 当社技術員に連絡してくだ さい。 ・ 環境設定が正しいか確認し てください。 ・ COBOL 初期化ファイルの設 ・ COBOL 初期ファイルの指 定値の文字列長が規定の長 さを超えています。 定内容を見直して、適切に 対処してください。COBOL 初期化ファイルについては、 「3.1.5 COBOL 初期化ファ イル」を参照してください。 ロパティ名に誤りがあります。 102 ・ キー値に指定するデータを ・ データ長が COBOL または ・ COBOL 初期化ファイルのプ 90 ・ 項目属性に違反するデータ ・ COBOL 初期化ファイルの 0x00 AccessMode 、 SchemaName 、 TableName プロパティに値が指定されて いません。 ・ COBOL 初期化ファイルのプ ロパティに指定した値に誤り があります。 90 102 ‘9’ 0x00 ‘4’ 0x00 ・ AccessMode が指定されてい ません。 ・ スキーマ名またはテーブル名 が指定されていません。 90 103 ‘9’ 0x00 ‘9’ 0x00 ・ 指定したキーの構成とアクセ ・ 指定するキー構成および スするインデックスの構成が 一致しません。 テーブルのインデックス構成 を見直し、適切なキーを設 定してください。 ・ SQL Server でサポートされて いるインデックスの構成列数 の上限値(16)を超えていま す。 - 97 - FILE STAT iserrno US 10 進数 error code 意味 isstat 1 2 3 対処 4 ・ キーの構成にサポートしてい ないデータ型が含まれていま す。 90 104 ‘9’ 0x02 ‘9’ 0x02 90 116 ‘9’ 0x00 ‘9’ 0x00 ・ 1 プロセス(シングルスレッド) ・ 最大オープン数が 128 を超 で可能な最大オープン数 128 を超えました。 えないように COBOL アプリ ケーションの内容を確認して ください。 ・ メモリが不足しています。 定環境を見直し、適切に対 処してください。 ・ 製品が正しくインストールされ ていません。 ・ その他のエラーが発生しまし 90 255 ‘0’ 0x00 ‘0’ 0x00 た。 255 ‘0’ 0x00 ‘1’ 0x00 ・ PowerRDBconnector 環 境 ファイル内の ErrorLog プロ パティで指定したディレクトリ の権限などを確認してくださ い。 0x00 ‘2’ 0x00 90 255 ‘0’ 0x00 ‘3’ 0x00 ・ Windows のシステムフォル DSN(F3BWSDSN.dsn)が Windows のシステムフォルダ から削除されました。 ダにファイル DSN(F3BWSDSN.dsn) が 存在するか確認してくださ い。 ・ PowerRDBconnector 動作環 ・ PowerRDBconnector 動 作 境ファイル名が誤っていま す。 環境ファイルの設定を確認 してください。 PowerRDBconnector 動 作 環境ファイルについては、 「3.1.4 PowerRDBconnector 動作環境ファイル」を参照し てください。 ・ PowerRDBconnector 動作環 ‘0’ ・ 当社技術員に連絡してくだ ラーが発生しました。 この場合、トレース情報は採 取されません。処理は続行さ れます。 境ファイルの読込みに失敗し ました。 255 されているか確認してくださ い。 ・ トレース情報の書込みでエ ・ PowerRDBconnector 動作環 90 ・ 本製品が正しくインストール さい。 ・ ファイル 90 ・ OS、データベースのメモリ設 境ファイルの設定値の文字列 長が規定の長さを超えていま す。 ・ PowerRDBconnector 動作環 境ファイルのキーワードに誤 りがあります。 ・ PowerRDBconnector 動作環 境ファイルで指定された値に 誤りがあります。 ・ COBOL 初期化ファイルの設 90 255 ‘0’ 0x00 ‘4’ 0x00 定内容に誤りがあります。 ・ Truncate で指定されたテー ・ COBOL 初期化ファイルの 設定内容を確認してくださ い。 ブルが見つかりません。 ・ インストール時のデータベー ス種別に誤りがあります。 - 98 - ・ インストール時のデータベー ス種別を、システム環境変 FILE STAT iserrno US 10 進数 error code 意味 isstat 1 2 3 対処 4 数“RDBCONNECTOR”で 確認してください。誤ってい た場合には、本製品をアン インストール後、正しいデー タベース種別を指定してイ ンストールしてください。 90 255 ‘0’ 0x00 ‘5’ 0x00 ・ PowerRDBconnector 動作環 ・ PowerRDBconnector 動 作 境ファイルが、シフト JIS また は UTF-8 以外のコード系で 作成されています。 環境ファイルは、シフト JIS または UTF-8 のコード系で 作成してください。 ・ データベースでエラーが発生 ・ SQL Server の動作環境を しました。 ・ COBOL のデータ型とデータ ・ RECORD KEY 句にあたる ベースの列定義が異なって います。 列にインデックスまたはプラ イマリキーを定義してくださ い。 ・ RECORD KEY 句にあたる列 にインデックスまたはプライマ リキーが定義されていません。 90 255 ‘0’ 0x00 ‘6’ 0x00 確認してください。 ・ ビューを OUTPUT モードで ・ ビューを OUTPUT モードで オープンしていないか確認 してください。 オープンしました ・ PowerRDBconnector 動作環 ・ レコードロックの獲得状態を 境ファイルの TimeOut プロパ ティに指定した時間を超え て、タイムアウトを検出しまし た。 確認してください。レコード ロックについては、「3.5.2 レ コードロック機能」を参照し てください。 ・ SQL Server の動作環境を 確認してください。 ・ セッション開設は既に実行さ れています。 90 255 ‘0’ 0x00 ‘8’ 0x00 ・ シングルセッションプログラミ ・ セッション開設およびセッショ ン閉設のシーケンスを確認 してください。 ングの処理が動作中に、セッ ション開設が実行されました。 90 255 ‘0’ 0x00 ‘9’ 0x00 90 255 ‘0’ 0x00 ‘2’ 0x11 90 255 ‘0’ 0x00 ‘3’ 0x11 90 255 ‘0’ 0x00 ‘4’ 0x0C ・ オープン中のファイルが残っ ・ ファイルを全てクローズ後に ている状態で、セッション閉設 が実行されました。 セッション閉設を行ってくだ さい。 ・ トランザクション開始時のシー ・ トランザクションサブルーチ ケンスに誤りがあります。 ・ トランザクションが開始されて いません。 ・ メモリが不足しています。 ン呼出し前に OPEN 文以 外の文が実行されていない か確認してください。 ・ トランザクションサブルーチ ンの呼出し順序が正しいか 見直してください。 ・ OS、データベースのメモリ設 定が適切か見直してくださ い。 - 99 - FILE STAT iserrno US 10 進数 error code 意味 対処 ・ トランザクションサブルーチン ・ SQL Server のエラー情報を isstat 1 2 3 4 90 255 ‘0’ 0x00 ‘4’ 0x06 90 255 ‘0’ 0x00 ‘1’ 0x01 90 255 ‘0’ 0x00 ‘1’ 0x02 実行時にデータベースでエ ラーが発生しました。 ・ サブルーチン実行時のパラ メーターに誤りがあります。 ・ パラメーターで指定した文字 列長が正しくありません。 ・ OUTPUT モードでオープン したファイルを、再度オープ ンしました。 92 11 ‘9’ 0x02 ‘9’ 0x02 確認してください。 ・ パラメーターが正しいか確認 してください。 ・ 指定した文字列長が 256 バ イト以内か確認してください。 ・ COBOL アプリケーションの 内容を確認してください。 ・ オープンしたファイルを、 OUTPUT モードで再度オー プンしました。 92 11 ‘9’ 0x03 ‘9’ 0x03 92 107 ‘0’ 0x00 ‘0’ 0x00 ・ 他のプロセスまたは他のセッ ・ 他のプロセスまたは他のセッ ションがテーブルロックでオー プンしています。 ションがテーブルロックで オープンしていないか確認 してください。 ・ デッドロックが発生しました。 ・ COBOL アプリケーションの 内容を確認してください。 ・ 既にオープンされているファ 92 ― ― ― ― ― イルに対してオープンが発行 されました。 ・ オープン、クローズの順番を 調査してください。 ・ ファイルがクローズされていま せん。 93 ― ― ― ― ― ・ ファイルが有効ではありませ ん。 ・ 当社技術員に連絡してくだ さい。 ・ ファイル属性に一致しないた ・ COBOL 初期化ファイルで め、ファイルのオープンがで きません。 指定したファイル属性と、 ファイル属性とが一致するよ うにしてください。 ・ ファイル編成が一致しませ ん。 94 ― ― ― ― ― ・ 索引ファイルのキー項目に対 ・ 索引ファイルのキーの属性 する属性(オフセット、大きさ、 WITH DUPLICATES 等)が 一致しません。 が、ファイルと一致するよう にしてください。 ・ ファイルをオープンするため ・ メモリを増設してください。も のメモリが不足しています。 ・ 指定したファイル名に誤りが あります。 - 100 - しくは、仮想メモリ(スワップ) を増やしてください。 ・ ファイル名に無効な文字が 含まれていないか確認して ください。 5.1.1.4 COBOL アプリケーション終了時のメッセージ一覧 FILE STATUS 句を指定しないアプリケーションで、ファイルアクセス時にエラーが発生した場合など、COBOL アプリケーションが中断 するレベルのエラーが発生した場合、COBOL ランタイムシステムがメッセージを出力します。以下に代表的なメッセージを示します。 なお、出力形式、対処など詳細については「NetCOBOL のマニュアル」の実行時エラーを参照してください。 表 5.4 COBOL の実行時エラーメッセージの例 メッセージ JMP0310I-I/U ’$2’ファイルで’$1’エラーが発生しまし た.’$3’ エラー内容 $3 ACCMETHOD ファイルのアクセス方法が誤っています。 ERFLD=xxxx 入出力ファイルのアクセスエラーが発生しまし た。 $1:OPEN または CLOSE xxxx:16 進表記 $2:アクセス名またはファイル名 xxxx:ファイルアクセス時のエラーコード PowerRDBconnector 使用時は、iserrno の値が 設定されます。 JMP0320I-I/U REC-MODE レコード形式に誤りがあります。 INV-KEYDUP キーの重複可否(DUPLICATES)に誤りがありま す。 INV-KEYLEN 割り当てられたファイルのキー長がプログラムで の定義と矛盾します。 INV-LRECL 割り当てられたファイルのレコード長がプログラ ムでの定義と矛盾します。 INV-KEYRCS 割り当てられたファイルのキーのコード系がプロ グラムの動作コード系と矛盾します。 KEY-ATTR 割り当てられたファイルのキー属性がプログラム での定義と矛盾します。 FDBK=xxxx 入出力ファイルのアクセスエラーが発生しまし た。 ’$2’ファイルに対する’$1’文の実行で,入 出力エラーが発生しました. $1:COBOL 文 $2:ファイル名またはアクセス名 JMP0321I-U ’$1’ファイルに対する READ 文の実行 で,ファイル終了条件が発生しました. xxxx:16 進表記 INV-LEN WRITE/REWRITE 文でレコード長が正しくあり ません ファイルの終端(EOF)まで読み込みが終わりま した。 $1:ファイル名またはアクセス名 JMP0323I-U キーの値が重複しています。 ’$2’ファイルに対する’$1’文の実行で,重 複キーによる誤りが発生しました.$3 $1:COBOL 文 $2:ファイル名またはアクセス名 JMP0324I-U 求めるレコードが見つかりません。 ’$2’ファイルに対する’$1’文の実行で,求 めるレコードが見つかりません.$3 $1:COBOL 文 $2:ファイル名またはアクセス名 - 101 - メッセージ エラー内容 $3 キーが無効です。 JMP0327I-U ’$2’ファイルに対する’$1’文の実行で,無 効キー条件が発生しました.’$3’ $1:COBOL 文 $2:ファイル名またはアクセス名 JMP0330I-I/U AT-END ’$2’ファイルの’$1’文で,実行順序の誤り が発生しました.’$3’ ファイル終了条件発生後、さらに READ 文が実 行されました。 DUPL-OPEN 既に開かれたファイルに対して OPEN 文が実 行されました。 NO-READ 直前が成功した READ 文でありません。 NOT-OPENED 開かれていないファイルに対して入出力文が実 行されました。 OPEN-MODE OPEN モードが正しくありません。 POS-ERROR ファイル位置指示子が不定です。 $1:COBOL 文 $2:ファイル名またはアクセス名 5.1.1.5 データベースのエラー発生時のイベントログ情報 SQL Server でエラーが発生した場合は、イベントログの最終行に"[Microsoft]"という見出しで始まる SQL Server のエラー情報が出力 されます。 SQL Server のエラー情報については、SQL Server のマニュアル等を参照してください。 以下に出力例を示します。 ・ 接続エラーの場合(1) function = thr_isopen2 iserrno = 6 isstat1 = 0x0 isstat2 = 0x0 isstat3 = 0x0 isstat4 = 0x0 TableName = M_FILE02 [Microsoft][ODBC SQL Server Driver][SQL Server]このログインで要求されたデータベース "COBOL1" を開けません。ログインに 失敗しました。 ・ 接続エラーの場合(2) function = thr_isbuild iserrno = 6 isstat1 = '0' isstat2 = 0x0 isstat3 = '0' isstat4 = 0x0 TableName = PF1 [Microsoft][SQL Native Client]TCP プロバイダ : タイムアウト エラー [258]. ・ アクセス権限エラーの場合 function = iswrite iserrno = 13 isstat1 = 0x0 isstat2 = 0x0 isstat3 = 0x0 isstat4 = 0x0 TableName = M_FILE02 [Microsoft][ODBC SQL Server Driver][SQL Server]INSERT 権限がオブジェクト 'M_FILE02'、データベース 'COBOL'、スキーマ 'dbo' で拒否されました。 - 102 - 5.1.2 5.1.2.1 トランザクションアクセス時のエラー情報 トランザクションアクセス時のイベントログ情報 シングルセッションプログラミングでトランザクションサブルーチンなどのサブルーチンでエラーが発生した場合は、FILE STATUS を通 知せず、COBOL アプリケーションが終了します。この場合には、トランザクションサブルーチンの呼び出し順番などに問題がないか見 直してください。 以下のエラー情報が出力されます。 トランザクションアクセス時のエラーは、以下の形式です。 表 5.5 トランザクションアクセス時のイベントログ情報 出力先 アプリケーションログ ソース FSP_RDBCONNECTOR_FJSVDBIO 出力形式 <process id> プロセス ID。 <thread id> スレッド ID。 <command name> エラーが発生したトランザクション機能名。 以下に機能名とサブルーチンの対応を示します。 <error code> 終了情報。 <error code1> 詳細情報。 <database message> SQL Server から通知されたメッセージを出力します。 SQL Server でエラーが検出された場合に出力します。SQL Server の Books Online を参照して調査してください。 SQL Server でエラーが発生していない場合には、メッセージは出力さ れません。 - 103 - 出力例 トランザクションアクセス時のエラーコード一覧 5.1.2.2 トランザクション時のエラーコードを以下に示します。 表 5.6 トランザクション終了コード Error Code Command STR END CNL 終了情報 10 進数 詳細情報 10 進数 ○ ○ ○ 0 0 ○ ○ ○ 91 0 意味 正常終了 なし。 パラメーターエラー COB_PRDB_TRAN サブ ルーチンの呼出し時のパラ メーターを確認してください。 COB_PRDB_TRAN サブルーチン に指定するトランザクション種別の指 定に誤りがあります。 シーケンスエラー ○ ― ― 92 17430 対処 トランザクション開始が既に実行され ています。 トランザクションサブルーチン の呼出し前に OPEN 文以外 の入出力文が実行されていな いか確認してください。 オープン後にトランザクションサブ ルーチン以外の入出力文が実行さ れています。 シーケンスエラー ― ○ ○ 93 17430 ○ ○ ○ 94 12 ○ ○ ○ 94 6 ○ ○ ○ 95 5 トランザクション開始が実行されてい ません。 トランザクションサブルーチン の呼出し順序が正しいか見直 してください。 メモリが不足しています。 OS、データベースのメモリ設 定が適切か見直してください。 データベースでエラーが発生しまし た。 イベントログに出力されたメッ セージから SQL Server の Books Online を参照して調査 してください。 オープン前にトランザクションサブ ルーチンが呼び出されています。 ファイルがオープンされている か確認してください。 Command 種別 STR:XMROTSTR サブルーチン/COB_PRDB_TRAN サブルーチン(トランザクション種別=1) END:XMROTEND サブルーチン/COB_PRDB_TRAN サブルーチン(トランザクション種別=2) CNL:XMROTCNL サブルーチン/COB_PRDB_TRAN サブルーチン(トランザクション種別=3) エラー発生の有無 ○:発生します。 -:発生しません。 5.1.3 認証情報登録サブルーチンのエラー情報 認証情報登録サブルーチンは、マルチスレッドプログラミングの場合のみイベントログにエラー情報が出力されます。 - 104 - 認証情報登録サブルーチンのイベントログ情報 5.1.3.1 認証情報登録サブルーチン実行時のエラーは、以下の形式です。 表 5.7 認証情報登録サブルーチンのイベントログ情報 出力先 アプリケーションログ ソース FSP_RDBCONNECTOR_FJSVDBIO 出力形式 <process id> プロセス ID。 <thread id> スレッド ID。 認証情報登録機能名”XMROAUTH”。 <command name> マルチセッションプログラミング使用時でもシングルセッション プログラミングと同じ名前で出力されます。 <error code> 終了情報。 <error code1> 詳細情報。 出力例 認証情報登録サブルーチンのエラーコード一覧 5.1.3.2 認証情報登録サブルーチンのエラーコードを以下に示します。 表 5.8 認証情報登録サブルーチン終了コード Command Error Code XMROAUTH COB_PRDB_AUT 終了情報 10 進数 詳細情報 10 進数 ○ 0 0 意味 正常終了 ・ 認証種別に誤りがあり ます。 ○ 91 0 ・ ユーザー名長、パス ワード長に誤りがありま す。 エラー発生の有無 ○:発生します。 -:発生しません。 - 105 - 対処 なし。 ・ パラメーターの内容が正 しいか確認してください。 セッションサブルーチンのエラー情報 5.1.4 以下のエラー情報が出力されます。 セッションサブルーチンのイベントログ情報 5.1.4.1 セッションサブルーチン実行時のエラーは、以下の形式です。 表 5.9 セッションサブルーチンのイベントログ情報 出力先 アプリケーションログ ソース FSP_RDBCONNECTOR_FJSVDBIO 出力形式 <process id> プロセス ID。 <thread id> スレッド ID。 <function name> 機能名。 COB_PRDB_START サブルーチン: prdb_start COB_PRDB_END サブルーチン : prdb_end <error code> エラーコード。 <error code1> エラー詳細コード 1。 <error code2> エラー詳細コード 2。 <error code3> エラー詳細コード 3。 <error code4> エラー詳細コード 4。 <error message> 詳細情報。 <process id> プロセス ID。 <thread id> スレッド ID。 出力例 5.1.4.2 セッションサブルーチンのエラーコード一覧 セッションサブルーチン使用時のエラーコードを以下に示します。 表 5.10 セッションサブルーチン使用時の終了コード Command STR END ○ ○ error code 意味 対処 ・ セッション開設およびセッショ ・ セッション開設およ ン閉設のシーケンスエラーで す。 びセッション閉設の isstat iserrno 10 進数 1 2 3 4 255 ‘0’ 0x00 ‘8’ 0x0 0 - 106 - Command error code STR END iserrno 10 進数 意味 isstat 1 2 3 対処 4 ・ セッション開設は既に実行さ れています。 シーケンスを確認し てください。 ・ シングルセッションプログラミ ングの処理が動作中に、セッ ション開設が実行されました。 ― ○ 255 ‘0’ 0x00 ‘9’ 0x0 0 ○ ○ 255 ‘0’ 0x00 ‘99’ 0x0 0 ・ オープン中のファイルが残っ ・ ファイルを全てク ている状態で、セッション閉 設が実行されました。 ローズ後にセッショ ン閉設を行ってくだ さい。 ・ 内部矛盾が発生しました。 ・ 当社技術員に連絡 してください。 Command 種別 STR:COB_PRDB_START サブルーチン END:COB_PRDB_END サブルーチン エラー発生の有無 ○:発生します。 -:発生しません。 5.2 トレース出力機能 本節では、PowerRDBconnector のトレース機能について説明します。 COBOL アプリケーションのトラブル調査をする際に、PowerRDBconnector を用いたデータベースへのアクセス履歴をトレースファイル (FJSVdbio_trc.log)に採取し、調査できます。 5.2.1 トレース機能の使用方法 PowerRDBconnector 動作環境ファイルの以下のプロパティを指定してください。 ・ ErrorLog プロパティにトレース情報の出力先ディレクトリを指定してください。相対指定も可能です。 ・ TraceMode プロパティに ON を指定してください。 ・ 必要に応じて、TraceSize プロパティに、トレース情報の最大サイズを指定してください。 ・ 必要に応じて、TraceLevel プロパティに、トレース情報のレベルを指定してください。 例)トレース機能を使用する際の記述例 PowerRDBconnector 動作環境ファイル(DBIO_ENV) の記述例 ; PowerRDBconnector 動作環境ファイル ServerName=snake.domain.com DataSourceName=pubs ~ ErrorLog=D:¥log TraceMode=ON - 107 - TraceSize=4096 TraceLevel=0 トレース機能の使用時の注意事項を以下に示します。 ・ トレース機能を使用すると、性能が著しく低下する場合があります。通常の運用では設定しないでください。 ・ COBOL アプリケーションが動作中に、PowerRDBconnector 動作環境ファイルのトレース関連のプロパティを変更しても、ただちに 有効とはなりません。有効となるのは、次に COBOL アプリケーションを実行したときからです。 PowerRDBconnector 動作環境ファイルの各プロパティの詳細については、「3.1.4 PowerRDBconnector 動作環境ファイル」を参照して ください。 トレースの種類 5.2.2 PowerRDBconnector のトレース情報に出力する情報の種類を、PowerRDBconnector 動作環境ファイルに TraceLevel プロパティで指 定することができます。以下に指定する値と出力するトレース情報の種類を示します。 表 5.11 トレースの種類 出力情報 TraceLevel プロパティ 指定値 アクセス 情報 列情報、 イベント ログ内容 エラー時 のデータ 内容 キー値、入出 力データの内 容 0 ○ × × × アクセス履歴や、エラー前後の アクセス状況を調査する場合。 1 ○ ○ × × オープン時に項目不一致などの エラー原因を調査する場合。 2 ○ ○ ○ × エラー発生時のキー値の内容を 調査する場合。 3 ○ ○ ○ ○ アクセスしたデータ内容を詳細 に調査する場合。 用途例 ○:出力します。 ×:出力しません。 トレースの種類についての注意事項を以下に示します。 ・ TraceLevel プロパティで指定する数値が大きくなればなるほど出力する情報量が多くなり、性能が遅くなります。このため用途に応 じて最小の値を指定してください。 5.2.3 トレース情報の内容 PowerRDBconnector で出力するトレースファイル(FJSVdbio_trc.log)の内容を以下に示します。 5.2.3.1 トレース情報の形式 トレースファイル(FJSVdbio_trc.log)の形式を以下に示します。 - 108 - 5 ~ 14 の項目は、個々をセミコロン(;)で区切られています。 表 5.12 トレース情報の説明 TraceLevel 出力項目 No 内容 0 1 2 3 1 ○ ○ ○ ○ 採取日時 トレース採取の日時と、パフォーマンスカウンタを出力します。 2 ○ ○ ○ ○ VL Windows のバージョンレベルを出力します。 PowerRDBconnector のモジュール情報を出力します。 3 ○ ○ ○ ○ モジュール情報 モジュール名 バージョン情報 モジュールの更新日時 4 ○ ○ ○ ○ トレース情報 トレース情報として、TraceLevel とトレース出力先のパス名を出力します。 5 ○ ○ ○ ○ 日時 トレースの出力日時(YYYY/MM/DD-HH:MM:SS.SSS) 6 ○ ○ ○ ○ パフォーマンスカ ウンタ トレース出力時のパフォーマンスカウンタ 7 ○ ○ ○ ○ プロセス ID 対象のプロセス ID 8 ○ ○ ○ ○ スレッド ID 対象のスレッド ID 9 ○ ○ ○ ○ 実行単位 ID セッション単位の識別子 COBOL 命令を次の形式で出力します。 NetCOBOL for .NET V3.0/V3.1、かつマルチセッションプログラミングの場 合 10 ○ ○ ○ ○ COBOL 命令 - 109 - TraceLevel 出力項目 No 0 1 2 内容 3 シングルセッションプログラミングの場合 11 ○ ○ ○ ○ PowerRDBconne ctor 情報 12 ○ ○ ○ ○ 内部関数名 PowerRDBconnector の製品保守用の情報を出力します。 COBOL 命令に対応した内部関数名が出力されます。詳細は「表 5.14 プロ グラミングスタイルによる関数対応表」を参照してください。 ロックの状態を次の文字列で出力します。 13 ○ ○ ○ ○ ロック状態 詳細情報 詳細情報として次の内容を出力します。 PowerRDBconnector の内部関数開始時に”Start”を出力します。 ○ ○ ○ ○ 開始終了情報 PowerRDBconnector の内部関数終了時に、正常の場合は”Normal End” を、エラーの場合は”ABNormal End”を出力します。 "Start"と"Normal End"または"ABNormal End"が対で出力されます。 "Start"のみ出力されている場合は、処理中であることを意味します。 ○ ○ ○ ○ データベースの VL セッション開設時、データベースのバージョンレベルを出力します。 ○ ○ ○ ○ 内部動作モード PowerRDBconnector の製品保守用の情報を出力します。 ○ ○ ○ ○ テーブル名 OPEN 文と CLOSE 文の延長で出力します。 ○ ○ ○ ○ COBOL 初期化 ファイル情報 OPEN 文に対応する COBOL 初期化ファイルの情報を出力します。 14 注)SQL Server 2000 の場合には出力しません。 データベースの列情報を取得時に、列情報を出力します。未サポートの データ型の場合は”UNDEFINE(データ型番号)”と出力します。 - ○ ○ ○ 列情報 列情報の形式を、以下に示します。 列名、データ型名、データサイズ (文字項目の場合は、データ長。数字項目の場合は、桁数-精度) - ○ ○ ○ エラー情報 - - ○ ○ エラーダンプ - - - ○ ダンプ エラー発生時、エラーログおよびイベントログに出力する内容を出力しま す。 エラー発生時、要因となるデータを 16 進ダンプの形式で出力します。 注 キー値と入出力データを 16 進ダンプ形式で出力します。 注 ○:出力します。 ×:出力しません。 - 110 - 注) トレースデータの出力コード系について トレース情報に出力するエラーダンプや、ダンプに含まれる文字データは、以下のコード系での 16 進ダンプの形式で出力されま す。 表 5.13 トレースデータの出力コード系について コンパイル時の実行時の 文字コード系の指定 NetCOBOL for Windows REWRITE/ SJIS WRITE 時の書 UCS2(UTF-16) き込みデータや、 キーアクセス時 - のキー値の場合 READ 時の読 み込みデータの 場合 出力コード系 NetCOBOL for .NET SJIS UTF8-UCS2 SJIS-UCS2 SJIS SJIS シフト JIS UCS2(UTF-16) UTF-8 シフト JIS ・ 英数字項目 UTF-8 UCS2(UTF-16) UTF8-UCS2 ・ 日本語項目 UCS2 ・ 英数字項目 - シフト JIS SJIS-UCS2 ・ 日本語項目 UCS2 5.2.3.2 備考 トレースの出力例 トレースファイル(FJSVdbio_trc.log)の出力例を以下に示します。 なお、以下では説明の都合で、トレース出力結果に適宜空白を埋め込んでいます。 - 111 - COBOL から通知された データではなく、データ ベースへ通知するために 変換したデータが出力さ れます。 データベースから読み込 んだデータではなく、 COBOL へ通知するため に変換したデータが出力 されます。 表 5.14 プログラミングスタイルによる関数対応表 内部関数名 COBOL 命令 シングルセッション OPEN CLOSE READ WRITE REWRITE DELETE START 備考 マルチセッション thr_isbuild() _isbuild() thr_isbuild() prdb_isbuild() sub_thr_isbuild() テーブル名が出力されます。 thr_isopen2() _isopen() thr_isopen2() prdb_isopen() sub_thr_isopen() テーブル名が出力されます。 isindexinfo() _isindexinfo() isindexinfo() prdb_isindexinfo() sub_isindexinfo() キー項目毎に呼び出されます。 isaddindex() _isaddindex() isaddindex() prdb_isaddindex() sub_isaddindex() キー項目毎に呼び出されます。 OUTPUT モードの場合に出力され ます。 isclose() _isclose() isclose() prdb_isclose() sub_isclose() ― isread() _isread() isread() prdb_isread() sub_isread() ― iswrite() _iswrite() iswrite() prdb_iswrite() sub_iswrite() ― isrewcurr() _isrewcurr() isrewcurr() prdb_isrewcurr() sub_isrewcurr() ― isdelete() _isdelete() isdelete() prdb_isdelete() sub_isdelete() ― isstart() _isstart() isstart() prdb_isstart() sub_isstart() ― OUTPUT モードの場合に出力され ます。 OUTPUT モード以外の場合に出力 されます。 COBOL 命令に対応して複数行の情報が出力されます。以下に COBOL 命令毎のパターン例を示します。 マルチセッションプログラミング時のトレース出力パターン例 - 112 - - 113 - - 114 - - 115 - - 116 - 付録 A 他製品のファイル資源 本章では、他製品(ファイルシステム、データベース系)のファイル資源及び代替方法について説明します。 業務システムの機能・構成設計時に、移行前のデータベース資産としてよく使用される、論理ファイルの使用について、開発者が確認 する場合にお読みください。 A.1 論理ファイル 論理ファイルとは、物理ファイルを射影する仮想的なファイルで、以下の製品に存在します。 物理ファイルとは、物理データが格納されたデータファイルです。詳しくは、該当する製品のマニュアルを参照してください。 ・ 「CSP/FX FX-RDB」 ・ 「ASP RDB/6000、Symfoware6000」 論理ファイルで定義された単純論理ファイルは、ビューを定義することで同等の機能を実現することが可能です。 なお、複数のテーブルで構成された結合ビューに対する更新、及びビューへの OUTPUT モードのオープンはできません。 単純論理ファイル 単一ビューで作成することで、同等の機能が実現できます。 SQL 定義文の例 CREATE VIEW CSVIEW (得意先コード_DECIMAL, 商品名_CHAR, 数量_INTEGER) AS SELECT 得意先コード, 商品名, 数量 FROM CSMASTER - 117 - CREATE UNIQUE INDEX CSVIEWIX ON CSMASTER (得意先コード) 結合論理ファイル 結合ビューを作成することで参照できます。 SQL 定義文の例 CREATE VIEW CSJOIN (CS_NAME_CHAR ,P_NAME_CHAR, PRICE_DECIMAL, QUANTITY_INTEGER) AS SELECT 得意先名, 商品名, 価格, 数量 FROM CSMASTER, PRMASTER WHERE CSMASTER.商品名 = PRMASTER.商品名~ CREATE UNIQUE INDEX CSJOINIX ON CSMASTER (商品名) CREATE UNIQUE INDEX CSJOINIX2 ON PRMASTER (商品名) - 118 - 併合論理ファイル UNION 結合ビューで作成することで参照できます。 SQL 定義文の例 CREATE VIEW CSMERGE (CS_CODE_DECIMAL,CS_NAME_CHAR,PRODUCT_NAME_CHAR, QUANTITY_INTEGER) AS SELECT 得意先コード, 得意先名, 商品名, 数量 FROM CSMASTER~ UNION ALL SELECT 得意先コード, 得意先名, 商品名, 数量 FROM CS2MST CREATE UNIQUE INDEX CSMERGEIX ON CS2MST (得意先コード) - 119 - 付録 B トラブルシューティング 本章では、PowerRDBconnector でトラブルが発生した場合の対処方法と、トラブル事例について説明します。 トラブルへの対処方法 B.1 本節では、PowerRDBconnector 使用時にトラブルが発生した場合の調査方法について示します。 ・ COBOL のアクセス命令がエラーとなる場合 アプリケーションに通知されるエラーコードを元に原因を取り除いてください。 エラーコードに対する対処方法については、「5.1 エラー時の対処」を参照してください。 PowerRDBconnector のモジュールでアプリケーションエラーが発生した場合には、イベントログ、再現する場合は、トレースを採取 し、当社技術員に連絡してください。 ・ COBOL のアクセス性能を調査する場合 PowerRDBconnector には性能値を算出する機能はありません。COBOL アプリケーションで、時刻を採取するなどの対処を行って 調査してください。 ・ COBOL のアクセス文からの応答がない場合 イベントログを確認して、なんらかのエラーが発生していないか確認してください。 どのアクセス文から応答がないかは、COBOL アプリケーションのトレース機能などを用いて調査してください。 ・ COBOL のアクセス文の処理結果が正しくない場合 COBOL アプリケーションのトレース機能や、PowerRDBconnector のトレース機能を用いて、正しいシーケンスで動作しているか、 アクセスしたデータ内容が正しいのかを調査してください。PowerRDBconnector のトレース機能については、「5.2 トレース出力機 能」を参照してください。 事例 B.2 本節では、よくある質問や、陥りやすいトラブルとその解決方法について示します。 B.2.1 製品仕様について 1. 1 つのプログラムで複数のデータベースをアクセスすることはできますか? できません。1 つのプログラムでアクセスできるデータソースは 1 つだけです。プログラムごとにアクセスするデータソースを分け ることはでき、動作環境ファイル(DBIO_ENV ファイル)で指定します。詳細は、「3.1.4 PowerRDBconnector 動作環境ファイル」を 参照してください。 2. サポートされるファイル編成を教えてください。 SEQUENTIAL(順編成)と INDEX(索引編成)へのアクセスがサポートされています。 RELATIVE(相対編成)は、COBOL ファイルシステム等をご使用ください。 なお、順編成ファイルで格納(WRITE)した順番にレコードを読み込むことはできません。 3. テーブル全体を排他することができますか? テーブルロック機能を使ってください。詳細は、「3.5.3 テーブルロック機能」を参照してください。 4. COBOL ソースのデータ項目名を、PowerRDBconnector で規定された項目名(例:item_char)に合わせる必要がありますか? 合わせる必要はありません。PowerRDBconnector では、対象データベースの列名により、対応する COBOL データ型にあわせ た処理を行っています。COBOL ソース内のデータ定義の属性と順序が、データベースの列名と順序に一致していればよく、COBOL ソース内に記述したデータ名と列名を一致させる必要はありません。 5. テーブルの列名のサフィックスに属性を付加せずに、PowerRDBconnector からアクセスすることはできますか? できません。 ビューを定義し、ビュー側の列名のサフィックスに属性(例:item_char)を付加し、ビュー側をアクセスするようにすることで、読込 みが可能となります。 6. X 項目や N 項目における、PowerRDBconnector での後方空白の変換規則を教えてください。 - 120 - 後方空白補正の機能について参照してください。詳細は、「3.7.1 後方空白補正」を参照してください。 7. X 項目をシフト JIS、N 項目を unicode(UCS2)で扱うことはできますか? NetCOBOL for Windows/NetCOBOL ではできません。 NetCOBOL for .NET では可能です。 COBOL 翻訳時の実行時コード系は、RCS(SJIS-UCS2)を指定してください。詳細は、「3.1.6 コンパイル方法」を参照してくださ い。 8. NULL 値を含む列を、PowerRDBconnector から読込むことはできますか? NULL 値の読み書きはできません。 9. 可変長属性の列(VARCHAR2 など)があるテーブルを読込みや書込みができますか? 可変長属性の列への読込みや書込みはできません。 10. FLOAT 属性の列があるテーブルを、PowerRDBconnector から読込みや書込みができますか? FLOAT 属性の列を持つテーブルへの読込みや書込みはできません。 11. DATE や TIMESTAMP 属性の列があるテーブルを、PowerRDBconnector から読込みや書込みができますか? DATE や TIMESTAMP 属性の列を持つテーブルへの読込みや書込みはできません。 12. COBOL アプリケーションで REDEFINES 句が使用できますか? X 項目を X 項目で再定義している場合のみ使用できます。使用する場合、最小単位の X 項目に対して、データベースの CHAR 型と対応させます。 13. COBOL アプリケーションで OCCURS 句が使用できますか? 使用できます。データベースのテーブルには、COBOL の繰り返し項目数分の列の定義が必要です。 14. 1つのアプリケーションから異なる複数のサーバ内のデータベースにアクセスできますか? 1つのアプリケーションからは、特定のサーバ内のデータベースにしかアクセスできません。 動作するプロセスまたはスレッドが異なる場合、PowerRDBconnector 動作環境ファイルを分けることで異なるサーバで同じ種類 のデータベースにアクセスできます。 15. JIS2004 の文字コード系の文字が使えますか? アクセスするデータには以下の環境で使用できます。 - Windows XP、Windows Server 2003、Windows Vista、Windows Server 2008 の場合 - SQL Server 2005 の場合 ただし、データベースの問題により、JIS2004 固有文字は正しく検索できません。 - NetCOBOL V10.0.0 を使用する場合 PowerRDBconnector 動作環境ファイルや、COBOL 初期化ファイルなどのパス名、スキーマ名、表名、列名には使用できませ ん。詳細は、「4.1.2.7 文字コードについて」を参照してください。 B.2.2 トラブル事例 1. OPEN 命令や START 命令などがエラーになります。効率的なデバッグ方法を教えてください。 PowerRDBconnector が、COBOL アプリケーションにエラーを通知する場合、イベントログにエラー詳細(iserrno、isstat1 ~ 4、 TableName など)を記録します。 COBOL アプリケーションのデバック中にイベントビューアを起動しておき、エラー発生時にイベントビューアのアプリケーションロ グを参照し、「5.1.1 ファイルアクセス時のエラー情報」のエラーコード一覧と突き合わせることで、デバッグ作業を効率化できま す。 2. FILE STATUS 90 が通知されます。原因を教えてください。 以下の場合などに FILE STATUS 90 が通知されます。 なお、イベントログに詳細なエラー情報が出力されます。詳細情報については、「5.1.1 ファイルアクセス時のエラー情報」を参照 してください。 - 121 - - COBOL 初期化ファイルの設定に誤りがあります。 - カレントパスに COBOL 初期化ファイルが存在しません。 - 動作環境ファイル(DBIO_ENV ファイル)の設定に誤りがあります。 - カレントパスに動作環境ファイル(DBIO_ENV ファイル)が存在しません。 - スキーマ名やテーブル名に使用できない文字が含まれています。 - COBOL アプリケーションで指定されたキーに対して、索引(プライマリキー、インデックス)がテーブルに設定されていませ ん。 - ディスクへの入出力エラーが発生しています。 - 排他エラーが発生しています。 - データベースのサービスが未起動です。 - データベースに対するアクセス権限がありません。 - 製品ライセンスがありません。 - 1 アプリケーションで 129 以上オープンしようとしています。 3. OUTPUT オープンができません。対処方法を教えてください。 db_ddladmin グループ(又は sysadmin)権限が付与されていることを確認してください。 4. データ溢れが発生します。原因を教えてください。 NetCOBOL の文字コードとデータベースの文字コードを一致させてください。特に、COBOL の X 項目と、データベースの CHAR、NCHAR を対応させている場合、文字コード系を一致させていないと、データ溢れが発生します。 5. START 命令で HIGH-VALUE や LOW-VALUE への位置づけができません。対処方法を教えてください。 HIGH-VALUE や LOW-VALUE への位置づけはできません。START FIRST または START FIRST WITH REVERSED ORDER に置き換えてください。 6. Windows のサービスでアプリケーションを起動しますが、PowerRDBconnector のアクセスでエラーが発生します。対処方法を 教えてください。 以下の原因が考えられます。 - データベース製品のサービス起動完了前にアプリケーションのサービスが起動されると、データベースに接続できません。 サービス起動順番の依存関係を見直してください。 - サービスとして起動されたアプリケーションは暗黙では"SYSTEM"ユーザーとなりますが、このユーザー権限ではデータベー スに接続できません。他のユーザー権限でサービスを起動するよう設定してください。 7. 翻訳時に NetCOBOL のエントリー情報ファイル(ENTRY.ENT)にトランザクション処理用 DLL 名を記載する必要があります が、DLL がどこに格納されているのか分かりません。 トランザクション処理用の DLL は、PowerRDBconnector のインストールディレクトリ配下に格納されます。PowerRDBconnector のインストール時に、このディレクトリに対する PATH 変数が設定されるため、トランザクション処理用 DLL 名を、エントリー情報 ファイルにフルパスで定義する必要はありません。詳細は、「3.1.6 コンパイル方法」を参照してください。 8. 同一ファイルを親プログラムと子プログラムでそれぞれオープンし、親プログラムでレコードロックした後、子プログラムから同一レ コードを読み込むことができてしまいます。理由を教えてください。 排他制御はプロセス単位に行われます。このため、同一プロセスの親プログラムと子プログラム間でのレコードロックの獲得待合 せは発生しません。詳細は、「3.5 排他制御」を参照してください。 9. START 命令や READ 命令で「FDBK=16 35」のエラーが発生します。原因を教えてください。 表の列名に設定したサフィックスと、START 命令や READ 命令に渡したデータの型が一致していない場合に発生します。例と して、以下の場合に発生します。 - 表の列名のサフィックスに「_UNSIGN_NUMERIC」を指定しているにも関わらず、START 命令や READ 命令に符号付き データを用いました。 - 122 - - 表の列名のサフィックスに「_NUMERIC」を指定しているにも関わらず、START 命令や READ 命令に符号無しデータを用 いました。 10. I-O OPEN で READ 命令実行後、REWRITE や DELETE 命令を実行してもレコードロックが解除されません。どのようにレ コードロックを解除するのでしょうか? START FIRST 命令を発行することでレコードロックが解除できます。画面の入力待ちに入る場合などにレコードロックを解除し たい場合、START FIRST 命令で解除してください。 11. 複数の実表を結合したビュー表に対して、アクセスできません。 結合表への更新はできません。詳細は、「4.2.3.2 ビューの使用について」を参照してください。 12. NetCOBOL のアプリケーションから N 項目に対して START を発行するとエラーとなります。対処方法を教えてください。 NetCOBOL の文字コードとデータベースの文字コードを一致させてください。 13. トリガを設定しているテーブルにアクセスすると、START 命令や READ 命令がエラーになる場合があります。トリガを設定しな いと正常に動作します。トリガを設定しているテーブルにはアクセスできないのでしょうか? イベントログに以下のエラーメッセージが出力されている場合には、トリガを修正することで回避できます。 [Microsoft][ODBC SQL Server Driver]ほかの実行結果のために接続できません 又は [Microsoft][ODBC SQL Server Driver]カーソルの状態が正しくありません。 トリガ内で SQL 文を実行する前に以下の文を一文追加してください。 SET NOCOUNT ON 14. データ例外のエラー発生時の調査方法を教えてください。 以下のいずれかの方法で調査してください。 - エラーが発生した際のレコード内容を、別ファイルに出力してデータ内容を調査してください。 - エラー発生時のデータ内容を出力するようトレース情報を採取して、データ内容を調査してください。 15. 排他エラーが発生したとき、獲得しているアプリケーション(プロセス)の調査方法を教えてください。 SQL Server の SQL プロファイラで、以下のように指定しトレースを採取し、調査してください。 - 「使用できるイベントクラス」から「TSQL」、「ストアドプロシジャ」、「ロック」を選択してください。 - 「データ列」に、EventClass、TextData、ApplicationName、ClientProcessID、SPID、Mode BinaryData(レコードを識別できる ためのシステム ID)を追加してください。 - 「フィルタ」に、ApplicationName Like "PowerRDBconnector"を設定し、「システム ID を除外」のプロパティを指定してくださ い。 なお、セッション ID を特定する場合は、トレース出力機能を使用してください。 16. Windows Server 2003(x64)で COBOL アプリケーションを実行すると、「ハンドルされていない例外」のエラーが発生し、動作し ません。 NetCOBOL のコンパイルオプション(/platform)を指定し作成されたアプリケーションしか、Windows Server 2003(x64)で動作し ません。アプリケーション作成時のコンパイルオプションを確認してください。 17. OPEN 文を実行すると、“クエリタイムアウトが時間切れになりました”というエラーが発生します。 対応するインデックスが定義されておらず、かつレコード件数が大量にある表に対して、索引ファイルとして OPEN 文、START 文やキー指定のアクセス文を実行した場合に、SQL Server の処理に、TimeOut プロパティで指定した時間以上の時間がかかっ ているためです。インデックスを定義するか、TimeOut プロパティに大きな値を指定してください。 18. トランザクション区間内でアクセス時デッドロックが発生した後、トランザクション取消しサブルーチンを実行するとエラーが発生し ます。 トランザクション内で、デッドロックが発生すると、SQL Server が自動的にトランザクションの取消すため、COBOL アプリケーショ ンがトランザクション取消しサブルーチンを実行すると、“データベースでエラーが発生しました。”のエラーとなります。 またその後、CLOSE 文を実行しても同じエラーが発生します。CLOSE 文でエラーが発生した場合、同じファイル識別子を用いて OPEN 文を実行すると、“CLOSE されていない”エラーとなるため、セッション終了後、スレッドを終了させるか、プロセスを終了さ せてください。 - 123 - 19. OPEN 文を実行すると、FILE STATUS に 90 が発生していますが、イベントログにはエラー情報が出力されていません。 トレース情報を採取して、アクセス対象表の項目構成と、COBOL プログラムを突き合わせて、COBOL プログラムと、表または ビュー表のレコード長が異なっているか確認してください。 20. ASP.NET で使用し、COB_PRDB_START サブルーチンを実行すると、復帰値が-1、iserrno=255、isstat1=’0’、isstat2=0x0、 isstat3=’1’、isstat4=0x0、“DBIO_ENV file open error”のエラーが発生します。 セッション開設時に、PowerRDBconnector 動作環境ファイルが見つからないため、エラーが発生しています。カレントパスの設 定を確認してください。 21. ファイルを共有する COBOL アプリケーションでレコードを読み込むと、「ORA-01406: フェッチされた列の値は切り捨てられまし た」のエラーが発生します。 COBOL プログラム上、ファイルが EXTERNAL 指定で記述されている場合、共有指定を行ってコンパイルしたか確認してくださ い。 22. Windows Server 2003(x64)で、ASP.NET を使用した COBOL アプリケーションを実行すると以下のエラーが発生して動作しま せん。 JMP0097I-U ランタイムシステムが正しくインストールされていません. 'NOT-INSTALLED' Fujitsu.COBOL.Runtime.Subroutines.PRDBconnector 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。 IIS で動作させるアプリケーションが 32 ビット互換モードで動作していないために発生しています。以下の手順で、IIS で動作さ せるアプリケーションを 32 ビット互換モードで動作させてください。 1. 次のコマンドを入力して 32 ビット互換モードを有効にします。 cscript %SYSTEMDRIVE%¥inetpub¥adminscripts¥adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 2. 次のコマンドを入力して ASP.NET 2.0 (32 ビット版) をインストールし、スクリプト マップを IIS ルート下にインストールしま す。 %SYSTEMROOT%¥Microsoft.NET¥Framework¥v2.0.xxxxx¥aspnet_regiis.exe -i 3. インターネット インフォメーション サービス マネージャの Web サービス拡張の一覧で、ASP.NET version 2.0.xxxxx (32 ビット版) の状態が [許可] に設定されていることを確認します。 ただし、この場合、IIS で動作させるアプリケーションは全て 32 ビット互換モードで動作します。 23. インストール時に指定したデータベース種別を調べる方法を教えてください。 [システムのプロパティ]の[詳細設定]の画面にある[環境変数]を表示し、システム環境変数“RDBCONNECTOR”の値により、 以下のようにインストールしたデータベース種別がわかります。 - SQLSV2K:SQL Server 2000 - SQLSV2005:SQL Server 2005 - ORA9i:Oracle 9i - ORA10g:Oracle10g - ORA11g:Oracle11g 24. COBOL 初期化ファイルには、テーブル名を正しく指定していますが、OPEN 文でエラーとなります。調査方法を教えてくださ い。 COBOL 初期化ファイルが UTF-8 のコード系で作成されている場合、テーブル名にシフト JIS 範囲外の文字が指定されている 可能性があります。PowerRDBconnector のトレース機能を使用して、以下のように確認してください。 - シフト JIS 範囲内の文字でテーブル名が指定されている場合 トレースログの出力結果に、以下のような文字化けを起こさない情報が出力されています。 cw_FileOpenInfo() ; ------- : TableName=M_FILE02&SchemaName=RDBCTEST&AccessMode=DYNAMIC - シフト JIS 範囲外の文字でテーブル名が指定されている場合 トレースログの出力結果に、以下のような文字化けを起こす情報が出力されています。 - 124 - cw_FileOpenInfo() ; ------- : TableName=?????&SchemaName=RDBCTEST&AccessMode=DYNAMIC PowerRDBconnector のトレース機能については、「5.2 トレース出力機能」を参照してください。 25. Windows ファイアウォールを有効にすると、エラーが発生します。 Windows ファイアウォールを有効にすると SQL Server の既定ポートが許可されていません。そのため、クライアントサーバ形態 でデータベースに接続を行うと、以下の接続エラーが発生します。 エラー時のイベントログ内容 iserrno = 6 isstat1 = '0' isstat2 = 0x0 isstat3 = '0' isstat4 = 0x0 [Microsoft][SQL Native Client]名前付きパイプのプロバイダ : SQL Server への接続を開けませんでした [1326]. このような場合、Windows ファイアウォールのポート番号設定を確認し、データベースのポートを許可してください。 26. 日本語項目の文字判定が正しく行えません。 NetCOBOL for Windows の実行コード系が unicode の COBOL アプリケーションで、日本語項目の後方に半角空白が設定され ている可能性があります。 PowerRDBconnector のトレース機能を使用して、日本語項目に設定されている空白の種類を確認してください。 後方空白の扱いの詳細は、「3.7.1 後方空白補正」を参照してください。 PowerRDBconnector のトレース機能については、「5.2 トレース出力機能」を参照してください。 また NetCOBOL for Windows で unicode を使用する場合の詳細は、NetCOBOL のマニュアルを参照してください。 B.2.3 性能 1. レコードの項目数と、OPEN 文の性能に依存関係はありますか? 項目数が多くなるに従い、OPEN 処理の性能が遅くなります。PowerRDBconnector では、OPEN 文の延長でデータベースから カラム情報を取得しているためです。 2. OPEN 命令を発行した際に、他のアプリケーションの動作が遅くなる場合があります。原因を教えてください。 PowerRDBconnector は、OPEN 命令の延長で使用する SQL 文の準備を行います。SQL 文の準備に伴い、データベースがメ モリを獲得し、メモリ負荷が発生する場合があります。特に、下記条件で、獲得されるメモリ量が大きくなります。 - 項目(列)数の多い表に対して OPEN 命令を発行した場合 - ALTERNATE RECORED KEY 句を指定した場合 3. OPEN、START、READ、REWRITE、WRITE 性能が極めて遅いのですが、性能のチューニング方法を教えてください。 PowerRDBconnector は、以下の設定を行うことで最適な性能が得られます。(この設定を行わないと、性能が大幅に劣化しま す)。詳しくは、「4.1.4 性能向上のポイント」を参照してください。 - インデックスを設定してください。 - インデックスを定期的にメンテナンスしてください。 4. I-O モードで OPEN した場合の READ 性能が遅いのですが、性能のチューニング方法を教えてください。 PowerRDBconnector が提供するレコードロック機能(暗黙)でなく、テーブルロック機能を使用すると、READ 命令のレコードロッ ク処理を迂回することができ、READ 命令の性能を数倍程度、高速化することができます。詳しくは、「4.1.4 性能向上のポイン ト」を参照してください。 - 125 - 付録 C 開発用サンプル情報 本章では、PowerRDBconnector を使用する際に役立つサンプルを示します。 注)サンプル使用時の注意事項 各サンプルがページに複数ページにまたがることがありますので、カット&ペーストして使用する際には、ページ番号までコピーさ れる点に注意してください。 C.1 NetCOBOL for .NET のプログラム原型 本節では、NetCOBOL for .NET で使用するサブルーチンのプログラム原型のサンプルを示します。使い方の詳細は、NetCOBOL の マニュアルを参照してください。 C.1.1 XMROTSTR サブルーチン 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. XMROTSTR AS "XMROTSTR" 000030 IS PROTOTYPE CUSTOM-ATTRIBUTE IS PTRN. 000040 000050 ENVIRONMENT DIVISION. 000060 CONFIGURATION SECTION. 000070 SPECIAL-NAMES. 000080 CONSOLE IS CONSL 000090 CUSTOM-ATTRIBUTE PTRN 000100 CLASS DLLIMPORT USING "F3BWS1CB.DLL" 000110 PROPERTY P-CALLINGCONVENTION IS STDCALL OF E-CALLINGCONVENTION 000120 PROPERTY CHARSET IS ANSI OF E-CHARSET. 000130 REPOSITORY. 000140 CLASS DLLIMPORT AS "System.Runtime.InteropServices.DllImportAttribute" 000150 ENUM E-CALLINGCONVENTION 000160 AS "System.Runtime.InteropServices.CallingConvention" 000170 PROPERTY P-CALLINGCONVENTION AS "CallingConvention" 000180 PROPERTY STDCALL AS "StdCall" 000190 PROPERTY CHARSET AS "CharSet" 000200 ENUM E-CHARSET AS "System.Runtime.InteropServices.CharSet" 000210 PROPERTY ANSI AS "Ansi" 000220 CLASS SYS-STRING AS "System.String". 000230 END PROGRAM XMROTSTR. C.1.2 XMROTEND サブルーチン 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. XMROTEND AS "XMROTEND" 000030 IS PROTOTYPE CUSTOM-ATTRIBUTE IS PTRN. 000040 000050 ENVIRONMENT DIVISION. 000060 CONFIGURATION SECTION. 000070 SPECIAL-NAMES. 000080 CONSOLE IS CONSL 000090 CUSTOM-ATTRIBUTE PTRN 000100 CLASS DLLIMPORT USING "F3BWS1CB.DLL" 000110 PROPERTY P-CALLINGCONVENTION IS STDCALL OF E-CALLINGCONVENTION 000120 PROPERTY CHARSET IS ANSI OF E-CHARSET. 000130 REPOSITORY. 000140 CLASS DLLIMPORT AS "System.Runtime.InteropServices.DllImportAttribute" - 126 - 000150 ENUM E-CALLINGCONVENTION 000160 AS "System.Runtime.InteropServices.CallingConvention" 000170 PROPERTY P-CALLINGCONVENTION AS "CallingConvention" 000180 PROPERTY STDCALL AS "StdCall" 000190 PROPERTY CHARSET AS "CharSet" 000200 ENUM E-CHARSET AS "System.Runtime.InteropServices.CharSet" 000210 PROPERTY ANSI AS "Ansi" 000220 CLASS SYS-STRING AS "System.String". 000230 END PROGRAM XMROTEND. C.1.3 XMROTCNL サブルーチン 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. XMROTCNL AS "XMROTCNL" 000030 IS PROTOTYPE CUSTOM-ATTRIBUTE IS PTRN. 000040 000050 ENVIRONMENT DIVISION. 000060 CONFIGURATION SECTION. 000070 SPECIAL-NAMES. 000080 CONSOLE IS CONSL 000090 CUSTOM-ATTRIBUTE PTRN 000100 CLASS DLLIMPORT USING "F3BWS1CB.DLL" 000110 PROPERTY P-CALLINGCONVENTION IS STDCALL OF E-CALLINGCONVENTION 000120 PROPERTY CHARSET IS ANSI OF E-CHARSET. 000130 REPOSITORY. 000140 CLASS DLLIMPORT AS "System.Runtime.InteropServices.DllImportAttribute" 000150 ENUM E-CALLINGCONVENTION 000160 AS "System.Runtime.InteropServices.CallingConvention" 000170 PROPERTY P-CALLINGCONVENTION AS "CallingConvention" 000180 PROPERTY STDCALL AS "StdCall" 000190 PROPERTY CHARSET AS "CharSet" 000200 ENUM E-CHARSET AS "System.Runtime.InteropServices.CharSet" 000210 PROPERTY ANSI AS "Ansi" 000220 CLASS SYS-STRING AS "System.String". 000230 END PROGRAM XMROTCNL. C.1.4 XMROTRBK サブルーチン 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. XMROTRBK AS "XMROTRBK" 000030 IS PROTOTYPE CUSTOM-ATTRIBUTE IS PTRN. 000040 000050 ENVIRONMENT DIVISION. 000060 CONFIGURATION SECTION. 000070 SPECIAL-NAMES. 000080 CONSOLE IS CONSL 000090 CUSTOM-ATTRIBUTE PTRN 000100 CLASS DLLIMPORT USING "F3BWS1CB.DLL" 000110 PROPERTY P-CALLINGCONVENTION IS STDCALL OF E-CALLINGCONVENTION 000120 PROPERTY CHARSET IS ANSI OF E-CHARSET. 000130 REPOSITORY. 000140 CLASS DLLIMPORT AS "System.Runtime.InteropServices.DllImportAttribute" 000150 ENUM E-CALLINGCONVENTION 000160 AS "System.Runtime.InteropServices.CallingConvention" 000170 PROPERTY P-CALLINGCONVENTION AS "CallingConvention" 000180 PROPERTY STDCALL AS "StdCall" - 127 - 000190 PROPERTY CHARSET AS "CharSet" 000200 ENUM E-CHARSET AS "System.Runtime.InteropServices.CharSet" 000210 PROPERTY ANSI AS "Ansi" 000220 CLASS SYS-STRING AS "System.String". 000230 END PROGRAM XMROTRBK. C.1.5 XMROAUTH サブルーチン 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. XMROAUTH AS "XMROAUTH" 000030 IS PROTOTYPE CUSTOM-ATTRIBUTE IS PTRN. 000040 000050 ENVIRONMENT DIVISION. 000060 CONFIGURATION SECTION. 000070 SPECIAL-NAMES. 000080 CONSOLE IS CONSL 000090 CUSTOM-ATTRIBUTE PTRN 000100 CLASS DLLIMPORT USING "f3bws1sb.dll" 000110 PROPERTY P-CALLINGCONVENTION IS STDCALL OF E-CALLINGCONVENTION 000120 PROPERTY CHARSET IS ANSI OF E-CHARSET. 000130 REPOSITORY. 000140 CLASS DLLIMPORT AS "System.Runtime.InteropServices.DllImportAttribute" 000150 ENUM E-CALLINGCONVENTION 000160 AS "System.Runtime.InteropServices.CallingConvention" 000170 PROPERTY P-CALLINGCONVENTION AS "CallingConvention" 000180 PROPERTY STDCALL AS "StdCall" 000190 PROPERTY CHARSET AS "CharSet" 000200 ENUM E-CHARSET AS "System.Runtime.InteropServices.CharSet" 000210 PROPERTY ANSI AS "Ansi" 000220 CLASS SYS-STRING AS "System.String". 000230 END PROGRAM XMROAUTH. C.2 マニュアル内で使用した図表に対するテキスト形式の雛型 本節は、本マニュアル内の図表のうち、カット&ペーストで活用できるテキスト形式の雛型を載せています。 各雛型の記載形式の詳細は、本マニュアル内の説明箇所を参照してください。 C.2.1 PowerRDBconnector 動作環境ファイルのサンプル 以下のサンプルは、必要に応じて、< >内に値を設定したり、コメントを解除して使用してください。 詳細は、「3.1.4 PowerRDBconnector 動作環境ファイル」を参照してください。 ; PowerRDBconnector の動作環境 ServerName=<データベースのサーバ名> DataSourceName=<データベース名> ; TimeOut=<タイムアウト時間> ; Suppress=<後方空白補正> ; DataCheck=<データチェック> ; ErrorLog=<エラーログの出力先> ; TraceMode=<トレースモード> ; TraceSize=<トレースファイルのサイズ> - 128 - ; TraceLevel=<トレースのレベル> C.2.2 COBOL 初期化ファイルのサンプル 以下のサンプルは、必要に応じて名称などを追加、変更して使用してください。 詳細は、「3.1.5 COBOL 初期化ファイル」を参照してください。 EMPLOYEE=TableName=employee&SchemaName=dbo&AccessMode=RANDOM&Suppress=OFF,RDM CUSTOMER=TableName=customer&SchemaName=dbo&AccessMode=RANDOM&Suppress=OFF,RDM @CBR_ENTRYFILE=ENTRY.ENT C.2.3 エントリ情報ファイルのサンプル 以下のサンプルは、必要に応じて名称などを追加、変更して使用してください。 詳細は、「3.1.5 COBOL 初期化ファイル」を参照してください。 [ENTRY] ;トランザクションサブルーチン XMROTSTR=F3BWS1CB.DLL XMROTEND=F3BWS1CB.DLL XMROTCNL=F3BWS1CB.DLL XMROTRBK=F3BWS1CB.DLL ; 認証情報登録サブルーチン XMROAUTH=F3BWS1SB.DLL C.2.4 セッションサブルーチンのサンプル 以下のサンプルは、必要に応じて名称などを追加、変更して使用してください。 詳細は、「3.2 セッションの制御方法」を参照してください。 DATA DIVISION. WORKING-STORAGE SECTION. 01 SESSION-ID PIC X(30) VALUE SPACE. 01 RET-VALUE PIC S9(9) COMP-5. 01 RET PIC S9(9) COMP-5 VALUE 0. <略> PROCEDURE DIVISION. MOVE "SESSION01" TO SESSION-ID. * セッションを開設する CALL “COB_PRDB_START” USING BY REFERENCE SESSION-ID RETURNING RET-VALUE. OPEN I-O INFILE. - 129 - <略> CLOSE INFILE. * セッションを閉設する。 CALL “COB_PRDB_END” USING BY REFERENCE SESSION-ID RETURNING RET-VALUE. C.2.5 認証サブルーチンのサンプル 以下のサンプルは、必要に応じて名称などを追加、変更して使用してください。 シングルセッションの場合 詳細は、「3.3.2 データベース認証の使用方法(シングルセッション)」を参照してください。 DATA DIVISION. WORKING-STORAGE 01 USERINFO. 02 AUTH 02 USERNNO 02 USERN 02 PASSWNO 02 PASSW 01 ERRINFO. 02 ENDINFO 02 DITINFO 02 FILLER 01 RET <略> SECTION. PIC PIC PIC PIC PIC 9(9) COMP-5 VALUE 0. 9(9) COMP-5 VALUE 0. X(260) VALUE SPACE. 9(9) COMP-5 VALUE 0. X(260) VALUE SPACE. PIC PIC PIC PIC S9(9) S9(9) S9(9) S9(9) COMP-5 VALUE 0. COMP-5 VALUE 0. VALUE 0. COMP-5 VALUE 0. PROCEDURE DIVISION. * データベース認証にする MOVE 2 TO AUTH. MOVE "SYSTEM100" TO USERN. MOVE 9 TO USERNNO. MOVE "SYSUSER" TO PASSW. MOVE 7 TO PASSWNO. CALL "XMROAUTH" USING USERINFO ERRINFO MOVE SPACE TO USERN. MOVE SPACE TO PASSW. RETURNING RET. <略> マルチセッションの場合 詳細は、「3.3.3 データベース認証の使用方法(マルチセッション)」を参照してください。 WORKING-STORAGE SECTION. 01 SESSION-ID PIC X(30). 01 RET-VALUE PIC S9(9) COMP-5. 01 S-CODE PIC X. 01 USERINFO 02 AUTH PIC 9(9) COMP-5 VALUE 0. 02 USERNNO PIC 9(9) COMP-5 VALUE 0. 02 USERN PIC X(260) VALUE SPACE. 02 PASSWNO PIC 9(9) COMP-5 VALUE 0. 02 PASSW PIC X(260) VALUE SPACE. 01 ERRINFO. - 130 - 02 ENDINFO PIC S9(9) COMP-5 VALUE 0. 02 DITINFO PIC S9(9) COMP-5 VALUE 0. 02 FILLER PIC S9(9) VALUE 0. ~~ * セッションの開始 CALL “COB_PRDB_START” USING BY REFERENCE SESSION-ID RETURNING RET-VALUE. * 認証情報の登録 CALL “COB_PRDB_ AUTH” USING BY REFERENCE SESSION-ID BY REFERENCE USERINFO BY REFERENCE ERRINFO RETURNING RET-VALUE. <略> OPEN <略> CLOSE * セッションの閉設 CALL “COB_PRDB_END” USING BY REFERENCE SESSION-ID RETURNING RET-VALUE. C.2.6 トランザクションサブルーチンのサンプル 以下のサンプルは、必要に応じて名称などを追加、変更して使用してください。 マルチセッションの場合 詳細は、「3.4.3 トランザクションの使用方法(マルチセッション)」を参照してください。 WORKING-STORAGE SECTION. 01 SESSION-ID PIC X(30). 01 RET-VALUE PIC S9(9) COMP-5. 01 S-CODE PIC 9(9) COMP-5. ~~ MOVE "SESSION01" TO SESSION-ID. * セッションの開設 CALL “COB_PRDB_START” USING BY REFERENCE SESSION-ID RETURNING RET-VALUE. <略> OPEN FILE1 MOVE 1 TO S-CODE. * トランザクションの開始 CALL “COB_PRDB_ TRAN” USING BY REFERENCE SESSION-ID BY VALUE S-CODE RETURNING RET-VALUE. <略> MOVE 2 TO S-CODE. * トランザクションの確定 CALL “COB_PRDB_TRAN” USING BY REFERENCE SESSION-ID - 131 - BY VALUE S-CODE RETURNING RET-VALUE. または MOVE 3 TO S-CODE. * トランザクションの取消し CALL “COB_PRDB_ TRAN” USING BY REFERENCE SESSION-ID BY VALUE S-CODE RETURNING RET-VALUE. <略> CLOSE CALL “COB_PRDB_END” USING BY REFERENCE SESSION-ID RETURNING RET-VALUE. - 132 - 付録 D リリース情報 本章では、PowerRDBconnector のリリース情報を示します。 D.1 リリース情報 製品名 リリース情報 VL PowerRDBconnector for NetCOBOL V1.0L10A PowerRDBconnector for NetCOBOL V1.0L20 SQL Server 2000 に対応しました。 ・ Oracle9i,Oracle10g に対応しました。 ・ インストール先を可変にしました。 ・ クライアント運用をサポートしました。 PowerRDBconnector クラ イアントパッケージ for NetCOBOL ・ データベース認証機能をサポートしました。 V1.0L20 ・ Oracle のビュー表を、OUTPUT オープン可能としました。 ・ ServerName プロパティの制限を 255 文字まで緩和しました。 ・ Windows Server 2003 Release 2 をサポートしました。 ・ Oracle10g Release2 をサポートしました。 ・ SQL Server 2005 をサポートしました。 ・ NetCOBOL for .NET V3.0 をサポートしました。 ・ マルチスレッドプログラミング用の以下のサブルーチンを追加しまし た。 - COB_PRDB_START サブルーチン - COB_PRDB_END サブルーチン - COB_PRDB_TRAN サブルーチン - COB_PRDB_AUTH サブルーチン ・ データベース認証をサポートしました。 PowerRDBconnector サー バパッケージ for NetCOBOL PowerRDBconnector クラ イアントパッケージ for NetCOBOL ・ SQL Server のビュー表に対し、OUTPUT モードでのオープンをサ V2.0L10 ポートしました。 ・ テーブルロック解除時に強制トランザクションを取り消す機能 (XMROTRBK サブルーチン)をサポートしました。 ・ Oracle でバイナリ項目をサポートしました。 ・ PowerRDBconnector 動作環境ファイルに以下のプロパティを追加し ました。 - Suppress プロパティ:後方空白補正 - DataCheck プロパティ:データチェック - TraceLevel プロパティ:トレースのレベル - COBOL 初期化ファイルに以下のプロパティを追加しました。 - Suppress プロパティ:後方空白補正 ・ TableName プロパティ、ServerName プロパティに記述できる記号を 増やしました。 ・ ServerName プロパティに指定できる値を 255 文字にしました。 - 133 - 製品名 リリース情報 VL ・ SJIS-UCS2(英数字項目がシフト JIS、日本語項目が unicode)のコー ド系をサポートしました。 ・ ErrorLog プロパティの指定に誤りがあった場合のメッセージ通知機 能を追加しました。 ・ 環境誤りのエラーコードを細分化し、isstat3 を変更しました。 ・ エラー情報に、列名や PowerRDBconnector 動作環境ファイルのプ ロパティ名を出力する機能を追加しました。 ・ データ補正機能を追加しました。 ・ トレース出力機能を追加しました。 ・ インストール時に選択したデータベース以外にアクセスできないよう 変更しました。 ・ Windows Vista をサポートしました。 ・ NetCOBOL for .NET V3.1 をサポートしました。 PowerRDBconnector クライアントパッケージ V2.0L20 ・ NetCOBOL V9.0 をサポートしました。 ・ CLOSE 時のエラーは無視するように修正しました。 for NetCOBOL ・ ALTERNATE KEY に対応する項目を更新後、キー順読込みする カーソル位置を COBOL 標準となるよう修正しました。 ・ Visual C++ 6.0 のランタイムモジュールを使用しないように変更しま した。 サーバパッケージのみのリリース情報を以下に示します。 ・ Windows Vista をサポートしました。 ・ NetCOBOL for .NET V3.1 をサポートしました。 ・ NetCOBOL V9.0 をサポートしました。 ・ CLOSE 時のエラーは無視するように修正しました。 ・ ALTERNATE KEY に対応する項目を更新後、キー順読込みする カーソル位置を COBOL 標準となるよう修正しました。 PowerRDBconnector ・ Visual C++ 6.0 のランタイムモジュールを使用しないように変更しま サーバパッケージ した。 for NetCOBOL V3.0L10 PowerRDBconnector サーバパッケージ、クライアントパッケージ共通のリリース情報を以下に示 します。 クライアントパッケージ ・ JIS2004 の文字コード系のデータをサポートしました。 for NetCOBOL ・ Windows Server 2008 をサポートしました。(注) ・ NetCOBOL V10.0.0 をサポートしました。 ・ Oracle11g をサポートしました。 ・ UTF-8 で 作 成 さ れ た PowerRDBconnector 動 作 環 境 フ ァ イ ル 、 COBOL 初期化ファイルをサポートしました。 (注) Windows Server 2008 のサポートについて Windows Server 2008 上の PowerRDBconnector からアクセス可能な データベースは、SQL Server 2005 のみです。 - 134 - D.2 非互換について 製品名 直前の VL との非互換 VL PowerRDBconnector for NetCOBOL V1.0L20 インストール先を可変にしたため、サブルーチン使用時のリンク先の指定 が変更になりました。 PowerRDBconnector クラ イアントパッケージ for NetCOBOL V1.0L20 特にありません。 ・ PowerRDBconnector 動作環境ファイルに、プロパティ名と=のみ記述 PowerRDBconnector サー バパッケージ for NetCOBOL PowerRDBconnector クラ イアントパッケージ for NetCOBOL した場合、初期値動作でなく、エラーとなります。 V2.0L10 ・ PowerRDBconnector 動作環境ファイルの ErrorLog プロパティに、ドラ イブ名のみを指定すると、オープン処理でエラーとなります。 ・ インストール時に選択したデータベース以外にはアクセスできなくなり ます。 ・ CLOSE 時のエラーは通知されず、正常終了します。 PowerRDBconnector クライアントパッケージ V2.0L20 for NetCOBOL ・ ALTERNATE KEY に対応する項目を更新後、キー値の重複データ を順に読込む位置が、次のように変更されます。 - 前 VL までは変更後のキー位置まで読み飛ばされる。 - COBOL 標準であるキー変更前の位置の次から読み飛ばしがな く正しく読み込まれます。 サーバパッケージの前版(V2.0L10)からの非互換点を以下に示します。 ・ インストール時に選択したデータベース以外にはアクセスできなくなり ます。 PowerRDBconnector ・ CLOSE 時のエラーは通知されず、正常終了します。 サーバパッケージ ・ ALTERNATE KEY に対応する項目を更新後、キー値の重複データ を順に読込む位置が、次のように変更されます。 for NetCOBOL V3.0L10 PowerRDBconnector クライアントパッケージ for NetCOBOL - 前 VL までは変更後のキー位置まで読み飛ばされる。 - COBOL 標準であるキー変更前の位置の次から読み飛ばしがな く正しく読み込まれます。 クライアントパッケージの前版(V2.0L20)からの非互換点を以下に示しま す。 ・ Windows Vista で、SQL Server 2000 や Oracle9i のデータベースに対 応した PowerRDBconnector がインストールできなくなりました。 - 135 - 索 引 [T] TableLock............................................................................35,61 TableName................................................................................35 THREAD..................................................................................37 TimeOut..........................................................................29,31,63 TraceLevel....................................................................29,33,107 TraceMode....................................................................29,32,107 TraceSize......................................................................29,33,107 Truncate....................................................................................35 [記号] ODBC ドライバ.........................................................................20 @CBR_ENTRYFILE..........................................................36,37 [A] AccessMode..............................................................................35 ASCOMP5...........................................................................37,39 [C] COBOL85.CBR..............................................................36,46,52 COBOL アプリケーション...........................................................5 COBOL 初期化ファイル..............................................20,34,129 COB_PRDB_AUTH...........................................................40,49 COB_PRDB_END.........................................................40,41,43 COB_PRDB_START.....................................................40,41,42 COB_PRDB_TRAN.......................................................40,55,57 [U] unicode..................................................................64,69,74,76,87 [W] Windows 認証.....................................................................24,45 [X] x64............................................................................................39 XMROAUTH............................................................38,40,46,48 XMROAUTH サブルーチン.................................................128 XMROTCNL.............................................................38,40,52,54 XMROTCNL サブルーチン..................................................127 XMROTEND.............................................................38,40,52,54 XMROTEND サブルーチン..................................................126 XMROTRBK...................................................38,40,52,54,62,77 XMROTRBK サブルーチン..................................................127 XMROTSTR.............................................................38,39,52,53 XMROTSTR サブルーチン...................................................126 [D] DataCheck.......................................................29,31,66,67,68,69 DataSourceName.................................................................29,30 DBIO_ENV..............................................................................29 DLOAD....................................................................................37 [E] ErrorLog.......................................................................29,32,107 [F] FJSVdbio_trc.log.................................................33,107,108,111 [H] HIGH-VALUE...............................................................68,70,77 [あ] アクセス権限........................................................................23,24 アプリケーションログ.......................................92,93,103,105,106 イベントログ.............................................32,44,48,54,57,104,110 インターネット.............................................................................2 インデックス....................................................................21,74,79 インポートライブラリ..................................................................38 エラーコード........................................................94,104,105,106 エラーログ.................................................................................29 エントリ情報...............................................................37,41,46,52 エントリ情報ファイル...............................................................129 エントリー情報..........................................................................36 [L] LOW-VALUE................................................................68,70,77 [N] NetCOBOL for .NET...............................................................38 NetCOBOL for Windows.........................................................37 NODLOAD..............................................................................38 [O] OCCURS 句.............................................................................73 [P] platform....................................................................................39 PowerRDBconnector 動作環境ファイル......................20,29,128 [か] 仮想マシン...............................................................................19 環境変数.............................................................................29,30 既存 COBOL 資産.....................................................................5 既存システム..............................................................................2 機能互換....................................................................................1 強制的なトランザクション..........................................58,61,62,83 後方空白..................................................................................64 後方空白補正...........................................................29,31,35,64 混在項目..................................................................................72 コンパイル方法.........................................................................37 コード系..........................................................................37,39,74 [R] RCS......................................................................................37,39 REDEFINES 句...................................................................26,73 [S] SchemaName............................................................................35 Server Core...............................................................................19 ServerName.........................................................................29,30 SHREXT...................................................................................39 Suppress.....................................................................29,31,35,64 [さ] 索引ファイル.............................................................................24 - 136 - ファイル構成.............................................................................23 ファイル識別名.........................................................................34 ファイル識別名定数.................................................................36 プログラミングスタイル...........................................................3,10 プログラム原型..................................................................39,126 プロセス....................................................................................10 翻訳オプション....................................................................37,38 サブルーチン...............24,36,37,38,40,41,44,46,52,54,56,62,77 シノニム..................................................................................9,10 シフト JIS....................................................................64,69,74,87 順ファイル.................................................................................24 照合順序..................................................................................72 使用メモリ量.............................................................................78 シングルスレッド.......................................................................10 シングルセッション...............3,10,11,36,38,39,40,41,46,51,62,78 スタック域..................................................................................87 スレッド......................................................................................10 性能............................................................................................1 性能向上..................................................................................79 セキュリティ...............................................................................90 セッション..........................................................................7,40,44 セッションサブルーチン.............................................42,106,129 相対ファイル...............................................................................8 [ま] 待合わせ..................................................................................63 マルチスレッド.........................................................10,37,87,104 マルチセッション.........................3,8,10,11,36,40,49,54,56,78,86 文字コード変換........................................................................87 [や] ユーリティティ...........................................................................75 [ら] リモート......................................................................................90 リンク方法............................................................................37,39 レコード構成.............................................................................23 レコードロック.............................................................31,35,59,77 列定義......................................................................................25 [た] タイムアウト...............................................................................31 タイムアウト機能.......................................................................62 デッドロック...............................................................................85 データ溢れ...............................................................................76 データチェック...........................................................29,31,66,68 データベース..................................................................21,23,24 データベースオブジェクト........................................................23 データベース認証..........................................................24,46,49 データベース名........................................................................29 データ補正..........................................................................66,69 データ補正機能.......................................................................63 テーブル..............................................................................21,24 テーブル名...............................................................................23 テーブルロック.................................................35,54,60,62,77,83 動的プログラム構造.................................................................37 動的リンク構造.........................................................................38 トランザクション..........................................................12,51,79,80 トランザクション開始.................................................................53 トランザクション確定.................................................................54 トランザクションサブルーチン......................................53,56,131 トランザクション取消し.........................................................54,62 トランザクションログ..................................................................23 トレース...................................................................................107 トレースのレベル......................................................................29 トレースファイルのサイズ.........................................................29 トレースモード...........................................................................29 [な] 認証..........................................................................................45 認証機能..................................................................................12 認証サブルーチン.................................................................130 認証情報登録サブルーチン.............................46,47,49,50,104 認証情報の登録......................................................................50 [は] 排他制御........................................................................12,58,83 ビュー.........................................................................21,24,73,86 ファイル.....................................................................................24 ファイルアクセス機能.................................................................5 ファイル共用.............................................................................39 - 137 -