DSTQ - Verteilung
In der Verteilerschlange eines Users ist mit 9999 Verteilungen (Nachrichten) die Obergrenze erreicht. Eine Nachricht mit SNDDST senden wirft die Fehlermeldung:
- CPD90B1
- Die Obergrenze von 9999 Verteilungen wurde erreicht.
auf.
Abhilfe:
- Anmelden mit QSECOFR-Berechtigung
- ===> WRKDIRE (Verzeichniseinträgen arbeiten | Work with Directory Entries aufrufen)
- mit Auswahl 2=Ändern in die Änderungsmaske für den Benutzer wechseln
- 4 * nach unten bis zur Eigenschaft "Postfunktionsstufe | Mail Service Level" blättern
- den Wert auf 2=Systemnachrichtenspeicher | System Message Store ändern
- 1 * nach unten bis zur Eigenschaft "Bevorzugte Adresse | Preferred Address" blättern
- den Wert auf 3=SMTP-Name ändern
/******************************************************************************/
/* */
/* Programm bereinigt alle SNADS-Verteilungen eines USERS (Parameter/Aufrufer)*/
/* Wenn Limit von 9999 erreicht wurde schlug Fehler CPD90B1 auf */
/* */
/* Wegen Berechtigung muss Job mit Benutzernamen als SBMJOB gestartet werden */
/* */
/******************************************************************************/
DCL VAR(&PUSER) TYPE(*CHAR) LEN(10) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&MYLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MYTYPE) TYPE(*CHAR) LEN(1) DCL VAR(&MYDATE) TYPE(*CHAR) LEN(8) VALUE('20621231') DCL VAR(&SDDATE) TYPE(*CHAR) LEN(8) DCLF FILE(QSYS/QAOSILIN) RCDFMT(OSLIN) OPNID(MYINP) DCLF FILE(QSYS/QAOSILOT) RCDFMT(OSLOUT) OPNID(MYOUT) CHGVAR VAR(&USER) VALUE(&PUSER) MONMSG MSGID(MCH3601) EXEC(RTVJOBA USER(&USER)) RTVJOBA TYPE(&MYTYPE) IF COND(&MYTYPE *EQ '0') THEN(DO) CHGVAR VAR(&MYLIB) VALUE(QTEMP) CHGVAR VAR(&MYLIB) VALUE(SPONA) CALLSUBR SUBR(DLTDSTIN) CALLSUBR SUBR(DLTDSTOUT) DSPJOBLOG OUTPUT(*PRINT) SNDM FROM('horst.spona@kunert.de') + TO(('horst.spona@kunert.de')) + FILE(&MYLIB/QCLSRC) + MBR(HSDSTCLEA#) + SUBJECT('HSDstClear') ENDDO ELSE DO SBMJOB CMD(CALL PGM(SPONA/HSDSTCLEAR) + PARM(&USER)) + JOB(HSDSTCLEAR) + JOBQ(*LIBL/QBATCH) + USER(&USER) + SYSLIBL(*SYSVAL) + CURLIB(*CRTDFT) + INLLIBL(*SYSVAL) + LOG(4 99) + LOGCLPGM(*YES) + HOLD(*NO) ENDDO
/******************************************************************************/ /*** END **********************************************************************/ END9999: DLTOVR FILE(*ALL)
RCLRSC
/******************************************************************************/ /**subroutine *****************************************************************/ SUBR SUBR(DLTDSTIN)
QRYDST OPTION(*IN) USRID(*CURRENT) OUTFILE(&MYLIB/MYDSTIN) OVRDBF FILE(QAOSILIN) TOFILE(&MYLIB/MYDSTIN) DOWHILE cond(1 = 1) RCVF RCDFMT(OSLIN) OPNID(MYINP) MONMSG MSGID(CPF0864) EXEC(LEAVE) CHGVAR VAR(&SDDATE) VALUE(%SST(&MYINP_LINSDT 1 8)) IF COND(&SDDATE *GT &MYDATE) THEN(ITERATE) DLTDST DSTID(&MYINP_LINDID) OPTION(*IN) USRID(*CURRENT) + DSTIDEXN(&MYINP_LINDEX) OBJ(*ALL) MONMSG MSGID(CPF0000) ENDDO
ENDSUBR
/******************************************************************************/ /**subroutine *****************************************************************/ SUBR SUBR(DLTDSTOUT)
QRYDST OPTION(*OUT) USRID(*CURRENT) OUTFILE(&MYLIB/MYDSTOUT) OVRDBF FILE(QAOSILOT) TOFILE(&MYLIB/MYDSTOUT) DOWHILE cond(1 = 1) RCVF RCDFMT(OSLOUT) OPNID(MYOUT) MONMSG MSGID(CPF0864) EXEC(LEAVE) CHGVAR VAR(&SDDATE) VALUE(%SST(&MYOUT_OUTSDT 1 8)) IF COND(&SDDATE *GT &MYDATE) THEN(ITERATE) DLTDST DSTID(&MYOUT_OUTDID) OPTION(*OUT) USRID(*CURRENT) + DSTIDEXN(&MYOUT_OUTDEX) OBJ(*ALL) MONMSG MSGID(CPF0000) DLTDST DSTID(&MYOUT_OUTDID) OPTION(*ERR) USRID(*CURRENT) + DSTIDEXN(&MYOUT_OUTDEX) OBJ(*ALL) MONMSG MSGID(CPF0000) ENDDO
ENDSUBR /******************************************************************************/ /******************************************************************************/ ENDPGM