Programmeren in COBOL/Velden/Editing: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Sephiroth (overleg | bijdragen)
kGeen bewerkingssamenvatting
dit gebeurT, het doeT
Regel 1:
{{Programmeren in COBOL}}
Je kan met '''COBOL''' de leesbaarheid van gegevens verbeteren via '''data editing'''. EditingDit betekent dadat je een opmaak geeft aan een veld. Bijvoorbeeld je hebt een datum in een veld, met een picturePICTURE 9(8), opgeslagen als 01012001. Als je dit toont op het scherm, is dit niet echt leesbaar. Daarom kun je een picturePICTURE 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 acceptACCEPT in een veld waar editing is gebruikt. Er moet dus eerst, en vooral een veld zijn waar geen editing werd gebruikt. Met dit veld, ook de zender genoemd, lees je de gegevens in. Deze gevens worden dan later in een ander veld met editing, de ontvanger, opgeslagen via de move-statement. Uiteindelijk wordt dan de ontvanger getoond op het scherm. Je kunt ook geen berekeningen doen met gegevens in een dergelijk veld waar editing werd gebruikt. Hier zullen we de verschillende mogelijkheden van editing bespreken.
 
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==
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 nummeriekenumerieke velden, dus alleen bij velden waar wordt gewerkt met getallen.
{| class="prettytable"
|-
Regel 11 ⟶ 13:
!
|-
| ''picturePICTURE''||''waarde''||''picturePICTURE''||''resultaat''
|-
| x(5)||ABCDE||xBxBxBxBxXBXBXBXBX||A B C D E
|-
| 9(4)||1234||9B999||1 234
|-
| x(4)||ACDC||xxXX/xxXX||AC/DC
|-
| 9(8)||01012001||99/99/9999||01/01/2001
|-
| x(5)||1keer||x000xX000X(4)||1000keer
|-
|999||123||999000||123000
Regel 27 ⟶ 29:
|9(6)||123456||9(3),9(3)||123,456
|-
|9v999V99||123||9.99||1.23
|-
|9(4)v99V99||123456||9,999.99||1,234.56
|-
|9(4)v99V99||1234||9,999.99||1,234.00
|}
Om gegevens van één veld naar de andere te sturen moet je simpel weg dehet moveMOVE-statement gebruiken. Je kunt natuurlijk ook verschillende symbolen in een picturePICTURE met elkaar combineren.
 
==Fixed insertion==
Bij ''fixed insertion'' worden er 5 (boekhoudkundige) symbolen gebruikt en die mogen, alleen worden gebruikt bij numerieke velden. Deze symbolen zijn het plus- en minteken (+ en -), ''credit'' (CR) en ''debet'' (DB) dit zijn boekhoudkundige symbolen en het dollarteken ($). Het dollarteken geeft natuurlijk aan dat het om een bedraggeldbedrag gaat. CR, DB en DB- worden, als het gebruikt wordt, alleen maar getoond wanneer de waarde van het veld negatief is. Dit geldt ook voor het minteken. Bij het plusteken word zowel + als - getoond afhankelijk van de waarde van het veld.
 
==Zero suppression==
''Zero suppression'' betekent dat we nullen gaan onderdrukken als ze niet van belang zijn. Hiervoor worden twee tekens gebruikt: de letter zZ en de asterisk (*). Als we die tekens gebruiken, wordt de nul vervangen door een spatie of een asterisk.
Bijvoorbeeld we hebben een picturePICTURE 9,999.99 en die heeft als inhoud 123.45 wanneerWanneer we dit gaan tonen krijgen we 0,123.45. Die eerste nul heeft totaal geen nut. Als we de zZ gebruiken in ons picturePICTURE zoals zZ,zz9ZZ9.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 doeddoet hetzelfde, maar de nul wordt dan vervangen door een *.
Bijvoorbeeld een picturePICTURE *,**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.
{| class="prettytable"
|-
Regel 47 ⟶ 54:
!
|-
| ''picturePICTURE''||''waarde''||''picturePICTURE''||''resultaat''
|-
| 9(4)||0007||zzz9ZZZ9||" 7"
|-
| 9(4)||007||z999Z999||" 007"
|-
| s999||-007||-zz9ZZ9||"- 7"
|-
| 999v99999V99||000.07||zzzZZZ.zzZZ||" .07"
|-
| 9999||123||zZ,zzzZZZ||" 123"
|-
| 9(4)v99V99||0000.00||zZ,zzzZZZ.zzZZ||" "
|-
| 9(4)||0007||***9||***7
Regel 67 ⟶ 74:
| s999||-007||-**9||-**7
|-
| 9(4)v99V99||0||9,999.99||****.**
|}
 
==Regionale instellingen==
==Probleem==
COBOL werd gemaakt voor en door de amerikanenAmerikanen. Wij europeanenEuropeanen gebruiken geen punt als het decimaalteken en niet het dollarteken als valutavalutateken. We gebruiken de komma en de euro (€). COBOL laat wel toe dat je die tekens makkelijk kunt vervangen. Hiervoor gebruiken we de ''environmentENVIRONMENT divisionDIVISION'', die ons tolaattoelaat bepaalde instellingen te veranderen.
 
===Decimaalteken===
We moeten dus het punt en de komma met elkaar verwissellen. Hier is een klein programma dat dit doeddoet.
{{code
|Taal= COBOL
Regel 90 ⟶ 97:
DATA DIVISION.
WORKING-STORAGE SECTION.
77 lees picPIC s9999v99S9999V99.
77 toon picPIC -zZ.zz9ZZ9,99.
 
PROCEDURE DIVISION.
Regel 101 ⟶ 108:
DISPLAY toon
STOP RUN.
</pre>
Scherm:
}}
<pre>
Geef een getal:
-1234,56
Regel 107 ⟶ 116:
-1.234,56
</pre>
 
}}
Zoals eerder werd gezegd, moet ''environmentENVIRONMENT divisionDIVISION'' worden gebruikt. Hier wordt de sectie ''configurationCONFIGURATION sectionSECTION'' gebruikt datdie toelaat om instellingen te veranderen. ''SpecialSPECIAL-namesNAMESs'' laat toe om speciale functies op te roepen. Het uiteindelijke statement dat ervoor zorgt dat de punt een komma wordt, is ''decimalDECIMAL-pointPOINT isIS commaCOMMA''. Met ditHierdoor worden de komma en het punt met elkaar verwisseld. Let hier wel goed mee op. Als je dit gebruikt moet je ook de picturePICTURE van je velden aanpassen. Een veld dat normaal als picturePICTURE -zZ,zz9ZZ9.99 had, moet nu -zZ.zz9ZZ9,99 zijn, anders geraak je in de problemen.
 
===Valuta===
Het veranderen van het dollarteken gebeurdgebeurt gelijkaardig. Dit gebeurd als volgt.:
{{code
|Taal= COBOL
Regel 124 ⟶ 134:
DATA DIVISION.
WORKING-STORAGE SECTION.
77 lees picPIC s9999v99S9999V99.
77 toon picPIC -EE.EE9,99.
</pre>
}}
''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 picturePICTURE van je velden. -$$.$$9,99 wordt dus -EE.EE9,99. In bepaalde versies van COBOL kuntkan je extra dingen doen met valuta, bijvoorbeeld het dollarteken veranderen door het euroteken.
 
[[Categorie: Programmeren in COBOL|Editing]]
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.