关于AS400中的一个%函数用法
判断一个表
名字 TABLE
记录格式 TABLER
如果用%函数 %STATUS 是不是等于 01218
这个用IF 怎么写 我一直尝试 IF %STATUS(XXX) = 01218
XXX 我用了 表名 记录格式名 等等 都报错 有
*RNF0396 20 A 051800 組み込み関数 %STATUS のパラメーター XXXXXXX が正しくな
い。 %STATUS は無視されます。
XXXXX我用的是一个封装对表所有操作的程序名
有谁用过 这个%函数 麻烦告诉下用法 非常感谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
{:3_191:}
额 基本明白了 我可以什么都不用填就可以了 因为是在读完表做的判断
谢谢了
也谢谢楼上的各位了
本帖最后由 fxf_china 于 2010-07-08 17:14 编辑
ILE RPG Reference
-----------------------------------
%STATUS (Return File or Program Status)
%STATUS{(file_name)} -----如果file_name不写,应该是最近一次操作的文件
%STATUS returns the most recent value set for the program or file status.
%STATUS is set whenever the program status or any file status changes, usually
when an error occurs.
If %STATUS is used without the optional file_name parameter, then it returns the
program or file status most recently changed. If a file is specified, the value
contained in the INFDS *STATUS field for the specified file is returned. The INFDS
does not have to be specified for the file.
%STATUS starts with a return value of 00000 and is reset to 00000 before any
operation with an ’E’ extender specified begins.
%STATUS is best checked immediately after an operation with the ’E’ extender or
an error indicator specified, or at the beginning of an INFSR or the *PSSR
subroutine.
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
* The ’E’ extender indicates that if an error occurs, the error
* is to be handled as though an error indicator were coded.
* The success of the operation can then be checked using the
* %ERROR built-in function. The status associated with the error
* can be checked using the %STATUS built-in function.
/FREE
exfmt(e) InFile;
if %error;
exsr CheckError;
endif;
//-------------------------------------------------------------------
// CheckError: Subroutine to process a file I/O error
//-------------------------------------------------------------------
begsr CheckError;
select;
when %status < 01000;
// No error occurred
when %status = 01211;
// Attempted to read a file that was not open
exsr InternalError;
when %status = 01331;
// The wait time was exceeded for a READ operation
exsr TimeOut;
when %status = 01261;
// Operation to unacquired device
exsr DeviceError;
when %status = 01251;
// Permanent I/O error
exsr PermError;
other;
// Some other error occurred
exsr FileError;
endsl;
endsr;
/END-FREE
回复 3# insmile
因为01218 好像是判断 锁没锁表吧 貌似
而且是要求这么写的
回复 2# franliu
文件名 是指 TABLE 吗?
为什么不用%FOUND,%ERROR,%EOF之类的。。。。。。
回复 1# seraph0019
XXX = 文件名