|
第七章 LIST
<回「入門講義」>
List
是 AREMOS/Windows 語言�堳雂隢K而強有力的工具。簡單說,一個
list 是「a
collection of names」,代表一群 objects。如果要反覆對某一群
objects 做操作,我們可先產生一個 list 來代表這群 objects。只要對這個
list 做操作,就相當於對那群 objects 做操作。同時 list 本身也是一種
(type)
object,可存在 bank �堙F或也可以
C
碟上的一個 file 來保存,隨時取用。 本章介紹三種不同的方法產生
list。 7.1
使用
List 指令來產生 list 最簡單產生
list 的方法是使用典型的 object
command,即以 list 指令來產生一個 list。看下面範例說明: (1)鍵入指令
list
n1=gnp,cp,gnp96; (2)鍵入指令
list
listf n2=gdp,gdp96; (3)鍵入指令
set
freq q; set per 1985:1 1986:4; open niaq; (4)鍵入指令
print
#n1; (5)鍵入指令
print
#(listf n2); (6)鍵入指令
display
n1; (7)鍵入指令
view
n2.lst; (8)Tools
→ AREMOS Editor → Files → Open → 磁碟機( C 槽) → All files
(在檔案類型處)
→ n2.lst → 確定 (9)File
→ Exit (10)鍵入指令
open<pri>mybank; (11)鍵入指令
copy
list n1; (12)鍵入指令
open
mybank; (13)鍵入指令
copy
list n1; 說明:
(1):在第六章 6.1 節曾介紹產生 object 的 object command 一般型式是:
objecttype objectname=definition;
在此乃是以 list 指令 (object type) 產生一個 list,名叫 n1(objectname),而
n1 的內容即為 gnp、cp、gnp96,3 個 names。同時 n1 本身是一個
object,被產生後即存放在 work
bank �堙C
注意:您可直接鍵入指令,也可用滑鼠操作,Data →
List → 鍵入 n1(在 Name 處) → 鍵入 gnp,cp,gnp96 (在 list Item Text
處)
→ OK(如圖 7.1.1 )。
【圖7.1.1】 (2):此指令可產生另一個
list,名叫 n2,其內容為 gdp,gdp96 二個 names。但在 list 指令後面如果加上
listf (即l istfile 之簡稱),則所產生的 n2 並不是存在 work
bank �堛漱@個 list,而是存在 C 碟上<WAREM32>的一個 file (就叫做
list
file),其 filename 為 n2.lst。若您用滑鼠操作,在 List Edit And
Display 的畫面上,必須鍵入 listfn2 (在 Name 處)。 (4):一旦產生
n1,我們可用 n1 來替代它所代表的 3 個 objects。使用方法乃在前面加「#」符號。在此,print
#n1 相當於 print gnp,cp,gnp96。因 n1 只含 3 個 objects,尚感覺不出
list 的威力。如果 n1 含上百個或上千個 objects,便可瞭解
list 可節省我們不少 key
in 的人力時間。 (5):此指令與(4)式相同,只是
C 碟上的 list 後面總要加 listf。此指令相當於 print
gdp,gdp96。 (6):此指令可印出
n1 所代表的 3 個 names。 (7):範例(二)已介紹過,view
指令可查看 C 碟上的 file。 (8):使用
AREMOS
Editor 去查看 n2.lst file,如有必須,可用此編輯程式來增加或減少
n2 �堛� names。 (9):跳出
AREMOS
Editor 系統。 (10):open
一個新的 bank 叫 mybank,同時指定其為 primary
bank。原來的 work bank 已不再是 primary bank。 (11):此指令把
work
bank �堛� n1 copy 到 primary bank (在此為 mybank)以便能夠把 n1
這個 object 放在 mybank �堳O存起來。注意:copy 可把任何
object 從已 open 的資料庫中拷到 primary
bank。 (12)(13):將來再進入
AREMOS,可把存放在 mybank �堛� n1 隨時 copy 出來使用。不過,如以
listfile 型式保留在 C 碟,例如 n2.lst,則隨時可使用,不需如此拷來拷去。 <回頁首>
7.2
使用 Index 指令來產生 list 上節所介紹以
list 指令產生 list 方法,乃是土法煉鋼,把 names 逐一輸入。現在介紹第二種產生
list 方法則是利用 Index
Bank Objects 的方法。第三章已介紹過,index 方法可線上 (online)
查詢已 open 的 banks 中之 object,尤其可利用 wildcard
characters 「*」與「?」。Index Bank Objects 後,在「Save Names
In List」處,鍵入 n3 (為設定 list 的 name),則電腦會把 index
所查詢到的所有 object
names 自動形成一個 list,而以該指定的 list name (即 n3 )為此新產生的
list
的name。以下面範例說明(用滑鼠操作): (1)Data
→ Bank → Open → Files → 磁碟機 (看看自己的資料庫放在那一槽)
→niaq.bnk → 確定 → Open → Cancel 跳回主畫面 (2)Data
→ Bank → Index → 鍵入指令 niaq:gnp*.q(在 Name(s) or Wildcard 處)
→ 鍵入指令 n3 (在 Save Names In List 的 Name 處) → OK (3)Data
→ Bank → Index → 鍵入指令 niaq:cp*96.q (在 Name(s) or Wildcard
處)
→ 鍵入指令 listf n4(在 Save Names In List 的 Name 處) → OK (4)Data
→ Bank → Display → 鍵入指令 n3 (在 Name 處) → OK (5)鍵入指令
view
n4.lst; (6)鍵入指令
set
freq q; (7)鍵入指令
copy
#n3; (8)Data
→ Bank → Index → 鍵入指令 work:*,*(在 Name(s) or Wildcard 處)
→ 鍵入 n5 (在 Save Names In List 的 Name 處) → OK (9)Data
→ Bank → Index → 選 series(在 Type 處) → 鍵入 work:*.* (在
Name(s)
or Wildcard 處) → 鍵入指令 n6 (在 Save Names In List 的 Name 處) →
OK 說明:
(2):此操作一方面做 index 查詢,同時把所找到的 object
names 形成一個 list 叫 n3,內含 3 個 names。
(3):此操作一方面做 index 查詢,同時把所找到的 object
names 形成 C 碟上 <WAREM32> 子目錄下的一個 list file,叫
n4.lst,內含 13 個 names。(操作方法,如圖 7.2.3 )
【圖
7.2.3】 (4)(5):見
7.1 節之說明。 (6)(7):第
(7) 式把 n3 所代表的 3 個 objects 從 niaq 資料庫拷到 primary bank。但從執行第
(4) 式 display 指令可看出一個 list 所含 object names 並無
version name。因此要先 set
freq q,與所要 copy 的資料頻率相同,否則會得到 error
message。換句話說,copy #n3 相當於 copy gnp, gnp96, gnpexp96。而在
set
freq q 下,則相當於 copy gnp.q, gnp96.q, gnpexp96.q。 (8):此操作
index
work bank 上所有 objects,含 3 個 copy 過來的 series 以及執行 (2)
式所形成的 list n3,並把這些
object names
形成一個l ist 叫 n5。 (9):此操作
index
work bank 所有屬於 serie s的 objects,在此即是 copy 過來的 3
個 series,而把這些 series
names 形成一個 list 叫 n6。Index objecttype 乃限定某類 object
做 index,否則會 index 所有 objects。(操作如圖 7.2.9 )
【圖
7.2.9】 註:用
Index
Bank Objects 方式做成的 List 是有限制 objects 數目,若資料庫裡的筆數很多皆想做成
1 個 List,需要修改 AREMOS 系統裡的設定:Options
→ Set → Databanks…→ 鍵入 4000 (在 Limit Number of items Found
to) → OK 。
【圖
7.2.10】 <回頁首>
7.3 使用 Set Operator 來產生 list 如果
primary bank �堣w建有一些 lists,或 C 碟上已建有一些 list
files,我們可利用 union(+),difference(-),intersection(*),concatenation(,)等
set
operators 來產生新的 list 或 list file。假定 primary bank �堣w有
n1,n2 兩個 lists,而 C 碟上有 m1.lst,m2.lst 兩個 list files。則: (1)鍵入指令
list n3=#n1+#n2; (2)鍵入指令
list n4=#n1-#n2; (3)鍵入指令
list n5=#n1*#n2; (4)鍵入指令
list n6=#n1,#n2; 說明:
(1):此指令展生新的 list n3,是 n1 與 n2 的 union。在其他操作方法上,也可使用滑鼠,Data
→ List → OK進去修改如圖 7.3.1。
【圖7.3.1】
(2):n4 是 n1 去掉與 n2 有相同 names。
(3):n5 是 n1 與 n2 的 intersection (交集)。
(4):n6 與 n3 的差別在於,如果 n1 與 n2 有重覆,則 n3 只取一個,而
n6 會重覆放進去。
此外,我們亦可:
(5):鍵入指令 list m3=#(listf m1)+#(listf m2);
(6):鍵入指令 list listf m4=#(listf m1)+#(listf m2);
(7):鍵入指令 list k1=#n1[1-200];
(8):鍵入指令 list k2=#n1[201-266]; 說明: (5):在
primary
bank �堬ㄔ秅@個 list 叫 m3,其內容是 listf m1 與 listf
m2 的 uinon。 (6):在
C 碟 <warem32> 子目錄上產生一個 listf
叫 m4.lst,其內容也是 m1 與 m2 的 union。 (7)(8):假若
list
n1 裡的筆數 (objects) 超過 200 筆以上,則必須分割,在此分割成
k1,
k2兩個 list。 <回頁首> <回「入門講義」>
|