1

以下代码在 CRTBNDRPG 下编译,但在运行时仅停留在 1 个 I/O 上。

我所要做的就是 - 我们所有的表的订单号都是 8,但这个文件的订单号是 10。所以我只是创建了 2 个字段,我需要一个将其设为 8,另一个就可以了。任何想法为什么这个小程序没有起飞?

FMFHHMH    IF   E             DISK                                    
F* output file                                                        
FMFHHMHPK  O  A E             DISK                                    
D*EXTSHP           S             13  6                                
D                                                                     
C                                                                     
C                   READ      MFHHMH                                  
C                   Dow       NOT %EOF(MFHHMH)                        
C                   iF        %found                                  
c                   MOVE      MHORDR        MHORDp                    
c                   MOVE      MHZONE        MHZONE                    
C                   WRITE     MFHHMHP                                 
C                   READ      mfhhmh                                  
C                   End                                               
C                   END                                               
C                   SETON                                        LR   
4

2 回答 2

12

您已经创建了一个无限循环,其中TRUENOT %EOFFALSE%FOUND

请注意%FOUND的文档,它不反映READ操作的状态。

您的IF代码中不需要条件,因为DOW循环足以保证您有记录。

于 2013-06-10T02:42:06.660 回答
3

詹姆斯在第一个答案中所说的话是对的 .. 使用操作码 READ 您可以使用 IF %EOF 但您不能使用 IF %FOUND .... 将 %FOUND 与 CHAIN 一起使用

如果两个表的结构相似,也可以使用 sql 语句

INSERT INTO MFHHMHPK(从 MFHHMH 中选择 *,无论你想要什么)

于 2013-06-11T21:06:51.043 回答