Top Banner
Solaris 9 Operating Enviroment J2S1-8280-01 PowerRDBconnector for NetCOBOL 1.0 説明書 PRIMEPOWERシリーズ
87

PowerRDBconnector for NetCOBOL 1.0 説明書

Jun 30, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PowerRDBconnector for NetCOBOL 1.0 説明書

Solaris 9 Operating Enviroment

J2S1-8280-01

PowerRDBconnector for NetCOBOL 1.0 説明書

PRIMEPOWERシリーズ

Page 2: PowerRDBconnector for NetCOBOL 1.0 説明書
Page 3: PowerRDBconnector for NetCOBOL 1.0 説明書

まえがき

製品の呼び名について

本書に記載されている製品の名称を、以下のように略して表記します。オペレーティング・システムを総称

して、OSと記載しています。データベース製品を総称して、データベースと記載しています。

● PowerRDBconnector for NetCOBOL 1.0

「PowerRDBconnector」

● Solaris(TM) 9 Operating Environment

「Solaris」または、「Solaris 9 OE」

● Oracle9i Database Enterprise Edition Release 2

「Oracle」、「Oracle9i」または、「Oracle9i Database Enterprise Edition」

● Oracle9i Database Standard Edition Release 2

「Oracle」、「Oracle9i」または、「Oracle9i Database Standard Edition」

● Oracle Database 10g Release 1

「Oracle」、「Oracle10g」または、「Oracle Database 10g」

● NetCOBOL Base Edition 7.0

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Standard Edition 7.0

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Professional Edition 7.0

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Base Edition 運用パッケージ 7.0

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Standard Edition 運用パッケージ 7.0

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Base Edition 運用パッケージ 7.2

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Base Edition 開発・運用パッケージ 7.2

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Professional Edition 開発・運用パッケージ 7.2

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Standard Edition 運用パッケージ 7.2

「NetCOBOL」または、「NetCOBOL for Solaris」

● NetCOBOL Standard Edition 開発・運用パッケージ 7.2

「NetCOBOL」または、「NetCOBOL for Solaris」

PowerRDBconnectorについて

PowerRDBconnectorは、以下のオペレーティング・システムとデータベースで動作します。

製品名 オペレーティング・システム データベース

PowerRDBconnector for NetCOBOL 1.0 日本語Solaris 9 OE ● Oracle9i Release 2

● Oracle Database 10g

Release 1

i

Page 4: PowerRDBconnector for NetCOBOL 1.0 説明書

本書の目的

本書は、PowerRDBconnector の製品概要および使用方法から注意事項について説明しています。

本書の読者

本書は、PowerRDBconnector の導入、環境設定および運用管理を行う方を対象としています。

本書を読むにあたり、以下について熟知している必要があります。

● COBOL及びNetCOBOL

● データベース及びOracle

● オペレーティング・システム及びSolaris

本書の構成

本書は、以下の章で構成されています。

第1章 導入前に

本製品を使用する際に考慮及び配慮することを説明します。

第2章 PowerRDBconnector とは

PowerRDBconnector の特長及び機能について説明します。

第3章 PowerRDBconnector の使用手引き

PowerRDBconnector の使用方法について説明します。

第4章 使用上の注意

本製品を使用する際の注意を説明します。

本書の読み方

本書は、PowerRDBconnector の使用方法について書かれています。

本製品を理解していただけるように、関連製品のオペレーション・システム(OS)、NetCOBOL及びデータベー

スに関する記載(設定方法、仕様など)をしていますが、関連製品が変更した場合に異なることがあります。

また、本書の中で関連製品のマニュアルを参照するように出来る限り記載していますが、すべてに個所で記

載していません。

関連製品に関する最新情報及び詳細情報は、必ず各関連製品のマニュアルを参照ください。

● COBOLに関しては、NetCOBOL及び関連製品のマニュアルを必ず参照してください。

● データベースに関しては、ご使用になるデータベース及び関連製品のマニュアルを必ず参照してください。

商標について

● MicrosoftおよびWindowsは、米国Microsoft Corporationの米国およびその他の国における登録商標です。

● Oracleは、米国Oracle Corporationの登録商標です。

● Sun、Sun Microsystems、Sunロゴ、SolarisおよびすべてのSolarisに関連する商標及びロゴは、米国およ

びその他の国における米国Sun Microsystems, Inc.の商標または登録商標です。

● UNIXは、米国およびその他の国におけるオープン・グループの登録商標です。本書に記載されている会社

名および製品名は、各社の商標または登録商標です。

● JavaおよびすべてのJava関連の商標およびロゴは、米国およびその他の国における米国Sun Microsystems,

Inc.の商標または登録商標です。

● その他、本書に記載されているシステム名、製品名などには必ずしも商標表示(TM、R)を付記していませ

ん。

高度な安全性が要求される用途への使用について

本製品は、一般事務用、パーソナル用、家庭用、通常の産業等の一般的用途を想定して開発・設計・製造され

ているものであり、原子力施設における核反応制御、航空機自動飛行制御、航空交通管制、大量輸送システム

における運行制御、生命維持のための医療用機器、兵器システムにおけるミサイル発射制御など、極めて高度

な安全性が要求され、仮に当該安全性が確保されない場合、直接生命・身体に対する重大な危険性を伴う用途

ii

Page 5: PowerRDBconnector for NetCOBOL 1.0 説明書

(以下「ハイセイフティ用途」という)に使用されるよう開発・設計・製造されたものではありません。

お客さまは本製品を必要な安全性を確保する措置を施すことなくハイセイフティ用途に使用しないでくださ

い。 また、お客さまがハイセイフティ用途に本製品を使用したことにより発生する、お客様または第三者か

らのいかなる請求または損害賠償に対しても富士通株式会社およびその関連会社は一切責任を負いかねます。

インターネットでの使用について

本製品はインターネットへのサービスを提供する用途を想定して設計・製造されておりません。 インターネッ

トに接続しない環境(ローカルネットワークまたはイントラネット内)で使用するか、インターネットに接続

して使用する場合は、運用環境によりセキュリティ侵害対策を構築した上でご使用ください。

iii

Page 6: PowerRDBconnector for NetCOBOL 1.0 説明書

iv

2004年8月

お願い

本書を無断で他に転載しないようお願いします。

本書は予告なしに変更されることがあります。

All Rights Reserved,Copyright(C) 富士通株式会社 2004

Page 7: PowerRDBconnector for NetCOBOL 1.0 説明書

目次

第1章 導入前に考慮すること....................................................................... 1 1.1 本製品で実現できる性能..................................................................... 2 1.2 本製品で実現できる排他制御................................................................. 3 1.3 対象とする既存システム..................................................................... 4 1.4 データベース製品を使用する際の考慮......................................................... 5 1.5 本製品を使用する際の注意................................................................... 6

第2章 PowerRDBconnector とは..................................................................... 7 2.1 PowerRDBconnector の特長................................................................... 8 2.1.1 入出力文でデータベース・アクセス..................................................... 8 2.1.2 既存COBOLを再利用.................................................................... 9 2.1.3 データベースを活用したシステム構築................................................... 9

2.2 機能...................................................................................... 10 2.2.1 ファイルアクセス機能................................................................ 10 2.2.2 トランザクション機能................................................................ 11 2.2.3 排他制御............................................................................ 12 2.2.4 認証機能............................................................................ 12 2.2.5 機能範囲............................................................................ 13

2.3 システム構成.............................................................................. 18 2.3.1 運用形態............................................................................ 19

第3章 PowerRDBconnector の使用手引き............................................................ 21 3.1 環境設定.................................................................................. 22 3.1.1 PowerRDBconnector を構成する要素.................................................... 23 3.1.2 環境設定の手順...................................................................... 24 3.1.3 データベースの作成.................................................................. 27 3.1.4 PowerRDBconnector 動作環境ファイル.................................................. 35 3.1.5 COBOL初期化ファイル................................................................. 40

3.2 トランザクションの使用方法................................................................ 42 3.2.1 トランザクション.................................................................... 44

3.3 エラー時の対処............................................................................ 46 3.3.1 ファイルアクセス時のエラー情報...................................................... 47 3.3.2 トランザクションアクセス時のエラー情報.............................................. 54

第4章 使用上の注意.............................................................................. 57 4.1 性能に関する注意事項...................................................................... 58 4.1.1 データベースの準備.................................................................. 58 4.1.2 アプリケーションによる性能向上...................................................... 61

4.2 排他制御に関する注意事項.................................................................. 63 4.2.1 OPEN文での排他制御について(TableLock)............................................... 66 4.2.2 READ文での排他制御について(RecordLock).............................................. 68 4.2.3 アプリケーションが排他制御を考慮する場合............................................ 72

4.3 COBOLアプリケーションに関する注意事項..................................................... 73 4.3.1 ファイル識別名について.............................................................. 73 4.3.2 LOW-VALUE、HIGH-VALUEについて....................................................... 73 4.3.3 COBOLで扱えないデータ値との整合性について........................................... 74 4.3.4 データベースで扱えないデータ値との整合性について.................................... 74 4.3.5 キーに重複した値がある索引ファイルについて.......................................... 74

4.4 その他の注意事項.......................................................................... 75 4.4.1 レコード長不一致について............................................................ 75 4.4.2 キー値及びレコードの並び順について.................................................. 75 4.4.3 英数字項目と日本語項目のサイズ制限について.......................................... 75

v

Page 8: PowerRDBconnector for NetCOBOL 1.0 説明書

vi

4.4.4 ビューの使用について................................................................ 75 4.4.5 読取り一貫性とデータ整合性について.................................................. 75 4.4.6 行(レコード)の格納位置について.................................................... 75 4.4.7 Oracleのバージョンを変更した際の対処について........................................ 76 4.4.8 トランザクションの終了状態について.................................................. 76 4.4.9 多重動作時の設定について............................................................ 76 4.4.10 インターネットでの使用について...................................................... 76

付録A 他製品のファイル資源...................................................................... 77 A.1 論理ファイル.............................................................................. 77

索引.............................................................................................. 79

Page 9: PowerRDBconnector for NetCOBOL 1.0 説明書

1.1 本製品で実現できる性能

第1章 導入前に考慮すること

本章では、本製品を使用する際に考慮及び配慮することを説明します。この製品をはじめてお使

いになる方は、必ずお読みください。

1

Page 10: PowerRDBconnector for NetCOBOL 1.0 説明書

第1章 導入前に考慮すること

1.1 本製品で実現できる性能

本製品は、データベース製品が提供するSQLアクセスインターフェースを使用して、COBOLアプリ

ケーションの入出力文を処理します。

そのため実現できる性能は、入出力文の処理論理を変更せずに、SQLアクセスインターフェース

でアクセスした場合と同等です。

入出力文を直接サポートしているファイルシステム系製品の入出力文COBOLアプリケーションと

同等の性能は得られません。

データベースに対するチューニングは必要です。

データ検索では、COBOLの索引ファイルのレコードキーに対応するデータベースのインデックス

が必要です。

データベースでデータ更新を行うと、データベースではデータ保証のため、履歴管理で管理され

ている履歴ファイル(OracleはREDOログ、UNDO領域、アーカイブREDOログ)にも更新が行われま

す。そのため、履歴管理の無いファイルシステム系製品と同等の更新性能が得られません。

データ更新を性能向上させるには、トランザクションを適用して、更新データをトランザクショ

ン単位でまとめてコミットする必要があります。

2

Page 11: PowerRDBconnector for NetCOBOL 1.0 説明書

1.2 本製品で実現できる排他制御

1.2 本製品で実現できる排他制御

データベースでは、排他制御のメカニズムがファイルシステム系製品と大きく異なります。また、

データベース製品同士でも異なります。

使用するデータベース製品の排他制御を理解する必要があります。

Oracleでは、排他を維持する区間がトランザクション単位のみとなるため、トランザクションの

適用が必須となります。

重要:本製品は、排他制御を実現するために強制的にトランザクションを操作してテーブル又は

レコードに対してロックを行います。詳しくは、「4.2 排他制御に関する注意事項」を参照して

ください。

3

Page 12: PowerRDBconnector for NetCOBOL 1.0 説明書

第1章 導入前に考慮すること

1.3 対象とする既存システム

本製品は、データベース製品を使用して、既存システムの入出力文COBOLアプリケーションをSQL

文COBOLアプリケーションに書き直さずに再活用することを目的としたもので、以下の既存シス

テムの入出力文COBOLアプリケーションを対象としています。

● 中小規模のシステム

● 旧既存システムからの入出力文COBOLアプリケーションの再活用

● CSP/FX(FX-RDB)、ASP(RDB/6000、Symfoware6000)、UXP/DS(RDB/7000、SymfoWARE7000)か

らの移行

4

Page 13: PowerRDBconnector for NetCOBOL 1.0 説明書

1.4 データベース製品を使用する際の考慮

1.4 データベース製品を使用する際の考慮

データベース製品を使用するには、データベースに熟知し、高い技術力を持つ技術者である必要

があります。データベースを理解せずに業務を設計すると、設計後に大きな見直しが必要となり

ます。

5

Page 14: PowerRDBconnector for NetCOBOL 1.0 説明書

第1章 導入前に考慮すること

1.5 本製品を使用する際の注意

本製品を使用する上で性能、排他制御、プログラミングなどで考慮が必要です。

たとえば、ファイルアクセス系製品とは、データ値の扱いが異なります。データベースでは、文

字データ型には文字のみ、数字データ型には数値のみが格納可能なため、データ値のチェックを

行います。一方、COBOLではプログラミングの仕方で、数字データ型に文字が設定されることが

あります。

そのようなデータ操作はできないため、アプリケーションの修正が必要になります。

詳しくは、「第4章 使用上の注意」を参照してください。

6

