|
I solved this once by using a sort of structure as an error -- a message.
Each of the messages from my application contained consistently formatted
data in the first few bytes -- that being the class of object in error (eg
"BANK") and the data element in error (eg "ROUTING_NUMBER"). My
xxxxValidate() functions would return their results via diagnostic messages
that the caller would retrieve as necessary (if they were interested).
Worked well enough from both a green caller and JAVA, which is all I needed
at the time. I figured, hey, who knows better what message to give than the
routine that determines the error? It was not too tough really as all my
i/o and validation was concentrated into a module for a given "class" of
data (like "BANK"). Sure made my green displays easier to write -- the
screen calls xxxxValidate(), if an error, fetch up all the *DIAG messages,
interrogate the data element in the message data and set an indicator
accordingly. This method also allows you to have any number of messages (or
none), unlike the array method.
Stu
On Wed, Feb 2, 2011 at 10:04, Booth Martin <booth@xxxxxxxxxxxx> wrote:
Do you have any ability to affect what comes back from the validating
procedure? If so, why not return an array of field#:errmsg#, as I
suspect there might easily be more than one error per field? Just
getting back the fact that there is an error somewhere will leave the
user fuming.
(If you haven't used error message files yet, this might be a great
place to try it out. :) )
On 2/2/2011 7:11 AM, David FOXWELL wrote:
Hi all,procedure exists that accepts these details as a DS and checks each field.
A program displays 5 fields concerning a client's bank details. A
position the cursor on the first incorrectly filled information using an
eg:
D CheckBankDetails...
D PI N
D BankDetails likeds(refDS) const
D error like(refError)
/free
If BankDetails.AccountNumber<> etc
error = 'etc..'
return *off
endif
If BankDetails.BankCode<> etc
error = 'etc..'
return *off
endif
/end-free
Caller : IF not CheckBankDetails ( DSBank );
//Now what?
Endif;
On returning from this procedure, how can the display manager program
indicator and DSPATR(PC)?
Thanks.
--
Booth Martin
802-461-5349
http://www.martinvt.com
--
This is the RPG programming on the IBM i / System i (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.
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.