我写了一个程序来读取物理文件:
0002.00 A REF(USRMF)0002.01 A R TSREC0005.00 USRID R*用户ID0006.00 A USRDT R*日期0007.00 A USRTI R*时间IN0008.00 A USRTO R*超时0009.00千美元
我允许用户输入日期、进入时间和退出时间。
它当然会复制USRID:
在我的程序中,我检查以前的最大值,如下所示:
0019.01 C*LOVAL SETLL美国0019.03 C USRID READE USRTS 450019.04 C DOW(*IN45='0')0019.05 C IF(USRDT>=最小值)0019.06 C移动到最大值0019.07 C移动USRDT最小值0019.08 C ENDIF0019.09 C USRID READE USRTS 450019.10 C ENDDO0029.00 C结束
我有以下用户:
选择USR ID用户名A0000001A0000002 NUR QISTINA SAFIYYAHA0000003李A0000004索福安蜥
但当我尝试与以前的值进行比较时。我的程序只能检查用户A000000001
,而不能检查其他用户。
如何修改progtam以便检查所有用户?
在第19.01行,您为什么要使用*LOVAL来设置下限?在我看来,你最好吃"USRID…SETLL",这应该能解决你的问题。SETLL时,将光标定位到因子1中的值。当Factor 1为*LOVAL时,它将定位到文件的开头。
然后,下一个(READE)操作检索当前位置之后/处的记录,并将其键值与因子1中指定的键进行比较。由于您定位在文件的开头,READE将仅与文件中的第一个(最低顺序)键匹配,因此效果是只有最低顺序的键才会起作用。
出于好奇,你为什么不以自由的形式写作?比较/对比。。。
SETLL usrid USRTS ;
READE usrid USRTS ;
DOW Not %EOF(USRTS) ;
IF USRDT >= MIN ;
MAX = USRTO ;
MIN = USRDT ;
EndIF ;
READE usrid USRTS ;
EndDO ;
EndSR ;
如果您想从文件中读取所有用户记录,请将READE更改为仅read(并删除关键参数)。