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



Rory

Yes, the ellipsis declaration in C is what I have in mind.

Others have suggested writing the thing in C. Trouble is, you still have to declare a prototype in RPG, and you do not have the "unlimited" argument option that you have in C. So we are left with your 256-argument option - or some reasonable lower number.

I still like the look that emulates the IN of SQL - instead of using a pointer to whatever structure, whether linked list or array or whatever.

You are having FAR too much fun. And I appreciate you taking it on, despite those saying to do it with SQL SET or with Java - of course, emulating the look of some other language puts severe and perhaps unreasonable restrictions on it. :-)

Vern

Rory Hewitt wrote:
Vern,

When you refer to a 'varying-parameter list', do you mean the ability to
have lots of parameters (in C, decalared with ..., as with print() and
similar fuinctions) or are you talking about overloading the same function
to allow different parameter types?

As far as the former goes, it's easy enough to do - just define a function
with 256 parameters (my @IN function only has 11) and make the last 254 of
then OPTIONS(*NOPASS). Sadly, of course, this means enormous copybooks...

As far as the latter goes, I think OpDesc would allow overloading if you
have multiple different prototypes, but I haven't checked. More tinkering is
on the (near) horizon!

Rory

On Mon, Mar 8, 2010 at 6:05 AM, Vern Hamberg <vhamberg@xxxxxxxxxxx> wrote:

Personally I don't care for the linked list or vector solution - same
thing with an array. The second argument to the function has to be
populated outside the function call. Of course, that second parameter
could be a pointer by value, and then you pass whatever data types you
want to it. Not sure whether a pointer can hold operational descriptor
info for the underlying variable.

To "look" like the SQL equivalent of IN, I'd want a varying-parameter
list. This is pretty easy in C - is it called vararg? It's been too
long. But it is there. It's not simple, maybe not even possible, in RPG,
since everything has to be explicitly declared.

Vern

Schmidt, Mihael wrote:
One could also use a linked list or vector (take any implementation, f.
e. at www.rpgnextgen.com, www.tools400.de or www.bender-dv.de). Most
implementations have a procedure like list_contains(list :
search_argument).

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Terrence Enger
Sent: Friday, March 05, 2010 9:22 PM
To: RPG programming on the IBM i / System i
Subject: Re: AW: More on RPG style

On Thu, 2010-03-04 at 15:04 -0600, Vern Hamberg wrote:

Boy, I wonder if it weren't possible to write and IN() function in

RPG.

Maybe pass in the variable you are testing and have an array of the
values to test, use some way to vary the count, and return an

indicator.

Woohoo!!!

I think that the best you can do is a function working for one type, and
only allowing up to some fixed maximum number of values to test.

Meanwhile, and expression like "0 < %lookup( ... )" can sometimes
approximate what you want. Of course, sometimes you would rather have
the test values manifest in-line.

Cheers,
Terry.



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