NAG compiler requires to define variable before its usage in type declaration section. For example, the following code is not correct: ```fortran subroutine test(a, n) implicit none real(8) :: a(n) integer :: n end subroutine test ``` since usage of `n` happens before actual type definition. The proper code is: ```fortran subroutine test(a, n) implicit none integer :: n real(8) :: a(n) end subroutine test ```