Hi,
Here an other trap with embedded SQL:
The following code will compile correctly, but fail at runtime with invalid
date.
H DatFmt(*ISO)
D MyDate S D DatFmt(*ISO) inz(*Loval)
D MyDS DS
...
/Free
Exec SQL Select Fld1, Fld2, Fld3
Into :DSMyFld
From MyTable
Where FldDate = :MyDate
Fetch First Row Only;
/End-Free
The SQL precompiler creates additional variables for each host variable used
in an SQL statement.
For date fields the date formats specified in the D- and H-Specs are
ignored, but the new variables get the date format specified in the compile
command CRTSQLRPGI in the option DatFmt (or in an SET OPTION - statement in
the source code).
The default value for the DATFMT in the compile command is *JOB and the
job's date format has normally a 2 digit year.
When moving MyDate into this additional variable, RPG fails, because
'0001-01-01' is out of valid range for a 2 digit year.
Mit freundlichen Grüßen / Best regards
Birgitta Hauser
"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
-----Ursprüngliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] Im
Auftrag von McGovern, Sean
Gesendet: Monday, March 31, 2008 16:01
An: RPG programming on the AS400 / iSeries
Betreff: RE: Classic Traps -- I need your input!
Yes. That's the trap !
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Robert Rogerson
Sent: 31 March 2008 14:59
To: RPG programming on the AS400 / iSeries
Subject: RE: Classic Traps -- I need your input!
Just a guess but is the statement extending past position 80?
Rob
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of McGovern, Sean
Sent: March 31, 2008 9:47 AM
To: RPG programming on the AS400 / iSeries
Subject: RE: Classic Traps -- I need your input!
Has anyone else come across this issue, or is it just me ?
Using embedded SQL that is too long. The SQL statement gets truncated, still
compiles OK but doesn't work as expected: -
C/EXEC SQL
C+ Select 1 into :MyTest From QSQPTABL Where 1=1 and 2=2 and 3=3 and 4=4
and 5=6
C/END-EXEC
In the above, 'and 5=6' will not be part of the embedded SQL statement.
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Wilt, Charles
Sent: 31 March 2008 14:37
To: RPG programming on the AS400 / iSeries
Subject: RE: Classic Traps -- I need your input!
Here's one that just bit me....
Making sure your source date matches the source date in the compiled object
when trying to debug an issue.
Charles Wilt
Software Engineer
CINTAS Corporation - IT 92B
513.701.1307
wiltc@xxxxxxxxxx
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Scott Klement
Sent: Sunday, March 30, 2008 6:48 PM
To: RPG programming on the AS400 / iSeries
Subject: Classic Traps -- I need your input!
Folks, I'm working on an article that's tentatively titled "Classic
Traps and How to Avoid Them". The general idea is to discuss the
classic mistakes that programmers make while programming, and (where
necessary) explain how to avoid that.
This can be simple things like "Don't use 10000.01 to flip dates,
because it's an obscure technique that many people won't understand,
so even though it's really neat, don't use it". But it can also be a
much more broad and sophisticated notion of a "trap".... "Don't get
into the habit of mixing business logic together with display logic.
Although it makes your program much easier to write, and the code is
much easier to follow, over time it results in a system that's very
difficult to maintain when the business wants to change something, it
becomes very slow and difficult to adapt the old system to the new
paradigm"
Or something like that.
Anyway... I would REALLY appreciate your help. What I need to do is
get together a list of the classic traps that programmers fall into.
Please send me a list of the common traps and mistakes. You can just
reply to my e-mail address directly (I don't want to dirty up the
lists too much) The e-mail address at the top of this message will
work fine.
I just want to get together a good list of classic traps so I can use
them in my article.
Thanks
--
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 e-mail transmission contains information that is intended to be
confidential and privileged. If you receive this e-mail and you are not
a named addressee you are hereby notified that you are not authorized to
read, print, retain, copy or disseminate this communication without the
consent of the sender and that doing so is prohibited and may be
unlawful. Please reply to the message immediately by informing the
sender that the message was misdirected. After replying, please delete
and otherwise erase it and any attachments from your computer system.
Your assistance in correcting this error is appreciated.
--
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 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 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.
As an Amazon Associate we earn from qualifying purchases.