Page 15: PowerRDBconnector for NetCOBOL 1.0 説明書

1.5 本製品を使用する際の注意

第2章 PowerRDBconnector とは

本章では、PowerRDBconnector の特長及び機能について説明します。

7

Page 16: PowerRDBconnector for NetCOBOL 1.0 説明書

第2章 PowerRDBconnector とは

2.1 PowerRDBconnector の特長

この節では、PowerRDBconnector の特長について説明します。PowerRDBconnector には以下の特

長があります。

● 入出力文でデータベース・アクセス

● 既存COBOLアプリケーションを再利用

● データベースを活用したシステム構築

2.1.1 入出力文でデータベース・アクセス

PowerRDBconnector は、入出力文COBOLアプリケーションのOPEN、START、READ、REWRITE、WRITE、

CLOSEといった入出力文でデータベースのテーブル、ビューにアクセスが行えます。

テーブル ビュー

OPEN READ WRITE CLOSE

入出力文COBOLアプリケーション データベース

データベースに対して COBOLの入出力文インターフェースで

ファイルアクセスを行えます。

インデックス

図1.1 入出力文でデータベース・アクセス

8

Page 17: PowerRDBconnector for NetCOBOL 1.0 説明書

2.1 PowerRDBconnector の特長

2.1.2 既存COBOLを再利用

SQL文でSQL文COBOLアプリケーションに書き直さなくても、従来の入出力文COBOLアプリケーショ

ンで、データベース(テーブル、ビュー)にファイルアクセスを行えるため、従来のCOBOLアプ

リケーションコードを再利用できます。

従来のCOBOLアプリケーションコードで再利用

例えば、ファイルシステムからデータファイルをデータベースにデータ移行し、入出力文COBOL

アプリケーションを再利用してデータベースにアクセスすることができます。

なお、

4章 使

2.1.3 デ

データ

COBOL業

COBOLアプリケーション

SQLへの書直し不要

OPEN READ WRITE CLOSE

キー

ファイルシステム

理ファイル 論理ファイル

データ移行

図1.2 既存COBOLを再利用

入出力文COBOLアプリケーションのプログラミング上の注意点が

用上の注意」を参照してください。

ータベースを活用したシステム構築

ベース機能を活用して、バックアップ、リカバリ、クラスタシス

務システムを構築できます。

COBOLアプリケーション

OPEN READ WRITE CLOSE

テー

データベース

インデックス

ビュー ブル

ります。詳しくは、「第

ムなどで堅牢性のある

9

Page 18: PowerRDBconnector for NetCOBOL 1.0 説明書

第2章 PowerRDBconnector とは

2.2 機能

この節では、PowerRDBconnector の機能について説明します。

● ファイルアクセス機能

● トランザクション機能

● 排他機能

● 認証機能

● 機能範囲

2.2.1 ファイルアクセス機能

データベース(テーブル又はビュー)に対して、COBOLファイルアクセス(順ファイル、索引フ

ァイル)を行うことができます。

表1.1 ファイルアクセス機能

編成

ORGANIZATION

アクセスモード

ACCESS MODE データベースオブジェクト

SEQUENTIAL SEQUENTIAL(順呼出し) テーブル、ビュー

SEQUENTIAL(順呼出し)

RANDOM(乱呼出し) INDEX

DYNAMIC(動呼出し)

テーブル、ビュー、インデックス

テー

索引アクセス

入出力文COBOLアプリケーション

図1.3 ファイルアクセス機能

10

データベース

アクセス

インデックス

ブル ビュー

Page 19: PowerRDBconnector for NetCOBOL 1.0 説明書

2.2 機能

2.2.2 トランザクション機能

COBOLファイルアクセスに対して、トランザクション操作(開始、終了、取消し)を行うことが

できます。

COBOLアプリケーション

OPEN トランザクション開始命令 READ WRITE トランザクション終了命令 トランザクション開始命令READ WRITE トランザクション取消し命令

トランザクション開始

データベース

重要:本製品は、排他制御

レコードに対してロックを

ください。

トランザクション

トランザクション開始

トランザクション終了

インデックス

テーブル ビュー

トランザクション

トランザクション取消し

図1.4 トランザクション機能

を実現するために強制的にトランザクションを操作してテーブル又は

行います。詳しくは、「4.2 排他制御に関する注意事項」を参照して

11

Page 20: PowerRDBconnector for NetCOBOL 1.0 説明書

第2章 PowerRDBconnector とは

2.2.3 排他制御

排他制御を実現するために強制的にトランザクションを操作してテーブル又はレコードに対し

てロックを行います。詳しくは、「4.2 排他制御に関する注意事項」を参照してください。

● I-OオープンのREAD文でのレコードに対するロック

● OPEN文でのテーブルに対するロック

2.2.4 認証機能

以下の方法で認証できます。

● OS認証

データベースのオペレーション・システム認証機能を使用して認証します。

● データベース認証

データベースのデータベース認証機能を使用して認証します。

12

Page 21: PowerRDBconnector for NetCOBOL 1.0 説明書

2.2 機能

2.2.5 機能範囲

利用できる機能範囲を説明します。

2.2.5.1 COBOLアプリケーションの機能範囲

利用できるCOBOLアプリケーションの機能範囲を以下に示します。

表1.2 COBOLアプリケーションの機能範囲

分類 項目 利用可否

レコード順ファイル ○

相対ファイル × ファイル ファイル

編成

索引ファイル ○

固定長レコード形式 ○ レコード

形式 可変長レコード形式 × レコード

レコードの 大長(バイト数) 32,760

SELECT句 OPTIONAL指定 ×

ファイル識別名指定 ○

ファイル識別名定数指定 ○ ASSIGN句

データ名指定 ○

FILE STATUS句 ファイル状態 ○

AUTOMATIC ×

EXCLUSIVE × LOCK MODE句

MANUAL ×

RECORD KEY句 ○

ALTERNATE

RECORD KEY句指定できるキーの 大個数 98

英数字 ○

日本語 ○

符号なし外部10進数 ○

符号付き外部10進数 ○

符号なし内部10進数 ○

符号付き内部10進数 ○

ファイル

機能

ファイル

管理記述項

レコード

キーの項目

符号なし2進数 ○

13

Page 22: PowerRDBconnector for NetCOBOL 1.0 説明書

第2章 PowerRDBconnector とは

符号付き2進数 ○

多重項目キー ○

OPEN文 ○

CLOSE文 ○

READ文 ○

WRITE文 ○

REWRITE文 ○

START文 ○

DELETE文 ○

プロセス(シングルスレッド) ○ プログラミング スレッド

マルチスレッド ×

開始 ○

終了 ○ 操作

取消し ○

トランザクション

分離レベル ReadCommitted

テーブルロック ○ 排他制御 対象

レコードロック ○

1プロセス(シングルスレッド)で可能な 大オープン数 600

1システムで可能な 大多重実行数 1,000

● 相対ファイル

COBOLファイルシステムの相対ファイルなどの使用を検討してください。

● ASSIGN句

ASSIGN句はファイル識別名で行い、「3.1.5 COBOL初期化ファイル」に指定することを推奨

します。なお、PowerRDBconnectorではファイル識別名を一意の名前で指定してください。

● FILE STATUS句

FILE STATUS 02 は返却しません。

● ALTERNATE RECORD KEY句

指定できるキーの 大個数は、RECORD KEY句と合わせて99個です。

● トランザクション操作

トランザクション操作をするには、CALL文で PowerRDBconnector が提供するトランザク

ションサブルーチンを呼び出します。

● 排他制御

テ ー ブ ル ロ ッ ク 又 は レ コ ー ド ロ ッ ク を 指 定 し ま す 。 指 定 方 法 は 、「 3.1.4

PowerRDBconnector 動作環境ファイル」を参照してください。

● 1システムで可能な 大多重実行数

同時実行できる 大多重実行数は、アプリケーションの処理内容(入出力文回数)、デー

タベース及び使用するハードウェア(CPU、ハードディスク能力)の要件に依存します。

たとえば、バッチプログラムの大量データ処理は、高負荷となるため、多重実行に耐えら

14

Page 23: PowerRDBconnector for NetCOBOL 1.0 説明書

2.2 機能

れません。

15

Page 24: PowerRDBconnector for NetCOBOL 1.0 説明書

第2章 PowerRDBconnector とは

2.2.5.2 参考:データベースの機能範囲

ここでは、データベースの機能範囲を入出力文COBOLの機能範囲に置き換えて説明します。

これは、あくまで参考程度の説明です。詳細は、データベース製品のマニュアルを参照してくだ

さい。

表1.2.1 参考:データベースの機能範囲

分類 項目 Oracle

ファイル定義ツール SQL*Plus

ユーティリティなど

ファイルの 大サイズ

(バイト数) 無制限

ファイル

ファイルの 大数 無制限

レコードの 大長(バイト数) 2,000,000

レコード内の 大項目数(列数) 1,000

レコード

レコードの 大数(行数) 無制限

指定できる項目の 大

個数 32

RECORD KEY句

指定できる項目総長の

大(バイト数) 設定依存

指定できるキーの 大

個数 無制限

指定できる項目の 大

個数 32

ALTERNATE

RECORD KEY句

指定できる項目総長の

大(バイト数) 設定依存

ファイル

管理記述項

多重項目キーに定義できる 大列数32

トランザクション ○

リカバリ ○

バックアップ ○

1テーブルに定義できるインデックス数 無制限

1プロセス(シングルスレッド)で

可能な 大オープン数 設定依存

ファイル

機能

1システムで可能な 大オープン数 特に記載

なし

16

Page 25: PowerRDBconnector for NetCOBOL 1.0 説明書

2.2 機能

● Oracleでの機能範囲について

Oracleのマニュアルをもとに記載しています。詳しくは、Oracleが提供している情報を参

照してください。

1) ファイルの 大数

Oracleのマニュアルに無制限と記載されているため、無制限と記載しています。

2) レコードの 大長(バイト数)

Oracleがサポートする行長が大きいが、PowerRDBconnectorがサポートするレコー

ドの 大長(32,760バイト)に制限されます。

3) レコードの 大数(行数)

Oracleのマニュアルに無制限と記載されているため、無制限と記載しています。

4) キーに指定できる項目の 大個数

Oracleのマニュアルに32と記載されているため、32と記載しています。

5) キー指定できる項目総長の 大(バイト数)

Oracleのデータ・ブロックのサイズ(初期化パラメーター DB_BLOCK_SIZE によっ

て指定される)に依存します。

6) 指定できるキーの 大個数

Oracleのマニュアルに無制限と記載されているため、無制限と記載しています。

7) 1プロセス(シングルスレッド)で可能な 大オープン数

1セッション当たりの制限は、Oracleの初期化パラメーター OPEN_CURSORS に依存

します。

17

Page 26: PowerRDBconnector for NetCOBOL 1.0 説明書

第2章 PowerRDBconnector とは

2.3 システム構成

PowerRDBconnector は、以下の製品が必要です。

表1.3 システム構成

OS 以下のいずれかの製品が必要です。

● Solaris 9 OE

COBOL

以下のいずれかの製品が必要です。

● NetCOBOL Base Edition 7.0

● NetCOBOL Standard Edition 7.0

● NetCOBOL Professional Edition 7.0

● NetCOBOL Base Edition 開発・運用パッケージ 7.2

● NetCOBOL Standard Edition 開発・運用パッケージ 7.2

● NetCOBOL Professional Edition 開発・運用パッケージ 7.2 開発

データベース

以下のいずれかの製品が必要です。

● Oracle9i Database Enterprise Edition Release 2

新パッチ(PSR9.2.0.5以降)を適用してください。

● Oracle9i Database Standard Edition Release 2

新パッチ(PSR9.2.0.5以降)を適用してください。 ● Oracle Database 10g Release 1

OS 以下のいずれかの製品が必要です。

● Solaris 9 OE

COBOL

以下のいずれかの製品が必要です。

● NetCOBOL Base Edition 運用パッケージ 7.0

● NetCOBOL Standard Edition 運用パッケージ 7.0

● NetCOBOL Base Edition 運用パッケージ 7.2

● NetCOBOL Standard Edition 運用パッケージ 7.2 運用

データベース

以下のいずれかの製品が必要です。

● Oracle9i Database Enterprise Edition Release 2

新パッチ(PSR9.2.0.5以降)を適用してください。

● Oracle9i Database Standard Edition Release 2

新パッチ(PSR9.2.0.5以降)を適用してください。 ● Oracle Database 10g Release 1

18

Page 27: PowerRDBconnector for NetCOBOL 1.0 説明書

2.3 システム構成

2.3.1 運用形態

本製品は、NetCOBOLが動作するサーバコンピュータにインストールし、各端末から使用します。

開発:開発系製品

運用:運用系製品

リモート端末

(X Window)

WWW フ ゙ ラ ウ サ ゙

(MeFt/Web)

コンソール端末

製品本体

Oracle Database

PowerRDBconnector for

NetCOBOL

NetCOBOL

COBOL アプリケーション

図1.5 運用形態

19

Page 28: PowerRDBconnector for NetCOBOL 1.0 説明書

第2章 PowerRDBconnector とは

20

Page 29: PowerRDBconnector for NetCOBOL 1.0 説明書

2.3 システム構成

第3章 PowerRDBconnector の使用手引き

本章では、PowerRDBconnector の使用方法について説明します。

21

Page 30: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.1 環境設定

この節では、PowerRDBconnector を構成する環境について説明します。

● PowerRDBconnector を構成する要素

● 環境設定の手順

● データベースの作成

● PowerRDBconnector 動作環境ファイル

● COBOL初期化ファイル

22

Page 31: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

3.1.1 PowerRDBconnector を構成する要素

PowerRDBconnector を構成する要素は以下のようになります。

