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

下載本文檔

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

文檔簡(jiǎn)介

1、GENERO語(yǔ)法知識(shí)總結(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 : 程序代碼簡(jiǎn)稱_函數(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ù)庫(kù)字段名稱(FIELD NAME) : xxx99 99代表流水號(hào)上面兩項(xiàng)內(nèi)容 需于 p_zta中注冊(cè)後, 方可使用存于UNIX的外部名稱(SCH FILE) : c_xxx.sch三. Program的組成 : MODULE + FORM1. MODULE組成部份詳細(xì)內(nèi)容DatabaseDatabase dbname # 編譯時(shí)參考的schema數(shù)據(jù)庫(kù), 炅是實(shí)際數(shù)據(jù)庫(kù)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è)計(jì)畫面時(shí)所參考的數(shù)據(jù)庫(kù), 默認(rèn)為FORMONLY表示與數(shù)據(jù)庫(kù)無(wú)關(guān):為了與舊版本兼容 SCHEMA可以用DATABASE指令代替

4、.Actiondefault不使用, 用其他方式設(shè)定(參考TIPTOP GP技術(shù)手冊(cè))必須緊接在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 項(xiàng) 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ù)手冊(cè))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同時(shí)出現(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屏幕畫面顯示的字段所對(duì)應(yīng)的表格名稱ATTRIBUTES定義屏幕畫面上字段的名稱及顯示特性, 所有的SCREEN與LAYOUT里要定義的字段Tag在這裡都要做進(jìn)一步的定義ATTRIBUTES ENDINSTRUCTIONS定義屏幕記錄語(yǔ)法: SCREEN RECORD record-name (field-list)例子:SCREEN RECORD s_aaa(aaa.*)屏幕記錄是個(gè)完整的表格 SCREEN RECOED s_employee(emp_po,emp_age)定

9、義屏幕數(shù)組語(yǔ)法:SCREEN RECORD array_namesize field-list例子:SCREEN RECORD s_aaa3 (foo1,foo02,foo03)INSTRUCTIONS SCREEN RECORD s_employee(emp_no,emp_age)END四. 基礎(chǔ)語(yǔ)法 1. 變量及表達(dá)式變量的類型及定義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 #對(duì)應(yīng)數(shù)據(jù)庫(kù)字段定義 END MAIN FUNCTION ins_employee() DEFINE flag CHAR(1), change SMALLINT END FUNCTION數(shù)據(jù)類型型態(tài)名稱 說(shuō)明 默認(rèn)值 CHAR 固定字符 Null VARCHAR 動(dòng)態(tài)字符 Null STRING 動(dòng)態(tài)定義大小的字符串儲(chǔ)存空間 Null DATE 日期 1899-12-31 DATETIME 日期時(shí)間 Null INTEGER 4 BYTE 整數(shù) Zero SMALLINT 2 BYTE 整

11、數(shù) Zero FLOAT 8 BYTE 單精度浮點(diǎn)數(shù) ZeroSMALLFLOAT 4 BYTE 雙精度浮點(diǎn)數(shù) Zero DEC(p,s) 高精度數(shù)值-precision 為所有數(shù)字個(gè)數(shù)(不含小數(shù) 點(diǎn)),scale 為小數(shù)點(diǎn)的位數(shù),不可大于precision 的位數(shù) Null MONEY 同DECIMAL,但會(huì)在數(shù)值前面加上貨幣符號(hào) Null BYTE 大量二進(jìn)制數(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表達(dá)式字符串表達(dá)式 達(dá)式 意義 , 字符串連結(jié) | 字符串連結(jié),但連結(jié)值有一個(gè)是NULL,結(jié)果就會(huì)是 NULLstart,

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

14、簡(jiǎn)寫表示星 MON,TUE mm 以二位數(shù)字表示月份 01,0212 mmm 以三位英文簡(jiǎn)寫表示月 JUN,F(xiàn)EBDEC yy 以二位數(shù)字表示年度 95 yyyy 以四位數(shù)字表示年度 1995 using yyyy2. 程序流程控制CALLCALL function ( parameter ,. ) # 呼叫執(zhí)行函式 RETURNING variable ,. #返回指定變量的值 動(dòng)態(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語(yǔ)法一、 CASE expression-1 WHEN expression-2 statement | EXIT CASE . OTHERWISE statement | EXIT CASE . END CASE 語(yǔ)法二、 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 為編譯過(guò)產(chǎn)生的文件,*.42f(擴(kuò)展名可不寫) 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)前的活動(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 #空閑時(shí)間 END MENU5. INPUT 和DISPLAYINPUT語(yǔ)法語(yǔ)法一、 字頂名稱和變量名稱可以不同 INPUT variable | record.* ,. WITHOUT DEFAULTS FROM field-list 語(yǔ)法二、 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 #完成所有輸入時(shí) BEFORE FIELD field-list #進(jìn)入某欄位輸入前 AFTER FIELD field-list #完成某欄位輸入時(shí) ON CHANGE field-list #字段值在修改時(shí) ON IDLE idle-seconds #輸入空閑多少時(shí)間時(shí) ON ACTION action-name #設(shè)置特定功能 NEXT FIELD field_name #將游標(biāo)移到下一字段上 EXIT INPUT #跳出INPUT 的敘述 END

22、INPUTDISPLAY語(yǔ)法語(yǔ)法1: #變量名只要對(duì)應(yīng)PER檔里定義的名稱即可 DISPLAY expression ,. TO field-list ,. ATTRIBUTES ( display-attribute ,. ) 語(yǔ)法2: #變量名要與真實(shí)的字段相同 DISPLAY BY NAME variable | record.* ,. ATTRIBUTES ( display-attribute ,.) 6.游標(biāo)Scrolling cursor通常運(yùn)用在查詢程序,可以隨機(jī)抓取數(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通常運(yùn)用在報(bào)表程序,抓取數(shù)據(jù)的方式是依序(seguential)的方式。 EX : DECLARE cursor_name CURSOR FOR sql statementLocking cursor通常運(yùn)用在Update 程序,做數(shù)據(jù)Lock 的動(dòng)作。 EX: DECLARE cursor_name CURSOR FOR sql statement FOR UPDATEConstruct他可以 讓使用者在畫面上下查

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

25、PREPARE 的一個(gè)變量,事先不用定義。 char_variable是組合的SELECT敘述 在做PREPARE 敘述之前必須先組好SELECT 的敘述。OPENOPEN cursor_nameCLOSECLOSE cursor_nameFETCHFETCH語(yǔ)法:必須先OPEN CURSOR ,最后必須CLOSE CURSORFETCH可以與WHILE一起用, FETCH cursor_name INTO program_variableFOREACHFOREACH 語(yǔ)法:(只能用于 non_scrolling cursor)只能用于循環(huán),自動(dòng)開啟和關(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 動(dòng)態(tài)數(shù)組(Dynamic Array)定義 DYNAMIC ARRAY WITH DIMENSION rank OF datatype變組的事件getLength( ) RETURNING INTEGER: 回傳單層數(shù)組的長(zhǎng)度 clear: 將動(dòng)態(tài)數(shù)組(Dynamic Array)中,所有記錄移除。

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論