首页 > 解决方案 > RPGLE:不成功的 READ 是否会解锁先前锁定的记录?

问题描述

这是我的问题:我在循环中有一个 READE 在这个循环中,我可以根据条件更新或不更新记录。

在这种情况下:我把序列的最后一条记录加红,它被锁定它不满足条件,所以它没有更新,所以它没有解锁程序尝试读取下一条记录,它是' t成功,但是...

我的问题是:它是否释放了另一条记录的锁定?

标签: db2lockingibm-midrangerpgle

解决方案


事实上是的,在读取失败后记录被解锁......我几乎没有时间为此创建一个肮脏的测试:程序

Fp1facll1  UF   E           k DISK                                       
D*                                                                       
Dexcmd            s            250    inz('DLYJOB DLY(10)')              
Dexlg             s             15P 5 inz(250)                           
C*                                                                       
C                   move      'F012'        adqtc4                       
C     adqtc4        setll     p1facll1                                   
C     adqtc4        reade     p1facll1                               58  
C     *in58         downe     '1'                                        
C* Update never occurs                                                   
C                   if        '0'                                        
C                   update    MEFRESM                                    
C                   endif                                                
C     adqtc4        reade     p1facll1                               58  
C                   enddo                                                
C* Wait indefinitively                                                   
C                   dow       '1'                                        
C                   call      'QCMDEXC'                                  
C                   parm                    excmd                         
C                   parm                    exlg                         
C                   enddo                                                
C                   SETON                                        LR      

第一次启动(由 SBMJOB)进入无限等待循环(正常)。没有结束程序,我第二次启动它,结束它也进入了无限循环,证明第一次没有锁定最后一条记录它成功红色,否则它应该有读取错误


推荐阅读