CBLDCDAM('REWT')
- 〈このページの構成〉
形式
PROCEDURE DIVISIONの指定
CALL 'CBLDCDAM' USING 一意名1 一意名2 一意名n
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 データ名D PIC S9(9) COMP. 02 データ名E PIC S9(9) COMP. 02 データ名H PIC S9(9) COMP. 02 FILLER PIC X(28). 01 一意名2. 02 データ名F PIC X(4) VALUE 'REWT'. 02 データ名G PIC X(1). 02 FILLER PIC X(1). 02 FILLER PIC X(1). 02 FILLER PIC X(1). 02 データ名Z PIC S9(9) COMP VALUE ZERO. 02 一意名3. 03 データ名I PIC S9(9) COMP. 03 データ名J PIC S9(9) COMP. 02 一意名4. 03 データ名I PIC S9(9) COMP. 03 データ名J PIC S9(9) COMP. : : 02 一意名m. 03 データ名I PIC S9(9) COMP. 03 データ名J PIC S9(9) COMP. 01 一意名n. 02 データ名K PIC X(n).
機能
論理ファイルから入力したブロックを,更新目的で出力します。または更新要求を取り消します。
- ブロックを更新するタイミングを次に示します。
-
-
回復対象のDAMファイルの場合
更新したデータはDAMサービス専用共用メモリ上に蓄えておき,トランザクションがコミットしたときに,実際にファイルを更新します。ただし,ディファード更新を指定したDAMファイルの場合は,トランザクションのコミットとは非同期に更新されます。
-
回復対象外のDAMファイルの場合
CBLDCDAM('REWT')が正常に終了した時点で,DAMファイルが更新されます。
-
複数のブロックを一括して設定したときに,指定したブロックのうちで一つでもエラーになると,処理を中断してエラーリターンします。このとき更新はしません。
論理ファイルのブロックを更新するときは,論理ファイル名と,CBLDCDAM('OPEN')で返されたファイル記述子を設定します。
UAPで値を設定するデータ領域
●データ名A
DAMファイルとのインタフェースコードを「VALUE 'DCDAMSVC'」と設定します。
●データ名C
論理ファイル名を8文字以内で設定します。8文字に満たない場合は,後ろを空白で埋めてください。
●データ名D
一意名3から一意名mの数(データ名Iとデータ名Jの組の数)を設定します。
●データ名E
更新データ長を設定します。更新データ長は(更新ブロック長×更新ブロック数)にしてください。
更新ブロック数とは,一意名3から一意名mの数(データ名Iとデータ名Jの組の数)で設定するブロック数の合計です。
●データ名H
論理ファイルをオープンしたときに返されたファイル記述子を設定します。
●データ名F
論理ファイルのブロック更新を示す要求コードを「VALUE 'REWT'」と設定します。
●データ名G
更新種別を,次のどちらかで設定します。
VALUE 'U'…更新要求
VALUE 'C'…更新の取り消し
●データ名I
アクセスするブロックの,先頭の相対ブロック番号を設定します。
●データ名J
アクセスするブロックの,最後の相対ブロック番号を設定します。0を設定した場合は,データ名Iに設定した相対ブロック番号のブロックだけを更新します。
●データ名K
更新データ領域を設定します。
●データ名Z
0を設定します。
OpenTP1から値が返されるデータ領域
●データ名B
ステータスコードが,5けたの数字で返されます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
すべてのブロック更新は正常に終了しました。 |
01600 |
CBLDCRPC('OPEN ')を呼び出していません。 |
トランザクションの範囲外で,CBLDCDAM('REWT')を呼び出しています(回復対象のDAMファイルにアクセスした場合だけリターンされます)。 |
|
ユーザサービス定義のatomic_updateオペランドの指定が'N'になっています(回復対象のDAMファイルにアクセスした場合だけリターンされます)。 |
|
CBLDCDAM('STRT')を呼び出していません(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。 |
|
次に示すように,UAPを正しくリンケージしていません。
|
|
01603 |
データ名Hに設定したファイル記述子は正常にオープンして得られたファイル記述子ではありません。 |
DAMファイルをオープンしていません。 |
|
01604 |
更新データ長(更新ブロック長×更新ブロック数)が短過ぎます。 |
01605 |
更新目的で論理ファイルのブロックを入力していません。 |
01606 |
相対ブロック番号が間違っています。 |
01607 |
メモリが不足しました。 |
01609 |
データ名Dに1より小さい値を設定しています。 |
01611 |
データ名Gに設定した値が間違っています。 |
01613 |
ブロック更新した回数※が,DAMサービス定義の1トランザクションで更新できる最大ブロック数に指定した値を超えました (回復対象のDAMファイルにアクセスした場合だけリターンされます)。 |
01620 |
出力エラーが起こりました(回復対象外のDAMファイルにアクセスした場合だけリターンされます)。 |
01621 |
指定したファイルが論理閉塞されています。 |
01622 |
指定したファイルが障害閉塞されています。 |
01629 |
トランザクションサービスでエラーが起こりました (回復対象のDAMファイルにアクセスした場合だけリターンされます)。 |
01641 |
更新データ長(更新ブロック長×更新ブロック数)が長過ぎます。 |
01690 |
インタフェースコード(データ名A)が間違っています。 |
01691 |
要求コード(データ名F)が間違っています。 |
- 注※
-
詳細については,マニュアル「OpenTP1 システム定義」のDAMサービス定義のdam_update_blockオペランドを参照してください。
注意事項
ステータスコード「01613」が返された場合,次のどれかの方法で処置してください。
-
DAMサービス定義のdam_update_blockオペランドの指定値を大きくする。
-
DAMサービス定義のdam_update_block_overオペランドにerrorを指定して「01613」となった場合,dam_update_block_overオペランドの指定をflushに変更する。
-
更新するブロック数をDAMサービス定義のdam_update_blockオペランドの指定値以下にする。
定義を変更する場合は,マニュアル「OpenTP1 システム定義」のDAMサービス定義のdam_update_blockオペランド,およびdam_update_block_overオペランドを参照し,注意事項を確認してください。