#Klooienmetcomputers

Omgeving: input-output

Arnout van Kempen over rommelen in een digitale wereld.

In de Environment division geef je, zo nodig, ook de I/O devices en de te gebruiken bestanden weer. Dit gebeurt in de Input-output section, die weer is verdeeld in twee paragrafen: File control en I-O control.

In de eerste paragraaf kan je met het commando SELECT logische bestandsnamen, zoals je die in je programma gaat gebruiken, koppelen aan fysieke bestandsnamen zoals het besturingssysteem ze kent. Je geeft hierbij ook aan op welke manier die bestanden zijn georganiseerd en benaderd kunnen worden. Denk hierbij aan mogelijkheden als sequentiële of geïndexeerde organisatie en sequentiële of random access benadering. Je kan daarbij aangeven welke sleutelvelden een bestand kent en waar de I/O-status wordt opgeslagen. Bijvoorbeeld: 

INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT CustomerFile ASSIGN TO "CUSTOMER.DAT"
        ORGANIZATION IS LINE SEQUENTIAL
        ACCESS MODE IS SEQUENTIAL
        FILE STATUS IS WS-CUSTOMER-STATUS. 

    SELECT OrdersFile ASSIGN TO "ORDERS.DAT"
        ORGANIZATION IS INDEXED
        ACCESS MODE IS DYNAMIC
        RECORD KEY IS Order-ID
        FILE STATUS IS WS-ORDERS-STATUS.

In de tweede paragraaf, I-O-CONTROL, kan je desgewenst nog wat nauwkeuriger zaken voor input/output weergeven. Zo betekent

I-O-CONTROL.
    APPLY WRITE-ONLY TO OrdersFile.

    RERUN ON FILE OrdersFile
        AT END RESTART PROCESSING FROM RECORD 100.

dat de OrdersFile in dit programma alleen geschreven zal worden, niet gelezen. En als het programma een tweede keer wordt uitgevoerd, zal begonnen worden bij record 100.

Ten slotte nog een andere toepassing van deze divisie. Uit Linux en Windows kennen we het gebruik van stdin, stdout en stderr als logische bestanden, die fysiek zijn gekoppeld aan de terminal (toetsenbord, beeldscherm, beeldscherm). We maken daar gebruik van als we programma's via een pipe koppelen ( cat bestand|more) en we kunnen die kanalen afvangen en bijvoorbeeld naar een printer sturen, of naar een ander bestand (cat bestand>lpt1). COBOL kan dat ook, maar wil dan wel weten hoe dat er precies uit gaat zien, door dergelijke kanalen aan een bestandsnaam te koppelen:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT PrintFile ASSIGN TO PRINTER
        ORGANIZATION IS LINE SEQUENTIAL.

    SELECT TerminalInput ASSIGN TO SYSIN
        ORGANIZATION IS LINE SEQUENTIAL.

    SELECT TerminalOutput ASSIGN TO SYSOUT
        ORGANIZATION IS LINE SEQUENTIAL.

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.