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



Yep, anytime you use *VARSIZE, you have to have a second parm to pass in
the length so the callee knows what it has to work with (or use the Op
descriptor APIs to determine it). *VARSIZE just tells the compiler to
ignore that fact that TEXT50 isn't 32000a long. The callee still has to
know how much data was actually passed.

In most cases when dealing with text strings, *VARYING is a better choice
since it automatically includes the length.

However, VARYING alone means that every variable you want to pass in is
required to be sized as declared for the parm; 32000a in your case.

CONST (or VALUE) allows you to pass input only parms of any size; the
compiler handles building a temporary variable and passing that if needed.

It's always a good idea to use CONST or VALUE for input only parms.

It's not clear what ExtractSpecs() does with LongString. Does it really
need to be input/output?

With some more information, we can tell you what definition would make the
most sense.

Charles



On Wed, Oct 28, 2015 at 11:49 AM, Dan <dan27649@xxxxxxxxx> wrote:

I've tried a couple of variations on the code snippet below, but this is
the only one that compiled. In the example below, TEXT50 is a 50-char
length variable. Once inside the ExtractSpecs proc, LongString shows the
value of TEXT50 in the first 50 columns, but is followed by "junk".

My (apparently incorrect) understanding of Options(*Varsize) is that the
ExtractSpecs proc would "see" only the value in LongString up to the length
of the variable passed to it. The compile fails if Options(*Varsize) is
not specified. Ditto if I used the VARYING keyword.

My kludgy, hopefully temporary, workaround is to capture the length of the
first parameter and pass it as the second parameter.

Ideas / advice / specific RTFM references appreciated!

d ExtractSpecs pr
d LongString 32000a Options( *VarSize )
...
ExtractSpecs( TEXT50 ) ;
...
p ExtractSpecs b
d ExtractSpecs pi
d LongString 32000a Options( *VarSize )

- Dan
--
This is the RPG programming on the IBM i (AS/400 and 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.

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.