DBプロバイダー

PowerRDBconnec

入出力文COBOアプリケーショ

データベース

ビュー

インデックス

テーブル

データベース製品

図2.1 PowerRDBconnector を構成

各構成要素を以下に示します。

表2.1 PowerRDBconnector を構成

入出力文COBOLアプリケーション 入出力文でファイ

COBOL初期化ファイル COBOLアプリケーシ

ァイル

PowerRDBconnector 動作環境ファイル PowerRDBconnecto

イル

PowerRDBconnector 入出力文インター

る本ソフトウェア

DBプロバイダー

データベースをア

ンターフェース

Oracle Call Inte

データベース PowerRDBconnecto

テーブル データファイルに

Oracleでは、表と

ビュー 索引ファイルに相

インデックス レコードキーに相

Oracleでは、索引

COBOL 初期化ファイル (COBOL.CBR)

PowerRDBconnector 動作環境ファイル (DBIO_ENV)

tor

Lン

COBOL製品

する要素

する要素

ルアクセスするCOBOLアプリケーション

ョンの実行情報を格納するテキストフ

r の動作環境を格納するテキストファ

フェースでデータベースをアクセスす

クセスするデータプロバイダー又はイ

rface(OCI)を使用します。

r がサポートするデータベース

相当するデータベースオブジェクト

呼んでいます。

当するデータベースオブジェクト

当するデータベースオブジェクト

と呼んでいます。

23

Page 32: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.1.2 環境設定の手順

必要な環境設定の手順を説明します。

NetCOBOL製品

のインストール

NetCOBOL製品をインストールします。詳しくは、NetCOBOL製品のマ

ニュアルを参照してください。

データベース製品

のインストール

データベース製品をインストールします。

● Oracle Call Interface(OCI)はインストールの既定値で

選択されています。非選択としないでください。

● OS認証を行う場合は、Oracleに設定が必要です。

― REMOTE_LOGIN_PASSWORDFILE 初期化パラメーターが

NONE に設定されていることを確認します。

― オペレーティング・システムに定義されたOSDBA 又は

OSOPER グループに追加したユーザーを使用します。

詳しくは、Oracleのマニュアルを参照してください。なお、

Oracleの 新パッチ(PSR9.2.0.5以降)を適用してください。

PowerRDBconnector

のインストール

PowerRDBconnector をインストールします。

詳しくは、製品CDに添付されているインストールガイド

(D23QRK-0100-1.pdf)を参照してください。

環境の確認

PowerRDBconnector は、NetCOBOL及びデータベースの実行環境(環

境変数など)が正しく設定されたプロセス上で動作できます。正し

く設定されているか確認してください。PowerRDBconnectorは、シ

ステム既定環境(/usr/lib 及び /usr/bin)で動作します。

NetCOBOL 各種の環境変数(PATH、LD_LIBRARY_PATH、LANG)

などの設定が必要です。詳しくは、NetCOBOL製品

のマニュアルを参照してください。

Oracle 各種の環境変数(PATH、ORACLE_BASE、

ORALCE_HOME、ORACLE_SID、ORACLE_NLS33、

LD_LIBRARY_PATH、LD_LIBRARY_PATH_64、LANG、

NLS_LANG)などの設定が必要です。なお、Oracle

の32ビット版と64ビット版でLD_LIBRARY_PATH、

LD_LIBRARY_PATH_64の設定が異なります。詳しく

は、Oracleのマニュアルを参照してください。

24

Page 33: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

データベースの作成

入出力文COBOLアプリケーションからアクセスするテーブル及びビ

ューを作成します。

インデックス作成と 適化も必ず行ってください。

PowerRDBconnector

動作環境ファイル

の作成

PowerRDBconnector の動作環境ファイルを作成します。

入出力文

COBOLアプリケーション

の準備

入出力文COBOLアプリケーションを準備します。

COBOLアプリケーションの作成/コンパイル方法は、NetCOBOLのマニ

ュアルを参照してください。

COBOLアプリケーションのリンクはOracleの仕様で、以下のように

行います。

● Oracleが提供しているライブラリ(OCIライブラリ)との動的

リンク指定が必要です。

例:

ld -dy –o P1 P1.o –lclntsh

トランザクションを使用する場合は、さらにトランザクショ

ンサブルーチンの動的リンク指定が必要です。

例:

ld -dy –o P1 P1.o –lclntsh –lXITRN

ldはNetCOBOLのリンクコマンドです。-dyは動的リンクの指定

です。”-o P1”は出力ファイルの指定です。”P1.o”は入力

ファイルの指定です。-lclntshはOracleが提供しているライ

ブラリ(OCIライブラリ)とのリンク指定です。–lXITRNはトラ

ンザクションサブルーチンのリンク指定です。

COBOL初期化ファイル

の作成

入出力文COBOLアプリケーションの実行に必要なCOBOL初期化ファ

イルを作成します。

25

Page 34: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

COBOLアプリケーション

の実行

入出力文COBOLアプリケーションを実行します。

26

Page 35: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

3.1.3 データベースの作成

COBOLで定義されているファイルに対応するデータベースオブジェクト(テーブル又はテーブル

とビュー)を作成します。

FILE-CONTROL.

SELECT T1 AS

OR

AC

RE

RE

FILE SECTION.

FD T1.

01 REC.

02 C1

02 C2

02 C3

02 GRP.

03 C4

03 C5

02 C6

02 C7

02 C7GRP

03 C7R1

03 C7R2

ァイル定義

SIGN TO FILE1

GANIZATION IS INDEXED

CESS MODE IS RANDOM

CORD KEY IS C1

CORD FORMAT IS REC.

PIC X(10).

PIC N(10).

PIC 9(4) PACKED-DECIMAL.

PIC S9(5) COMP.

PIC X(3).

PIC X(2) OCCURS 2.

PIC X(5).

REDEFINES C7.

PIC X(2).

PIC S9(4).

データベース

ビュー

インデックス

テーブル

作成

図2.2 データベースの作成

27

Page 36: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.1.3.1 作成手順

以下の手順を参考に作成します。正しく作成しないと動作できませんので、注意して作成してく

ださい。

SQL定義文の作成

1. テーブル名

TableNameプロパティに設定できる任意の名前にします。

2. ファイル構成

レコードキーが定義されたファイルは、インデックス又はプ

ライマリキーを定義します。「表2.2 ファイルからテーブル又

はビューの対応」を参考にデータベースオブジェクトを構成

します。

3. レコード構成

ファイル記述項(FD句)のレコード記述項に定義したデータ

本来の格納形式を定義した基本項目からテーブル又はビュー

の列を定義します。「表2.3 COBOLデータ定義とDBデータ定義

の対応」を参考に列定義(データ型、列名)を構成します。

なお、列には NOT NULL制約を定義してください。

SQL定義文の実行

作成したSQL定義文を実行します。

Oracle SQL*Plus ユーティリティで実行できます。

28

Page 37: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

3.1.3.2 ファイルからテーブル又はビューの対応

ファイルからテーブル又はビューの対応を以下に示します。ビューの構成は、「ファイルからテー

ブル又はビューの作成例」で記載されている範囲の1つのテーブルで構成された単一ビューで使

用してください。なお、ビューに関数、表結合、副問合せなどが定義されている場合は動作でき

ません。

表2.2 ファイルからテーブル又はビューの対応

ファイル編成 データベースオブジェクト コメント

順ファイル

以下のいずれかで作成

● テーブルで作成

● テーブルとビューで作成

テーブルのみで作成する場合は、テーブルの列名

は「表2.3 COBOLデータ定義とDBデータ定義の対

応」で定めた列名にする必要があります。

テーブルとビューで作成すると、テーブルの列名

を任意の名前で作成できます。

索引ファイル

以下のいずれかで作成

● インデックス又はPRIMARY

KEY付きテーブル ● 上記のテーブルを導出元に

したビュー

テーブルのみで作成する場合は、テーブルの列名

は「表2.3 COBOLデータ定義とDBデータ定義の対

応」で定めた列名にする必要があります。

テーブルとビューで作成すると、テーブルの列名

を任意の名前で作成できます。

RECORD KEY句にあたる列にインデックス又は

PRIMARY KEYを設定します。

UNIQUE属性は、RECORD KEY句に合わせます。

インデックス付きテーブルを導出元にしたビュー

でも索引ファイルとしてアクセスできます。

29

Page 38: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.1.3.3 列定義の対応

列定義の対応を以下に示します。

表2.3 COBOLデータ定義とDBデータ定義の対応

COBOL定義 DBデータ定義

PICTURE句 項目

種類

USAGE句

符号 精 度

(p)

位 取 り

(s)

データ型 列名

なし 1~18 0~18 NUMBER(p,s) <任意の文字列>_UNSIGN_NUMERIC 又は <任意の文字列>_UNUM

DISPLAY

(外部10進)

あり 1~18 0~18 NUMBER(p,s) <任意の文字列>_NUMERIC 又は <任意の文字列>_NUM

なし 1~18 0~18 NUMBER(p,s) <任意の文字列>_UNSIGN_DECIMAL 又は <任意の文字列>_UDEC

数字

項目

PACKED-DECIMAL

(内部10進)

あり 1~18 0~18 NUMBER(p,s) <任意の文字列>_DECIMAL 又は <任意の文字列>_DEC

1~4 --- NUMBER(p,0) <任意の文字列>_UNSIGN_SMALLINT 又は <任意の文字列>_USINT

5~9 --- NUMBER(p,0) <任意の文字列>_UNSIGN_INTEGER 又は <任意の文字列>_UINT

なし

10~18 --- NUMBER(p,0) <任意の文字列>_UNSIGN_BIGINT 又は <任意の文字列>_UBINT

1~4 --- NUMBER(p,0) <任意の文字列>_SMALLINT 又は <任意の文字列>_SINT

5~9 --- NUMBER(p,0) <任意の文字列>_INTEGER 又は <任意の文字列>_INT

整数

項目

COMP,

COMPUTATIONAL,

BINARY

(2進)

あり

10~18 --- NUMBER(p,0) <任意の文字列>_BIGINT 又は <任意の文字列>_BINT

p --- CHAR(p) 英数字

項目 X(英数字) ---

p --- NCHAR(p)

<任意の文字列>_CHAR 又は <任意の文字列>_CHR

p --- CHAR(p×2) 日本語

項目 N(日本語) ---

p --- NCHAR(p)

<任意の文字列>_NCHAR 又は <任意の文字列>_NCHR

精 度

(p)

: 精度は、全体桁数及び項目の長さ(文字数)です。

位取り

(s)

: 位取りは、小数部の桁数です。

1) COBOLのレコード記述項のレコード長とテーブルの行長でCOBOLがチェックします。必ず、レコード記述項に合

わせて列を定義してください。 2) 必ず、RECORD KEY句に定義したキーに適切なインデックスを定義してください。 3) COBOLのレコード記述項に定義したOCCURS句は、繰り返された基本項目が列になります。 4) COBOLのレコード記述項に定義したREDEFINES句は、データ本来の格納形式を定義した基本項目を列としてくだ

さい。

30

Page 39: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

5) COBOLで扱えるデータが格納されるようにしてください。

入出力文COBOLアプリケーション以外の各種のアプリケーション、ユーティリティとテーブルを併用する際は、

以下の注意が必要です。

1. 符号無し数字項目にマイナス値が格納されてしまうことがあります。

符号無し数字項目でマイナス値は扱えません。

マイナス値を制限したい場合は、CHECK制約などで制限することがデータベースの機能で可能です。

2. 整数項目の精度(p)より大きい整数値が格納されてしまうことがあります。

整数値の範囲を制限したい場合は、CHECK制約などで制限することがデータベースの機能で可能です。

3. NULL値が格納されてしまうことがあります。

NULL値は扱えません。NULL値を制限したい場合は、NOT NULL制約などでNULL値を制限することがデータベ

ースの機能で可能です。

4. N項目に半角文字でREADされてしまうことがあります。

N項目に対応したCHAR又はNCHARに半角文字が格納されていると、N項目で半角文字を扱わない NetCOBOL

で半角文字が READ されます。

半角文字を制限したい場合は、CHECK制約などで半角文字を制限することがデータベース機能で可能です。

6) 文字セットは、NetCOBOLの文字コードとデータベースの文字コードを一致させて使用してください。データ型

及び文字コードの組合せを以下に示します。

表2.3.2 文字セットの組合せ

NetCOBOL Oracle 文字セット

データ型 文字コード データ型 文字コード

X項目 SJIS CHAR JA16SJIS

SJIS N項目

SJIS

(全角のみ)CHAR JA16SJIS

X項目 EUC CHAR JA16EUC

EUC N項目

EUC

(全角のみ)CHAR JA16EUC

1) 文字セットが一致しない場合は、Oracleが自動的に文字コード変換を行います。

2) 文字セットの設定方法は、NetCOBOL及びデータベースのマニュアルを参照してください。

なお、EUCコード系を使用する場合は、( ja 又は ja_JP.eucJP)で行ってください。 7) 作成できるテーブル及びビューの制限値( 大テーブル数、 大テーブルサイズ、 大行長、 大列数、 大

列長、 大列名長など)は、データベースのマニュアルを参照してください。 8) PowerRDBconnector は、以下の仕様で文字列の後ろの空白を扱います。

入出力文COBOLアプリケーション 列名

READ文 WRITE文 及び REWRITE文

“_CHAR” 半角空白でパディングします。 データベースがパディングします。

“_NCHAR” 全角空白でパディングします。 データベースがパディングします。

9) データベースの仕様で、英数字項目及び日本語項目で定義するデータベースの精度(p)は以下のサイズ制限と

なります。

Oracle 項目の種類

データ型 サイズ

英数字項目 CHAR 2,000バイト

