A simple example, (the corresponding IF structure is given as a comment,)
SELECT CASE (num) CASE (6,9,99,66) ! IF(num==9.OR. .. .OR.char==66) THEN PRINT*, "Woof woof" CASE (10:65,67:98) ! ELSEIF((num.GE.10.AND.LE.65) .OR. ... PRINT*, "Bow wow" CASE (100:) ! ELSEIF (num.GE.100) THEN PRINT*, "Bark" CASE DEFAULT ! ELSE PRINT*, "Meow" END SELECT ! ENDIF
An IF .. ENDIF construct could be used but a SELECT CASE is neater and more efficient.
Important points are,
A more complex exmaple is given below, this also demonstrates how SELECT CASE constructs may be named.
... outa: SELECT CASE (n) CASE (:-1) outa M = -1 CASE (1:) outa DO i = 1, n inna: SELECT CASE (line(i:i)) CASE ('@','&','*','$') PRINT*, "At EOL" CASE ('a':'z','A':'Z') PRINT*, "Alphabetic" CASE DEFAULT PRINT*, "CHAR OK" END SELECT inna END DO CASE DEFAULT outa PRINT*, "N is zero" END SELECT outa
Analysis: