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
This e-mail address is being protected from spam bots, you need JavaScript enabled to view it
.
|