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 読み取り USRTS 45                                               
0019.04 C DOW (*IN45='0')                                                                            
0019.05 C IF (USRDT>=MIN)                                                                           
0019.06 C MOVE USRTO MAX                                                                       
0019.07 C MOVE USRDT MIN                                                                       
0019.08 C ENDIF                                                                                             
0019.09 C USRID 読み取り USRTS 45                                               
0019.10 C 遠藤                                                                                             
0029.00 C ENDSR

次のユーザーがいます。

Opt USR ID ユーザー名  
A0000001 サムスル・アリピン・ミスダール                                             
A0000002 NUR QISTINA SAFIYYAH                                             
A0000003 リー・ツァエ・ユン                                                     
A0000004 ソフアン サウリ   

しかし、以前の値と比較しようとすると。私のプログラムは user のみをチェックできA000000001、他のユーザーはチェックできません。

すべてのユーザーがチェックされるようにプログラムを変更するにはどうすればよいですか?

4

2 に答える 2

3

19.01 行目で、*LOVAL を使用して下限を設定しているのはなぜですか? 「USRID ... SETLL」を使用したほうがよいように思われます。これで問題が解決するはずです。SETLL を実行すると、カーソルは係数 1 の値に位置付けられます。係数 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 ;
于 2012-07-30T12:53:00.003 に答える
0

ファイルからすべてのユーザー レコードを読み取る場合は、READE を READ のみに変更します (そして key パラメータを削除します)。

于 2012-08-01T14:29:19.907 に答える