END [OF ] TRANSACTION [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
ステートメントは、論理条件に基づいて実行できます。
詳細については、『プログラミングガイド』の「データベース更新 - トランザクション処理」セクションを参照してください。
このステートメントを、Entire System Server で使用することはできません。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | N | A | U | N | P | I | F | B | D | T | 可 | 不可 |
構文要素の説明:
operand1 |
トランザクションデータの保存:
Adabas データベース、またはバッチ関連 BMP リージョン内の DL/I データベース(IMS 環境のみ)に適用されるトランザクションに対して、ユーザーは、このステートメントを使用して、トランザクション関連情報を保存することもできます。
ただし、トランザクションデータは 2000 バイトを超えないようにする必要があります。 トランザクションデータは、 トランザクションデータは、Natural プロファイルパラメータ
|
---|
トランザクションデータ(operand1)が指定されていない END TRANSACTION
ステートメントは、Natural の制御下で、データベーストランザクションが行われたときにのみ実行されます。 Natural プロファイルパラメータ ET
の設定により、ステートメントがどのように実行されるかが決まります。ET=OFF
を指定すると、トランザクションの影響を受けたデータベースに対してのみ実行されます。ET=ON
を指定すると、最後の BACKOUT TRANSACTION
または END TRANSACTION
ステートメントの実行以後に参照された、全データベースに対して実行されます。
トランザクションデータ(operand1)が指定されている END TRANSACTION
ステートメントは常に実行され、データベースにトランザクションデータが格納されます(下記のセクションを参照)。 また、他のどのデータベースに対して END TRANSACTION
ステートメントが実行されるかは、ET
パラメータの設定で決まります(上記を参照)。
DL/I データベース | PSB スケジューリングはシンクポイント要求によって終了するため、Natural では、END TRANSACTION ステートメントの実行前に PSB ポジションが保存されます。 次のコマンドを実行する前に、Natural では、PSB の再スケジュールを行って PCB ポジションを END TRANSACTION ステートメント前のポジションに設定することが試みられます。 ポイントされているセグメントが END TRANSACTION ステートメントと次のコマンドの間で削除されていた場合は、PCB ポジションが前方にシフトされることもあります。
|
---|---|
VSAM データベース | VSAM にアクセスするときに適用されるトランザクションロジックについては、『データベース管理システムインターフェイス』ドキュメントの「Natural for VSAM」を参照してください。 |
SQL データベース | ほとんどの SQL データベースは作業の論理ユニットが終了するときにすべてのカーソルを閉じるため、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
7 RECORDS UPDATED
** 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
ENTER PERSONNEL NUMBER TO BE UPDATED: 20027800
NAME LAWLER FIRST-NAME SUNNY CITY MILWAUKEE