Re: Shelling out CRTLF via QCMDEXC -- question about success/failure
Rob Berendt <[email protected]> Tue, 9 Jun 2026 10:57:05 -0400
| Newsgroups | gmane.comp.hardware.ibm.midrange |
|---|---|
| Message-ID | <CAPJ+qQPvooCO-21jOR59_TVz4zSCjoxE2puf45nMn-90O2+KHQ@mail.gmail.com> |
I was a big fan of system(), until I was not. I forget why. Others have alluded to the ease of getting the error with QCAPCMD instead. Perhaps that was it. On Tue, Jun 9, 2026 at 8:35 AM Vern Hamberg via MIDRANGE-L < [email protected]> wrote: > Hi Birgitta > > Yes, the system() function returns an integer, 0 if the command is > successful. And, according to the reference, we have this - > > > If the system() function fails, the global variable _EXCP_MSGID in > > <stddef.h> is set with the exception message ID. > > *Regards* > > *Vern Hamberg* > > IBM Champion 2025 <cid:[email protected]> CAAC > (COMMON Americas Advisory Council) IBM Influencer 2023 > > > On 6/9/2026 1:53 AM, Birgitta Hauser wrote: > > Jon and AI > > > > How you'd get the CPF-Msg which is checked in the example if only an > error code is returned? ;) > > > > When using QCMDEXC it is possible to trap the system error message! > > > > Mit freundlichen Grüßen / Best regards > > > > Birgitta Hauser > > Modernization – Education – Consulting on IBM i > > Database and Software Architect > > IBM Champion since 2020 > > > > "Shoot for the moon, even if you miss, you'll land among the stars." > (Les Brown) > > "If you think education is expensive, try ignorance." (Derek Bok) > > "What is worse than training your staff and losing them? Not training > them and keeping them!" > > "Train people well enough so they can leave, treat them well enough so > they don't want to. " (Richard Branson) > > "Learning is experience … everything else is only information!" (Albert > Einstein) > > > > > > -----Original Message----- > > From: MIDRANGE-L<[email protected]> On Behalf Of > Jon Paris > > Sent: Monday, 8 June 2026 23:41 > > To: Midrange Systems Technical Discussion<[email protected]> > > Subject: Re: Shelling out CRTLF via QCMDEXC -- question about > success/failure > > > > Personally, I'd use the system() function. Much easier to test for > errors and determine the root failure message. > > > > Google's AI came up with this example whcih I have not tested but it > looks about right. > > > > **free > > // Modern control specifications—no bnddir('QC2LE') needed! > > ctl-opt dftactgrp(*no); > > > > // Prototype for the C system() function dcl-pr runCommand int(10) > extproc('system'); > > cmdString pointer value options(*string); end-pr; > > > > // Import system variable to capture error message IDs dcl-s errorMsg > char(7) import('_EXCP_MSGID'); > > > > // Variable to store the return code > > dcl-s returnCode int(10); > > > > // Execute a CL command directly > > returnCode = runCommand('CLRPFM FILE(MYLIB/MYFILE)'); > > > > // Check for execution failure > > if returnCode <> 0; > > if errorMsg = 'CPF3142'; // File not found > > // Handle specific error logic here > > endif; > > endif; > > > > *inlr = *on; > > > > > > Jon Paris > > [email protected] > > > > > > > >> On Jun 8, 2026, at 5:31 PM, James H. H. Lampert via MIDRANGE-L< > [email protected]> wrote: > >> > >> I've got a project in which I will be using a QCMDEXC call to shell out > a CRTLF (from a generated source member). What is the easiest way for the > calling program to determine whether the CRTLF was successful? > >> > >> -- > >> JHHL > >> -- > >> This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing > >> list To post a message email:[email protected] To > >> subscribe, unsubscribe, or change list options, > >> visit:https://lists.midrange.com/mailman/listinfo/midrange-l > >> or email:[email protected] > >> Before posting, please take a moment to review the archives at > >> https://archive.midrange.com/midrange-l. > >> > >> Please [email protected] for any subscription > related questions. > >> > > -- > > This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing > list To post a message email:[email protected] To subscribe, > unsubscribe, or change list options, > > visit:https://lists.midrange.com/mailman/listinfo/midrange-l > > or email:[email protected] > > Before posting, please take a moment to review the archives athttps:// > archive.midrange.com/midrange-l. > > > > Please [email protected] for any subscription related > questions. > > > > > -- > This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list > To post a message email: [email protected] > To subscribe, unsubscribe, or change list options, > visit: https://lists.midrange.com/mailman/listinfo/midrange-l > or email: [email protected] > Before posting, please take a moment to review the archives > at https://archive.midrange.com/midrange-l. > > Please contact [email protected] for any subscription related > questions. > > -- This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/midrange-l or email: [email protected] Before posting, please take a moment to review the archives at https://archive.midrange.com/midrange-l. Please contact [email protected] for any subscription related questions.