Control Flow
Select Case
Matching One Value
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
code ← 2
4character(len=8) :: label5code = 26select case (code)values this step2codematched ← case (2)
5code = 26select case (code)7 case (1)values this stepcase (2)matched2codelabel ← two
9case (2)10 label = "two"11case defaultvalues this steptwolabelprint '(A)', trim(label)
13 end select14 print '(A)', trim(label)15end program select_case_demooutputtwovalues this steptwolabel
Match the Code
codestarts at2.select case (code)checks the cases once.case (2)matches.- 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