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