RPGAS400程序员培训手册9
8.1 报表打印
在那个地点,简单说一下报表。事实上据说RPG 设计之初,要紧确实是为了解决报表问题。不过进展到现在,在我接触过的系统中,觉得报表在RPG 编程之中反而退居其次,大部分程
序差不多上对数据库中磁盘文件(即PF 文件)的操作。
报表文件事实上在某种意义上与一般的磁盘文件专门类似,差不多上有记录格式(Record Format),都能够进行写操作(WRITE),RPGLE 的程序对它们的操作方式也比较雷同。所
不同的是一般的磁盘文件的数据是储备在数据库中,而报表文件WRITE 了之后,是以脱机文件(Spool File)的形式存在。因此在一个库中,磁盘文件具有唯独性,即不能有同名的
磁盘文件;而在同一个输出队列中,同名的报表文件(即生成的脱机文件),承诺有多个。
要做一个全新的报表打印,大致上能够分为画报表文件(PRTF),与编写打印程序这两
部分。
一、画报表文件(PRTF)
1、新建立一个属性为PRTF的文件,然后使用19 进入报表编辑状态。(即STRRLU)
2、定义一个新的记录格式(Record Format):DR + F18 + F10,注意看下方的功能
键说明
3、在一个记录格式之下,追加内容时,要在新的编辑行前加“CLC”,表示此行
的内容,是属于上面记录格式的。
4、编辑行前加:
DC:定义常量
CF:使当前行的内容居中
5、常用功能键:
F13:
标记/ 取消标记(光标所指的字段)。多试一下就明白使用方法,能够将
同一行的多个相连的字段标记成为一个块(对首尾两个字段操作F13 即可)。高亮部分表示已被标记的块。
F14:
将已标记的块COPY 到光标指定处。(事实上那个我用得不多)
F15:
将已标记的块MOVE 到光标指定处。(那个用得许多)
F16:
删除已标记的块。(那个用的频率也许多)
F11:
培训机构出来的程序员真的强吗
定义新变量
F23:
进入当前字段的功能菜单画面
6、对新变量的定义,按F11 之后,见到画面如下:
Edited length . . . . . . . . . . . . : 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 . . . . . . . . . . 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
Decimal 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 文件中的字段)。假如选用这种
方法,就用需要在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
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 . . . . . . . . . .
File . . . . . . . . . . . . . . .
Library . . . . . . . . . . . . . *CURLIB
各选项的含义:
Field:当前变量所参照的字段
Record Format:当前变量所参照字段,在PF 文件中所属的记录格式File:PF文件名
Library:PF 文件所在的库名
7、其它几个常用功能选项的含义:
SKIPA:Skip After,在WRITE 操作时,写该字段后,自动换页;
SKIPB:Skip Before 在WRITE 操作时,写该字段前,自动换页
SPACEA:Space 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 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;
事实上这一项我觉得操纵起来有点不爽,因此我通常差不多上自行操纵换页,不用这个指示器来判定;我常使用的自行操纵换页的方法在下面会说明。
2. 对报表文件的处理

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。