How would one go about converting a 4-byte alphanumeric field to a 12-hour time? Something along these line: 1600 -> 04:00 pm
Thanks!This message has been edited. Last edited by: Kerry,
Bob Neubauer bob@databuilders.com
January 14, 2013, 08:18 PM
Waz
I think you could use HINPUT to do this.
Waz...
Prod:
WebFOCUS 7.6.10/8.1.04
Upgrade:
WebFOCUS 8.2.07
OS:
Linux
Outputs:
HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!
January 14, 2013, 08:25 PM
Waz
TABLE FILE CAR
PRINT COUNTRY
COMPUTE ATIM/A4 = '1600' ;
COMPUTE TIME/HHIA = HINPUT(12,'00000000' | ATIM,8,'HHI') ;
END
January 14, 2013, 08:27 PM
Norb Eckert
Write yourself a little function that you can call from an "include" whenever you want to convert the time. I wrote this one that I use all the time:
DEFINE FUNCTION TIMEAMPM(TIMEIN/A6)
-* get the time in a left-padded 6 character string and return character string in
-* the form hh:mm am/pm. e.g. Pass '000630' and return '6:30 am'.
-* TIMEIN = string field to parse in '00HHMM' military time format.
-* get the hour and minutes as a string
HRTEMP/A2 = EDIT(TIMEIN, '$$99');
MINUTE/A2 = EDIT(TIMEIN, '$$$$99');
-* convert the hour into an integer so you can do some math and comparisons
HRTEMP1/I2 = ATODBL(HRTEMP, '02', 'I2');
-* if hr > 12 then (hr - 1) else hr
HOUR/A2 = IF HRTEMP1 GT 12 THEN FPRINT(HRTEMP1 - 12, 'I2', 'A2') ELSE HRTEMP;
-* if hr > 11 then 'pm' else 'am'
AMPM/A2 = IF HRTEMP1 GT 11 THEN 'PM' ELSE 'AM';
-* formats into hh:mm pm/am. Note this is NOT in military time
TIMEAMPM/A8 = HOUR | ':' | MINUTE | ' ' | AMPM;
END
-RUN
You can tweak it for a 4 character input variable and adding a leading zero to the output if you desire.