× 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.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.