3.12 Subroutines

COBOL is zodanig ontworpen dat de taal gelijkenis vertoont met gewoon geschreven Engels. Bij een goed geschreven programma wil je vrij snel kunnen zien wat het doet. Daartoe moeten hoofd- en bijzaken niet door elkaar staan. Het programmavoorbeeld eindtijd van paragraaf 2.10 is wat dat betreft eigenlijk al een grensgeval. En het is (laten we het maar eerlijk toegeven) een onbeduidend programma. Maar toch is het al aan de lange kant om vlug een overzicht van te krijgen. Het programma bestaat uit een reeks van opdrachten, afgesloten met stop run, maar het programma bestaat ook uit een aantal verschillende onderdelen. Een programmaonderdeel moet niet te lang zijn en bij voorkeur één functie verrichten.

illustratie: Geert Nijmolen

cartoon

Voor het groeperen van opdrachten kent COBOL het principe van paragrafen. In het programma eindtijd van paragraaf 2.10 staan wel paragrafen, maar ze werden nog niet echt gebruikt. We kunnen de hoofdlijn van het programma duidelijker maken door de paragrafen achter elkaar aan te roepen. We geven de computer de naam van een paragraaf en zeggen dat hij de opdrachten van die paragraaf moet uitvoeren. De opdracht die COBOL daarvoor kent is het perform-statement:

PROCEDURE DIVISION.
Hoofdstructuur.
    Perform Invoer-begintijd
    Perform Invoer-duur
    Perform Bereken-eindtijd
    Perform Druk-eindtijd-af
    Stop run.

Invoer-begintijd.
    Display "Geef de begintijd op in 24-uurs-notatie."
    ... (hier volgt de rest van het programma)
 

De paragraaf hoofdstructuur bevat nu achter elkaar aanroepen van de verschillende onderdelen. Daardoor wordt veel overzichtelijker wat het programma doet. De details staan in de genoemde paragrafen. Door de opdracht perform invoer-begintijd begint de computer aan die paragraaf. Hij doet de display-opdracht en daarna de overige opdrachten van die paragraaf. Als alle opdrachten van die paragraaf zijn geweest dan is meteen de opdracht perform invoer-begintijd uitgevoerd. Hij gaat dan verder met de volgende opdracht uit de hoofdstructuur: perform invoer-duur. Als alle paragrafen aan de beurt zijn geweest, is het programma klaar en volgt er een stop run. Het programma is dan klaar. Alle paragrafen zijn aan de beurt geweest.

In de programma-listing volgt na de stop run de beschrijving van de paragrafen. Elk van die paragrafen kunnen we beschouwen als een subroutine.

onthoud

Voor het aanroepen van een subroutine gebruiken we het perform-statement.

De perform-opdracht heeft veel verschijningsvormen. We kenden de perform al voor het uitvoeren van een herhaling. De perform voor het aanroepen van subroutines heeft niets te maken met het uitvoeren van herhalingen. Er is dus geen with test after en ook geen until. Na het woord perform komt de naam van de paragraaf die de computer moet gaan uitvoeren.

Programma's met subroutines sluiten mooi aan bij programmastructuurdiagrammen. Bij PSD's maakt met om dezelfde reden (overzichtelijkheid) veel gebruik van dit subroutine-principe.

De aangeroepen subroutine kan zelf ook weer ingewikkeld zijn en lang worden. In de subroutine mogen dan nieuwe perform-opdrachten voorkomen die weer andere subroutines aanroepen. Het voorbeeldprogramma aan het eind van dit hoofdstuk laat dat zien.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo