In logischen
Bedingungen und den Arithmetik-Statements
ADD
,
COMPUTE
,
DIVIDE
,
MULTIPLY
und
SUBTRACT
können Sie
die folgenden mathematischen Funktionen verwenden:
Funktion | Format/Länge | Ausgegebener Wert |
---|---|---|
ABS(field) | wie Feld (field )
|
Absoluter Wert eines Feldes. |
ATN(field) | F8 (*) | Arcustangens eines Feldes. |
COS(field) | F8 (*) |
Kosinus eines Feldes. |
EXP(field) | F8 (*) | Potenz eines Feldes (e field) mit der Basis e, wobei e die Basis natürlicher Logarithmen ist. |
FRAC(field) | wie Feld (field )
|
Bruchteil (hinter dem Komma) eines Feldes. |
INT(field) | wie Feld (field )
|
Ganzzahliger Teil eines Feldes (Integer). |
LOG(field) | F8 (*) | Natürlicher Logarithmus eines Feldes. |
SGN(field) | wie Feld (field )
|
Vorzeichen (Sign) eines Feldes (−1, 0, +1). |
SIN(field) | F8 (*) |
Sinus eines Feldes. |
SQRT(field) | F8 (*) |
Quadratwurzel eines Feldes (Square Root). Ein negativer Feldwert wird wie ein positiver behandelt. |
TAN(field) | F8 (*) |
Tangens eines Feldes. |
VAL(field) | wie Zielfeld
(field )
|
Numerischer Wert eines alphanumerischen Feldes. Der Wert des Feldes muss ein in alphanumerischer Form (Codepage oder Unicode) dargestellter numerischer Wert sein. Leerstellen vor und nach dem Komma im Feld werden ignoriert. Komma (Dezimalpunkt) und Vorzeichen werden mitverarbeitet. Wenn das Zielfeld nicht lang genug ist, werden Nachkommastellen abgeschnitten (vgl. Abschneiden und Runden von Feldwerten im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung). |
*Diese Funktionen werden wie folgt ausgewertet:
Das Argument wird in Format/Länge F8 umgesetzt und dann an das Betriebssystem zur Berechnung übergeben.
Das vom Betriebssystem zurückgelieferte Ergebnis hat Format/Länge F8 und wird in das Zielformat zurückgewandelt.
Ein mit einer mathematischen Funktion (außer VAL
)
verwendetes Feld kann eine Konstante oder ein Skalar sein und muss numerisches,
gepackt numerisches, Ganzzahl- oder Gleitkomma-Format (N, P, I oder F) haben.
Ein mit der Funktion VAL
verwendetes Feld kann eine
Konstante, ein Skalar oder ein Array sein und muss alphanumerisches Format
haben.
** Example 'MATHEX': Mathematical functions ************************************************************************ DEFINE DATA LOCAL 1 #A (N2.1) INIT <10> 1 #B (N2.1) INIT <-6.3> 1 #C (N2.1) INIT <0> 1 #LOGA (N2.6) 1 #SQRTA (N2.6) 1 #TANA (N2.6) 1 #ABS (N2.1) 1 #FRAC (N2.1) 1 #INT (N2.1) 1 #SGN (N1) END-DEFINE * COMPUTE #LOGA = LOG(#A) WRITE NOTITLE '=' #A 5X 'LOG' 40T #LOGA * COMPUTE #SQRTA = SQRT(#A) WRITE '=' #A 5X 'SQUARE ROOT' 40T #SQRTA * COMPUTE #TANA = TAN(#A) WRITE '=' #A 5X 'TANGENT' 40T #TANA * COMPUTE #ABS = ABS(#B) WRITE // '=' #B 5X 'ABSOLUTE' 40T #ABS * COMPUTE #FRAC = FRAC(#B) WRITE '=' #B 5X 'FRACTIONAL' 40T #FRAC * COMPUTE #INT = INT(#B) WRITE '=' #B 5X 'INTEGER' 40T #INT * COMPUTE #SGN = SGN(#A) WRITE // '=' #A 5X 'SIGN' 40T #SGN * COMPUTE #SGN = SGN(#B) WRITE '=' #B 5X 'SIGN' 40T #SGN * COMPUTE #SGN = SGN(#C) WRITE '=' #C 5X 'SIGN' 40T #SGN * END
Ausgabe des Programms MATHEX
:
#A: 10.0 LOG 2.302585 #A: 10.0 SQUARE ROOT 3.162277 #A: 10.0 TANGENT 0.648360 #B: -6.3 ABSOLUTE 6.3 #B: -6.3 FRACTIONAL -0.3 #B: -6.3 INTEGER -6.0 #A: 10.0 SIGN 1 #B: -6.3 SIGN -1 #C: 0.0 SIGN 0