GENERO語法知識總結(jié)_第1頁
GENERO語法知識總結(jié)_第2頁
GENERO語法知識總結(jié)_第3頁
GENERO語法知識總結(jié)_第4頁
GENERO語法知識總結(jié)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、GENERO語法知識總結(jié)一. 文件組成結(jié)構(gòu)原始程序編譯後的程序可執(zhí)行程MODULE 程序文件 *.4gl*.42m*.42rFORM文件 *.per*.42f其他各式二. 命名規(guī)則組成部份詳細(xì)內(nèi)容程序命名規(guī)則S_XXXXXXXX : 一般子程序 存于 $top/subCL_XXXXXXXX : 共享子程序 存于 $top/libQ_XXXXXXXX : 查詣子程序 存于 $top/qry函數(shù)命名規(guī)則XXXX_yy : 程序代碼簡稱_函數(shù)功能名如: i010_a 為i010作業(yè)的新增函數(shù)數(shù) i010_tmp 函數(shù)名字變量命名規(guī)則G_xxxxxx : 全局變量L_xxxxxx : 區(qū)域性變量P_x

2、xxxxx : 傳遞變量S_xxxxxx : 屏幕變量文件命名規(guī)則文件名稱(TABLE NAME) : xxx_file 數(shù)據(jù)庫字段名稱(FIELD NAME) : xxx99 99代表流水號上面兩項內(nèi)容 需于 p_zta中注冊後, 方可使用存于UNIX的外部名稱(SCH FILE) : c_xxx.sch三. Program的組成 : MODULE + FORM1. MODULE組成部份詳細(xì)內(nèi)容DatabaseDatabase dbname # 編譯時參考的schema數(shù)據(jù)庫, 炅是實際數(shù)據(jù)庫GLOBALSGlobals “./config/top.global” #全部程序共用的全局變量D

3、dfine var_Nmae DATATYPE #定義變量Constant cons_anme datatype #定義常量MAINMAIN.END MAINFUNCTIONFUNCTION funName().END FUNCTIONREPORTREPORT Rep_Name(sr) FORMATPAGE HEADER BEFORE GROUP ON EVERY ROW AFTER GROUP.END REPORT2. FormSCKEMASchema ds #表示設(shè)計畫面時所參考的數(shù)據(jù)庫, 默認(rèn)為FORMONLY表示與數(shù)據(jù)庫無關(guān):為了與舊版本兼容 SCHEMA可以用DATABASE指令代替

