FOR-EACH (For Each)

開放式語法 FOR-EACH{(H)} 項目 IN 陣列 | %LIST | %SPLIT | %SUBARR | 列舉
代碼 因素1 擴充因素2
FOR-EACH   項目 IN 陣列 | %LIST | %SPLIT | %SUBARR | 列舉

FOR-EACH 作業會開始一組作業,以處理陣列、子陣列、%LIST、%SPLIT 或列舉中的項目 (一次一個)。

FOR-EACH 的第一個運算元是變數。 它不能是陣列。

FOR-EACH 的第二個運算元可以是陣列、%LIST、%SPLIT、%SUBARR 或列舉。 它必須具有與第一個運算元相容的資料類型。 如果 FOR-EACH 的第一個運算元是資料結構,則第二個運算元必須透過 LIKEDS 關鍵字與第一個運算元相關。

反覆地將第二運算元的每個元素指派給第一個運算元。 在 FOR-EACH 作業與 ENDFOR 作業之間的作業群組內,第一個運算元會保留要處理的元素值。

若為數值,則容許半調整作業碼擴充元 'H'。 半調整的規則相當於算術運算的規則。 確保精確度

範例

在下列範例中, order_states 陣列的每一個元素都會指派給 state 變數。

DCL-S order_states CHAR(10) DIM(3);
DCL-S state CHAR(20);

order_states(1) = 'Open';
order_states(2) = 'Active';
order_states(3) = 'Closed';
FOR-EACH state in order_states;
   DSPLY state;
ENDFOR;
程式會顯示下列輸出:

DSPLY  Open
DSPLY  Active
DSPLY  Closed

在下列範例中,兩個 FOR-EACH 陳述式相同,但第二個 FOR-EACH 作業具有作業擴充元 'H' ,指出執行半調整。

價格 (1)(值為 5.279) 指派給 價格時, 價格(只有兩個小數位數) 的值是 5.27 (第一個 FOR-EACH 迴圈) 及 5.28 (第二個 FOR-EACH 迴圈 (半調整))。


DCL-S prices PACKED(15:5) DIM(2);
DCL-S price PACKED(15:2);

prices(1) = 5.279;
prices(2) = 5.271;

FOR-EACH price in prices;
   DSPLY (%char(price));
ENDFOR;

FOR-EACH(H) price in prices;
   DSPLY (%char(price));
ENDFOR;
程式會顯示下列輸出:

DSPLY  5.27
DSPLY  5.27
DSPLY  5.28
DSPLY  5.27

請參閱 %LIST 範例 ,以取得使用內建函數 %LIST 指定之清單中每一個項目的 FOR-EACH 處理範例。

請參閱 %SPLIT 範例 ,以取得內建函數 %SPLIT 所傳回之暫時陣列中每一個項目的 FOR-EACH 處理範例。

如需列舉中每個常數的 FOR-EACH 處理範例,請參閱 使用列舉