在我的子程序中,我定义了一个数组,然后在创建条目之前用数字填充它。在我的程序中,我也在输入之前调用子程序。在我的条目中我使用这个数组 - 但是,它似乎在条目中回到零,而在子例程中它不是零。
不复制我的所有代码,这是相关子程序的一部分:
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)
(在这种情况下L
是1
)时是,它表示它为零,但是当我写出SRL(1)
是5
时,在条目上方的代码块中。
变量SRL(L)
在子例程的开头声明。
答案 0 :(得分:3)
如评论中所述,SRL
数组可能缺少save
属性。但是,考虑到代码的使用年限,可能是他们使用的编译器默认保存了变量,或者使用了特定的编译选项。
希望以某种方式记录这一点可能太过分了,但是你可以用-fno-automatic
为gfortran
,-save
为ifort
。我猜测任何其他编译器也会允许设置这样的选项。