日本語項目 NCHAR 2,000バイト

31

Page 40: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

ファイルからテーブル又はビューの作成例

以下にファイルからテーブル又はビューの作成例を説明します。

1. 以下のファイル記述項(FD句)のレコード記述項をもとにテーブルを作成します。

ファイル記述項(FD句)のレコード記述

FILE-CONTROL.

SELECT T1 ASSIGN TO FILE1

ORGANIZATION IS INDEXED

ACCESS MODE IS RANDOM

RECORD KEY IS C1

RECORD FORMAT IS REC.

FILE SECTION.

FD T1.

01 REC.

02 C1 PIC X(10).

02 C2 PIC N(10).

02 C3 PIC 9(4) PACKED-DECIMAL.

02 GRP.

03 C4 PIC S9(5) COMP.

03 C5 PIC X(3).

02 C6 PIC X(2) OCCURS 2.

02 C7 PIC X(6).

02 C7GRP REDEFINES C7.

03 C7R1 PIC X(2).

03 C7R2 PIC S9(4).

2. レコード記述項のレコード構造のレイアウトは以下のようになります。

太字のデータ項目が 下位レベル番号の基本項目になります。

レコード構造

GRP C7GRP X(6)C1 C2 C3

C4 C5 C6_1 C6_2

C7R1 C7R2

X(10) N(10) 9(4)

PACK S9(5)

COMPX(3) X(2) X(2) X(2) S9(4)

32

Page 41: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

3. 「表2.2 ファイルからテーブル又はビューの対応」と「表2.3 COBOLデータ定義とDBデー

タ定義の対応」に基づいて対応付けると、以下のSQL定義文(CREATE文)で作成できます。

以下の二通りで作成できます。

テーブルのみで作成

テーブルとビューで作成

索引ファイルで定義されているので、インデックスは必ず作成します。

テーブルのみで作成する場合 CREATE TABLE T1 ( ← ①

C1_CHAR CHAR(10) NOT NULL,

C2_NCHAR CHAR(20) NOT NULL,

C3_UNSIGN_DECIMAL NUMBER(4,0) NOT NULL,

C4_INTEGER NUMBER(5,0) NOT NULL,

C5_CHAR CHAR(3) NOT NULL,

C6_1_CHAR CHAR(2) NOT NULL, ← ④

C6_2_CHAR CHAR(2) NOT NULL, ← ④

C7R1_CHAR CHAR(2) NOT NULL,

C7R2_NUMERIC NUMBER(4,0) NOT NULL

)

CREATE UNIQUE INDEX T1_IX1

ON T1 (C1_CHA ← ⑥ R)

テーブルとビューで作成する場合 CREATE TABLE T1 (

C1 CHAR(10) NOT NULL,

C2 CHAR(20) NOT NULL,

C3 NUMBER(4.0) NOT NULL,

C4 NUMBER(5,0) NOT NULL,

C5 CHAR(3) NOT NULL,

C6_1 CHAR(2) NOT NULL, ← ④

C6_2 CHAR(2) NOT NULL, ← ④

C7R1 CHAR(2) NOT NULL,

C7R2 NUMBER(4) NOT NULL

)

CREATE VIEW V1 (← ②

C1_CHAR,

C2_NCHAR,

C3_UNSIGN_DECIMAL,

C4_INTEGER,

C5_CHAR,

C6_1_CHAR,

C6_2_CHAR,

C7R1_CHAR,

C7R2_NUREMIC

) AS

SELECT C1,C2,C3,C4,C5,C6_1,C6_2,C7R1,C7R2

FROM T1

CREATE UNIQUE INDEX T1_IX1

ON T1 (C1) ← ⑥

① “テーブルのみで作成する場合”、テーブル名 T1 が COBOL初期化ファイルに指定す

る TableName(FILE1=TableName=T1)になります。

② “テーブルとビューで作成する場合”、ビュー名 V1 が COBOL初期化ファイルに指定

する TableName(FILE1=TableName=V1)になります。

③ 列名は、FD句のデータ項目名を使用しています。

④ OCCURS句で定義している繰返し項目 C6 の列名は、"_"+添字番号にしています。

⑤ 全ての列にNOT NULL制約を定義しています。

⑥ レコードキーは、インデックスで作成しています。

33

Page 42: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

4. 作成されたテーブルは以下のレコード構造になります。

テーブル又はビューのレコード構造

GRP C7GRP X(6) C1 C2 C3

C4 C5 C6_1 C6_2

C7R1 C7R2

X(10) N(10) 9(4)

PACK

S9(5)

COMP X(3) X(2) X(2) X(2) S9(4)

CHAR(10) CHAR(20) NUMBER(4,0) NUMBER(5,0) CHAR(3) CHAR(2) CHAR(2) CHAR(2) NUMBER(4,0)

5. データを設定します。

任意のユーティリティなどを使用して設定してください。

34

Page 43: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

3.1.4 PowerRDBconnector 動作環境ファイル

PowerRDBconnector の動作環境ファイルは、COBOLアプリケーション起動時のカレントディレク

トリ内にファイル名 "DBIO_ENV" で作成し、以下の記述を行います。

PowerRDBconnector 動作環境ファイル

; PowerRDBconnectorの動作環境

ServerName=<データベースのサーバ名>

ProviderName=<プロバイダー名>

UserName=<ユーザー名>

Password=<パスワード>

TableLock=<テーブルロック>又はRecordLock=<レコードロック> ・ ASCIIコードで改行コードはLFのテキストファイルで記述します。

・ プロパティ名は行の先頭から始まっていなければいけません。

・ プロパティ名と値は = でつなぎます。 = の前後に空白、タブなどは記述できません。

・ 大文字・小文字を区別します。

・ 行先頭に ; 文字がある行はコメント行とします。行途中の ; 文字はコメントとなりま

せん。

・ 環境変数 DBIO_ENV に格納パスを設定することができます。

その場合は、環境変数 DBIO_ENV の格納パスに設定されている PowerRDBconnector の

動作環境ファイルが適用されます。

設定例:

DBIO_ENV=/apl/DBIO_ENV; export DBIO_ENV # Bシェルの場合

setenv DBIO_ENV /apl/DBIO_ENV # Cシェルの場合

・ COBOLアプリケーションを実行するユーザーからの読取り権が必要です。

35

Page 44: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

各プロパティの指定方法を以下に示します。

表2.4 PowerRDBconnector 動作環境ファイル

プロパティ名 指定

有無 値と意味

ServerName 必須

データベースのサーバ名を指定します。半角英数字15文字以内で指定し

ます。

Oracle のTNSエントリー名を指定します。

TNSエントリー名は、以下の名前になります。

― Oracleのインストール時のリスナー環境構成時に指定した

リスナー名になります。

― なお、TNSエントリー名がわからな場合は、Oracleをインス

トールしたデータベース管理者に確認するか、tnsnames.ora

に記述した名前を確認してください。

詳しくは、Oracleのマニュアルを参照してください。

ProviderName 必須

データベースアクセスに使用するプロバイダー名又はインターフェース

名を指定します。

“OCI” Oracleにアクセスするためのインターフェース名です。

36

Page 45: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

UserName

Password

選択

データベース認証に使用するユーザー名及びパスワードを指定します。

データベース認証で行いたい場合に指定します。省略した場合はOS認証

で行います。

Oracle データベース認証で使用できるユーザー名及びパスワ

ードを使用する。OS認証する場合は、省略します。

なお、OS認証時は、環境変数 ORACLE_SID で指定された

インスタンスに接続されます。そのため、ServerNameプ

ロパティに指定したTNSエントリー名は無効になりま

す。

ユーザー名及びパスワードで使用できる文字はOracleに依存します。ま

た、暗号文字列を使用する場合は、以下のように指定します。

● 暗号文字列

ユーザー名及びパスワードを暗号化したい場合は、暗号文字を使用

します。

1. {}(中カッコ)で囲んで指定します。

2. dbiocryptコマンドで暗号文字列を生成します。

コマンド仕様は、dbiocrypt --help を実行すると参照できま

す。

標準入力で暗号化したい入力文字列を指定します。

入力文字列は、ASCII文字( 大30文字)

-kオプションで暗号キーをASCII文字( 大4文字)で

指定します。

-nオプションは必ず指定してください。

-nオプションで入力文字の改行コードを無視します。

暗号結果は、暗号化する毎に変化します。

3. 復号キーは、環境変数 DBIO_KEY に指定します。

暗号文字列の生成と指定例

手順.1 ユーザー名 ABC とパスワード CBA を

暗号/復号キー XYZ で暗号化します。

echo ABC| dbiocrypt -k XYZ -n

w0SX4ZJk

echo CBA| dbiocrypt -k XYZ -n

kUSGRdXk

手順.2 以下のように PowerRDBcoonector の動作環境ファイル

に指定します。

UserName={w0SX4ZJk}

Password={kUSGRdXk}

手順.3 暗号/復号キーを環境変数 DBIO_KEY に指定します。

DBIO_KEY=XYZ; export DBIO_KEY # Bシェルの場合

setenv DBIO_KEY XYZ # Cシェルの場合

37

Page 46: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

TableLock

RecordLock

選択

(注意が

必要)

TableLockプロパティ又はRecordLockプロパティを指定します。

テーブルロックをする場合は、TableLockプロパティにONを指定します。

なお、なお、COBOL初期化ファイルのTableLockプロパティにもONを指定

します

レコードロックをする場合は、RecordLockプロパティに待機時間(既定値

30秒)を秒数で指定します。なお、0を指定した場合は待機せずに即時エ

ラーとなります。

省略した場合は、RecordLockプロパティに待機時間30秒が指定されたも

のとみなし、レコードロックで動作します。

詳しくは、「4.2 排他制御に関する注意事項」を参照してください。

CheckLock

選択

(注意が

必要)

Oracleの排他制御を使用する場合に指定します。CheckLockプロパティを

使用する場合は、「4.2.3 アプリケーションが排他制御を考慮する場合」

を参照して十分注意事項を理解した上のアプリケーションを作成した場

合のみ使用してください。

OFF Oracleの排他制御を使用する場合に指定します。

38

Page 47: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

PowerRDBconnector 動作環境ファイル(DBIO_ENV)の記述例

TNSエントリー名が dragon で Oracleユーザー名 tiger 、パスワード scott に接続するための記述

です。

ServerName=dragon

ProviderName=OCI

UserName=tiger

Password=scott

RecordLock=10

Oracle との接続確認を SQL*Plusユーティリティで行います。

sqlplus "/ AS SYSDBA" # OS認証の場合

sqlplus "tiger/scott@dragon" # DB認証の場合

39

Page 48: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.1.5 COBOL初期化ファイル

COBOL 初期化ファイルには、ASSIGN 句のファイル識別名とデータベースのテーブル、ビューと

の関連付けを行います。詳しくは、「NetCOBOL 使用手引書」を参照してください。

COBOLの初期化ファイル

ファイル識別名=TableName=<テーブル名又はビュー名>&SchemaName=<スキーマ名>&AccessMode=<ア

クセスモード>&TableLock=<テーブルロック>,ファイル識別名定数

・ ASCIIコードのテキストファイルで記述します。

・ プロパティ名と値は = でつなぎます。 = の前後に空白、タブなどは記述できません。 ・ プロパティ名=値 は & でつなぎます。 & の前後に空白、タブなどは記述できません。

・ 大文字・小文字を区別します。

・ ファイル識別名定数の前は、 , (カンマ)で区切ります。

各変数の指定方法を以下に示します。

表2.5 COBOL初期化ファイル

プロパティ名 指定

有無 値と意味

ファイル識別名 必須 SELECT句(ファイル記述項)のASSIGN句のファイル参照子に指定

したファイル識別名を指定します。

COBOLのファイル名をデータベースのテーブル又はビューに割

り付けます。

TableName 必須 ファイル識別名に対するテーブル名又はビュー名を指定しま

す。

半角英数字で30文字以内の値を指定します。全角で15文字以内

の値を指定します。

SchemaName 必須 ファイル識別名に対するテーブルの所有者名を指定します。

半角英数字で30文字以内の値を指定します。

AccessMode 必須 ファイル識別名に対するアクセスモードを指定します。

SEQUENTIAL:順呼出し

RANDOM :乱呼出し

DYNAMIC :動呼出し

本モードは入出力文COBOLアプリケーションのACCESS MODE句に

指定する値と同意です。入出力文COBOLアプリケーションの

ACCESS MODE句の指定と異なる場合は、動作の保証ができません。

40

Page 49: PowerRDBconnector for NetCOBOL 1.0 説明書

3.1 環境設定

Truncate 選択

(注意が

必要)

OPEN OUTPUT文でテーブルすべての行データをTRUNCATE文で消去

するテーブル名を指定します。なお、ファイル識別名にビュー

を指定している場合は、導出元テーブル名を指定します。

TRUNCATE文を使用すると高速にすべての行データを削除できま

すが、データベースの仕様で注意が必要です。

詳しくは、「4.1.2.2 OUTPUTモードのOPEN文でのTruncateプロパ

ティ」を参照してください。

指定例:

EMPLOYEE=TableName=employee&SchemaName=tiger

&AccessMode=RANDOM&Truncate=employee,RDM

TableLock

選択

(注意が

必要)

テーブルロックを使用する場合にONを指定します。

詳しくは、「4.2 排他制御に関する注意事項」のテーブルロック

の指定方法を参照してください。

ファイル識別名定

数 必須 識別値 RDM を指定します。

エントリー情報 選択 トランザクションサブルーチンを使用する場合は、エントリー

情報の記述が必要です。詳しくは、「NetCOBOL 使用手引書」を

参照してください。

例)エントリー情報ファイルに指定する場合

COBOL初期化ファイル(COBOL.CBR)

