Ausdrücke sind Rechenvorschriften, die nach ihrer Auswertung einen Wert liefern. Man erhält sie durch die Verknüpfung von Operanden mit Operatoren (siehe Abschnitt „Syntax- Diagramme"). Die Bedeutung der Operatoren zeigt die folgende Tabelle:
numerisch | String | Bitmuster | |
+ | Addition | Verkettung | Mengenvereinigung |
- | Subtraktion | Mengendifferenz | |
* | Multiplikation | Vervielfältigung *) | Durchschnitt |
/ | Division | ||
MOD | Modulo-Operation |
*) | The second operand must in this case be numeric. |
Tabelle 11: Bedeutung der Operatoren
In PRODAMP sind die Operatoren also mehrdeutig (= überladen), das heißt, die Operatoren werden je nach Operandentyp unterschiedlich interpretiert.
Beispiele
33 + 16 Ergebnis: 49 X'10' * 4 Ergebnis: 64 'System' + 'absturz' Ergebnis: 'Systemabsturz' #'C1' * 5 Ergebnis: 'AAAAA' B'1001' + B'11' Ergebnis: B'1011' oder P'0B' P'1A' * B'1001' Ergebnis: B'1000' oder P'08'
Die Modulo-Operation liefert den ganzzahligen Rest einer Divison.
Beispiele
29 MOD 7 ergibt 1 35 MOD 11 ergibt 2
Der Operand MOD lässt sich auch benutzen, um beispielsweise Adressen „von Hand“ auf 24 Bit umzustellen.
Beispiel
X'887C0A0E' MOD X'01000000' Ergebnis: X'007C0A0E'
Ausdrücke können in üblicher Weise mit Klammern gruppiert und beliebig kombiniert werden (im Rahmen der Typverträglichkeit).
Beispiele
X * Y + 3 * ( A - B ) + X'ABC' A_FCB.ID2IND1 - P'80' Alle Bits aus ID2IND1 bis auf ID2DUMMY NUM - ( NUM / 16 ) * 16 ('a'+'b'*2) * 4 Ergebnis: 'abbabbabbabb'