I would suggest avoicing QCMDEXC completely.I use the system function. You
don't need to worry about length.
I just copy this procedure into my program.

ExecuteCommand(('CALL PGM(XYZ) PARM('''ABCDEF''')');

Another way I do this is (My preferred way of handling quotes).

dcl-c QUOTE '''';
dcl-s Cmd Varchar(500);

Cmd = 'CALL PGM(XYZ) PARM(~Q~AGCDEF~Q~)';
Cmd = %ScanRpl('~Q~':QUOTE:Cmd);
ExecuteCommand((Cmd');

//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//* ExecuteCommand
//* Function executes a CL command
//* In - Pointer To Null Terminated string
//* Out - None
//* Returns - True/False Valid
//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dcl-proc ExecuteCommand;
dcl-pi *N Ind;
InCommand Pointer Options(*Trim: *String) Value;
end-pi;


dcl-pr ExecuteCommandAPI Int(10) ExtProc('system');
PR_CMD Pointer Value;
end-pr;


dcl-c NORMAL_END 0;
dcl-c NULL_POINTER_PASSED -1;
dcl-c COMMAND_FAILED 1;


dcl-s Result Int(10);

Monitor;
Result = ExecuteCommandAPI(InCommand);
On-Error;
EndMon;

If Result = NORMAL_END;
Return '1';
Else;
Return '0';
EndIf;

end-proc;

On Fri, Jan 22, 2021 at 11:13 AM PaulMmn <PaulMmn@xxxxxxxxxxxxx> wrote:

QCMDEXC needS a second 'length' parameter...

CALL QSYS2/QCMDEXC('CALL PGM(XYZ) PARM(''ABCDEF'')' 28)

I think you'd only need double-quotes around the PARM if you wanted
to include upper and lower case, or if your parm has 6 characters,
and you only wanted to pass 4+2 blanks.

--Paul E Musselman

.




At 12:55 PM -0600 1/22/21, David Gibbs via MIDRANGE-L wrote:
OK, I think I'm missing something obvious ... but this is driving me
crazy.

I'm trying to invoke a program call through the QCMDEXC SQL procedure.

Since the parm is in quoted text, I assume I have to double
quote/escape the quotes in the parms.

I am getting an error saying the String ') )' is invalid.

I'm running something like this:

CALL QSYS2/QCMDEXC('CALL PGM(XYZ) PARM(''ABCDEF'')')

I've tried triple quoting the parm with a different error.

What am I missing?

Thanks!

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

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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.