@CBR_ENTRYFILE = ENTRY.ENT

エントリー情報ファイル(ENTRY.ENT)

[ENTRY]

;トランザクションサブルーチン

XMROTSTR=libXITRN.so

XMROTEND=libXITRN.so

XMROTCNL=libXITRN.so

COBOL初期化ファイル(COBOL.CBR)の記述例

COBOLの索引ファイルのファイル識別名 EMPLOYEE をテーブル名 employee で所有者(スキーマ

名) tiger に対応付けるための記述です。

EMPLOYEE=TableName=employee&SchemaName=tiger&AccessMode=RANDOM,RDM

41

Page 50: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.2 トランザクションの使用方法

入出力文COBOLアプリケーションのトランザクション(開始、終了、取消し)は、CALL文のサブ

ルーチン呼出しで実現しています。

重要:本製品は、排他制御を実現するために強制的にトランザクションを操作してテーブル又は

レコードに対してロックを行います。詳しくは、「4.2 排他制御に関する注意事項」を参照して

ください。

入出力文COBOLアプリケーション

図2.3 トランザクションの使用方法

トランザクションサブルーチンを以下に示します。

表2.6 トランザクションの使用方法

トランザクション サブルーチン名

開始 XMROTSTR

終了 XMROTEND

取消し XMROTCNL

OPEN CALL "XMROTSTR" READ WRITE CALL "XMROTEND" 又は CALL "XMROTCNL" CLOSE

42

Page 51: PowerRDBconnector for NetCOBOL 1.0 説明書

3.2 トランザクションの使用方法

*1 : トランザクションを使用する場合は、トランザクションの開始、トランザクションの

終了又はトランザクションの取消しを必ず発行する必要があります。

COBOLアプリケーションでトランザクションの終了/取消しを行わなかった場合は、デ

ータベースの暗黙動作に依存します。たとえば、STOP RUN文でCOBOLアプリケーショ

ンを終了するとコミットされます。killコマンドでCOBOLアプリケーションを強制終

了するとロールバックされます。

*2 : トランザクションの開始は、初回のOPEN文の後にCALL文で呼び出す必要があります。

トランザクションの終了/取消しは、 終のCLOSE文の前にCALL文で呼び出す必要があ

ります。

*3 : トランザクションを開始していない場合は、データベースのオートコミット機能で動

作します。

*4 : トランザクションの終了/取消し後に、トランザクションを開始する場合は、トラン

ザクション開始をCALL文で呼び出す必要があります。

*5 : トランザクションサブルーチンは、PowerRDBconnector が提供するシステムライブラ

リです。入出力文COBOLアプリケーションに静的リンクしないでください。詳しくは、

「NetCOBOL 使用手引書」を参照してください。

例: Oracleのライブラリ(OCIライブラリ)とトランザクションサブルーチンの動的リ

ンク指定が必要です。

ld -dy –o P1 P1.o –lclntsh –lXITRN

ldはNetCOBOLのリンクコマンドです。-dyは動的リンクの指定です。”-o P1”は出

力ファイルの指定です。”P1.o”は入力ファイルの指定です。-lclntshはOracle

が提供しているライブラリ(OCIライブラリ)とのリンク指定です。–lXITRNはトラン

ザクションサブルーチンのリンク指定です。

*6 : トランザクションサブルーチンを使用する場合は、エントリー情報の記述が必要で

す。詳しくは、「NetCOBOL 使用手引書」を参照してください。

例)エントリー情報ファイルに指定する場合

COBOL初期化ファイル(COBOL.CBR) @CBR_ENTRYFILE = ENTRY.ENT

エントリー情報ファイル(ENTRY.ENT)

[ENTRY]

;トランザクションサブルーチン

XMROTSTR=libXITRN.so

XMROTEND=libXITRN.so

XMROTCNL=libXITRN.so

*7 : トランザクション分離レベルは、ReadCommited を使用します。

この節では、トランザクションサブルーチンインターフェースについて説明します。

43

Page 52: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.2.1 トランザクション

以下のインターフェースで、トランザクションサブルーチンを使用します。

トランザクション開始

機能 : トランザクションの開始を宣言します。トランザクション機能を使用するにあた

って必ず発行する必要があります。

呼出し形式 : CALL "XMROTSTR"

トランザクション終了

機能 : 現在のトランザクションを終了し、トランザクション中で更新された内容をすべ

て確定します。 呼出し形式 : CALL "XMROTEND"

トランザクション取消し

機能 : 現在のトランザクションを終了し、トランザクション中で更新された内容をすべ

て取消します。

呼出し形式 : CALL "XMROTCNL"

注意事項 トランザクションサブルーチンでエラーが発生した場合は、オペレーション・システムのログへ

エラー情報を出力後、COBOLプログラムを終了します。エラー情報は、「表2.8 トランザクション

終了コード」を参照してください。

44

Page 53: PowerRDBconnector for NetCOBOL 1.0 説明書

3.2 トランザクションの使用方法

45

Page 54: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.3 エラー時の対処

入出力文COBOLアプリケーションのデータベース・アクセスでエラー発生時の対処について説明

します。エラー発生時は、エラー情報が出力されます。

なお、FILE STATUSの入出力状態値がエラーでもPowerRDBconnectorのエラー情報が出力されてい

ない場合は、NetCOBOL側でのエラーの可能性があります。その場合は、「NetCOBOL 使用手引書」

を参照してください。

以下の手順を参考に対処してください。

入出力文

COBOLアプリケーションの

データベース・アクセスで

エラー発生

アプリケーションの状態を確認します。

FILE STATUSの入出力状態値を確認します。

使用しているデータベース、テーブル、ビューを特定しま

す。

データベースの確認

データベースの使用状態を確認します。

データベースが使用可能状態か確認します。

使用しているファイル(テーブル、ビュー及びインデック

ス)が使用可能状態か確認します。

PowerRDBconnector

の確認

エラー情報を確認します。

エラー情報(メッセージ、関数、エラーコード)から原因

を特定します。「表2.7 ファイルアクセスエラーコード一

覧」を参考に対処してください。

46

Page 55: PowerRDBconnector for NetCOBOL 1.0 説明書

3.3 エラー時の対処

3.3.1 ファイルアクセス時のエラー情報

ファイルアクセス時のエラーは、以下のエラー情報が出力されます。

出力先 : システムログに出力されます。

システムログは、既定の環境で /var/adm/messages に配置されています。

システムログの設定方法については、Solaris X System Administrator Collectionの

"Solarisのシステム管理"を参照してください。

出力名 : メッセージの先頭文字列 FSP_RDBCONNECTOR_FJSVDBIO として出力されます。

使用するファシリティ、レベルは、“user.error”です。

出力形式 : <text message>

PID = <process id> TID=<thread id>

function = <function name>

iserrno = <error code>

isstat1 = <error code1> isstat2 = <error code2>

isstat3 = <error code3> isstat4 = <error code4>

<database message>

TableName = <table name>

ROWID = <rowid>

<text message> :メッセージ本文。

<process id> :プロセスID。

<thread id> :スレッドID。

<function name> :エラーが発生した関数名。

<error code> :エラーコード。

<error code1> :エラー詳細コード1。

<error code2> :エラー詳細コード2。

<error code3> :エラー詳細コード3。

<error code4> :エラー詳細コード4。

<database message> :データベースから通知されたメッセージ。データベースから通

知された場合に出力されます。Oracleのマニュアルを参照して

調査してください。

<table name> :テーブル名またはビュー名が通知されます。

<rowid> :レコードのROWIDが通知されます。

エラーコードは、「表2.7 ファイルアクセスエラーコード一覧」を参照してください。

出力例 : File Access Error

PID = 712 TID = 1544

function = iswrite iserrno = 22

isstat1 = '9' isstat2 = 0x35 isstat3 = '9' isstat4 = 0x35

TableName = TPFILE

47

Page 56: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

ファイルアクセス時のエラーコードを以下に示します。

表2.7 ファイルアクセスエラーコード一覧

Function Error Code

Isstat iserrno

10進数 1 2 3 4

意味 FILE STATUS

thr_isopen2

thr_isbuild

isclose

isstart

isread

Iswrite

isrewrite

isrewcurr

isdelete

isdelcurr

対処

EENDFILE

110 '1' 0x30 '1' 0x30

EOFが検出されました。 10 - - - - ○ - - - - -

対処は特にありません。

※エラー情報は出力されません。

EDUPL

100 '2' 0x32 '2' 0x32

重複キーが見つかりました。

● WRITE文又はREWRITE文の実行

時に、同じキー値がテーブルに

存在していました。 22 - - - - - ○ ○ - - -

テーブルのキー(プライマリキー又は

インデックス)設定を見直し、適切な

キー値を設定してください。

※エラー情報は出力されません。

ENOREC

111 '2' 0x33 '2' 0x33

目的のレコードがありません。

● 指定されたキー値がテーブル

に存在していません。 23 - - - ○ ○ - ○ - ○ -

入出力文COBOLアプリケーションの

START文又はREAD KEY文に指定してい

るキー値がテーブルにあるか確認し

てください。

※エラー情報は出力されません。

ENOENT

2 '0' 0x00 '0' 0x00

該当テーブルが存在しません。

● COBOL 初 期 化 フ ァ イ ル の

SchemaName、TableNameプロパ

ティに存在しないスキーマ名、

テーブル名が指定されていま

す。

35 ○ ○ - - - - - - - -

COBOL初期化ファイルに指定したスキ

ーマ名、テーブル名を確認し、適切な

スキーマ名、テーブル名に修正してく

ださい。

90 ○ ○ - - - - - ○ - ○EIO

5 '0' 0x00 '0' 0x00

48

Page 57: PowerRDBconnector for NetCOBOL 1.0 説明書

3.3 エラー時の対処

入出力エラーが発生しました。

● ランダムアクセスモードでキ

ー指定がありません。

● ダイナミックアクセスモード

でキー指定がありません。

● その他の内部エラーが発生し

ました。

COBOL初期化ファイルと、COBOLソース

中のACCESSモードの指定が同じであ

るか確認してください。

同じである場合は、当社技術員に連絡

してください。

EIO

5 '9' 0x02 '9' 0x02

入出力エラーが発生しました。 90 - - ○ - - - - - - -

当社技術員に連絡してください。

EIO

5 '9' 0x03 '9' 0x03

入出力エラーが発生しました。 90 - - - ○ ○ ○ ○ - ○ -

当社技術員に連絡してください。

ENXIO

6 '0' 0x00 '0' 0x00

データベースの環境が整っていない。

● データベースのサービスが起

動されていません。

● データベースへの権限があり

ません。

● ユーザー名、パスワードが誤っ

ています。

● 環境変数 DBIO_KEY の内容が

誤っています。 90 ○ ○ - - - - - - - -

データベースの環境を見直してくだ

さい。

● データベースのサービスが起

動されているか確認してくだ

さい。

● データベースへの権限がある

か確認してください。

● ユーザー名、パスワードの設定

内容を確認してください。

● 環境変数 DBIO_KEY の内容を

確認してください。

EBADF

9 '0' 0x00 '0' 0x00

可変長レコード形式が指定されまし

た。 90 ○ ○ - - - - - - - -

固定長レコード形式になっているか

確認してください。

49

Page 58: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

ENOMEM

12 '0' 0x00 '0' 0x00

メモリが不足しています。 90 - - - ○ ○ ○ ○ ○ ○ ○

OS、データベースのメモリ設定環境を

見直し、適切に対処してください。

EACCES

13 '0' 0x00 '0' 0x00

データベースに対するアクセス権限

がありません。 90 ○ ○ - - - ○ ○ ○ ○ ○

データベースの権限設定を見直し、適

切に対処してください。

EFAULT

14 '9' 0x00 '9' 0x00

ファイルディスクリプタが正しくあ

りません。

90 ○ ○ - - - - - - - -

当社技術員に連絡してください。

EINVAL

22 '0' 0x00 '0' 0x00

その他のエラーが発生しました。

● データベースでエラーが発生

しました。

● データベースの 大カーソル

オープン数の上限に達してい

ます。

● 製品のライセンスがありませ

ん。

● 環境変数 LANG及びNLS_LANGの

設定値に誤りがあります。 90 ○ ○ - ○ ○ ○ ○ ○ ○ ○

以下の確認をして、適切な対処を行っ

てください。

● エラー情報のデータベースか

ら通知されるメッセージから

Oracleのマニュアルを参照し

て調査してください。

● 環境設定が正しいか確認して

ください。

● 本製品が正しくインストール

されているか確認してくださ

い。

EINVAL

22 '9' 0x34 '9' 0x3490 ○ ○ - - - - - - - -

データ例外が発生しました。

● COBOLのデータ型とテーブルの

データ型で一致していないも

のがあります。

● テーブルの列名に誤りがあり

ます。

● サポートされていないデータ

型が存在します。

50

Page 59: PowerRDBconnector for NetCOBOL 1.0 説明書

3.3 エラー時の対処

テーブル定義及びテーブルに格納さ

れているデータを確認し、適切なテー

ブル定義に修正してください。

EINVAL

22 '9' 0x35 '9' 0x35

データ例外が発生しました。

● 符号付きでない列に符号付き

のデータを書き込もうとしま

した。

● 文字コード変換に失敗しまし

た。

● サポートしていないデータ型

を検出しました。

● 使用できないキー値が入力さ

れました。

90 - - - ○ ○ ○ ○ ○ ○ -

以下の確認をし、適切な対処を行って

ください。

● テーブル定義、テーブル及びキ

ー値に格納されているデータ

の確認をしてください。

EINVAL

22 '9' 0x36 '9' 0x36

ロック指定に誤りがあります。

TableLock プ ロ パ テ ィ と

