Prendo spunto da una mail che Silvio Buffoli aveva mandato al gruppo Smea in data 02/11/2008:

Per verificare le performance e le modalità di esecuzione sono a disposizione due comandi: il TRCJOB e gli STRTRC/ENDTRC. La seconda coppia non l’ho ancora utilizzata ma mi è parso di capire che permette di fare la stessa cosa del TRCJOB, ma riferita ad un lavoro che non è quello da cui viene eseguito il comando. Utilizzando il TRCJOB con parametro SET(*ON) e poi successivamente SET(*OFF) è possibile tracciare tutte le chiamate effettuate fra le due esecuzioni del comando. Con TRCJOB SET(*OFF) e possibile buttare il risultato della traccia su uno spool o su un file. I due non mi pare riportino esattamente le stesse informazioni, ma essendo il file rimanipolabile mi pare quello più interessante. Purtroppo il suo contenuto non è di comprensione immediata e anche cercando in internet (non ci ho perso più di tanto a dir la verità) non ho trovato informazioni più dettagliate rispetto alla mera definizione della colonna. Comunque dal breve utilizzo che ne ho fatto ho estrapolato queste principali chiavi di lettura che vi riporto: 

%%prettify 
{{{
select scfld1, sum(SCcpu), sum((case when SCSTYP=1 then scstyp end)) as call

from nomefiletrace

where SCFUNC=0

group by scfld1

order by sum(SCcpu) desc
}}}
/%


Dove:

-__scfld1__ è il nome del programma

-__sccpu__ è il tempo sccpu impiegato dal programma. Il tempo attribuito al pgm non è quello tra il suo inizio e la sua fine, ma il tempo impiegato nell’esecuzione delle sole specifiche interne del programma: se il programma richiama un altro programma il tempo viene attribuito totalmente al programma richiamato per la sua esecuzione)

-__scstyp__, questo non sono sicuro ma mi pare di aver capito che scstyp se vale 1 è indica il richiamo del programma, mentre con 8 è la sua ripresa dopo il richiamo di un altro programma. Non mi pare ci siano altri valori

-__scfunc__ = 0, ci sono anche altri valori, ma ad essi non è ho mai trovato attribuiti un tempo cpu

 

Questa estrapolazione mi permette perciò ti ottenere la classifica per tempo macchina dei programmi utilizzati, con l’indicazione pure del numero di chiamate ad essi effettuate.
%%prettify 
{{{

SELECT scstyp, scfld1, SCSEQ, SCCPU, SCDB, SCNDB, SCEST1, SCXST1            

FROM nomefiletrace

WHERE SCFUNC=0

order by scseq

}}}
/%
 

Dove:

-__scseq __ è il numero di sequenza di esecuzione

-__scdb__ è il numero di letture del database effettuate

-__scndb__ è il numero di letture non di database effettuate (questo non ho ancora appurato bene cosa significa)

-__scest1__ è il numero di specifica del compilato di inizio esecuzione del programma

-__scxst1__ è il numero di specifica del compilato di fine esecuzione del programma

 
Tramite questa estrapolazione posso perciò ottenere la sequenza dei richiami evidenziato su un sola schermata i dati più rilevanti.

 

Aggiungo che in un primo momento avevo escluso tutti i pgm che iniziavano per Q, visto che ce n’erano una marea, ma questo mi è stato fuorviante perché fra di essi c’erano alcuni richiami ad API di sistema che avevano invece un certo impatto sulle performance (vedi QUSRMBRD, QUSRTVUS, QUSCUSAT, QUSDLTUS).