MainframeSupports
tip uge 48/2012:

Hvis den installation, du arbejder på, har udarbejdet et centralt system til at opsamle programfejl, så vil jeg på det varmeste anbefale dig at bruge dette system og lade være med at læse mere af dette tip.

Jeg har konstateret, at meget få installationer (i hvert fald i Danmark) har udarbejdet et centralt system til opsamling af programfejl. Der stilles typisk også store krav til et sådant system:

Og jeg har sikkert glemt et par stykker. Kravslisten og de krav, det stiller til programmørerne med hensyn til programmeringsstil, får ofte et centralt system til opsamling af fejl til at blive i mølposen. Der findes dog installationer, hvor det er lykkedes, og her er fejlfinding i den grad en leg i forhold til andre installationer.

Hvis du selv er træt af manglen på et centralt system til fejllogning, så er her en simpel ide til, hvordan det kan gøres for alle DB2-programmer. For det første skal du oprette en DB2-tabel til at logge fejlene i. Hver gang dit program støder på en fejl, der fortjener at blive logget og derudover kræver en ROLLBACK, så gør følgende:

  1. Udsted en ROLLBACK (i CICS skal du bruge en EXEC CICS SYNCPOINT ROLLBACK).
  2. Lav en INSERT på din fejltabel med så mange informationer som muligt.
  3. Udsted en COMMIT (i CICS skal du bruge en EXEC CICS SYNCPOINT).
  4. Terminer eksekveringen.

Installationer med systemer til fejllogning bruger typisk MQ til at logge fejlen i, fordi MQ kan skrive til en kø uden at data skrevet til køen bliver rullet tilbage. Men som det ses af ovenstående, så er det slet ikke nødvendigt at komplicere fejllogningen ved at inddrage endnu en komponent. Den almindelige opfattelse af at bruge DB2 til fejllogning er, at det ikke kan lade sig gøre, fordi data skrevet til DB2 vil blive rullet tilbage. Men hvis du alligevel har styr på, at du skal lave ROLLBACK, så kan du da lige så godt lave en INSERT efter ROLLBACK og så lave en COMMIT. Det påvirker absolut ingenting udover, at du nu får registreret din fejl på en let tilgængelig måde.

Forrige danske tip        Last tip in english        Tip oversigten