Value of Fortran DO loop index after the loop
do-loops, fortran, loops
Solution
The value of `i` goes to `11` before the `do` loop determines that it must terminate. The value of `11` is the first value of `i` which causes the end condition of `1`..`10` to fail. So when the loop is done, the value of `i` is `11`.
Put into pseudo-code form:
1) i <- 1
2) if i > 10 goto 6
3) ...code...
4) i <- i + 1
5) goto 2
6) print i
When it gets to step 6, the value of `i` is `11`. When you put in your `if` statement, it becomes:
1) i <- 1
2) if i > 10 goto 7
3) ...code...
4) if i = 7 goto 7
5) i <- i + 1
6) goto 2
7) print i
So clearly `i` will be `7` in this case.
Problem
How do DO loops work exactly? Let's say you have the following loop: ``` do i=1,10 ...code... end do write(*,*)I ``` why is the printed I 11, and not 10? But when the loop stops due to an ``` if(something) exit ``` the I is as expected (for example i=7, exit because some other value reached it's limit).