RPG AS400程序员培训手册9

上传人:工**** 文档编号:565034402 上传时间:2023-01-15 格式:DOC 页数:20 大小:82KB
返回 下载 相关 举报
RPG AS400程序员培训手册9_第1页
第1页 / 共20页
RPG AS400程序员培训手册9_第2页
第2页 / 共20页
RPG AS400程序员培训手册9_第3页
第3页 / 共20页
RPG AS400程序员培训手册9_第4页
第4页 / 共20页
RPG AS400程序员培训手册9_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《RPG AS400程序员培训手册9》由会员分享,可在线阅读,更多相关《RPG AS400程序员培训手册9(20页珍藏版)》请在金锄头文库上搜索。

1、2022年-2023年建筑工程管理行业文档 齐鲁斌创作8 其它 8.1 报表打印 在这里,简单说一下报表。其实据说RPG 设计之初,主要就是为了解决报表问题。不 过发展到现在,在我接触过的系统中,觉得报表在RPG 编程之中反而退居其次,大部分程 序都是对数据库中磁盘文件(即PF 文件)的操作。 报表文件其实在某种意义上与普通的磁盘文件很类似,都是有记录格式(Record Format),都可以进行写操作(WRITE),RPGLE 的程序对它们的操作方式也比较雷同。所 不同的是普通的磁盘文件的数据是存储在数据库中,而报表文件WRITE 了之后,是以脱机 文件(Spool File)的形式存在。所

2、以在一个库中,磁盘文件具有唯一性,即不能有同名的 磁盘文件;而在同一个输出队列中,同名的报表文件(即生成的脱机文件),允许有多个。 要做一个全新的报表打印,大致上可以分为画报表文件(PRTF),与编写打印程序这两 部分。 一、画报表文件(PRTF) 1、 新建立一个属性为PRTF的文件,然后使用19 进入报表编辑状态。(即STRRLU) 2、 定义一个新的记录格式(Record Format):DR + F18 + F10,注意看下方的功能 键说明 3、 在一个记录格式之下,追加内容时,要在新的编辑行前加“CLC”,表示此行 的内容,是属于上面记录格式的。 4、 编辑行前加: DC: 定义常量

3、 CF: 使当前行的内容居中 5、 常用功能键: F13: 标记 / 取消标记(光标所指的字段)。多试一下就知道使用方法,可以将 同一行的多个相连的字段标记成为一个块(对首尾两个字段操作F13 即可)。 高亮部分表示已被标记的块。 F14: 将已标记的块COPY 到光标指定处。(其实这个我用得不多) F15: 将已标记的块MOVE 到光标指定处。(这个用得不少) F16: 删除已标记的块。(这个用的频率也不少) F11: 定义新变量 F23: 进入当前字段的功能菜单画面 6、 对新变量的定义,按F11 之后,见到画面如下: Edited length . . . . . . . . . . .

4、 . : 1 Record format . . . . . . . . . . . . : RCD001 Number of keywords . . . . . . . . . : 0 Number of indicators . . . . . . . . : 0 Type choices, press Enter. Field . . . . . . . . . . . . . . . . FLD001 Name Option indicators . . . . . . . . . . 01-99, N01-N99 More indicators . . . . . . . . .

5、. N Y=Yes, N=No Starting line . . . . . . . . . . . . 1-255 Starting position . . . . . . . . . . 6 1-255, +nn Length of data . . . . . . . . . . . 1 1-378, +nn, -nn 翻页,还有: Data type . . . . . . . . . . . . . . 1 1=Character 2=Zoned 3=Floating point 4=Open 5=Graphic 6=Date 7=Time 8=Time stamp Decima

6、l positions . . . . . . . . . . 0-31, +n, -n Reference a field . . . . . . . . . . N Y=Yes, N=No Use referenced values . . . . . . . Y Y=Yes, N=No 可以采用直接定义长度、类型的方法,即在第1 页的最末尾,Length of data 处, 填上字段长度;如果是字符型,就不需要再填其它内容;如果是数字型,在第2 页Decimal positions 处填上小数位数。 也可以采用参照字段的方法(即参照已存在的PF 文件中的字段)。如果选用这种 方法,就用

7、需要在Length of data 以及Decimal positions 中填写内容,将Reference a field 项填为“Y”,然后按确认键(好象F10 键也可以),然后可以看到该项高亮显示。 此时再按F10,可进入该字段的功能菜单(也可以通过在报表编辑状态下,直接在当前 字段处按F23 进入): Opt Keyword Opt Keyword Opt Keyword ALIAS DFT IGCCHRRTT BARCODE DLTEDT INDTXT BLKFOLD EDTCDE MSGCON CDEFNT EDTWRD PAGNBR CHRID FLTFIXDEC PRTQLTY

8、 CHRSIZ FLTPCN REFFLD COLOR FNTCHRSET SKIPA CPI FONT SKIPB CVTDTA HIGHLIGHT SPACEA DATE IGCALTTYP SPACEB DATFMT IGCANKCNV TEXT DATSEP IGCCDEFNT TIME 以上菜单中,标记为蓝色的,是我常用的几个选项。 在这些选项前面,选2,即是对当前字段加注这些功能;选4,即是去掉这些 功能。 要参照已知字段定义变量,则在“REFFLD”选项前选2,可见 Field . . . . . . . . . . . . . . . Record format . . . .

