关于AS400中的一个%函数用法

发布于 2022-08-29 07:10:22 字数 718 浏览 12 评论 7

判断一个表
名字 TABLE
记录格式 TABLER

如果用%函数   %STATUS   是不是等于 01218

这个用IF 怎么写  我一直尝试   IF       %STATUS(XXX) = 01218

XXX 我用了 表名 记录格式名 等等 都报错  有
*RNF0396 20 A      051800   組み込み関数 %STATUS のパラメーター XXXXXXX が正しくな   
                            い。 %STATUS は無視されます。                           
XXXXX我用的是一个封装对表所有操作的程序名

有谁用过 这个%函数 麻烦告诉下用法  非常感谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

半岛未凉 2022-09-10 05:12:02

{:3_191:}

不弃不离 2022-09-10 05:11:51

ILE RPG Reference
-----------------------------------
%STATUS (Return File or Program Status)

% ...
fxf_china 发表于 2010-07-08 17:13

额 基本明白了  我可以什么都不用填就可以了 因为是在读完表做的判断

谢谢了

也谢谢楼上的各位了

动次打次papapa 2022-09-10 04:47:54

本帖最后由 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

許願樹丅啲祈禱 2022-09-10 04:28:18

回复 3# insmile

    因为01218 好像是判断 锁没锁表吧  貌似  
而且是要求这么写的

看海 2022-09-07 17:00:35

回复 2# franliu

    文件名 是指  TABLE 吗?

泛泛之交 2022-09-06 20:06:01

为什么不用%FOUND,%ERROR,%EOF之类的。。。。。。

铃予 2022-09-05 20:57:05

回复 1# seraph0019

    XXX = 文件名

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文