|
Rob,
I created a Physical Source File called QPROTOSRC and in that I created a
member named PROTO_02. This has
D PROTO_02 PR EXTPGM('PROTO_02')
D num1 15P 5
D num2 15P 5
and in my QRPGLESRC I have another member named PROTO_02, also. This has
/include QPROTOSRC(PROTO_02)
D PROTO_02 PI
D num1 15P 5
D num2 15P 5
D num3 S 15P 5
/free
num3 = num1 + num2;
dsply num3;
dsply 'DONE';
*inlr = *on;
/end-free
but I am getting an error saying..
RNF0273 Compiler not able to open the /COPY or /INCLUDE file; directive
ignored.
Am I doing something wrong here?
Jake.
On 3/28/06, rob@xxxxxxxxx <rob@xxxxxxxxx> wrote:
>
> Jake,
>
> I - Calling from a different program.
> What is often done is cutting out the
> D PROTO_02 PR EXTPGM('PROTO_02')
> D num1 15P 5
> D num2 15P 5
> and putting that into a seperate source member. Like QPROTOSRC,PROTO_02.
> And in the PROTO_02 program replace what you cut out with
> /include QPROTOSRC(PROTO_02)
> Now, in the new program that you wrote, that you want to call PROTO_02 you
> also include this:
> /include QPROTOSRC(PROTO_02)
> D nbr1 s 15p 5
> D nbr2 s like(nbr1)
> then, in your calcs you do a simple
> /free
> callp PROTO_02(nbr1:nbr2);
> or simply the implied callp
> PROTO_02(nbr1:nbr2);
>
>
> II - Subroutine
> You meant subprocedure. They are different from a subroutine. See if you
> understand this simple program named JAKE, compiled, tested.
> h dftactgrp(*no) actgrp(*caller)
> D Jake PR EXTPGM('JAKE')
> D Input1 15p 5
> D Input2 15p 5
>
> D Jake PI
> D Input1 15p 5
> D Input2 15p 5
>
> D MyCalc PR 5i 0
> D SomeNbr1 7p 2 const
> D SomeNbr2 7p 2 const
>
> D DsplyVar s 5i 0
>
> /free
> *inlr=*on;
> // Take the parameters sent to this program, use a simple
> // subprocedure to add them together and display the result.
> DsplyVar=MyCalc(Input1:Input2);
> dsply DsplyVar;
> /end-free
>
> P MyCalc B
> D MyCalc PI 5i 0
> D ThisNbr1 7p 2 const
> D ThisNbr2 7p 2 const
> /free
> return ThisNbr1 + ThisNbr2;
> /end-free
> P MyCalc E
>
> DSPJOBLOG
> CALL PGM(JAKE) PARM(X'000000000100000F' X'000000000200000F')
> DSPLY 3
>
> Rob Berendt
> --
> Group Dekko Services, LLC
> Dept 01.073
> PO Box 2000
> Dock 108
> 6928N 400E
> Kendallville, IN 46755
> http://www.dekko.com
>
>
>
>
>
> "Jake M" <jakeroc@xxxxxxxxx>
> Sent by: rpg400-l-bounces@xxxxxxxxxxxx
> 03/28/2006 02:50 PM
> Please respond to
> RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx>
>
>
> To
> "RPG programming on the AS400 / iSeries" <rpg400-l@xxxxxxxxxxxx>
> cc
>
> Subject
> Re: newbie prototype question...
>
>
>
>
>
>
> Okay, the following code snippet works.
>
> D PROTO_02 PR
> D num1 15P 5
> D num2 15P 5
>
> D PROTO_02 PI
> D num1 15P 5
> D num2 15P 5
>
>
> D num3 S 15P 5
>
> /free
> num3 = num1 + num2;
> dsply num3;
> dsply 'DONE';
> *inlr = *on;
> /end-free
> Can somebody please give me an example of how I could call this function
> from an outside program. Can it be done like Michael suggested:
>
> DIFFPROG.RPGLE
> /free
> var3 = PROTO_02(5:6);
> dsply var3;
> //var3 would have 11.
> //ofcourse var1, var2, var3 are already declared as 15 P 5(I surmise it is
> a
> language necessity).
> /end-free
>
> I was also wondering if somebody could give some sample code for a simple
> subroutine program. For example a subroutine which takes two numbers and
> gives out the product.
>
> Thanks for all the assistance.
>
> Jake.
>
>
>
>
>
>
> On 3/28/06, cozzi@xxxxxxxxx <cozzi@xxxxxxxxx> wrote:
> >
> > If someone already answered this, sorry.
> >
> >
> > Numeric parameters MUST be coded at Packed(15,5) when the program is
> to
> > be
> > called from Command Entry.
> > The only way around it is to code hex values (as Kurt illustrated).
> Use
> > a
> > CMD definition or compile the call into a CL program with variables
> > defined to match that of the RPG program.
> >
> > -BOB
> >
> >
> >
> > -------- Original Message --------
> > Subject: RE: newbie prototype question...
> > From: "Kurt Anderson" <kjanderson@xxxxxxxxxxxxx>
> > Date: Tue, March 28, 2006 12:58 pm
> > To: "RPG programming on the AS400 / iSeries"
> <rpg400-l@xxxxxxxxxxxx>
> >
> > Does this work?
> >
> > CALL PGM(MYLIB/PROTO) PARM(x'1f' x'2f')
> >
> > Our system defaults unspecified numerics to zoned, but I think it's
> a
> > system thing and some people's default to packed.
> > I suggest explicitly stating in the definition if the number is
> zoned
> > or
> > packed.
> >
> > Kurt Anderson
> > Application Developer
> > Highsmith Inc
> >
> > -----Original Message-----
> > From: rpg400-l-bounces+kjanderson=highsmith.com@xxxxxxxxxxxx
> > [mailto:rpg400-l-bounces+kjanderson=highsmith.com@xxxxxxxxxxxx] On
> > Behalf Of Jake M
> > Sent: Tuesday, March 28, 2006 10:47 AM
> > To: RPG programming on the AS400 / iSeries
> > Subject: newbie prototype question...
> >
> > I am trying to execute a simple prototype program but I keep
> getting
> > an
> > error(it compiles fine). I am calling the program as follows:
> >
> > CALL PGM(MYLIB/PROTO) PARM(1 2)
> >
> > There might be a very simple mistake I am doing..I am also looking
> > for a
> > very simple example on a subroutine program and a program which
> uses
> > /COPY.
> > Any help in this matter will be greatly appreciated.
> >
> > D addnums PR EXTPGM('PROTO')
> > D num1 1 0
> > D num2 1 0
> >
> > D addnums PI
> > D num1 1 0
> > D num2 1 0
> >
> > D num3 S 1 0
> >
> > /free
> > num3 = num1 + num2;
> > dsply num3;
> > dsply 'DONE';
> > *inlr = *on;
> > /end-free
> >
> > Error:
> >
> > D
> > Pointer or parameter error (C G D F).
> >
> > Thanks in advance,
> >
> > Jake.
> > --
> > This is the RPG programming on the AS400 / 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.
> >
> > --
> > This is the RPG programming on the AS400 / 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.
> > --
> > This is the RPG programming on the AS400 / 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.
> >
> >
> --
> This is the RPG programming on the AS400 / 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.
>
>
> --
> This is the RPG programming on the AS400 / 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 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.