Index
EVALUATE

【用途】
条件式。同一の項目での比較分岐によく使用。最近はIF文より多用されている

【使用例】
・A=1〜3ならBに1を加算、それ以外ならCに1を加算する

   EVALUATE A
     WHEN  1 THRU 3
         ADD 1 TO B
     WHEN  OTHER
         ADD 1 TO C
   END-EVALUATE

又は、

   EVALUATE A
     WHEN  1
     WHEN  2
     WHEN  3
         ADD 1 TO B
     WHEN  OTHER
         ADD 1 TO C
   END-EVALUATE


・A=1 または B=1 または C=1 ならば Sに1を加算  (ANYはワイルドカード扱いになり無条件となる)

   EVALUATE  A   ALSO   B   ALSO    C
     WHEN   1   ALSO  ANY  ALSO   ANY
     WHEN  ANY  ALSO   1   ALSO   ANY
     WHEN  ANY  ALSO  ANY  ALSO   1
         ADD  1   TO   S
   END-EVALUATE


・OK-FLG="ON" または NG-FLG="NG" ならば Sに1を加算  (TRUE【真】を利用すると条件文がそのまま利用可能)

   EVALUATE  TRUE
     WHEN   OK-FLG = "OK"
     WHEN   NG-FLG = "NG"
         ADD  1   TO   S
   END-EVALUATE

EVALUATE文


機能

EVALUATE(評価)文は,多枝分岐,多枝結合の構造を記述し,複数の条件を評価することができる.実行用プログラムが次にとる動作は,これらの評価の結果によって定まる.


一般形式

【書き方】
Image


構文規則

(1)

EVALUATE文の最初のWHEN指定により前に現れる作用対象又は語TRUE(真)及びFALSE(偽)を,それぞれ“選択主体”といい,指定されたそれらすべてをまとめて,“選択主体の組”という.

(2)

EVALUATE文のWHEN指定に現れる作用対象又は語TRUE,FALSE及びANY(何でも)を,それぞれ“選択対象”といい,一つのWHEN指定中に書かれたそれらすべてをまとめて,“選択対象の組”という.

(3)

THRUとTHROUGHは同義語であり,どちらを書いてもよい.

(4)

THROUGH指定でつながる二つの作用対象は,同じ字類でなければならない.これら二つの作用対象は,一つの選択対象を構成する.

(5)

各選択対象の組中の選択対象の数は,選択主体の数と等しくなければならない.

(6)

選択対象の組中の各選択対象は,次の規則に従って,選択主体の組中の同じ順序位置にある選択主体に対応していなければならない.
(a)

選択対象中に現れる一意名,定数又は算術式は,選択主体の組中の対応する作用対象との比較が許されたものでなければならない.

(b)

選択対象として現れる条件-1,条件-2又は語TRUE若しくはFALSEは,選択主体の組中の条件式又は語TRUE若しくはFALSEと対応していなければならない.

(c)

語ANYは,いかなる選択主体とも対応する.

(7)

THROUGHを書いたとき,THROUGH指定でつながる二つの作用対象は,ブールであってはならない.

(8)

式-1は,ブールであってはならない.


一般規則

(1)

EVALUATE文の実行は,各々の選択主体と選択対象が評価され,数値,文字値,数値又は文字値の範囲又は真理値が割り当てられるかのように行われる.これらの値は,次のようにして決定される.
(a)

一意名-1,一意名-2で指定された選択主体,及びNOT指定並びにTHROUGH指定のない一意名-3,一意名-5で指定された選択対象は,その一意名で参照されるデータ項目の値と字類を割り当てられる.

(b)

定数-1,定数-2で指定された選択主体,及びNOT指定並びにTHROUGH指定のない定数-3,定数-5で指定された選択対象は,その定数の値と字類を割り当てられる.定数-3,定数-5が表意定数ZEROであるときは,対応する選択主体の字類を割り当てられる.

(c)

