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



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Another possibility is to actually return a structure. I've done that on
occasion. Something like

// In a copybook
D T_RTNSTRUCT DS QUALIFIED
D Success N
D Msg 128

D MethodName PR T_RTNSTRUCT
D Parm1
D Parm2

The client program declares an instance of T_RTNSTRUCT:
/COPY TheCopybook
D MyStruct DS LikeDS(T_RTNSTRUCT)

and executes the method
MyStruct = MethodName(MyParm1, MyParm2);
If MyStruct.Success;
// Process the result
...
Else;
// Something bad happened
TheMessage = MyStruct.Msg;
...
EndIf;

- --
Pete Hall
pete@xxxxxxxxxxxxxx

On 2011-02-02 15:53, Stuart Rowe wrote:
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,

A program displays 5 fields concerning a client's bank details. A
procedure exists that accepts these details as a DS and checks each field.

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
position the cursor on the first incorrectly filled information using an
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.



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAk1LY8wACgkQXczQcKdXKg6lTwCfbpi7hLeqU91O2Lsegck5F4tM
mK4AnihYB2IwUXLsaMYWRpAAxTAm5cD3
=86vh
-----END PGP SIGNATURE-----

As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.