12.21.1. RETURN
RETURN用來退出當前執行的程序塊,例如一個FORM、METHOD、報表事件塊,不管是否出現在循環(LOOP)中,RETURN都會退出當前執行的程序塊,而不僅僅是退出循環(如果是在Form、METHOD中,只會退出Form、METHOD,不會退出Form、METHOD被調用所在的報表事件塊,即退Form、METHOD后繼續向被調用點后面執行)
12.21.2. STOP
l INITIALIZATION中的STOP會導致跳轉到AT SELECTION-SCREEN OUTPUT事件塊;
l 如果STOP在AT SELECTION-SCREEN OUTPUT塊里,則只是退出當前塊(STOP后面語句不執行而已),僅接着是顯示選擇屏幕;
l AT SELECTION-SCREEN [ON]…選擇屏幕事件塊中的STOP也只是退出當前事件塊,繼續后面的事件塊;
l 另外,即使STOP在循環中,還是在FORM,METHOD,也是直接從被調用的點退出所在事件塊,而不僅僅只退出當前循環、FORM、METHOD,這與直接在事件塊中的效果是一樣的;
12.21.3. EXIT
l INITIALIZATION中的EXIT會導致跳轉到AT SELECTION-SCREEN OUTPUT事件塊;
l 如果EXIT在AT SELECTION-SCREEN OUTPUT塊里,則只是退出當前塊(EXIT后面語句不執行而已),僅接着是顯示選擇屏幕;
l AT SELECTION-SCREEN [ON]…選擇屏幕事件塊中的EXIT也只是退出當前事件塊,繼續后面的事件塊;
l 從START-OF-SELECTION開始往后的事件塊,如果出現EXIT,則會開始listprocessor(列表處理),並跳轉到相應的List輸出界面(前提條件是要在退出前已經向屏幕輸出內容了,否則也不會跳轉);注:END-OF-SELECTION事件塊也會被跳過
l 另外,如果EXIT在循環(DO、WHILE、LOOP)里,只是跳出當前循環而已;
l 如果是在FORM,METHOD中,而非循環中,則退出當前的FORM、METHOD,其作用與RETURN類似
12.21.4. CHECK
CHECK跳轉的前提是<expr>為假時。
l CHECK只是跳出當前事件塊,繼續下一個事件塊的處理,相當於方法的return;
l 另外,如果CHECK在循環(DO、WHILE、LOOP)里,只是跳出當前循環而已;
l 如果CHECK出現在循環以外,退出的是當前執行的程序塊(processing block),例如一個FORM,METHOD,或EVENT。
12.21.5. LEAVE
LEAVE PROGRAM. 退出整個程序
LEAVE TO TRANSACTION ta
LEAVE LIST-PROCESSING. 從list processor回到dialog processor
LEAVE TO LIST-PROCESSING 控制權從dialog processor轉交給list processor
LEAVE { SCREEN | {TO SCREEN dynnr} }
12.21.5.1. REJECT
REJECT是用在邏輯數據庫GET event blocks中,與EXIT和CHECK不一樣的是(EXIT和CHECK如果是在循環中時,只是退出循環;如果是在FORM中,則只是退出當前FORM),REJECT可以從循環或者一個FORM中直接跳出所在的GET事件塊:
REJECT [<dbtab>].
終結邏輯數據庫當前節點數據行的處理
如果省略選項<dbtab>, 則邏輯數據庫會自動讀取同一節點的下一行數據,即同一節點的GET事件塊會被觸發。如果使用了<dbtab>選項,則邏輯數據庫會讀取節點<dbtab>的下一行數據,此時的<dbtab>節點必須是REJECT所在當前節點的上級節點。