What helped me to figure it out is this statement:  "A date field always
knows what it is,  you never have to tell it".
Booth Martin
-------Original Message-------
From: RPG programming on the AS400 / iSeries
Date: 06/21/05 11:56:33
To: RPG programming on the AS400 / iSeries
Subject: Re: Date conversion to Julian - RPG IV rookie..
Thanks Rick (and Scott).
DUH!  Reading (for the 12th time) from the RPG IV programmers reference:
"The second parameter is the date format for character or numeric input.
of the input format, the output is returned in *ISO format."
Note the word INPUT, not output, so even the RTFM approach got past
these old eyes....
Thanks for re-stating the obvious for me (Hey! You'd make great
Rick.Chevalier@xxxxxxxxxxxxxxx wrote:
>Your are right, the %Date statement is incorrect.
>In your post you have the value '05/28/2005' as the IFS field value.  If it
truly has the separators the statement should be
>jvDate = %Date(INvDate: *USA);
>If it doesn't have separators it would be
>jvDate = %Date(INvDate: *USA0);
>The date format parameter for the %Date BIF is the input date format not
the output format.  The output of %Date is always *ISO.  Assigning it to a
*JUL field causes it to be converted from *ISO to *JUL as well.
>-----Original Message-----
>From: rpg400-l-bounces@xxxxxxxxxxxx
>[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Pete Helgren
>Sent: Tuesday, June 21, 2005 10:13 AM
>To: RPG Midrange Discussion
>Subject: Date conversion to Julian - RPG IV rookie..
>I thought this was going to be simple but.....
>I have an application that reads through IFS records, parses out fields
>and then writes them to a physical file using SQL.  I ran into an issue
>with the date.  It comes in as MM/DD/CCYY formatted text and I need to
>get it to a Julian date (actually a 5 digit number)  So I thought the
>following would work (/FREE):
>       INvDate = GetNextFld();  //This returns the next field in the IFS
>record. In this case lets assume that it returns '05/28/2005'
>       //convert the MM/DD/CCYY text to a julian date
>       // D spec on the jvDate field is:  D jvDate
>S              6D   DATFMT(*JUL)
>      // I get an error HERE at run time  RNX0112 - The Date, Time or
>Timestamp value is not valid
>          jvDate = %Date(INvDate:*JUL0);
>      // Then convert the Julian date to char equivalent
>          vDate = %Char(jvDate);
>I am suspecting that the runtime error is occurring because the program
>is assuming *ISO for the date format and it is coming in as *USA.  I
>just don't know how to tell  %Date built in that I am formatting a date
>FROM *USA to *JUL.  Do I need to add another step so that I first
>convert the character field to *USA date and THEN convert that to a *JUL
>format? Like:
>     InvDate = GetNxtfld();
>      USAdate = %date(INvDate: *USA);
>     jvDate = %Date(USADate:*JUL);
>Again, I am a little bit new to RPG IV (liking it though) so perhaps I
>am just using %Date wrong.....
>Pete Helgren
>Privileged and Confidential.  This e-mail, and any attachments there to, is
intended only for use by the addressee(s) named herein and may contain
privileged or confidential information.  If you have received this e-mail in
error, please notify me immediately by a return e-mail and delete this
e-mail.  You are hereby notified that any dissemination, distribution or
copying of this e-mail and/or any attachments thereto, is strictly
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.

This thread ...


Return to Archive home page | Return to MIDRANGE.COM home page