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


  • Subject: Re: Overloading in RPG.
  • From: "Peter Dow" <pcdow@xxxxxxxxx>
  • Date: Thu, 10 May 2001 18:51:43 -0700

Hi John,

While you don't have to test for every possible combination of data type and
parameter count, you do have to define every possible valid combination by
creating a prototype for it, at least you did in the example. I was looking
for some benefit on the calling program side like fewer lines of source
code. More work in the service program though I suppose, but that's ok -- I
only have to write that once.

The main example of overloading that made sense to me was the + binary
operator being used for adding numbers or concatenating strings. That would
fit my idea of a fixed number of parms, but as you say, the compiler would
not be able to catch any invalid combinations of type. On the other hand,
with

    DDaysDur          PR             5I 0  OPDESC
    D Date1                           *
    D Date2                           *

it would be perfectly reasonable to use

    c        eval days = DaysDur(charDate1: numericDate2)
or  c        eval days = DaysDur(dateDate1: dateDate2)

since the service program could use the operational descriptors to determine
which parameter was what and convert them accordingly before doing the
actual days duration calculation. And I would not have to create a bunch of
prototypes for every possible valid combination since pretty much anything
would be valid.

Now supposing that DaysDur was written so that if you only provided one
parameter it would default the other parameter to the system date or
something, it could simply check %parms. But I suppose there are other
situations where you would want the compiler to validate the parameters
before they're passed to the service programs.

It's been a long time since I wrote a program that used the operational
descriptors, but I believe they do tell you the type of field being passed
don't they?

Regards,
Peter Dow
Dow Software Services, Inc.
909 425-0194 voice
909 425-0196 fax



----- Original Message -----
From: "John Taylor" <john.taylor@telusplanet.net>
To: <RPG400-L@midrange.com>
Sent: Thursday, May 10, 2001 1:32 PM
Subject: Re: Overloading in RPG.


> Hi Peter,
>
> Function overloading allows you to mix both the data type, and the number
of
> parameters passed on the call. Each unique combination of data types/parm
> counts creates an interface signature that allows the compiler to do some
> basic checking for us.
>
> If I tried to call DaysDur as:
>
>    Eval   Days = DaysDur(BooleanValue: ProcPointer)
>
> or
>
>    Eval   Days = DaysDur(CharDate: NumDate: ThirdDate)
>
>
> the compiler would know that can't be done because there isn't a
> corresponding interface signature. Therefore, I the programmer of
DaysDur(),
> don't have to test for every possible combination of data type and
parameter
> count.
>
> Having said that, I'll still toss in my vote for your thinly veiled
request
> for OPDESC enhancements. :)
>
>
> John Taylor
> Canada
>
> ----- Original Message -----
> From: "Peter Dow" <pcdow@yahoo.com>
> To: <RPG400-L@midrange.com>
> Sent: Thursday, May 10, 2001 13:35
> Subject: Re: Overloading in RPG.
>
>
> > Hi John, and John,
> >
> > Looks like you still end up with the same amount of source code and no
> > indication in the name of what parameters are allowed. Wouldn't you
really
> > want a prototype like
> >
> >       DDaysDur          PR             5I 0  OPDESC
> >       D Date1                           *
> >       D Date2                           *
> >
> > and hopefully have the operational descriptors tell you what type and
size
> > of parameters were actually passed on a given call?
> >
> > Peter Dow
> > Dow Software Services, Inc.
> > 909 425-0194 voice
> > 909 425-0196 fax
> >
> >
>
>
> +---
> | 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
> +---


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

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