Unless I am confused there is a nasty little bug in several places in the
subject program. If you are using it you might want to fix it. If you are
the person who maintains the tape (Sam Golob?) you might want to fix it, or
if you don't trust me, at least put a note in the program to this effect.
Consider the following subroutine, which takes as a parameter a binary SMF
Seconds*100 timestamp:
FmtHHMMSS: Procedure
Arg SecsX100Bin
SecsX100 = C2D(SecsX100Bin) /* Get to Rexx Decimal */
Hunds = RIGHT((SecsX100 // 100), 2, 0) /* Remainder Mod 100 = .hh */
Work = Trunc(SecsX100 / 100) /* Get rid of hundredths */
Secs = Right((Work // 60), 2, 0) /* Remainder Mod 60 = secs */
Work = Trunc(Work / 60) /* Get rid of seconds */
Mins = Right((Work // 60), 2, 0) /* Remainder Mod 60 = Mins */
Hours = Right(Trunc(Work / 60), 2, 0) /* Get rid of minutes=hours*/
Return Hours || ':' || Mins || ':' || Secs || . || Hunds
Do you see the bug there? ARG is short for PARSE UPPER ARG, and converting a
binary time to upper case introduces a subtle change in the value. There are
several other subroutines with the same problem.
The solution is to change that first line of code to, for example,
SecsX100Bin = Arg(1)
Someone give me a shout if I am wrong.
Charles
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN