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 <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Jon Paris
Sent: Monday, 8 June 2026 23:41
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxxxxxxxx>
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
Jon.Paris@xxxxxxxxxxxxxx
On Jun 8, 2026, at 5:31 PM, James H. H. Lampert via MIDRANGE-L <midrange-l@xxxxxxxxxxxxxxxxxx> 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: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.