子程序中定义的变量是否会进入一个条目(在子程序中)?

时间:2014-05-16 14:05:18

标签: fortran

在我的子程序中,我定义了一个数组,然后在创建条目之前用数字填充它。在我的程序中,我也在输入之前调用子程序。在我的条目中我使用这个数组 - 但是,它似乎在条目中回到零,而在子例程中它不是零。

不复制我的所有代码,这是相关子程序的一部分:

      SRL(1)=SRW+4
      DO 10 I=2,NLAY
10    SRL(I)=SRL(I-1)+MLAY(I-1)+1
      LAST=SRL(NLAY)+MLAY(NLAY)
      SRW=LAST
      RETURN

      ENTRY STLOAD(NUMG,M,L,S,T,SS,TS,W,TAU)
      N=SRL(L)+M-1
      READ(10,REC=N) W1,TAU1,S1,T1,SS1,TS1

这是我遇到麻烦的地方,因为它说我的记录号不是正数,当我写出SRL(1)(在这种情况下L1)时是,它表示它为零,但是当我写出SRL(1)5时,在条目上方的代码块中。

变量SRL(L)在子例程的开头声明。

1 个答案:

答案 0 :(得分:3)

如评论中所述,SRL数组可能缺少save属性。但是,考虑到代码的使用年限,可能是他们使用的编译器默认保存了变量,或者使用了特定的编译选项。

希望以某种方式记录这一点可能太过分了,但是你可以用-fno-automaticgfortran-saveifort。我猜测任何其他编译器也会允许设置这样的选项。