DSTQ - Verteilung: Unterschied zwischen den Versionen

Aus informatikvs
Wechseln zu: Navigation, Suche
(Abhilfe:)
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
 
+
# call [[hsdstclear]]
<pre><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></pre>
 

Version vom 27. Juni 2017, 10:30 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
  8. call hsdstclear