Empfangsfelder:
Diese werden zur Aufnahme des Ergebnisses der Anweisung verwendet und stehen daher links vom Gleichheitszeichen. Damit dies möglich ist, muß es sich folglich um numerische oder numerisch aufbereitete Datenfelder handeln.
Rechenfelder:
Diese Datenfelder sind direkt an der Rechenoperation beteiligt, wodurch auch klar wird, daß es sich hierbei um rein numerische Datenfelder handeln muß. Sie stehen rechts vom Gleichheitszeichen.
1. Neben den reinen Berechnungen kann COMPUTE ähnlich wie MOVE benutzt werden.
Beispiel:
2. Genauso kann man das Ergebnis einer Berechnung mit Hilfe von COMPUTE in ein Datenfeld übergeben:
Beispiel:
Zugelassene Operatoren:
|
Addieren |
|
Subtrahieren |
|
Multiplizieren |
|
Dividieren |
|
Potenzieren nur ganzzahlige positive Werte |
Auflösungsreihenfolge:
Bei Berechnungen verfolgt Cobol eine festgelegte Reihenfolge:
1. |
von links nach rechts |
2. |
Klammern von innen nach außen |
3. |
Vorzeichen (+ und -) |
4. |
Potenzierung (positiv & ganzzahlig) |
5. |
Multiplikation & Division |
6. |
Addition & Subtraktion |
Der ROUNDED-Zusatz:
Dieser Zusatz kann in jeder arithmetischen Operation als zusätzlicher Eintrag benutzt werden. Er wird immer dann benötigt, wenn ein Ergebnisfeld so kurz definiert ist, daß Dezimalstellen abgeschnitten werden. Es wird immer die letzte, zu Verfügung stehende Dezimalstelle gerundet und ein evtl. auftretender Übertrag auf die nächsthöhere Stelle aufaddiert.
Beispiel:
Wenn Menge den Wert 328 besitzt und Promille mit PIC 99V99. vordefiniert wurde, so ist das Ergebnis in Promille = 0,33. Grund: 328 / 1000 = 0,328 auf nächsthöhere Dezimalstelle gerundet = 0,33.
Der ON SIZE ERROR-Zusatz
Der ON SIZE ERROR-Zusatz spezifiziert eine Anweisung die im Falle eines Überlaufes ausgeführt wird.
Ein Überlauf tritt auf, wenn ein Ergebnis errechnet wird, das mehr Stellen von dem Komma aufweist, als das Ergebnisfeld aufnehmen kann. Ein solcher Überlauf sollte durch entsprechende Vorplanung verhindert werden. Ist aufgrund der Programmkonstellation ein Überlauf z.T. nicht vermeidbar, so kann er durch den ON SIZE ERROR-Zusatz aufgefangen werden.
Beispiel:
Der NOT ON SIZE ERROR-Zusatz
Genau wie ON SIZE ERROR-Zusatz(s.o.), nur mit dem Unterschied, daß hier eine Anweisung spezifiziert wird, die ausgeführt werden soll, wenn kein Überlauf stattgefunden hat.
Beispiel:
...