PROGRESS语言在ERP中的应用

上传人:汽*** 文档编号:497101000 上传时间:2022-10-27 格式:DOCX 页数:21 大小:79.35KB
返回 下载 相关 举报
PROGRESS语言在ERP中的应用_第1页
第1页 / 共21页
PROGRESS语言在ERP中的应用_第2页
第2页 / 共21页
PROGRESS语言在ERP中的应用_第3页
第3页 / 共21页
PROGRESS语言在ERP中的应用_第4页
第4页 / 共21页
PROGRESS语言在ERP中的应用_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《PROGRESS语言在ERP中的应用》由会员分享,可在线阅读,更多相关《PROGRESS语言在ERP中的应用(21页珍藏版)》请在金锄头文库上搜索。

1、PROGRESS言在ERP中的应用01-5-22上午11:02:00PROGRESS言PROGRESS言是一种非可视化的编程语言,符合4GL规范,具有高级语言的优点,可以进行条件选择(IF、WHERE、嵌套循环(FOR、计算(如求和、求平均)等操作,还可以直接进行打印、显示(PUTDISPLAY),并且不区分大小写。PROGRESS程序一般由4部分组成:全局变量定义、图形变量定义(一般是用户指定的查询选择条件)、输出数据的格式和主程序(如何利用数据库中的字段生成用户需要的正确数据)。全局变量的定义全局变量用DEFINEVARIABLE关键字定义。格式如下:DEFINEVARIABLEW1LIK

2、E(数据格式INTEGERCHARACTER-)DEFINEVARIALBEW2ASVARIABLE2使用AS可以直接引用已经定义好的数据格式。比如我们要把某个变量定义成和表中的字段类型一致时,可直接定义如下:DEFINEVARIALBE1AS表中定义的字段这样我们就不用再到后台数据库中去查询该字段的数据格式,提高了编程速度。如果这个变量在调用过程中也要用到,则分别定义如下:/在主过程中DEFINESHAREDVARIABLEW1LIKE(数据格式INTEGERCHARACTER)/在调用过程中DEFINENEWSHAREDVARIABLEW1LIKE(数据格式INTEGERCHARACTER

3、-)变量的主要数据类型如下表所示:数据类型缺省格式示例字符型(Character)|X(8)Dongnan日期型(Data)|99/99/9903/02/99布尔型(Logical)|Yes/NoYes|浮点型(Decimal)-,9.9912.00|整型(Integer)-,.912|图形变量的定义图型变量的定义主要是把已经定义好的变量在界面上显示出来。/*账户余额查询报表中部分源程序*/FORM/*显示一个FORM*/*定义一个相当于容器的框*/RECT-FRAMEATROW1COLUMN1.25RECT-FRAME-LABELATROW1COLUMN3NOLABELVIEW-ASTEXT

4、SIZEPIXELS1BY1SKIP(.1)/*GUI*/*把变量entity的选择条件显示出来*/entitycolon25label会计单位entity1colon50label至cnamecolon25label摘要acccolon25labelsubcolon25labelctrcolon25label账户acc1colon50label至分账户sub1colon50label至成本中心ctr1colon50label至begdtcolon25labelsubflagcolon25labelccflagcolon25labelrpt_currcolon25label生效日期enddtc

5、olon50label汇总分账户汇总成本中心,货币,“至”withframeasidelabelsattrspacewidth80NO-BOXTHREED/*GUI*/cnamecolon25label摘要第一行在窗口中的显示如下:摘要方框中是供用户输入的选择条件。报表格式的定义报表格式的定义非常简单,只要用at和to标出相对位置即可:FORM/*GUI*/header“期初借方余额”to65“期初贷方余额”to85“期间活动金额”to92“借方活动金额”to109“贷方活动金额”to128“期末借方余额”to148“期末贷方余额”to164skip“AccountDescription”at

6、1“账户摘要”at1to85to134withSTREAMIO/*GUI*/framephead1pagetopwidth186.at和to表示数据在framephead1上的相对位置。不同之处在于,at后边的数据表示从该点开始,而to后边的数据表示到该点结束。特别要注意的是,在PROGRESS,只能画横线,不能画竖线。数据处理对于数据的处理,本文主要介绍如何读取数据,以及在编程时需要注意的地方。我们以账户余额查询报表为例。当在数据库的表中查找数据时,使用下述语句:FOREACH(表)WHERE(条件)/对表中数据进行处理/对符合条件的每个数据进行处理END只访问表中指定的一个数据:FINDF

7、IRSTORLAST(表)WHERE(条件)。/对表中数据进行处理END查找条件之间用OR或者AND连接。在PROGRESS,有两对语句FIRST和FIRSTORLAST和LASTOF,这两个判断语句非常重要,常用于判断循环的开始还是结束以及循环中的分类是开始还是已经结束。FIRST(BREAQGROUP)当前的循环是循环体的第一次循环则返回TRUE如果不是则返回FALSEFIRST-OF(BREAfGROUP:当前的循环是循环中的分类的第一次循环则返回TRUE如果不是则返回FALSELAST(BREAKGROUP:当前的循环是循环体的最后循环则返回TRUE如果不是则返回FALSE;LAST-

8、OF(BREAKGROUP)当前的循环是循环中的分类的最后一次循环则返回TRUE如果不是则返回FALSE如果程序需要处理大量的数据,可以使用调用过程。调用过程可以采用*.P或者*.I文件。它们的区别在于*.I文件是包含文件,在编译时不生成相应的*.R文件;而*.P文件生成相应的*.R文件。注意:如果在过程中多次使用到同一个表,必须定义一个BUFFE略式:DEFINEBUFFERWWLIKE(表名)WWl表的别名。如果不定义BUFFER编译时将出现“TABLE无法辨别!”的警告PROGRESS编程其实很简单(一)一、变量定义。变量必须在第一次被使用之前定义,可以定义在程序的任何地方!但是通常为了

9、增加程序的可读性,变量定义都放在程序的开始处!以下是变量定义的几个实例:definevariablestr01asstringlabelDemoStringinitialhello.defvarstr02likestr01.defvardt01asdateextent5.defvarinte01asinteformat9.说明,第一行:str01是变量名,变量名不要与系统关键字重复,字符或者下划线开头,比如strModel,_Model;string表示变量类型,本例指字符型变量,其它类似的比如integer,date,logical等;label就是后续程序中对变量的描述,比如需要用户输入这

10、个变量值时,系统提示“DemoString;initial变量的初始值第二行:def和var都是简写,def是define的简写,var是variable的简写;PROGRESS支持语法简写,但是初学者最好先写全,后面有经验了再简写。like和as的不同点是:as后面直接说明变量类型,而like后面跟另外一个变量或者字段。第三行:extent5,表示该变量是数组变量。第四行:format9变量格式指定变量的格式一个最大的好处就是预留宽度,这个对变量的输入或者报表的输出都很有用的。比如年份的宽度一定是4位的,那么你就可以指定格式format9999。PROGRESS程序每行结束必须有个号!!二、

11、注释。注释就是用/*.*/,可以嵌套,比如/*-注释1/*注释2*/-*/三、记录的显示。如果进入PROGRESS编程模式以后连接了数据库,那么直接显示记录的值即可,比如:foreachTABLE_NAME:displayTABLE_NAME.end./*显示TABLE_NAME所有字段所有记录*/或者:findfirstTABLE_NAME.displayTABLE_NAME./*显示TABLE_NAME第一条记录所有字段的值*/通常显示记录值都是采用这2种方式!当然,可以按要求显示特殊的字段,比如:foreachpt_mstrwherept_modelbeginsEno-lockbreak

12、bypt_price:disppt_modelpt_price.end.这个程序看起来真的很容易明白,简单说明:1、 where后面带条件,比如=等等,这种关系符,对数字、日期或者字符串,都适用;关于条件的几种组合举例:条件1and条件2(条件1or条件2)and(条件3or条件4)not条件12、 no-lock,这是关键字,你只要记住:如果接下来的程序要对记录进行修改,那么不能加no-lock,如果不要,请加上no-lock;3、 breakby,就是按某个字段排列,默认是按这个字段的升序,如果降序则后面加上desc,比如:breakbypt_pricedesc。如果需要多次排列,那么by

13、几次就可以,比如:breakbypt_pricebypt_date另外一个常用的显示或者更新记录的语句是find!比如:findpt_mstrwherept_model=mainboardno-lockno-error.findfirstpt_mstrwherept_price=10no-error.findlastpt_mstrwherept_price=10no-error.说明:1、 where后面的条件跟foreach语句类似;2、 no-lock的作用跟foreach的no-lock也是一样的;3、 no-error,通常是find就加上,否则如果找不到满足条件的记录,系统会出错误提

14、示;而实际上,通常需要在程序自己判断结果;4、 findfirst就是定位第一天满足条件的记录;findlast定位最后一条满足条件的记录;4、还有一种叫findnext,就是定位当前记录的下一条;5、find和findfirst/findlast不同的是,find后面带的条件,通常是满足TABLE的某个唯一索引。关于foreach和find,这章你只要了解到这里就OK了!四、判断。判断最简单了,就是一个if条件then.else.,比如:ifstr01=cputhendispCPUelsedispNotCPU.当然,这个”条件“可能有很复杂的组合。如果,涉及到的动作比较多,那么做法是用do:.end.,比如ifstr01=cputhendo:str01=mycpu.dispCPU.end.elsedo:str01=mymemory.dispNotCPU.end.if支持嵌套,怎么嵌套?你自己会了!不是吗?五、循环。PROGRESS的循环功能实在令人不敢恭维,没有when没有while,没有loop、for什么的,只有一个repeat!不过,用好了这个repeat,一样实现任何功能。通常实现循环的模式:repeat:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 市场营销

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号