概觀 (REPEATING DATA 指令)
REPEATING DATA 會讀取其記錄包含重複資料群組的輸入觀察值。 對於每一個重複群組, REPEATING DATA 會在作用中資料集中建置一個輸出觀察值。 資料中的所有重複群組必須包含相同類型的資訊,雖然每一個輸入觀察值的群組數目可能不同。 每一個輸入觀察值的重複群組共用資訊可以針對該觀察值記錄一次,然後展開至每一個產生的輸出觀察值。 在這方面,具有重複資料結構的檔案就像階層式檔案,具有在單一記錄上而不是在個別記錄類型上記錄的兩個資訊層次。 如需讀取階層式檔案的相關資訊,請參閱 FILE TYPE—END FILE TYPE。
REPEATING DATA 必須在 INPUT PROGRAM 結構內或在具有混合或巢狀資料的 FILE TYPE 結構內使用。 在 INPUT PROGRAM 結構中, REPEATING DATA 之前必須有 DATA LIST 指令。 在 FILE
TYPE 結構中,只有在有變數要傳播至每一個產生的輸出觀察值時,才需要 DATA LIST 。
選項
重複群組的長度。 如果重複群組的長度因輸入觀察值而異,您可以在 LENGTH 次指令上指定一個變數來指示長度。 如果您不想讀取每一個重複群組中的所有資料,也可以使用 LENGTH 。
延續記錄。 您可以使用 CONTINUED 次指令,指出每一個輸入觀察值的重複群組包含在多筆記錄中。 您可以使用 ID 次指令,在相同輸入觀察值的記錄之間檢查識別變數的值。
摘要表格。 您可以使用 NOTABLE 次指令,不顯示彙總 DATA 次指令上指定之變數名稱、位置及格式的表格。
基本規格
基本規格需要三個次指令: STARTS、 OCCURS和 DATA。
STARTS指定重複資料區段的開始直欄。 當有連續記錄時,STARTS可以在每一個輸入觀察值的第一筆記錄上指定最後一個重複群組的結束直欄。OCCURS指定每一個輸入觀察值上的重複群組數目。 如果所有輸入觀察值的重複群組數目相同,則OCCURS可以指定一個數字。 否則,OCCURS應該指定變數名稱,其每一個輸入觀察值的值會指出該觀察值的重複群組數目。DATA指定重複區段中的名稱、位置,以及要從重複群組讀取的每個變數的格式。
次指令順序
DATA必須是在REPEATING DATA上指定的最後一個次指令。- 其餘次指令可依任何順序來命名。
指令語法的規則
REPEATING DATA只能在INPUT PROGRAM結構內指定,或在具有混合或巢狀資料的FILE TYPE結構內指定。DATA LIST、REPEATING DATA及任何用來建置輸出觀察值的轉換指令必須置於INPUT PROGRAM或FILE TYPE結構內。 適用於輸出觀察值的轉換應該在END INPUT PROGRAM或END FILE TYPE指令之後指定。- 如果未從每一個重複群組的最後一個位置讀取
DATA次指令上指定的最後一個變數,或重複群組的長度在輸入觀察值之間有所不同,則必須使用LENGTH。 - 如果每一個輸入觀察值的重複群組在連續記錄上繼續執行,則必須使用
CONTINUED。 - 與
REPEATING DATA搭配使用的DATA LIST指令必須定義記錄的所有固定格式資料。 - 重複群組通常記錄在固定格式記錄的結尾,但固定格式資料可能遵循資料結構中的重複資料,例如 IBM SMF 和 RMF 記錄。 在這類情況下,請使用下列順序。
DATA LIST .../* Read the fixed-format data before repeating data
REREAD COLUMNS= .../* Skip repeating data
DATA LIST .../* Read the fixed-format data after repeating data
REPEATING DATA ... /*Read repeating data