×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
Hi Doug,
I'm not sure that I would attempt to do things the way you're doing
them. Instead, I think I'd write a routine that looks for date
separators (slashes or dashes) and uses that to determine the components
of the date. Then I'd look for "which one is 4 digits" to determine the
format. and if none are 4-digits, I'd assume MDY.
However, trying to do literally what you ask, I came up with the
following POC:
D DATETEST PR ExtPgm('DATETEST')
D date 10a const
D DATETEST PI
D date 10a const
D BAD_DATE c d'0002-02-02'
D len s 10i 0
D Result s D inz(BAD_DATE)
/free
len = %len(%trimr(date));
if len=6;
test(de) *MDY0 date;
if not %error;
result = %date(date:*MDY0);
dsply 'valid MDY';
endif;
endif;
if len=8;
test(de) *ISO0 date;
if not %error;
result = %date(date:*ISO0);
dsply 'valid ISO';
endif;
test(de) *USA0 date;
if not %error;
result = %date(date:*USA0);
dsply 'valid USA';
endif;
endif;
if len=10;
test(de) *USA date;
if not %error;
result = %date(date:*USA);
dsply 'valid USA w/seps';
endif;
endif;
if result = BAD_DATE;
dsply ('result = Invalid Date');
else;
dsply ('result = ' + %char(result:*USA/));
endif;
*inlr = *on;
/end-free
Doug Palme wrote:
I need to allow the users to enter any of the following values as a valid
date type on a display file:
010108 // Six digit date
20080101 // eight digit ISO date type
01012008 // eight digit USA date type
01/01/2008 // ten digit USA date type
As an Amazon Associate we earn from qualifying purchases.