#Klooienmetcomputers

AI? Hou op! COBOL!!

Arnout van Kempen over rommelen in een digitale wereld.

Zoals de vorige keer al aangegeven, gaat het even niet over allerlei nieuws; we duiken in de wereld van oude systemen, een wereld waar steeds minder mensen een idee bij hebben, maar die zeker in de administratieve hoek nog bepaald niet verdwenen is. COBOL dus.

Om daarmee te experimenteren hebben we om te beginnen een COBOL-compiler nodig. Een compiler die breed beschikbaar is en makkelijk in gebruik, is open-cobol of gnuCobol. Voor de Windows-versie zal je Google of ChatGPT moeten raadplegen. Op de Raspberry Pi werkt installatie simpel:

sudo apt install gnucobol

En op een Mac bereik je hetzelfde met

brew install gnu-cobol

Als je wil testen of het gelukt is, dan kan je bijvoorbeeld mijn programmaatje van vorige keer van GitHub halen, dat heet daar 073-optellen.cob

Compileren gaat met

cobc -x -free -o optellen optellen.cob

Doe je vervolgens

./optellen

dan zou je vervolgens de werking moeten zien.

Daarbij zal je opvallen dat wat je ook invoert, het resultaat altijd uit vier cijfers bestaat. Dat is meteen een van de eigenaardigheden van COBOL. De taal kent een heel eigen typing systeem. Waar C en Rust een scala aan types kennen, maar die dan ook wel vrij strikt hanteren, kent COBOL eigenlijk geen echte types. Je maakt zelf je type, per variabele. En dat type is dan niet alleen hoe de variabele wordt opgeslagen, het is ook hoe deze wordt weergegeven.

Zou je in C een variabele int resultaat; hebben gedeclareerd en die heeft de waarde 10, dan krijg je bij weergave 10 te zien. Zo niet in COBOL. Als je in het programma de WORKING-STORAGE SECTION van de DATA DIVISION opzoekt, dan zie je dat de variabele RESULTAAT een type-aanduiding, in COBOL een Picture, heeft gekregen van 9(4). De 9 staat voor numeriek en de 4 geeft aan dat de variabele uit 4 numerieke tekens bestaat. Als de waarde 10 is, is de weergave dus 0010.

Ik gaf de vorige keer al aan dat COBOL bedoeld is voor mensen die niet van symbolen houden. Als je het programma bekijkt, zal het je opvallen dat geen enkel wiskundig symbool is gebruikt. Alleen de haakjes in de variabelen-definitie hebben nog iets wiskundigs in zich, maar gekker dan dat wordt het niet.

Wat hopelijk ook opvalt, is dat COBOL een vaste structuur heeft van verschillende divisies en secties, die zo op het oog wat onbegrijpelijk kunnen zijn. Maar vooral de PROCEDURE DIVISION is gewoon leesbaar Engels. Zonder enige programmeerkennis moet je kunnen begrijpen wat daar gebeurt. De taal heeft zelfs een aantal volstrekt overbodige kenmerken, die alleen maar nuttig zijn voor de leesbaarheid. Zoals een punt na iedere “zin”. En een STOP RUN aan het eind.

Tenslotte nog één aardigheidje: COBOL werkt met hoofdletters. Waarom? Omdat het in 1959 nog helemaal niet vanzelfsprekend was dat iedere computer beschikte over kleine letters. En COBOL moest werken op iedere computer die in 1959 in Amerika gemaakt werd. Ook met een beperkte karakterset.

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 Senior manager Risk & Compliance bij Baker Tilly. Hij schrijft op persoonlijke titel. Hij is lid van de Commissie Financiƫle verslaggeving & Accountancy van de AFM en lid van de signaleringsraad van de NBA. Daarnaast is hij diaken van het bisdom 's-Hertogenbosch.

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.