STARTS 次指令 (REPEATING DATA 指令)

STARTS 指出每一個輸入觀察值的第一筆記錄上重複資料區段的開始位置。 STARTS 是必要項目,並且可以指定數字或變數名稱。

  • 如果每一個輸入觀察值第一筆記錄上的重複群組在相同直欄中開始,則 STARTS 會指定直欄號碼。
  • 如果每一個輸入觀察值的第一筆記錄上的重複群組不是在同一直欄中開始,則 STARTS 會指定變數名稱,其每一個輸入觀察值的值會指出第一筆記錄上重複群組的開始位置。 變數可以在 DATA LIST 上定義,或由 REPEATING DATA之前的轉換指令建立。
  • 在每一個輸入觀察值的多筆記錄上繼續重複群組時,如果每一個輸入觀察值的第一筆記錄中,重複群組的邏輯記錄長度有空間,則 STARTS 也必須指定結束位置。 結束直欄僅適用於每一個輸入觀察值的第一筆記錄。 如需範例,請參閱 CONTINUED 次指令。
  • 結尾直欄可以指定為數字或變數名稱。 開頭直欄和結尾直欄的規格以連字號區隔。 用來定義結束欄的變數值必須是有效值,且必須大於起始值。
  • 如果為輸入觀察值的結束欄指定的變數未定義或遺漏,則程式會顯示警告訊息,且不會從該輸入觀察值建置任何輸出觀察值。 如果為 STARTS 上的結束欄指定的變數值小於為起始欄指定的值,則程式會發出警告,並僅從該輸入觀察值的連續記錄建置輸出觀察值; 它不會從觀察值的第一筆記錄建置觀察值。
  • 如果需要但未提供結束位置,則程式會針對 DATA 次指令上指定的變數產生具有系統遺漏值的輸出觀察值,並可能誤讀資料檔中第一筆或第二筆記錄之後的所有資料 (請參閱 CONTINUED 次指令)。

相同位置中的重複群組

INPUT PROGRAM.
DATA LIST FILE=VEHICLE / SEQNUM 2-4 NUMPERS 6-7 NUMVEH 9-10.
REPEATING DATA STARTS=12 /OCCURS=NUMVEH
 /DATA=MAKE 1-8 (A) MODEL 9 (A) NUMCYL 10.
END INPUT PROGRAM.
  • STARTS 指定直欄號碼 12。 因此,重複群組必須從每一個輸入觀察值第一筆記錄的第 12 欄開始。

轉接位置中的重複群組

INPUT PROGRAM.
DATA LIST FILE=VEHICLE / SEQNUM 2-4 NUMPERS 6-7 NUMVEH 9-10.
+    DO IF   (SEQNUM LE 100).
+    COMPUTE FIRST=12.
+    ELSE.
+    COMPUTE FIRST=15.
+    END IF.
REPEATING DATA STARTS=FIRST /OCCURS=NUMVEH
 /DATA=MAKE 1-8 (A) MODEL 9 (A) NUMCYL 10.
END INPUT PROGRAM.
  • 此範例假設每一個輸入觀察值都記錄在單一記錄上,且沒有連續記錄。 對於序號 1 到 100 的所有記錄,重複群組從直欄 12 開始,對於序號大於 100 的所有記錄,重複群組從直欄 15 開始。
  • 每一筆記錄的序號在 DATA LIST 指令上定義為變數 SEQNUMDO IF—END IF 結構會建立變數 FIRST ,其值為 12 代表序號到 100 的記錄,值為 15 代表序號大於 100 的記錄。
  • STARTS 次指令上指定了變數 FIRST