#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 directeur compliance & risk bij aaff, de fusieorganisatie van Alfa en ABAB. Hij schrijft op persoonlijke titel.

Gerelateerd

10 reacties

Glenn Mungra

Die goeie oude Cobol. Ik herinner me nog dat ik ergens in zo'n programma een punt was vergeten. Op dat moment krijg je dan na de compilatieverwerking een foutmelding, zonder dat duidelijk is waarom het programma niet loopt. En hoe grondig ik ook zocht, ik zag de ontbrekende punt niet eerder dan na veel gezucht, enkele niet-relevante aanpassingen en zoekwerk. En er bestonden toen nog geen psychiaters voor dit soort relatieproblemen. Romantisch hé?

Arnout van Kempen

Mensen die zeggen wat ze zouden doen, en mensen die iets doen, dat zijn vaak niet dezelfde mensen.

Alle Bergsma

Ik ben blij dat er mensen zijnde dit prachtig vinden en direct opkomen voor deze column.

Persoonlijk vind ik de columns een beetje blijven hangen in 'Computer zeg: Hello World!'. Hoera het werkt. Dat komt wellicht ook omdat ik zelf me in basis wel red met bijvoorbeeld vba of php/css en het daarom wellicht wat erg basis vindt.

Ik zou de columns zelf wat meer op praktische toepassingen voor de dagelijkse praktijk richten. Bijvoorbeeld handige functies in excel die er in allerlei soorten en maten zijn.

Ik wens allen veel plezier en succes met deze columns en zal mijn mening hierover niet meer bij deze columns over klooien met computers zetten. Goed weekend gewenst!

Ron Heinen

@Menno Bouma 11 september 2024

Ik kan je reactie alleen maar onderschrijven.

Behalve dat er veel noeste praktische arbeid ('geklooi') nodig is in deze digitale maatschappij vind ik ook dat velen onderschatten hoeveel inzicht dit geklooi vergt.

Echter, als je eenmaal deze noeste arbeid verricht hebt, dan kun je ook tot in de oneindige toekomst gebruikmaken van het produkt van deze noeste arbeid, de software. En de Cobol software is hiervan een mooi voorbeeld. Een artikeltje wat hierbij bij mij opkomt is te vinden op:

https://www.agconnect.nl/tech-en-toekomst/development/goede-software-vergaat-niet

Menno Bouma

Als je het niks vindt, lees je het toch gewoon niet? Scheelt energie en/of irritatie.

Ik denk dat een hoop mensen wat kunnen opsteken van een beetje praktische-programmeer-nieuwsgierigheid en de manier van denken die daar bij komt kijken. Minder high-level blabla over AI en andere hippe ontwikkelingen, meer noeste praktische arbeid ('geklooi').

Die collega's die moeite hebben met Excel formules en/of VBA leren er vast ook wat van en als ze netjes bij het begin van de reeks beginnen, denk ik niet dat het volstrekt onbegrijpelijk is ;-)

Arnout van Kempen

Wellicht wil de redactie aangeven waarom zij dit hoekje graag zo ingevuld ziet.

Als auteur heb ik volgens mij al aardig vaak uitgelegd waarom ik het van belang vind, maar welke auteur zal diens eigen werk als onzinnig afserveren.

Gezien het feit dat mijn stukjes niet op papier verschijnen, en ik er geen vergoeding voor ontvang, is het wellicht geruststellend dat het noch verplicht is te lezen, noch een meetbaar percentage van de lidmaatschapsbijdrage kost.

En er is vanzelfsprekend altijd ruimte voor een positieve, inhoudelijke, bijdrage. De heer Heinen levert die bijvoorbeeld stelselmatig.

Alle Bergsma

Al tijden vraag ik me af wat enkele opmerkingen over basisprogrammeren op een accountancy platform moeten. Voor iemand die niets van programmeren weet is het volstrekt o begrijpelijk. Voor iemand die wel wat van programmeren weet is het een wel heel simpele basis. Waarom? Waarom?

En dan nu een titel over geen AI maar en zeer oud pakket. Daarna geen woord over AI, maar een uitleg dat je kunt optellen tot maximaal 9999. Waarom?

Mijn collega's ontgaat meestal een vrij basis excelformule al, laat staan een beetje vba.

Ron Heinen

@Arnout van Kempen 10 september 2024

Dank voor je reactie. Op de link

https://www.ibm.com/topics/cobol

is nog een aardig artikeltje te vinden.

"It also supports 80 percent of in-person credit card transactions, handles 95 percent of all ATM transactions, and powers systems that generate more than USD 3 billion of commerce each day.1 Due to its superior stability and processing power, it continues to play an integral role in helping businesses maintain apps and programs in existing architectures. "

Aansluitend bij je eerdere

https://www.accountant.nl/achtergrond/2024/9/commandeur-grace-hopper/

kun je op

https://www.tpr.org/technology-entrepreneurship/2019-05-23/how-cobol-still-powers-the-global-economy-at-60-years-old

ook nog een aardig artikeltje vinden.

Arnout van Kempen

Terechte correctie in de compilatie-regel, dank daarvoor!

Dat AI tegenwoordig Cobol naar Java kan vertalen is heel mooi, en ook dringend noodzakelijk om de bestaande codebase bruikbaar te houden in het licht van de snel verdwijnende groep Cobol-programmeurs. Het vraagt dan wel goede Java-programmeurs die ook het onderliggende Cobol-programma echt begrijpen, om de betrouwbaarheid van die vertaling vast te stellen. Het kunnen lezen van Cobol blijft daarmee nog wel een tijdje relevant.

Ron Heinen

Dank voor deze nieuwe #Klooienmetcomputers.

Het compileren en uitvoeren van 073-optellen.cob werkt naar behoren.

Alleen de regel in deze klooien met computers zou moeten zijn:

cobc -x -free -o optellen 073-optellen.cob

Het grappige is dat als je 073-optellen.cob met Microsoft Visual Studio Code opent deze het niet als code herkent. Door Microsoft lijkt Cobol te zijn afgeschreven.

Merk op dat er goede AI vertalers zijn om Cobol in Java te vertalen, zie bijvoorbeeld

https://www.agconnect.nl/tech-en-toekomst/development/cobol-herleeft-dankzij-genai

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

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.