第十三章迴圈的使用 ( for-end )

<回「入門講義」>

 AREMOS/Windows 提供我們可對一個 list 裡的每一個 item 進行同樣的「運算操作」。由於 list 可含上百或最多至 10,000 個 items,因此若有迴圈操作的功能,可節省我們不少時間。有關迴圈的使用,可參考原文手冊「AREMOS/Windows Reference Manual」p. 95~97 之說明。本章僅以三個範例來介紹其最簡單之用法。以下皆是在主畫面 AREMOS Command 下鍵入指令。

 

13.1  迴圈之使用例()

 (1) 鍵入指令 open e:\waremos\niaq﹔

 (2) 鍵入指令 list n1=gnp ,cp,cg﹔

 (3) 鍵入指令 set freq q ﹔set per 1990q1 2003q4

 (4) 鍵入指令 for aaa=#nl﹔

 (5) 鍵入指令 print pchya(#aaa)﹔

 (6) 鍵入指令 analyze #aaa﹔

 (7) 鍵入指令 end﹔

說明:

 (4) :「for aaa=#n1」表示要對 list n 進行迴圈運作。aaa 是隨便給代號。從此行起即開始迴圈的運作,直到第 (7)行 end 為止。for-end 之間即是迴圈的「運作指令群」。

 (5)(6):此二行在 for 與 end 之間,是迴圈的「運作指令群」。基本上,「aaa」是一代號 (是一虛擬代號,並不存在)。電腦會把 n1 裡的每一個 item 當做「aaa」而依此「運作指令群」執行一次。

 (7):輸入 end 以後,電腦才會開始執行(5)(6)之指令群。

 <回頁首>

 

13.2  迴圈之使用例()    

假定我們要從資料庫叫取大堆資料,取出後並加以改名,而且是定期(每月或每季)常常要進行此種取改動作。此時以 for-end 來做就簡便多了。下面範例是把 aa  list 所代表之檢索代號從 niaq 資料庫 copy 到 primary bank,同時把名稱改成 bb  list 所代表之名字。

(1)    鍵入指令 set freq q ; set per 1985:1 1994:4;

(2)    鍵入指令 open e:\waremos\niaq;

(3)    鍵入指令 for aa=gnp,cp,cg  bb=x1,x2,x3;

(4)    鍵入指令 copy #aa as #bb;

(5)    鍵入指令 print #aa,#bb;

(6)    鍵入指令 end;

說明﹔

(3):前面我們採用預先設定 list 的內容為何。在此,我們也可採用直接在 for listname =後面把 items 的名稱一一輸入。for aa=.… bb=.…;表示要對兩個 list aa 與 bb 進行迴圈運作,以空一格把 aa 與 bb 連接起來。For 是宣稱開始迴圈運作,直到第 (6)end 出現為止。for-end 之間即是迴圈的「運作指令群」。

(4)(5):此二指令為迴圈的「運作指令」。「aa」與「bb」為虛擬代號。電腦會把 aa list 堛漕C一個 item 當做 aa,把 bb list 裡的每一個 item 當做 bb,而依此「運作指令」執行一次。

(6):輸入 end 以後,電腦才會開始執行迴圈的運作指令。

 

 <回頁首>

 

13.3  迴圈之使用例()

在第四章範例(五),我們要叫取跨資料庫之時間序列時,必須另外建立一個新的變數來將放在不同資料庫的同一筆資料加以結合。

 若所較取資料比數不多,則可土法煉鋼式的如範例(五)來操作。但新叫取的資料有幾十筆、甚至上百筆時,則可以迴圈來節省時間。此將範例(五)的指令改為如下:

 (1) 鍵入指令 set freq d; set per 1989:12:1 1990:1:12;

(2) 鍵入指令 open e:\waremos\stock80,e:\waremos\stock90;

(3) 鍵入指令 list n1=s1206@cl,s2805@cl;

(1) 鍵入指令 for aaa=#n1;

(2) 鍵入指令 series<1989:12:1 1989:12:31>new|#aaa=stock80:#aaa;

(3) 鍵入指令 series<1990:1:1 1990:1:20>new|#aaa=stock90:#aaa;

(4) 鍵入指令 end;

(5) 鍵入指令 list n2=#n1 prefix=new;

(6) 鍵入指令 print #n2;

 說明:

 (3):建立一個 list 叫n1,n1 代表著 s1206@cl、s2805@cl 兩個變數名稱。

 (5):此指令乃透過迴圈的執行形成一筆新的變數。新變數名稱即在 aaa 所代表的變數名稱前面加上 new 字眼。如當 aaa=s126@cl 時,此指令即在 primary bank 形成一筆資料叫 news1206@cl。

 (6):見(5)之說明。

 (8):建立一個 list 名叫 n2。此指令相當於 list n2=news1206@cl,news2805@cl; 即在 n1 所代表的各個變數名稱前加上一個字串 new 。我們也可將此字母加於變數之後,指令則是將 prefix 改為 suffix 即可。

如:
          
   list n2=#n1 suffix=new;
        相當於:
          
   list n2 =s1206@clnew,s2805@clnew;

  請留意:在 open 資料庫時,「鍵入指令 open niaq;」,意思事 open c:\WAREM32 子目錄裡的 niaq.bnk ;若您的資料庫 niaq.bnk 是放在 e 槽的 WAREMOS 子目錄時,則您必須「鍵入指令 open e:\WAREMOS\niaq;」。

           補充:轉換頻率的迴圈設定,在 AREMOS Command 下

(1)  鍵入指令 set freq w; set per 1990:1 2003:47;

(2)  鍵入指令 open e:\waremos\tse.bnk;

(3)  鍵入指令 list n1=jhk,jbangkok,js;

(4)  鍵入指令 for x=#n1;

(5)  鍵入指令 collapse<tolerate=99>#x|.w=#x|.d  last;

(6)  鍵入指令 end;

(7)  鍵入指令 print #n1;

 

 <回頁首>

<回「入門講義」>