I have SAVE statement in subroutine or function. Also I haven't IMPLICIT NONE. In that case are loop variables in Fortran SAVEd? Example:
FUNCTION GLOB7S(P)
REAL LONG
LOGICAL mess
COMMON/iounit/konsol,mess
COMMON/LPOLY/PLG(9,4),CTLOC,STLOC,C2TLOC,S2TLOC,C3TLOC,S3TLOC,
$ IYR,DAY,DF,DFA,APD,APDF,APT(4),LONG
COMMON/CSW/SW(25),ISW,SWC(25)
DIMENSION P(100),T(14)
SAVE
DATA DR/1.72142E-2/,DGTR/1.74533E-2/,PSET/2./
DATA DAYL/-1./,P32,P18,P14,P39/4*-1000./
!$OMP THREADPRIVATE(/iounit/)
!$OMP THREADPRIVATE(/LPOLY/)
!$OMP THREADPRIVATE(/CSW/)
!$OMP THREADPRIVATE(T,DR,DGTR,PSET,DAYL,P32,P18,P14,P39)
!$OMP THREADPRIVATE(CD32,CD18,CD14,CD39)
!$OMP THREADPRIVATE(T71,T72,T81,T82,TT,GLOB7S)
C CONFIRM PARAMETER SET
IF(P(100).EQ.0) P(100)=PSET
IF(P(100).NE.PSET) THEN
if(mess) WRITE(konsol,900) PSET,P(100)
900 FORMAT(1X,'WRONG PARAMETER SET FOR GLOB7S',3F10.1)
STOP
ENDIF
DO 10 J=1,14
T(J)=0.
10 CONTINUE
IF(DAY.NE.DAYL.OR.P32.NE.P(32)) CD32=COS(DR*(DAY-P(32)))
IF(DAY.NE.DAYL.OR.P18.NE.P(18)) CD18=COS(2.*DR*(DAY-P(18)))
IF(DAY.NE.DAYL.OR.P14.NE.P(14)) CD14=COS(DR*(DAY-P(14)))
IF(DAY.NE.DAYL.OR.P39.NE.P(39)) CD39=COS(2.*DR*(DAY-P(39)))
DAYL=DAY
P32=P(32)
P18=P(18)
P14=P(14)
P39=P(39)
...
In this example is J SAVEd? I need to know this, because I'm trying to parallelize very old and very big Fortran code with OpenMP and I don't shure that I use THREADPRIVATE directive right.