在松江做了1个多星期的报表开发,对于以前不怎么做报表的我来说,还是有收获的.总结如下:
1. OUTPUT QUEUE的选择
DSPUSRPRF 查看OUTPUT QUEUE 如果该QUEUE的LIB并不在编程环境的LIB LIST中.那么程序生成的报表将为'FIN'状态.无法查看. 解决方法:OVRPRTF OUTQ(&OUTQ) 指定OUTQ. 虽然是件很小的事,但也迷惑了我一会.应引起注意
2. 打印中文字
(a)定义中文的输出字段时,数据类型选'O',代表DBCS-OPEN(DBCS:double-byte character set).也可以不填数据类型,由系统自行判断.
(b)指定报表User specified DBCS data参数.方法为14编译报表时,IGCDTA设为(*YES). 通过OVRPRTF设置亦可
3. overflow运用
通过overflow来控制报表换页的方法有:
(a)设置指示器,例: FSSO670P O E 79 PRINTER
当指示器79为'ON'时,代表当前打印的行数已经大于等于指定的overflow行数.此时可以选择打起始页来换页.也可以按实际情况继续往下打印,例如打页尾.但不要超过设定的纸张line数.
(b)在程序中自行计算行数.
(c)通过参数控制:
FTEST01P1 O E PRINTER INFDS(PR01DS)
F OFLIND(*IN99)
D PR01DS DS
D PR01PG 152 153B 0
D PR01OF 188 189B 0
D PR01LN 367 368B 0
D CUR_PAGE 369 372B 0
PR01OF是每页行数,一般是66,是创建打印文件时的编译参数,可用chgprtf
PR01LN是当前打印行数,
CUR_PAGE是当前页数
很可惜,此方法貌似只能运用于RPGLE.RPGIII对应的参数没找到.
4. 画线
(a) 用"----" ..... 优点:简单 缺点:难看...
(b) DFNLIN
划横线如:DFNLIN(*HRZ 40 71 10) 此线是在坐标(40 71)处开始划10个长。
划纵线如:DFNLIN(*VRT 06 02 09) 此线是在坐标(06 02)处开始划9个长。
字体放大:CHRSIZ(2 2) 此命令放大4倍,此命令好像不能缩小。
优点: 简单 缺点:位置只能固定,无法程序控制. 线的类型无法选择
(c) LINE
LINE(&FLD1 &FLD2 4.25 *VRT 0.01 *LEFT)
FLD1 5S 3P
优点: 程序可以控制定位,可以设定线的粗细等类型,可以设定线的方向
缺点: CRTPRTF时,需要设定DEVTYPE(*AFPDS)参数.而AFPDS(ADVANCE FUNCTION PRINT DATA STREAM)需要特定打印机的支持,普通的激光打印机根本无法打印.同样如此的还有BOX这个keyword
(d) APW
优点:可以设定线类型,画线与prtf分离,便于修改
缺点:需要license,位置貌似只能固定,无法程序控制
具体操作方法如下
创建一个APW格式的成员,基本语句:
1.注释:@/*
2.划线
DRAW边线
DRAWC中线
DRAWL下边线?
DRAW(线种 开始行 开始列 终了行 终了列)
线种:1细线 2粗线 3平行线 4细点线 5 粗点线 6平行点线
3.网线AMIKAKE(险种 开始行1,开始列1 。。。终了行1,终了列1)
网种 0~14
4.文字扩大ADDAPW LINE(开始行 终了行)
5.创建
CRTAPW FORMD(L02AP) 存放APW格式的记录名
FILE(TLIB/APWFORM) 存放物理文件的库名/存放APW格式的物理文件名
SRCFILE(TLIB/QAPWSRC) 存放APW成员的库名/源文件名
SRCMBR(L02AP) APW 成员名
REPLACE(*YES)
6.合并
MRGAPW FORMD(L02AP) 存放APW格式的记录名
FILE(APWFORM) 存放APW格式的物理文件名
SPLF(L02P) SPLF中的报表名
7.删除SPLF里面的报表
DLTSPLF FILE(L02P) SPLNBR(*LAST)
另外,APW可以打印条形码,参考如下:
写一个属性为APW的文件,文件里有这句
ADDAPW LINE(2) SYMBOL(115 13 CODE39 CODE39 LIBNAME)
ADDAPW LINE(行) SYMBOL(列 变量长度 FILE RECORD LIBNAME)
在(2,115)打出条形码
然后在CL里用
CRTAPW做成APW
然后MRGAPW合成.
PRT文件
- A R HED10
- A P1BCD 13A 43
- A TEXT(' バーコード ')
APW文件
- ADDAPW LINE( 4) SYMBOL(43 13 BARSET BARSETF)
写完APW后,要做成
CRTAPW FORMD(PGMXXXA) FILE(WRKLIB/APWFORM) SRCFILE(SRCLIB/QAPWSRC) SRCMBR(
PGMXXXA) CPI(12) LPI(7.5) REPLACE(*YES)
CL文件
- /* 印刷装置ファイル一時変更 */
- OVRPRTF FILE(PGMXXXP) PAGESIZE(72 80) LPI(7.5) CPI(12) OVRFLW(72)
- /* 作業票を実行 */
- CALL PGM(PGMXXX)
- /* 書式合成 */
- MRGAPW FORMD(PGMXXXA) FILE(WRKLIB/APWFORM) SPLF(PGM0XXXP) JOB(*) SPLNBR(*LAST) SCHEDULE(*FILEEND)
阅读(2076) | 评论(0) | 转发(0) |