check记录是否被lock住.
我想在update记录前判断记录是否被lock; 用什么方式比较简单.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想在update记录前判断记录是否被lock; 用什么方式比较简单.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
LZ概念有没有搞清楚先?
要UPDATED的必要条件,必须是记录被锁,也就是对应之前的操作一定要有CHAIN 或者READ的动作去读到记录并且锁住记录
如果你非要说判断的话,那你UPDATE后面加个指示器去判断UPDATE是否成功
如果非要判断的话,用%status ba
在UPDATE之前会用到Chain:
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
C KEY CHAIN RFM 53
Hi位的indicator指示记录是否存在
Lo位的indicator指示记录是否正在被使用 ,*ON表示正在被使用
Eq位好象是错误指示,不太记得了
顶一下
我想他要表达的意思是之前是否有锁这条记录的
顶!
chain操作,lo指示器就是记录锁指示器。
如果别的JOB锁住某条记录,当前程序chain的时候不会等待解锁,而是直接执行下一条语句。此时lo指示器为*on
如果lo处为空,则chain语句会以阻塞的方式等待该条记录解锁,或者超时。
在程序里面判断记录是否被锁, 建一个FILE INFORMATON DATA STRUCTURE:
FMYFILE IF E K DISK
F INFDS(FIDS01)
。。。
D FIDS01 DS
D STS01 *STATUS
读记录后检查字段 STS01 的返回值,如果是 1218 就表示记录被锁。
在命令行检查,用
DSPRCDLCK 命令。
CHAIN WITH OUT LOCK 好像是CHAIN N 再相应判断指示器,具体查IBM红皮书,有例子
In older RPG you can use *PSSR. In a newer program u can use a MONITOR block.
But in usual, before update a record, we need lock it, if it is locked successful, then update it.
if locked unsuccessful, report it.