1 / 108

Business Development Language

Business Development Language. BDL. 講師 : Julius Chen. 第一章. BDL 程式架構. BDL 程式組成. Module1. FUNCTION1. FUNCTION2. FORM1. Module 主要 架構. DATABASE GLOBAL MAIN FUNCTION REPORT. 編譯時參考的 schema 資料庫. 程式所使用的外部變數. 主程式. 函式. 報表. FORM 主要組成.

royal
Download Presentation

Business Development Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Business Development Language BDL 講師: Julius Chen

  2. 第一章 BDL 程式架構

  3. BDL程式組成 Module1 FUNCTION1 FUNCTION2 FORM1

  4. Module主要架構 DATABASE GLOBAL MAIN FUNCTION REPORT 編譯時參考的schema資料庫 程式所使用的外部變數 主程式 函式 報表

  5. FORM 主要組成 [DATABASE] SCREEN [TABLES] ATTRIBUTES [ INSTRUCTIONS ] 編譯時參考的schema資料庫 透過 tag 定義畫面呈現 編譯時參考的schema TABLE 定義 tag 的對應定義 用以定義Screen Record及 Screen Array

  6. MAIN Function程式執行起始點 • 格式: MAIN statement END MAIN Ex: MAIN #這是第一隻程式 : DISPLAY “HELLO WORLD!!” : END MAIN 註解方式分為 # 及 {} 1. # 單行註解, 表示 # 之後到行尾都是註解 2. {} 區段註解 表示 {} 所包圍的範圍內為註解

  7. Compiling And Linking 程式部份 Module .4gl fgl2p .42m Form .per fglform  .42f 連結 fgllink –o xxx.42r xx1.42m xx2.42m  .42r 執行fglrun xxx

  8. 第二章 變數與運算式

  9. 變數型態 • SMALLINT: 包含整數值 • INTEGER : 包含整數值 • DECIMAL[m,n]: 包含小數的浮點數 • SMALLFLOAT : 包含為二進位的浮點數值 • MONEY[m,n] : 類似DECIMAL型態,在值之前自動加上$ • CHAR: 可儲存字母,數字及符號 • DATE: 儲存日期,格式“MM/DD/YYYY”

  10. 變數型態 • Array[I,j,k] of type : 最多為三維陣,最少為一維陣列,“[]”不可省略。 • Record :用來描述一群變數的集合。

  11. 變數定義方式 1. 直接指定型態 DEFINE employee_no CHAR(10) 2. 透過 LIKE 參考 TABLE 的定義 (a) 定義單一變數 DEFINE employee_no LIKE employee_file.no (b) 定義一個 record DEFINE employee.* RECORD LIKE employee_file.*

  12. BDL語法 -- AssignmentLET敘述 • 格式: LET變數=運算式 Ex: LET g_cmd = ‘apyi010’,’-’,’compute’  g_cmd =‘apyi010-compute’

  13. BDL語法 -- AssignmentINITIALIZE敘述 • 格式: INITIALIZE 變數串列 {LIKE 欄位串列|TO NULL} Ex: INITIALIZE g_ima.* LIKE ima_file.* INITIALIZE g_ima.* TO NULL

  14. 變數的定義位置及生命週期 1. Local 變數 : 定義位置 : 定義在Module中的函式裡 (MAIN, FUNCTION 等) 生命週期 : 只屬於該定義的函式使用 2. Module 變數 : 定義位置 : Module 中, 但不被任何的函式包圍 生命週期 : 為該 Module 中的共用變數 3. Global 變數 : 定義位置 :由 GLOBALS及 END GLOBALS 所包圍的變數 生命週期 : 為所 link 使用的 MODULE 的共用變數

  15. BDL語法 -- 運算式字串運算式

  16. 第三章 程式流程控制

  17. BDL語法IF敘述 • 格式:IF ….THEN statement [ELSE statement ] END IF EX: IF l_str=‘Y’ THEN DISPLAY “IT’s ok!!!” ELSE DISPLAY “IT’s not ok!!!” END IF

  18. BDL語法CASE敘述 Ex: MAIN CASE WHEN l_n=0 RETURN WHEN l_n=1 CALL i010_show() OTHERWISE ERROR “It’s error!!!” EXIT CASE END CASE END MAIN

  19. BDL語法WHILE敘述 • 格式:WHILE statement [CONTINUE WHILE] END WHILE EX: WHILE l_n <10 LET l_n=l_n+1 DISPLAY l_n END WHILE

  20. BDL語法FOR敘述 • 格式:FOR var=int_expr to int_expr statement [CONTINUE FOR] END IF EX: FOR l_n=1 to 10 LET l_I=l_I+l_n DISPLAY l_n END FOR

  21. BDL語法CONTINUE敘述 • 格式: CONTINUE {FOR/FOREACH MENU/WHILE} Ex: CONTINUE FOR CONTINUE MENU CONTINUE WHILE

  22. BDL語法EXIT敘述 • 格式: WHIEL TRUE #CASE / FOR / INPUT ….. # FOREACH / MENU EXIT WHILE #PROGRAM / WHILE END WHILE

  23. 第四章 SCREEN FORM Text Mode

  24. FORM 主要組成 [DATABASE] SCREEN [TABLES] ATTRIBUTES [ INSTRUCTIONS ] 編譯時參考的schema資料庫 透過 tag 定義畫面呈現 編譯時參考的schema TABLE 定義 tag 的對應定義 用以定義Screen Record及 Screen Array

  25. INSTRUCTIONS 定義螢幕陣列, 此 Section 並非必要的, 需要定義螢幕陣列時才定義之 Example : INSTRUCTIONS SCREEN RECORD s_employee(emp.no, emp_age) END

  26. ATTRIBUTES 常用列表 • AUTONEXT :若該欄位填滿後,自動跳下一欄位。 • NOENTRY :指定該欄位不允許輸入。 • REQUIRED :指定該欄位一定要輸入。 • REVERSE :顯示時反白。 • DOWNSHIFT :所有輸入字母均轉成小寫。 • UPSHIFT :所有輸入字母均轉成大寫。 • INVISIBLE :該field輸入時,不顯示值在螢幕上。 • COMMENTS :欄位的輔助說明。

  27. 第五章 FORM 與 WINDOWS

  28. BDL語法OPEN WINDOW敘述 EX: OPEN WINDOW i031_w AT 5,10 WITH FORM "apy/frm/apyi031" ATTRIBUTE(BORDER,CYAN)

  29. BDL語法CLEAR敘述 Ex: CLEAR WINDOW win_1 CLEAR FORM

  30. BDL語法畫面設定 選項意義預設值 MESSAGE LINE 訊息列2 or FIRST+1 PROMPT LINE 提示列FIRST COMMENT LINE 註解列LAST-1 ERROR LINE 錯誤列LAST FORM LINE 螢幕起始列3 or FIRST+2 INPUT WRAP 環繞建INPUT INSERT KEY 螢幕陣列插入鍵F1 DELETE KEY 螢幕陣列刪除鍵F2 NEXT KEY 換頁鍵(下一頁) F3 PREVIOUS KEY 換頁鍵(上一頁) F4 ACCEPT KEY 確認鍵Esc HELP KEY 求助鍵CTRL-W

  31. BDL語法DEFER敘述 • 格式:DEFER{INTERRUPT | QUIT} Ex: DEFER INTERRUPT

  32. 第六章 建立功能表

  33. BDL語法MENU敘述 • 格式: MENU  “功能表名稱” COMMAND “選項” “輔助訊息” COMMAND KEY(按鍵) [CONTINUE MENU] [EXIT MENU] [NEXT OPTION “選項”] END MENU

  34. 第七章 INPUT 與 DISPLAY

  35. BDL語法DATABASE敘述 • 格式: DATABASE database-name Ex: DATABASE ds MAIN ……. ……. END MAIN

  36. BDL語法INPUT敘述 格式:INPUT Module變數 FROM Form欄位 OR INPUT BY NAME Module變數 EX: INPUT g_ima01 FROM FORMONLY.ima01 INPUT BY NAME g_ima.*

  37. INPUT 架構 INPUT variable_list FROM field_list [BEFORE FIELD field_list] [AFTER FIELD field_list] [ON KEY (key_list)] [NEXT FIELD field name] [EXIT INPUT] END INPUT

  38. BDL語法DISPLAY敘述 EX: DISPLAY “Hello World” AT 3,2 DISPLAY BY NAME a.* DISPLAY a[l_n].* TO s_form[l_n].*

  39. 第八章 CURSOR 的應用

  40. BDL語法CURSOR種類 一 Non-Scrolling CURSOR 二 Scrolling CURSOR 三 Locking CURSOR EX: DECLARE cursor_name FOR sql statement EX:1. DECLARE cursor_name SCROLL CURSOR FOR sql statement 2. DECLARE cursor_name SCROLL CURSOR WITH HOLD FOR sql statement EX: DECLARE cursor_name FOR sql statement FOR UPDATE

  41. BDL語法CURSOR的使用 一 Non Scrolling Cursor count cursor 1. 透過 DECLARE 定義 2. 利用 OPEN 開啟該CURSOR EX : OPEN test01_cursor 3. 透過 FETCH cursor_name INTO 變數 抓取資料 將多筆的資料存入陣列 如單身及報表 1. 透過 DECLARE 定義 2. 利用 FOREACH 抓資料 EX : FOREACH cursor_name INTO g_gem[l_n].*

  42. BDL語法CURSOR的使用 二 Scrolling 常用於 查詢(TIPTOP的單檔) 1. 透過 DECLARE 定義 2. 利用 OPEN 開啟該CURSOR EX : OPEN test01_cursor 3. 透過 FETCH cursor_name INTO 變數   抓取資料

  43. BDL語法CURSOR的使用 三 Locking CURSOR 用於 修改 資料 1. 透過 DECLARE 定義 2. 利用 OPEN 開啟該CURSOR EX : OPEN test01_cursor 3. 透過 FETCH cursor_name INTO 變數   抓取資料

  44. BDL語法CONSTRUCT敘述 格式 : 1. CONSTRUCT Module變數 ON TABLE Column List FROM Form欄位 2. CONSTRUCT BY NAME Module變數 ON TABLE Column List

  45. BDL語法DECLARE敘述 格式:DECLARE cursor_name [SCROLL CURSOR] [WITH HOLD] FOR {SQL Statement} Ex: DECLARE test_01 CURSOR FOR SELECT * FROM azb_file WHERE azb01=‘JOHN’

  46. BDL語法PREPARE敘述 格式: PREPARE statement FROM string_spec EX: Let l_sql = “SELECT * FROM a_file”, “ WHERE a01=‘”,wiky,”’” PREPARE pre_sql FROM l_sql

  47. SCROLL CURSOR 抓取資料 FETCH FIRST FETCH PREVIOUS FETCH NEXT FETCH LAST FETCH ABSOLUTE 移到資料的第一筆 移到資料的上一筆 移到資料的下一筆 移到資料的最後一筆 移到資料的指定筆數

  48. BDL語法FOREACH敘述 • 格式: FOREACH cursor_name INTO variable statement ………. [CONTINUE FOREACH] ………. [EXIT FOREACH] END FOREACH 附註 : FOREACH 只能用於 non_scrolling cursor

  49. 第九章 Debugger 的使用

  50. BDL 的除錯 • 以除錯模式執行程式 • 除錯模式的線上說明 • 除錯模式的常用指令

More Related