決定指令順序
表格 表 1 顯示在指令檔中可以根據程式狀態放置特定指令的位置,以及當程式在四個程式狀態中的每一個程式狀態中發現指令時所發生的情況。 如果直欄包含橫線,則會在該程式狀態下接受指令,並讓程式處於該狀態。 如果直欄中出現 INIT、 INPUT、 TRANS或 PROC 其中一個單字,則會在直欄標題所指示的程式狀態中接受指令,但會將程式移至 INIT、 INPUT、 TRANS或 PROC所指示的狀態。 當程式發現指令處於該程式狀態時,直欄中的星號指出錯誤。 程序狀態的直欄中以匕首 (†) 標示的指令會清除作用中資料集。
此表格顯示六組指令: 公用程式、檔案定義、輸入程式、資料轉換、受限轉換及程序指令。 下列各節將討論這些群組。
若要讀取表格,請先找到指令。 如果您只想知道它可以在指令串流中的何處,請尋找沒有星號的直欄。 例如,當程式處於輸入程式狀態、轉換狀態或程序狀態時,可以使用 COMPUTE 指令,但如果您嘗試在起始狀態中使用它,則會導致錯誤。 如果您想要知道指令後面可以有哪些內容,請查看指令旁邊的四個直欄中的每一個。 如果直欄是虛線,則在該程式狀態的直欄中未顯示星號的任何指令都可以在指令之後。 如果直欄包含 INIT、 INPUT、 TRANS或 PROC 其中一個字組,則 在該字組所指示程式狀態的直欄中未顯示星號的任何指令都可以在指令之後。
例如,如果您想要知道 INPUT PROGRAM 指令後面可以有哪些指令,請先注意,只有在起始或程序狀態中才容許這樣做。 然後,請注意 INPUT PROGRAM 會將程式置於任何合法發生的輸入程式狀態。 這表示在 INPUT 直欄中具有橫線或單字的指令可以跟在 INPUT PROGRAM 指令後面。 這包括所有公用程式指令、 DATA LIST 指令、輸入程式指令及轉換指令 (例如 COMPUTE)。 在 INPUT PROGRAM 指令之後不容許的指令是大部分檔案定義指令,它們是自己的輸入程式 (例如 GET)、受限轉換 (例如 SELECT IF) 及程序。
| 起始設定 | 輸入 | 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 | — |