Index
IF

【用途】
条件分岐命令。直訳すれば、『もし』。もし〜ならば〜しなさい、違ったら〜しなさい。
みたいな感覚で、他言語でもよく見かけます。利用頻度も激高で当然必須。
IF文の中に更にIF文を書くことも可能。属に「入れ子」と呼ばれています。

【使用例】
・もしA=1ならOKをFLAGに入れなさい
   IF A = 1
     MOVE "OK" TO FLAG
   END-IF

・もしA=1ならOKを、違う場合はNGをFLAGに入れなさい
   IF A = 1
     MOVE "OK" TO FLAG
   ELSE
     MOVE "NG" TO FLAG
   END-IF

IF文


機能

IF(判断)又は,条件を評価する.実行用プログラムの次にとる動作は,条件の値が真か偽かによって定まる.


一般形式

【書き方】
Image


構文規則

(1)

文-1及び文-2は,条件文(conditional statement)又は無条件文(imperative statement)とする.それぞれの文の前に無条件文があってもよい.

(2)

ELSE NEXT SENTENCE(さもなければ次の完結文)指定の直後に分離符の終止符を書く場合には,この指定を省略してもよい.

(3)

END-IF(IF文の終わり)指定を書く場合には,NEXT SENTENCE指定を書いてはならない.


一般規則

(1)

IF文の範囲は,次のいずれかで終わる.
(a)

入れ子の同じ水準にあるEND-IF指定

(b)

分離符の終止符

(c)

入れ子になっている場合,入れ子の高位(外側)の水準にあるIF文に対応するELSE指定

(2)

IF文を実行すると,次のように制御を移す.
(a)

条件が真であり,文-1が指定されていると,文-1の最初の文に制御を移し,文-1で指定した各文の規則に従って実行を続ける.制御を明に移させる手続き分岐文又は条件文が実行されると,その文の規則に従って明に制御を移す.文-1の実行が終了すると,ELSE指定が書かれていてもこれを無視し,IF文の終わりに制御を移す.

(b)

条件が真であり,文-1の代わりにNEXT SENTENCE指定が書かれていると,ELSE指定が書かれていてもこれを無視し,制御を次の実行完結文に移す.

(c)

条件が偽であり,文-2が指定されていると,文-1又は代わりのNEXT SENTENCE指定を無視して文-2の最初の文に制御を移し,文-2で指定した各文の規則に従って実行を続ける.制御を明に移させる手続き分岐文又は条件文が実行されると,その文の規則に従って明に制御を移す.文-2の実行が終了すると,IF文の終わりに制御を移す.

(d)

条件が偽であり,ELSE指定が書かれていないと,文-1を無視しIF文の終わりに制御を移す.

(e)

条件が偽であり,ELSE NEXT SENTENCE指定の記述がある場合には,文-1が指定されていてもこれを無視し,制御を次の実行完結文に移す.

(3)

文-1及び文-2の中にIF文を書いてもよい.この場合,IF文は,入れ子(nest)になっているという.入れ子の詳細な規則は, IF文の中のIF文は,左から右に向かってIF,ELSE及びEND-IFの組を作っているものとみなす.一つのELSE又はEND-IFには,その左側でまだほかのELSE又はEND-IFと組になっていないIFのうち,最も右側にあるIFが対応する.
図3.5は,IF文の入れ子の例であり,図3.6は図3.5のIF文の論理的な流れを示す図である.

図3.5 入れ子になっているIF文

入れ子になっているIF文

図3.6 入れ子になっているIF文の論理的な流れ
入れ子になっているIF文の論理的な流れ


Index