4、.Actiondefault不使用, 用其他方式設(shè)定(參考TIPTOP GP技術(shù)手冊)必須緊接在SCHEMA下面做Action Defaults Action add(text=”Append”,accelerator=control-v) Action del(text=”delete”,accelerator=shift-F2) Action zoom(text=”Zoom”,comment=”O(jiān)pen zoom window”) Action quit(text=quit”,accelerator=Shift-F5,image=”quit”END第二種處理方式:在程序 act.4gl中去

5、呼叫CALL ui_interface.loadActionDefaults(“act”) 傳得參數(shù)是act.4ad檔名, 附檔名可不寫,則產(chǎn)生的結(jié)果也可能在per檔編輯(ACTION DEFAULTS的結(jié)果一樣編寫下面的xml文檔 “ACT.4ad” MAIN #呼叫並載入默認(rèn) ACTION 項 CALL erface.loadActionDefaults(“act”) MENU “” ON ACTION add CALL act_a() ON ACTION del ON ACTION zoom . ON ACTION quit . Exit programEND MENUTOP

6、MENU不使用, 用其他設(shè)定(參考TIPTOP GP技術(shù)手冊)TOPMENU MenuName GROUP form(TEXT=”Form”) COMMAND help(TEXT=”Form”,IMAGE=”quest”) COMMAND quit(TEXT=”quit”) END GROUP Edit(TEXT=”Exit”) COMMAND accecpt(Text=”validate” image=”ok”,tag=”accrpMenu”) COMMAND Cancel(tEXT=”Cancel”, image=”cancel”) SEPATATOR COMMAND editCut .

7、ENDEND -TOPMENULAYOUTLAYOIUT #不能與SCREEN同時出現(xiàn) VBOX GROUP #顯示組合框 FOLDER#FOLDER下面只能用PAGE, PAGE下面可以有FORDER-PAGE PAGE PageName(text=”main”) GRID Employee no azb1 Name gen02 Deartment no gen03gen02 END -GRID END -PAGE PAGE PageName(text=”main”) GRID Employee no azb1 Name gen02 Deartment no gen03gen02 END -

8、GRID END -PAGE END -FOLDER END GROUP END VBOXEND LAYOUTTable屏幕畫面顯示的字段所對應(yīng)的表格名稱ATTRIBUTES定義屏幕畫面上字段的名稱及顯示特性, 所有的SCREEN與LAYOUT里要定義的字段Tag在這裡都要做進一步的定義ATTRIBUTES ENDINSTRUCTIONS定義屏幕記錄語法: SCREEN RECORD record-name (field-list)例子:SCREEN RECORD s_aaa(aaa.*)屏幕記錄是個完整的表格 SCREEN RECOED s_employee(emp_po,emp_age)定

9、義屏幕數(shù)組語法:SCREEN RECORD array_namesize field-list例子:SCREEN RECORD s_aaa3 (foo1,foo02,foo03)INSTRUCTIONS SCREEN RECORD s_employee(emp_no,emp_age)END四. 基礎(chǔ)語法 1. 變量及表達式變量的類型及定義DATABASE ds GLOBALS DEFINE g_employee CHAR(10) #全局變量 END GLOBALS DEFINE g_tty CHAR(32) #模塊變量 MAIN DEFINE answer CHAR(1) #局部變量,直接定義

10、 DEFINE p_employee_no LIKE employee_file.employee_no #對應(yīng)數(shù)據(jù)庫字段定義 END MAIN FUNCTION ins_employee() DEFINE flag CHAR(1), change SMALLINT END FUNCTION數(shù)據(jù)類型型態(tài)名稱 說明 默認(rèn)值 CHAR 固定字符 Null VARCHAR 動態(tài)字符 Null STRING 動態(tài)定義大小的字符串儲存空間 Null DATE 日期 1899-12-31 DATETIME 日期時間 Null INTEGER 4 BYTE 整數(shù) Zero SMALLINT 2 BYTE 整

11、數(shù) Zero FLOAT 8 BYTE 單精度浮點數(shù) ZeroSMALLFLOAT 4 BYTE 雙精度浮點數(shù) Zero DEC(p,s) 高精度數(shù)值-precision 為所有數(shù)字個數(shù)(不含小數(shù) 點),scale 為小數(shù)點的位數(shù),不可大于precision 的位數(shù) Null MONEY 同DECIMAL,但會在數(shù)值前面加上貨幣符號 Null BYTE 大量二進制數(shù)據(jù)(圖片) Null TEXT 大量字符數(shù)據(jù) Null變量的集合(RECORDS)MAIN DEFINE rec RECORD id INTEGER, name VARCHAR(100), birth DATE END RECORD

12、 #集合的定義LET rec.id = 50 #集合變量元素的賦值 LET = Scott LET rec.birth = TODAY DISPLAY rec.* END MAIN初始化一組變量 INITIALIZEDATABASE ds MAIN DEFINE cr RECORD LIKE customer.* INITIALIZE cr.cust_name TO NULL INITIALIZE cr.* LIKE customer.* END MAIN表達式字符串表達式 達式 意義 , 字符串連結(jié) | 字符串連結(jié),但連結(jié)值有一個是NULL,結(jié)果就會是 NULLstart,

13、end 從字符串中取出子字符串(開始到結(jié)束) USING 針對數(shù)值或日期設(shè)定其打印的格式 CLIPPED 消除尾部空白 SPACES 輸出空白字符串USING數(shù)值* 空白的地方以*置換 空白的地方以0 置換 不會對輸出的數(shù)字作任何影響,通常用于限制字符串輸出時的最大長度 將數(shù)字改為向左靠 , 指定逗號出現(xiàn)的位置 指定小數(shù)點出現(xiàn)的位置 當(dāng)輸出的數(shù)字小于零時,加上一個負(fù)號 當(dāng)輸出的數(shù)字大于零,加上一個正號 當(dāng)輸出的數(shù)字小于零,加上一個負(fù)號 數(shù)值出現(xiàn)一個錢字號 ( 當(dāng)輸出的數(shù)字小于零時,加上一個左括號 ) 當(dāng)輸出的數(shù)字小于零時,加上一個右括號USING日期dd 以二位數(shù)字表示日期 ddd 以三位英文

14、簡寫表示星 MON,TUE mm 以二位數(shù)字表示月份 01,0212 mmm 以三位英文簡寫表示月 JUN,F(xiàn)EBDEC yy 以二位數(shù)字表示年度 95 yyyy 以四位數(shù)字表示年度 1995 using yyyy2. 程序流程控制CALLCALL function ( parameter ,. ) # 呼叫執(zhí)行函式 RETURNING variable ,. #返回指定變量的值 動態(tài)查詢的回傳值如果有多組則: let g_qryparam.default1= g_azb.azb01 let g_qryparam.default2= g_azb.azb02 let g_qryparam.def

15、ault1= g_azb.azb03 returning g_azb.azb01 returning g_qryparam.multiret let g_qryparam.multiret_index = 1RETURNRETURN value,. 在FUNCTION中使用, 用于返回一組變量的值CASE語法一、 CASE expression-1 WHEN expression-2 statement | EXIT CASE . OTHERWISE statement | EXIT CASE . END CASE 語法二、 CASE WHEN boolean-expression # sta

16、tement | EXIT CASE . OTHERWISE statement | EXIT CASE . . END CASEFORFOR counter = start TO finish STEP value statement . END FORIFIF condition THEN Statement . ELSE Statement . END IFSLEEPSLEEP seconds #程序暫停幾秒WHILEWHILE b-expression #條件不成立,跳出循環(huán) Statement . END WHILECONTINUECONTINUE FOR | FOREACH | M

17、ENU | CONSTRUCT | INPUT | WHILE #重新執(zhí)行上面的指令EXITEXIT CASE | FOR | MENU | CONSTRUCT | FOREACH | REPORT | DISPLAY | INPUT | WHILE #離開上面的程序結(jié)構(gòu)3. WINDOWS與FORMOPEN WINDOWSOPEN WINDOW identifier AT line, column WITH FORM form-file | height ROWS, width COLUMNS #Form_file 為編譯過產(chǎn)生的文件,*.42f(擴展名可不寫) ATTRIBUTES ( w

18、indow-attributes ) CLEARCLEAR field-list #清除指定字段變量的內(nèi)容 CLEAR FORM #清除指定表單所有變量的內(nèi)容CLSOE WINDOWSCLOSE WINDOW WindowName #關(guān)閉窗口CURRENT WINDOWSCURRENT WINDOW IS identifier #指定當(dāng)前的活動窗口名:identifierOPEN FORMOPEN FORM form-name FROM “file-name” form_name是程序中定義的畫面名稱,F(xiàn)ILE-NAME是編譯產(chǎn)生的表單文件名DISPLAY FORMDISPLAY FORM f

19、orm-name #要現(xiàn)有OPEN,才能有DISPLAYCLOSE FORMCLOSE FORM form-name #釋放資源4.菜單MENUMENU title ATTRIBUTE ( control-attributes ) BEFORE MENU #以下為菜單載入前的設(shè)置 COMMAND option comment #MENU功能名稱及快捷鍵定義并顯示 HELP help-number COMMAND KEY ( key-name ) #MENU功能快捷鍵并不顯示在菜單 option comment HELP help-number COMMAND KEY ( key-name )

20、ON ACTION action-name #執(zhí)行指令 ON IDLE idle-seconds #空閑時間 END MENU5. INPUT 和DISPLAYINPUT語法語法一、 字頂名稱和變量名稱可以不同 INPUT variable | record.* ,. WITHOUT DEFAULTS FROM field-list 語法二、 INPUT BY NAME variable | record.* ,. WITHOUT DEFAULTS #默認(rèn)字段顯示值均為空,要顯示原值必須加這上面這行命令 INPUT BY NAME p_employee.no #變量名稱和字段名稱必須相同INP

21、UT結(jié)構(gòu)INPUT variable-list FROM field-list BEFORE INPUT #輸入前 AFTER INPUT #完成所有輸入時 BEFORE FIELD field-list #進入某欄位輸入前 AFTER FIELD field-list #完成某欄位輸入時 ON CHANGE field-list #字段值在修改時 ON IDLE idle-seconds #輸入空閑多少時間時 ON ACTION action-name #設(shè)置特定功能 NEXT FIELD field_name #將游標(biāo)移到下一字段上 EXIT INPUT #跳出INPUT 的敘述 END

22、INPUTDISPLAY語法語法1: #變量名只要對應(yīng)PER檔里定義的名稱即可 DISPLAY expression ,. TO field-list ,. ATTRIBUTES ( display-attribute ,. ) 語法2: #變量名要與真實的字段相同 DISPLAY BY NAME variable | record.* ,. ATTRIBUTES ( display-attribute ,.) 6.游標(biāo)Scrolling cursor通常運用在查詢程序,可以隨機抓取數(shù)據(jù)。 EX:1. DECLARE cursor_name SCROLL CURSOR FOR sql stat

23、ement 2. DECLARE cursor_name SCROLL CURSOR WITH HOLD FOR sql statementNon-scrolling cursor通常運用在報表程序,抓取數(shù)據(jù)的方式是依序(seguential)的方式。 EX : DECLARE cursor_name CURSOR FOR sql statementLocking cursor通常運用在Update 程序,做數(shù)據(jù)Lock 的動作。 EX: DECLARE cursor_name CURSOR FOR sql statement FOR UPDATEConstruct他可以 讓使用者在畫面上下查

24、詢資料的條件(也就是做QBE 的動作)語法1: CONSTRUCT BY NAME char_variable ON column_list 語法2: CONSTRUCT char_variable ON column_list FROM field_list 說明:char_variable 為 程序變量(通常定義成字符串變量) column_list 為 table 中的字段 field_list 為 SCREEN 上的字段。PREPARE將此段程序轉(zhuǎn)成可執(zhí)行的敘述 PREPARE statement-name FROM char_variable 說明: statement-name 是

25、PREPARE 的一個變量,事先不用定義。 char_variable是組合的SELECT敘述 在做PREPARE 敘述之前必須先組好SELECT 的敘述。OPENOPEN cursor_nameCLOSECLOSE cursor_nameFETCHFETCH語法:必須先OPEN CURSOR ,最后必須CLOSE CURSORFETCH可以與WHILE一起用, FETCH cursor_name INTO program_variableFOREACHFOREACH 語法:(只能用于 non_scrolling cursor)只能用于循環(huán),自動開啟和關(guān)閉CURSOR FOREACH emp_

26、cs INTO p_employee.* Statement CONTINUE FOREACH EXIT FOREACH END FOREACH7.數(shù)組數(shù)組的定義固定數(shù)組(Static Array)定義 ARRAY intconst ,intconst ,intconst OF datatype 動態(tài)數(shù)組(Dynamic Array)定義 DYNAMIC ARRAY WITH DIMENSION rank OF datatype變組的事件getLength( ) RETURNING INTEGER: 回傳單層數(shù)組的長度 clear: 將動態(tài)數(shù)組(Dynamic Array)中,所有記錄移除。

27、將固定數(shù)組(Static Array)中,所有紀(jì)錄值清為NULL。 appendElement(): 在動態(tài)數(shù)組(Dynamic Array)后面加上一筆新的記錄。 這個對象在固定數(shù)組(Static Array)中無效。insertElement( INTEGER ) : 在指定位置新增記錄,并將指定位置后之?dāng)?shù)據(jù)往下移。 動態(tài)數(shù)組(Dynamic Array)的筆數(shù)加1。 deleteElement( INTEGER ): 移除指定位置記錄,并將指定位置后之?dāng)?shù)據(jù)往上移。 動態(tài)數(shù)組(Dynamic Array)的筆數(shù)減1。DISPLAY ARRAY目的:將程序數(shù)組的值顯示在畫面上 語法: DIS

