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

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

CBLDCTAM('MFY '/'MFYS'/'STR '/'WFY '/'WFYS'/'YTR ')

名称

TAMテーブルのレコードの更新/追加

形式

PROCEDURE DIVISIONの指定

 
CALL  'CBLDCTAM' USING 一意名1 一意名2 一意名3 一意名4
 

DATA DIVISIONの指定

 
01 一意名1.
   02 データ名A  PIC X(4).
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(32).
   02 FILLER    PIC X(68).
   02 データ名D  PIC S9(4) COMP.
   02 FILLER    PIC X(2).
   02 データ名J  PIC S9(9)  COMP.
   02 FILLER    PIC X(392).
01 一意名2.
   02 データ名E  PIC X(4).
   02 FILLER    PIC X(3).
   02 データ名I  PIC X(1).
01 一意名3.
   02 データ名F  PIC X(m).
01 一意名4.   02 データ名G  PIC X(n).
 

機能

キー値に示すレコードを,TAMテーブル上に更新または追加します。

レコード排他でTAMテーブルがオープンしている場合,次のように更新排他でレコード排他を確保します。

TAMテーブルのレコード更新/追加がエラーリターンした場合,このプログラムで確保した資源はすべて解放して,プログラムを呼び出す前の状態に戻ります。ただし,このプログラムを呼び出す前に,参照排他で確保されていたTAMテーブルを更新または追加した場合は,更新排他となり参照排他には戻りません。

更新または追加するデータ内のキー値の格納位置,およびキー領域長は,TAMテーブルファイルの初期作成時のtamcreコマンドに設定した値です。

TAMテーブルファイルの初期作成時,データ部にキー値を付けている(tamcreコマンドに-sオプションを指定していない)場合は,データ部にキー値があります。そのため,TAMテーブルのレコード更新/追加に設定したキー値が,更新または追加するデータ内になければ,エラーリターンします。また,データ部にキー値を付けていない(tamcreコマンドに-sオプションを指定)場合は,データ部にキー値はありません。この場合は,更新または追加するデータの内容をチェックしません。

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

●データ名A

TAMの識別子を設定します。ただし,TAMサービスではこの値を参照しません。

●データ名C

更新または追加するレコードのTAMテーブル名を32文字以内で設定します。32文字未満の場合は,後ろを空白で埋めます。

●データ名D

更新または追加するデータが,1〜32767バイト以下のデータ長を設定します。データ長は,レコード長以上にします。データ名Eに「VALUE 'MFY△'」,「VALUE 'MFYS'」または「VALUE 'STR△'」を設定した場合だけ,この設定は有効になります。

●データ名J

更新または追加するデータが32768バイト以上のときのデータ長を設定します。データ長は,レコード長以上にします。データ名Eに「VALUE 'WFY△'」,「VALUE 'WFYS'」または「VALUE 'YTR△'」を設定した場合だけ,この設定は有効になります。

●データ名E

要求コードを設定します。

VALUE 'MFY△',VALUE 'WFY△'…レコードの更新だけ。

VALUE 'MFYS',VALUE 'WFYS'…レコードの更新または追加。

VALUE 'STR△',VALUE 'YTR△'…レコードの追加だけ。

●データ名F

キー値を設定します。キー値は,更新または追加するレコードのキー領域の長さで設定します。

●データ名G

更新または追加するデータ領域(バッファ)を設定します。

●データ名I

排他解除待ちの種別を,次に示す値で設定します。データ名Iに設定した値は,TAMサービス定義のtam_cbl_levelに '2' を指定した場合に有効になります。

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

VALUE 'N' … 排他の解除を待たないで,エラーリターンします。

TAMサービス定義のtam_cbl_levelに '0' または '1' を指定した場合は,データ名Iを指定する必要はありません。

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

●データ名B

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

ステータスコード

ステータスコード 意味
00000 TAMテーブルのレコードを正常に更新または追加しました。
01701 データ名Cに設定したTAMテーブル名が間違っています。
01702 データ名Fに設定したキー値が間違っています。
01706 データ名Gに設定した値が間違っています。
01707 データ名D,またはデータ名Jに設定したデータ長が短過ぎます。
01708 データ名E,またはデータ名Iに設定した値が間違っています。
01709 データ名Cに設定したテーブルはTAMテーブルではありません。
01710 TAMテーブルが定義されていません。
01720 TAMサービスが終了中です。
01721 TAMテーブルへアクセスする順序が間違っています。
UAPにリンケージしているトランザクション制御用オブジェクトファイルのリソースマネジャ登録が間違っています。または,UAPにトランザクション制御用オブジェクトファイルをリンケージしていません。
CBLDCTAMを呼び出したUAPのユーザサービス定義に,トランザクション属性なし(atomic_update=N)を指定しています。
01723 TAMテーブルが削除されています。
01724 TAMテーブルがロードされていません。
01727 TAMテーブルが論理閉塞状態です。
01728 TAMテーブルが障害閉塞状態です。
01730 TAMサービス定義で設定したTAMテーブルのアクセス形態では実行できません。
01731 指定されたレコードは存在しません。
01735 データ名Fに設定したキー値がTAMテーブルに存在するので,レコードの追加はできません。
01736 排他エラーが起こりました。TAMサービス定義のtam_cbl_levelオペランドに0を指定した場合,またはtam_cbl_levelオペランドに2を指定してデータ名IにWを設定した場合は,ロックサービス定義で指定した待ち時間のタイムアウトのため,資源を確保できませんでした。
01737 デッドロックが起こりました。
01760 UAPが,現在稼働しているTAMテーブルでは動作できないバージョンのTAMライブラリと結合されています。
01761 UAPが,現在稼働しているOpenTP1ファイルサービスでは動作できないバージョンのTAMライブラリと結合されています。
01762 UAPが,現在稼働しているTAMサービスでは動作できないバージョンのTAMライブラリと結合されています。
01763 TAMテーブルに空きレコードがありません。
01764 レコードが破壊されています。
01765 TAMサービスで管理できるトランザクション数を超えました。
01766 キャラクタ型スペシャルファイルのオープン数の制限値を超えました。
01767 スペシャルファイルに対するアクセス権がありません。
01768 TAMファイルに対するアクセス権がありません。
01769 メモリが不足しました。
01770 入出力エラーが起こりました。
01771 トランザクションサービスでエラーが起こりました。
01772 オープンしようとしたTAMファイルは,セキュリティ機能で保護されています。該当するファイルに対するACLがありません。
01773 アクセスしようとしたTAMファイルは,セキュリティ機能で保護されています。TAMテーブルのレコードを更新/追加しようとしたUAPには,アクセス権限がありません。