Db2 RPGLE:未成功读取是否会解锁以前锁定的记录?

Db2 RPGLE:未成功读取是否会解锁以前锁定的记录?,db2,locking,ibm-midrange,rpgle,Db2,Locking,Ibm Midrange,Rpgle,我的问题是: 我有一个循环中的READE 在这个循环中,我可以根据条件更新记录或不更新记录 在这种情况下: 我已经刷新了序列的最后一条记录,它被锁定了 它不满足条件,因此未更新,因此未解锁 程序试图读取下一条记录,但没有成功,但是 我的问题是: 它是否释放了另一条记录的锁?否。用于释放您的记录。否。用于释放您的记录。事实上,是的,在读取失败后,该记录被解锁。。。 我几乎没有时间为此创建一个肮脏的测试:程序 Fp1facll1 UF E k DISK

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

在这种情况下: 我已经刷新了序列的最后一条记录,它被锁定了 它不满足条件,因此未更新,因此未解锁 程序试图读取下一条记录,但没有成功,但是

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

否。用于释放您的记录。

否。用于释放您的记录。

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

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发布) 进入无限等待循环(正常)。
在没有结束程序的情况下,我第二次启动它,结束它进入无限循环,证明第一个没有锁定最后一条记录,它成功地变为红色,否则它应该有一个读取错误。事实上是的,在读取失败后,记录被解锁。。。 我几乎没有时间为此创建一个肮脏的测试:程序

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发布) 进入无限等待循环(正常)。
在没有结束程序的情况下,我第二次启动了它,结束它进入无限循环,证明第一次没有锁定最后一条记录,它成功地变红了,否则它应该有一个读取错误

我想相信是这样的,但是在文件上使用解锁操作码的目的是什么?在什么情况下,它会将记录保持为锁定状态?如果我只读取一条记录而不进行更新,则将使用解锁来释放该记录(如果程序仍处于活动状态)。在这种情况下,程序试图读取另一条记录,因此它解锁了另一条记录(可能是在读取之前),我想这是真的,但在文件上使用解锁操作码的目的是什么?在什么情况下,它会将记录保持为锁定状态?如果我只读取一条记录而不进行更新,则将使用解锁来释放该记录(如果程序仍处于活动状态)。在这种情况下,程序试图读取另一条记录,因此它解锁了另一条记录(可能是在读取之前)