Page History
...
7.106.2 ROLLBACK の使用例
...
注文の明細を入力するようユーザーに要求し、注文の頭書きと関連するすべての明細行をデータベースに書き込みます。注文を保管するかどうかをユーザーに問い合わせ、応答が\[YES\]でない場合は、注文をデータベースから削除します。でない場合は、注文をデータベースから削除します。
...
GROUP_...
BY NAME(#ORDERHEAD)
...
FIELDS(#ORDNUM #CUSTNUM #DATEDUE)
DEF_
...
LIST NAME(#ORDERLINE)
...
FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE)
DEFINE FIELD(#CONFIRM)
...
TYPE(*CHAR)
...
LENGTH(3)
...
LABEL('
...
Confirm order :')
...
SET_
...
MODE TO(*ADD)
INZ_
...
LIST NAMED(#ORDERLINE)
...
NUM_ENTRYS(20)
...
REQUEST FIELDS(#ORDERHEAD)
...
BROWSELIST(#ORDERLINE)
...
INSERT
...
FIELDS(#ORDERHEAD)
...
TO_FILE(ORDHDR)
...
SELECTLIST NAMED(#ORDERLINE)
...
GET_ENTRYS(*NOTNULL)
...
INSERT FIELDS(#ORDERLINE)
...
TO_FILE(ORDLIN)
ENDSELECT
...
REQUEST
...
FIELDS((#CONFIRM)(
...
#ORDNUM *NOCHG))
...
IF
...
COND('
...
#CONFIRM =
...
YES')
COMMIT
MESSAGE MSGTXT('Order has been commited to the database')
ELSE
ROLLBACK
MESSAGE MSGTXT('Order has been removed from the database')
ENDIF
(例えば) 4行目の明細行の書き込み中にこのファンクションが失敗した場合、自動ロールバックが実行されます。これにより、注文の頭書きと作成済みのすべての明細行がファイルでロールバックされます。 MESSAGE MSGTXT('Order has been commited to the database') ELSE ROLLBACK MESSAGE MSGTXT('Order has been removed from the database') ENDIF (例えば) 4行目の明細行の書き込み中にこのファンクションが失敗した場合、自動ロールバックが実行されます。これにより、注文の頭書きと作成済みのすべての明細行がファイルでロールバックされます。