/*--+------------------------------------------------------------+--*/ /*--+ PROGRAM ID : $SNDBRKUSR +--*/ /*--+ PROGRAM NAME : CL OF SEND BREAK MESSAGE FOR USER +--*/ /*--+------------------------------------------------------------+--*/ /*--+ VERSION : 1.0 (98/11/04) +--*/ /*--+------------------------------------------------------------+--*/ PGM PARM(&MSG &TOUSR) /*--+------------------------------------------------------------+--*/ /* + DECLARE + */ /*--+------------------------------------------------------------+--*/ /* COMMAND(SNDBRKUSR) PARAMETERS */ DCL VAR(&MSG ) TYPE(*CHAR) LEN( 512 ) /* MESSAGE TEXT */ DCL VAR(&TOUSR ) TYPE(*CHAR) LEN( 10 ) /* USER PROFILE */ /* SHARED PARAMETERS FOR THIS PROGRAM */ DCL VAR(&SH_USRSPC ) TYPE(*CHAR) LEN( 20 ) /* USER SPACE */ DCL VAR(&SH_US_US ) TYPE(*CHAR) LEN( 10 ) /* USER SPACE */ DCL VAR(&SH_US_LIB ) TYPE(*CHAR) LEN( 10 ) /* USER SPACE LIBRARY */ DCL VAR(&SH_JOBTYPE) TYPE(*CHAR) LEN( 1 ) /* TYPE OF JOB */ DCL VAR(&SH_JOBSTS ) TYPE(*CHAR) LEN( 4 ) /* STATUS OF JOB */ DCL VAR(&SH_JOBNM ) TYPE(*CHAR) LEN( 10 ) /* JOB NAME */ DCL VAR(&SH_JOBUSR ) TYPE(*CHAR) LEN( 10 ) /* USER */ DCL VAR(&SH_JOBNO ) TYPE(*CHAR) LEN( 6 ) /* JOB NUMBER */ DCL VAR(&SH_MSG ) TYPE(*CHAR) LEN( 80 ) /* MESSAGE */ DCL VAR(&SH_COUNT ) TYPE(*DEC ) LEN( 5 0) /* COUNTER */ DCL VAR(&SH_STRPOS ) TYPE(*DEC ) LEN( 9 0) /* START POSITION */ DCL VAR(&SH_DTALEN ) TYPE(*DEC ) LEN( 9 0) /* LENGTH OF DATA */ DCL VAR(&SH_OFFSET ) TYPE(*DEC ) LEN( 9 0) /* OFFSET */ DCL VAR(&SH_OFFSETB) TYPE(*CHAR) LEN( 4 ) /* BIN OF &SH_OFFSET */ DCL VAR(&SH_LSTCNT ) TYPE(*DEC ) LEN( 9 0) /* NUMBER OF LIST DATA */ DCL VAR(&SH_LSTCNTB) TYPE(*CHAR) LEN( 4 ) /* BIN OF &SH_LSTCNT */ DCL VAR(&SH_LSTSIZ ) TYPE(*DEC ) LEN( 9 0) /* SIZE OF LIST DATA */ DCL VAR(&SH_LSTSIZB) TYPE(*CHAR) LEN( 4 ) /* BIN OF &SH_LSTSIZ */ DCL VAR(&SH_FOUND ) TYPE(*CHAR) LEN( 4 ) /* USER FIND *YES *NO */ /*--+--------------------+--*/ /* + PARAMETERS FOR API + */ /*--+--------------------+--*/ /* QUSCRTUS */ /* &SH_USRSPC */ DCL VAR(&QCR_EXTDAT) TYPE(*CHAR) LEN( 10 ) /* EXTENDED ATTRIBUTE */ DCL VAR(&QCR_INTSIZ) TYPE(*CHAR) LEN( 4 ) /* INITIAL SIZE(B) */ DCL VAR(&QCR_INTVAL) TYPE(*CHAR) LEN( 1 ) /* INITIAL VALUE */ DCL VAR(&QCR_PUBAUT) TYPE(*CHAR) LEN( 10 ) /* PUBLIC AUTHORITY */ DCL VAR(&QCR_TEXT ) TYPE(*CHAR) LEN( 50 ) /* TEXT DESCRIPTION */ /* QUSLJOB */ /* &SH_USRSPC */ DCL VAR(&QLJ_FORMAT) TYPE(*CHAR) LEN( 8 ) /* FORMAT NAME */ DCL VAR(&QLJ_JOB ) TYPE(*CHAR) LEN( 26 ) /* JOB NAME */ DCL VAR(&QLJ_STATUS) TYPE(*CHAR) LEN( 10 ) /* STATUS */ DCL VAR(&QLJ_ERRCD ) TYPE(*CHAR) LEN( ) /* ERRCODE */ DCL VAR(&QLJ_JOBTYP) TYPE(*CHAR) LEN( 1 ) /* JOB TYPE */ DCL VAR(&QLJ_RTFNUM) TYPE(*CHAR) LEN( 4 ) /* NUM OF FLD TO RTN(B)*/ DCL VAR(&QLJ_RTFKEY) TYPE(*CHAR) LEN( 4 ) /* KEY OF FLD TO RTN(B)*/ /* QUSRTVUS */ /* &SH_USRSPC */ DCL VAR(&QRT_STRPOS) TYPE(*CHAR) LEN( 4 ) /* START POSITION(B) */ DCL VAR(&QRT_DTALEN) TYPE(*CHAR) LEN( 4 ) /* LENGTH OF DATA(B) */ DCL VAR(&QRT_RCVDTA) TYPE(*CHAR) LEN( 52 ) /* RECEIVER VARIABLE */ /* QUSRJOBI */ DCL VAR(&QRJ_RCVDTA) TYPE(*CHAR) LEN( 111 ) /* RECEIVER VARIABLE */ DCL VAR(&QRJ_RCVLEN) TYPE(*CHAR) LEN( 4 ) /* LENGTH OF RCVVAR(B) */ DCL VAR(&QRJ_FORMAT) TYPE(*CHAR) LEN( 8 ) /* FORMAT NAME */ DCL VAR(&QRJ_JOB ) TYPE(*CHAR) LEN( 26 ) /* JOB NAME */ DCL VAR(&QRJ_JOBID ) TYPE(*CHAR) LEN( 16 ) /* INTERNAL JOB ID */ /*--+------------------------------------------------------------+--*/ /* + START OF PROGRAM + */ /*--+------------------------------------------------------------+--*/ /*--+------------------------------------------------------------+--*/ /* + INITIALIZE + */ /*--+------------------------------------------------------------+--*/ /*--+------------------------------------+--*/ /* + VERIFICATION OF COMMAND PARAMETERS + */ /*--+------------------------------------+--*/ RTVUSRPRF USRPRF(&TOUSR) MONMSG MSGID(CPF2204) EXEC(DO) SNDPGMMSG MSGID(CPF2204) MSGF(QCPFMSG) MSGDTA(&TOUSR) + MSGTYPE(*ESCAPE) ENDDO IF (&TOUSR *EQ '*ALLUSR') DO SNDBRKMSG MSG(&MSG) TOMSGQ(*ALLWS) RETURN ENDDO /*--+-------------------+--*/ /* + SET INITIAL VALUE + */ /*--+-------------------+--*/ /* SHARED PARAMETERS */ CHGVAR VAR(&SH_USRSPC ) VALUE('SNDBRKUSR QTEMP ') CHGVAR VAR(&SH_US_US ) VALUE(%SST(&SH_USRSPC 1 10)) CHGVAR VAR(&SH_US_LIB ) VALUE(%SST(&SH_USRSPC 11 10)) CHGVAR VAR(&SH_COUNT ) VALUE(0) CHGVAR VAR(&SH_FOUND ) VALUE('*NO ') CHGVAR VAR(&SH_MSG ) VALUE('THE MESSAGE WAS NOT ' *BCAT + 'SENT. BECAUSE USER ' *BCAT + &TOUSR *BCAT + 'WAS NOT SIGNED ON') /* QUSCRTUS PARAMETERS */ CHGVAR VAR(&QCR_EXTDAT) VALUE(' ') CHGVAR VAR(%BIN(&QCR_INTSIZ)) VALUE(1024) CHGVAR VAR(&QCR_INTVAL) VALUE(' ') CHGVAR VAR(&QCR_PUBAUT) VALUE('*ALL') CHGVAR VAR(&QCR_TEXT ) VALUE('CREATED BY SNDBRKUSR') /* QUSLJOB PARAMETERS */ CHGVAR VAR(&QLJ_JOB ) VALUE('*ALL *ALL *ALL ') CHGVAR VAR(&QLJ_FORMAT) VALUE('JOBL0100') CHGVAR VAR(&QLJ_STATUS) VALUE('*ACTIVE') CHGVAR VAR(&QLJ_JOBTYP) VALUE('I') CHGVAR VAR(%BIN(&QLJ_RTFNUM)) VALUE(0) CHGVAR VAR(%BIN(&QLJ_RTFKEY)) VALUE(0) /* QUSRJOBI PARAMETERS */ CHGVAR VAR(&QRJ_FORMAT) VALUE('JOBI0200') CHGVAR VAR(&QRJ_JOB ) VALUE('*INT ') /*--+-------------------+--*/ /* + CREATE USER SPACE +--*/ /*--+-------------------+--*/ CHKOBJ OBJ(&SH_US_LIB/&SH_US_US) OBJTYPE(*USRSPC) MONMSG MSGID(CPF9801) EXEC(DO) CALL PGM(QUSCRTUS) PARM(&SH_USRSPC + &QCR_EXTDAT + &QCR_INTSIZ + &QCR_INTVAL + &QCR_PUBAUT + &QCR_TEXT ) ENDDO /*--+----------------------------------+--*/ /* + SET JOB LIST INTO THE USER SPACE + */ /*--+----------------------------------+--*/ /* FOR V3R7 OR LATER */ CALL PGM(QUSLJOB) PARM(&SH_USRSPC + &QLJ_FORMAT + &QLJ_JOB + &QLJ_STATUS + &QLJ_ERRCD + &QLJ_JOBTYP + &QLJ_RTFNUM + &QLJ_RTFKEY ) /* FOR V3R2 */ /* CALL PGM(QUSLJOB) PARM(&SH_USRSPC + &QLJ_FORMAT + &QLJ_JOB + &QLJ_STATUS ) */ /*--+--------------------------------------------------+--*/ /* + RETRIEVE HEADER INFO OF JOB LIST FROM USER SPACE + */ /*--+--------------------------------------------------+--*/ CHGVAR VAR(%BIN(&QRT_STRPOS)) VALUE(125) CHGVAR VAR(%BIN(&QRT_DTALEN)) VALUE( 16) CALL PGM(QUSRTVUS) PARM(&SH_USRSPC + &QRT_STRPOS + &QRT_DTALEN + &QRT_RCVDTA ) CHGVAR VAR(&SH_LSTCNTB) VALUE(%SST(&QRT_RCVDTA 9 4)) CHGVAR VAR(&SH_LSTCNT ) VALUE(%BIN(&SH_LSTCNTB)) IF (&SH_LSTCNT = 0) DO /* NO DATA */ SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) + MSGDTA(&SH_MSG) + MSGTYPE(*ESCAPE) ENDDO CHGVAR VAR(&SH_OFFSETB) VALUE(%SST(&QRT_RCVDTA 1 4)) CHGVAR VAR(&SH_OFFSET ) VALUE(%BIN(&SH_OFFSETB)) CHGVAR VAR(&SH_LSTSIZB) VALUE(%SST(&QRT_RCVDTA 13 4)) CHGVAR VAR(&SH_LSTSIZ ) VALUE(%BIN(&SH_LSTSIZB)) CHGVAR VAR(&SH_STRPOS ) VALUE(&SH_OFFSET + 1) CHGVAR VAR(%BIN(&QRT_STRPOS)) VALUE(&SH_STRPOS) CHGVAR VAR(&SH_DTALEN ) VALUE(&SH_LSTSIZ) CHGVAR VAR(%BIN(&QRT_DTALEN)) VALUE(&SH_DTALEN) /*--+------------------------------------------------------------+--*/ /* + M A I N + */ /*--+------------------------------------------------------------+--*/ #_READ_: /*--+------------------------------------+--*/ /* + RETRIEVE LIST DATA FROM USER SPACE + */ /*--+------------------------------------+--*/ CHGVAR VAR(&SH_COUNT) VALUE(&SH_COUNT + 1) /* COUNT UP */ CALL PGM(QUSRTVUS) PARM(&SH_USRSPC + &QRT_STRPOS + &QRT_DTALEN + &QRT_RCVDTA ) CHGVAR VAR(&QRJ_JOBID ) VALUE(%SST(&QRT_RCVDTA 27 16)) /*--+-----------------------------------------+--*/ /* + GET JOB INFORMATION FROM RETRIEVED DATA + */ /*--+-----------------------------------------+--*/ CALL PGM(QUSRJOBI) PARM(&QRJ_RCVDTA + X'0000006F' + &QRJ_FORMAT + &QRJ_JOB + &QRJ_JOBID ) MONMSG MSGID(CPF0000) EXEC(GOTO #_SKIP_) CHGVAR VAR(&SH_JOBTYPE) VALUE(%SST(&QRJ_RCVDTA 61 1)) CHGVAR VAR(&SH_JOBSTS ) VALUE(%SST(&QRJ_RCVDTA 108 4)) /* SEND BREAK MESSAGE(TO INTERACTIVE USER) */ IF (&SH_JOBTYPE='I') DO CHGVAR VAR(&SH_JOBNM ) VALUE(%SST(&QRJ_RCVDTA 9 10)) CHGVAR VAR(&SH_JOBUSR ) VALUE(%SST(&QRJ_RCVDTA 19 10)) CHGVAR VAR(&SH_JOBNO ) VALUE(%SST(&QRJ_RCVDTA 29 6)) IF (&SH_JOBNM *EQ 'QSYSMSG_CK') GOTO #_SKIP_ /* EXCEPTION */ IF (&TOUSR *EQ &SH_JOBUSR) DO SNDBRKMSG MSG(&MSG) TOMSGQ(&SH_JOBNM) CHGVAR VAR(&SH_FOUND) VALUE('*YES') ENDDO ENDDO #_SKIP_: IF (&SH_LSTCNT = &SH_COUNT) GOTO #_EXIT_ /* AT END */ CHGVAR VAR(&SH_STRPOS) VALUE(&SH_STRPOS + &SH_LSTSIZ) CHGVAR VAR(%BIN(&QRT_STRPOS)) VALUE(&SH_STRPOS) GOTO #_READ_ /*--+------------------------------------------------------------+--*/ /* + END OF PROGRAM + */ /*--+------------------------------------------------------------+--*/ #_EXIT_: IF (&SH_FOUND = '*NO') DO /* NOT FOUND USER IN USER SPACE */ SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) + MSGDTA(&SH_MSG) + MSGTYPE(*ESCAPE) ENDDO ENDPGM