式-1,式-2として算術式が指定された選択主体,及びNOT指定並びにTHROUGH指定のない算術式-1,算術式-3で指定された選択対象は,算術式の評価の規則に従って求められた数値を割り当てられる.

(d)

式-1,式-2として条件式が指定された選択主体,及び条件-1,条件-2で指定された選択対象は,条件式の評価の規則に従って求められた真理値を割り当てられる.

(e)

語TRUE又はFALSEで指定された選択主体又は選択対象は,真理値を割り当てられる.語TRUEで指定された項目には,真理値“真”が,語FALSEで指定された項目には,真理値“偽”が割り当てられる.

(f)

語ANYで指定された選択対象は,それ以上評価されない.

(g)

選択対象にTHROUGH指定が書かれ,NOT指定がない場合は,値の範囲は,比較の規則に従って,最初の作用対象以上で第2の作用対象以下である選択主体の可能なすべての値を含む.

(h)

選択対象にNOT指定が書かれた場合に割り当てられる値は,NOT指定が書かれなかったときに割り当てられる値と等しくない又は値の範囲に含まれない選択主体の可能なすべての値とする.

(2)

EVALUATE文の実行は,いずれかのWHEN指定が選択主体の組を満足するか否かを決定するために選択主体と選択対象に割り当てられた値が比較されたかのように行われる.この比較は,次のように行われる.
(a)

最初のWHEN指定の選択対象の組中の各選択対象が,選択主体の組中の同じ順序位置にある選択主体と比較される.比較が満足されるためには,次の条件のうち一つが満足されなければならない.
(i)

比較される項目が数値,文字値,又は数値若しくは文字値の範囲を割り当てられている場合は,選択対象に割り当てられた値又は値の範囲の中の一つの値が,選択主体に割り当てられた値に比較の規則に従って等しいとき,比較が満足される.

(ii)

比較される項目が真理値を割り当てられている場合は,項目どうしが同じ真理値を割り当てられていれば,比較が満足される.

(iii)

比較される選択対象が語ANYで指定されている場合は,選択主体の値に関係なく常に比較が満足される.

(b)

比較される選択対象の組中のすべての選択対象について上記の比較が満足されたとき,その選択対象の組を含むWHEN指定が,選択主体の組を満足するWHEN指定として選択される.

(c)

比較される選択対象の組中に上記の比較を満足しない一つ以上の選択対象があったとき,その選択対象の組は選択主体の組を満足しないとする.

(d)

この手続きが,引き続く選択対象の組について,原始プログラムでの出現順に選択主体の組を満足するWHEN指定が選択されるか又はすべての選択対象の組が処理されるまで繰り返される.

(3)

比較が完了した後,EVALUATE文の実行は次のように進む.
(a)

WHEN指定が選択された場合は,実行は選択されたWHEN指定に続く最初の無条件文-1に進む.

(b)

WHEN指定が選択されず,WHEN OTHER指定が書かれている場合は,実行は無条件文-2に進む.

(c)

EVALUATE文の実行の範囲は,実行が選択されたWHEN指定の無条件文-1の終わり又は無条件文-2の終わりに達したか,又はWHEN指定が選択されずWHEN OTHER指定が書かれていなかったときに終わりとなる.


EVALUATE文の例

例1:
次のようなデータ部の記述がある.
Image

以下にEVALUATE文の記述例と,その機能について示す.
Image
      条    件

     実行される文

KINDの値
WEIGHTの値
   "1"
  0〜25
MOVE 60 TO CHARGE
   "1"
  26〜50
MOVE 70 TO CHARGE
   "2"
いずれでも
MOVE 40 TO CHARGE
     上記以外
MOVE "ERROR" TO FLAG



例2:
次のようなデータ部の記述がある.
Image

以下にEVALUATE文の記述例と,その機能について示す.
Image
        条        件

      実行される文

SEXの値
AGEの値
MARKSの値
  "F"
 18〜22
   >74


MOVE "PASS" TO RESULT


  "F"
 23〜29
   >84
  "M"
 18〜39
   >79
           上記以外
MOVE "FAIL" TO RESULT


Index