Serve avvisare qualcuno quando un batch finisce. La via più breve è SNDSMTPEMM, che è un
comando CL normale e non richiede nulla di installato.
DCL VAR(&ORA) TYPE(*CHAR) LEN(6)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ORA)
SNDSMTPEMM RCP((operatori@azienda.it)) +
SUBJECT('Chiusura mensile conclusa') +
NOTE('Elaborazione terminata alle ' *CAT &ORA)
L'ora si prende con RTVSYSVAL da QTIME, che è un carattere di sei posizioni nella forma
HHMMSS.
Per allegare un file dell'IFS si aggiunge ATTACH, con il percorso, il tipo MIME e la modalità
di trasferimento: la pagina IBM dice che tipo e modalità vanno indicati. *PLAIN e *TXT sono
quelli di un file di testo; per un file binario IBM indica *OCTET e *BIN.
SNDSMTPEMM RCP((operatori@azienda.it)) +
SUBJECT('Report di chiusura') +
NOTE('In allegato il riepilogo.') +
ATTACH(('/home/batch/chiusura.csv' *PLAIN *TXT))
Esempio: il batch che racconta com'è andata
Una mail che parte solo quando tutto è filato liscio non serve a niente: nessuno si accorge della mail che non è arrivata. Quella utile è la mail che distingue i due esiti.
PGM
DCL VAR(&ORA) TYPE(*CHAR) LEN(6)
CALL PGM(PRODLIB/CHIUSURA)
MONMSG MSGID(CPF0000) EXEC(DO)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ORA)
SNDSMTPEMM RCP((operatori@azienda.it)) +
SUBJECT('CHIUSURA INTERROTTA') +
NOTE('Interrotta alle ' *CAT &ORA *CAT +
'. Job log da controllare.')
RETURN
ENDDO
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ORA)
SNDSMTPEMM RCP((operatori@azienda.it)) +
SUBJECT('Chiusura conclusa') +
NOTE('Terminata alle ' *CAT &ORA)
ENDPGM
Il RETURN dentro il DO è quello che impedisce alla mail di successo di partire subito
dopo quella di errore. Senza, arrivano tutte e due, e la seconda cancella la prima nella testa
di chi legge.
Vale la pena mettere l'esito nell'oggetto e non nel corpo: chi guarda la posta dal telefono vede solo quello.
Attenzione
il comando fallisce senza spiegare quale prerequisito manchi, e i
prerequisiti sono due. Il server SMTP dev'essere avviato: dopo STRTCPSVR SERVER(*SMTP)
si controlla che i lavori siano davvero partiti con WRKACTJOB SBS(QSYSWRK), cercando
QTSMTPCLTD e QTSMTPSRVD. Il profilo dev'essere censito nella directory che
CHGSMTPA indica con DIRTYPE: con *SDD, una voce nella directory di distribuzione del
sistema (WRKDIRE) e un nome SMTP (WRKNAMSMTP); con *SMTP o *SMTPMSF, ADDUSRSMTP.
Suggerimento
quando la mail parte ma non arriva, il prerequisito non c'entra. Il punto
da guardare è il mailhub di inoltro, che si legge con CHGSMTPA: senza un inoltro valido il
sistema accetta il messaggio e non lo consegna a nessuno.
Nota
NOTE accetta fino a 5000 caratteri. Per messaggi più lunghi conviene scrivere il contenuto
in un file sull'IFS e allegarlo, invece di comporre il corpo nel programma.
Rilasci. SNDSMTPEMM è presente su tutti i rilasci ancora supportati. Il vincolo vero non
è la versione ma la configurazione: server SMTP avviato e profilo presente nella directory di
sistema. Si verificano con WRKACTJOB SBS(QSYSWRK) e, a seconda di DIRTYPE, con WRKDIRE e
WRKNAMSMTP o con WRKSMTPUSR.
Commenti
Nessun commento ancora. Sii il primo a commentare!
Devi avere un account per commentare. Accedi · Registrati