バージョン 4.2.5
 —  ステートメント  —

BACKOUT TRANSACTION

BACKOUT [TRANSACTION]

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント: ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BEFORE BREAK PROCESSING | DELETE | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION DATA | HISTOGRAM | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE

関連機能グループ:「データベースへのアクセスと更新


機能

BACKOUT TRANSACTION ステートメントは、現在の論理トランザクション内で実行された、すべてのデータベース更新をバックアウトします。 このステートメントも、トランザクション中に保持されていたすべてのレコードを解放します。

BACKOUT TRANSACTION ステートメントは、Natural の制御下でデータベーストランザクションが発生した場合にのみ実行されます。 どのデータベースに対して、ステートメントが実行されるかは、Natural プロファイルパラメータ ETEND/BACKOUT TRANSACTION ステートメントの実行)の設定に依存します。

Natural が発行する BACKOUT TRANSACTION

ユーザーが端末コマンド(コマンド %% または CLEAR キー)で現在の Natural を中断した場合、Natural によって BACKOUT TRANSACTION ステートメントが発行されます。

詳細については、『端末コマンド』ドキュメントで端末コマンド %% を参照してください。

追加情報

トランザクションバックアウト機能の使用に関する詳細については、『プログラミングガイド』の「データベース更新 - トランザクション処理」セクションおよび「トランザクションのバックアウト」セクションを参照してください。

Top of page

制限事項

このステートメントは Entire System Server では使用できません。

Top of page

データベース固有の考慮事項

DL/I データベース PSB スケジューリングはシンクポイント要求によって終了するため、Natural では、BACKOUT TRANSACTION ステートメントの実行前にPSB ポジションを保存します。 次のコマンドを実行する前に、Natural では PSB の再スケジュールを行い、PCB ポジションをバックアウト前のポジションに戻そうとします。 バックアウトと次のコマンドの間にポイントされているセグメントが削除されていると、PCB ポジションが前方にシフトされていることがあります。
SQL データベース ほとんどの SQL データベースは作業の論理ユニットが終了するときにすべてのカーソルを閉じるため、BACKOUT TRANSACTION ステートメントをデータベースの更新処理ループ内に指定することはできません。このようなループの後に指定する必要があります。

Top of page

** Example 'BOTEX1': BACKOUT TRANSACTION                                
**                                                                      
** CAUTION: Executing this example will modify the database records!    
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 NAME                                                                
  2 DEPT                                                                
  2 LEAVE-DUE                                                           
  2 LEAVE-TAKEN                                                         
*                                                                       
1 #DEPT (A6)                                                            
1 #RESP (A3)                                                            
END-DEFINE                                                              
*                                                                       
LIMIT 3                                                                 
INPUT 'DEPARTMENT TO BE UPDATED:' #DEPT                                 
IF #DEPT = ' '                                                          
  STOP                                                                  
END-IF                                       
*                                            
FIND EMPLOY-VIEW WITH DEPT = #DEPT           
  IF NO RECORDS FOUND                        
    REINPUT 'NO RECORDS FOUND'               
  END-NOREC                                  
  INPUT 'NAME:       ' NAME (AD=O) /         
        'LEAVE DUE:  ' LEAVE-DUE (AD=M) /    
        'LEAVE TAKEN:' LEAVE-TAKEN (AD=M)    
  UPDATE                                     
END-FIND                                     
*                                            
INPUT 'UPDATE TO BE PERFORMED? YES/NO:' #RESP
DECIDE ON FIRST #RESP                        
  VALUE 'YES'                                
    END TRANSACTION                          
  VALUE 'NO'                                 
    BACKOUT TRANSACTION                      
  NONE                                       
    REINPUT 'PLEASE ENTER YES OR NO' 
END-DECIDE
*                                    
END                                 

プログラム BOTEX1 の出力:

DEPARTMENT TO BE UPDATED: MGMT30

MGMT30 部門の結果:

NAME:        POREE
LEAVE DUE:   45
LEAVE TAKEN: 31

確認照会:

UPDATE TO BE PERFORMED  YES/NO: NO

Top of page