ONERROR (OnError)
没
OPEN {(E)} (Open File for Processing) 开文件
Factory 1 Operation Factory 2 Result HI LO EQ
OPEN 文件名
OPEN 面目标必须前程序中已声明文件名(文件记录格式名)
OPEN 操作程序结束前前必须应CLOSE 操作
OPEN 操作文件声明时必须USROPN 关键字(详见D 行说明)
ORxx (Or) 逻辑判断—
Factory 1 Operation Factory 2 Result HI LO EQ
FLD01 IFGT FLD03
FLD01 OREQ FLD02
等价
IF FLD01>FLD03 OR FLD01FLD02
IFIFxxANDANDxx 类似RPGLE 写法ORRPG 写法ORxx 灵活
表达复杂逻辑关系鉴通常IF 语句中会OR
基ORxx果编程序方面公司项目组硬性求觉少ORxx 吧
总觉种写法逻辑关系起直接尤复杂ANDOR 时
OTHER (Otherwise Select) 分支语句判断
分支语句SELECT 起表示符合述条件时操作:
Factory 1 Operation Factory 2 Result HI LO EQ
SELECT
WHEN 条件判断1
处理语句1
WHEN 条件判断2
处理语句2
OTHER
处理语句3
ENDSL
例子中满足条件判断1 时运行处理语句1运行结束跳ENDSL 处
果满足条件判断1程序继续执行判断否满足条件判断2
满足条件判断2 时运行处理语句2跳ENDSL满足
满足条件判断2 时程序继续执读OTHER 操作码时条件运
行处理语句3(程序前满足条件判断时执行OTHER 语句
处理语句允许句
条件判断写复杂允许字段进行判断说C 语言分支语
句switch语句字段进行分支判断ILE 语言允许
字段进行判断
目前掌握测试情况述SELECT—WHENOTHER—ENDSL实
写做:
IF 条件判断1
处理语句1
ELSEIF 条件判断2
处理语句2
ELSE
处理语句3
ENDIF
WHEN ELSEIF 类似样说应该明白吧
总SELECT—ENDSL 语法尤表示分支处理时
OUT {(E)} (Write a Data Area)
没讲数域
PARM (Identify Parameters) 定义入口参数
Factory 1 Operation Factory 2 Result HI LO EQR
*ENTRY PLIST
PARM FLD01
关具体容讲解详见前面说入口参数章
允许做入口参数:普通变量结构变量数组变量
关PARMPLIST种Factory 1 Factory 2 填写变量指示器
法知道具体表示什意思知道该请补充
PLIST (Identify a Parameter List)
POST {(E)} (Post)
没
READ {(N | E)} (Read a Record) 读取记录
1 基语法:
Factory 1 Operation Factory 2 Result HI LO EQ
READ 文件记录格式名 45 46
READ面必须声明文件记录格式名
LO 指示器表示锁表指示器指定时间(CHGPFWAITRCD 项)
需读取记录锁会开LO 指示器*IN45’1’
EQ指示器否读指示器未读记录时开EQ 指示器*IN46’1’
2 文件程序中读方式声明时READ 操作会造成锁表
果文件程序中修改方式声明READ 操作成功该记录锁直执
行解锁操作(UNLOCKUPDATE)READ 该文件记录会解锁
果文件修改方式声明希READ 操作锁表时READ(N)
Factory 1 Operation Factory 2 Result HI LO EQ
READ(N) 文件记录格式名 45 46
样读文件会锁记录时修改记录果需修改记录
修改前(包括文件字段赋值前)必须该记录进行次定位操作(
CHAINREAD 语句均)说果修改记录必须先锁住前记录(合
理吧)
3 执行READ 操作时程序根游标前文件中指位置序读取
条记录关游标指简单问题会章数
库相关知识中具体讲解
4 执行READ 操作时允许声明文件没键值(PF 文件)
READC {(E)} (Read Next Changed Record)
没读次修改记录?
READE {(N | E)} (Read Equal Key) 读取键值相等记录
语法READ 操作码致样里重复说:
假设程序中已声明逻辑文件PFFHSL3(键值FHS01+FHS02)
Factory 1 Operation Factory 2 Result HI LO EQ
FHSKEY KLIST
KFLD FLD01
KFLD FLD02
FHSKEY SETLL FMTFHS
DOW 11
FHSKEY READE FMTFHS 15
IF *IN15’1’
LEAVE
ENDIF
ENDDO
段话意思定义组合键值FHSKEY然根FHSKEY 逻辑文件
PFFHSL3 中定位循环读取PFFHSL3 中FHS01FHS03 FLD01FLD02 相等记
录读取记录结束键值等时退出循环(*IN15 EQ 指示器)果READE 操
作码换成READ 操作码话(然Factory 1 处值)没键值等时退出
循环层意思读记录时退出循环时逻辑文件仅仅需
排序需读键值相等记录退出循环说READ 操作码
READE 操作码需根实际求决定
Factory 1 处填写值系统处理READE 操作码Factory 1 处未填写值时
系统实际前值读条记录关键字进行较SETLL 时键
值做较(读第条记录做较)果键值等时置EQ 指示器1说
果没FHSKEY 键值相录系统直接找开EQ 指示器会直保
持正常读直找读第条记录关键字记录会开EQ 指示器
注意
READP {(N | E)} (Read Prior Record) 读取记录—游标移
简单说READREADE 操作时游标数文件中移读完第条记
录游标指第二条记录读完第二条记录游标指第三条记录类推直
条记录READP 正相反游标移读完第三条记录游标指第二条记
录读完第二条记录游标指第条记录直读完第条记录
般说READREADE 概率会READPREADPE 概率高
某情况READP 操作确会省事时间想起例子家编
程序时实践
READPE {(N | E)} (Read Prior Equal)
然没猜想应该指游标移键值读取文件READP 关系
类似READE READ 关系
REALLOC {(E)} (Reallocate Storage)
没
REL {(E)} (Release)
没
RESET {(E)} (Reset)
数结构赋值成初始值
注意初始值清空
定义结构:
D FHSDS DS
D FHS01 10 INZ(’ABCD’)
D FHS02 5 INZ(’EFGH’)
该结构赋值执行语句:
C RESET FHSDS
FHS01 会变成’ABCDFHS02 会变成’EFGH’恢复成初始值
RETURN {(H | M | R)} (Return to Caller)
RETURN 程序结束
前面简单程序流程中讲SETON LR RETURN 两句话
起做程序结束里详细解释两者间区关系:
果写RETURN写SETON LR程序执行完句会第
句开始执行造成死循环简单程序流程例子中程序原想修改读第条
记录果没RETURN 话会记录修改掉直找修改
记录然系统报错异常中断(种离奇现象现测试时写错程
序?F 写成P?写错总RETURN 表示程序结束没
RETURN程序执行语句时会结束果RETURN 出现程序中间
RETURN 面语句会执行)
果写RETURN开指示器*INLR根blogliou 说 程序会强制存
中数写磁盘中400 缺省BLOCK 输出数记录满BLOCK 块时会
组记录写磁盘果时BLOCK 没满数信息会立刻写磁盘
作业该文件读取数完整
果文件唯键字记录日志必须步写时实BLOCK 实际忽略
时会错目前MIMIX 备份客户实际文件列入日志
时写会出现述错误避免潜问题养成良编程风格建议
SETON LR RETURN 做程序结束标志然果某程序频繁调
涉文 操作时考虑开指示器*INLR仅RETURN 作结束样程序
会PURGE 出存提高调效率
果没写RETURN没开指示器*INLR编译时系统会报40 级错说找
程序结束语句放心
ROLBK {(E)} (Roll Back)
1 基语法
Factory 1 Operation Factory 2 Result
ROLBK
2 该操作码参数指事务处理进行回滚操作
3 ILE 程序中ROLBK 操作时进行允许没声明COMMIT 类型文件
情况进行ROLBK 操作(该进程前事务进行确认处理)f
4 关日志确认回滚操作面会设专门章节讲述
2845 SZ
SCAN {(E)} (Scan Character String) 扫描字符串
扫描字符字符串Factory 1 目标字符串Factory 2 中否存
Factory 1 Operation Factory 2 Result HI LO EQ
FLD01 SCAN FLD02 N 26
FLD01 字符字符变量位长位长
FLD01 FLD02 中存时EQ 指示器开*IN26’1’时FLD02 中起始
位置赋值N
FLD01 FLD02 中存时EQ 指示器保持关闭状态*IN26’0’时N0
允许FLD02 中指定位置开始检查:
FLD01 SCAN FLD022 N 26
句表示FLD02 第2 位开始扫描
实际中说判断某字符否数字先定义0—9 常量
然判断字符SCAN 常量
SELECT (Begin a Select Group) 分支语句
操作码OTHER中讲方便读者列出简单语法:
Factory 1 Operation Factory 2 Result HI LO EQ
SELECT
WHEN 条件判断1
处理语句1
WHEN 条件判断2
处理语句2
OTHER
处理语句3
ENDSL
注意SELECT 操作码必须应ENDSL 操作码否编译法通
SETGT {(E)} (Set Greater Than) 定位操作—
举例子吧假设文件中字段标识序号1234该字段1
表示第条记录该字段2表示第2 条记录:
Factory 1 Operation Factory 2 Result HI LO EQ
2 SETGT 文件记录格式名
READ 文件记录格式名
READ 操作READ 第3 条记录说SETGT 操作码会游标
定位键值第条记录前
实际中果逻辑文件读取读条记录键值相
记录需读取时SETGT需注意Factory 1 项需键值相
变量果文件字段做键值需先定义组合键值变
量然Factory 1 处填写组合键值变量名
声明文件键值项时Factory 1 项键值允许文件键值序必须
致声明文件果键值:FHS01FHS02FHS03程序中定义三类
型相变量FLD01FLD02FLD03写法效
FLDKEY KLIST
KFLD FLD01
KFLD FLD02
KFLD FLD03
FLDKEY SETGT 文件记录格式名
FLDKEY KLIST
KFLD FLD01
KFLD FLD02
FLDKEY SETGT 文件记录格式名
FLD01 SETLL 文件记录格式名
SETLL {(E)} (Set Lower Limit) 定位操作—
语法SETGT 相含义SETGT SETLL 操作码会游标定位键值相
等第条记录前例果
2 SETLL 文件记录格式名
READ 文件记录格式名
READ 操作码读记录第2 条记录吧SETGT
SETLL 操作码简单判断前键值否存记录PFFHSL3 例(键值
FHS01FHS02)
Factory 1 Operation Factory 2 Result HI LO EQ
FHSKEY KLIST
KFLD FLD01
KFLD FLD02
EVAL FLD01’01’
EVAL FLD02’02’
FHSKEY SETLL 文件记录格式名 44
文件中相应记录时EQ 指示器开*IN44’1’
文件中相应记录时EQ 指示器关闭*IN44’0’(CHAIN 正相反注意)
种法中SETLL CHAIN 区CHAIN 定位读取记录SETLL
仅仅判断该记录否存SETLL 操作修改记录法取出记录值
判断记录否存果修改记录取出记录值需读取定位操作
READREADEREADP 等(常应该READ 操作)
SETOFF (Set Indicator Off) 关闭指示器
Factory 1 Operation Factory 2 Result HI LO EQ
SETOFF 10 11 12
等价
EVAL *IN10’0’
EVAL *IN11’0’
EVAL *IN12’0’
SETOFF 操作码中指示器填HILOEQ 里没关系表示关
闭指示器
SETON (Set Indicator On) 开指示器
Factory 1 Operation Factory 2 Result HI LO EQ
SETOFF 10 11 12
等价
EVAL *IN10’1’
EVAL *IN11’1’
EVAL *IN12’1’
SETON 操作码中指示器填HILOEQ 里没关系表示关闭
指示器
SHTDN (Shut Down)
没
SORTA (Sort an Array)
没
SQRT {(H)} (Square Root) 开方
Factory 1 Operation Factory 2 Result HI LO EQ
9 SQRT 3 N
时N3(3 方9)
93 数字型变量者直接数字
SUB {(H)} (Subtract) 减法操作
Factory 1 Operation Factory 2 Result HI LO EQ
FLD01 SUB FLD02 FLD03
SUB FLD02 FLD03
前面ADDMULT 操作码里解释应该明白什意思吧
说
SUBDUR {(E)} (Subtract Duration) 日期相减
1 减日期
Factory 1 Operation Factory 2 Result HI LO EQ
FLD01 SUBDUR N*Y FLD02
表示日期型变量FLD01 减N 年赋值日期型变量FLD02 中
N 数字型变量数字N 允许负数
*Y*M*D(参数值见ADDDUR中详细解释)
2 判断两日期型变量间天月年数
Factory 1 Operation Factory 2 Result HI LO EQ
FLD01 SUBDUR FLD02 N*D
时N 做结果变量表示日期型变量FLD01 FLD02 间天数
SUBST {(P | E)} (Substring) 取字符字符串
Factory 1 Operation Factory 2 Result HI LO EQ
2 SUBST FLD013 FLD02
表示字段FLD01 第3 位开始取2 位左齐赋值字段FLD02 中
求字段FLD01 长度必须等3+2 位否程序会报错
尝试SUBST 语句等价
EVAL FLD02SUBST(FLD0132)
表示样意思
起始位数3取长度2两种写法数字型变量表达
相较SUBST 种法字符指定位置赋值厉害:
EVAL SUBST(FLD0232)’01’
吧句话说字段FLD02 第34 位(第三位开始两位长)等
01
TAG (Tag) 定义标签GOTO
Factory 1 Operation Factory 2 Result HI LO EQ
FHSTAG TAG
TEST {(D | T | Z | E)} (Test DateTimeTimestamp)
没
TESTB (Test Bit)
没
TESTN (Test Numeric)
没
TESTZ (Test Zone)
没
TIME (Time of Day) 取前系统时间
Factory 1 Operation Factory 2 Result HI LO EQ
TIME FLD01
FLD01 时间型数字型变量
UNLOCK {(E)} (Unlock a Data Area or Release a Record) 解锁
Factory 1 Operation Factory 2 Result HI LO EQ
UNLOCK 文件记录格式名
UNLOCK 解锁操作某种程度UNLOCK 视ROLBKUPDATE
视COMMIT果锁定某条记录字段进行赋值UPDATE 语句
会修改结果保存修改文件UNLOCK 语句会修改文件否认
前文件字段做赋值修改
程序执行效率讲UNLOCK 执行效率高UPDATE UPDATE
操作时系统需文件字段进行确认处理(DEBUG 时)UNLOCK
简单解锁已
UPDATE (Modify Existing Record) 修改记录
语法UNLOCK 样
里需说明执行UPDATE 时候必须先READCHAIN 等操作码锁
定条记录果未锁住记录UPDATE 操作码会报错执行UNLOCKUPDATE
ROLBK 语句时等解锁时执行UPDATE 操作码前必须次锁住记录
操作
WHEN {(M | R)} (When) 分支判断语句中条件判断
操作码OTHERSELECT中讲列出简单语法:
Factory 1 Operation Factory 2 Result HI LO EQ
SELECT
WHEN 条件判断1
处理语句1
WHEN 条件判断2
处理语句2
OTHER
处理语句3
ENDSL
WHENxx (When True Then Select)
面语法RPGLE 语法WHENxx RPG 语法
SELECT
FLD01 WHENEQ FLD02
处理语句1
……
样语法表达复杂逻辑关系时必须ANDxxORxx 起
WHENxx 操作码
WRITE (Create New Records) 写记录
常方式:
Factory 1 Operation Factory 2 Result HI LO EQ
CLEAR 文件记录格式名
EVAL 文件字段1xxxx
EVAL 文件字段2xxxx
WRITE 文件记录格式名
表示文件中写入条新记录文件需声明写
通常会文件字段赋值前作次CLEAR 操作进行初始化避免必
麻烦
XFOOT {(H)} (Sum the Elements of an Array)
没帮助表示数组字段累加统计
假设DIMDATA 定义数字型数组变量FHS01 足够数字型变量
Factory 1 Operation Factory 2 Result HI LO EQ
XFOOT DIMDATA FHS01
表示数组DIMDATA 中记录值取出汇总相加赋值数字变量
FHS01 中
XLATE {(P | E)} (Translate)
字符串中指定字符更换成外字符
举例:MYCHAR1 MYCHAR2 两20 位长字符型变量
C MOVEL 'ABCAAAC123' MYCHAR1
C 'A''9' XLATE MYCHAR1 MYCHAR2
执行语句MYCHAR2 等9BC999C123’字符串MYCHAR1 中
A变成9
XLATE 指定起始位置句更改:
C 'A''9' XLATE MYCHAR1:4 MYCHAR2
MYCHAR2 等ABC999C123指第4 位开始(含第4 位)A变成9
赋值
ZADD {(H)} (Zero and Add) 数字型变量赋值
Factory 1 Operation Factory 2 Result HI LO EQ
ZADD FLD01 FLD02
数字型变量FLD01赋值数字型变量FLD02 中
ZADDMOVE 然赋值操作码ZADD 法远没MOVE 变化
端数字型变量间赋值没什说zero
果数字型变量赋初值*ZERO
ZADD *ZERO FLD02
ZSUB {(H)} (Zero and Subtract) 0 减
Factory 1 Operation Factory 2 Result HI LO EQ
ZSUB FLD01 FLD02
等价
0 SUB FLD01 FLD02
等价
EVAL FLD02FLD01*(1)
*ALL
*ALL 意义变量举例:
EVAL FLD01*ALL’0’
表示字符型变量FLD01 赋值全’0’
CLOSE *ALL
表示关闭文件意义面
%LEN
取字符串长度举例:
(MYLEN 数字型变量FLD01 字符型变量)
EVAL MYLEN LEN(FLD01)
句话意思指取字符串FLD01 长度通常样没意义直接
LEN 操作码取字符串总长度效字符长度说FLD01 长度
2MYLEN 恒等2会变算变量FLD01 中没值取出MYLEN 等
2
LEN 通常会TRIM TRIMR 起语法面介绍
TRIMTRIMR
字符串变量中空字符意思TRIM 字符串左边空字符TRIMR
字符串右边空格
通常写程序中默认字符串变量左齐TRIMR 操作码
概率应该高点举例:
EVAL MYLEN LEN(TRIMR(FLD01))
时MYLEN指变量FLD01 中效长度(前提条件FLD01 中果值
左齐)果FLD01 空MYFLEN 0果FLD01 首位值第二位空
MYLEN 1果FLD01 两位空MYLEN 等2
果字符串左齐TRIMR
种法假设字符串FLD04 4 位长字符FLD01FLD02 2 位长字
符FLD01 等A FLD02 等BC执行:
EVAL FLD04 FLD01 + FLD01 + FLD02
FLD04 等A A 第二位第四位空加FLD02 实
效
果执行
EVAL FLD04 TRIMR(FLD01) + TRIMR(FLD01) + FLD02
FLD04 等AABC说里TRIMR(FLD01)等价单字符
A
MONITOR
监控程序信息说屏蔽掉出错信息避免程序异常中断未测试
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档