決定指令順序

表格 表 1 顯示在指令檔中可以根據程式狀態放置特定指令的位置,以及當程式在四個程式狀態中的每一個程式狀態中發現指令時所發生的情況。 如果直欄包含橫線,則會在該程式狀態下接受指令,並讓程式處於該狀態。 如果直欄中出現 INITINPUTTRANSPROC 其中一個單字,則會在直欄標題所指示的程式狀態中接受指令,但會將程式移至 INITINPUTTRANSPROC所指示的狀態。 當程式發現指令處於該程式狀態時,直欄中的星號指出錯誤。 程序狀態的直欄中以匕首 (†) 標示的指令會清除作用中資料集。

此表格顯示六組指令: 公用程式、檔案定義、輸入程式、資料轉換、受限轉換及程序指令。 下列各節將討論這些群組。

若要讀取表格,請先找到指令。 如果您只想知道它可以在指令串流中的何處,請尋找沒有星號的直欄。 例如,當程式處於輸入程式狀態、轉換狀態或程序狀態時,可以使用 COMPUTE 指令,但如果您嘗試在起始狀態中使用它,則會導致錯誤。 如果您想要知道指令後面可以有哪些內容,請查看指令旁邊的四個直欄中的每一個。 如果直欄是虛線,則在該程式狀態的直欄中未顯示星號的任何指令都可以在指令之後。 如果直欄包含 INITINPUTTRANSPROC 其中一個字組,則 在該字組所指示程式狀態的直欄中未顯示星號的任何指令都可以在指令之後。

例如,如果您想要知道 INPUT PROGRAM 指令後面可以有哪些指令,請先注意,只有在起始或程序狀態中才容許這樣做。 然後,請注意 INPUT PROGRAM 會將程式置於任何合法發生的輸入程式狀態。 這表示在 INPUT 直欄中具有橫線或單字的指令可以跟在 INPUT PROGRAM 指令後面。 這包括所有公用程式指令、 DATA LIST 指令、輸入程式指令及轉換指令 (例如 COMPUTE)。 在 INPUT PROGRAM 指令之後不容許的指令是大部分檔案定義指令,它們是自己的輸入程式 (例如 GET)、受限轉換 (例如 SELECT IF) 及程序。

表 1. 指令和程式狀態
  起始設定 輸入 trans PROC
公用程式指令        
CLEAR TRANSFORMATIONS ** PROC PROC
COMMENT
DISPLAY **
DOCUMENT **
DROP DOCUMENTS **
END DATA
ERASE
FILE HANDLE
FILE LABEL
FINISH
INCLUDE
INFO
DEFINE—!ENDDEFINE
N OF CASES trans
NEW FILE 起始設定 起始設定 INIT†
PROCEDURE OUTPUT
SET, SHOW
TITLE, SUBTITLE
檔案定義指令        
ADD FILES trans ** trans
DATA LIST trans 輸入 TRANS†
FILE TYPE 輸入 ** 輸入 INPUT†
GET trans ** TRANS†
GET CAPTURE trans ** TRANS†
GET SAS trans ** TRANS†
GET TRANSLATE trans ** TRANS†
IMPORT trans ** TRANS†
INPUT PROGRAM trans ** TRANS†
KEYED DATA LIST trans trans
MATCH FILES trans ** trans
MATRIX DATA trans ** TRANS†
RENAME VARIABLES ** trans
UPDATE trans ** trans
輸入程式指令        
END CASE ** ** **
END FILE ** ** **
END FILE TYPE ** trans ** **
END INPUT PROGRAM ** trans ** **
POINT ** ** **
RECORD TYPE ** ** **
REPEATING DATA ** ** **
REREAD ** ** **
轉換指令        
ADD VALUE LABELS ** trans
APPLY DICTIONARY ** trans
COMPUTE ** trans
COUNT ** trans
DO IF—END IF ** trans
DO REPEAT—END REPEAT ** trans
ELSE ** trans
ELSE IF ** trans
FORMATS ** trans
IF ** trans
LEAVE ** trans
LOOP—END LOOP, BREAK ** trans
MISSING VALUES ** trans
NUMERIC ** trans
PRINT ** trans
PRINT EJECT ** trans
PRINT FORMATS ** trans
PRINT SPACE ** trans
RECODE ** trans
SPLIT FILE ** trans
STRING ** trans
VALUE LABELS ** trans
VARIABLE LABELS ** trans
VECTOR ** trans
WEIGHT ** trans
WRITE ** trans
WRITE FORMATS ** trans
XSAVE ** trans
受限轉換        
FILTER ** ** trans
REFORMAT ** ** trans
SAMPLE ** ** trans
SELECT IF ** ** trans
TEMPORARY ** ** trans
程式        
BEGIN DATA ** ** PROC
EXECUTE ** ** PROC
EXPORT ** ** PROC
GRAPH ** ** PROC
LIST ** ** PROC
SAVE ** ** PROC
SAVE TRANSLATE ** ** PROC
SORT CASES ** ** PROC
其他程序 ** ** PROC