×
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.
Hello,
I think this is what you're trying to do, right?
Date8 = %dec(Date5:*ISO);
This converts the date field (d'1939-06-01') to an 8-digit numeric field
(19390601). I don't understand the rest of your message, but here are
somet things that might be useful:
a) *CYMD is a 7-digit date format where the leftmost byte is a 0 for
1900, 1 for 2000, 2 for 2100, etc. Since your output is an 8-digit
number, this probably isn't what you want.
b) %char() converts a date to a character field. %uns() converts a
field to an unsigned integer field. Your data is in a packed field, so
your original code does 3 conversions: date to character, character to
unsigned, and unsigned to packed. %DEC just converts straight to packed.
c) In V5R1 and V5R2, the %dec() BIF didn't take a date as input, but the
%char() BIF did. So code from the V5R2 days will often show
%int(%char(date)) or %uns(%char(date)). In V5R1, you couldn't use %int
or %uns that way, so you'd use atoi(%char(date)) or atoll(%char(date))
which accomplishes the same thing. In V5R3 and later, just use %DEC.
d) I don't understand the part of your note where you say "I have to use
the 3 digit format". *CYMD returns a 3-digit year -- but you don't
HAVE to use *CYMD, unless you have some business requirement to do so.
Do you? If so, you probably don't want to use an 8 digit packed number
to store the result, since that's likely to confuse the next guy, who
will doubtless expect an 8-digit date to be in the 8-digit field.
Chandana Silva wrote:
We are on V5R4 and I am not sure, if this is a PTF issue.
I searched the net but couldn't come closer.
Here is the code:
D Date5 S D INZ(D'1939-06-01')
D Date8 S 8 0 INZ(20080101)
Date8 = %Uns(%char(Date5:*CYMD0))
DATE8 = 00390601
Per IBM I have to use the 3 Digit format for this but result is not good for a 8 digit field but good for 6 digit.
My objective is to get the DATE8 = 19390601 in the simplest Date format.
Any suggestions would be greatly appreciated.
As an Amazon Associate we earn from qualifying purchases.