81 报表印
里简单说报表实说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 0199 N01N99
More indicators N YYes NNo
Starting line 1255
Starting position 6 1255 +nn
Length of data 1 1378 +nn nn
翻页:
Data type 1 1Character
2Zoned
3Floating point
4Open
5Graphic
6Date
7Time
8Time stamp
Decimal positions 031 +n n
Reference a field N YYes NNo
Use referenced values Y YYes NNo
采直接定义长度类型方法第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 59
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 报表文件处理
磁盘文件(DISK)样报表文件实OPENCLOSEWRITE 操
作OPENCLOSE 操作时需USROPN 关键字时
生成脱机文件进行CHAINUPDATE 等定位修改操作
果程序中需生成份报表OPENCLOSE 操作
程序运行初运行结束时已默认开关闭次已声明文
件包括报表印文件
果程序运行时需生成份报表必须次生成报表前
OPEN 操作生成完报表CLOSE 操作保证脱机文件完整
生成完前报表前需CHGPRTF 命令报表生成指定
输出队列中果更改报表会生成前户默认脱机文件存放处
RPGLE 中生成份名报表时常会生成报表前CHGPRTF
便理避免混乱
报表操作磁盘文件(普通PF 文件)类似OPEN CLOSE 间
字段进行赋值赋值完通WRITE 记录格式名 语句写指
定记录格式
3 行控制换页
声明报表时通OFLINE 关键字定义换页指示器换页
指示器方法摸索够起总觉够
通常先报表文件中定义记录格式(Record Format)该记录格式
字段时字段功选项处标识SKIPA然该字段量
做成见字符RPGLE 程序中程序运行逻辑判断需换页时WRITE
记录格式实现换页(通字段SKIPA 选项实现换页
然家更便捷方法里介绍常方法觉
方法较稳定)
判断换页然具体报表需求求重
忘记定义数字型变量统计前页已印行数等60 行
进行换页处理(通常会留出行做冗余家已选择肯定
66 行否会动换页)
三点补充
呵呵找出前写关报表印贴子做时补充
1 关记录格式
实没什说常搞错说说吧
记录格式格式应该:
记录格式名
000100+ 印容
000200+ 印容
000300+
行+属记录格式果点话说明行
属该记录格式果想属记录格式CLC 命令
19 编辑时候果3 COPY 记录行系统常会动COPY 处
新增记录格式注意(说简单开始画报表时候
问题折磨)
2 关变量命名
记录格式相变量名
时候少写赋值语句直接变量命名PF 中字段相
(太喜欢种做法)
果RPGLE 程序中某变量赋值没相应记录格式进行
WRITE 操作编译会通报4030 字段未定义错
3 关印时会错行问题
时候印会错行记录格式定义
000100+ 变量A(说10 字符长)
000200+ 变量B(说5 字符长)
变量A 起始处位第列
变量B 变量A 行起始处位第三列
变量A'AAAAAAAAAA' 变量B'BBBBB'时会印出
AAAAAAAAAA
BBBBB
正常
A' A'空时希印出:
A(者里空行)
BBBBB
样效果系统会印成
BBBBBA
BBBBB (没印出空行)
说某行前面空时(象空格算空)果行数会
挤解决办法A 字段首位赋值非空果想客户见考虑
汉字指示器想印空行办法
者该字段功选项加SPACEB印前空格解决
问题(报表特点困扰久)
4关报表测试
实东西简单前少留意
前测试报表尤测试换页时候老老实实印机出
检查换页慢说费纸
实进入SPLF 里查刚生成报表文件右角前页数行数
第1 页第1 行右角11第2 页第3 行32象页数面
position to里+1 行W+1 右移列慢慢+
换页否正确
82 SQLRPGLE
RPGRPGLE 程序中SQL 命令首先需程序类型设置
SQLRPG SQLRPGLESQL 语句法样RPG RPGLE 指非SQL 语句什
格式类程序写完普通RPGRPGLE 程序样编译运行
需注意SQLRPG 编译时COMMIT参数参数果没
*NONE*NCSQL 语句中更改表会系统默认加COMMIT 声明
果执行RPG 程序没执行COMMIT 操作时数更改户
SIGNOFF SQL 更改表数会回滚(维护阶段常见维护失误)
参数会影响SQL 语句中做数更改表会影响RPGRPGLE 程序段
中数
1带参数SQL:
CEXEC SQL
C+ UPDATE PFFHS SET FHS01'0' WHERE FHS02’1’
CENDEXEC
2动态游标
C******************************
C* 定义动态SQL
C******************************
CEXEC SQL
C+ PREPARE W#SQL FROM A
CENDEXEC
C*
C******************************
C* 执行动态SQL结果保存游标C1 中
C******************************
CEXEC SQL DECLARE C1 CURSOR FOR W#SQL
CENDEXEC
C*
C*
C******************************
C* 开游标C1
C******************************
CEXEC SQL
C+ OPEN C1
CENDEXEC
C*
C******************************
C* 取数
C******************************
C* SQLCOD DOUNE *ZERO
C*
CEXEC SQL
C+ FETCH C1 INTO W#FLD1
C+ W#FLD2
C+ W#FLD3
CENDEXEC
C*
C* ENDDO
C*
C******************************
C* 关闭游标C1
C******************************
CEXEC SQL
C+ CLOSE C1
CENDEXEC
83 SAVF备份恢复
SAVF全称SAVE FILE存储文件SAVF 视存储容器够指定
库指定数文件源代码保存中点类似UNIX 中TAR
SAVF 备份恢复然通常事情系统理员做果环境许
情况开发员解命令行做做备份更程序进行测试保护源
码然RESTORE 命令时定谨慎谨慎谨慎千万追求操作速度切
记切记
1 建立SAVF
SAVF首先然需建立SAVF已SAVF跳步
建立SAVF 命令:
CRTSAVF FILE(库名SAVF 名)
果建立成功会指定库中生成空SAVF
2 清空SAVF
SAVF 前必须保证SAVF 空SAVF 追加容新生成SAVF 定
空需特处理
果已存SAVF需CLRSAVF 命令确保清空SAVF
CLRSAVF FILE(库名SAVF 名)
3 指定库备份SAVF 中
备份库列命令进行备份
SAVLIB LIB(备份库名) DEV(*SAVF) SAVF(SAVF 库名SAVF 名)
ACCPTH(*YES)
ACCPTH(*YES)表示备份时备份存储路径应数文件逻辑文件
相关信息备份会增加备份时间备份空间恢复时需逻辑文件重新建
立索引省时间备份数文件建议加参数然果备份源代
码需参数
4 恢复已备份库
RSTLIB SAVLIB(备份库名) DEV(*SAVF) SAVF(SAVF 库SAVF 名)
RSTLIB(恢复库名)
RSTLIB 参数表示恢复库名默认值等备份库名说果
FHSLIB 整库备份RSTLIB 恢复果更改RSTLIB 中值
直接FHSLIB 整覆盖恢复果指定RSTLIB 值OTHERLIB备
份FHSLIB 容覆盖恢复指定OTHERLIB 库中
5 指定目标备份SAVF 中
SAVOBJ OBJ(目标名) LIB(目标库) DEV(*SAVF) SAVF(SAVF 库
SAVF 名)
次备份目标
果备份源码OBJ 表示源码SRCFILEMEMBER 项源码名
F4 键备份更目标更源码
6 恢复目标
RSTOBJ OBJ(*ALL) SAVLIB(目标库) DEV(*SAVF) SAVF(SAVF 库名SAVF 名)
RSTLIB( 恢复库名)
RSTLIB 类似然OBJ 选项*ALL表示恢复SAVF 中备份目标
指定恢复单目标
84 菜单MENU
果例子话做菜单实复杂菜单做感觉般开发
员说频率太高简单说吧
便找已存菜单应该包含DDS CMD 两种TYPECOPY
然1719 进入DDS
19 进入时编辑报表样菜单进行编辑
17 进入时Work with menu image and commands选项中选择Y然
F10 行定义条输入项应运行程序名修改
17 进入退出时系统会动提示编译菜单
成功查属性CMD源会里面定义输入项应
运行程序名
GO 菜单名进入生成菜单
85 实命令
WRKACTJOB
频率应该高吧里提法:Coding 时候断线异常
退出时登录2 进入刚编辑程序会报错正等会
直等动退出外WRKACTJOB + 10查找刚进程
(显示出命令应该STRSEU)然KILL 掉行
DSPFD
DSPFD + PF 名查文件信息包括文件MEMBER 数总记录数删
记录数CCSID 等等
DSPFD + LF 名查逻辑文件键值结合DSPDBR找出PF 文件
应LF 文件键值
DSPFD + 库名 + *MBRLIST该库文件名
命令*OUTFILE输出变成文件
LF 文件TYPE 项选择*ACCPTH该LF 文件键值果输
入设定OUTFILE条记录指明键值字段
TYPE 项选择*SELECTLF 文件筛选条件列出
灵活运命令会行编写工具基础
DSPFFD
注意面命令相差F该命令表示查PF 文件字段信息该
PF 文件少字段字段类型
DSPFD 相似DSPFFD *OUTFILE输出变成文件条记
录标识字段理灵活运众行编写工具基础
MRGSRC
较两程序差异ABA 序MRGSRC 时A 程序面B 程
序面白色方表示两程序差异
F13 表示接受前差异F17 表示接受差异F16 表示继续查找处差异
接受差异时表示B 程序更改A 程序(B 程序变)
SPLF 变成MEMBER(源文件)
必须知道SPLF 名生成SPLF JOBUSRNUMBER 名
CRTSRCPF FILE(库名SRCPF) RCDLEN(212) IGCDTA(*YES)
CHGPF FILE(库名SRCPF) CCSID(935)
CRTPF FILE(库名PF) RCDLEN(200) IGCDTA(*YES)
CPYSPLF FILE(SPLF 名) TOFILE(库名PF) +
JOB(NUMBER 名 USER 名 JOB 名) SPLNBR(*LAST)
CPYF FROMFILE(库名PF) TOFILE(库名SRCPF) +
TOMBR(MBR0001) MBROPT(*ADD) FMTOPT(*CVTSRC)
SRCPF MBR001 SPLF 转成MEMBER
然做中间转换时文件PF 文件会保留SPLF 信息
MSGF 变成SPLF
CHGSYSLIBL LIB(QSYS2989)
DSPMSGD RANGE(*FIRST *LAST) MSGF(MSGF 库名MSGF 名) +
DETAIL(*BASIC) OUTPUT(*PRINT)
CHGSYSLIBL LIB(QSYS2989) OPTION(*REMOVE)
命令结合面SPLF 变成MEMBERMSGF 搞成
MEMBER然FTP WINDOWS 方便查找已定义MSG 信息
必须权限执行CHGSYSLIBL 命令
DSPOBJD
根程序名查找编译时源代码库名SRCFILE 名
DETAIL 参数*SERVICEOBJTYPE 选项*PGM
象RPGLE 程序命令查出DSPPGM 命令
DSPPGM
根目标
DSPPGM + RPGLE 程序名参数*MODULE然选择5编
译时RPGLE 程序时源代码库名SRCFILE 名
DSPDBR
根物理文件查应逻辑文件
DSPPGMREF
查找程序PFLF 关系
PGM 参数*ALLOUTPUT 参数*OUTFILEOBJTYPE 参数*ALL
然执行输入输出文件名库然SQL 生成
文件中查找(生成程会点慢耐心)
生成文件中字段WHRFNM表示记录格式名举例说果物理文件更
改物理文件逻辑文件重新编译应程序
重新编译通常物理文件逻辑文件相记录格式名(然果算)
时需记录格式名查找SELECT * FROM 刚生成文件 WHERE
WHRFNM 记录格式名找出涉记录格式名程序
生成文件中字段WHFNAM表示文件名包括物理文件逻辑文件
说修改某逻辑文件时然需重新编译该逻辑文件关程
序说根文件名查找足够
RTVCLSRC
果编译CL 程序时刻意带*NONE 参数般说CL 程序
命令反编译具体途试试便知
RGZPFM
重整文件回收已删记录空间命令没实际
WRKMSGQ QSYSOPR
显示错误信息
CHGCMGDFT
更改某命令默认参数更改CRTPF WAITRCD 参数:
CHGCMDDFT CMD(QSYSCRTPF) NEWDFT(WAITRCD(*IMMED)’)
SBMJOB
务提交台处理
普通程序流程中果A 程序CALL B 程序A 程序必须等B 程序运
行结束会继续执行CALL 语句
果SBMJOB 话A 程序B 程序提交台运行等B
程序结行完毕直接继续运行
SBMJOB 命令仅仅表示务提交台句运行完毕仅表示
台已开始运行表示运行程序结束
Submit Job (SBMJOB)
Type choices press Enter
Command to run
Job name *JOBD Name *JOBD
Job description *USRPRF Name *USRPRF
Library Name *LIBL *CURLIB
Job queue *JOBD Name *JOBD
Library Name *LIBL *CURLIB
示第行Command to run 处填写需提交台运行命令语句(通常CALL
某程序)
Job name 表示显示屏幕运行程序名字便写标识
Job description 填写应JOBD(果想程序提交指定子系统处
填写子系统应JOBDJob queue 处填写子系统应JOBQ)果填表示默认
前户JOBDJOBQ
86 关代码风格点想法
1 绝数情况做硬性求切维护时程序易读性导
2 定程序开始简说明程序实现功输入输出参数必须
3 时变量命名:
应该算具规范性总知道时
变量代表什意思变量名长度做局限然太长通常项目
开发会明文潜规范参
4 定义时变量位置:
首次该时变量前定义时加汉字注释简单说明时变量什
情况应该赋什样值(然果途相似时变量
行注释搞定强求变量行注释)
见部分规范里面统程序开始处定义堆时变量规范
时总觉起够方便说知道时变量什时候代表什
意思该赋值等等
5 子程:
程序写流程具体处理交子程时调子程前
加注释说明子程处理功子程代码开始子程
功说明详细点
子程量写成类似CALL 程序感觉已定输入输出接
口然真输入输出接口参数子程中变量整程序中
说类似说某字段子程中需关键
字段做输入字段整子程代码中量
改值说子程功计算出金额金额
字段做输出字段子程前清零然子程前加注释说明
输入输出字段
样做意义:维护修改代码便利性COPY 代码便利性
6 视觉分隔:
RPGLE 程序写出坨坨尤IF 语句确难分清
逻辑判断底样通常代码采视觉分隔觉样直
观说代码段子程段间全行*做分隔段
长短*分隔表示情况处理表示前层IF
规律现没总结出数字化东西部分情况感觉时
间做做统计
总效果视觉处理情况隔开说
*****************
**注释
C IF XXXX
C ENDIF
*****************
种方式ENDIF较找吧
*然长点果层次单横线等号诸
类
7 注释
注释重性毋庸致疑里单指情况注释:
果写程序时某需求明确需求理解清晰
者户特意求某种情况常规方式处理者处理判断逻辑
较复杂较绕妨时想法客户求写注释中事实
少明显BUG通种注释发现__
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档