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

END TRANSACTION

END [OFTRANSACTION [operand1 ]

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

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

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

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


機能

END TRANSACTION ステートメントは、論理トランザクションの終了を示すために使用します。 論理トランザクションは、データベースに含まれている情報の論理的一貫性を保証するために、完全に実行される必要がある最小の作業論理ユニットです。この定義はユーザーが行います。

END TRANSACTION ステートメントが正しく実行されると、後続のユーザー、Natural、データベース、またはオペレーティングシステムによる中断に関係なく、トランザクション中のすべての更新処理をデータベースに対して物理的に適用することが保証されます。 END TRANSACTION ステートメントが正しく終了しなかった場合、トランザクション中の更新処理は自動的にバックアウトされます。

また、END TRANSACTION ステートメントでは、トランザクション中にホールド状態となっていたすべてのレコードが解放されます。

END TRANSACTION ステートメントは、論理条件に基づいて実行できます。

詳細については、『プログラミングガイド』の「データベース更新 - トランザクション処理」セクションを参照してください。

Top of page

制限事項

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

Top of page

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S     N A U N P I F B D T         不可

構文要素の説明:

operand1
トランザクションデータの保存:

Adabas データベース、またはバッチ関連 BMP リージョン内の DL/I データベース(IMS 環境のみ)に適用されるトランザクションに対して、ユーザーは、このステートメントを使用して、トランザクション関連情報を保存することもできます。 ただし、トランザクションデータは 2000 バイトを超えないようにする必要があります。 トランザクションデータは、GET TRANSACTION DATA ステートメントで読み込むことができます。

トランザクションデータは、Natural プロファイルパラメータ ETDB で指定したデータベースに書き込まれます。

ETDB パラメータを指定していない場合、トランザクションデータは、プロファイルパラメータ UDB で指定したデータベースに書き込まれます(メインフレーム環境を除く)。メインフレーム環境では、トランザクションデータは、Natural Security システムファイル(FSEC)が存在するデータベースに書き込まれます。FSEC を指定していない場合、Natural システムファイル(FNAT)と同じであるとみなされます。Natural Security をインストールしていない場合は、トランザクションデータは FNAT が存在するデータベースに書き込まれます。

Top of page

関連データベース

トランザクションデータ(operand1)が指定されていない END TRANSACTION ステートメントは、Natural の制御下で、データベーストランザクションが行われたときにのみ実行されます。 Natural プロファイルパラメータ ET の設定により、ステートメントがどのように実行されるかが決まります。ET=OFF を指定すると、トランザクションの影響を受けたデータベースに対してのみ実行されます。ET=ON を指定すると、最後の BACKOUT TRANSACTION または END TRANSACTION ステートメントの実行以後に参照された、全データベースに対して実行されます。

トランザクションデータ(operand1)が指定されている END TRANSACTION ステートメントは常に実行され、データベースにトランザクションデータが格納されます(下記のセクションを参照)。 また、他のどのデータベースに対して END TRANSACTION ステートメントが実行されるかは、ET パラメータの設定で決まります(上記を参照)。

Top of page

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

DL/I データベース PSB スケジューリングはシンクポイント要求によって終了するため、Natural では、END TRANSACTION ステートメントの実行前に PSB ポジションが保存されます。 次のコマンドを実行する前に、Natural では、PSB の再スケジュールを行って PCB ポジションを END TRANSACTION ステートメント前のポジションに設定することが試みられます。 ポイントされているセグメントが END TRANSACTION ステートメントと次のコマンドの間で削除されていた場合は、PCB ポジションが前方にシフトされることもあります。
VSAM データベース VSAM にアクセスするときに適用されるトランザクションロジックについては、『データベース管理システムインターフェイス』ドキュメントの「Natural for VSAM」を参照してください。
SQL データベース ほとんどの SQL データベースは作業の論理ユニットが終了するときにすべてのカーソルを閉じるため、END TRANSACTION ステートメントをデータベースの更新処理ループ内に指定することはできません。このようなループの後に指定する必要があります。

Top of page

例 1 - END TRANSACTION

** Example 'ETREX1': END TRANSACTION                                    
**                                                                      
** CAUTION: Executing this example will modify the database records!    
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 CITY                                                                
  2 COUNTRY                                                             
END-DEFINE                                                              
*                                                                       
FIND EMPLOY-VIEW WITH CITY = 'BOSTON'                                   
  ASSIGN COUNTRY = 'USA'                                                
  UPDATE                                                                
  END TRANSACTION                                                      
  /*                                                                    
  AT END OF DATA                                                        
    WRITE NOTITLE *NUMBER 'RECORDS UPDATED'                             
  END-ENDDATA                                                           
  /* 
END-FIND 
END 

プログラム ETREX1 の出力:

7 RECORDS UPDATED

例 2 - ET データを指定した END TRANSACTION

** Example 'ETREX2': END TRANSACTION (with ET data)                     
**                                                                      
** CAUTION: Executing this example will modify the database records!    
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
  2 FIRST-NAME                                                          
  2 CITY                                                                
*                                                                       
1 #PERS-NR (A8) INIT <' '>                                              
END-DEFINE                                                              
*                                                                       
REPEAT                                                                  
  INPUT 'ENTER PERSONNEL NUMBER TO BE UPDATED:' #PERS-NR                
  IF #PERS-NR = ' '                                                     
    ESCAPE BOTTOM                                                       
  END-IF                                                                
  /*                                        
  FIND EMPLOY-VIEW PERSONNEL-ID = #PERS-NR  
    INPUT (AD=M)    NAME / FIRST-NAME / CITY
    UPDATE                                  
    END TRANSACTION #PERS-NR                
  END-FIND                                  
  /*                                        
END-REPEAT                                  
END         

プログラム ETREX2 の出力:

ENTER PERSONNEL NUMBER TO BE UPDATED: 20027800

社員番号を入力して確認した後:

NAME LAWLER
FIRST-NAME SUNNY
CITY MILWAUKEE

Top of page