Конструкция CASE

 

[name:] SELECT CASE (expr)
[CASE (case-value [, case-value] ...) [name]
     block] ...
[CASE DEFAULT [name]
     block]
END SELECT [name]

 

exprскалярное выражение типа integer, logical, or character

case-value – одно или более скалярных integer, logical, or character инициализирующих  выражений. Каждое case-value должно быть того же типа, что и expr. If the type is character, case-value and expr can be of different lengths, but their kind parameter must be the same.

Для Integer and character выражений допустимо задание диапазона значений case values в одном из видов:

  low:high
  low:
  :high

Case values не должны перекрываться!

Сначала вычисляется Expr. Результат сравнивается со значениями case values для нахождения единственного совпадения (может быть только одно). Если совпадение найдено, выполняется соответствующий блок в CASE и конструкция заканчивается.

Если в case-value  задан диапазон, то сравнение выполняется по сл. правилам

Range

A Match Occurs If:

low:

case-index >= low

:high

case-index <= high

low:high

low <= case-index <= high

Блок-схема.

 

Например:

CASE (1, 4, 7, 11:14, 22)      ! Individual values as specified:  1, 4, 7, 11, 12, 13, 14, 22
CASE (:-1)                     ! All values less than zero
CASE (0)                       ! Only zero
CASE (1:)                      ! All values above zero
Если есть CASE DEFAULT и ни одно совпадение не найдено – выполняется блок в  CASE DEFAULT.
Сравним 
If (a==0) then
  Print *,1
else if (a==2) then
  Print *,2
else if (a==3) then
  Print *,3
else
  Print *,4
endif
 
Select case (a)
Case (0)
  Print *,1
Case (2)
  Print *,2
Case (3)
  Print *,3
Case default
  Print *,4
End select

 

НА ГЛАВНУЮ ДАЛЕЕ
Hosted by uCoz