Re: <No Subject Supplied>
Posted in 1994
CAVILA@zycon.com writes: > Hello again, helpful people. > Using 4gl, how do I take a SMALLINT variable and convert it to > hh:mm format? You can use modulus arithmetic: MAIN DEFINE i_secs SMALLINT DEFINE o_mins SMALLINT DEFINE o_secs SMALLINT DEFINE c_mts CHAR(7) DEFINE o_mts DATETIME MINUTE TO SECOND CLEAR SCREEN WHILE TRUE PROMPT "Enter seconds: " FOR i_secs IF i_secs IS NULL THEN EXIT WHILE END IF LET o_mins = i_secs / 60 LET o_secs = i_secs MOD 60 LET c_mts = o_mins USING "<<&&", ":", o_secs USING "&&" # the DATETIME go as high as 59:59 (3559 seconds) IF i_secs < 3600 THEN LET o_mts = c_mts END IF DISPLAY "" AT 10,1 DISPLAY i_secs USING "<<<<<&", " seconds is ", o_mins USING "<<<<<&", " minutes, ", o_secs USING "<<<<&", " seconds (", c_mts CLIPPED, ")" AT 10,1 END WHILE END MAIN ... or, you can use simple math in a loop: MAIN DEFINE i_secs SMALLINT DEFINE o_mins SMALLINT DEFINE o_secs SMALLINT DEFINE c_mts CHAR(7) DEFINE o_mts DATETIME MINUTE TO SECOND CLEAR SCREEN WHILE TRUE PROMPT "Enter seconds: " FOR i_secs IF i_secs IS NULL THEN EXIT WHILE END IF LET o_mins = 0 LET o_secs = i_secs WHILE o_secs > 59 LET o_mins = o_mins + 1 LET o_secs = o_secs - 60 END WHILE LET c_mts = o_mins USING "<<&&", ":", o_secs USING "&&" # the DATETIME go as high as 59:59 (3559 seconds) IF i_secs < 3600 THEN LET o_mts = c_mts END IF DISPLAY "" AT 10,1 DISPLAY i_secs USING "<<<<<&", " seconds is ", o_mins USING "<<<<<&", " minutes, ", o_secs USING "<<<<&", " seconds (", c_mts CLIPPED, ")" AT 10,1 END WHILE END MAIN Choice A is probably a tad faster. ============================================================ Dennis J. Pimple Informix Software Inc Senior Consultant Denver Colorado USA dennisp@informix.com Voice:303-850-0210 Fax:303-779-4025