RecordLockプロパティが混在で

指定されています。

ロック指定がありません。

90 ○ ○ - - - - - - - -

テーブルロック及びレコードロック

の指定が正しくありません。ロックの

指定を見直してください。

ENOTOPEN

101 '9' 0x00 '9' 0x00

ファイルディスクリプタが正しくあ

りません。

90 - - - ○ ○ ○ ○ ○ ○ ○

当社技術員に連絡してください。

ENOTOPEN

101 '9' 0x00 '9' 0x32

ファイルディスクリプタが正しくあ

りません。

90 - - ○ - - - - - - -

当社技術員に連絡してください。

90 ○ ○ - ○ ○ - - - - -EBADARG

102 '9' 0x00 '9' 0x00

51

Page 60: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

以下の指定が正しくありません。

● 動作環境ファイル名が誤って

います。

● 動作環境ファイル又はCOBOL初

期化ファイルの読込みに失敗

しました。

● 動作環境ファイル又はCOBOL初

期化ファイルの設定値の文字

列長が規定の長さを超えてい

ます。

● 動作環境ファイル又はCOBOL初

期化ファイルのキーワードが

間違っています。

● 動作環境ファイル又はCOBOL初

期化ファイルで指定された値

が間違っています。

● COBOL 初 期 化 フ ァ イ ル に

AccessModeの指定がされてい

ません。

● 環境変数 DBIO_ENV が指定さ

れていません。

指定内容を見直して、適切に対処して

ください。

EBADKEY

103 '9' 0x00 '9' 0x00

キーとインデックス構成(長さ、デー

タ型)が一致しません。

● COBOLで指定されたキーの構成

列数が、Oracleでサポートれて

いるインデックスの構成列数

の上限値(32)を超えています。

90 ○ ○ - ○ ○ - ○ - ○ -

テーブルのインデックス構成を見直

し、適切なキーを設定してください。

ETOOMANY

104 '9' 0x02 '9' 0x02

1プロセス(シングルスレッド)で可能

な 大オープン数 600 を超えまし

た。 90 ○ ○ - - - - - - - -

大オープン数 600 を超えました。

COBOLアプリケーションプログラムの

内容を確認してください。

EBADMEM

116 '9' 0x00 '9' 0x00

メモリが不足しています。 90 ○ ○ ○ - - - - - - -

OS、データベースのメモリ設定環境を

見直し、適切に対処してください。

92 ○ ○ - - - - - - - -EAGAIN

11 '9' 0x02 '9' 0x02

52

Page 61: PowerRDBconnector for NetCOBOL 1.0 説明書

3.3 エラー時の対処

既にOPENされているファイルをOPEN

しました。

● OUTPUTモードでOPENしたファ

イルを、OPENしました。

● OPENしたファイルを、OUTPUTモ

ードでOPENしました。

COBOLアプリケーションプログラムの

内容を確認してください。

EAGAIN

11 '9' 0x03 '9' 0x03

テーブルロックが失敗しました。

● 他のプロセスがテーブルを排

他獲得しています。

● COBOLアプリケーションが中断

されました。 92 ○ ○ - - - - - - - -

COBOLアプリケーションプログラムの

内容を確認してください。

● 他のプロセスがテーブルを排

他獲得していないか確認して

ください。

ELOCKED

107 '9' 0x03 '9' 0x03

レコードロックが失敗しました。

● 他のプロセスがレコードを排

他獲得しています。

● 削除が行われたレコードに対

して、レコードロックが行なわ

れました。

● COBOLアプリケーションが中断

されました。 92 - - - - ○ - - - - -

COBOLアプリケーションプログラムの

内容を確認してください。

● 他のプロセスがレコードを排

他獲得していないか確認して

ください。

● レコードロックでREADしよう

としたレコードが削除されて

いないか確認してください。

ELOCKED

107 '0' 0x00 '0' 0x00

デッドロックが発生しました。 92 - - - - ○ ○ ○ ○ ○ ○

COBOLアプリケーションプログラムの

内容を確認してください。

53

Page 62: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

3.3.2 トランザクションアクセス時のエラー情報

以下のエラー情報が出力されます。

トランザクションアクセス時のエラーは、以下の形式です。

出力先 : 標準出力、システムログに出力されます。

システムログは、既定の環境で /var/adm/messages に配置されています。

システムログの設定方法については、Solaris X System Administrator

Collectionの"Solarisのシステム管理"を参照してください。

出力名 : メッセージの先頭文字列 FSP_RDBCONNECTOR_FJSVDBIO として出力されます。

使用するファシリティ、レベルは、“user.error”です。

出力形式 : <text message>

PID = <process id> TID = <thread id>

command name = <command name>

error code = <error code>

error code1 = <error code1>

<database message>

<text message> :メッセージ本文。

<process id> :プロセスID。

<thread id> :スレッドID。

<command name> :エラーが発生したトランザクションサブルーチン名。

<error code> :終了情報。 <error code1> :詳細情報。

<database message> :データベースから通知されたメッセージ。データベー

スから通知された場合に出力されます。

エラー情報は、「表2.8 トランザクション終了コード」を参照してください。

出力例 : Transaction Access Error

PID = 1284 TID = 1532

command name = XMROTSTR

error code = 92

error code1 = 17430

54

Page 63: PowerRDBconnector for NetCOBOL 1.0 説明書

3.3 エラー時の対処

トランザクション時のエラーコードを以下に示します。

表2.8 トランザクション終了コード

Command Error Code

XMROTSTR

XMROTEND

XMROTCNL

終了

情報

10進数

詳細

情報

10進数

意味 対処

○ ○ ○ 0 0 正常終了 なし。

○ ― ― 92 17430

シーケンスエ

ラー

-トランザクシ

ョン開始要求

トランザクションサブルー

チンの呼出し順序が正しい

か見直してください。

― ○ ○ 93 17430

シーケンスエ

ラー

-トランザクシ

ョン未開始

トランザクションサブルー

チンの呼出し順序が正しい

か見直してください。

○ ○ ○ 94 12

メモリ不足 OS、データベースのメモリ設

定、トランザクション設定が

正しいか見直してください。

○ ○ ○ 94 6

データベース

からのエラー

通知

エラー情報のデータベース

から通知されるメッセージ

からOracleのマニュアルを

参照して調査してください。

○ ○ ○ 95 5

OPEN文前にト

ランザクショ

ンサブルーチ

ンを呼出して

います。

トランザクションサブルー

チンをOPEN文後に呼出して

ください。

○ ○ ○ 99 19222

シーケンスエ

ラー

-トランザク

ション操作位

置不正

レコードロックの強制トラ

ンザクション中にアプリケ

ーションがトランザクショ

ン操作しました。トランザク

ション操作位置を見直して

ください。

55

Page 64: PowerRDBconnector for NetCOBOL 1.0 説明書

第3章 PowerRDBconnector の使用手引き

56

Page 65: PowerRDBconnector for NetCOBOL 1.0 説明書

3.3 エラー時の対処

第4章 使用上の注意

ここでは、本製品を使用する際の注意を説明します。

57

Page 66: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

4.1 性能に関する注意事項

ここでは、性能に関する注意事項を説明します。

本製品は、データベース製品が提供するSQLアクセスインターフェースを使用して、入出力文

COBOLアプリケーションの入出力文を処理します。

そのため実現できる性能は、入出力文の処理論理を変更せずに、SQLアクセスインターフェース

でアクセスした場合と同等です。

入出力文を直接サポートしているファイルシステム系製品の入出力文COBOLアプリケーションと

同等の性能は得られません。

移行の際は、注意事項を考慮した上で、検証してください。

4.1.1 データベースの準備

データベースを使用する際は、 低でも以下の準備が必ず必要です。

● データベースに対する統計情報の収集

● 検索性能を向上させるためのインデックス定義

● 履歴ファイルのディスク配置

● NOLOGGINGモードの使用選択

58

Page 67: PowerRDBconnector for NetCOBOL 1.0 説明書

4.1 性能に関する注意事項

4.1.1.1 データベースに対する統計情報の収集

データベースが 適に動作するようにチューニングを行う必要があります。

データがセットアップされた状態で、オプティマイザ統計の収集を利用者が行い、 適化する

必要があります。必ずオプティマイザ統計の収集を行ってください。また、オプティマイザ統

計の収集は以下のような場合に必要です。

● 新規にファイル追加した。

● データの大幅な増減があった。

実施時期や運用方法などのデータベースに関することは、Oracleのマニュアルを参照してくだ

さい。

オプティマイザ統計の収集を怠ると、以下のような異常現象が発生することがあります。

● 必要の無いソート処理が発生し、処理に長時間かかります。

● 適切なインデックスが適用されなくなり、処理に長時間かかります。

なお、Oracleではオプティマイザ統計の収集に、ANALYZE文よりもDBMS_STATSパッケージの使

用を強く推奨しています。

SQL*Plusを使用して、DBMS_STATSパッケージの実行例を以下に示します。

使用例:表(所有者 scott、表 TPFILE)のオプティマイザ統計の収集

1) SQL*Plusでログイン

対象表を所有するユーザーでログインしてください。

sqlplus scott/tiger

2) DBMS_STATSパッケージの実行

execute dbms_stats.gather_table_stats(ownname=>'scott',

tabname=>'TPFILE',estimate_percent=>10,cascade=>FALSE)

* 上記の例は、テーブル TPFILEのデータ 10%を元に統計を収集しています。

3) 表のオプティマイザ統計の収集の日付を確認

select table_name, to_char(last_analyzed, 'RR-MON-DD HH24:MI:SS')

last_analyzed from user_tables where table_name = 'TPFILE';

* LAST_ANALYZED列には収集した 新日付が入ります。値がNULLの場合は収集されて

いません。

59

Page 68: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

4.1.1.2 データ検索性能を向上させるためのインデックス定義

必ず、レコードキーに対応するインデックスを定義してください。

レコードキーに対応するインデックスが定義され、索引処理でそのインデックスがデータベース

側で適用されないと 適な性能にはなりません。また、インデックスが定義されていなくてもエ

ラーとはなりません。

なお、データベースに対して統計情報の収集を行わないと、インデックスが定義されていても

適に動作しません。データベースの統計情報の収集については、「4.1.1.1 データベースに対す

る統計情報の収集」を参照してください。

4.1.1.3 履歴ファイルのディスク配置

履歴ファイルは、データ・ファイルと別の物理ディスクに配置してください。

データベースでは、データ更新を行うと更新されたデータは、データ・ファイルに加えて、履歴

ファイル(OracleはREDOログ、UNDO領域、アーカイブREDOログ)へも書込み処理が行われます。

データ・ファイルと別の物理ディスクに配置しないと書込みが1つの物理ディスクに集中するた

め、ディスクに対してボトルネックが発生します。

また、別の物理ディスクに配置しないと、データ・ファイルの物理ディスクにハード障害が発生

した場合、履歴ファイルも破壊され、バックアップした時点のデータでしか復旧できなくなりな

ります。

4.1.1.4 NOLOGGINGモードの使用選択

Oracleでは、NOLOGGINGモードでREDO ログ・ファイルへの記録モードを変更できます。

NOLOGGINGモードの使用選択は、利用者がOracleを理解して、適切な使用選択をしてください。

60

Page 69: PowerRDBconnector for NetCOBOL 1.0 説明書

4.1 性能に関する注意事項

4.1.2 アプリケーションによる性能向上

アプリケーションで性能向上できる対処方法を説明します。

● データ更新を性能向上させるためのトランザクション適用

● OUTPUTモードのOPEN文を性能向上させるためのTruncateプロパティ

● 大量データの追加

● データベース・ユーティリティの活用

4.1.2.1 データ更新でのトランザクション適用

データ更新性能を向上させるには、トランザクションを適用して更新データをまとめてコミット

する考慮が必要です。

データベースでは、データ更新を行うと更新されたデータは、データ・ファイルに加えて、履歴

ファイル(OracleはREDOログ、UNDO領域、アーカイブREDOログ)へも書込み処理が行われます。

そのため、ディスクへの書込み回数が多くなり、他のファイルシステム系製品のデータ更新と同

等の性能にはなりません。

データ更新性能を向上させるには、書込み回数を抑える必要があります。トランザクションを適

用すると、トランザクション中のデータ更新の書込み回数が 小限に抑えられ、更新されたデー

タはコミットすることで、まとめて書き込まれます。

たとえば、トランザクション開始後、WRITE文を1万回実行する毎にコミットさせます。

なお、トランザクション操作を行う際の注意事項については、「4.2 排他制御に関する注意事項」

を参照してください。

4.1.2.2 OUTPUTモードのOPEN文でのTruncateプロパティ

Truncateプロパティを適用すると、OUTPUTモードのOPEN文で高速にすべての行データを削除でき

ます。ただし、データベース及びPowerRDBconnectorの仕様で以下の注意が必要です。

● トランザクションが終了される。

OUTPUTモードのOPEN文でトランザクションが終了します。

● テーブルに対して、実行権が必要です。

Oracleでは、DROP ANY TABLE システム権限が必要になります。

● 誤ったテーブル名を指定すると、その全行を削除してしまいます。

間違えずに指定してください。

● 強制トランザクション中は、Truncateプロパティの指定は無効となります。

詳しくは、「4.2 排他制御に関する注意事項」を参照してください。

そのため、Truncateプロパティを使用せずに運用で入出力文COBOLアプリケーションを実行する

前に、Truncate Table文でデータを削除しておくことを推奨します。

4.1.2.3 大量データの追加

大量データの追加、データコピーは、データベース・ユーティリティを使用してください。

61

Page 70: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

4.1.2.4 データベース・ユーティリティの活用

データコピーを行う場合は、PowerRDBconnectorを使用せずにデータベース製品で提供されてい

