|
Huh? I wasn't using ExtProc... nor did I say anything about it in my message... I was talking about the fact that if I make a subprocedure to do QCMDEXC (exactly like the example that you gave below) it doesnt work properly for OVRDBF (or OVRxxx) because the subprocedure appears to operate on a different call level than the main program... What does this have to do with ExtProc?! On Fri, 31 Mar 2000, Stone, Brad V (TC) wrote: > The idea is to build your own subprocedure with your own parms. You don't > need to use EXTPROC. I've never done it. > > It would be something like this... > > D #QCmdExc PR > D PR_Cmd 1024 VALUE > *//////////////////////////////////////////////////////////////* > P #QCmdExc B EXPORT > *--------------------------------------------------------------* > D #QCmdExc PI > D Cmd 1024 VALUE > * > D CmdLen S 15P 5 INZ(%size(Cmd)) > *--------------------------------------------------------------* > C CALL 'QCmdExc' > C PARM Cmd > C PARM CmdLen > *--------------------------------------------------------------* > P #QCmdExc E > > That's one reason why I don't like examples that always use EXTPROC because > it doesn't teach you how subprocedures work. It just gives you code to use. > then when you want to write your own subprocedures, you don't know where to > start. > > Brad > > > -----Original Message----- > > From: Scott Klement [mailto:klemscot@klements.com] > > Sent: Friday, March 31, 2000 1:06 PM > > To: 'RPG400-L@midrange.com' > > Subject: RE: CALLB vs.CALLP > > > > > > > > The problem I always have with using a subprocedure as a wrapper for > > QCMDEXC is the call level. When I do an OVRDBF or similar command > > via my subprocedure, it doesn't work because its at a different call > > level. > > > > Sure, I could do OVRSCOPE(*JOB) but thats not a very elegant > > solution! > > > > So, I usually do a prototype with a CONST parameter for the > > command and > > the length. Then I can do something like this: > > > > C callp Cmd('OVRDBF FILE(FILEONE) > > TOFILE(FILETWO)': 200) > > > > I would certainly PREFER to not pass the length -- but havent > > found a good > > way. What am I missing? > > > > > > > > > > On Fri, 31 Mar 2000, Stone, Brad V (TC) wrote: > > > > > I never understood this example, and I've seen it from a > > lot of people. If > > > you're making a subprocedure, prototype it so you only send > > the command. > > > Not the length. You can define the length as %size(Command) in the > > > Subprocedure. > > > > > > Then, you only need to do.. > > > > > > CALLP #QcmdExc('CLRPFM FILE1') > > > > > > Much easier. And only 2 more seconds of setup. > > > > > > Other times you will definatly want to do this when making > > wrappers for > > > APIs. Sometimes they have a lot of parms you don't need to > > pass. The > > > command length on QCMDEXC is one of them. > > > > > > Brad > > +--- | 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 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.