3.2 Negatieve getallen

In de vorige paragraaf hebben we het rekenen met gebroken getallen opgelost. Een volgend probleem betreft de negatieve getallen.

Een variabele met als picture 9(3) kan de waarden 0 tot en met 999 bevatten. Het is niet mogelijk om een getal kleiner dan 0 in dit veld op te bergen. Na de opdracht

compute verschil = 10 - 12
  

zal de variabele verschil de waarde 2 hebben, in plaats van de verwachte -2. Als we willen dat een bepaalde variabele geschikt moet zijn om behalve de cijfers ook het teken (Engels: sign) op te slaan, dan moeten we dat apart aangeven. We doen dat door de letter S (van sign) vooraan in de tekenreeks van de picture te plaatsen:

01 verschil      picture S9(8).
01 temperatuur   picture S9(3)V9(2).
  

de s van sign

De letter S geeft aan dat de computer bij een van de bytes van de variabele een aanduiding plaatst over het teken. Het aantal bytes dat nodig is voor de opslag van de variabele verandert niet als we een S vooraan zetten.

Voor de variabele verschil reserveert de computer 8 bytes. Voor de variabele temperatuur 5 (bedenk dat ook de V geen plaatsruimte vergt).

Omdat een byte voor het opslaan van een cijfer te groot is, kan een aanduiding over het teken er nog wel bij. Maar dat heeft wel een bijkomend gevolg. Bij het afdrukken is er geen cijferwaarde in die byte aanwezig, maar iets anders. We kunnen een variabele met een S in de picture-string niet gebruiken om een waarde op het scherm of op papier te krijgen. Net als de V, is de S een aanwijzing met betrekking tot rekenen. Als we een minteken in de uitvoer willen zien, dan zullen we dat op een andere manier moeten aangeven. Daarover gaat paragraaf 3.5.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo