Programmeren in COBOL/Velden/Editing

Uit Wikibooks

Programmeren in COBOL

Inhoudsopgave

  1. Groepsvelden en conditie met voorwaardenaam Zeer goed ontwikkeld. Revisiedatum: 21 oktober 2007 (Oef Nog vrijwel niets. Revisiedatum: 20 november 2007 )
  2. Tabellen Goed ontwikkeld. Revisiedatum: 21 oktober 2007 (Oef Nog vrijwel niets. Revisiedatum: 20 november 2007 )
  3. Editing Zeer goed ontwikkeld. Revisiedatum: 16 november 2007 (Oef Nog vrijwel niets. Revisiedatum: 20 november 2007 )
  4. Embedded SQL Redelijk ontwikkeld. Revisiedatum: 21 oktober 2007



Je kan met COBOL de leesbaarheid van gegevens verbeteren via data editing. Dit betekent dat je een opmaak geeft aan een veld. Bijvoorbeeld je hebt een datum in een veld met een PICTURE 9(8) opgeslagen als 01012001. Als je dit toont op het scherm, is dit niet echt leesbaar. Daarom kun je een PICTURE maken met 99/99/9999. Als je dan dat veld toont op het scherm, dan krijg je “01/01/2001”. Er is echter een probleem: je kunt geen gevens inlezen via ACCEPT in een veld waar editing is gebruikt, en je kunt ook geen berekeningen doen met gegevens in een dergelijk veld.

Je hebt dus telkens twee velden nodig: een om een waarde in te lezen en om mee te rekenen: de zender (sender), en een om de waarde weer te geven: de ontvanger (receiver). Met het MOVE-statement wordt de inhoud overgebracht: "MOVE sender TO receiver". Uiteindelijk wordt dan de ontvanger getoond op het scherm.

Simple insertion[bewerken]

Bij simple insertion gaan we symbolen toevoegen. Dit zijn er 5, namelijk een spatie (m.b.v. de letter B (blank)), het cijfer nul (0), een schuine streep (/), de punt (.) en de komma (,). Je mag ze niet zomaar gebruiken. De punt en de komma mag je alleen gebruiken bij numerieke velden.

Zender Ontvanger
PICTURE waarde PICTURE resultaat
x(5) ABCDE XBXBXBXBX A B C D E
9(4) 1234 9B999 1 234
x(4) ACDC XX/XX AC/DC
9(8) 01012001 99/99/9999 01/01/2001
x(5) 1keer X000X(4) 1000keer
999 123 999000 123000
9(6) 123456 9(3),9(3) 123,456
9V99 123 9.99 1.23
9(4)V99 123456 9,999.99 1,234.56
9(4)V99 1234 9,999.99 1,234.00

Om gegevens van één veld naar de andere te sturen moet je simpel weg het MOVE-statement gebruiken. Je kunt natuurlijk ook verschillende symbolen in een PICTURE met elkaar combineren.

Fixed insertion[bewerken]

Bij fixed insertion worden 5 (boekhoudkundige) symbolen gebruikt, alleen bij numerieke velden. Deze symbolen zijn het plus- en minteken (+ en -), credit (CR) en debet (DB) en het dollarteken ($). Het dollarteken geeft natuurlijk aan dat het om een geldbedrag gaat. CR, DB en - worden alleen maar getoond wanneer de waarde van het veld negatief is. Bij het plusteken word zowel + als - getoond afhankelijk van de waarde van het veld.

Zender Ontvanger
PICTURE waarde PICTURE resultaat
99 12 +99 +12
999V99 -123,45 999.99+ 123,45-
99 -12 -99 -12
999V99 123,45 999.99- 123,45
9(3) 007 $999 $007
999V99 123,45 $999.99 $123.45
99 12 99DB 12
99 -12 99DB 12DB
99 12 99CR 12
99 -12 99CR 12CR

Het plus- en minteken moeten altijd uiterst link of rechts worden gezet en nooit middenin een getal. CR en DB mogen alleen uiterst rechts staan. +, -, CR en DB mogen slechts één keer worden gebruikt. Het dollarteken moet uiterst links worden geplaatst tenzij er een plus- of minteken wordt gebruikt dan komt het achter dat teken.

Zero suppression[bewerken]

