DSTQ - Verteilung: Unterschied zwischen den Versionen

Aus informatikvs
Wechseln zu: Navigation, Suche
(Abhilfe:)
Zeile 11: Zeile 11:
 
# den Wert auf 3=SMTP-Name ändern
 
# den Wert auf 3=SMTP-Name ändern
  
<code>
+
<pre><code>
 
/******************************************************************************/
 
/******************************************************************************/
 
/*                                                                            */
 
/*                                                                            */
Zeile 103: Zeile 103:
 
/******************************************************************************/
 
/******************************************************************************/
 
ENDPGM                       
 
ENDPGM                       
</code>
+
</code></pre>

Version vom 27. Juni 2017, 10:28 Uhr

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
<code>
/******************************************************************************/
/*                                                                            */
/* 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                      
</code>