分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編

[目次][索引][前へ][次へ]

CBLDCDAM('OPEN')

名称

論理ファイルのオープン

形式

PROCEDURE DIVISIONの指定

 
CALL 'CBLDCDAM' USING 一意名1 一意名2
 

DATA DIVISIONの指定

 
01 一意名1.
   02 データ名A  PIC X(8) VALUE 'DCDAMSVC'.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(8).
   02 FILLER    PIC S9(9) COMP.
   02 FILLER    PIC S9(9) COMP.
   02 データ名H  PIC S9(9) COMP.
   02 FILLER    PIC X(28).
01 一意名2.
   02 データ名E  PIC X(4) VALUE 'OPEN'.
   02 データ名F  PIC X(1).
   02 データ名G  PIC X(1).
   02 FILLER    PIC X(1).
   02 FILLER    PIC X(1).
   02 データ名Z  PIC S9(9) COMP VALUE ZERO.
 

機能

論理ファイルをオープンします。

UAPで値を設定するデータ領域

●データ名A

DAMファイルとのインタフェースコードを「VALUE 'DCDAMSVC'」と設定します。

●データ名C

論理ファイル名を8文字以内で設定します。8文字に満たない場合は,後ろを空白で埋めてください。

●データ名E

論理ファイルのオープンを示す要求コードを「VALUE 'OPEN'」と設定します。

●データ名F

ブロック排他をするかファイルの排他をするかを設定します。

VALUE 'B'…ブロック排他

VALUE 'F'…ファイル排他

ファイル排他を指定できるのは,次に示す場合です。

●データ名G

論理ファイルへのアクセスで排他エラーが起こったとき,排他解除待ちをするかどうかを設定します。データ名Fに「VALUE 'F'」を設定した場合は,使うDAMファイルが回復対象かどうかで動作が異なります。

VALUE 'W'… 排他解除待ちをします。

VALUE 'N'… 待たないで,エラーリターンします。

どちらも設定しなかった場合は「VALUE 'N'」が仮定されます。

データ名F,データ名Gに設定できる値は,使うDAMファイルが回復対象かどうかで異なります。詳細は次のとおりです。

●データ名Z

0を設定します。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

●データ名H

ファイル記述子が返されます。

ステータスコード

ステータスコード 意味
00000 ファイル記述子がデータ名Hに正常に設定されました。
01600 CBLDCRPC('OPEN ')を呼び出していません。
ユーザサービス定義のatomic_updateオペランドの指定が'N'になっています
(回復対象のDAMファイルにアクセスした場合だけリターンされます)。
ユーザサービス定義のatomic_updateオペランドの指定が'N'の場合に,CBLDCDAM('STRT')を呼び出していません(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。
次に示すように,UAPを正しくリンケージしていません。
  • DAMサービスのAPIでTAMファイルにアクセスする場合に使うライブラリ(-ltdam)を,不当にリンケージしています。
  • トランザクション制御用オブジェクトファイルのリソースマネジャ登録が間違っています。
DAMファイルの排他を,トランザクションの範囲外から指定しています
(回復対象のDAMファイルにアクセスした場合だけリターンされます)。
グローバルトランザクション単位の排他制御で,DAMファイルにファイル排他を設定しています(回復対象のDAMファイルにアクセスした場合だけリターンされます)。
01601 データ名Cに設定した論理ファイル名は定義されていません。
01602 排他エラーが起こりました。
01605 ユーザサービス定義のatomic_updateオペランドの指定が'Y'の場合に,CBLDCDAM('STRT')を呼び出していません(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。
01607 メモリが不足しました。
01608 データ名Cに設定した論理ファイルはオープン済みです。
01610 論理ファイル名として設定した値が間違っています。
01611 データ名F,またはデータ名Gに設定した値が間違っています。
01621 データ名Cに設定した論理ファイルは,論理閉塞されています。
01622 データ名Cに設定した論理ファイルは,障害閉塞されています。
01627 キャラクタ型スペシャルファイルのオープン数が最大値を超えました。
01628 キャラクタ型スペシャルファイルのアクセス権がありません。
01629 トランザクションサービスでエラーが起こりました
(回復対象のDAMファイルにアクセスした場合だけリターンされます)。
01642 デッドロックが起こりました
(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。
01643 ロックサービス定義で指定した待ち時間のタイムアウトのため資源を確保できませんでした(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。
01645 最大同時排他要求数を超えて,排他を要求しています。
01646 オープンしようとしたDAMファイルは,セキュリティ機能で保護されています。該当するファイルに対するACLがありません。
01690 インタフェースコード(データ名A)が間違っています。
01691 要求コード(データ名E)が間違っています。