第十三章循环的使用 ( 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 里的每一个 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;

 

 <回页首>

<回「入门讲义」>