@egio ,

This “very old FORTRAN … code” appears equivalent to:

```
SUBROUTINE SUB(IRANK, N)
IF (IRANK-N) 17,19,19
17 CONTINUE
PRINT *, "LET US REPEAT 3 TIMES THAT"
DO 19 I = 1, 3
PRINT *, "ARITHMETIC IF IS DELETED FROM THE FORTRAN STANDARD!"
19 CONTINUE
RETURN
END SUBROUTINE
N = 1
IRANK = 0
CALL SUB(IRANK, N)
IRANK = 1
CALL SUB(IRANK, N)
END
```

that `gfortran`

appears to work with as a **“legacy extension”** - see the warning below, “Legacy Extension: Label at (1) is not in the same block as the GOTO statement at (2)”:

```
C:\temp>gfortran p.f -o p.exe
l.f:2:72:
2 | IF (IRANK-N) 17,19,19
| 1
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
l.f:7:3:
2 | IF (IRANK-N) 17,19,19
| 2
......
7 | 19 CONTINUE
| 1
Warning: Legacy Extension: Label at (1) is not in the same block as the GOTO statement at (2)
l.f:7:3:
2 | IF (IRANK-N) 17,19,19
| 2
......
7 | 19 CONTINUE
| 1
Warning: Legacy Extension: Label at (1) is not in the same block as the GOTO statement at (2)
C:\temp>p.exe
LET US REPEAT 3 TIMES THAT
ARITHMETIC IF IS DELETED FROM THE FORTRAN STANDARD!
ARITHMETIC IF IS DELETED FROM THE FORTRAN STANDARD!
ARITHMETIC IF IS DELETED FROM THE FORTRAN STANDARD!
```

Now, imagine the original code as follows with the `DO`

construct following statement `17`

using a different label for the `DO`

than `19`

:

```
SUBROUTINE SUB(IRANK, N)
IF (IRANK-N) 17,19,19
17 CONTINUE
PRINT *, "LET US REPEAT 3 TIMES THAT"
DO 18 I = 1, 3
PRINT *, "ARITHMETIC IF IS DELETED FROM THE FORTRAN STANDARD!"
18 CONTINUE
RETURN
19 CONTINUE
RETURN
END SUBROUTINE
N = 1
IRANK = 0
CALL SUB(IRANK, N)
IRANK = 1
CALL SUB(IRANK, N)
END
```

Give this a try - chances are `gfortran`

will issue no “legacy extension” warnings and `IFORT`

will issue no errors.