免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3208 | 回复: 7
打印 上一主题 下一主题

关于AS400中的一个%函数用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-07 11:01 |只看该作者 |倒序浏览
判断一个表
名字 TABLE
记录格式 TABLER


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

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

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

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

论坛徽章:
0
2 [报告]
发表于 2010-07-07 14:37 |只看该作者
回复 1# seraph0019


    XXX = 文件名

论坛徽章:
0
3 [报告]
发表于 2010-07-07 21:20 |只看该作者
为什么不用%FOUND,%ERROR,%EOF之类的。。。。。。

论坛徽章:
0
4 [报告]
发表于 2010-07-08 17:00 |只看该作者
回复 2# franliu


    文件名 是指  TABLE 吗?

论坛徽章:
0
5 [报告]
发表于 2010-07-08 17:01 |只看该作者
回复 3# insmile


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

论坛徽章:
0
6 [报告]
发表于 2010-07-08 17:13 |只看该作者
本帖最后由 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

论坛徽章:
0
7 [报告]
发表于 2010-07-08 17:17 |只看该作者
ILE RPG Reference
-----------------------------------
%STATUS (Return File or Program Status)

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


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

谢谢了

也谢谢楼上的各位了

论坛徽章:
0
8 [报告]
发表于 2010-07-09 14:51 |只看该作者
{:3_191:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP