#Klooienmetcomputers

Typecasting in COBOL

Arnout van Kempen over rommelen in een digitale wereld.

Vorige keer hebben we in behoorlijk detail bekeken hoe types werken in COBOL. In feite kent COBOL het begrip 'type' niet, maar gebruikt het de picture clause om exact te beschrijven hoe een waarde van een variabele er uit gaat zien. Speciaal voor financiële mensen zitten in COBOL aardigheidjes als de keuze om het minteken van een negatief getal voor of juist achter het getal te plaatsen. Floating point is mogelijk, maar zelden echt nodig in ons soort omgevingen.

COBOL doet niet moeilijk over type casting zoals we dat in C en Rust ook kennen, met dat verschil dat COBOL het eigenlijk altijd impliciet doet en zelden nodig heeft. Ter herinnering, in C kan je zoiets zeggen als

int a = 10;
float b = 3.5;
float resultaat = a + b.

Dit is een impliciete type cast van a naar een float, om de berekening mogelijk te maken. De uitkomst zal netjes 13.5 zijn, zoals je verwacht. In COBOL werkt het eigenlijk net zo, maar altijd impliciet.

Als je de volgende data hebt gedefinieerd:

01  A PIC 9(3) VALUE 10.
01  B PIC 9(3)V99 VALUE 3.5.
01  RESULTAAT 9(3)V99.

En in je procedure staat

ADD A B GIVING RESULTAAT.

Dan converteert COBOL A eerst naar 10.00, telt daar 3.50 bij op, en RESULTAAT krijgt de waarde 13.50. 

Overigens had je ook COMPUTE RESULTAAT = A + B. kunnen gebruiken, als je toch stiekem wel graag met formules rekent. Wat wel geldig COBOL is, maar hier niet bruikbaar was geweest is ADD A TO B. Hierbij zou B het resultaat bevatten en dat was de bedoeling niet. 

Kortom, type casting werkt in COBOL net zo makkelijk als impliciete type casting in C, met dezelfde waarschuwingen: als het resultaat niet past, kan je onverwachte uitkomsten krijgen. Expliciete type casting bestaat in COBOL niet. Maar door de enorme vrijheid en exactheid die COBOL in de picture clause kent, is type casting eigenlijk vrijwel nooit nodig.

Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.

Arnout van Kempen di CCO CISA is directeur compliance & risk bij aaff, de fusieorganisatie van Alfa en ABAB. Hij schrijft op persoonlijke titel.

Gerelateerd

reacties

Reageer op dit artikel

Spelregels debat

    Aanmelden nieuwsbrief

    Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

    Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.