Fortran select case 语句
select case 语句允许测试变量是否与值列表相等。每个值称为一个 case,并为每个 select case 检查所选变量。
select case 的语法如下:
[name:] select case (expression)case (selector1)! some statements... case (selector2)! other statements...case default! more statements...end select [name]
以下规则适用于 select 语句:
- select 语句中使用的逻辑表达式可以是逻辑表达式、字符表达式或整数(但不是实数)表达式。
- 您可以在一个选择中包含任意数量的 case。每个 case 后面都有要比较的值,可以是逻辑、字符或整数(但不是实数)表达式,并决定执行哪些语句。
- case 的常量表达式必须与 select 中的变量具有相同的数据类型,并且必须是常量或文字。
- 当所选变量等于一个 case 时,该 case 后面的语句将执行,直到到达下一个 case 语句。
- 如果 select case(表达式)中的表达式与任何选择器都不匹配,则执行 case 默认部分。
流程图:

实例
program selectCaseProgimplicit none! local variable declarationcharacter :: grade = 'B'select case (grade)case ('A')print*, "Excellent!"case ('B')case ('C')print*, "Well done"case ('D')print*, "You passed"case ('F')print*, "Better try again"case defaultprint*, "Invalid grade"end selectprint*, "Your grade is ", gradeend program selectCaseProg
结果是:
Your grade is B
select 的选择范围:
您可以通过指定用冒号分隔的下限和上限来指定 select 的选择范围:
case (low:high)
比如下面的实例:
program selectCaseProgimplicit none! local variable declarationinteger :: marks = 78select case (marks)case (91:100)print*, "Excellent!"case (81:90)print*, "Very good!"case (71:80)print*, "Well done!"case (61:70)print*, "Not bad!"case (41:60)print*, "You passed!"case (:40)print*, "Better try again!"case defaultprint*, "Invalid marks"end selectprint*, "Your marks is ", marksend program selectCaseProg
结果为:
Well done!Your marks is 78