The %DATE, %TIME, and %TIMESTAMP built-in functions were new in V5R1. %CHAR has been enhanced to allow date, time, and timestamp parameters, with an optional format. They can be used to accomplish several things.
%DATE, %TIME, and %TIMESTAMP can be used without parameters to get the current system date, time, or timestamp: currentTime = %timestamp(); %DATE and %TIME can be used with a timestamp parameter to get the date or time part of the timestamp:
if %date(timestamp) > %date(); // if the date in the timestamp is greater than today's date %DATE, %TIME, and %TIMESTAMP can be used with a numeric or character parameter, and an optional format, to return a date, time, or timestamp:
date = %date(num : *mdy); date = %time(char : *iso0); %DATE and %TIME can be added together to return a timestamp:
timestamp = %date(numdate : *ymd) + %time(numtime : *iso); %CHAR with a date, time, or timestamp parameter can convert those types to character, in any required format:
charValue = %char(date : *eur); Here's an example of using these built-in functions to get a non-standard timestamp in the form "mm/dd/yy hh:mm:ss AM."
charTimestamp = %char(%date(ts) : *MDY/) // mm/dd/yy + ' ' + %char(%time(ts) : *HMS:) // hh:mm:ss + ' ' + %subst(%char(%time(ts): *USA): 7 : 2); // AM or PM
By the way, if you're wondering how to convert a date, time, or timestamp value to numeric, it's quite easy in V5R2 by combining %INT or %DEC with %CHAR:
numDate = %int(%char(date : *eur0); // ddmmyyyy numTS = %dec(%char(timestamp : *iso0) : 20 : 0); // yyyymmddhhmmssuuuuuu In V5R1, for dates or times, you can use the C function atoll, like this:
H bnddir('QC2LE') D atoll pr 20i 0 extproc('atoll') D string * value options(*string) /free numDate = atoll(%char(date : *eur0)); Barbara Morris can be reached by email at bmorris@ca.ibm.com.
|
You must be logged in to view or make comments on this article