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.
Gerelateerd
Omgeving: de configuratie
Arnout van Kempen over rommelen in een digitale wereld.
Identificatie
Arnout van Kempen over rommelen in een digitale wereld.
Verhalen vertellen
Arnout van Kempen over rommelen in een digitale wereld.
Commandeur Grace Hopper
Arnout van Kempen over rommelen in een digitale wereld.
Wat is het verschil tussen een computer en pen en papier?
Arnout van Kempen over rommelen in een digitale wereld.