




已阅读5页,还剩126页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GENEROBDL基础课程,学习目标,本课程旨在说明Genero语言发展历程介绍基本语法介绍基本应用以TIPTOPGP为例简单说明语法的应用方式,GeneroBDL架构Compile、link、run画面档(FORM)组成变量及基本指令应用逻辑档(MODULE)组成、开启WINDOWINPUT、DISPLAY的应用指标(CURSOR)的应用数组(ARRAY)的应用,学习大纲,GeneroBDL架构,Overview,Genero发展及特性介绍Genero编译及运行工具,GENEROBDL发展历程图,INFORMIX-i4GL,FourJSBDL,FourJSGeneroBDL,TEXTMode(GUIMode)多种OS平台支持多种DB支持,GUIModeTEXTMode多种OS平台支持多种DB支持,支持Client-Server架构,以XML做为数据传递方式新对象具有简易OO功能,GENEROBDL架构图,Overview,Genero发展及特性介绍Genero编译及运行工具,GENEROBDL程序组成,GENEROBDL程序组成举例,abmi600,abmi600.4fd,abmi600.4gl,画面Form,程序module,程序program,概略区分图,画面文件(FORM)处理流程,*.4fd,*.42f,编译fglform(r.f2),Studio完成,abmi600.4fd,abmi600.42f,r.f2abmi600,模块文件(Module)处理流程,*.4gl,*.42m,编译fglcomp(r.c2),*.42r,连结fgllink(r.l2),运行fglrun(r.r2),*.42f,abmi600.4gl,abmi600.42m,abmi600.42r,abmi600.42m,r.c2abmi600,r.l2abmi600,r.r2abmi600,动态链接库处理流程,*.4gl,*.42m,*.42r,*.4gl,*.42m,将多个会重复用到的42m做预先打包动作,*.42x,再与其它的42m做连结,形成42r以供运行,比方sub.42x,lib.42x,qry.42x,abmi600.42m,画面档(FORM)组成,TitleBar,TopMenu,ToolBar,RingMenu,Page,Table,ScrollBar,FieldDescription,UI名词定义,FORM主要组成,变量与表达式,DefineVariables,格式:DEFINE变量名称变量类型直接定义:DEFINEemployee_noCHAR(10)对应数据库字段:DEFINEp_employee_noLIKEemployee_file.employee_no,VariablesType(字符类型),STRINGObjectMethods,举例子说明,举例子:对于一个STRING的变量aTIPTOPGPa.getLength()=10a.getIndexOf(P,1)=3a.subString(2,4)=IPTa.toUpperCase()=TIPTOPGPa.toLowerCase()=tiptopgpa.trim()=TIPTOPGP,VariablesType(日期类型),VariablesType(数值类型),变量的集合,直接定义:DEFINErecRECORDidINTEGER,nameVARCHAR(100),birthLIKEima_file.ima01ENDRECORD对应数据库字段:DEFINEcustRECORDLIKEcustomer.*,初始化一组变数的值,语法:INITIALIZE变数串行LIKE字段串行|TONULLEx:,DATABASEdsMAINDEFINEcrRECORDLIKEcustomer.*INITIALIZEcr.*TONULLINITIALIZEcr.*LIKEcustomer.*ENDMAIN,变数的赋值,语法:LETvariable=expressionEx:,DATABASEdsMAINDEFINEc1,c2CHAR(10)DEFINEc3INTEGERLETc3=123LETc1=generoLETc2=c3ENDMAIN,字符串表达式,表达式:Ex:,(逗号),意义:字符串连结,LETcompany=“DC”,“MS”DISPLAYcompany=,companyShow:company=DCMS,字符串表达式,表达式:Ex:,|,意义:字符串连结,但连结值有一个是NULL,结果就会是NULL,DEFINEi,j,kCHAR(10)LETi=TIPTOPGPLETj=GeneroBDL123456DISPLAYi|j:,i|jDISPLAYi|k:,i|kDISPLAYi,k:,i,kShow:i|j:TIPTOPGPGeneroBDLShow:i|k:Show:i,k:TIPTOPGP,字符串表达式,表达式:Ex:,strm,n,意义:截取str字符串中的m到n的子字符串,LETi=TIPTOPGPGeneroBDLLETj=i1,9DISPLAYj=,jShow:j=TIPTOPGP,字符串表达式,表达式:Ex:,a.subString(m,n),DEFINEiSTRINGDEFINEjCHAR(20)LETi=TIPTOPGPGeneroBDLLETj=i.subString(1,9)DISPLAYj=,jShow:j=TIPTOPGP,字符串表达式,表达式:Ex:,USING,意义:针对数值或日期设置其打印的格式,LETsalary=1000DISPLAYsalaryUSING$#,#Show1:$1,000,USING(设置格式),例子,LETsalary1=-1000LETsalary2=1000DISPLAYsalary1USING“-,-“DISPLAYsalary2USING“+,+Show1:-1,000Show2:+1,000,字符串表达式,表达式:Ex:,USING,意义:针对数值或日期设置其打印的格式,DISPLAYyyyy-mm-dd:,TODAYUSINGyyyy-mm-ddDISPLAY“YYYYMMDD:,TODAYUSING“YYYYMMDDShow1:yyyy-mm-dd:2004-10-11Show2:YYYYMMDD:20041011,字符串表达式,表达式:Ex:,CLIPPED,意义:消除尾部空白,LETi=TIPTOPGPLETj=GeneroBDLDISPLAYi&j=,iCLIPPED,jShow:i&j=TIPTOPGPGeneroBDL,字符串表达式,表达式:Ex:,a.trim(),DEFINEiSTRINGDEFINEjCHAR(12)LETi=TIPTOPGPLETj=GeneroBDLDISPLAYi&j=,i.trim(),j,123“Show:i&j=TIPTOPGPGeneroBDL123trimRight()/trimLeft(),仅针对string类型,字符串表达式,表达式:Ex:,SPACES,意义:输出空白字符串,DEFINEi,jCHAR(10)LETi=TIPTOPGPLETj=GeneroBDLDISPLAYi&j=,i,1,8SPACES,jCLIPPEDShow:i&j=TIPTOPGP1GeneroBDL,变数的生命周期,1.Local变数(LocalVariables)定义位置:定义在Module中的函式里(MAIN,.FUNCTION等)生命周期:只属于该定义的函式使用Module变数(ModuleVariables)定义位置:Module中,但不被任何的函式包围生命周期:为该Module中的共享变数Global变数(GlobalVariables)定义位置:由GLOBALS及ENDGLOBALS所包围的变数生命周期:为所link使用的MODULE的共享变量,DATABASEdsGLOBALSDEFINEg_employeeCHAR(10)ENDGLOBALSDEFINEg_ttyCHAR(32)MAINDEFINEanswerCHAR(1)ENDMAINFUNCTIONins_employee()DEFINEflagCHAR(1),changeSMALLINTENDFUNCTION,GLOBAL变数的有g_employeeMODULE变数的有g_ttyLOCAL变数的有answer、flag、change,DATABASEdsGLOBALSDEFINEg_employeeCHAR(10)ENDGLOBALSDEFINEg_employeeCHAR(1)#编译的时候报错,重复定义变量了DEFINEg_ttyCHAR(32)MAINLETg_tty=tiptopLETg_employee=erpCALLins_employee()#离开FUNCTION之后#这个时候g_tty的值还是tiptop,#g_employee的值还是erpENDMAINFUNCTIONins_employee()DEFINEg_ttySMALLINT#编译不会报错,在这个函数中g_tty是整型的DEFINEg_employeeSMALLINT#编译不报错,同上#这个时候g_tty的值是0,而不是tiptopLETg_tty=32LETg_employee=10ENDFUNCTION,程控流程,指令:语法:Ex:,SLEEPseconds,SLEEP,MAINDISPLAYPleasewait5seconds.SLEEP5DISPLAYThankyou.ENDMAIN,IF,CASEFOR,WHILE,流程控制指令,指令:语法:,IFconditionTHENstatement.ELSEstatement.ENDIF,IF,MAINDEFINEnameCHAR(20)LETname=JohnSmithIFnameMATCHESJohn*THENDISPLAY“Thefirstnamedisplayed.IFnameMATCHES*SmithTHENDISPLAYEventhelastnamedisplayed.ENDIFELSEDISPLAYThenameis,name,.ENDIFENDMAIN,Ex:,指令:语法1:,CASE,CASEexpression-1WHENexpression-2statement|EXITCASE.OTHERWISEstatement|EXITCASE.ENDCASE,MAINDEFINEvCHAR(10)LETv=C1CASEvWHENC1DISPLAYValueisC1WHENC2DISPLAYValueisC2WHENC3DISPLAYValueisC3OTHERWISEDISPLAYUnexpectedvalueENDCASEENDMAIN,Ex:,用IF来表示MAINDEFINEvCHAR(10)LETv=C1IFv=“C1”ORv=“C2”ORv=“C3”THENIFv=“C1”THENDISPLAYValueisC1”ENDIFIFv=“C2”THENDISPLAYValueisC2”ENDIFIFv=“C3”THENDISPLAYValueisC3”ENDIFELSEDISPLAYUnexpectedvalueENDIF,Ex:,指令:语法2:,CASEWHENboolean-expressionstatement|EXITCASE.OTHERWISEstatement|EXITCASE.ENDCASE,CASE,MAINDEFINEvCHAR(10)LETv=C1“CASEWHEN(v=C1ORv=C2)DISPLAYValueiseitherC1orC2WHEN(v=C3ORv=C4)DISPLAYValueiseitherC3orC4OTHERWISEDISPLAYUnexpectedvalueENDCASEENDMAIN,Ex:,MAINDEFINEvCHAR(10)LETv=C1“LETw=C4“CASEWHEN(v=C1ORw=C2)DISPLAYValueiseitherC1orC2WHEN(v=C3ORw=C4)DISPLAYValueiseitherC3orC4OTHERWISEDISPLAYUnexpectedvalueENDCASEENDMAIN,Ex:,指令:语法:,FORcounter=startTOfinishSTEPvaluestatement.ENDFOR,FOR,MAINDEFINEi,i_min,i_maxINTEGERLETi_min=1LETi_max=10FORi=i_minTOi_maxDISPLAYiENDFORFORi=i_maxTOi_minSTEP-1DISPLAYiENDFORENDMAIN,Ex:,指令:语法:,WHILEexpressionstatement.ENDWHILE,WHILE,MAINDEFINEa,bINTEGERLETa=20LETb=1WHILEabDISPLAYa,bLETb=b+1ENDWHILEENDMAIN,Ex:,用FOR表示MAINDEFINEa,bINTEGERLETa=20FORb=1TOa-1STEP1DISPLAYa,bENDFORENDMAIN,Ex:,指令:语法:,CONTINUEFOR|FOREACH|MENU|CONSTRUCT|INPUT|WHILE,CONTINUE,MAINDEFINEiINTEGERLETi=0WHILEi30000l_str=“1=1”(如果用户什么条件也没下),DEFINEl_strVARCHAR(100)CONSTRUCTl_strONemployee,salaryFROMemployee,salaryCONSTRUCTBYNAMEl_strONemployee,salary,PREPARE(申明),语法:PREPAREprepared_idFROMchar_variable,EX:DEFINEl_sqlSTRINGLETl_sql=SELECT*FROMemployee_file,WHERE,l_strl_sql=“SELECT*FROMemployee_fileWHEREemployee=1000andsalary30000”PREPAREemp_preFROMl_sql,CURSOR,ScrollingCURSOR,说明:通常运用在查询程序,可以随机抓取数据。,1.透过DECLARE定义2.利用OPEN开启该CURSOREX:OPENtest01_cursor3.透过FETCHcursor_nameINTO变数抓取资料,DECLARE,语法:DECLAREcursor_nameSCROLLCURSORWITHHOLDFORsqlstatement,OPEN,OPEN语法:OPENcursor_nameUSING变量名称EX:LETg_sql=SELECT*FROMcta_fileWHEREROWID=?“PREPAREcta_prFROMg_sqlDECLAREcta_clSCROLLCURSORFORcta_prOPENcta_clUSINGl_ata01,FETCH,语法:FETCHNEXT|PREVIOUS|FIRST|LAST|RELATIVEexpr|ABSOLUTEexprcursorNameINTOvariableList,ScrollingCURSOR,LETl_sql=SELECT*FROMemployee_file,WHERE,l_strPREPAREemp_preFROMl_sqlDECLAREemp_cusSCROLLCURSORWITHHOLDFORemp_preOPENemp_cusFETCHfirstemp_cusINTOl_emp.*#抓第一笔CLOSEemp_cus,CURSOR,Non-ScrollingCURSOR,说明:常运用在报表程序,抓取数据的方式是依序(seguential)的方式。,1.PREPARE申明2.透过DECLARE定义3.利用FOREACH指令抓数据,DECLARE,语法:DECLAREcursor_nameCURSORFORsqlstatement,FOREACH,语法:只能用于non_scrollingcursorFOREACHcursor_nameINTO变量名称Statement:CONTINUEFOREACH:EXITFOREACH:ENDFOREACH,Non-ScrollingCURSOR,LETl_sql=SELECT*FROMemployee_file,WHERE,l_strPREPAREemp_preFROMl_sqlDECLAREemp_cusCURSORFORemp_preFOREACHemp_cusINTOl_emp.*#循序抓数据IFl_emp.salary80000THENEXITFOREACHENDIFENDFOREACH,LockingCURSOR,说明:通常运用在Update程序,做数据Lock的动作。,1.透过DECLARE定义2.利用OPEN开启该CURSOREX:OPENcursor_name3.透过FETCHcursor_nameINTO变数抓取资料,LockingCURSOR,LETl_sql=SELECT*FROMemployee_file,WHEREno=?FORUPDATENOWAITPREPAREemp_preFROMl_sqlDECLAREemp_cusCURSORFORemp_preOPENemp_cusUSINGl_noFETCHemp_cusINTOl_emp.*#只抓一笔资料lock,TRANSACTION,语法:将数据先写入暂存区,待资料的INSERT、UPDATE、DELETE均审核没有问题后,再一次写入实体的数据表中存放,此段过程即称为一个TRANSACTION。BEGINWORK:COMMITWORK/ROLLBACKWORK:BEGINWORK后一定要有COMMITWORK或ROLLBACKWORK,否则会影响到系统数据的写入或调用,TRANSACTION,BEGINWORKUPDATEzx_fileWHEREzx01=g_userIFSQLCA.SQLCODETHENLETli_success=FALSEENDIFUPDATEzxy_fileWHEREzxy01=g_userIFSQLCA.SQLCODETHENLETli_success=FALSEENDIFIFli_successTHENCOMMITWORKELSEROLLBACKWORKENDIF,DECLAREemp_cusSCROLLCURSORWITHHOLDFORemp_preBEGINWORKOPENemp_cusFETCHfirstemp_cusINTOl_emp.*#抓第一笔COMMITWORK,WITHHOLD,EXECUTE,语法:系统要运行大量的同一SQL指令时,可以利用EXECUTE指令来增加作业的效能PREPAREprepared_idFROMsql_statementEXECUTEprepared_idUSINGvariableINTOvariablesFREEprepared_idEXECUTE可用在SELECT、UPDATE、INSERT、.DELETE等SQL查询指令,EXECUTE,FUNCTIONupdate_customer_name(key,name)DEFINEkeyINTEGERDEFINEnameCHAR(10)PREPAREs1FROMUPDATEcustomerSETname=?WHEREcustomer_num=?EXECUTEs1USINGname,keyFREEs1ENDFUNCTION,PUTFLUSH,语法:若上述的EXECUTE是要做INSERT的话,还可以有另外一个PUTFLUSH的选择差异处在PUTFLUSH架构不会马上去写入数据库,而是在指定的程序运行点上(FLUSH)、或是结束PUT时才会一次写入实体数据库。PREPAREprepared_idFROMINSERT_statementDECLAREcursor_idWITHHOLDFORprepared_idOPENcursor_idPUTcursor_idFROMvariable_listFLUSHcursor_idCLOSEcursor_idFREEcursor_idFREEprepared_id,PUTFLUSH,PREPAREisFROMINSERTINTOitemVALUES(?,?)DECLAREicCURSORFORisBEGINWORKOPENicFORi=1TO100LETrec.key=iLET=Item#|iPUTicFROMrec.*IFiMOD50=0THENFLUSHicENDIFENDFORCLOSEicCOMMITWORKFREEicFREEis,ARRAY应用,ARRAY,固定数组(StaticArray)定义ARRAYintconst,intconst,intconstOFdatatype动态数组(DynamicArray)定义DYNAMICARRAYWITHDIMENSIONrankOFdatatype,ARRAY,EX:固定数组(StaticArray)MAINDEFINEg_descARRAY3OFCHAR(14)DEFINEg_xARRAY10OFRECORDaCHAR(10),bCHAR(10),cCHAR(10)ENDRECORDENDMAIN,ARRAY,EX:动态数组(DynamicArray)MAINDEFINEg_iDYNAMICARRAYOFINTEGERENDMAIN,DEFINEg_xDYNAMICARRAYWITHDIMENSION2OFRECORDaCHAR(10),bCHAR(10),cCHAR(10)ENDRECORD,DEFINEg_xDYNAMICARRAYOFRECORDaCHAR(10),bCHAR(10),cCHAR(10)ENDRECORD,ObjectMethods,getlength(),EX:MAINDEFINEaDYNAMICARRAYOFINTEGERLETa5000=12456DISPLAYa.getLength()ENDMAINSHOW:5000,clear(),EX:MAINDEFINEaDYNAMICARRAYOFINTEGERLETa10=11DISPLAYBeforeClear:,a.getLength()CALLa.clear()DISPLAYAfterClear:,a.getLength()ENDMAINSHOW:BeforeClear:10AfterClear:0,appendElement(),EX:MAINDEFINEaDYNAMICARRAYOFINTEGERLETa10=10CA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金融租赁服务项目建议书
- 2025年半导体用石英玻璃材料项目发展计划
- 2025年钢增强塑料复合管项目发展计划
- 2025年特种机载装置合作协议书
- 性别差异下的教育心理学如何针对不同性别激发学生潜力
- 教育投资的新趋势游戏化学习平台的融资路径
- 教育政策成效评估的多维度分析
- 未来科技趋势下的教育技术增强现实与虚拟现实的融合应用研究
- 2025年甘肃省靖远县四中物理高一第二学期期末质量跟踪监视试题含解析
- 幼儿教育中教师心理调适的技巧与方法
- 井盖巡查管理制度
- GB/T 33490-2025展览展示工程服务基本要求
- 2024年国能榆林化工有限公司招聘真题
- 2025年会计职业入门会计基础知识深度解析与要点梳理
- 消防总队面试题目及答案
- 《低钠血症中国专家共识(2023年版)》解读课件
- 公司法期末考试卷及答案
- GB/T 45604-2025船舶与海洋技术大抓力平衡锚
- 国家中小学智慧教育平台与人工智能融合应用指南(试行)
- 港口夏季四防安全培训
- 《探索虚拟现实与增强现实技术的融合发展:课件综述》
评论
0/150
提交评论