|
A
Hello Leslie,
Scott is correct. CONST should only be used on input parameters. It allows
you to
specify literals, and values with a size different FROM the size defined on the
prototype. Using CONST in this fashion would cause the compiler to allow a
call of the
form:
CALLP QmhSndPgmMsg('CPF9898' :
'QCPFMSG *LIBL' :
'Hello World!' :
12 :
'*ESCAPE ' :
'*' :
0 :
' ' :
errCode )
Although the compiler will allow that statement, QMHSNDPM will try and update
the
storage which currently contains the 4 blanks, resulting in at best lost values
and at
worst a runtime exception. Without the CONST on the 8th parameter, the
compiler will
complain about the use of a literal where a variable is expected.
There are a few things wrong with your prototype: ErrCode is not optional for
the
QMHSNDPM API. You should prototype the two optional parameter groups too.
Also from a
style point of view ... putting names on the parameter definition IS A GOOD
THING!
Here is my prototype for the same function. I'd be interested in comments and
criticism:
/if defined(QMHSNDPM_h)
/eof
/else
/define QMHSNDPM_h
*** START HEADER FILE SPECIFICATIONS ************************************
* *
* Header File Name . . . . : QMHSNDPM *
* *
* Descriptive Name . . . . : Send Program Message API. *
* *
* Copyright: *
* (C) Copyright FlyByNight Software Pty. Ltd. 2000 *
* All rights reserved. *
* *
* Description . . . . . . . : Header file for Send Program Message API *
* which sends a message to an invocation *
* message queue or the external message *
* queue. *
* *
* Header Files Included . . : *NONE *
* *
* Macros List . . . . . . . : *NONE *
* *
* Structure List . . . . . : *NONE *
* *
* Function Prototype List . : QMHSNDPM *
* *
* Notes: *
* Dependencies . . . . . : *
* *
* Restrictions . . . . . : *
* *
* Comments . . . . . . . : Define the macro LONG_PROC_NAMES if you *
* want meaningful procedure names. *
* *
* Change Activity: *
* Rlse & *
* Flag Reason Level Date Pgmr Comments *
* ---- -------- ------ ------ ---------- ---A-------------------------- *
* $A0= VRM310 000423 SHC New include. *
* $A1= VRM360 000423 SHC Support long sending/receiving *
* names on sender information *
* returned by RCVM0300. *
* *
* *
* Change activity detail: *
* *
*** END HEADER FILE SPECIFICATIONS **************************************
*************************************************************************
* Prototype for calling Message Handler API QMHSNDPM *
*************************************************************************
/if defined(LONG_PROC_NAMES)
QmhSndPgmMsg PR
/else
QMHSNDPM PR
/endif
EXTPGM('QMHSNDPM')
*
* Required parameter group:
* Message identifier
msgId 7 CONST
* Qualified message file name
qualMsgF 20 CONST
* Message data or text
msgDta 32767 CONST OPTIONS(*VARSIZE)
* Length of message data or text
msgDtaLen 10I 0 CONST
* Message type
msgType 10 CONST
* Call stack entry
D callStkEnt 4102 CONST
* Call stack counter
D callStkCnt 10I 0 CONST
* Message key
D msgKey 4
* Error code
D errCode 1024 OPTIONS(*VARSIZE)
*
* Optional parameter group 1:
* Length of call stack entry.
D callStkEntLen 10I 0 CONST OPTIONS(*NOPASS)
* Call stack entry
* qualification.
D callStkEntQual...
D 20 CONST OPTIONS(*NOPASS)
* Display program messages
* screen wait time.
D dspPgmMsgTime 10I 0 CONST OPTIONS(*NOPASS)
*
* Optional parameter group 2:
* Call stack entry data type.
D callStkEntType...
D 10 CONST OPTIONS(*NOPASS)
* Coded Character Set Id.
D msgDtaCCSID 10I 0 CONST OPTIONS(*NOPASS)
A
/endif
Regards,
Simon Coulter.
«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
«» FlyByNight Software AS/400 Technical Specialists «»
«» Eclipse the competition - run your business on an IBM AS/400. «»
«» «»
«» Phone: +61 3 9419 0175 Mobile: +61 0411 091 400 «»
«» Fax: +61 3 9419 0175 mailto: shc@flybynight.com.au «»
«» «»
«» Windoze should not be open at Warp speed. «»
«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
//--- forwarded letter -------------------------------------------------------
> X-Mailer: Mozilla/3.0 (compatible; StarOffice/5.2;Win32)
> Date: Mon, 17 Jul 2000 21:36:27 +0000
> From: "Leslie Russell" <leslier@datrek.com>
> To: RPG400-L@midrange.com
> Reply-To: RPG400-L@midrange.com
> Subject: How to prototype CL modules
>
> R don't know for sure but I will try to find out. I have only had a few
> problems using this prototype and that was only with the messages place
> in the call stack.
>
> >>>>>>>>>>>>>>>>>> Original Message <<<<<<<<<<<<<<<<<<
>
> On 7/17/00, 3:26:20 PM, Scott Klement <klemscot@klements.com> wrote
> regarding Re: How to prototype CL modules:
>
>
> > On Mon, 17 Jul 2000, Leslie Russell wrote:
>
> > > You could just use the QMHSNDPM API to send the message.
> > >
> > > DQMHSNDPM PR extpgm('QMHSNDPM')
> > > D 7A const
> > > D 20A const
> > > D 70A const
> > > D 10I 0 const
> > > D 10A const
> > > D 10A const
> > > D 10I 0 const
> > > D 4 const
> > > D 116A options(*nopass:*varsize)
> > >
> > >
>
> > The Message Key parameter (the "4 const" one) shouldn't be "const",
> > should it? Since thats something returned by the API?
>
+---
| 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.