本 章 介 紹 三 種 不 同 的 方 法 產 生 list。
最 簡 單 產 生 list 的 方 法 是 使 用 典 型 的 object command , 即 以 list 指 令 來 產 生 一 個 list 。 看 下 面 範 例 說 明:
(1) list n1=gdp,cp,gdp96;
(2) list listf n2=gnp,gnp96;
(3) set freq q; set per 85:1 86:4; open niaq;
(4) print #n1;
(5) print #(listf n2);
(6) display n1;
(7) view n2.lst;
(8) vii "n2.lst";
(9) 按大寫 Z 兩次
(10) open<pri>mybank;
(11) copy list n1;
此 時 可 「stop;」 出 來 , 稍 後 再 進 入 AREMOS:
(12) open mybank;
(13) copy list n1;
說 明:
| (1) : | 在 第 六 章 6.1 節 曾 介 紹 產 生 object 的 object command 一 般 型 式 是 :
objecttype objectname=definition; 在 此 乃 是 以 list 指 令 (objecttype) 產 生 一 個 list , 名 叫 n1 (objectname) , 而 n1 的 內 容 即 為 gdp,cp,gdp96 3 個 names 。 同 時 n1 本 身 是 一 個 object , 被 產 生 後 即 存 放 在 work bank �� 。 |
| (2) : | 此 指 令 可 產 生 另 一 個 list , 名 叫 n2 , 其 內 容 為 gnp,gnp96 2 個 names 。 但 在 list 指 令 後 面 如 果 加 上 listf (即 listfile 之 簡 稱) , 則 所 產 生 的 n2 並不 是 存 在 work bank �� 的 一 個 list , 而 是 存 在 home 子 目 錄 上 的 一 個 file (就 叫 做 list file), 其 filename 為 n2.lst。 |
| (4) : | 一 旦 產 生 n1 , 我 們 可 用 n1 來 替 代 它 所 代 表 的 3 個 objects 。 使 用 方 法 乃 在 前 面 加 「#」 符 號 。 在 此 , print #n1 相 當 於 print gdp,cp,gdp96 。 因 n1 只 含 3 個 objects , 尚 感 覺 不 出 list 的 威 力 。 如 果 n1 含 上 百 個 或 上 千 個 objects , 便 可 瞭 解 list 可 節 省 我 們 不 少 key in 的 人 力 時 間 。 |
| (5) : | 此 指 令 與 (4) 式 相 同 , 只 是 home 子 目 錄 上 的 list 前 面 總 要 加 listf 。 此 指 令 相 當 於 print gnp,gnp96。 |
| (6) : | 此 指 令 可 印 出 n1 所 代 表 的 3 個 names。 |
| (7) : | 範 例 (二) 已 介 紹 過 , view 指 令 可 查 看 home 子 目 錄 上 的 file 。 |
| (8)(9): | 可 使 用 vii 指 令 查 看 n2.lst file , 如 有 必 要 , 可 用 UNIX 之 vi 編 輯 指 令 來 增 加 或 減 少 n2 �� 的 names 。 要 跳 離 UNIX 之 vi 編 輯 畫 面 , 如 無 做 任 何 編 輯 指 令 , 可 按 兩 次 大 寫 Z 鍵 來 回 到 AREMOS 箭 頭 。 若 有 做 編 輯 指 令 , 則 先 按 ESC 鍵 , 再 按 兩 次 大 寫 Z 鍵 來 回 到 AREMOS 箭 頭 。 有 關 vi 編 輯 程 式 請 參 考 第 九 章 。 |
| (10): | open 一 個 新 的 bank 叫 mybank , 同 時 指 定 其 為 primary bank 。 原來的 work bank 已 不 再 是 primary bank。 |
| (11): | 此 指 令 把 work bank �� 的 n1 copy 到 primary bank (在 此 為 mybank)
以 便 能 夠 把 n1 這 個 object 放 在 mybank �� 保 存 起 來 。 注 意:
copy 指 令 可 把 任 何 object 從 已 open 的 資 料 庫 中 拷 到 primary
bank 。 其一般句型是:
copy objecttype objectname; 但 如 果 所 要 copy 的 是 series , 則 objecttype (即 series) 不 需 打 出 來 。 否 則 必 須 打 objecttype (在 此 為 list)。 |
| (12)(13): | 將 來 再 進 入 AREMOS , 可 把 存 放 在 mybank �� 的 n1 隨 時 copy 出 來 使 用 。 不 過 , 如 以 listfile 型 式 保 留 在 home 子 目 錄 , 例 如 n2.lst , 則 隨 時 可 使 用 , 不 需 如 此 拷 來 拷 去 。 |
上 節 所 介 紹 以 list 指 令 產 生 list 方 法 , 乃 是 土 法 煉 鋼 , 把 names 逐 一 輸 入 。 現 在 介 紹 第 二 種 產 生 list 方 法 則 是 利 用 index 指 令 。 第 三 章 已 介 紹 過 , index 指 令 可 線 上 查 詢 已 open 的 banks 中 之 object , 尤 其 可 利 用 wildcard characters「*」 與 「?」 。 Index 指 令 下 完 後 , 如 果 最 後 面 再 加 上 一 個 list name (例 如 n3) , 則 電 腦 會 把 index 所 查 詢 到 的 所 有 object names 自 動 形 成 一 個 list , 而 以 該 指 定 的 list name (即 n3) 為 此 新 產 生 的 list 的 name 。 以 下 面 範 例 說 明:
(1) open niaq;
(2) index niaq:gnp*.q n3;
(3) index niaq:cp*91.q listf n4;
(4) display n3;
(5) view n4.lst;
(6) set freq q;
(7) copy #n3;
(8) index work: n5;
(9) index series work: n6;
說 明:
| (2): | 此 指 令 一 方 面 做 index 查 詢 , 同 時 把 所 找 到 的 object names 形 成 一 個 list 叫 n3,內 含 3 個 names。 |
| (3): | 此 指 令 一 方 面 做 index 查 詢 , 同 時 把 所 找 到 的 object names 形 成 home 子 目 錄 上 一 個 listfile , 叫 n4.lst , 內 含 13 個 names。 |
| (4)(5): | 見 7.1 節 之 說 明。 |
| (6)(7): | 第 (7) 式 把 n3 所 代 表 的 3 個 objects 從 niaq 資 料 庫 拷 到 primary bank 。 但 從 執 行 第 (4) 式 display 指 令 可 看 出 一 個 list 所含 object names 並 無 versionname 。 因 此 要 先 set freq q , 與 所 要 copy 的 資 料 頻 率 相 同 , 否 則 會 得 到 error message。 換 句 話 說 , copy #n3 相 當 於 copy gnp,gnp96,gnpexp91 。 而 在 set freq q 下 , 則 相 當 於 copy gnp.q,gnp96.q,gnpexp91.q。 |
| (8): | 此 指 令 index work bank 上 所 有 objects , 含 3 個 copy 過 來 的 series 以 及 執 行 (2) 式 所 形 成 的 list n3 , 並 把 這 些 object names 形 成 一 個 list 叫 n5。 |
| (9): | 此 指 令 index work bank 所 有 屬 於 series 的 objects , 在 此 即 是 copy 過 來 的 3 個 series , 而 把 這 些 series names 形 成 一 個 list 叫 n6 。 Index objecttype 乃 限 定 某 類 object 做 index , 否 則 會 index 所 有 objects。 |
如 果 primary bank �� 已 建 有 一 些 lists , 或 home 子 目 錄 上 已 建 有 一 些 listfiles , 我 們 可 利 用 union (+) , difference (-) , intersection (*) , concatenation (,) 等 set operators 來 產 生 新 的 list 或 listfile 。 假 定 primary bank �� 已 有 n1 , n2 兩 個 lists , 而 home 子 目 錄 上 有 m1.lst , m2.lst 兩 個 listfiles 。 則:
(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。
(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)
說 明:
(5) :在 primary bank �� 產 生 一 個 list 叫 m3 , 其 內 容 是 listfile m1 與 listfile m2 的 union。
(6) :在 home 子 目 錄 下 產 生 一 個 listfile 叫 m4.lst , 其 內 容 也 是 m1 與 m2 的 union。
7.4 各個資料庫「表格 List」簡介
「AREMOS 資 料 庫 系 統」 中 , 國 內 部 分 資 料 庫 我 們 大 都 建 有 一 些 現 成 的 lists 放 在 資 料 庫 中 可 供 使 用 。 這 些 lists 乃 依 該 資 料 庫 期 刊 上 表 格 來 建 的 。 每 一 個 list 含 期 刊 中 某 一 表 格 �� 所 有 資 料 之 檢 索 代 號 。
例 如 IND 資 料 庫 中 有 一 個 list 叫 TA4@IND , 含 「台 灣 地 區 工 業 生 產 統 計 月 報」 中 表 A4 (Table A4) �� 所 有 資 料 之 檢 索 代 號 ; TC1@IND 則 含 表 C1 (Table C1) 之 檢 索 代 號 。 這 些 表 格 Lists 都 放 在 IND bank �� , 只 要 下 了 open ind 指 令 後 , 便 可 使 用 。
每 個 資 料 庫 各 含 有 那 些 表 格 Lists , 列 舉 在 各 個 資 料 庫 檢 索 手 冊 之 附 錄 中 , 請 參 閱 。