En-til-en konvertering når det er bedst |
I forbindelse med en ny, stor kunde skulle jeg konvertere et større antal IBM COBOL/CICS programmer til VAX COBOL/ACMS. Det var på forhånd aftalt at det skulle være en streng 1-1 konvertering - al ny funktionalitet skulle komme i en senere fase. Jeg valgte VAX SCAN lexer/parser til opgaven og skrev et program der automatisk kunne konvertere IBM COBOL/CICS kildeteksterne til det nye format. DEC COBOL var meget lig IBM COBOL, men IBM CICS og VAX ACMS er temmelig forskellige, selv om de løser præcis den samme opgave. IBM CICS er kildetekst flettet ind i COBOL programmerne, mens VAX ACMS kalder COBOL moduler som en slags sub-rutiner (iøvrigt ganske som TUXEDO). Derfor var der behov for - groft sagt - at vende vrangen ud på kildeteksten. Jeg skrev en SCAN program og afprøvede konverteringen på et par udvalgte programmer, som var aftalt på forhånd med kunden. Da de konverterede programmer så ud til at virke, inviterede vi til en lille præsentation, hvor kundens regnskabschef fik æren af at prøvekøre den nye udgave af det første program. Han satte sig til tastaturet, udfyldte rask et par felter på skærmbilledet og trykkede på RETURN -- og programmet stod øjeblikkeligt af med et hult drøn og et imponerende stack-dump. Vi var knuste. Worst case scenario - en demo der dumper. Kun regnskabschefen så ganske tilfreds ud. "Det ser meget godt ud", sagde han omsider, "den fejl har det nuværende system også...". Vi blev senere rost for konverteringen med karakteristikken: "Det var en perfekt 1-1 konvertering - selv fejlene kom med". |