IF

Structured Mode-Syntax

IF logical-condition
  [THEN] statement
  [ELSEstatement ]
END-IF

Reporting Mode-Syntax

IF logical-condition
  [THEN]

statement

 
DO statement DOEND

ELSE

statement
DO statement DOEND

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandte Statements: DECIDE FOR | DECIDE ON | IF SELECTION | ON ERROR

Gehört zur Funktionsgruppe: Logische Bedingungen


Funktion

Mit dem Statement IF wird die Verarbeitung eines Statements oder einer Gruppe von Statements in Abhängigkeit von einer logischen Bedingung (logical-condition) gesteuert.

Anmerkung:
Falls keine Handlung ausgeführt werden soll, wenn die Bedingung erfüllt ist, geben Sie das Statement IGNORE in der THEN-Klausel an.

Syntax-Beschreibung

Syntax-Element-Beschreibung

Syntax-Element Beschreibung
IF logical-condition
Logische Bedingung:

Die logische Bedingung, die Sie definieren, bestimmt, wann das Statement bzw. die Statements, die Sie im IF-Statement angeben, ausgeführt werden soll/en und wann nicht.

Beispiele:

IF #A = #B
IF LEAVE-TAKEN GT 30
IF #SALARY(1) * 1.15 GT 5000
IF SALARY (4) = 5000 THRU 6000
IF DEPT = 'A10' OR = 'A20' OR = 'A30'

Näheres hierzu siehe Abschnitt Logische Bedingungen im Leitfaden zur Programmierung.

THEN statement
THEN-Klausel:

In der THEN-Klausel geben Sie eines oder mehrere Statements an, die ausgeführt werden sollen, wenn die logische Bedingung erfüllt ist.

ELSE statement
ELSE-Klausel:

In der ELSE-Klausel geben Sie eines oder mehrere Statements an, die ausgeführt werden sollen, wenn die logische Bedingung nicht erfüllt ist.

END-IF
Ende des IF-Statements:

Im Structured Mode muss das für Natural reservierte Wort END-IF zum Beenden des IF-Statements benutzt werden.

Im Reporting Mode werden die Statements DO ... DOEND benutzt, um je nach Situation eines oder mehrere passende Statements anzugeben, und um die Klauseln und das IF-Statement zu beenden. Falls Sie nur ein einziges Statement angeben, können Sie die Statements DO ... DOEND weglassen. Das ist jedoch nicht im Sinne einer guten Kodierpraxis und wird nicht empfohlen.

statement
DO statement ... DOEND

Beispiel - IF-Statement

** Example 'IFEX1S': IF (structured mode)                               
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
  2 FIRST-NAME                                                          
  2 SALARY (1)                                                          
  2 BIRTH                                                               
1 VEHIC-VIEW VIEW OF VEHICLES                                           
  2 PERSONNEL-ID                                                        
  2 MAKE                                                                
*                                                                       
1 #BIRTH (D)                                                            
END-DEFINE                                                              
*                                                                       
MOVE EDITED '19450101' TO #BIRTH (EM=YYYYMMDD)                          
SUSPEND IDENTICAL SUPPRESS                                              
LIMIT 20                                                                
*                                                            
FND. FIND EMPLOY-VIEW WITH CITY = 'FRANKFURT'                
          SORTED BY NAME BIRTH                               
  IF SALARY (1) LT 40000                                     
    WRITE NOTITLE '*****' NAME 30X 'SALARY LT 40000'         
  ELSE                                                       
    IF BIRTH GT #BIRTH                                       
      FIND VEHIC-VIEW WITH PERSONNEL-ID = PERSONNEL-ID (FND.)
        DISPLAY (IS=ON)                                      
                NAME BIRTH (EM=YYYY-MM-DD)                   
                SALARY (1) MAKE (AL=8)                       
      END-FIND                                               
    END-IF                                                   
  END-IF                                                  
END-FIND                                                     
END                                             

Ausgabe des Programms IFEX1S:

        NAME            DATE      ANNUAL     MAKE                      
                         OF       SALARY                               
                       BIRTH                                           
-------------------- ---------- ---------- --------                    
                                                                       
BAECKER              1956-01-05      74400 BMW                         
***** BECKER                                            SALARY LT 40000
BLOEMER              1979-11-07      45200 FIAT                        
FALTER               1954-05-23      70800 FORD                        
***** FALTER                                            SALARY LT 40000
***** GROTHE                                            SALARY LT 40000
***** HEILBROCK                                         SALARY LT 40000
***** HESCHMANN                                         SALARY LT 40000
HUCH                 1952-09-12      67200 MERCEDES                    
***** KICKSTEIN                                         SALARY LT 40000
***** KLEENE                                            SALARY LT 40000
***** KRAMER                                            SALARY LT 40000

Äquivalentes Reporting-Mode-Beispiel: IFEX1R.