るユーティリティを活用してください。

そのデータベース製品のデータコピーを前提に設計されたユーティリティでは、そのデータベー

ス製品で も高速にデータコピーされるように設計されています。

Oracle データベース内部のブロック単位でデータコピーを高速に実行する以

下のユーティリティがあります。

● SQL*Loader ユーティリティ

外部データ・ファイルとデータベースの表で大量転送するときに

活用します。

● exp ユーティリティ

データベース・オブジェクト(データスペース、表など)単位で

エクスポートするときに活用します。

● imp ユーティリティ

エクスポートしたデータベース・オブジェクトをインポートする

ときに活用します。

4.1.2.5 I-OオープンでのREAD性能

I-OオープンのREAD文でレコードロック処理が動作するため、READ性能がテーブルロックと比較

して数倍から二十倍程度(READ文一回当たり数ミリ秒)の時間を要します。I-OオープンでREAD文

を大量に実行するアプリケーションでは、テーブルロックをするかINPUTオープンするか見直し

てください。詳しくは、「4.2.2 READ文での排他制御について」を参照してください。

62

Page 71: PowerRDBconnector for NetCOBOL 1.0 説明書

4.2 排他制御に関する注意事項

4.2 排他制御に関する注意事項

ここでは、排他制御に関する注意事項を説明します。

排他制御は、データベースの仕様に依存するため、動作が異なります。移行の際は、データベー

スの排他制御の仕様を理解してください。

Oracleでは、排他を維持する区間がトランザクション単位のみとなるため、トランザクションの

適用が必須となります。

本製品は、排他制御を実現するために強制的にトランザクションを操作してテーブル又はレコー

ドに対してロックを行います。(以後、この強制的に行っているトランザクションを強制トラン

ザクションと呼びます。)強制トランザクション中にアプリケーションの強制終了が行われた場

合は、強制トランザクションがロールバックされ、データが更新前の状態に戻ります。

テーブルに対するロックは、TableLockプロパティを指定することにより、OPEN文での排他制御

が行われます。これは、テーブルを占有排他したいバッチ系のアプリケーションで利用されるこ

とが考えられます。詳しくは、「4.2.1 OPEN文での排他制御について(TableLock)」を参照してく

ださい。

レコードに対するロックは、RecordLockプロパティにより、I-OオープンのREAD文で排他制御が

行われます。これは、I-OオープンでREADしたレコードを排他したいオンライン系のアプリケー

ションで利用されることが考えられます。詳しくは、「4.2.2 READ文での排他制御について

(RecordLock)」を参照してください。

ロックの指定方法は、以下のように行います。

1. テーブルロックを行う場合

PowerRDBcoonector動作環境ファイルのTableLockプロパティにONを指定してください。な

お、COBOL初期化ファイルのTableLockプロパティにもONを指定して下さい

例:テーブルロックのファイル EMPLOYEE に対する指定例

; PowerRDBconnector動作環境ファイル

ServerName=dragon

ProviderName=OCI

UserName=tiger

Password=scott

TableLock=ON

; COBOL初期化ファイル

EMPLOYEE=TableName=employee&SchemaName=tiger

&AccessMode=RANDOM&TableLock=ON,RDM

63

Page 72: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

2. レコードロックを行う場合

PowerRDBcoonector動作環境ファイルのRecordLockプロパティに待機時間を秒数で指定して

ください。I-OオープンのREAD文を実行するすべてのファイルに適用されます。

待機時間 レコードが既にロックしている場合の待機時間を秒数で0か

ら2147483647の範囲で指定します。なお、0を指定した場合は

待機せずに即時エラーとなります。

待機時間を変更する際は、アプリケーションで問題が無いこ

とを確認してください。

例:レコードロックの待機時間10秒の指定例

; PowerRDBconnector動作環境ファイル

ServerName=dragon

ProviderName=OCI

UserName=tiger

Password=scott

RecordLock=10

注意事項

PowerRDBcoonector動作環境ファイルにロック指定が無い場合は、RecordLockプロパティに

待機時間30秒が指定されたものとみなします。

TableLockプロパティをPowerRDBcoonector動作環境ファイルにのみ指定している場合は、

ロックされないため、エラーとなります。

PowerRDBcoonector動作環境ファイルにロック指定が無く、COBOL初期化ファイルに

TableLockプロパティを指定した場合、レコードロックとして動作します。

RecordLockプロパティとTableLockプロパティの指定は混在できません。混在で指定してい

てもエラーなりませんので、混在指定しないように注意してください。

1. PowerRDBcoonector動作環境ファイルにRecordLockプロパティとTableLockプロパティの

指定が混在している場合、RecordLockプロパティは無効となり、TableLockプロパティが有

効となります。

64

Page 73: PowerRDBconnector for NetCOBOL 1.0 説明書

4.2 排他制御に関する注意事項

同一のテーブル及びレコードが競合した場合のTableLockプロパティ及びRecordLockプロパティ

の排他関係を以下に示します。(表中の入出力文は実行直後の状態を示します。)

表4.1 排他関係

後行アプリケーション

TableLock RecordLock

INPUT

I-O

EXTEND

OUTPUT

INPUT

I-O

OPEN READ 乱REWRITE 乱DELETE

INPUT ○ × × × ○ ○ △ △

I-O × × × × ○ △ △ △

EXTEND × × × × ○ △ △ △

TableLock

OUTPUT

OPEN

× × × × ○ △ △ △

INPUT ○ ○ ○ ○ ○ ○ ○ ○

先行アプリケーション

RecordLock

I-O

READ

○ × × × ○ × △ △

○ 後行のTableLockではオープンは成功します。

後行のRecordLockではオープンは成功し、入出力文も成功します。

× 後行のTableLockではオープンで失敗します。(待機せずに FILE-STATUS 92を通知しま

す。)

後行のRecordLockではオープンは成功し、入出力文で待機します。(待機時間を超えた場

合は、FILE-STATUS 92を通知します。)

△ Oracleの仕様で先行のロックが解除されるまで待機します。

● 先行がTableLockでロックしている場合、後行の入出力文は解除されるまで待機しま

す。

● 先行がRecordLockでロックしている場合、後行の入出力文はレコードロックが解除さ

れるまで待機します。

65

Page 74: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

4.2.1 OPEN文での排他制御について(TableLock)

TableLockプロパティを指定することにより、OPEN文での排他制御が行われます。

この機能は、TableLockが指定されたテーブルのOPEN文で強制的にトランザクションを開始して

CLOSE文でトランザクションを終了することで排他制御を実現します。INPUTオープンでは、

Share( 共有モード)でテーブルロックされ、INPUTオープン以外は、Exclusive(占有モード)でテ

ーブルロックされます。

重要:TableLockプロパティの注意事項

1. TableLockプロパティを使用する場合は、PowerRDBconnector動作環境ファイルのTableLock

プロパティにONを指定し、COBOL初期化ファイルのTableLockプロパティにもONを指定しま

す。

2. PowerRDBconnector動作環境ファイルにTableLockプロパティとRecordLockプロパティの指

定が混在している場合、RecordLockプロパティは無効となり、TableLockプロパティが有効

となります。

3. 強制トランザクション中は、COBOL初期化ファイルのTableLockプロパティで対象となるテ

ーブルが全てCLOSEされるとトランザクションを終了します。(参考例2を参照)

4. 強制トランザクション中は、Truncateプロパティの指定は無効となります。

これはTruncateを実行すると、Oracleが強制的にトランザクションを終了(コミット)する

ため、それまでのロックが解除されることを防止するためです。

そのためOUTPUTでオープンする場合は、Truncateプロパティを使用せずに、運用で入出力

文COBOLアプリケーションを実行する前に、Truncate Table文でデータを削除しておくこと

を推奨します。

5. 強制トランザクション中の更新データは、他のアプリケーションから扱えません。

6. 強制トランザクション中のトランザクション操作(開始、終了、取消し)は無効となりま

す。

トランザクションサブルーチンのCALL文は正常に復帰します。TableLockプロパティで対象

となるテーブルが全てCLOSEされた時点でトランザクションが終了します。

7. デッドロック状態が検出される場合があります。

たとえば、以下の処理順序でデッドロックが発生します。

1) 先行アプリケーションがAテーブルをテーブルロックし、

Bテーブルをテーブルロックしない。

2) 後行アプリケーションがAテーブルをテーブルロックしないで、

Bテーブルをテーブルロックする。

3) 先行アプリケーションがBテーブルに対して、以下のいずれかの操作を行う。

・WRITE/REWRITE/DELETE/OUTPUT OPEN

4) 後行アプリケーションがAテーブルに対して、以下のいずれかの操作を行う。

・WRITE/REWRITE/DELETE/OUTPUT OPEN

8. Oracleの仕様で排他モードが変化しない場合があります。

たとえば、1つのアプリケーションで、ファイルAをオープン中に、ファイルBをI-Oオー

プン(Exclusive)した後、INPUTオープン(Share)しても、先に排他モードが強い

Exclusive(占有モード)でロックされているため、ファイルBは、Exclusive(占有モード)

のままとなります。(参考例3を参照)

66

Page 75: PowerRDBconnector for NetCOBOL 1.0 説明書

4.2 排他制御に関する注意事項

参考として、1つのアプリケーションが1つ又は2つのファイルを使用した入出力文操作順序の

組合せによるトランザクション区間の遷移を示します。

トランザクション区間は以下の表記です。

(TSTR):強制トランザクション開始。(TEND):強制トランザクション終了。

1)1ファイルの単純な入出力操作の場合

ファイルA

─┬─ (TSTR)OPEN I-O

トランザクション区間

─┴─ CLOSE(TEND)

2)トランザクション区間がファイルAの入出力操作に依存する場合

ファイルAのOPEN中にファイルBのOPENが実行されるため、TableLockはTableLock

対象の全てのファイルがクローズするまで区間が延長される。

ファイルA ファイルB

─┬─ (TSTR)OPEN I-O

│ OPEN I-O

トランザクション区間

│ CLOSE

─┴─ CLOSE(TEND)

3)Oracleの仕様で排他モードが変化しない場合

1つのアプリケーションで、ファイルAをオープン中に、ファイルBをI-Oオープン

(Exclusive)した後、INPUTオープン(Share)しても、先に排他モードが強い

Exclusive(占有モード)でロックされているため、ファイルBは、Exclusive(占有

モード)のままとなります。

ファイルA ファイルB

─┬─ (TSTR)OPEN I-O

│ OPEN INPUT ─┬─

│ CLOSE │

│ (Share)

│ │

│ OPEN I-O ─┼─

│ CLOSE │

トランザクション区間 (Exclusive)

│ OPEN INPUT │

│ CLOSE │

─┴─ CLOSE(TEND) ─┴─

67

Page 76: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

4.2.2 READ文での排他制御について(RecordLock)

RecordLockプロパティにより、I-OオープンのREAD文で排他制御が行われます。

この機能は、READ文で強制的にトランザクションを開始して読込んだ行をロックし、以下の入出

力文でトランザクションを終了させることで排他制御を実現します。

START文、順REWRITE文、READ文、順DELETE文、RANDOMモードの乱REWRITE文、RANDOMモード

の乱DELETE文、CLOSE文

重要:RecordLockプロパティの注意事項

1. RecordLockプロパティで対象となるファイルが複数ある場合、I-OオープンでREADしたファ

イルが1つでもあると、他のファイルに対し入出力を行ってもトランザクションは終了し

ません。トランザクション終了は、そのREADした状態が終了した時点で行われます。ただ

し、トランザクションサブルーチンでトランザクションを開始している場合は、トランザ

クションサブルーチンでトランザクションを終了した時に終了します。(参考例3,4,5

を参照)

2. 複数ファイルでI-OオープンのREADがあると、トランザクション区間が延長することがある

ので、トランザクション区間内にREADしていた複数のレコードがレコードロックされ、「ASP

Symfoware6000」、「NetCOBOLのファイルシステム」と排他制御が異なります。(参考例3,

4,5を参照)

3. 強制トランザクション中は、Truncateプロパティの指定は無効となります。

これはTruncateを実行すると、Oracleが強制的にトランザクションを終了(コミット)する

ため、それまでのロックが解除されることを防止するためです。

そのためOUTPUTでオープンする場合は、運用で入出力文COBOLアプリケーションを実行する

前に、Truncate Table文でデータを削除して、書込み処理にトランザクションを適用させ

ることを推奨します。

4. 強制トランザクション中のレコードは、ロックがかかっているため他のアプリケーション

から扱えません。

5. 強制トランザクション中のトランザクション操作(開始、終了、取消し)はエラーとなり

ます。

6. デッドロック状態が検出される場合があります。

READする順序の関係でロックが他のアプリケーションとたすき掛けとなることがありま

す。トランザクションが継続している間は、I-OオープンでREADした行はロックされたまま

となります。

7. I-OオープンでREADだけする場合は、テーブルロック又はINPUTオープンするように検討し

てください。

I-OオープンでREAD文でレコードロック処理が動作するため、性能が劣化します。

8. Oracleの仕様で先行のロックが解除されるまで待機します。

先行アプリケーションがI-OオープンでREADした状態で、後行アプリケーションが同一レコ

ードに対してキーを直接指定して更新すると、先行アプリケーションがレコードロックを

解除するまで待機します。

68

Page 77: PowerRDBconnector for NetCOBOL 1.0 説明書

4.2 排他制御に関する注意事項

参考として、1つのアプリケーションが1つ又は2つのファイルを使用した入出力文操作順序の

組合せによるトランザクション区間の遷移を示します。

トランザクション区間は以下の表記です。

(TSTR):強制トランザクション開始。(TEND):強制トランザクション終了。

1)1ファイルの単純な入出力操作の場合

ファイルA

OPEN I-O