28、PLAY ARRAY record-array TO screen-array.*INOUT ARRAY目的:Input Array 可以讓使用者透過Screen Record 輸入資料 語法: INPUT ARRAY array WITHOUT DEFAULTS FROM screen-array.* HELP help-number ATTRIBUTE ( display-attribute | control-attribute ,. ) 五. 報表與除錯指令1. 報表命令START REPORT語法: START REPORT rep_name TO SCREEN |FILE file

29、name | PRINTER 說明: (1)這個指令是在驅(qū)動REPORT DRIVER。 (2)TO SCREEN:為系統(tǒng)DEFAULT 可不寫。 (3)TO FILE filenme:將REPORT 的結(jié)果送到一個檔案中(這個文件名由程序人員自訂)。 (4)TO PRINTER:將REPORT 結(jié)果送到打印機(系統(tǒng)打印機)。(5)若(2)、(3)都不寫,則系統(tǒng)會將結(jié)果自動送到屏幕。OUTPUT TO REPORT語法: OUTPUT TO REPORT rep_name(expr_list) 說明: (1)該功能類似CALL function 時,并且順便傳遞參數(shù),將數(shù)據(jù)送到REPORT F

30、UNCTION 中。FINISH REPORT語法: FINISH REPORT rep_name 說明: (1)這個指令是結(jié)束報表的指令。REPORT FUNCTIONREPORT report_name(expr_list) DEFINE define_statement OUTPUT output_statement #定義報表的邊界及長度 ORDER BY sort_list FORMAT control_block statement : END REPORTORDER BY語法: ORDER EXTERNAL(external外部的) BY variable-list 說明: (1

31、)ORDER BY 區(qū)間,主要是作排序字段用,以逗號分開,擺在最前面的字段為主鍵,同時只能用所接收的參數(shù)內(nèi)的字段來排序。 (2)ORDER BY 會先將數(shù)據(jù)排序過并存在暫存盤中,配合BEFORE GROUP OF 或 AFTER GROUP OF 區(qū)段排序后再由暫存檔印出。 (3)ORDER EXTERNAL BY 表是輸入數(shù)據(jù)排序過后不存在暫存盤中。FORMAT部份FIRST PAGE HEADER :報表第一頁的表頭控制段。 PAGE HEADER :報表每一頁的表頭控制段。 BEFORE GROUP OF :在控制區(qū)段設(shè)定在一組數(shù)據(jù)的開始之前所必須執(zhí)行 的敘述。 ON EVERY ROW :指定每一筆記錄的輸出格式。 AFTER GROUP

溫馨提示

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

評論

0/150

提交評論