Zero suppression betekent dat we nullen gaan onderdrukken als ze niet van belang zijn. Hiervoor worden twee tekens gebruikt: de letter Z en de asterisk (*). Als we die tekens gebruiken, wordt de nul vervangen door een spatie of een asterisk. Bijvoorbeeld we hebben een PICTURE 9,999.99 en die heeft als inhoud 123.45 Wanneer we dit gaan tonen krijgen we 0,123.45. Die eerste nul heeft totaal geen nut. Als we de Z gebruiken in ons PICTURE zoals Z,ZZ9.99 dan krijgen we " 123.45". De overbodige nul wordt dus vervangen door een spatie. Merk op dat de komma ook wegvalt want die heeft ook geen enkel nut.

De asterisk doet hetzelfde, maar de nul wordt dan vervangen door een *. Bijvoorbeeld een PICTURE *,**9.99 met als inhoud 12.04 wordt dan getoond op het scherm als "**12.04". De asterisk wordt vooral in de bankwereld gebruikt om fraude te voorkomen. Bijvoorbeeld bij cheques en overschrijvingen om te voorkomen dat er getallen voor een bedrag worden bijgezet. Zoals een cheque voor 500.00 kan makkelijk worden veranderd door 1500.00 terwijl als we asterisken zouden gebruiken eerder ***500.00 zouden te zien krijgen en is het daardoor moeilijk te veranderen.

Zender Ontvanger
PICTURE waarde PICTURE resultaat
9(4) 0007 ZZZ9 " 7"
9(4) 007 Z999 " 007"
s999 -007 -ZZ9 "- 7"
999V99 000.07 ZZZ.ZZ " .07"
9999 123 Z,ZZZ " 123"
9(4)V99 0000.00 Z,ZZZ.ZZ " "
9(4) 0007 ***9 ***7
9(4) 007 *999 *007
s999 -007 -**9 -**7
9(4)V99 0 *,****.** *,****.**

Regionale instellingen[bewerken]

COBOL werd gemaakt voor en door de Amerikanen. Europeanen gebruiken geen punt als decimaalteken en niet het dollarteken als valutateken. We gebruiken de komma en de euro (€). COBOL laat wel toe dat je die tekens makkelijk kunt vervangen. Hiervoor gebruiken we de ENVIRONMENT DIVISION, die ons toelaat bepaalde instellingen te veranderen.

Decimaalteken[bewerken]

We moeten dus het punt en de komma met elkaar verwissellen. Hier is een klein programma dat dit doet.

COBOL-code:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. Toon.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
           DECIMAL-POINT IS COMMA.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       77 lees PIC S9999V99.
       77 toon PIC -Z.ZZ9,99.

       PROCEDURE DIVISION.
       HOOFD.
           DISPLAY "Geef een getal:"
           ACCEPT lees NO BEEP
           MOVE lees TO toon
           DISPLAY "Hier is uw getal:"
           DISPLAY toon
           STOP RUN.
Geef een getal:
-1234,56
Hier is uw getal:
-1.234,56

Zoals eerder werd gezegd, moet ENVIRONMENT DIVISION worden gebruikt. Hier wordt de sectie CONFIGURATION SECTION gebruikt die toelaat om instellingen te veranderen. SPECIAL-NAMESs laat toe om speciale functies op te roepen. Het uiteindelijke statement dat ervoor zorgt dat de punt een komma wordt, is DECIMAL-POINT IS COMMA. Hierdoor worden de komma en het punt met elkaar verwisseld. Let hier wel goed mee op. Als je dit gebruikt moet je ook de PICTURE van je velden aanpassen. Een veld dat normaal als PICTURE -Z,ZZ9.99 had, moet nu -Z.ZZ9,99 zijn, anders geraak je in de problemen.

Valuta[bewerken]

Het veranderen van het dollarteken gebeurt gelijkaardig:

COBOL-code:

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
           CURRENCY SIGN IS "E"
           DECIMAL-POINT IS COMMA.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       77 lees PIC S9999V99.
       77 toon PIC -EE.EE9,99.

CURRENCY SIGN IS "E" dit laat dus toe om het dollarteken makkelijk te veranderen. De E staat dus voor euro. Net zoals het punt en de komma moet je dit ook aanpassen bij de PICTURE van je velden. -$$.$$9,99 wordt dus -EE.EE9,99. In bepaalde versies van COBOL kan je extra dingen doen met valuta, bijvoorbeeld het dollarteken veranderen door het euroteken.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.