バージョン 4.2.5
 —  ステートメント  —

IF

ストラクチャードモード構文

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

レポーティングモード構文

IF logical-condition
  [THEN]

statement

 
DOstatement DOEND

ELSE

statement
DOstatement DOEND

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:DECIDE FOR | DECIDE ON | IF SELECTION | ON ERROR

関連機能グループ:「論理条件の処理


機能

IF ステートメントは、論理条件に基づいて、ステートメントあるいはステートメント群の実行を制御します。

注意:
条件に合うときに何もしない場合は、THEN 節に IGNORE ステートメントを指定する必要があります。

Top of page

構文説明

IF logical-condition

IF ステートメントに続いて、指定されたステートメント(群)が実行されるかどうかを判定する論理的な条件です。

例:

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'

詳細については、『プログラミングガイド』の「論理条件基準」を参照してください。

THEN statement THEN 節では、論理条件が真である場合に実行される statement(群)を指定します。
ELSE statement ELSE 節では、論理条件が真でない場合に実行される statement(群)を指定します。
END-IF IF ステートメントを終了するには、Natural の予約語 END-IF を使用する必要があります。

Top of page

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

プログラム 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

レポーティングモードの例:IFEX1R

Top of page