/* ADDEXITPGM EXITPNT(QIBM_QCA_CHG_COMMAND) + */ /* FORMAT(CHGC0100) + */ /* PGMNBR(1) + */ /* PGM(BERTHOPL/EP_RUNQRY) + */ /* TEXT('Exit program for RUNQRY') + */ /* PGMDTA(*JOB 20 'RUNQRY QSYS') */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* Program Name: WRKJOBEXIT */ /* Purpose: This is the exit program for the Command RUNQRY. */ /* Exit Point IS QIBM_QCA_CHG_COMMAND */ /* Parameter format for parm1 is CHGC0100. */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* Copyright© 2002 Dan Riehl, The 400 School, Inc. */ PGM PARM(&ExitInfo &NewString &Newlength) DCL &USER *CHAR 10 DCL &OffsetDec *DEC (7 0) DCL &CmdLenDec *DEC (7 0) DCL &ExitInfo *CHAR 2000 /* CHGC0100 interface data */ /* Exit point interface CHGC0100 for QIBM_CA_CHG_COMMAND exit point */ /* Input parameters */ DCL &ExitPoint *CHAR 20 /* Exit Point name */ DCL &ExitFormat *CHAR 8 /* Exit Point Format */ DCL &CmdName *CHAR 10 /* Command name being executed */ DCL &CmdLib *CHAR 10 /* Command Library */ DCL &Change *CHAR 1 /* Change allowed? 1=yes 0=no */ DCL &Prompt *CHAR 1 /* Prompt requested? 1=yes 0=no */ DCL &Filler *CHAR 2 /* Reserved by IBM */ DCL &Offset *CHAR 4 /* Offset to command string */ DCL &CmdLength *CHAR 4 /* Command string length */ DCL &CmdString *CHAR 2000 /* Command String */ /* Output Parameters */ DCL &NewString *CHAR 2000 /* Replace with this command */ DCL &NewLength *CHAR 4 /* Length of new command */ /* 0 = no new command */ /* Error handling variables */ DCL &MsgID *CHAR 7 DCL &MsgFile *CHAR 10 DCL &MsgFLib *CHAR 10 DCL &MsgData *CHAR 512 MONMSG CPF0000 EXEC(GOTO ERROR) /* Parse out the exit info data */ CHGVAR &ExitPoint %SST(&ExitInfo 1 20) CHGVAR &ExitFormat %SST(&ExitInfo 21 8) CHGVAR &CmdName %SST(&ExitInfo 29 10) CHGVAR &CmdLib %SST(&ExitInfo 39 10) CHGVAR &Change %SST(&ExitInfo 49 1) CHGVAR &Prompt %SST(&ExitInfo 50 1) CHGVAR &Filler %SST(&ExitInfo 51 2) CHGVAR &Offset %SST(&ExitInfo 53 4) CHGVAR &CmdLength %SST(&ExitInfo 57 4) CHGVAR &CmdLenDec %BIN(&Cmdlength) CHGVAR &OffsetDec (%BIN(&Offset) + 1) /* Set offset */ CHGVAR &CmdString %SST(&ExitInfo &OffsetDec &CmdLenDec) IF (&Change = '0') GOTO ENDIT /* If Change is not allowed */ /*----------------------------------------------------------------*/ /* FORCE A SBMJOB FOR THE REQUEST */ /*----------------------------------------------------------------*/ RTVJOBA USER(&USER) CHGVAR VAR(&NEWSTRING) VALUE('SBMJOB CMD(QSYS/' + *TCAT &CMDSTRING *TCAT ') JOB(' *TCAT + &USER *TCAT ')') CHGVAR %BIN(&Newlength) 110 ENDIT: RETURN /* Normal end of Program */ /* Error handling */ ERROR: RCVMSG MSGTYPE(*LAST) MSGDTA(&MsgData) + MSGID(&MsgID) MSGF(&MsgFile) + SNDMSGFLIB(&MsgFLib) MONMSG CPF0000 EXEC(RETURN) SNDPGMMSG MSGID(&MsgID) MSGF(&MSGFLIB/&MsgFile) + MSGDTA(&MsgData) MSGTYPE(*ESCAPE) MONMSG CPF0000 EXEC(RETURN) ENDPGM