GENEROBDL231語法(3)_第1頁
GENEROBDL231語法(3)_第2頁
GENEROBDL231語法(3)_第3頁
GENEROBDL231語法(3)_第4頁
GENEROBDL231語法(3)_第5頁
已閱讀5頁,還剩60頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、GENERO BDL 2.31 (三)鼎捷軟件 TOP GP 華東事業部學習對象及目標必修:必修:系統工程師、服務人員、研發人員、系統工程師、服務人員、研發人員、MIS人員人員學習對象學習對象學習目標學習目標1. 了解了解ARRAY應用;應用;2. 掌握掌握REPORT的撰寫;的撰寫;3. 清楚清楚DEBUGGER的用法。的用法。課程大綱1ARRAY應用應用2REPORT3DEBUGGERARRAY 應用1ARRAY應用應用2REPORT3DEBUGGERARRAY固定數組(固定數組(Static Array)定義)定義ARRAY intconst ,intconst ,intconst OF

2、 datatype動態數組(動態數組(Dynamic Array)定義)定義DYNAMIC ARRAY WITH DIMENSION rank OF datatypeARRAY MAIN DEFINE g_desc ARRAY3 OF CHAR(14) DEFINE g_x ARRAY10 OF RECORD a CHAR(10), b CHAR(10), c CHAR(10) END RECORD END MAINEX:固定數組(固定數組(Static Array)ARRAYEX:動態數組(動態數組(Dynamic Array) DEFINE g_i DYNAMIC ARRAY OF INT

3、EGER DEFINE a DYNAMIC ARRAY WITH DIMENSION 2 OF INTEGEROR DEFINE g_x DYNAMIC ARRAY OF RECORD a CHAR(10), b CHAR(10), c CHAR(10) END RECORD一維數組一維數組 DEFINE b DYNAMIC ARRAY WITH DIMENSION 3 OF INTEGER二維數組二維數組三維數組三維數組OBJECT METHODS對象名稱對象名稱說說 明明getLength( )RETURNING INTEGER回傳一維數組的長度回傳一維數組的長度clear()將動態數組(

4、將動態數組(Dynamic Array)中,所有記錄移除。)中,所有記錄移除。將固定數組(將固定數組(Static Array)中,所有紀錄值清為)中,所有紀錄值清為NULL。appendElement()在動態數組(在動態數組(Dynamic Array)后面加上一筆新的記錄。這)后面加上一筆新的記錄。這個對象在固定數組(個對象在固定數組(Static Array)中無效。)中無效。insertElement( INTEGER )在指定位置新增記錄,并將指定位置后之資料往下移。在指定位置新增記錄,并將指定位置后之資料往下移。動態數組(動態數組(Dynamic Array)的筆數加)的筆數加1

5、。OBJECT METHODS - getlength()對象名稱對象名稱說說 明明getLength( )RETURNING INTEGER回傳一維數組的長度回傳一維數組的長度clear()將動態數組(將動態數組(Dynamic Array)中,所有記錄移除。)中,所有記錄移除。將固定數組(將固定數組(Static Array)中,所有紀錄值清為)中,所有紀錄值清為NULL。appendElement()在動態數組(在動態數組(Dynamic Array)后面加上一筆新的記錄。這)后面加上一筆新的記錄。這個對象在固定數組(個對象在固定數組(Static Array)中無效。)中無效。inse

6、rtElement( INTEGER )在指定位置新增記錄,并將指定位置后之資料往下移。在指定位置新增記錄,并將指定位置后之資料往下移。動態數組(動態數組(Dynamic Array)的筆數加)的筆數加1。OBJECT METHODS - getlength() MAIN DEFINE a DYNAMIC ARRAY OF INTEGER LET a5000 = 12456 DISPLAY a.getLength() END MAIN SHOW:5000舉例舉例OBJECT METHODS - clear()對象名稱對象名稱說說 明明getLength( )RETURNING INTEGER回

7、傳一維數組的長度回傳一維數組的長度clear()將動態數組(將動態數組(Dynamic Array)中,所有記錄移除。)中,所有記錄移除。將固定數組(將固定數組(Static Array)中,所有紀錄值清為)中,所有紀錄值清為NULL。appendElement()在動態數組(在動態數組(Dynamic Array)后面加上一筆新的記錄。這)后面加上一筆新的記錄。這個對象在固定數組(個對象在固定數組(Static Array)中無效。)中無效。insertElement( INTEGER )在指定位置新增記錄,并將指定位置后之資料往下移。在指定位置新增記錄,并將指定位置后之資料往下移。動態數組

8、(動態數組(Dynamic Array)的筆數加)的筆數加1。OBJECT METHODS - clear() MAIN DEFINE a DYNAMIC ARRAY OF INTEGER LET a10 = 11 DISPLAY Before Clear :,a.getLength() CALL a.clear() DISPLAY After Clear :,a.getLength() END MAIN SHOW: Before Clear : 10 After Clear : 0舉例舉例OBJECT METHODS - appendElement()對象名稱對象名稱說說 明明getLeng

9、th( )RETURNING INTEGER回傳一維數組的長度回傳一維數組的長度clear()將動態數組(將動態數組(Dynamic Array)中,所有記錄移除。)中,所有記錄移除。將固定數組(將固定數組(Static Array)中,所有紀錄值清為)中,所有紀錄值清為NULL。appendElement()在動態數組(在動態數組(Dynamic Array)后面加上一筆新的記錄。這)后面加上一筆新的記錄。這個對象在固定數組(個對象在固定數組(Static Array)中無效。)中無效。insertElement( INTEGER )在指定位置新增記錄,并將指定位置后之資料往下移。在指定位置

10、新增記錄,并將指定位置后之資料往下移。動態數組(動態數組(Dynamic Array)的筆數加)的筆數加1。OBJECT METHODS - appendElement() MAIN DEFINE a DYNAMIC ARRAY OF INTEGER LET a10 = 10 CALL a.appendElement() LET aa.getLength() = a.getLength() DISPLAY a.getLength() DISPLAY a10 DISPLAY a11 END MAIN SHOW: 11 10 11舉例舉例OBJECT METHODS- insertElement(

11、)對象名稱對象名稱說說 明明getLength( )RETURNING INTEGER回傳一維數組的長度回傳一維數組的長度clear()將動態數組(將動態數組(Dynamic Array)中,所有記錄移除。)中,所有記錄移除。將固定數組(將固定數組(Static Array)中,所有紀錄值清為)中,所有紀錄值清為NULL。appendElement()在動態數組(在動態數組(Dynamic Array)后面加上一筆新的記錄。這)后面加上一筆新的記錄。這個對象在固定數組(個對象在固定數組(Static Array)中無效。)中無效。insertElement( INTEGER )在指定位置新增記

12、錄,并將指定位置后之資料往下移。在指定位置新增記錄,并將指定位置后之資料往下移。動態數組(動態數組(Dynamic Array)的筆數加)的筆數加1。OBJECT METHODS- insertElement() MAIN DEFINE a DYNAMIC ARRAY OF INTEGER LET a10 = 11 CALL a.insertElement(10) LET a10 = 10 DISPLAY a.getLength() DISPLAY a10 DISPLAY a11 END MAIN SHOW: 11 10 11舉例舉例DISPLAY ARRAY舉例舉例舉例舉例 DISPLAY

13、ARRAY arr TO srec.* DISPLAY ARRAY record-array TO screen-array.* HELP help-number ATTRIBUTE ( ,. )DISPLAY ARRAYEXIT DISPLAYCONTINUE DISPLAYACCEPT DISPLAYDISPLAY ARRAY架構架構:BEFORE DISPLAYAFTER DISPLAYBEFORE ROWAFTER ROWON IDLE idle-secondsON ACTION action-nameON FILL BUFFEREND DISPLAYINPUT ARRAY語法語法舉例

14、舉例 INPUT ARRAY custarr WITHOUT DEFAULTS FROM sr_cust.*INPUT ARRAY array WITHOUT DEFAULTS FROM screen-array.* HELP help-number ATTRIBUTE ( ,. )BEFORE INPUTAFTER INPUTBEFORE ROWAFTER ROWBEFORE FIELD field-listAFTER FIELD field-listON CHANGE field-listON ROW CHANGEON IDLE idle-secondsON ACTION action-n

15、ameBEFORE INSERT AFTER INSERTBEFORE DELETEAFTER DELETEEND INPUT INPUT ARRAYACCEPT INPUTCONTINUE INPUTEXIT INPUTNEXT FIELDCURRENT | NEXT |PREVIOUS | field-nameCANCEL INSERTCANCEL INSERTCANCEL DELETE架構架構ATTRIBUTES 控制屬性屬性名稱屬性名稱說明說明APPEND ROW =bool 定義用戶可否在最后一行新增資料定義用戶可否在最后一行新增資料COUNT = row-count 定義當前數組的

16、總行數定義當前數組的總行數DELETE ROW =bool 定義用戶可否刪除資料定義用戶可否刪除資料INSERT ROW =bool 定義用戶可否新增資料定義用戶可否新增資料MAXCOUNT = row-count 定義數組最大資料行數定義數組最大資料行數UNBUFFERED =bool 定義數組即時顯示資料定義數組即時顯示資料WITHOUT DEFAULTS =bool 保留原先資料,不清為保留原先資料,不清為NULLCANCEL = bool 定義定義”CANCLE”功能可否使用功能可否使用ACCEPT = bool 定義定義”ACCEPT”功能可否使用功能可否使用控制段運行順序用戶動作用

17、戶動作控制段運行順序控制段運行順序進入數組進入數組BEFORE INPUTBEFORE ROWBEFORE FIELD移動至其它行移動至其它行AFTER FIELD (for field A in the current row)AFTER INSERT (if a new row was inserted or new row was appended)ON ROW CHANGE (if values have changed in current row)AFTER ROW (for the current)BEFORE ROW (the new row)BEFORE FIELD (for

18、 field B in the new row)移動至同行中的移動至同行中的不同字段不同字段ON CHANGE (for field A, if value has changed)AFTER FIELD (for field A)BEFORE FIELD (for field B)控制段運行順序用戶動作用戶動作控制段運行順序控制段運行順序刪除一刪除一行行BEFORE DELETE (the row to be deleted)AFTER DELETE (the deleted row)AFTER ROW (the deleted row)BEFORE ROW (the new current

19、 row)BEFORE FIELD新增一行新增一行(插在兩行中)(插在兩行中)AFTER FIELDAFTER INSERT (if a new row was created)ON ROW CHANGE (if values have changed)AFTER ROW (the previous row)BEFORE INSERTBEFORE FIELD新增一行新增一行(進入最后一行)(進入最后一行)AFTER FIELDAFTER INSERT (if a new row was created)ON ROW CHANGE (if values have changed)AFTER RO

20、W (the previous row)BEFORE ROW (the new current row)BEFORE INSERTBEFORE FIELD控制段運行順序用戶動作用戶動作控制段運行順序控制段運行順序按下確定按下確定ON CHANGEAFTER FIELDAFTER INSERT (if a new row was created)ON ROW CHANGE (if values have changed)AFTER ROWAFTER INPUT按下取消按下取消AFTER ROWAFTER INPUTREPORT1ARRAY應用應用2REPORT3DEBUGGERREPORT 的三

21、個主要指令 START REPORT report_name TO SCREEN | FILE filename | PRINTER OUTPUT TO REPORT report_name(variable_list) FINISH REPORT report_nameReport 的三個的三個主要主要指令指令REPORT 的三個主要指令MAIN DEFINE p_employee RECORD LIKE employee.* DECLARE emp1_curs CURSOR FOR SELECT * FROM emplyee START REPORT employee_report FOR

22、EACH emp1_curs INTO p_emplyee.* OUTPUT TO REPORT employee_report(p_employee.*) END FOREACH FINISH REPORT employee_reportEND MAINREPORT employee_report(r_employee) DEFINE r_employee RECORD LIKE employee.* FORMAT ON EVERY ROWEND REPORT范例范例REPORT FUNCTION 的組成REPORT report_name(expr_list) DEFINE define_

23、statement OUTPUT output_statement ORDER BY sort_list FORMAT control_block statement : :END REPORTOUTPUT SECTIONOUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 5 PAGE LENGTH 6661566報表結果報表結果ORDER SECTION語法語法ORDER EXTERNAL BY variable-list說明說明ORDER BY 區間,區間,主要是作排序字段用主要是作排序字段用,以逗號分開,以逗號分開。ORDER EXTERNAL

24、 BY表表示示錄入資料錄入資料排序后不存在暫存檔排序后不存在暫存檔中。中。ORDER BY 會先將資料會先將資料排序過并存在暫存檔排序過并存在暫存檔中中,配合,配合BEFORE GROUP OF 或或 AFTER GROUP OF區段排序后再由暫存檔印出區段排序后再由暫存檔印出。最前面的字段為主最前面的字段為主KEY,同時只能用,同時只能用所接收參數內的字段所接收參數內的字段來排序。來排序。ORDER SECTIONREPORT i252_rep(sr) DEFINE sr RECORD pmw01 LIKE pmw_file.pmw01, pmw03 LIKE pmw_file.pmw03,

25、 . pmx02 LIKE pmx_file.pmx02, pmx08 LIKE pmx_file.pmx08, . END RECORD OUTPUT. ORDER BY sr.pmw01,sr.pmx02 . BEFORE GROUP OF sr.pmw01 . AFTER GROUP OF sr.pmw01 .END REPORT 范例范例ORDER SECTION料號料號數量數量A0110A02100C1050A0120A0150A02200料號料號數量數量A01 10A0120A0150A02100A02 200C10 50Order by 料號料號FORMAT SECTION FI

26、RST PAGE HEADER PAGE HEADER BEFORE GROUP OF ON EVERY ROW AFTER GROUP OF ON LAST ROW PAGE TRAILER主要主要CONTROL BLOCKSBEFORE GROUT OF 料號原程序代碼原程序代碼ON EVERY ROW PRINT 料號料號, 規格規格, 數量數量, 金額金額BEFORE GROUT OF 料號料號料號規格規格數量數量金額金額A01HDD 2.51030,000A01HDD 2.52060,000A01HDD 2.550150,000A02HDD 3.5100200,000A02HDD 3

27、.5200400,000C10Mouse5025,000BEFORE GROUP OF 料號BEFORE GROUP OF 料號料號PRINT 料號料號, 規格規格 ;ON EVERY ROWPRINT 數量數量, 金額金額BEFORE GROUP OF 料號料號料號規格規格數量數量金額金額A01HDD 2.51030,0002060,00050150,000A02HDD 3.5100200,000200400,000C10Mouse5025,000AFTER GROUP OF 料號料號料號規格規格數量數量金額金額A01HDD 2.51030,0002060,00050150,000A02HD

28、D 3.5100200,000200400,000C10Mouse5025,000AFTER GROUP OF 料號BEFORE GROUP OF 料號料號 PRINT 料號料號, 規格規格;ON EVERY ROW PRINT 數量數量, 金額金額AFTER GROUP OF 料號料號 PRINT “小計小計”, GROUP SUM(數量數量), GROUP SUM(金額金額)AFTER GROUP OF 料號料號料號規格規格數量數量金額金額A01HDD 2.51030,0002060,00050150,000小計小計80240,000A02HDD 3.5100200,000200400,0

29、00其它報表指令表達式表達式舉例舉例PRINT ”員工編號:員工編號:”, ,employee_no結果印出結果印出 員工編號員工編號 : : 2000 PRINT說明說明: :制作報表時印出資料的指令。制作報表時印出資料的指令。其它報表指令表達式表達式舉例舉例 SKIP 2 LINES 跳兩行跳兩行 SKIP TO TOP OF PAGE 跳頁跳頁 SKIP說明說明: :制作報表時跳行或跳頁的敘述。制作報表時跳行或跳頁的敘述。其它報表指令表達式表達式舉例舉例 LET a=“鼎鼎 ” LET b=“捷捷 ” PRINT a CLIPPED,b CLIPPED 結果印出結果印出 鼎捷鼎捷 CLI

30、PPED說明說明: :將字符串后面的空白將字符串后面的空白去掉。去掉。其它報表指令表達式表達式說明說明 COLUMN指定輸出的指定輸出的列列位置位置 PAGENO取得當前打印頁的頁號值取得當前打印頁的頁號值 SPACES傳回一串空白傳回一串空白其它報表指令舉例舉例 LET money = 1000 PRINT 這是第這是第,PAGENO, 頁頁 PRINT COLUMN 10, money USING #&.& PRINT 9 SPACES, money USING # 結果印出結果印出這是第這是第 X 頁頁 -1000.00 -1000USING (設置格式)符號符號說說 明

31、明#不會對輸出的字符作任何影響不會對輸出的字符作任何影響, 通常用于限制字符串輸出時的最大長度通常用于限制字符串輸出時的最大長度將數字改為向左靠將數字改為向左靠&以以 0 置換空格符置換空格符,在指定位置以逗號顯示在指定位置以逗號顯示-當輸出的數字小于零,會在其前面以負號顯示當輸出的數字小于零,會在其前面以負號顯示+當輸出的數字大于零,會在其前面以正號顯示當輸出的數字大于零,會在其前面以正號顯示當輸出的數字小于零,會在其前面以負號顯示當輸出的數字小于零,會在其前面以負號顯示$在指定位置以錢字號顯示在指定位置以錢字號顯示USING 示范12,34512345012,345.00$12,3

32、45+12345-12,345-12,345值值 = 12345USING #,#USING USING &#,#.&USING $#,#USING +值值 = -12345USING -,-USING +,+內建函數函函 數數說說 明明GROUP PERCENT(*)GROUP區塊中,資料的百分比區塊中,資料的百分比GROUP COUNT(*)GROUP區塊中,資料的總數區塊中,資料的總數GROUP AVG(expr)GROUP區塊中,取得數值的平均值區塊中,取得數值的平均值GROUP MAX(expr)GROUP區塊中,取得數值的最大值區塊中,取得數值的最大值GROUP M

33、IN(expr)GROUP區塊中,取得數值的最小值區塊中,取得數值的最小值GROUP SUM(expr)GROUP區塊中,數值的加總區塊中,數值的加總DEBUGGER1ARRAY應用應用2REPORT3DEBUGGERDEBUGGER語法語法舉例舉例 $FGLRUN d test $FGLRUN d 程序名稱程序名稱.42rDEBUGGER 指令指令指令說明說明示范示范縮寫縮寫Break設置斷點設置斷點break test01_abRun運行程序運行程序runruStep逐步運行程序逐步運行程序step 10sContinue運行到下一個斷點運行到下一個斷點continuecoList列出程序

34、代碼列出程序代碼linelistlPrint顯示變量值顯示變量值print g_sqlpQuit結束結束Debugger環境環境quitqDelete刪除斷點刪除斷點delete 1dHelp查看指令內容查看指令內容help listhDEBUGGER 舉例Debugger范例范例DEBUGGER 舉例-help舉例舉例 (fgldb) help #查看所有指令查看所有指令 或或 (fgldb) help list (指令名稱指令名稱) #查看查看具體具體指令指令help 縮寫:縮寫:h (fgldb) help list List specified function or line DEB

35、UGGER 舉例-helpbreak - Set breakpoint at specified line or function tbreak - Set a temporary breakpoint backtrace - Print backtrace of all stack frames bt - Print backtrace of all stack frames continue - Continue program being debugged call - Call a function in the program clear - Clear breakpoint at

36、specified line or function. delete - Delete some breakpoints or auto-display expressions define - Define a new command name. display - Print value of expression EXP each time the program stops disable - Disable some breakpoints down - Select and print FUNCTION called by this one enable - Enable some

37、 breakpoints echo - Print a constant string file - Use FILE as program to be debugged finish - Execute until selected stack frame returns frame - Select and print a stack framehelp - Print list of commands. info - Generic command for showing things about the program being debugged. ignore - Set igno

38、re-count of breakpoint number N to COUNT. list - List specified function or line next - Step program, proceeding through subroutine calls. (fgldb) help DEBUGGER 舉例-run舉例舉例 (fgldb) run #運行程序運行程序 run 縮寫:縮寫:r(fgldb) run Breakpoint 1, main() at apm_apmi252.4gl:139 139 IF (NOT cl_user() THEN (fgldb) cont

39、inue Continuing. DEBUGGER 舉例-quit舉例舉例 (fgldb) quit #離開程序離開程序 quit 縮寫:縮寫:q$FGLRUN -d apmi252.42r (fgldb) quit DEBUGGER 舉例-break舉例舉例 (fgldb) break 10 # #設中斷行數設中斷行數 (fgldb) break function_name break 縮寫:縮寫:b(fgldb) break 139Breakpoint 1 at 0 x00000000: file apm_apmi252.4gl, line 139 (fgldb) break i252_b Breakpoint 2 at 0 x00000000: file apm_apmi252.4gl, line 1479DEBUGGER 舉例-print舉例舉例 (fgldb) print l_str #顯示顯示變變量值量值 (fgldb) print status (fgl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論