|
This is a good question, and one I have contemplated myself. Why do an override in CL instead of using USROPN in an RPG program? There are a few reasons I can think of. 1. Easier to maintain. Easier to find the CL program and see the OVRDBF and change it then to find the same thing in an RPG program (finding the USROPN, tracking the point in the program where the OPEN opcode is used, finding out where QCMDEXC is called and then finding out what parameters are passed, then finding out where the variable is set, and if the variable is being passed, finding out where it is being passed from, etc.. A lot faster in CL to find the OVRDBF and then finding the variable if used and where it's set or passed. 2. Segregation of logic. Now I have a CL calling the RPG. If I decide for test purposes, or a different company or subdivision, to use a different file set, I can change the CL program and still have it call the RPG program. I am separating Input from Program logic. If I do it in the RPG I will have to either copy the program, then have 2 programs to maintain much harder than maintaining 2 CLs, or change the program logic to reflect 2 possible sets of files. Okay, there are also reasons I can think to use USROPN instead of CL. 1. Integration of system. Use the USROPN and CALL QCMDEXC but move the QCMDEXC into a directory. Have the directory look at the logic as to which set of files to open from however it wants to, it is now transparent to the RPG program (just as the CL then RPG was). Again, easier to maintain as now I don't have to worry at all in the RPG program which set of files I am opening, I just have to work on the program logic. The library can be as complicated or simple as I need and desire. In fact, it now becomes a simple matter ot give the RPG program to a junior programmer to maintain, and have the programmer/analyst maintain the library in all its complexity. 2. Less overhead and files to maintain. Now I just have the RPG program to maintain, and now 2 or more separate files. Using either method I should be using a binding directory anyway, so that doesn't really become an issue. In conclusion, in a smaller shop, or maintaining an older system, or stand alone programs, I would use the OVRDBF in CL. In a new package or rewriting a system, use the USROPN and move the which file logic to the binding directory (okay, what is the official term for a set of programs put into a directory to be linked at run time? On PCs this would be a Library.). Just my $0.02. Regards, Jim Langston A smart man learns from his own mistakes. A wise man learns from the mistakes of others. rob@dekko.com wrote: > > Lots of good suggestions pouring in on this. I go with the OVRDBF. My > only suggestion is why write two programs - an RPG and a CL? Use the > USROPN keyword on your F spec. Use CALL QCMDEXC, (or the alternatives), to > OVRDBF the file from within the RPG program. Then use the OPEN opcode to > open the file. When you are done, use the CLOSE op code. I've really cut > back on CL. In fact if you use the alternatives to QCMDEXC you get the > error return code. Which I think is easier to handle than a MONMSG. > > For example, which is more thorough: > MONMSG CPF000 GOTO(ERROR) > GOTO NOERROR: > ERROR: /* Find out which error code we actually got and then process > accordingly */ > > - or - > eval error=runthis(cmd) > Select > when error=*blanks > when error='CPF....' > ... > when error='CPF,,,,' > ... > other > .... > endsl > > > Quazy > <quazy@SoftHome.n To: rpg400-l@midrange.com > et> cc: > Sent by: Subject: Variable file name >in rpg /or cl > owner-rpg400-l@mi > drange.com > > > 10/13/00 09:18 AM > Please respond to > RPG400-L > > > > I need to have a cl program pass a variable to either a rpg or cl program. > > This variable is the file name that the program needs to read from. > > Any suggestions on how to do this??? > > Thanks > > Chris +--- | 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-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.