1、TIPTOP教材----絕對經典 TIPTOP MRP SYSTEM INFORMIX-4GL INFORMIX-SQL l 目錄: n TIPTOP總體架構圖 n TIPTOP系統目錄架構 n 各模組TABLE關聯架構圖 n 幾個簡單的UNIX指令 n 幾個重點系統檔z?_file的說明 n INFORMIX-SQL基本語句 n 新增程式執行前的參數設定 n 系統程式cl_***及s_***及q_***.4gl功效 n 程式撰寫范例 4gl程式 :Informix 4gl主程式 per程式 :Informix 4gl屏幕窗口代碼程式 za程式 :Infor
2、mix 4gl報表表關程式 link程式 :infromix 4gl編譯連接文件 n 結束語 一:TIPTOP系統總體架構圖 TIPTOP是基於UNIX平台,以INFORMIX作數據庫后台,用第四代語言INFORMIX-4GL編寫的一套完整的MRP系統.下圖為TIPTOP整體架購圖. 二:系統目錄架構: l TIPTOP系統包含的模組 1. 料件基本資料管理系統 2. 產品結構(BOM)管理系統 3. 庫存管理系統 4. 採購管理系統 5. 生產管理系統 6. 成本會計系統 7. 應付結報系統 8. 應收帳款系統 9. 工時收集系統 10. 銷售管理系統 11
3、 MRP l 各事業單位的開發環境目錄: 1. fcp 竟爭事實群 2. fio 昆山廠 3. fbm2 富弘 4. fbm1 富准 5. fcn 中央 6. fit 資訊系統 7. ftm 熱傳事業處,I/O車件 8. fox 富金廠 fdt1 DT1事業單位 l 模組對應的系統目錄: 1. aim 製造管理系統-庫存管理 2.apm 製造管理系統-採購管理 3.asf 製造管理系統-生產管理
4、 4. axc 製造管理系統-成本會計 5. axm 銷售管理系統 6. axr 應收帳款系統 7. axp 應付帳款系統 8. abm 產品結構管理系統9. axd 工時收集管理系統 l 每個模組都包括以下一些子目錄: 1. 4gl 存入INFORMIX 4GL源程序 2. 4gi41 存放連接后的可執行文件 3. 4go41 存放編譯后的目標文件 4. per 存放用VI編輯的螢幕文件 5. frm 存放編譯后的螢幕文件 6. sql 存放本模組要用的TABLE的CREATE,INDEX語句 7. dc2
5、 存放說明性的文件 8. hlp 存放幫助文件 9. link 存放連接文件 10. za 存放報表表頭文件 l 公用程式目錄 1. sub 存放公用副程式s_*的組合程式 2. lib 存放公用主程式cl_*的組合程式 3. qry 存放公用查存程式q_*的組合程式 三: 各模組TABLE關聯架構圖 見附頁 四: 幾個簡單的UNIX的指令 掌握幾個簡單的常用的 UNIX 操作指令及VI編輯器 文件,目錄操作命令 VI文本編輯器pwd 顯示工作目錄 ESC 命令模式cd 切換目錄 i,a,I,A ,O,o 進入輸
6、入模式Ls 查看目錄 i,h,j,k 光標移動cat 顯示(合併)文件 dd,dw,D,x 行,單詞,字符刪除mkdir 新建目錄 :x 保存並退出rm 刪除文件 :q! 不存盤強制退出cp 拷貝文件 :wY 編輯文件寫回磁盤pr 顯示文件 U 撤銷一次改變passwd 更新用戶口令 . 重複動作rmdir 刪除目錄 Y 拉出行 mv 文件移動 P,p 粘貼行exit 結束登錄 五: 幾個重點系統檔z?_file的說明 1: za_file 報表標題檔 4gl程式調用za_file時抓取load-za后的.za文件 create table za_file( za01
7、 char(10), 程式代號 za02 smallint, 序號 za03 char(1), 語言別(0/1/2) 0:中文1:英文 za04 char(10), 備註 za05 char(40) ); 標題內容 create unique index za_01 on za_file (za01,za02,za03); 2: zx_file 部門user帳號使用者檔 4gl程式抓取下列欄位,ch
8、eck權限及是否為多工廠管理者 create table zx_file( zx01 char(10), {使用者代號,(Login user name) } zx02 char(10), {使用者名稱 } zx03 char(6), {部門代號 } zx04 char(10), {權限類別 } zx05 cha
9、r(10), {自定目錄編號 } zx06 char(1), {使用語言別(0.中文/1.英文) } zx07 char(1), {是否為多工廠使用者(Y/N) } zx08 char(10), {預設工廠編號 } zx09 char(10), {目前使用工廠編號 } zxuser char(10),
10、 {OWNER } zxgrup char(06), {GROUP } zxmodu char(10), {MODIFY USER } zxdate date ); {MODIFY DATE } create unique index zx_1 on zx_file (zx01); 3: zz_file 程式資料檔 crea
11、te table zz_file( zz01 char(10), {程式代號, (program code) } { Ex:pka0203 , pkb } zz02 char(36), {程式名稱 } zz02e char(36), {程式英文名稱 } zz03 char(1), {程式類別 }
12、 { M:目錄程式類(Menu) } { F:建檔程式類(Form) } { T:異動程式類(Transaction) } { P:處理程式類(Process ) { R:報表程式類(Report) } zz04 char(30), {基本提供執行功能 }
13、 {本程式所提供之基本執行功能 } {Ex:AQURCOB } {A:輸入,Q:QBE-查詢,U:更改,R:取消,C:複製, } {O:QBE-印表,B:單身處理 } zz05 char(1), {列印選擇條件否 } {本欄位僅對
14、報表有效, 若設為 'Y', 則於報表} {結束時列印QBE選擇條件 } zz06 char(1), {報表檔附加檔名(1).out(2)變動 } {變動為列印次數 } zz07 smallint, {延後列印次數 } {本欄位將於報表延後列印時賦予為系統執行檔}
15、 {附加檔名,並自動更新之. } zz08 char(40), {UNIX 系統執行指令 } { 例:fglgo $SYS/4gi/progcode } zz09 date, {設計日期 } zz10 char(4), {程式類別-1
16、 } zz11 char(4), {程式類別-2 } zz12 char(4), {程式類別-3 } zz13 char(1), {可否於建檔作業更改索引欄位資料(KEY) } {(Y/N), 本欄位僅對建檔作業有效. } zz14 char(1), {是否於建檔
17、作業查詢資料時顯示合乎條件筆數} {(Y/N), 本欄位僅對建檔作業有效. } zz15 char(1), {是否傳遞帳別(Y/N) (For agl system) } zz16 smallint, {目前報表列印次數 } {本欄位將於報表列印時賦予為報表檔附加檔名} {並自動更新之.
18、 } {Ex:若本欄位為43,則產生報表檔:sssrnnn.43r} zz17 smallint, {報表寬度 (79/132) } zz18 char(1), {基本使用者資料權限 } {設定使用者對非自己資料之(查詢/更改/取消)} {處理權限, 說明如下:
19、 } { 查詢 更改 取消 } {處理權限, 說明如下: } { 查詢 更改 取消 } { 0: Y Y Y } { 1: Y Y
20、 N } { 2: Y N Y } { 3: Y N N } { 4: N N N } zz21 char(40), {固定列印條件 } zz22 char(1), {固定列印方
21、式 } zz23 char(1), {ISOLATION Mode } {1.Dirty read 2.Committed read } zz24 char(1), {Default Wait seconds (0-9) } zz25 char(1), {Set explain on (Y/N)
22、 } zzuser char(10), {OWNER } zzgrup char(06), {GROUP } zzmodu char(10), {MODIFY USER } zzdate date {MODIFY DATE }); create unique index zz_01 on zz_f
23、ile (zz01); 4: zt_file 檔案名稱檔 create table zt_file( zt01 char(10), {檔案編號, (Table name) } { Ex:ima_file, zz_file } zt02 char(36), {檔案名稱 } zt02e char(
24、36), {檔案英文名稱 } zt03 char(3), {系統別 } zt04 char(4), {使用別 } zt05 date, {產生日期 } zt06 char(10), {產生者
25、 } zt07 char(01), {T/S建議 (Table/Synonym) } zt08 smallint, {No use } zt09 char(02), {檔案類別(P/M/T/S) } { P:參數檔 } { M
26、主檔 (M0:單頭 M1:單身) } { T:異動檔 (T0:單頭 T1:單身) } { S:統計檔 } zt10 char(01), {No use } zt11 char(01), {No use } zt12
27、 char(01), {No use } zt13 char(01) {No use }); create unique index zt_01 on zt_file (zt01); 5: zo_file 公司名稱資料檔 6: ze_file 資料變更記錄檔 7:
28、zw_file 權限建立檔 8: zy_file 權限設定檔 五: Informix-SQL的幾個基本語法 1. SELECT語句: 從一個表或是多個表中提取資料 語法:SELECT * FROM table_name WHERE xxxxxxxx and yyyyyyy WHERE為條件,以下相同 2. UPDATE語句: 更改表對應欄位的內容 語法:UPDATE table_name SET xxx01 = x WHERE xxxxxxxxx and yyyyyyyy 3. DELETE語句: 說明:從表中除資料 語法:DELETE FROM t
29、able_name WHERE xxxxxx and yyyyyyy 4. INSERT語句: 說明:新增資料到表 語法:INSERT INTO table_name(xxxxxxxx) VALUES(yyyyyyyy) 六: 新增程式執行前的參數設定 執行exe p_zz 出現下列畫面 對新增程式作A 輸入選擇, 輸入設定參數 對基本資料權限作如下說明: 查詢 修改 放棄 0 V V V 1 V V 2 V V 3 V 4 七: 共用程式cl_*和s_*及q_*程式功效 l cl_* 為共用程式 當4GL程式調用公用程式cl_*時必須在link
30、文件里加入其執行文件4go 所在目錄為u\tiptop\lib\4gl> 舉例: cl_err 為共用程式庫,用來顯示錯誤訊息 Input parameter: p_msg 錯誤訊息的附加說明 err_code 錯誤訊息代碼(可為文字或數字) p_n 顯示錯誤訊息後是否應按(CR)繼續或停留秒數 0:不必按(CR)繼續 1:按(CR)繼續 1 :停留秒數 cl_repcon 詢問特殊列印條件
31、 (1) 製表日期 (2) 報表收受單位或人員 (3) 選擇語言別 (4) 是否後庭執行本作業 及 執行時間 (5) 選擇列印方式 (6) 列印 份數 cl_cmdask 詢問使用者欲執行程式, 並執行之 cl_wait 顯示等待訊息 cl_used 計錄各程式實際被執行的狀況
32、 Input parameter: p_code - 程式代號 time1 - 起始執行時間 sw - 1:執行開始, RETURN TIME - 2:執行結束, INSERT (執行的狀況) TO zu_file cl_outnam(‘wk’) returning l_name 賦于一個報表檔代號 l_name 是返回值 cl_wcshow 顯示組合出的RDSQL指令於螢幕20,21,22,23行 cl_shwtit 顯示程式名稱(PROGRAM NA
33、ME)於螢幕第 n 行的中央 Input parameter: p_row 顯示程式名稱行數 p_len 螢墓寬度 p_prog 程式代號 cl_opmg 顯示操作方法於第一,二行 操作方法著重於FUNCTION鍵的使用 Input parameter: p_op_type 操作型態,a:新增,u:更改,q:查詢 b:單身處理,w:多欄查詢,
34、 p:列印條件選擇, cl_dsmark 顯示 "鼎新電腦製作" 於螢幕左上角 顯示 使用客戶名稱螢幕中央 顯示 Login使用者於螢幕右上角 cl_foxmark 顯示 "資訊科技處製作" 於螢幕左上角 顯示 使用客戶名稱螢幕中央 顯示 Login使用者於螢幕右上角 l s_* 為副程式 副程式因系統而異,但具有多個程式共通使用的程式, 4gl調用副程式s_*時必須在link文件中加入其4go執行文件 所在目錄為u\tiptop\sub\4g
35、l> 舉例: s_upimg 庫存中更新img檔的副程式 s_tlf 將異動資料放入異動記錄檔中(製造管理) s_sayc 將金額類數值轉換成中文字 l q_* 查詢副程式 4gl調用查詢程式q_*時必須在link文件中加入其4go執行文件 所在目錄為u\tiptop\qry\4gl> 舉例: q_ima 料件資料查詢 q_gef 銷售系統單據性質查詢 八: 程式撰寫 (以報表程式faxcr180為例加以講解) 1. Informix-4gl程式: 任何一個獨立的informix-4gl程式必須包含一個主程式main(),
36、程式執行都從main開始,在main程式中可以調用相應的其它4gl程式,比如公有程式,函數程式等,也可以直接調用function,調用公用程式或函數后,返回相應的信息或參數給主程式,最終以end main完成程式的執行. 程式編譯格式: fglpc faxmr180 生成相應的執行代碼faxmr180.4go存放在當前目錄下 r.c faxmr180 生成相應的執行代碼faxmr180.4go 會自動存放在4gl對應的4go41目錄下 2. za文件: 由於漢字在任何編程語言中都有不易識別的現象,Informix-4gl也不例外,也加上程式編寫員的編寫風格,大多不想把漢字放在
37、程式的語句里,同時可以大大減少程式編譯時對漢字識別的所延擱的時間,程式設計師便把這些漢字歸總在za文件裏,Informix-4gl訪問時調用相應的編譯好后的za文件,不僅僅增加了程式的執行速度,也大大增加了程式的可讀性 程式編譯格式: load-za faxmr180 編譯好后的za文件實際上是insert into za_file(*),Informix-4gl調用時根據相應的條件提取za_file中的記錄. 3. Link文件: 任何一個應用系統,都有某些功能的獨立需求,簽於Informix-4gl在功能上有許多固有的特性,程式設計師把這些功能做成一個個的小程式,編譯好后放在固定的
38、目錄裏,當informxi-4gl要用到這些功能時,程式便可直接調用這些小小的功能模塊,實現這些功能,大大地減少了程式的冗長,使程式的可讀性更好,也即省了應用系統的存貯空間,增快了的程式編寫的速度,當然也降低了軟件的成本. 格式: ln xxxxxx > yyyyyyyy 4. per文件: unix盡管現在也有其window-x的界面,但使用起來並不是很理想,許多程式設計師也以樂意接受命令操作符的形式來處理各種事務,shell也就是相當於ms-dos下的批處理,Informix-4gl在窗口界面的處理上有其自身的特點,它不支持圖形文件,因此看上去就感覺比較單調,但無論如何,Informix-4gl可以處理簡單的線條圖形,它以結構文件的形式面對用戶. 編譯格式為: 原文件為faxmr180.per form4gl faxcr180 生成窗口格式化文件faxcr180.frm放在當前目錄下 r.f faxcr180 生成窗口格式化文件faxcr180.frm放在對應per之frm目錄下 .frm文件可以在informix-4gl中以語句: OPEN WINDOW window_name AT 3,8 WITH FROM “.frm” 打開






