ILE RPG - 如何将时间值转换为数值?

ILE RPG - How to convert a time value to a numeric value?

考虑以下代码:

D#TIME1           S               T                                             
D#numeric1        S              6  0                                           
D#numeric2        S              6  0                                           
D                                                                               
C                   TIME                    #numeric1                           
C                   eval      #TIME1 = %TIME(#numeric1:*HMS)                    
C                                                                               
C*                  This does not work:                                             
C                   eval      #numeric2 = %int(TIME1)                           
C*                  Errormessage: The expression contains a operator, which is not defined
C                                                                               
C                   MOVE      *ON           *INLR            

有人可以告诉我如何将 *HMS 时间值(如“07:02:22”)转换为 6 0 数值。我需要这个来比较两个时间戳。

C                   eval      #numeric2 = %dec(TIME1: *hms)  

应该可以解决问题。

您可以在 TIME 操作码的结果字段中使用时间字段。或者,要获取当前时间,您可以使用不带参数的 %TIME()。

D#TIME1           S               T
D#curTime         S               T

C                   TIME                    #curTime 
C                   IF        #TIME1 >= #curTime

或者如果以后不需要当前时间,直接在比较中使用%TIME()即可:

C                   IF        #TIME1 >= %time()