如何根据用户输入变量(fortran90)执行多个语句?

Tym*_*ric 2 fortran fortran90

我正在编写Fortran90子例程,但该语言对于此问题的目的无关紧要.如果它更方便,请随意提供psuedocode的答案.

我有一个基于输入参数执行的数字语句(或语句组).让输入变量为x并且让我们调用语句A,B,C,...,N.这些语句不共享足够的公共属性来组合,因此应该单独执行.

条件是:

if ( x .eq. 1 ) then
  ! execute A
endif
if ( x .eq. 2 ) then
  ! execute A
  ! execute B
if ( x .eq. 3 ) then
  ! execute A
  ! execute B
  ! execute C
endif
  .
  .
  .
Run Code Online (Sandbox Code Playgroud)

等等...

(请注意,所有! execute语句都是数学计算和变量赋值.没有打印,没有函数被调用等等.)

我尝试简化代码将其转化为:

if ( x .ge. 1 ) then
  ! execute A
endif
if ( x .ge. 2 ) then
  ! execute B
endif
if ( x .ge. 3 ) then
  ! execute C
endif
  .
  .
  .
Run Code Online (Sandbox Code Playgroud)

对于大的价值来说,这仍然是太多的编码x.我知道我必须对所有execute语句进行编码(我已经这样做了),但我希望还有一种更快的方法来运行用户指定的数字,而不必输入超过一百个if语句.有什么想法吗?

Hig*_*ark 6

哦,这computed go to是多么令人羞愧的耻辱.C21中没有自尊的Fortran程序员会写出类似的东西

      ...
      read(*,*) x
      go to (3,2,1) x    

 1    call C()
 2    call B()
 3    call A()
Run Code Online (Sandbox Code Playgroud)

当然,这会calls以与问题中指定的顺序相反的顺序执行,但问题也暗示顺序无关紧要.

我将通过提醒读者关闭这一点,这绝对是令人讨厌的旧FORTRAN.我们不要再谈这个了