N = 0 DO 210 I = 1, 10 J = I DO 200 K = 5, 1 L = K N = N + 1 200 CONTINUE 210 CONTINUE WRITE(*,*)'I =',I, ', J =',J, ', K =',K, & ', N =',N, ', L =',L END demo% f77 -silent DoNest1.f "DoNest1.f", line 4: Warning: DO range never executed demo% a.out I = 11, J = 10, K = 5, N = 0, L = 0 demo%
The inner loop is not executed, and at the WRITE, L is undefined. Here L is shown as 0, but that is implementation-dependent; do not rely on it.
Example 2: The program DoNest2.f (DO variable always defined):
INTEGER COUNT, OUTER COUNT = 0 DO OUTER = 1, 5 NOUT = OUTER DO INNER = 1, 3 NIN = INNER COUNT = COUNT+1 END DO END DO WRITE(*,*) OUTER, NOUT, INNER, NIN, COUNT END
6 5 4 3 15