9、 . . . . . . File . . . . . . . . . . . . . . . Library . . . . . . . . . . . . . *CURLIB 各选项的含义: Field: 当前变量所参照的字段 Record Format: 当前变量所参照字段,在PF 文件中所属的记录格式 File: PF文件名 Library: PF 文件所在的库名 7、 其它几个常用功能选项的含义: SKIPA:Skip After, 在WRITE 操作时,写该字段后,自动换页; SKIPB:Skip Before 在WRITE 操作时,写该字段前,自动换页 SPACEA:Space

10、After 写该字段后,再打印一个空格; SPACEB:Space Before 写该字段前,打印一个空格(可用来解决错行问题) EDTCDE:定义当前字段的显示方式,比如说当前字段为数字类型时,是否显 示逗号,前面是补零等等。根据F1 键,看Help 中的说明: Edit Code Description No Sign CR Sign - Sign(R) - Sign(L) Commas and zero balances 1 A J N Commas 2 B K O Zero balances 3 C L P No commas or zero balances 4 D M Q User

11、 defined edit codes 5-9 Date field edit W Date edit Y Suppress leading zeros Z 二、编写打印报表的程序 1. 对报表文件的声明: FEF4322P O E PRINTER OFLIND(*IN99) 可以看到,操作方式是“O”,即只写; 文件类型为“PRINTER”,即打印文件; 后面的OFLIND 关键字表示该报表文件的换页指示器为99;即写报表,当写 满一页时,*IN99 自动变为1;然后报表自动换页,*IN99 再自动变回0; 其实这一项我觉得控制起来有点不爽,所以我通常都是自行控制换页,不用这 个指示器来判断

12、;我常使用的自行控制换页的方法在下面会说明。 2. 对报表文件的处理 和磁盘文件(DISK)一样,报表文件其实也有OPEN,CLOSE,WRITE 的操 作。不过使用OPEN,CLOSE 操作时,不需要使用USROPN 关键字。同时也因为 生成的是脱机文件,所以不能进行CHAIN、UPDATE 等定位、修改的操作。 如果在程序中,只需要生成一份报表,那么可以不使用OPEN/CLOSE 操作, 因为程序在运行之初,以及运行结束时,已默认打开,关闭了一次所有已声明的文 件,包括报表打印文件。 但如果程序在运行时,需要生成多份报表,那么必须在每次生成报表前使用 OPEN 操作;在生成完报表后,使用C

13、LOSE 操作,以保证脱机文件的完整。 在生成完当前报表前,还可能需要使用CHGPRTF 的命令,将报表生成到指定 的输出队列中。如果不更改,那么报表会生成到当前用户默认的脱机文件存放处。 当一个RPGLE 中,生成多份同名报表时,常会在生成报表前使用CHGPRTF,以 便于管理,避免混乱。 报表的操作,也与磁盘文件(普通PF 文件)类似,在OPEN 与CLOSE 之间, 对各字段进行赋值,赋值完之后再通过“WRITE 记录格式名” 的语句,来写指 定的记录格式。 3. 自行控制换页 在声明报表时,可以通过OFLINE 关键字,定义换页指示器,不过可能是换页 指示器的使用方法我摸索得还不够,所

14、以使用起来总觉得不够自如。 我通常是先在报表文件中,定义一个记录格式(Record Format),该记录格式下 只有一个字段,同时这个字段的功能选项处要标识为“SKIPA”,然后该字段尽量 做成不可见字符。在RPGLE 程序中,当程序运行逻辑上判断需要换页时,WRITE 这个记录格式,就可以实现换页了(也就是通过字段的SKIPA 选项来实现换页, 当然大家也可以使用其它更便捷的方法,这里只是介绍我常用的方法,因为我觉得 这个方法比较稳定)。 至于如何判断换页,当然要看具体报表的需求是如何要求的。最重要的,是不 要忘记定义一个数字型变量用来统计当前页已打印过的行数,当大于等于60 行, 要进行

15、换页处理(我通常会留出几行来做为冗余,大家可以自已选择,但肯定不能 大于66 行,否则会自动换页) 三、几点补充 呵呵,找出我以前写的关于报表打印的贴子,做为使用时补充 1、 关于记录格式 其实这个本来没什么可说的,不过我就经常搞错,还是说说吧。 同一个记录格式之下,格式应该如下: 记录格式名 0001.00+ 打印内容 0002.00+ 打印内容 0003.00+ 每行要有这个+,才归属于同一个记录格式。如果是个点的话,也就是说明这一行 并不属于该记录格式,如果想让它属于这个记录格式,就要用CLC 命令; 当我们用19 编辑的时候,如果是3 来COPY 记录行,系统经常会自动在COPY 处 新增一个记录格式,所以要注意。(说来简单,但是我最开始画报表的时候,就曾经被 这个问题折磨) 2、 关于变量的命名 不同的记录格式,可以使用相同的变量名。 有的时候,为了少写赋值语句,可以直接将变量命名得与PF 中的字段相同。 (不过我不太喜欢这种做法) 如果在RPGLE 程序中,给某个变量赋值,但没有对相应的记录格式进行 W

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

当前位置:首页 > 建筑/环境 > 施工组织

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