Vidste du, at man kan sætte trace på DSN-processoren til DB2, eller for den sags skyld, at man kan sætte trace på DB2-programmer, der benytter CAF-interfacet. Det er faktisk ret nemt, men udbyttet er desværre begrænset.
Lad os starte med CAF-interfacet. Under TSO er det smarteste at udstede en
TSO ALLOC FI(DSNTRACE) DA(*), hvorefter det vil vælte ud over
skærmen med trace-output, hver gang du eksekverer et program, der benytter
CAF-interfacet. Det gør QMF for eksempel, eller diverse REXX/DB2-interfaces.
Når du er træt af at se på trace-outputtet, så udsteder
du simpelthen en TSO FREE FI(DSNTRACE) og alt er normalt igen. Læg dog
mærke til, at så længe din TSO-session har en forbindelse til
DB2, så vil DSNTRACE stå åben, og så kan du ikke lave en
TSO FREE. I batch tilføjer du bare et ekstra DD-kort, eksempelvis
Trace på DSN-processoren får du ved at udstede en DSN SYSTEM(<ssid>) TEST(101). Trace-outputtet udskrives på SYSTSPRT. Du vil med andre ord få væltet en masse trace-output ud på din skærm, hvis du udsteder en TSO DSN SYSTEM(DB2) TEST(101) fra kommandolinien. Tallet 101 skyldes, at man kan begrænse trace-outputtet ved at angive et to-cifret tal, som angiver de to sidste cifre i det DB2-modulnavn, som man ønsker at trace, og alle værdier større end 100 betyder, at man ønsker at trace samtlige moduler. Sjovt nok hedder det modul, der styrer selve SQL-kaldene DSNETRAP, men værdien 16 virker fint, hvis man kun ønsker at se, hvornår der udstedes SQL-kald. Trace-outputtet stopper i samme sekund, DSN-processoren stopper. Ved at allokere DSNTRACE får du udskrevet trace-outputtet på DSNTRACE i stedet for på SYSTSPRT og det kan være ret praktisk i batch.
Når du nu har prøvet det her i praksis, vil du nok blive lidt skuffet. Det vælter simpelthen ud med en masse trace-output, som man ikke umiddelbart kan bruge til noget som helst. Det mest interessante er nok selve SQL-kaldene og under trace af CAF-interfacet kan man faktisk se den returnerede sqlcode, mens man under trace af DSN-processoren kun kan se, at der udstedes SQL-kald. Hver eneste linie trace-output starter med en DSN-message og den kan man slå op i messages and codes. Så bliver man måske lidt klogere.