IF SELECTION

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

IF SELECTION [NOT UNIQUE [IN [FIELDS]]] operand1
  [THEN] statement
  [ELSEstatement]
END-IF

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

IF SELECTION [NOT UNIQUE [IN [FIELDS]]] operand1
  [THEN]

statement

 
  DOstatement DOEND

ELSE

statement

DOstatement DOEND

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

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

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

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


関数

IF SELECTION ステートメントは、連続して指定された英数字フィールドのうち 1 つのフィールドにのみ値が含まれていることを確認するために使用します。

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1   S A     A U               L C     ×

構文要素の説明:

構文要素 説明
operand1
選択フィールド:

operand1 として、チェックされるフィールドを指定します

属性制御変数(フォーマット C)を指定する場合は、そのステータスが MODIFIED に変更されたかどうかが考慮されます。

注意:
特定の属性制御変数にステータス MODIFIED が割り当てられているかどうかを確認するには、(IF ステートメントなどで)MODIFIED オプションを使用します。これにより、正確に 1 つのフィールドが変更されたことを確認できます。

THEN statement ...
THEN 節:

THEN 節で指定されるステートメントは、次のいずれかの条件が当てはまる場合に実行されます。

  • operand1 で指定された全フィールドの値が空値。

  • operand1 で指定されたフィールドのうち複数が空値ではない。

一般的に、このステートメントは、INPUT ステートメントで表示されたマップに対して、端末ユーザーが 1 つの値だけを入力したことを確かめるために使用されます。

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

ELSEstatement ...
ELSE 節:

ELSE 節では、1 つのみのフィールドに値が含まれる場合、実行するステートメント(群)を指定します。

END-IF
IF SELECTION ステートメントの終了:

ストラクチャードモードでは、IF SELECTION ステートメントを終了するには、Natural の予約語 END-IF を使用する必要があります。

レポーティングモードでは、DO ... DOEND ステートメントを使用して、状況に応じて 1 つまたは複数の適切なステートメントを指定し、節と IF SELECTION ステートメントを終了します。単一のステートメントのみを指定する場合は、DO ... DOEND ステートメントを省略できます。よいコーディング習慣に則して、これはお勧めしません。

statement ...
DO statement ... DOEND

** Example 'IFSEL': IF SELECTION                                        
************************************************************************
DEFINE DATA LOCAL                                                       
1 #A (A1)                                                               
1 #B (A1)                                                               
END-DEFINE                                                              
*                                          
INPUT 'Select one function:' //            
   9X 'Function A:' #A                     
   9X 'Function B:' #B                     
*                                          
IF SELECTION NOT UNIQUE #A #B              
  REINPUT 'Please enter one function only.'
END-IF                                    
*                                          
IF #A NE ' '                               
  WRITE 'Function A selected.'             
END-IF                                     
IF #B NE ' '                               
  WRITE 'Function B selected.'             
END-IF                                     
*                                          
END

プログラム IFSEL の出力:

Select one function:                        
                                            
         Function A:           Function B:

機能 A を選択して確認した後:

Page      1                                                  05-01-17  11:04:07
                                                                               
Function A selected.