版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 GENERO語法知識總結(jié)一、 文件組成結(jié)構(gòu)二、 命名規(guī)那么三、 Program 的組成:四、 根底語法五、 報表與除錯指令一、 文件組成結(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 :程序代碼簡稱_函數(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ù)庫 字段名稱FIELD NAME : xxx99 99代表流水編號上面兩項內(nèi)容 需于 P-ZTA中注冊方可使用。存于UNIX的外部名稱Sch Files : c_xxx.sch 三、 Program 的組成: Module + Form 1、 Module組成局部詳細(xì)內(nèi)容databaseDatabase dbname # 編譯時參考的schema 數(shù)據(jù)庫,不是實際數(shù)據(jù)
3、庫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è)計畫面時所參考的數(shù)據(jù)庫
4、,默認(rèn)為FOMRONLY 表示與數(shù)據(jù)庫無關(guān);為了與舊版本兼容 SCHEMA 可以用DATABASE指令代替Action default不使用,用其他方式設(shè)定參考TIPTOP GP技術(shù)手冊必須緊接在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 檔名,附檔名可不寫,那么產(chǎn)生的結(jié)果也可跟在per 檔編輯ACTION DEFAULTS 的結(jié)果一樣編寫下面的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項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ù)手冊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同時出現(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屏幕畫面顯示的字段所對應(yīng)的表格
10、名稱ATTRIBUTES定義屏幕畫面上字段的名稱及顯示特性,所有SCREEN與LAYOUT里要定義的字段Tag在這里都要做進(jìn)一步的定義ATTRIBUTESEND INSTRUCTCTIONS定義屏幕記錄語法:SCREEN RECORD record-name (field-list)例子:SCREEN RECORD s_aaa (aaa.*)屏幕記錄是一個完整的表格 SCREEN RECORD s_employee(emp_no,emp_age)定義屏幕數(shù)組語法: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、四、 根底語法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 #對應(yīng)數(shù)據(jù)庫字段定義END MAINFUNCTI
12、ON ins_employee()DEFINE flag CHAR(1),change SMALLINTEND FUNCTION數(shù)據(jù)類型型態(tài)名稱 說明 默認(rèn)值CHAR 固定字符 NullVARCHAR 動態(tài)字符 NullSTRING 動態(tài)定義大小的字符串儲存空間 NullDATE 日期 1899-12-31DATETIME 日期時間 NullINTEGER 4 BYTE 整數(shù) ZeroSMALLINT 2 BYTE 整數(shù) ZeroFLOAT 8 BYTE 單精度浮點數(shù) ZeroSMALLFLOAT 4 BYTE 雙精度浮點數(shù) ZeroDEC(p,s) 高精度數(shù)值-precision 為所有數(shù)字
13、個數(shù)(不含小數(shù)點),scale 為小數(shù)點的位數(shù),不可大于precision的位數(shù)NullMONEY 同DECIMAL,但會在數(shù)值前面加上貨幣符號 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é)值有一個是NULL,結(jié)果就會是 NULLstart,end 從字符串中取出子字符串開始到結(jié)束USING 針對數(shù)值或日期設(shè)定其打印的格式CLIPPED 消除尾部空白SPACES 輸出空白字符串USING 數(shù)值* 空白的地方以*置換 空白的地方以0 置換不會對輸
15、出的數(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 以三位英文簡寫表示星 MON,TUEmm 以二位數(shù)字表示月份 01,0212mmm 以三位英文簡寫表示月 JUN,F(xiàn)EBDECyy 以二位數(shù)字表示年度 95yyyy 以四位數(shù)字表示年度 1995using yyyy2、 程序流程控制
16、CALLCALL function ( parameter ,. ) # 呼叫執(zhí)行函式 RETURNING variable ,. #返回指定變量的值動態(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語法一、CASE expression-1WHEN expression-2 statement | EXIT CASE . OTHERWISE statement | EXIT CASE .END CASE語法二、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 #離開上面
19、的程序結(jié)構(gòu)3、 WINDOWS與FORMOPEN OPEN WINDOWOPEN WINDOW identifier AT line, column WITH FORM form-file | height ROWS, width COLUMNS #Form_file 為編譯過產(chǎn)生的文件,*.42f(擴(kuò)展名可不寫) 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)前的活動窗口名:identifierOPEN FORMOPEN FORM form-name FROM “file-name form_name是程序中定義的畫面名稱,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 #空閑時間END MENU5、 INPUT和DISPLAYOPEN INPUT 語法語法一、 字頂名稱和變量名稱可以不同INPUT variable | rec
22、ord.* ,. WITHOUT DEFAULTS FROM field-list語法二、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 #完成所有輸入時BEFORE FIELD field-list #進(jìn)入某欄位輸入前AFTER FIELD field-l
23、ist #完成某欄位輸入時ON CHANGE field-list #字段值在修改時ON IDLE idle-seconds #輸入空閑多少時間時ON ACTION action-name #設(shè)置特定功能NEXT FIELD field_name #將游標(biāo)移到下一字段上EXIT INPUT #跳出INPUT 的表達(dá)END INPUTDISPLAY 語法語法1: #變量名只要對應(yīng)PER檔里定義的名稱即可DISPLAY expression ,. TO field-list ,. ATTRIBUTES ( display-attribute ,. ) 語法2: #變量名要與真實的字段相同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)用在報表程序,抓取數(shù)據(jù)的方式是依序(seguential)的方式。EX : DECLARE cur
25、sor_name CURSORFOR sql statementLocking Cursor通常運(yùn)用在Update 程序,做數(shù)據(jù)Lock 的動作。EX: DECLARE cursor_name CURSORFOR sql statementFOR UPDATECONSTRUCT他可以讓使用者在畫面上下查詢資料的條件(也就是做QBE 的動作),語法1:CONSTRUCT BY NAME char_variable ON column_list語法2:CONSTRUCT char_variable ON column_list FROM field_list說明:char_variable 為 程
26、序變量(通常定義成字符串變量)column_list 為 table 中的字段field_list 為 SCREEN 上的字段。PREPARE將此段程序轉(zhuǎn)成可執(zhí)行的表達(dá)PREPARE statement-name FROM char_variable說明:statement-name 是PREPARE 的一個變量,事先不用定義。char_variable是組合的SELECT表達(dá)在做PREPARE 表達(dá)之前必須先組好SELECT 的表達(dá)。OPENOPEN cursor_name CLOSECLOSE cursor_nameFETCHFETCH語法:必須先OPEN CURSOR ,最后必須CLOS
27、E CURSORFETCH可以與WHILE一起用,F(xiàn)ETCH cursor_name INTO program_variableFOREACHFOREACH 語法:(只能用于 non_scrolling cursor)只能用于循環(huán),自動開啟和關(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動態(tài)數(shù)組Dynami
28、c Array定義DYNAMIC ARRAY WITH DIMENSION rank OF datatype數(shù)組的 數(shù)組的事件getLength( ) RETURNING INTEGER: 回傳單層數(shù)組的長度clear: 將動態(tài)數(shù)組Dynamic Array中,所有記錄移除。將固定數(shù)組Static Array中,所有紀(jì)錄值清為NULL。appendElement():在動態(tài)數(shù)組Dynamic Array后面加上一筆新的記錄。這個對象在固定數(shù)組Static Array中無效。insertElement( INTEGER ) :在指定位置新增記錄,并將指定位置后之?dāng)?shù)據(jù)往下移。動態(tài)數(shù)組Dynamic
29、 Array的筆數(shù)加1。deleteElement( INTEGER ): 移除指定位置記錄,并將指定位置后之?dāng)?shù)據(jù)往上移。動態(tài)數(shù)組Dynamic Array的筆數(shù)減1。D DD DISPLAY ARRAY目的:將程序數(shù)組的值顯示在畫面上語法:DISPLAY ARRAY record-array TO screen-array.*INPUT ARRAY目的:Input Array 可以讓使用者透過Screen Record 輸入資料語法:INPUT ARRAY array WITHOUT DEFAULTS FROM screen-array.* HELP help-number ATTRIBUT
30、E ( display-attribute | control-attribute ,. ) 8、五、 報表與除錯指令1、 報表命令OPEs START REPORT語法:START REPORT rep_name TO SCREEN |FILE filename | PRINTER 說明:(1)這個指令是在驅(qū)動REPORT DRIVER。(2)TO SCREEN:為系統(tǒng)DEFAULT 可不寫。(3)TO FILE filenme:將REPORT 的結(jié)果送到一個檔案中(這個文件名由程序人員自訂)。(4)TO PRINTER:將REPORT 結(jié)果送到打印機(jī)(系統(tǒng)打印機(jī))。(5)假設(shè)(2)、(3)
31、都不寫,那么系統(tǒng)會將結(jié)果自動送到屏幕。OUTPUT TO REPORT語法:OUTPUT TO REPORT rep_name(expr_list)說明:(1)該功能類似CALL function 時,并且順便傳遞參數(shù),將數(shù)據(jù)送到REPORT FUNCTION 中。FINISH REPORT語法:FINISH REPORT rep_name說明:(1)這個指令是結(jié)束報表的指令。REPORT FUNCTIONREPORT report_name(expr_list)DEFINE define_statementOUTPUT output_statement #定義報表的邊界及長度ORDER BY
32、 sort_listFORMATcontrol_blockstatement:END REPORTORDER BY語法:ORDER EXTERNALexternal外部的 BY variable-list說明:(1)ORDER BY 區(qū)間,主要是作排序字段用,以逗號分開,擺在最前面的字段為主鍵,同時只能用所接收的參數(shù)內(nèi)的字段來排序。(2)ORDER BY 會先將數(shù)據(jù)排序過并存在暫存盤中,配合BEFOREGROUP 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í)行的表
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度股權(quán)轉(zhuǎn)讓及技術(shù)服務(wù)合同2篇
- 二零二五版建筑門窗材料采購及安裝服務(wù)合同3篇
- 二零二五版?zhèn)€人信用擔(dān)保二手房購買貸款合同樣本3篇
- 武漢托管班2025年度教師招聘與素質(zhì)教育服務(wù)合同3篇
- 二零二五版智慧城市基礎(chǔ)設(shè)施勘察設(shè)計服務(wù)合同3篇
- 2025年度安全生產(chǎn)應(yīng)急救援預(yù)案合同范本3篇
- 二零二五版智能倉儲物流中心設(shè)施維護(hù)與安全管理合同3篇
- 二零二五年建筑水電安裝工程合同風(fēng)險評估合同2篇
- 深圳市2025年度房地產(chǎn)股權(quán)交易合同(含工業(yè)地產(chǎn))3篇
- 二零二五版二手房買賣合同補(bǔ)充協(xié)議(歷史遺留問題)范本3篇
- 西南師大版五年級上冊小數(shù)乘除法豎式計算題200道及答案
- 再生障礙性貧血課件
- AQ/T 2061-2018 金屬非金屬地下礦山防治水安全技術(shù)規(guī)范(正式版)
- 2024年湖北三江航天江河化工科技有限公司招聘筆試沖刺題(帶答案解析)
- 采購人員管理制度
- 礦卡司機(jī)安全教育考試卷(帶答案)
- SYT 6963-2013 大位移井鉆井設(shè)計指南
- 合同增項補(bǔ)充協(xié)議書范本
- 產(chǎn)后抑郁癥的護(hù)理查房
- 五年級上冊數(shù)學(xué)脫式計算300題及答案
- 循環(huán)系統(tǒng)練習(xí)試題(含答案)
評論
0/150
提交評論