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



Scott,

I agree that input paramaters SHOULD use CONST, but not specifying it
won't cause errors.

As for the 2500 character limit: 'options (*varsize)' pretty much makes
the length of the parameter meaningless (in the prootype). Whether you
specify 2500, 65535 or 1 makes no difference (I prefer 1). In a procedure
interface there is a difference, but in this case there is only a
prototype.

Joep Beckeringh


rpg400-l-bounces@xxxxxxxxxxxx wrote on 08-04-2008 18:44:43:

Hi Nick,

Hi All I am having trouble with the QSNDDTAQ API when trying to
prototype it

d SndDtaQ pr extpgm('QSNDDTAQ')
d QName 10a
d QLibrary 10a
d DataLen 5s 0
d Data 2500a options(*varsize)
d Wait 5s 0 options(*nopass:*omit)

QSNDDTAQ is just a program. Like any program, it'll get fouled up if
you don't pass the parameters it's expecting. Calling QSNDDTAQ with the

wrong parameters won't work any better than calling your own RPG program

if you pass the wrong parameters. The point is: the parameters in
your prototype MUST match what the program is expecting.

IBM documents what the program is expecting at the following link:

http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/qsnddtaq.htm

The first four parameters listed on that page are in the "required
parameter group". That means you must always pass them. The first two

parameters are for the data queue name and library, and like your
prototype, they're expecting a 10-character alphanumeric variable.
However, unlike your prototype, they define the field as input-only.
You have it defined as both input and output. To make it input-only,
you should add the CONST keyword.

The third parameter is a packed decimal field, 5 digits long with zero
decimal positions. you have it defined as 5,0, but you have it as zoned

decimal (S) instead of packed decimal (P). They also have it defined as

input-only, whereas you've specified both input and output.

The fourth parameter is alphanumeric, but the API specifies that it can
be any size. You've correctly coded options(*VARSIZE) to allow other
sizes, but you've place a 2500 character limit, and I don't understand
why. Then, once again, you've specified the field as both input and
output despite that the API says it's input-only.

Then, you have a 5th parameter called "wait". I'm not sure where that
came from -- the API doesn't have this parameter.

The API has an optional parameter group that would require a 5th and 6th

parameter to be passed together. If you pass one, you have to pass
both. The parameters are for a length (which is packed 3,0) and a key
(which is char). The word "wait" doesn't really make sense for these
parameters, so I can only assume you coded it by mistake -- perhaps you
were copying the prototype for the QRCVDTAQ API, which has a wait
parameter.

Also, for some reason, you specified *OMIT on the "wait" parameter,
which the API does not allow (that would cause a null pointer to be
passed to the API -- which doesn't make sense). But this is essentially

a moot point since there isn't a "wait" parameter to begin with.

When all of this is done, your prototype should look like this:

D SndDtaQ PR ExtPgm('QSNDDTAQ')
D QName 10a const
D QLibrary 10a const
D QDataLen 5p 0 const
D Data 65535a const options(*varsize)

Summary:

a) Data len is now packed rather than zoned.
b) All parameters (which are input-only) have been coded as CONST
c) Data now allows up to 64k -- the maximum allowed in RPG at V5R4.
d) The non-existent "wait" parameter has been removed.

The CONST part isn't strictly necessary -- but why not code it? It
makes the prototype more self documenting, and lets you use constants,
expressions, and alternative data types for the parameters, and it's not

particularly difficult to type.

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.