|
I am on V4R3 and can define ALWNUL on my DDS.
Be aware that null is a field attribute and not a data value!
I don't currently do anything special with *ISO dates, but here is a code
snippet that I started tinkering with:
File definitions:
A 1 10 CHAR
*ISO-D 11 20 DATE1
S 21 28 0DATE2
*ISO.T 29 36 TIME1
S 37 42 0TIME2
Z 43 68 TIMEST
P 69 71 0PACKED
B 72 75 0BINARY
*YMD/D 76 83 DATE3
Mainline:
eval NullInd=%nullind(Date1)
eval RtnCode=FmtPrtDat(Date1:
NullInd:
'MDY':
OutputDate)
Subprocedure:
* Format an ISO date for printing purposes
PFmtPrtDat b
DFmtPrtDat pi 1a
D InpISO d const datfmt(*ISO)
D InpDateNull n const
D InpDateFmt 5a const
D OutDateChr 10a
D RtnCode s 1a
D Work s 10a
D ds
D YY 2s 0
D YYchr 2a overlay(YY)
D MM 2s 0
D MMchr 2a overlay(MM)
D DD 2s 0
D DDchr 2a overlay(DD)
C Eval RtnCode=*Blanks
C If InpDateNull=*Off
C *ISO Move InpISO Work
C Eval YYchr=%subst(Work:3:2)
C Eval MMchr=%subst(Work:6:2)
C Eval DDchr=%subst(Work:9:2)
C Select
C When InpDateFmt='MDY'
C Eval OutDateChr=%trim(%editc(MM:'Z')) +
C '/' +
C %trim(%editc(DD:'X')) +
C '/' +
C %trim(%editc(YY:'X'))
C Other
C *ISO Move InpISO OutDateChr
C EndSL
C Else
C Eval OutDateChr=*Blanks
C EndIf
C Return RtnCode
PFmtPrtDat e
Output:
0001-01-01 - this has the null indicator set!
2000-01-18 1/18/00
I'm cheating a bit with the data structure and the error checking is
non-existent but you can get the idea how to convert the input date to the
desired output format. In general, folks would rather not see all 4 digits
of the year, so if we went to *ISO dates I would use a routine such as this
to convert all *ISO dates to "displayable" form. It would be pretty easy to
add checking for input format as well as adding more output formats.
Buck Calabro
Aptis; Albany, NY
> -----Original Message-----
> From: Joe Giusto
> Sent: Wednesday, January 19, 2000 12:37 PM
> To: 'RPG400-L@midrange.com'
> Subject: Date Field Printing
>
> O.K. Now that we have true date fields and have begun using them in our
> shop, we have come across an interesting problem.
>
> In the old way, when printing dates which had not been entered yet,
> nothing
> shows up because of zero suppression on the Y edit code.
>
> Now the absence of a date is stored as 0001-01-01 and that's what prints
> in
> place of what used to be nothing (or blank). It is confusing to the users
> and every time someone new sees it we have to explain it again.
>
> I have begun testing date fields to be printed and using indicators (yuck)
> to condition the field to print or not print.
>
> There's got to be a better way. Any suggestions would be appreciated.
>
> Thank you,
>
>
> Joe Giusto II
>
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.