




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GENERO语法知识总结一、 文件组成结构二、 命名规则三、 Program 的组成:四、 基础语法五、 报表与除错指令一、 文件组成结构原始程序编译后的程序可执行程序MODULE 程序文件 *.4gl *.42m*.42rFORM文件 *.per*.42f其他格式 *.sch 二、 命名规则组成部分详细内容程序命名规则S_XXXXXXXX :一般子程序 存于 $top/subCL_XXXXXXX :共享子程序 存于 $top/libQ_XXXXXXXX :查询子程序 存于 $top/qry函数命名规则XXXX_yy :程序代码简称_函数功能名如: i010_a 为i010作业的新增函数 i010_tmp 函数名字变量命名规则G_xxxxxx :全局变量L_xxxxxx :区域性变量P_xxxxxx :传递变量S_xxxxxx :屏幕变量文件命名规则文件名称(TABLE NAME) : xxx_file 数据库 字段名称(FIELD NAME) : xxx99 99代表流水编号上面两项内容 需于 P-ZTA中注册方可使用。存于UNIX的外部名称(Sch Files) : c_xxx.sch 三、 Program 的组成: Module + Form 1、 Module组成部分详细内容databaseDatabase dbname # 编译时参考的schema 数据库,不是实际数据库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组成部分详细内容SCHEMASchema ds #表示设计画面时所参考的数据库,默认为FOMRONLY 表示与数据库无关;为了与旧版本兼容 SCHEMA 可以用DATABASE指令代替Action default不使用,用其他方式设定(参考TIPTOP GP技术手册)必须紧接在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-F5,image=”quit”)END第二种处理方式:在程序act.4gl 中去呼叫CALL ui.Interface.loadActionDefaults(act) 传得参数是act.4ad 档名,附档名可不写,则产生的结果也可跟在per 档编辑ACTION DEFAULTS 的结果一样编写下面的XML文档 “ACT.4ad”MAIN#呼叫并载入默认ACTION项CALL ui.Interface.loadActionDefaults(act)MENU ON ACTION addCALL act_a()ON ACTION del ON ACTION zoom ON ACTION quit EXIT ProgramEND MENUTOPMENU不使用,用其他方式设定(参考TIPTOP GP技术手册)TOPMENU MenuName GROUP 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同时出现 VBOX GROUP #显示组合框FOLDER #FOLDER下面只能用PAGE,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屏幕画面显示的字段所对应的表格名称ATTRIBUTES定义屏幕画面上字段的名称及显示特性,所有SCREEN与LAYOUT里要定义的字段Tag在这里都要做进一步的定义ATTRIBUTESEND INSTRUCTCTIONS定义屏幕记录语法:SCREEN RECORD record-name (field-list)例子:SCREEN RECORD s_aaa (aaa.*)屏幕记录是一个完整的表格 SCREEN RECORD s_employee(emp_no,emp_age)定义屏幕数组语法:SCREEN RECORD array-name size ( field-list )例子:SCREEN RECORD s_aaa3 (f001,f002,f003)INSTRUCTIONS SCREEN RECORD s_employee(emp_no,emp_age)END3、四、 基础语法1、 变量及表达式变量的类型和定义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 #对应数据库字段定义END MAINFUNCTION ins_employee()DEFINE flag CHAR(1),change SMALLINTEND FUNCTION数据类型型态名称 说明 默认值CHAR 固定字符 NullVARCHAR 动态字符 NullSTRING 动态定义大小的字符串储存空间 NullDATE 日期 1899-12-31DATETIME 日期时间 NullINTEGER 4 BYTE 整数 ZeroSMALLINT 2 BYTE 整数 ZeroFLOAT 8 BYTE 单精度浮点数 ZeroSMALLFLOAT 4 BYTE 双精度浮点数 ZeroDEC(p,s) 高精度数值-precision 为所有数字个数(不含小数点),scale 为小数点的位数,不可大于precision的位数NullMONEY 同DECIMAL,但会在数值前面加上货币符号 NullBYTE 大量二进制数据(图片) NullTEXT 大量字符数据 Null变量的集合(Records)MAINDEFINE rec RECORDid INTEGER,name VARCHAR(100),birth DATEEND RECORD #集合的定义LET rec.id = 50 #集合变量元素的赋值LET = ScottLET rec.birth = TODAYDISPLAY rec.*END MAIN初始化一组变量 INITIALIZEDATABASE dsMAINDEFINE cr RECORD LIKE customer.*INITIALIZE cr.cust_name TO NULLINITIALIZE cr.* LIKE customer.*END MAIN表达式字符串表达式表达式 意义, 字符串连结| 字符串连结,但连结值有一个是NULL,结果就会是 NULLstart,end 从字符串中取出子字符串(开始到结束)USING 针对数值或日期设定其打印的格式CLIPPED 消除尾部空白SPACES 输出空白字符串USING 数值* 空白的地方以*置换 空白的地方以0 置换不会对输出的数字作任何影响,通常用于限制字符串输出时的最大长度 将数字改为向左靠, 指定逗号出现的位置 指定小数点出现的位置 当输出的数字小于零时,加上一个负号 当输出的数字大于零,加上一个正号 当输出的数字小于零,加上一个负号 数值出现一个钱字号( 当输出的数字小于零时,加上一个左括号) 当输出的数字小于零时,加上一个右括号USING 日期dd 以二位数字表示日期ddd 以三位英文简写表示星 MON,TUEmm 以二位数字表示月份 01,0212mmm 以三位英文简写表示月 JUN,FEBDECyy 以二位数字表示年度 95yyyy 以四位数字表示年度 1995using yyyy2、 程序流程控制CALLCALL function ( parameter ,. ) # 呼叫执行函式 RETURNING variable ,. #返回指定变量的值动态查询的回传值如果有多组则: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 = 1RETURNRETURN 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.END FORIFIF condition THENstatement. ELSEstatement.END IFSLEEPSLEEP seconds #程序暂停几秒WHILEWHILE b-expression #条件不成立,跳出循环statement.END WHILECONTINUECONTINUE FOR | FOREACH | MENU | CONSTRUCT | INPUT |WHILE #重新执行上面的指令EXITEXIT CASE | FOR | MENU | CONSTRUCT | FOREACH | REPORT |DISPLAY | INPUT | WHILE #离开上面的程序结构3、 WINDOWS与FORMOPEN OPEN WINDOWOPEN WINDOW identifier AT line, column WITH FORM form-file | height ROWS, width COLUMNS #Form_file 为编译过产生的文件,*.42f(扩展名可不写) ATTRIBUTES ( window-attributes ) CLEARCLEAR field-list #清除指定字段变量的内容CLEAR FORM #清除指定表单所有变量的内容CLOSE WINDOWCLOSE WINDOW WindowName #关闭窗口CURRENT WINDOWCURRENT WINDOW IS identifier #指定当前的活动窗口名:identifierOPEN FORMOPEN FORM form-name FROM “file-name” form_name是程序中定义的画面名称,FILE-NAME是编译产生的表单文件名DISPLAY FORMDISPLAY FORM form-name #要现有OPEN,才能有DISPLAYCLOSE FORMCLOSE FORM form-name #释放资源4、 菜单功能OPEN MENUMENU titleATTRIBUTE ( control-attributes )BEFORE MENU #以下为菜单载入前的设置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 #执行指令ON IDLE idle-seconds #空闲时间END MENU5、 INPUT和DISPLAYOPEN INPUT 语法语法一、 字顶名称和变量名称可以不同INPUT variable | record.* ,. WITHOUT DEFAULTS FROM field-list语法二、INPUT BY NAME variable | record.* ,. WITHOUT DEFAULTS #默认字段显示值均为空,要显示原值必须加这上面这行命令INPUT BY NAME p_employee.no #变量名称和字段名称必须相同INPUT 结构INPUT variable-list FROM field-listBEFORE INPUT #输入前AFTER INPUT #完成所有输入时BEFORE FIELD field-list #进入某栏位输入前AFTER FIELD field-list #完成某栏位输入时ON CHANGE field-list #字段值在修改时ON IDLE idle-seconds #输入空闲多少时间时ON ACTION action-name #设置特定功能NEXT FIELD field_name #将游标移到下一字段上EXIT INPUT #跳出INPUT 的叙述END INPUTDISPLAY 语法语法1: #变量名只要对应PER档里定义的名称即可DISPLAY expression ,. TO field-list ,. ATTRIBUTES ( display-attribute ,. ) 语法2: #变量名要与真实的字段相同DISPLAY BY NAME variable | record.* ,. ATTRIBUTES ( display-attribute ,.) 6、 游标Scrolling Cursor通常运用在查询程序,可以随机抓取数据。EX:1. DECLARE cursor_name SCROLL CURSORFOR sql statement2. DECLARE cursor_name SCROLL CURSOR WITH HOLDFOR sql statementNon-scrolling Cursor通常运用在报表程序,抓取数据的方式是依序(seguential)的方式。EX : DECLARE cursor_name CURSORFOR sql statementLocking Cursor通常运用在Update 程序,做数据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 为 程序变量(通常定义成字符串变量)column_list 为 table 中的字段field_list 为 SCREEN 上的字段。PREPARE将此段程序转成可执行的叙述PREPARE statement-name FROM char_variable说明:statement-name 是PREPARE 的一个变量,事先不用定义。char_variable是组合的SELECT叙述在做PREPARE 叙述之前必须先组好SELECT 的叙述。OPENOPEN cursor_name CLOSECLOSE cursor_nameFETCHFETCH语法:必须先OPEN CURSOR ,最后必须CLOSE CURSORFETCH可以与WHILE一起用,FETCH cursor_name INTO program_variableFOREACHFOREACH 语法:(只能用于 non_scrolling cursor)只能用于循环,自动开启和关闭CURSORFOREACH emp_cs INTO p_employee.*StatementCONTINUE FOREACH EXIT FOREACH END FOREACH7、 数组OPEs 数组的定义固定数组(Static Array)定义ARRAY intconst ,intconst ,intconst OF datatype动态数组(Dynamic Array)定义DYNAMIC ARRAY WITH DIMENSION rank OF datatype数组的 数组的事件getLength( ) RETURNING INTEGER: 回传单层数组的长度clear: 将动态数组(Dynamic Array)中,所有记录移除。将固定数组(Static Array)中,所有纪录值清为NULL。appendElement():在动态数组(Dynamic Array)后面加上一笔新的记录。这个对象在固定数组(Static Array)中无效。insertElement( INTEGER ) :在指定位置新增记录,并将指定位置后之数据往下移。动态数组(Dynamic Array)的笔数加1。deleteElement( INTEGER ): 移除指定位置记录,并将指定位置后之数据往上移。动态数组(Dynamic Array)的笔数减1。D DD DISPLAY ARRAY目的:将程序数组的值显示在画面上语法:DISPLAY ARRAY record-array TO screen-array.*INPUT ARRAY目的:Input Array 可以让使用者透过Screen Record 输入资料语法:INPUT ARRAY array WITHOUT DEFAULTS FROM screen-array.* HELP help-number ATTRIBUTE ( display-attribute | control-attribute ,. ) 8、五、 报表与除错指令1、 报表命令OPEs START REPORT语法:START REPORT rep_name TO SCREEN |FILE filename | PRINTER 说明:(1)这个指令是在驱动REPORT DRIVER。(2)TO SCREEN:为系统DEFAULT 可不写。(3)TO FILE filenme:将REPORT 的结果送到一个档案中(这个文件名由程序人员自订)。(4)TO PRINTER:将REPORT 结果送到打印机(系统打印机)。(5)若(2)、(3)都不写,则系统会将结果自动送到屏幕。OUTPUT TO REPORT语法:OUTPUT TO REPORT rep_name(expr_list)说明:(1)该功能类似CALL function 时,并且顺便传递参数,将数据送到REPORT FUNCTION 中。FINISH REPORT语法:FINISH REPORT rep_name说明:(1)这个指令是结束报表的指令。REPORT FUNCTIONREPORT report_name(expr_list)DEFINE define_statementOUTPUT output_statement #定义报表的边界及长度ORDER BY sort_listFORMATcontrol_blockstatement:END REPORTORDER BY语法:ORDER EXTERNAL(external外部的) BY variable-list说明:(1)ORDER BY 区间,主要是作排序字段用,以逗号分开,摆在最前面的字段为主键,同时只能用所接收的参数内的字段来排序。(2)ORDER BY 会先将数据排序过并存在暂存盘中,配合BEFOREGROUP OF 或 AFTER GROUP OF 区段排序后再由暂存档印出。(3)ORDER EXTERNAL BY 表是输入数据排序过后不存在暂存盘中。FORMAT 部分FIRST PAGE HEADER :报表第一页的表头控制段。PAGE HEADER :报表每一页的表头控制段。BEFORE GROUP OF :在控制区段设定在一组数据的开始之前所必须执行的叙述。ON EVERY ROW :指定每一笔记录的输出格式。AFTER GRO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿童画荷包课件
- 卡特挖机培训课件
- 中医内科主治《内经》精要解析
- 工具与技术课件
- 水果新员工培训
- 作为讲师如何培训
- 艺术培训课件上传要求
- 建筑工程课件培训
- 肿瘤晚期舒适护理:让生命在尊严中谢幕
- 员工入职培训开班仪式封面
- 2022公务员录用体检操作手册(试行)
- 航行通告教学课件
- 2023年护理考试-外科护理(副高)历年考试真题试卷摘选答案
- 2022年广东高考成绩一分一段表重磅出炉
- 新版病人搬运(轮椅)操作评分标准
- 重症监护ICU护理实习生出科考试试题及答案
- GB/Z 22074-2008塑料外壳式断路器可靠性试验方法
- GB/T 32360-2015超滤膜测试方法
- 中药学全套(完整版)课件
- 工程施工停止点检查表
- 国开专科《外国文学》十年期末考试题库及答案
评论
0/150
提交评论