CL Command Executive Program
CL subprogram to execute commands.
Simplify Command Execution with CL
CLP can function to execute commands when called with parameters. Instead of coding the QCMDEXEC as a procedure in RPG, a subprogram call to a CLP can be a simple alternative.
/*********************************************************************/
/* */
/* Control language program description. */
/* */
/* Program Id........... MIS421CL - Command Execution Program */
/* Programmer........... Steven Croy */
/* */
/* Date coded........... xx/xx/xxxx */
/* Function............. This program functions as a command */
/* processor for HLL programs. It accepts */
/* and incoming data stream and executes */
/* the command. */
/* */
/* Compiler options..... *OWNER */
/* */
/* Parameters required.. &CMD - Command to execute (256) */
/* &MSGLEN- Message length (15,5) */
/* &MSGFLG- Message Flag (1) */
/* */
/*********************************************************************/
/*************************** MODIFICATIONS **************************/
/* */
/* Modification No. - */
/* Reference No. - */
/* Programmer - */
/* Date modified - */
/* Nature of change - */
/* */
/*********************************************************************/
PGM PARM( +
&CMD +
&MSGLEN +
&MSGFLG +
)
/*------------------------------------------------------------------------*/
/* Declaritives */
/*------------------------------------------------------------------------*/
DCL &CMD *CHAR 256 /* Command to be executed */
DCL &MSG2 *CHAR 132 /* Intermediate level message */
DCL &MSG *CHAR 132 /* Return message variable */
DCL &MSGFLG *CHAR 1 /* Receive message flag */
DCL &MSGLEN *DEC (15 5) /* Message length */
/*------------------------------------------------------------------------*/
/* Execute the command */
/*------------------------------------------------------------------------*/
EXECUTE: CALL PGM(*LIBL/QCMDEXC) PARM(&CMD &MSGLEN)
MONMSG MSGID(CPF0000)
/*------------------------------------------------------------------------*/
/* Process any/all messages that may have been issued */
/*------------------------------------------------------------------------*/
NEXT_MSG: RCVMSG RMV(*NO) MSG(&MSG2)
IF COND(&MSG2 *NE ' ') THEN(DO)
CHGVAR VAR(&MSG) VALUE(&MSG2)
GOTO CMDLBL(NEXT_MSG)
ENDDO
/*------------------------------------------------------------------------*/
/* Return error message to requester */
/*------------------------------------------------------------------------*/
IF COND(&MSG *NE ' ') THEN(DO)
CHGVAR VAR(&MSGFLG) VALUE('1')
CHGVAR VAR(&CMD) VALUE(&MSG)
ENDDO
RETURN
ENDPGM