× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.