2

我编写了一个程序来读取物理文件:

0002.00 A REF(USRMF)                                                                
0002.01 AR TSREC                                                                                               
0005.00 A USRID R *用户 ID                                                                                     
0006.00 A USRDT R *日期                                                                                 
0007.00 A USRTI R *time IN                                                                                 
0008.00 A USRTO R *超时                                                                                 
0009.00 AK USRID         

我允许用户输入日期、时间和超时。

当然它会复制 USRID

在我的程序中,我检查以前的最大值,如下所示:

0019.01 C *LOVAL SETLL USRTS                                                                                  
0019.03 C USRID READE USRTS 45                                               
0019.04 C 道 (*IN45='0')                                                                            
0019.05 C IF (USRDT>=MIN)                                                                           
0019.06 C MOVE USRTO MAX                                                                       
0019.07 C 移动 USRDT 最小值                                                                       
0019.08 C ENDIF                                                                                             
0019.09 C USRID READE USRTS 45                                               
0019.10 C ENDDO                                                                                             
0029.00 C ENDSR

我有以下用户:

选择 USR ID 用户名  
A0000001 SAMSUL ARIPIN MISDAR                                             
A0000002 NUR QISTINA SAFIYYAH                                             
A0000003 李彩云                                                     
A0000004 SOFFUAN SAURI   

但是当我尝试与以前的值进行比较时。我的程序只能检查 user A000000001,而不是其他用户。

如何修改程序以便检查所有用户?

4

2 回答 2

3

在第 19.01 行,为什么要使用 *LOVAL 来设置下限?在我看来,您最好使用“USRID ... SETLL”,这应该可以解决您的问题。当您 SETLL 时,您将光标定位到因子 1 中的值。当因子 1 为 *LOVAL 时,它定位到文件的开头。

然后下一个(READE)操作检索当前位置之后/的记录,并将其键值与因子 1 中指定的键进行比较。由于您定位到文件的开头,READE 将仅匹配第一个( minimum-order) 文件中的键,所以效果是只有最低的键才会起作用。

出于好奇,你为什么不以自由形式写作?比较/对比...

SETLL usrid USRTS ;
READE usrid USRTS ;
DOW Not %EOF(USRTS) ;
   IF USRDT >= MIN ;
      MAX = USRTO ;
      MIN = USRDT ;
   EndIF ;
   READE usrid USRTS ;
EndDO ;
EndSR ;
于 2012-07-30T12:53:00.003 回答
0

如果要从文件中读取所有用户记录,请将 READE 更改为仅 READ(并删除 key 参数)。

于 2012-08-01T14:29:19.907 回答