DSTQ - Verteilung: Unterschied zwischen den Versionen

Aus informatikvs
Wechseln zu: Navigation, Suche
Zeile 10: Zeile 10:
 
# 1 * nach unten bis zur Eigenschaft "Bevorzugte Adresse | Preferred Address" blättern
 
# 1 * nach unten bis zur Eigenschaft "Bevorzugte Adresse | Preferred Address" blättern
 
# den Wert auf 3=SMTP-Name ändern
 
# 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>

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

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