Een energiebedrijf vervaardigt acceptgiro's met het programma accepten. Een acceptgiro is 4 inch hoog en wordt bedrukt met 6 regels per inch. De bovenste twee en de onderste twee regels zijn altijd leeg. Van de 20 regels bedrukt het programma de nummers 1, 3, 6, 11, 12, 13 en 20. Elke regel kan maximaal 70 tekens bevatten.
De gegevens komen uit het sequentiële schijfbestand accept-gegevens. Gegevens die op elke acceptgiro gelijk zijn, staan in het eerste record. Daarna volgen de records met de variabele gegevens. Elk record heeft een lengte van 128 tekens. De blokkingsfactor is 8.
illustratie: Geert Nijmolen
Het eerste record bevat de betrokken periode (posities 1-20) die op elke acceptgiro moet komen te staan op de eerste regel vanaf positie 25. De posities 21-27 bevatten het gironummer van het energiebedrijf. Dat moet op de posities 53-60 van regel 20 staan, voorzien van een plusteken aan de rechterkant. De posities 28 en 29 bevatten een codenummer. Dat nummer moet op de posities 62-64 van regel 20 staan, voorzien van een groter-dan-teken aan de rechterkant. De rest van het eerste record is leeg.
Elk volgend record bevat een bedrag in centen (posities 1-8). Dit bedrag moet tweemaal op de acceptgiro komen. Op de posities 3-12 van regel 3 moet het bedrag worden voorzien van een F aan de linkerzijde, nulonderdrukking over maximaal 5 cijfers en een komma tussen de guldens en de centen. Zonder opmaak moet het bedrag staan op de posities 32-39 van regel 20.
Na het bedrag staat in het record een betalingskenmerk van 16 cijfers. Dit getal moet eveneens twee keer op de acceptgiro staan. Eenmaal op regel 3 vanaf positie 25, waarbij na elke vier cijfers een spatie moet staan. De tweede maal is op de posities 3-19 van regel 20, met een plusteken aan de rechterkant.
De posities 25-33 van het record bevatten het giro- of banknummer van degene die moet betalen. Is het getal kleiner dan 10 miljoen, dan betreft het een gironummer, anders een banknummer. Het nummer moet met nulonderdrukking op de posities 21-30 staan met een kleiner-dan-teken aan de rechterzijde. Een gironummer moet met nulonderdrukking ook nog komen op de posities 6-14 van regel 6. Een banknummer moet op regel 6 vanaf positie 25 staan met een punt na het tweede, vierde en zesde cijfer.
Het restant van het record bevat de naam, het adres en de woonplaats. Deze drie delen staan achter elkaar, gescheiden door een schuine streep. Deze gegevens moeten op de regels 12, 12 en 13 van de acceptgiro komen, te beginnen op positie 8. De woonplaats begint met de postcode (eerste 6 posities; zonder spaties). Op de acceptgiro moet tussen de vier cijfers en de twee letters van de postcode één spatie staan, tussen de twee letters en de woonplaatsnaam twee spaties.
identification division. program-id. accepten. ************ vervaardigen van acceptgiro's ************ door Andree Hollander, 1988/10/22 environment divison. configuration section. special-names. currency sign is "F"; decimal-point is comma. input-output section. file-control. select accept-gegevens assign to disk. select regeldrukker assign to printer. data division. file section. fd accept-gegevens; block contains 8 records. 01 eerste-record. 03 ag-periode pic X(20). 03 ag-naar-rekening pic 9(07). 03 ag-codenummer pic X(02). 03 filler pic X(99). 01 volgende-records. 03 ag-bedrag pic 9(6)V99. 03 ag-kenmerk pic 9(16). 03 ag-van-rekening pic 9(09). 03 ag-naw pic X(95). fd regeldrukker; linage 20 lines, top 2, bottom 2. 01 regel pic X(70). working-storage section. 01 regel-1 pic B(24)X(20). 01 regel-3. 03 pic XX, value spaces. 03 regel-3-bedrag pic FZZZZZ9,99. 03 regel-3-kenmerk pic B(12)9999B9999B9999B9999. 01 regel-6. 03 gironummer pic B(5)Z(9). 03 banknummer pic B(9)99.99.99.999. 01 regel-11 pic B(8)X(68). 01 regel-12 pic B(8)X(68). 01 regel-13 pic B(8)XXXXBXXBBX(57). 01 regel-20. 03 regel-20-kenmerk pic BB9(16)+. 03 rekeningnr pic BZ(9). 03 pic X, value "<". 03 regel-20-bedrag pic B9(6)V99. 03 naar-rekening pic B(13)9(7)+. 03 codenummer pic BXX. 03 pic X, value ">". 01 einde-wissel pic X, value "N". 88 einde-accepten value "J". 01 naam pic x(68). 01 adres pic x(68). 01 woonplaats pic x(68). * procedure division. A-basis. open input accept-gegevens, output regeldrukker perform B-verwerk-eerste-record perform with test before until einde-accepten read accept-gegevens at end set einde-accepten to true not at end perform C-druk-acceptgiro end-read end-perform close accept-gegevens, regeldrukker stop run. * B-verwerk-eerste-record. read accept-gegevens at end set einde-accepten to true not at end move ag-periode to regel-1 move ag-naar-rekening to naar-rekening move ag-codenummer to codenummer end-read. * C-druk-acceptgiro. * vullen van de velden move ag-bedrag to regel-3-bedrag, regel-20-bedrag move ag-kenmerk to regel-3-kenmerk, regel-20-kenmerk move ag-van-rekening to rekeningnr move space to regel-6 if ag-van-rekening < 10000000 then move ag-van-rekening to gironummer else move ag-van-rekening to banknummer end-if * resultaatvelden van de unstring-opdracht mogen niet * opgemaakt zijn; daarom kunnen de naam, het adres en * de woonplaats niet rechtstreeks in regel-11, regel-12 * en regel-13 worden geplaatst. unstring ag-naw delimited by "/" into naam, adres, woonplaats move naam to regel-11 move adres to regel-12 move woonplaats to regel-13 * * afdrukken van de regels write regel from regel-1 after advancing page write regel from regel-3 after advancing 2 lines write regel from regel-6 after advancing 3 lines write regel from regel-11 after advancing 5 lines write regel from regel 12 after advancing 1 line write regel from regel-13 after advancing 1 line write regel from regel-20 after advancing 7 lines.