




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PROGRESS语言PROGRESS语言是一种非可视化的编程语言,符合4GL规范,具有高级语言的优点,可以进行条件选择(IF、WHERE)、嵌套循环(FOR)、计算(如求和、求平均)等操作,还可以直接进行打印、显示(PUT、DISPLAY),并且不区分大小写。PROGRESS源程序一般由4部分组成:全局变量定义、图形变量定义(一般是用户指定的查询选择条件)、输出数据的格式和主程序(如何利用数据库中的字段生成用户需要的正确数据)。全局变量的定义全局变量用DEFINE VARIABLE 关键字定义。格式如下:DEFINE VARIABLE W1 LIKE(数据格式INTEGER,CHARACTER)DEFINE VARIALBE W2 AS VARIABLE2 使用AS可以直接引用已经定义好的数据格式。比如我们要把某个变量定义成和表中的字段类型一致时,可直接定义如下:DEFINE VARIALBE1 AS 表中定义的字段这样我们就不用再到后台数据库中去查询该字段的数据格式,提高了编程速度。如果这个变量在调用过程中也要用到,则分别定义如下:/在主过程中DEFINE SHARED VARIABLE W1 LIKE (数据格式INTEGER,CHARACTER)/在调用过程中DEFINE NEW SHARED VARIABLE W1 LIKE (数据格式INTEGER,CHARACTER)变量的主要数据类型如下表所示:数据类型 缺省格式 示例字符型(Character) X(8) Dongnan日期型(Data) 99/99/99 03/02/99布尔型(Logical) Yes/No Yes浮点型(Decimal) -,9.99 12.00整型(Integer) -,.9 12图形变量的定义图型变量的定义主要是把已经定义好的变量在界面上显示出来。/账户余额查询报表中部分源程序/FORM / 显示一个FORM / 定义一个相当于容器的框 /RECTFRAME AT ROW 1 COLUMN 1.25RECTFRAMELABEL AT ROW 1 COLUMN 3 NOLABEL VIEWAS TEXT SIZEPIXELS 1 BY 1SKIP(.1) /GUI/ 把变量entity的选择条件显示出来/entity colon 25 label 会计单位 entity1 colon 50 label “至”cname colon 25 label摘要acc colon 25 label 账户acc1 colon 50 label “至”sub colon 25 label 分账户 sub1 colon 50 label “至”ctr colon 25 label 成本中心 ctr1 colon 50 label “至”begdt colon 25 label 生效日期 enddt colon 50 label “至”subflag colon 25 label 汇总分账户ccflag colon 25 label 汇总成本中心rpt_curr colon 25 label 货币with frame a sidelabels attrspace width 80 NOBOX THREED /GUI/cname colon 25 label 摘要第一行在窗口中的显示如下:摘要方框中是供用户输入的选择条件。报表格式的定义报表格式的定义非常简单,只要用at和to标出相对位置即可:FORM /GUI/ header“期初借方余额” to 65“期初贷方余额” to 85“期间活动金额” to 92 “借方活动金额” to 109“贷方活动金额” to 128“期末借方余额” to 148“期末贷方余额” to 164 skip“Account Description” at 1 “账户 摘要 ” at 1“ ” at 1“” to 85“ ” to 134“ ” to 164 with STREAMIO /GUI/ frame phead1 pagetop width 186.at和to 表示数据在frame phead1 上的相对位置。不同之处在于,at后边的数据表示从该点开始,而to后边的数据表示到该点结束。特别要注意的是,在PROGRESS中,只能画横线,不能画竖线。数据处理对于数据的处理,本文主要介绍如何读取数据,以及在编程时需要注意的地方。我们以账户余额查询报表为例。当在数据库的表中查找数据时,使用下述语句:FOR EACH (表) WHERE (条件)/对表中数据进行处理/对符合条件的每个数据进行处理END 只访问表中指定的一个数据:FIND FIRST OR LAST (表) WHERE (条件)。/对表中数据进行处理END。查找条件之间用OR 或者AND 连接。在PROGRESS中,有两对语句FIRST 和FIRSTOF、LAST和LASTOF,这两个判断语句非常重要,常用于判断循环的开始还是结束以及循环中的分类是开始还是已经结束。FIRST(BREAKGROUP ):当前的循环是循环体的第一次循环则返回TRUE,如果不是则返回FALSE;FIRSTOF(BREAKGROUP ):当前的循环是循环中的分类的第一次循环则返回TRUE,如果不是则返回FALSE;LAST(BREAKGROUP ):当前的循环是循环体的最后循环则返回TRUE,如果不是则返回FALSE;LASTOF(BREAKGROUP ):当前的循环是循环中的分类的最后一次循环则返回TRUE,如果不是则返回FALSE。如果程序需要处理大量的数据,可以使用调用过程。调用过程可以采用.P或者.I文件。它们的区别在于.I文件是包含文件,在编译时不生成相应的.R文件;而.P文件生成相应的.R文件。注意:如果在过程中多次使用到同一个表,必须定义一个BUFFER格式:DEFINE BUFFER WW LIKE (表名)WW为表的别名。如果不定义BUFFER,编译时将出现“TABLE 无法辨别!”的警告。PROGRESS编程其实很简单(二)PROGRESS程序架构。PROGRESS启动应用程序,通常都是先启动一个主程序,比如mf.p,这个mf.p做一些全局变量设置,并初始化应用程序菜单。当用户执行菜单功能时,实际上是运行菜单所指定的程序!在这种模式下,PROGRESS的程序一般都不大,结构明了可读性很强,每个程序目的非常明确,但是也要遵循一定的准则,方便以后的阅读和修改。一、程序扩展名的设定。.p 主程序(可直接运行,或者编译以后挂主菜单被调用).i 子程序(经常使用的执行某一特定功能,或者为了使主程序易于阅读脱离出来).v 验证程序.w Windows的程序(Windows版的Progress支持可视化的组件编程,组件拉一拉放一放,就自动生成.w的文件了).r 编译后的程序(菜单调用时,实际上是执行.r的程序)二、程序的命名规则。主程序格式: aa + bb + cc + dd.p其中:aa - 系统模块IDbb - 系统功能cc - 程序类型(mt -维护、iq -查询或者rp -报表等)dd - 序列号子程序格式:通常是 主程序a.i 主程序b.i 这样子/关于程序的命名,个人觉得也没必要一定要遵循特定格式,一家公司有自己固定的命名方式,容易区分即可;如果是咨询公司或者系统集成公司,则要先了解客户的命名习惯和规则;同理,下面的“程序头”。三、程序头。以注释的形式,标明尽可能多的程序相关的信息,比如:程序名(路径,不过路径一般都是企业自己规定好了)、作者、菜单号、功能(菜单标题)、创建日期、修改日志等。至于格式,也就是POSE,爱怎么摆怎么摆,清楚明了即可。但是,在同一家公司,风格应该统一。另外,关于修改日志,个人觉得最好在程序头和程序体,都明显说明一下修改的日期和原因,要点。(注释不记入程序长度,所以不要担心程序太长,:p )四、维护类程序模板。注意:为方便说明,注释暂时用“/”,但是在PORGRESS程序里是错误的哈!define variables.mfdtitle.i /程序头,全局变量定义等,是标准QAD的菜单程序就请加上这个,不要问为什么form with frame a. /定义格局(包含输入输出)Mainloop:repeat: prompt-for editing: /通常这里输入主要字段(如果比如订单号,料件名称等) mfnp.i /前后记录显示功能,常用 end. /* ADD/MODI/DELETE */ assign global find if not available /新记录 mfmsg.i 1 1 /类似mfmsg的子程序,都是信息提示类 create assign end. Status = stline2. update go-on (F5 or Ctrl-D)/继续维护剩余字段 if F5 or CTRL-D then do: /判断是否按了删除键,一般定义是F5或者Ctrl + D del-yn = yes. mfmsg01.i 11 1 del-yn end.End.Status input. 五、报表类程序的模板。mfdtitle.iform definition selection criteriapart colon 15 part1 colon 40 label t001.ieffdate colon 15 effdate1 colon 40 label t001.iwith frame a side-labels width 80./以上4行定义用户输入“限制报表输出”的条件,比如生效日期啊什么的repeat: if part1 = hi_char then part1 = “”. /如果用户不输任何东西,则默认最大字符或者最小字符,以下类似 if effdate = low_date then effdate = ?. if effdate1 = hi_date then effdate1 = ?. data statements selection criteria bcdparm = . mfquoter.ipart /BATCH专用,至今没用过,体会不到好处,哪位帮忙解释一下? mfquoter.ipart1 mfquoter.ieffdate mfquoter.ieffdate1 mfselbpr.i“printer” 132 /选择打印机的子程序 if part1 = “” then part1 = hi_char. if effdate = ? Then effdate = low_date. if effdate1 = ? Then effdate1 = hi_date. mfphead.i or mfphead2.i /报表头 for each display mfrpchk.i or mfrpexit.i /报表结束 end. mfrtrail.i or mftr0801.i or mfreset.i /报表结束、打印结束等end.六、查询类程序模板。这个比报表来得要简单些了:mfdtitle.iform definition selection criteriawith frame a side-labels width 80.repeat: data statement selection criteriawith frame a. mfselprt.i “terminal” 80 for each selection criteria display mfrpchk.i (max page) end. mfreset.i (scroll output) mfmsg.i 8 1end.这里先写一些常用命令:让大家见笑了。createupdate/setinsertdisplayrepeat.endfor each .enddeleteprompt-for 须与input匹配find first(last)where .= input .与using等同input with n column , with no-lable ,no-error ,not availableexceptassignmessageif .then .elsedefine variablelabel .EQ 就是的意思begins 以.开头的matches F*是通配符,以F开头的matches F 此处是与F匹配的use-index 后跟必须为表的索引,以升序来显示by .后跟任意字段,以升序显示by .descending 以降序显示by substring(lname,2,3)以lname的第2个字符起,后3个字符来升序显示of 左右表单中相同的字段作比较with 1 down一次只显示一笔hide 隐藏with frame a 定义frame a ,指定显示frameundo , retry 取消操作,恢复原有信息do:.end.组合命令attr-space 每个字段之间空格no-attr-space 无空格initial 在定义变量时赋值next下一个字段名leave 离开,推出down 可逐个向下显示,但位置不同,显示效果不同pause 暂停 , pause n 暂停n秒后自动向下viesw frame显示 frameno-box 不加外框side-labels 单行显示overlay覆盖top-only最上层显示with row 7 colon 20距顶7行,距左20列retain n保留n笔资料color display 变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 买卖合同过户补充协议
- 秸秆清运打捆日清协议书
- 喷塑加工合同协议书模板
- 拆迁用工赔偿协议书范本
- 政府签署多方协议书范本
- 163邮件群发协议书
- 彩光瓦墙面安装合同范本
- 租房中介看房费合同范本
- 承包果林出售协议书模板
- 水库合同转让协议书模板
- 2024云南师范大学辅导员招聘笔试真题
- 现代教育技术说课
- 2025年广省中考作文《走到田野去》写作指导及范文
- 产品经理绩效管理制度
- 2025年山东省中考数学试卷(含答案逐题解析)
- 慢阻肺非肺部手术麻醉管理策略
- 2025年烟台市中考历史试卷真题(含答案)
- 一例ICD置入患者的护理查房
- 2025至2030年中国露点传感器行业市场研究分析及投资前景规划报告
- 2025四川产业振兴基金投资集团有限公司招聘12人笔试参考题库附带答案详解析集合
- 护理术中配合操作规范
评论
0/150
提交评论