DSTQ - Verteilung

Aus informatikvs
Wechseln zu: Navigation, Suche

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:

  1. Anmelden mit QSECOFR-Berechtigung
  2. ===> WRKDIRE (Verzeichniseinträgen arbeiten | Work with Directory Entries aufrufen)
  3. mit Auswahl 2=Ändern in die Änderungsmaske für den Benutzer wechseln
  4. 4 * nach unten bis zur Eigenschaft "Postfunktionsstufe | Mail Service Level" blättern
  5. den Wert auf 2=Systemnachrichtenspeicher | System Message Store ändern
  6. 1 * nach unten bis zur Eigenschaft "Bevorzugte Adresse | Preferred Address" blättern
  7. 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