MainframeSupports
tip uge 45/2008:

I COBOL er det muligt at skrive betingelser på næsten samme måde, som når man anvender almindeligt skriftsprog. Et eksempel: "farven er grøn, gul eller rød" kan skrives som FARVE = 'GRØN' OR 'GUL' OR 'RØD', hvor man i andre programmeringssprog er nødt til at skrive FARVE = 'GRØN' OR FARVE = 'GUL' OR FARVE = 'RØD' for at opnå samme effekt. Det er faktisk muligt at forkorte andre betingelser end OR, men man skal nok lige prøve, om man opnår det forventede resultat før endelig anvendelse i produktion.

Hvis jeg nu formulerer, at "farven skal være grøn, gul eller rød og være fremstillet i danmark, så vil jeg i andre programmeringssprog vælge at skrive (FARVE = 'GRØN' OR FARVE = 'GUL' OR FARVE = 'RØD') AND FARVELAND = 'DANMARK', mens jeg i COBOL fristes til at skrive FARVE = 'GRØN' OR 'GUL' OR 'RØD' AND FARVELAND = 'DANMARK'. Desværre fortolker COBOL denne betingelse som FARVE = 'GRØN' OR FARVE = 'GUL' OR (FARVE = 'RØD' AND FARVELAND = 'DANMARK'), og dermed virker betingelsen kun som forventet, når FARVE er sat til 'RØD'. Av, av, av, den har drillet mange programmer på den installation, jeg arbejder på for tiden, og resulteret i en del produktionsfejl. Man skal altså huske at sætte parenteser i sine betingelser, når man kombinerer AND og OR med opremsninger af værdier. Den ønskede effekt opnås i det nævnte eksempel ved at skrive (FARVE = 'GRØN' OR 'GUL' OR 'RØD') AND FARVELAND = 'DANMARK', selv om det langt fra er indlysende.

Forrige danske tip        Last tip in english        Tip oversigten