




版權(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)二、 命名規(guī)那么三、 Program 的組成:四、 根底語(yǔ)法五、 報(bào)表與除錯(cuò)指令一、 文件組成結(jié)構(gòu)原始程序編譯后的程序可執(zhí)行程序MODULE 程序文件 *.4gl *.42m*.42rFORM文件 *.per*.42f其他格式 *.sch 二、 命名規(guī)那么組成局部詳細(xì)內(nèi)容程序命名規(guī)那么S_XXXXXXXX :一般子程序 存于 $top/subCL_XXXXXXX :共享子程序 存于 $top/libQ_XXXXXXXX :查詢子程序 存于 $top/qry函數(shù)命名規(guī)那么XXXX_yy :程序代碼簡(jiǎn)稱_函數(shù)功能名如: i010_a 為i010作業(yè)的新增
2、函數(shù) i010_tmp 函數(shù)名字變量命名規(guī)那么G_xxxxxx :全局變量L_xxxxxx :區(qū)域性變量P_xxxxxx :傳遞變量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 Files : c_xxx.sch 三、 Program 的組成: Module + Form 1、 Module組成局部詳細(xì)內(nèi)容databaseDatabase dbname # 編譯時(shí)參考的schema 數(shù)據(jù)庫(kù),不是實(shí)際數(shù)據(jù)
3、庫(kù)GLOBALSGlobals “./config/top.global #全部程序共用的全局變量Define var_Name datatype #定義變量Constant cons_name datatype #定義常量MAINMAINEND MAINFUNCTIONFUNCTION FunName() END FUNCTIONREPORTREPORT Rep_Name(sr)FORMATPAGE HEADERBEFORE GROUPON EVERY ROWAFTER GROUPEND REPORT2、 Form組成局部詳細(xì)內(nèi)容SCHEMASchema ds #表示設(shè)計(jì)畫(huà)面時(shí)所參考的數(shù)據(jù)庫(kù)
4、,默認(rèn)為FOMRONLY 表示與數(shù)據(jù)庫(kù)無(wú)關(guān);為了與舊版本兼容 SCHEMA 可以用DATABASE指令代替Action default不使用,用其他方式設(shè)定參考TIPTOP GP技術(shù)手冊(cè)必須緊接在SCHEMA下面做Action DefaultsAction add(text=Append,accelerator=control-v)Action del(text=delete,accelerator=shift-F2)Action zoom(text=Zoom,comment=Open zoom window)Action quit(text= “quit,accelerator=Shift-
5、F5,image=quit)END第二種處理方式:在程序act.4gl 中去呼叫CALL ui.Interface.loadActionDefaults("act") 傳得參數(shù)是act.4ad 檔名,附檔名可不寫(xiě),那么產(chǎn)生的結(jié)果也可跟在per 檔編輯ACTION DEFAULTS 的結(jié)果一樣編寫(xiě)下面的XML文檔 “ACT.4ad<ActionDefaultList><ActionDefault name="add" text="Append" acceleratorName="CONTROL-V"
6、 /><ActionDefault name="del" text="Delete" acceleratorName="SHIFT-F2"/><ActionDefault name="zoom" text="Zoom" comment="Open zoom window" /><ActionDefault name="quit" text="Quit" acceleratorName="SH
7、IFT-F5" image="quit" /></ActionDefaultList>MAIN#呼叫并載入默認(rèn)ACTION項(xiàng)CALL ui.Interface.loadActionDefaults("act")MENU ""ON ACTION addCALL act_a()ON ACTION del ON ACTION zoom ON ACTION quit EXIT ProgramEND MENUTOPMENU不使用,用其他方式設(shè)定參考TIPTOP GP技術(shù)手冊(cè)TOPMENU MenuName GROUP
8、 form(TEXT=Form)COMMAND help(Text=Form,IMAGE=quest)COMMAND quit(Text=quit) END GROUP Edit(TEXT=Edit)COMMAND accecpt(Text=validate image=ok,tag=AcceptMenu)COMMAND Cancel(Text=Cancel,IMAGE=cancel)SEPARATORCOMMAND editCut ENDEND -TOPMENULAYOUTLAYOUT #不能與SCREEN同時(shí)出現(xiàn) VBOX GROUP #顯示組合框FOLDER #FOLDER下面只能用PA
9、GE,PAGE下面可以有FORDER-PAGE PAGE PageName (text = “main) GRID Employee no azb1 Name gen02 Department no gen03 gem02 END -GRID END PAGE PAGE PageName (text = “main) GRID Employee no azb1 Name gen02 Department no gen03 gem02 END -GRID END - PAGEEND -FOLDER END GROUP END -VBOXEND-LAYOUTTable屏幕畫(huà)面顯示的字段所對(duì)應(yīng)的表格
10、名稱ATTRIBUTES定義屏幕畫(huà)面上字段的名稱及顯示特性,所有SCREEN與LAYOUT里要定義的字段Tag在這里都要做進(jìn)一步的定義ATTRIBUTESEND INSTRUCTCTIONS定義屏幕記錄語(yǔ)法:SCREEN RECORD record-name (field-list)例子:SCREEN RECORD s_aaa (aaa.*)屏幕記錄是一個(gè)完整的表格 SCREEN RECORD s_employee(emp_no,emp_age)定義屏幕數(shù)組語(yǔ)法:SCREEN RECORD array-name size ( field-list )例子:SCREEN RECORD s_aaa
11、3 (f001,f002,f003)INSTRUCTIONS SCREEN RECORD s_employee(emp_no,emp_age)END3、四、 根底語(yǔ)法1、 變量及表達(dá)式變量的類型和定義DATABASE dsGLOBALSDEFINE g_employee CHAR(10) #全局變量END GLOBALSDEFINE g_tty CHAR(32) #模塊變量MAINDEFINE answer CHAR(1) #局部變量,直接定義DEFINE p_employee_no LIKE employee_file.employee_no #對(duì)應(yīng)數(shù)據(jù)庫(kù)字段定義END MAINFUNCTI
12、ON ins_employee()DEFINE flag CHAR(1),change SMALLINTEND FUNCTION數(shù)據(jù)類型型態(tài)名稱 說(shuō)明 默認(rèn)值CHAR 固定字符 NullVARCHAR 動(dòng)態(tài)字符 NullSTRING 動(dòng)態(tài)定義大小的字符串儲(chǔ)存空間 NullDATE 日期 1899-12-31DATETIME 日期時(shí)間 NullINTEGER 4 BYTE 整數(shù) ZeroSMALLINT 2 BYTE 整數(shù) ZeroFLOAT 8 BYTE 單精度浮點(diǎn)數(shù) ZeroSMALLFLOAT 4 BYTE 雙精度浮點(diǎn)數(shù) ZeroDEC(p,s) 高精度數(shù)值-precision 為所有數(shù)字
13、個(gè)數(shù)(不含小數(shù)點(diǎn)),scale 為小數(shù)點(diǎn)的位數(shù),不可大于precision的位數(shù)NullMONEY 同DECIMAL,但會(huì)在數(shù)值前面加上貨幣符號(hào) NullBYTE 大量二進(jìn)制數(shù)據(jù)(圖片) NullTEXT 大量字符數(shù)據(jù) Null變量的集合RecordsMAINDEFINE rec RECORDid INTEGER,name VARCHAR(100),birth DATEEND RECORD #集合的定義LET rec.id = 50 #集合變量元素的賦值LET = "Scott"LET rec.birth = TODAYDISPLAY rec.*END M
14、AIN初始化一組變量 INITIALIZEDATABASE dsMAINDEFINE cr RECORD LIKE customer.*INITIALIZE cr.cust_name TO NULLINITIALIZE cr.* LIKE customer.*END MAIN表達(dá)式字符串表達(dá)式表達(dá)式 意義, 字符串連結(jié)| 字符串連結(jié),但連結(jié)值有一個(gè)是NULL,結(jié)果就會(huì)是 NULLstart,end 從字符串中取出子字符串開(kāi)始到結(jié)束USING 針對(duì)數(shù)值或日期設(shè)定其打印的格式CLIPPED 消除尾部空白SPACES 輸出空白字符串USING 數(shù)值* 空白的地方以*置換 空白的地方以0 置換不會(huì)對(duì)輸
15、出的數(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è)錢(qián)字號(hào)( 當(dāng)輸出的數(shù)字小于零時(shí),加上一個(gè)左括號(hào)) 當(dāng)輸出的數(shù)字小于零時(shí),加上一個(gè)右括號(hào)USING 日期dd 以二位數(shù)字表示日期ddd 以三位英文簡(jiǎn)寫(xiě)表示星 MON,TUEmm 以二位數(shù)字表示月份 01,0212mmm 以三位英文簡(jiǎn)寫(xiě)表示月 JUN,F(xiàn)EBDECyy 以二位數(shù)字表示年度 95yyyy 以四位數(shù)字表示年度 1995using yyyy2、 程序流程控制
16、CALLCALL function ( parameter ,. ) # 呼叫執(zhí)行函式 RETURNING variable ,. #返回指定變量的值動(dòng)態(tài)查詢的回傳值如果有多組那么:let g_qryparam.default1= g_azb.azb01let g_qryparam.default2= g_azb.azb02let g_qryparam.default1= g_azb.azb03returning g_azb.azb01 <=> returning g_qryparam.multiret let g_qryparam.multiret_index = 1RETURN
17、RETURN value ,. 在FUNCTION中使用,用于返回一組變量的值CASE語(yǔ)法一、CASE expression-1WHEN expression-2 statement | EXIT CASE . OTHERWISE statement | EXIT CASE .END CASE語(yǔ)法二、CASEWHEN boolean-expression # statement | EXIT CASE . OTHERWISE statement | EXIT CASE .END CASEFORFOR counter = start TO finish STEP value statement.
18、END FORIFIF condition THENstatement. ELSEstatement.END IFSLEEPSLEEP seconds #程序暫停幾秒WHILEWHILE b-expression #條件不成立,跳出循環(huán)statement.END WHILECONTINUECONTINUE FOR | FOREACH | MENU | CONSTRUCT | INPUT |WHILE #重新執(zhí)行上面的指令EXITEXIT CASE | FOR | MENU | CONSTRUCT | FOREACH | REPORT |DISPLAY | INPUT | WHILE #離開(kāi)上面
19、的程序結(jié)構(gòu)3、 WINDOWS與FORMOPEN OPEN WINDOWOPEN WINDOW identifier AT line, column WITH FORM form-file | height ROWS, width COLUMNS #Form_file 為編譯過(guò)產(chǎn)生的文件,*.42f(擴(kuò)展名可不寫(xiě)) ATTRIBUTES ( window-attributes ) CLEARCLEAR field-list #去除指定字段變量的內(nèi)容CLEAR FORM #去除指定表單所有變量的內(nèi)容CLOSE WINDOWCLOSE WINDOW WindowName #關(guān)閉窗口CURRENT
20、WINDOWCURRENT WINDOW IS identifier #指定當(dāng)前的活動(dòng)窗口名:identifierOPEN FORMOPEN FORM form-name FROM “file-name form_name是程序中定義的畫(huà)面名稱,F(xiàn)ILE-NAME是編譯產(chǎn)生的表單文件名DISPLAY FORMDISPLAY FORM form-name #要現(xiàn)有OPEN,才能有DISPLAYCLOSE FORMCLOSE FORM form-name #釋放資源4、 菜單功能OPEN MENUMENU titleATTRIBUTE ( control-attributes )BEFORE ME
21、NU #以下為菜單載入前的設(shè)置COMMAND option comment #MENU功能名稱及快捷鍵定義并顯示 HELP help-number COMMAND KEY ( key-name ) #MENU功能快捷鍵并不顯示在菜單option comment HELP help-number COMMAND KEY ( key-name )ON ACTION action-name #執(zhí)行指令ON IDLE idle-seconds #空閑時(shí)間END MENU5、 INPUT和DISPLAYOPEN INPUT 語(yǔ)法語(yǔ)法一、 字頂名稱和變量名稱可以不同INPUT variable | rec
22、ord.* ,. WITHOUT DEFAULTS FROM field-list語(yǔ)法二、INPUT BY NAME variable | record.* ,. WITHOUT DEFAULTS #默認(rèn)字段顯示值均為空,要顯示原值必須加這上面這行命令I(lǐng)NPUT BY NAME p_employee.no #變量名稱和字段名稱必須相同INPUT 結(jié)構(gòu)INPUT variable-list FROM field-listBEFORE INPUT #輸入前AFTER INPUT #完成所有輸入時(shí)BEFORE FIELD field-list #進(jìn)入某欄位輸入前AFTER FIELD field-l
23、ist #完成某欄位輸入時(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 的表達(dá)END INPUTDISPLAY 語(yǔ)法語(yǔ)法1: #變量名只要對(duì)應(yīng)PER檔里定義的名稱即可DISPLAY expression ,. TO field-list ,. ATTRIBUTES ( display-attribute ,. ) 語(yǔ)法2: #變量名要與真實(shí)的字段相同DISPL
24、AY BY NAME variable | record.* ,. ATTRIBUTES ( display-attribute ,.) 6、 游標(biāo)Scrolling Cursor通常運(yùn)用在查詢程序,可以隨機(jī)抓取數(shù)據(jù)。EX:1. DECLARE cursor_name SCROLL CURSORFOR sql statement2. DECLARE cursor_name SCROLL CURSOR WITH HOLDFOR sql statementNon-scrolling Cursor通常運(yùn)用在報(bào)表程序,抓取數(shù)據(jù)的方式是依序(seguential)的方式。EX : DECLARE cur
25、sor_name CURSORFOR sql statementLocking Cursor通常運(yùn)用在Update 程序,做數(shù)據(jù)Lock 的動(dòng)作。EX: DECLARE cursor_name CURSORFOR sql statementFOR UPDATECONSTRUCT他可以讓使用者在畫(huà)面上下查詢資料的條件(也就是做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 為 程
26、序變量(通常定義成字符串變量)column_list 為 table 中的字段field_list 為 SCREEN 上的字段。PREPARE將此段程序轉(zhuǎn)成可執(zhí)行的表達(dá)PREPARE statement-name FROM char_variable說(shuō)明:statement-name 是PREPARE 的一個(gè)變量,事先不用定義。char_variable是組合的SELECT表達(dá)在做PREPARE 表達(dá)之前必須先組好SELECT 的表達(dá)。OPENOPEN cursor_name CLOSECLOSE cursor_nameFETCHFETCH語(yǔ)法:必須先OPEN CURSOR ,最后必須CLOS
27、E CURSORFETCH可以與WHILE一起用,F(xiàn)ETCH cursor_name INTO program_variableFOREACHFOREACH 語(yǔ)法:(只能用于 non_scrolling cursor)只能用于循環(huán),自動(dòng)開(kāi)啟和關(guān)閉CURSORFOREACH emp_cs INTO p_employee.*StatementCONTINUE FOREACH EXIT FOREACH END FOREACH7、 數(shù)組OPEs 數(shù)組的定義固定數(shù)組Static Array定義ARRAY intconst ,intconst ,intconst OF datatype動(dòng)態(tài)數(shù)組Dynami
28、c Array定義DYNAMIC ARRAY WITH DIMENSION rank OF datatype數(shù)組的 數(shù)組的事件getLength( ) RETURNING INTEGER: 回傳單層數(shù)組的長(zhǎng)度clear: 將動(dòng)態(tài)數(shù)組Dynamic Array中,所有記錄移除。將固定數(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
29、 Array的筆數(shù)加1。deleteElement( INTEGER ): 移除指定位置記錄,并將指定位置后之?dāng)?shù)據(jù)往上移。動(dòng)態(tài)數(shù)組Dynamic Array的筆數(shù)減1。D DD DISPLAY ARRAY目的:將程序數(shù)組的值顯示在畫(huà)面上語(yǔ)法:DISPLAY ARRAY record-array TO screen-array.*INPUT ARRAY目的:Input Array 可以讓使用者透過(guò)Screen Record 輸入資料語(yǔ)法:INPUT ARRAY array WITHOUT DEFAULTS FROM screen-array.* HELP help-number ATTRIBUT
30、E ( display-attribute | control-attribute ,. ) 8、五、 報(bào)表與除錯(cuò)指令1、 報(bào)表命令OPEs START REPORT語(yǔ)法:START REPORT rep_name TO SCREEN |FILE filename | PRINTER 說(shuō)明:(1)這個(gè)指令是在驅(qū)動(dòng)REPORT DRIVER。(2)TO SCREEN:為系統(tǒng)DEFAULT 可不寫(xiě)。(3)TO FILE filenme:將REPORT 的結(jié)果送到一個(gè)檔案中(這個(gè)文件名由程序人員自訂)。(4)TO PRINTER:將REPORT 結(jié)果送到打印機(jī)(系統(tǒng)打印機(jī))。(5)假設(shè)(2)、(3)
31、都不寫(xiě),那么系統(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 FUNCTION 中。FINISH REPORT語(yǔ)法:FINISH REPORT rep_name說(shuō)明:(1)這個(gè)指令是結(jié)束報(bào)表的指令。REPORT FUNCTIONREPORT report_name(expr_list)DEFINE define_statementOUTPUT output_statement #定義報(bào)表的邊界及長(zhǎng)度ORDER BY
32、 sort_listFORMATcontrol_blockstatement:END REPORTORDER BY語(yǔ)法:ORDER EXTERNALexternal外部的 BY variable-list說(shuō)明:(1)ORDER BY 區(qū)間,主要是作排序字段用,以逗號(hào)分開(kāi),擺在最前面的字段為主鍵,同時(shí)只能用所接收的參數(shù)內(nèi)的字段來(lái)排序。(2)ORDER BY 會(huì)先將數(shù)據(jù)排序過(guò)并存在暫存盤(pán)中,配合BEFOREGROUP OF 或 AFTER GROUP OF 區(qū)段排序后再由暫存檔印出。(3)ORDER EXTERNAL BY 表是輸入數(shù)據(jù)排序過(guò)后不存在暫存盤(pán)中。FORMAT 局部FIRST PAGE HEADER :報(bào)表第一頁(yè)的表頭控制段。PAGE HEADER :報(bào)表每一頁(yè)的表頭控制段。BEFORE GROUP OF :在控制區(qū)段設(shè)定在一組數(shù)據(jù)的開(kāi)始之前所必須執(zhí)行的表
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省煙臺(tái)龍口市2025屆初三下學(xué)期第三次階段檢測(cè)試題數(shù)學(xué)試題含解析
- 企業(yè)職場(chǎng)禮儀培訓(xùn)
- 棗強(qiáng)中學(xué)高一上學(xué)期第四次月考地理試題
- 2025合同法中合同解除的若干問(wèn)題
- 急腹癥的觀察及急救護(hù)理
- 2025建筑項(xiàng)目招標(biāo)投標(biāo)合同(合同協(xié)議書(shū))
- 培訓(xùn)班停課通知與違規(guī)辦學(xué)治理
- 2025委托加工合同范本下載
- 2025深交所指定交易合同
- 2025商品買賣合同
- 桃小食心蟲(chóng)的為害與防治
- 漢語(yǔ)語(yǔ)法教學(xué)-雖然……但是……
- 5w2H分析法培訓(xùn)教材課件
- 2023年初中生物競(jìng)賽復(fù)賽試卷及答案
- (WORD版可修改)JGJ59-2023建筑施工安全檢查標(biāo)準(zhǔn)
- DB37-T 5222-2022建筑施工懸挑腳手架安全技術(shù)與管理標(biāo)準(zhǔn)
- 市政道路投標(biāo)方案設(shè)計(jì)大綱
- 《神州謠》課件 部編版二下 寧夏銀川興慶三小 劉靜
- DGTJ08-2128-2021 軌道交通及隧道工程混凝土結(jié)構(gòu)耐久性設(shè)計(jì)施工技術(shù)標(biāo)準(zhǔn)
- 報(bào)批稿20160301-浙江嘉化能源化工股份有限公司年產(chǎn)16萬(wàn)噸多品種脂肪醇(酸)產(chǎn)品項(xiàng)目
- DB33∕1021-2013 城市建筑工程停車場(chǎng)(庫(kù))設(shè)置規(guī)則和配建標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論