Mathematische Systemfunktionen

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.

Ist der Wert des Feldes größer oder gleich 1017, ist COS(field) "1".

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.

Ein negativer Wert im Argumentfeld wird als positiver Wert behandelt.

SGN(field) wie Feld (field) Vorzeichen (Sign) eines Feldes (−1, 0, +1).
SIN(field) F8

Sinus eines Feldes.

Ist der Wert des Feldes größer oder gleich 1017, ist SIN(field) "0".

SQRT(field) (*)

Quadratwurzel eines Feldes (Square Root).

Ein negativer Feldwert wird wie ein positiver behandelt.

TAN(field) F8

Tangens eines Feldes.

Ist der Wert des Feldes größer oder gleich 1017, ist TAN(field) "0".

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 Funktion wird wie folgt ausgewertet:

  • Wenn das Feld Format/Länge F4 hat, hat SQRT(field) auch Format/Länge F4.

  • Wenn das Feld Format/Länge F8 oder I hat, hat SQRT(field) Format/Länge F8.

  • Wenn das Feld Format N oder P hat, siehe Informationen zu Format/Länge von SQRT(field) im Abschnitt Genauigkeit der Ergebnisse bei arithmetischen Operationen im Leitfaden zur Programmierung.

    hat SQRT(field) Format/Länge Nn.7 bzw. Pn.7 (wobei n automatisch groß genug berechnet wird).

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.

Beispiel für mathematische Funktionen:

** 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