select case matches a scalar against several cases. case default is the fallback.

Program

Play the program to map a numeric code to a label.

select_case.f90
Replay: real traced execution (multi-file project)
program select_case_demo
    implicit none
    integer :: code
    character(len=8) :: label
    code = 2
    select case (code)
        case (1)
            label = "one"
        case (2)
            label = "two"
        case default
            label = "many"
    end select
    print '(A)', trim(label)
end program select_case_demo
  1. code ← 2

    4character(len=8) :: label5code = 26select case (code)
    values this step2code
  2. matched ← case (2)

    5code = 26select case (code)7    case (1)
    values this stepcase (2)matched2code
  3. label ← two

    9case (2)10    label = "two"11case default
    values this steptwolabel
  4. print '(A)', trim(label)

    13    end select14    print '(A)', trim(label)15end program select_case_demo
    outputtwo
    values this steptwolabel

Match the Code

  1. code starts at 2.
  2. select case (code) checks the cases once.
  3. case (2) matches.
  4. The label becomes two. | Code | Case used | Label | | --- | --- | --- | | 1 | case (1) | one | | 2 | case (2) | two | | other | case default | many |
select case `select case (expr)` evaluates once and picks a case.
case Each `case (value)` matches one or more literals.
case default `case default` runs when nothing else matches.

Exercise: select_case.f90

Use select case to map numeric codes to one, two, or many