─┬─ (TSTR)READ

トランザクション区間

─┼─ (TEND)(TSTR)READ

トランザクション区間

─┼─ (TEND)(TSTR)READ

トランザクション区間

─┴─ REWRITE(TEND)

─┬─ (TSTR)READ

トランザクション区間

─┴─ REWRITE(TEND)

─┬─ (TSTR)READ

トランザクション区間

─┴─ REWRITE(TEND)

CLOSE

2)トランザクション区間がファイルAとファイルBの入出力操作で別々に分かれる場合

ファイルA ファイルB

OPEN I-O

OPEN I-O

─┬─ (TSTR)READ

トランザクション区間

─┴─ REWRITE(TEND)

─┬─ (TSTR)READ

トランザクション区間

─┴─ REWRITE(TEND)

CLOSE

CLOSE

69

Page 78: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

3)トランザクション区間がファイルBの入出力操作に依存する場合

ファイルAのREAD中にファイルBのREADが実行されるため、トランザクション区間

が延長する。

ファイルA ファイルB

OPEN I-O

OPEN I-O

─┬─ (TSTR)READ

│ READ

トランザクション区間

│ CLOSE

─┼─ (TEND)(TSTR)READ

トランザクション区間

│ CLOSE

─┴─ CLOSE(TEND)

4)トランザクション区間がファイルAの入出力操作に依存する場合

ファイルAをREAD中のため、ファイルBのREWRITE後もトランザクション区間は延長

され、ファイルAのREWRITEでトランザクションは終了する。

ファイルA ファイルB

OPEN I-O

OPEN I-O

─┬─ (TSTR)READ

トランザクション区間 READ

│ REWRITE

─┴─ REWITE(TEND)

CLOSE

CLOSE

70

Page 79: PowerRDBconnector for NetCOBOL 1.0 説明書

4.2 排他制御に関する注意事項

5)トランザクション区間が 大まで延長される場合

トランザクションを終了できる区間が無いため、CLOSEまで延長される。

ファイルA ファイルB

OPEN I-O

OPEN I-O

─┬─ (TSTR)READ

│ READ

│ REWITE

│ READ

│ REWRITE

トランザクション区間 READ

│ READ

│ READ

│ CLOSE

─┴─ CLOSE(TEND)

71

Page 80: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

4.2.3 アプリケーションが排他制御を考慮する場合

PowerRDBconnectorは、テーブルロック又はレコードロックを行いますが、ロックを行わない手

段があります。

重要:極力使用しないことを強く推奨します。

ロックを行わない手段を使用した場合、I-OオープンでREADしても読み込み中のレコードはロッ

クされません。そのため、Oracleの排他制御を良く理解して、アプリケーションが排他制御を考

慮する対応が必要です。他のアプリケーションとの同時動作に問題が無い事を、運用及びプログ

ラム上で十分に確認した上で、実施してください。

テーブルロックもレコードロックも行わない指定は、PowerRDBconnector 動作環境ファイルの

RecordLockプロパティにOFFを指定します。さらに、PowerRDBconnector 動作環境ファイルに

CheckLockプロパティを加えて、このCheckLockプロパティにOFFを指定することでエラーになら

ずに実行されます。

例:テーブルロックもレコードロックも行わない指定

; PowerRDBconnector動作環境ファイル

ServerName=dragon

ProviderName=OCI

UserName=tiger

Password=scott

RecordLock=OFF

CheckLock=OFF

72

Page 81: PowerRDBconnector for NetCOBOL 1.0 説明書

4.3 COBOLアプリケーションに関する注意事項

4.3 COBOLアプリケーションに関する注意事項

ここでは、COBOLアプリケーションに関する注意事項を説明します。

4.3.1 ファイル識別名について

ASSIGN句のファイル参照子はファイル識別名で行い、COBOL初期化ファイルに指定することを推

奨します。なお、PowerRDBconnectorではファイル識別名を一意の名前で指定してください。(一

意であるSELECT句のファイル名をファイル識別名に使用すれば、必然的に一意となります。)

また、以下のような入出力文COBOLアプリケーションでは、重複した同名のファイル識別名を使

用することが多いため、一意のファイル識別名を使用してください。

同一ファイルに対して複数のSELECT句で定義し、かつ

異なった ACCESS MODE で定義している。

4.3.2 LOW-VALUE、HIGH-VALUEについて

表意定数のLOW-VALUE、HIGH-VALUEを使用したすべての入出力文操作はできません。

LOW-VALUE、HIGH-VALUEの値を使用したWRITE文及びREWRITE文など。

LOW-VALUE、HIGH-VALUEの値をキー値としたSTART文及びREAD文など。

論理的にレコードを位置付けるには、以下の代替方法があります。

LOW-VALUE:START FIRST

HIGH-VALUE:START FIRST WITH REVERSED ORDER

73

Page 82: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

4.3.3 COBOLで扱えないデータ値との整合性について

COBOLで扱えないデータ値がデータベースに格納されないようにしてください。詳しくは、「表2.3

COBOLデータ定義とDBデータ定義の対応」を参照してください。

符号無し数字項目に対する負数

符号無し整数項目に対する負数

NULL値

4.3.4 データベースで扱えないデータ値との整合性について

データベースでは、データ型で定義したデータ値で扱います。

数字型では、数値のみです。

文字型では、文字のみです。

たとえば、以下のような場合は、COBOLの数字項目に空白文字が設定されます。

FD TPFILE.

01 REC.

02 TIME.

03 TIME-HH PIC 9(2).

03 TIME-MM PIC 9(2).

03 TIME-SS PIC 9(4).

MOVE BLANK TO TIME. <-- 項目 TIME は、英数字項目と評価され、空白が設定される。

WRITE REC. <-- 数字項目に文字があるため、WRITE文はエラーとなる。

4.3.5 キーに重複した値がある索引ファイルについて

索引ファイルのキーに重複した値がある場合は、以下の注意が必要です。

キーに重複した値があるレコードの並び順は格納順になりません。

Oracleの並び順となるため、並び順は格納順にならないためです。

キー更新は行わないでください。

キー更新を行うとOracleで 初に検索されたレコードを更新しますが、Oracleの並び順で

扱うため、利用者から特定できないレコードが更新されるためです。

キーに重複した値があるレコードを操作中に読取り方向を変更しないでください。

キーに重複した値があるレコードを操作中に読取り方向を変更すると再度検索しますが、

Oracleの並び順で扱うため、同じレコードが読込まれることがあるためです。

74

Page 83: PowerRDBconnector for NetCOBOL 1.0 説明書

4.4 その他の注意事項

4.4 その他の注意事項

4.4.1 レコード長不一致について

レコード長が一致しない場合、NetCOBOL側で以下のCOBOL実行時エラーが発生します。

メッセージ番号 “JMP0310I-I”

$3 “INV-LRECL”

COBOLのレコード記述項のレコード長とPowerRDBconnectorがCOBOLに通知する行長でOPEN文で

COBOLがチェックします。必ず、レコード記述項に合わせて列を定義してください。

4.4.2 キー値及びレコードの並び順について

データベースの仕様及び設定でキー値及びレコードの並び順が異なります。適切な照合順序設定

を行ってください。

キー値の並び順(数字と文字の並び順、英大文字と英小文字の並び順など)

重複キー値のレコードの並び順は、格納順となりません。

4.4.3 英数字項目と日本語項目のサイズ制限について

データベースの仕様でサイズ制限があります。詳しくは、「表2.3 COBOLデータ定義とDBデータ定

義の対応」を参照してください。

4.4.4 ビューの使用について

ビューの構成は、「ファイルからテーブル又はビューの作成例」で記載されている範囲の1つのテー

ブルで構成された単一ビューで使用してください。なお、ビューに関数、表結合、副問合せなど

が定義されている場合は動作できません。

4.4.5 読取り一貫性とデータ整合性について

Oracleの読取り一貫性の制限で、読取り方向の行に対してキー更新(追加、更新、削除)されて

いるとデータ更新前のデータがREAD文で読込まれる場合があります。キーを位置付けし直すこと

により、 新のデータが読み込まれます。

4.4.6 行(レコード)の格納位置について

WRITE文でレコードを追加する場合、レコードはテーブルの 後に格納されるとは限りません。

データベース仕様に依存します。順編成ファイルの書込み順とおりに読み込まれない場合があり

ます。

75

Page 84: PowerRDBconnector for NetCOBOL 1.0 説明書

第4章 使用上の注意

76

4.4.7 Oracleのバージョンを変更した際の対処について

Oracleのバージョンを変更した際は、そのOracleバージョンのライブラリ(OCIライブラリ)とリ

ンクするためCOBOLアプリケーションの再リンクが必要です。

4.4.8 トランザクションの終了状態について

Oracleの仕様で以下のようになります。

● トランザクションの終了及び取消しをせずにアプリケーションが終了した場合

Oracleでトランザクションがコミットされます。

● ファイルをクローズせずにアプリケーションが終了した場合

Oracleでトランザクションがコミットされます。

● アプリケーションが強制終了した場合

Oracleでトランザクションがロールバックされます。

上記の動作になりますが、アプリケーションはトランザクションの終了及び取消し及びファイル

のクローズを行ってください。

4.4.9 多重動作時の設定について

OS、Oracleに以下のような設定が必要になります。

● リスナー・パラメーター(listener.ora)のQUEUESIZEパラメーター値の変更

● Oracle初期化パラメーターのPROCESSESパラメーター値の変更

● カーネル・パラメーター(/etc/system)の共用メモリ関係、セマフォ関係のパラメータ

ー値の変更

4.4.10 インターネットでの使用について

本製品はインターネットへのサービスを提供する用途を想定して設計・製造されておりません。

インターネットに接続しない環境(ローカルネットワーク又はイントラネット内)で使用するか、

インターネットに接続して使用する場合は、運用環境によりセキュリティ侵害対策を構築した上

でご使用ください。

Page 85: PowerRDBconnector for NetCOBOL 1.0 説明書

付録A 他製品のファイル資源

ここでは、他製品(ファイルシステム、データベース系)のファイル資源及び代替方法について

説明します。

A.1 論理ファイル

論理ファイルとは、物理ファイルを射影する仮想的なファイルで、以下の製品に存在します。 物理ファイルとは、物理データが格納されたデータファイルです。詳しくは、該当する製品のマ

ニュアルを参照してください。 ● 「CSP/FX FX-RDB」 または 「ASP RDB/6000、Symfoware6000」 ● 「UXP/DS RDB/7000」 または 「UXP/DS SymfoWARE7000」

論理ファイルで定義された単純論理ファイルをビューで定義することで同等の機能を実現するこ

とが可能です。

Page 86: PowerRDBconnector for NetCOBOL 1.0 説明書

付録A 他製品のファイル資源

78

単純論理ファイル 単一ビューで作成することで、同等の機能が実現できます。

射影

射影

よび

べ替

SQL定義文の例

CREATE VIEW(得意先コード_DAS SELECT 得FROM CSMAS CREATE UNIQ

論理ファイル CSVIEW

得意先コード 商品名 数量 00033 エアコン 8 00901 ラジオ 261 01215 ステレオ 60 03477 ビデオ 18 06024 CDプレーヤ 5

得意先名 西村商会 高木電気 (株)山岸 中村無線 西田電気

物理ファイル CSMASTER

5 CDプレーヤ 06024 18 ビデオ 03477

60 ステレオ 01215

261 ラジオ 00901

8 エアコン 00033

数量

_INTEGER

商品名

_CHAR

得意先コード

_DECIMAL

インデックス

キー項目:得意先コード :得意先コード、商品名お

数量を得意先コード順に並

えてREAD/WRITEする。

CSVIEW ECIMAL, 商品名_CHAR, 数量_INTEGER) 意先コード, 商品名, 数量 TER

UE INDEX CSVIEWIX ON CSMASTER (得意先コード)

Page 87: PowerRDBconnector for NetCOBOL 1.0 説明書

索引

AccessMode.......................................................... 40 ANALYZE文 ........................................................ 59

COBOL.CBR.................................................. 41, 43 COBOL初期化ファイル ....................................... 23

DBIO_ENV.................................................... 35, 39 DBIO_KEY .......................................................... 37 DBプロバイダ ...................................................... 23

LANG............................................................. 24, 50

NLS_LANG ................................................... 24, 50 NOLOGGINGモード ..................................... 58, 60

OS認証 ..................................................... 24, 37, 39

Password ................................35, 37, 39, 63, 64, 72 PowerRDBconnector ........................................... 23 PowerRDBconnector 動作環境ファイル ............. 23 ProviderName ..................................................... 36

RecordLock .............................35, 38, 63, 65, 68, 72

SchemaName....................................................... 40 ServerName......................................................... 36

TableLock .............35, 38, 40, 41, 63, 65, 66, 68, 72 TableName .......................................................... 40 Truncate .......................................41, 61, 63, 66, 68

UserName ..............................35, 37, 39, 63, 64, 72

インデックス ........................................................ 23

オプティマイザ統計 ............................................. 59

強制トランザクション...................55, 61, 63, 66, 68

性能 .......................................2, 6, 58, 60, 61, 62, 68

データベース ........................................................ 23 データベース認証................................................. 37 テーブル ............................................................... 23 テーブルロック .................14, 35, 40, 51, 53, 62, 72

トランザクション(方式-1) ............................... 44

入出力文COBOLアプリケーション ..................... 23

排他3, 6, 10, 11, 12, 14, 38, 42, 53, 62, 63, 65, 66, 68, 72

ビュー................................................................... 23

ファイル識別名 .................................................... 40 ファイル識別名定数 ............................................. 41

履歴ファイル .........................................2, 58, 60, 61

レコードロック ...........14, 35, 51, 53, 55, 62, 68, 72

79