RPG AS400程序员培训手册97100.docx
《RPG AS400程序员培训手册97100.docx》由会员分享,可在线阅读,更多相关《RPG AS400程序员培训手册97100.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、8 其它 8.1 报表打印在这里,简单说一下报表。其实据说RPG 设计之初,主要就是为了解决报表问题。不过发展到现现在,在在我接触触过的系统中,觉得报表在RPPG 编编程之中中反而退退居其次次,大部部分程序都是对数数据库中磁盘文件(即即PF 文件)的的操作。报表文件其其实在某种意义上与普普通的磁磁盘文件很很类似,都都是有记记录格式式(ReecorrdFormaat),都都可以进进行写操操作(WWRITTE),RPPGLEE 的程程序对它们的操作作方式也也比较雷同。所所不同的是普普通的磁磁盘文件的的数据是是存储在数据据库中,而而报表文件件WRIITE 了之后后,是以以脱机文件(Sppooll F
2、iile)的的形式存存在。所所以在一一个库中,磁磁盘文件具具有唯一一性,即即不能有有同名的的磁盘文件;而在同同一个输输出队列中,同同名的报报表文件件(即生生成的脱脱机文件件),允允许有多个个。要做一个全全新的报报表打印印,大致致上可以以分为画报表文件件(PRRTF),与与编写打印印程序这这两部分。一、画报表表文件(PRTF)1、 新建建立一个个属性为为PRTTF的文文件,然然后使用用19 进入报表编辑状态。(即即STRRRLUU)2、 定义义一个新新的记录录格式(RRecoord Forrmatt):DRR + F188 + F100,注意意看下方方的功能能键说明3、 在一一个记录录格式之之下
3、,追追加内容容时,要在在新的编编辑行前前加“CLCC”,表表示此行行的内容,是是属于上上面记录录格式的的。4、 编辑辑行前加加:DC: 定定义常量CF: 使使当前行行的内容容居中5、 常用用功能键键:F13:标记/ 取取消标记记(光标所指的的字段)。多多试一下就就知道使使用方法法,可以以将同一行的多多个相连连的字段段标记成为一个块(对首尾两两个字段段操作FF13 即可)。高亮部分表表示已被被标记的块。F14:将已标记的的块COPPY 到到光标指定处。(其其实这个我我用得不不多)F15:将已标记的的块MOVVE到光光标指定处。(这个用得得不少)F16:删除已标记记的块。(这个用的的频率也不不少)
4、F11:定义新变量量F23:进入当前字字段的功功能菜单单画面6、 对新新变量的定定义,按F111 之之后,见见到画面面如下:Editeed llenggth . . . . . . . . . . . . : 11Recorrd fformmat . . . . . . . . . . . . : RRCD0001Numbeer oof kkeywwordds . . . . . . . . . : 0Numbeer oof iindiicattorss . . . . . . . . : 0Type chooicees, preess Entter.Fieldd . . . . . . .
5、. . . . . . . . . FLDD0011 NaameOptioon iindiicattorss . . . . . . . . . . 01-99, N001-NN99More inddicaatorrs . . . . . . . . . . N Y=YYes, N=NoStarttingg liine . . . . . . . . . . . . 1-2255Starttingg poosittionn . . . . . . . . . . 6 11-2555, +nnnLengtth oof ddataa . . . . . . . . . . . 11 1-3788,
6、 +nn, -nnn翻页,还有有:Data typpe . . . . . . . . . . . . . . 1 11=Chharaacteer2=Zonned3=Flooatiing poiint4=Opeen5=Graaphiic6=Datte7=Timme8=Timme sstammpDecimmal possitiionss . . . . . . . . . . 0-331, +n, -nnReferrencce aa fiieldd . . . . . . . . . . N YY=Yees, N=NNoUse rrefeerenncedd vaaluees . . . . .
7、. . Y Y=YYes, N=No可以采用直直接定义义长度、类型的方方法,即即在第11 页的最末末尾,LLenggth of datta 处处,填上字段长长度;如如果是字字符型,就就不需要要再填其其它内容容;如果果是数字字型,在在第2 页Deccimaalposittionns 处处填上小小数位数数。也可以采用用参照字字段的方方法(即即参照已已存在的的PF 文件中中的字段段)。如如果选用这种方法,就用用需要在在Lenngthh off daata 以及Deecimmal possitiionss 中填填写内容容,将RRefeerennce afieldd 项填为“Y”,然然后按确确认键(好好
8、象F110 键键也可以以),然然后可以以看到该该项高亮亮显示。此时再按FF10,可可进入该字段的的功能菜菜单(也可可以通过过在报表编辑状态下,直直接在当当前字段处按FF23 进入):Opt KKeywwordd Oppt KKeywwordd Oppt KKeywworddALIASS DFFT IIGCCCHRRRTTBARCOODE DLTTEDTT INNDTXXTBLKFOOLD EDTTCDEE MSSGCOONCDEFNNT EEDTWWRD PAGGNBRRCHRIDD FLLTFIIXDEEC PPRTQQLTYYCHRSIIZ FFLTPPCN REFFFLDDCOLORR
9、FNNTCHHRSEET SSKIPPACPI FFONTT SKKIPBBCVTDTTA HHIGHHLIGGHT SPAACEAADATE IGCCALTTTYPP SPPACEEBDATFMMT IIGCAANKCCNV TEXXTDATSEEP IIGCCCDEFFNT TIMME以上菜单中中,标记记为蓝色色的,是是我常用用的几个个选项。在这些选项项前面,选选2,即是是对当前字字段加注注这些功能能;选4,即是是去掉这这些功能。要参照已知知字段定定义变量,则在“REFFFLDD”选项前选2,可见Fieldd . . . . . . . . . . . . . . .Recorrd ffo
10、rmmat . . . . . . . . . .File . . . . . . . . . . . . . . .Libraary . . . . . . . . . . . . . *CURRLIBB各选项的含含义:Fieldd: 当当前变量所参参照的字字段Recorrd FFormmat: 当前前变量所参参照字段段,在PPF 文文件中所所属的记记录格式式File: PFF文件名名Libraary: PFF 文件件所在的的库名7、 其它它几个常常用功能能选项的含含义:SKIPAA:Skiip AAfteer, 在WRRITEE 操作作时,写该字段后后,自动动换页;SKIPBB:Skiip
11、 BBefoore 在WRIITE 操作时,写该字段前前,自动动换页SPACEEA:Spaace Aftter 写该字段后,再再打印一一个空格格;SPACEEB:Spaace Befforee 写该字段前前,打印印一个空空格(可可用来解解决错行问题)EDTCDDE:定定义当前字字段的显显示方式式,比如如说当前字字段为数字类型时,是否否显示逗号,前前面是补补零等等等。根据据F1 键,看Heelp 中的说明:Edit Codde DDesccripptioon NNo SSignn CRR Siign - SSignn(R) - Siggn(LL)Commaas aand zerro bbalaa
12、ncees 11 A J NNCommaas 22 B K OOZero ballancces 3 CC L PNo coommaas oor zzeroo baalanncess 4 D MM QUser deffineed eeditt coodess 5-9Date fieeld ediit WWDate ediit YYSupprresss leeadiing zerros Z二、编写打打印报表的程程序1. 对报报表文件件的声明明:FEF43322PP O E PPRINNTERR OFFLINND(*IN999)可以看到,操操作方式式是“OO”,即即只写;文件类型为为“PRIINTE
13、ER”,即即打印文文件;后面的OFFLINND 关关键字表表示该报报表文件件的换页页指示器器为99;即即写报表,当当写满一页时,*INN99 自动变为为1;然后后报表自动换换页,*INN99 再自动变变回0;其实这一项项我觉得控制制起来有有点不爽爽,所以以我通常常都是自自行控制制换页,不不用这个指示器来来判断;我常使使用的自自行控制制换页的方方法在下下面会说说明。2. 对报报表文件件的处理和磁盘文件件(DISKK)一样,报表文件件其实也有OPPEN,CLOOSE,WRIITE 的操作。不过使使用OPPEN,CLOOSE 操作时,不需需要使用用USRROPNN 关键键字。同同时也因为生成的是脱脱
14、机文件件,所以以不能进进行CHAAIN、UPDDATEE 等定定位、修修改的操操作。如果在程序序中,只只需要生生成一份份报表,那那么可以不不使用OOPENN/CLLOSEE 操作作,因为程序在在运行之之初,以以及运行行结束时,已默默认打开,关闭了一一次所有有已声明明的文件,包括报报表打印印文件。但如果程序序在运行行时,需要要生成多多份报表,那那么必须在每次生成成报表前使使用OPEN 操作;在生成成完报表后,使使用CLLOSEE 操作作,以保保证脱机文文件的完完整。在生成完当当前报表前,还还可能需需要使用用CHGGPRTTF 的的命令,将将报表生成成到指定定的输出队列列中。如如果不更更改,那那么
15、报表会会生成到到当前用用户默认的脱机机文件存存放处。当一个RPPGLEE 中,生生成多份份同名报报表时,常会会在生成成报表前使使用CHHGPRRTF,以以便于管理,避避免混乱乱。报表的操作作,也与与磁盘文件(普普通PFF 文件件)类似,在在OPEEN 与与CLOOSE 之间,对各字段进进行赋值,赋值完之之后再通通过“WRIITE 记录格式式名” 的语句,来来写指定的记录格格式。3. 自行行控制换换页在声明报表表时,可以以通过OFLLINEE 关键键字,定定义换页页指示器器,不过过可能是是换页指示器的使使用方法法我摸索索得还不够,所以以使用起起来总觉觉得不够自如。我通常是先先在报表文件件中,定定
16、义一个记录录格式(RRecoord Forrmatt),该记录录格式下下只有一个字字段,同同时这个字字段的功功能选项项处要标识为为“SKIIPA”,然然后该字段尽尽量做成不可见见字符。在在RPGGLE 程序中中,当程程序运行行逻辑上判判断需要要换页时时,WRIITE这个记录格格式,就就可以实实现换页页了(也也就是通通过字段的的SKIIPA 选项来实现换换页,当然大家也也可以使使用其它它更便捷捷的方法法,这里只是是介绍我常用用的方法法,因为为我觉得这个方法比比较稳定)。至于如何判判断换页页,当然然要看具具体报表的需需求是如如何要求求的。最最重要的的,是不不要忘记定义义一个数数字型变变量用来来统计
17、当前前页已打印印过的行数数,当大大于等于于60 行,要进行换页页处理(我我通常会会留出几几行来做做为冗余,大大家可以以自已选选择,但但肯定不不能大于66 行,否否则会自动换换页)三、几点补补充呵呵,找出出我以前前写的关关于报表打印印的贴子,做做为使用时补补充1、 关于于记录格式式其实这个本本来没什什么可说的,不不过我就经常搞错,还是说说吧。同一个记录录格式之之下,格格式应该该如下:记录格式名名0001.00+ 打印印内容0002.00+ 打印印内容0003.00+每行要有这这个+,才归属于同同一个记记录格式。如如果是个个点的话话,也就就是说明这一行并不属于该该记录格格式,如如果想让让它属于于这
18、个记录格式式,就要要用CLLC 命命令;当我们用119 编编辑的时候,如如果是33 来COPPY 记记录行,系系统经常会会自动在COPPY 处处新增一个记记录格式式,所以以要注意意。(说说来简单,但但是我最最开始画报表的时候,就就曾经被这个问题折折磨)2、 关于于变量的命命名不同的记录录格式,可可以使用用相同的的变量名。有的时候,为了少写写赋值语语句,可可以直接接将变量命名名得与PPF 中中的字段段相同。(不过我不不太喜欢欢这种做做法)如果在RPPGLEE 程序序中,给给某个变量赋值,但但没有对对相应的记录格式式进行WRITEE 操作作,编译译会不通通过,报40330 字字段未定定义的错。3、
19、 关于于打印时时会错行的问题题有的时候,打打印会错错行,比比如记录录格式定定义0001.00+ 变量A(比如如说10 个字符符长)0002.00+ 变量B(比如如说5 个字字符长)变量A 的的起始处处位于第第一列变量B 在在变量A 的下下一行,且且起始处处位于第第三列当变量A=AAAAAAAAAAAAA, 变量B=BBBBBB时,会打打印出AAAAAAAAAAAABBBBBB这很正常。但当A= A或空时,本来来我们是希望望打印出出:A(或者这这里就是是一空行行)BBBBBB这样的效果果,但是是系统就会打打印成为为BBBBBBA 或或BBBBBB (没没有打印印出空行行)也就是说,当当某一行行的
20、前面面为空时,(好好象空格格也算空空)如果果下一行行有数据据,就会会挤上来。解解决办法是在在将A 字段的的首位赋赋值为非非空;如如果想让让客户看不见,可以以考虑使用汉字指指示器。想想打印空空行,也也可以用用这个办法。又或者是将将该字段的的功能选选项加上上“SPAACEBB”,即即打印前前空一格格,也可可以解决决这个问题。(报表的这个特点点困扰我最久久)4、关于报报表的测试试其实这个东东西最简单单,不过我以前前一向很很少去留留意。以前测试报报表,尤尤其是测测试换页页的时候,都都是老老老实实的用用打印机机去打,打打出来了了再检查换页页对不对,慢不不说,还费纸纸。其实我们进进入到SPPLF 里,查看
21、刚生成的的报表文件件,右上上角就有有当前的的页数,行行数,如第1 页页第1 行,右右上角就就是1/1,第第2 页第3 行,就就是3/2,好好象页数在后后面。在“possitiion to”这里,+11 就是是下一行行,W+1 就就是向右右移一列列,慢慢慢+,就可可以看到换页是否否正确了了。8.2 SSQLRRPGLLE 在RPG/RPGGLE 程序中中,也是是可以使使用SQQL 命命令的,首首先,需需要将程程序的类类型设置为SQLRPPG 或或SQLLRPGGLE,SQLL 语句的用用法都一一样,RPGG / RPGGLE 是指非非SQLL 语句使用用什么格式。这这类程序序写完之之后与普普通的
22、RRPG/RPGGLE 程序一一样编译译,运行行。不过需要注注意,SSQLRRPG 编译时时有一个个“COMMMITT”参数数,此参参数如果果没有使使用“*NONNE”,或或“*NNC”,那那么SQLL 语句中更更改的表表将会由由系统默认加一个个COMMMITT 声明明。如果执行RRPG 程序后后没有执执行COMMMITT 操作作,那么么当时数据是是更改过过来的,但但当用户户SIGNOOFF 之后,SSQL 更改的的表数据据将会回回滚(这也是在在维护阶阶段常见的维护失误之一)。不过这个参参数只会会影响到到SQLL 语句中做做了数据据更改的的表,不不会影响响到RPPG/RRPGLLE 程程序段中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RPG AS400程序员培训手册97100 AS400 程序员 培训 手册 97100
限制150内