Elk computersysteem waarop COBOL 'draait' (zo heet dat), beschikt over een standaarduitvoer- en een standaarinvoerapparaat. De leverancier (implementor) van de compiler bepaalt welke apparaten dat zijn. In de voorafgaande hoofdstukken gebruikten we een microcomputer als voorbeeld. Daarbij namen we aan dat het beeldscherm en het toetsenbord de standaardapparaten waren.
De display-opdracht gebruikt de apparatuur die de leverancier als standaard heeft aangewezen. Tenzij we als gebruiker anders aangeven. En dat gaan we nu doen. We gaan weer uit van een microcomputer. Het beeldscherm is het standaarduitvoermedium. Maar we hebben ook een printer. Voor die printer moeten we een zelfgekozen naam verzinnen. Laten we matrix nemen. Uitvoer op de printer krijgen we met de volgende opdracht:
display "Onze printer noemen we MATRIX" upon matrix
Heel eenvoudig dus. We breiden de display-opdracht uit met upon en daarachter de naam die we aan de printer gaven.
Maar dat is nog niet alles. Want hoe kan de computer weten dat de naam matrix hoort bij de printer? Dat kan hij alleen weten als wij het hem vertellen. De randapparatuur hoort bij de omgeving van de computer. Voor zaken die met apparatuur te maken hebben, kent COBOL de environment division.
onthoud
In de environment division bestaat een aparte paragraaf, special-names, om de koppeling te leggen tussen een zelfgekozen naam en de apparaatnaam van de leverancier.
Let op het streepje in de naam! Als je special names schrijft (zonder streepje), dan zijn het twee namen. De spatie is in COBOL immers het belangrijkste scheidingsteken. Twee woorden kunnen niet de naam van een paragraaf vormen.
Voorbeeld:
ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. printer is matrix.
De paragraaf special-names bevindt zich in de configuration section. De naam matrix is onze zelfgekozen naam. De naam printer is een zogenaamde implementor-naam. Dat is een naam die de fabrikant van de compiler verschaft. Hij kan dus per computersysteem verschillen. Kijk in de boeken van de computer om te zien welke implementor-namen de leverancier heeft gekozen. Wij houden als voorbeeldnaam voor de printer printer aan.
Je vraagt je misschien af waarom je niet gewoon de implementor-naam in de procedure division mag gebruiken. Dat heeft te maken met de opbouw van een COBOL-programma (zie paragraaf 2.1). Men probeert zoveel mogelijk hardware-zaken in de division te stoppen die daar speciaal voor is gemaakt: de environment division. Bij wijze van uitzondering is het overigens toegestaan om voor de zelfgekozen naam de implementor-naam te kiezen. Je krijgt dan bijvoorbeeld:
special-names. printer is printer.
In de display-opdracht staat na upon dan het woord printer:
display "Onze printer noemen we MATRIX" upon printer
Sommige fabrikanten hebben in hun compiler geen upon-optie in hun display-opdracht ingebouwd. Dat is jammer. Maar misschien kan het betrokken computersysteem wel een schermafdruk op papier maken. Op die manier krijg je toch iets afgedrukt. Sommige operating systems (bijvoorbeeld MS-DOS) hebben opdrachten om de uitvoer van een programma naar ander apparaat te sturen. Daarmee is het mogelijk om elk apparaat aan te wijzen als standaarduitvoerapparaat.
De accept-opdracht gebruikt de apparatuur die de leverancier als standaard heeft aangewezen. Tenzij we anders aangeven. Zoals we de display-opdracht mogen uitbreiden, zo mag dat bij de accept ook. Bij display was het met upon gevolgd door een zelfgekozen naam, bij accept is het woord from. Ook na dat woord komt een zelfgekozen naam. Die naam moet ook in de special-names paragraaf zijn gekoppeld aan een randapparaat.