|
Ewww. I spent an hour or so yesterday trying to find definitions for the constants mentioned in the api doc. Then I had to get back to work. <g> It's one of my pet peeves that a lot of the api documentation is C oriented. Makes you think that no one thought anyone would want to call them from RPG. Some things like executable macros and functions with variable argument lists don't necessarily translate into RPG easily. > -----Original Message----- > From: Scott Klement [mailto:klemscot@klements.com] > Sent: Friday, April 05, 2002 10:51 AM > To: rpg400-l@midrange.com > Subject: Re: Using the QzshSystem Qshell API > > > > Hi, > > Your error checking is too simple, you need to make it more > complicated. :) > > Let me explain: > > QzshShell, like QShell itself, creates a new process to run each > command that you send to it, called a "child process". (It probably > uses the spawn() API or similar to do this). It then calls the > waitpid() API to wait for the command to complete, and returns the > "status" argument from the waitpid() API. > > What this means is, QzshShell() will only return a -1 to indicate an > error if the spawn() (create child process) or waitpid() > (wait for child > process) functions actually fail. It does NOT return a -1 > if the command > that you sent to it has failed. > > Instead, you need to check some of the bits in the returned value to > determine if it has failed or not. > > If you look at the manual page for the QzshSystem() API, there's an > example at the bottom (albeit, written in C) which shows the program > using the WIFxxxx macros to check for the success or failure of the > child process. > > Good luck :) > > > When the command starts, > > > On Fri, 5 Apr 2002, David Morris wrote: > > > Group, > > > > This was also posted to the Java-l > > list and is included here at the > > list moderator's suggestion: > > > > After creating an RPGIV procedure > > that calls QzshSystem, I can't seem to > > get it to work. I always get a return > > code of 7 and a message that the > > file was not found. My best guess is > > that it is expecting the command to > > be passed as ASCII. The API is pretty > > simple and I thought I would have > > this running in a few minutes, instead > > I have spent a couple of hours > > with no luck. > > > > I have tried various prototypes for > > the API, including > > > > DQzshSystemAPI PR 10I 0 EXTPROC('QzshSystem') > > D PR_Cmd * VALUE > > > > and > > > > DQzshSystemAPI PR 10I 0 EXTPROC('QzshSystem') > > D PR_Cmd 5000A CONST > > > > and > > > > DQzshSystemAPI PR 10I 0 EXTPROC('QzshSystem') > > D PR_Cmd 5000A VALUE OPTIONS(*STRING) > > > > I think any of these should work. > > > > Here is an example of what I have tried: > > > > C EVAL CmdStrLen = %LEN(%TRIM(Cmd)) + 1 > > C ALLOC CmdStrLen pCmdStr > > C EVAL %STR(pCmdStr: CmdStrLen) = Cmd > > C EVAL RtnCod = QzshSystemAPI(pCmdStr) > > C IF RtnCod <> *ZEROS > > C CALLP SndUnixErr('Error in Qsh Command: ' + > > C %TRIM(Cmd)) > > C EVAL RtnErr = *ON > > C ENDIF > > C DEALLOC pCmdStr > > > > Does anyone have any ideas? > > > > Thanks, > > > > David Morris
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.