Su altri sistemi si va a cercare i log in una cartella. Qui i messaggi sono oggetti che viaggiano fra job, e finiscono in code di messaggi: ogni job ne ha una, ogni utente ne ha una, e il sistema ne ha alcune che riguardano tutti.
Il vantaggio è che ogni messaggio sa da dove viene: quale programma, quale istruzione, quale job. Il prezzo è che bisogna sapere in quale coda guardare.
Le code che contano
- QSYSOPR — la coda dell'operatore di sistema. Ci arriva ciò che il sistema vuole far sapere a chi conduce la macchina: dispositivi in errore, richieste che aspettano una risposta, avvisi di sottosistema.
- QSYSMSG — la coda dei messaggi gravi. Non esiste finché non la si crea, e questa è una delle poche cose che vale la pena fare su qualunque sistema il primo giorno.
- La coda dell'utente — una per profilo, dove arrivano i messaggi indirizzati a quella persona.
- La coda del job — il registro del singolo lavoro, cioè il job log.
DSPMSG MSGQ(QSYSOPR)
WRKMSGQ
Consiglio
creare QSYSMSG separa il grano dal rumore. QSYSOPR riceve tutto, comprese decine di messaggi informativi al giorno che nessuno legge; QSYSMSG riceve solo i messaggi che il sistema considera gravi, e diventa quindi la coda da sorvegliare davvero.
CRTMSGQ MSGQ(QSYS/QSYSMSG) TEXT('Messaggi gravi del sistema')
Da quel momento il sistema comincia a usarla, senza altra configurazione.
Messaggi che aspettano una risposta
Alcuni messaggi sono di richiesta: il job che li ha mandati si ferma finché qualcuno non risponde. Sono quelli che tengono ferma la chiusura notturna per otto ore, e la mattina dopo nessuno capisce perché.
Si vedono in DSPMSG e si risponde direttamente sulla riga. Si riconoscono perché hanno
un elenco di risposte previste: C per annullare, R per riprovare, I per ignorare, G
per proseguire.
Consiglio
un batch notturno non dovrebbe mai poter fare una domanda a cui non c'è
nessuno per rispondere. La prevenzione è nella descrizione di job — INQMSGRPY(*DFT) fa
rispondere al sistema con il valore predefinito invece di aspettare — oppure in un
elenco di risposte automatiche (ADDRPYLE e INQMSGRPY(*SYSRPYL)), che è la strada
più controllata perché dice quale risposta dare a quale messaggio.
Applicarlo a tutto indiscriminatamente non è saggio: un messaggio a cui si risponde automaticamente è un messaggio a cui nessuno guarda più.
Il job log
Ogni job scrive il proprio registro. Finché il job è vivo:
DSPJOBLOG JOB(123456/MROSSI/CHIUSURA)
Quando il job è finito, il registro diventa un file di spool — QPJOBLOG — nella coda di
uscita del job. È il motivo per cui i job log si cercano in WRKSPLF e non in una cartella:
sono stampe.
Leggerlo in SQL, cosa che dal rilascio 7.3 evita di scorrere a mano centinaia di righe:
SELECT SPOOLED_DATA
FROM TABLE(SYSTOOLS.SPOOLED_FILE_DATA(
JOB_NAME => '123456/MROSSI/CHIUSURA',
SPOOLED_FILE_NAME => 'QPJOBLOG'))
WHERE SPOOLED_DATA LIKE '%CPF%'
Quanto scrive
Il parametro LOG della descrizione di job decide livello e dettaglio. Un valore che si
incontra spesso è LOG(4 0 *SECLVL): registra tutto, con il secondo livello di spiegazione
incluso.
Avvertenza
il livello alto è quello giusto sui lavori che possono fallire, ed è quello sbagliato ovunque: job log molto dettagliati per migliaia di lavori occupano spazio di spool e rallentano. La scelta ragionevole è dettaglio alto sui batch critici e sui lavori in collaudo, normale sul resto.
Un job che finisce bene, per impostazione predefinita, spesso non lascia nessun job log:
LOGOUTPUT(*PND) lo tiene in sospeso e non lo produce. Non è un guasto — è il motivo per
cui a volte non si trova il registro di un lavoro andato a buon fine.
Leggere un errore
Ogni messaggio ha un codice — CPF9801, CPD0032, MCH3601 — e il codice ha una
spiegazione a due livelli: il testo breve, e il secondo livello che dice causa e possibile
rimedio. In DSPJOBLOG si porta il cursore sulla riga e si preme F1.
Il prefisso dice da dove viene il messaggio: CPF dal sistema operativo, CPD da una
diagnosi di comando, MCH dal livello macchina, SQL dal database, RNQ e RNX
dall'RPG.
Consiglio
in un job log lungo, il messaggio da leggere non è quasi mai l'ultimo. È il primo errore: quelli dopo sono le conseguenze, e descrivono un sistema già in difficoltà. Scorrere dall'alto verso il basso fino al primo messaggio grave fa risparmiare la maggior parte del tempo che si perde su questi registri.
Commenti
Nessun commento ancora. Sii il primo a commentare!
Devi avere un account per commentare. Accedi · Registrati