Search code examples
rexx

Rexx: increment current time value


Hi I'm running REXX script on ZOC terminal and i want to display current time and ETA like this:

start time 22:44:24
end time 22:56:24

but I don't know how to increment current time ???

maybe to convert time to seconds then increment it and then convert time in seconds back to hh:mm:ss ??

I tried this way but dont know how to convert back time from seconds

intTime= TIME('S')+900

say="start time " TIME()
say="end time " intTime

Solution

  • One way would be along the lines of:-

    intTime = TIME('S') + 900
    hours = (intTime % 3600) // 24
    minutes = (intTime // 3600) % 60
    seconds = intTime // 60
    endtime =  RIGHT(hours,2,'0') || ":" || RIGHT(minutes,2,'0') || ":" || RIGHT(seconds,2,'0')
    

    NOTE!! I don't have access to test this and it's been many years since I've written Rexx or had access. However, I think the basic process would work. That is:-

    1) Extract the hours as an integer from the time (catering for the the potential to cross into the next day or days ie the // 24 ()).

    2) Extract the minutes, as an integer, from the time, after dropping/subtracting the hours (the remainder of the time divided by hours ie intTime // 3600).

    3) Extract the seconds, as an integer, from the time. By obtaining the remaining of diving the time by 60 (will drop hours and minutes).

    4) Building the end string as a concatenation of the hours, minutes and seconds. With : as the separator between two values (or surrounding the middle values). The right function to include a leading zero.

    You could also try:-

    intTime = TIME('S',TIME('S')+900,'S')
    

    That is based upon TIME, which may be Object Rexx. I did also read something mentioning an extended TIME/DATE functionality. However, again that may have been referencing Object Rexx. Although, Mike Colishaw's name was mentioned.

    Mike Colishaw, I believe, being the creator of the Rexx programming language.