resueltos programas programación problemas guia funciones ejemplos fortran subroutine

programas - guia fortran



¿Hay algo de malo en pasar una matriz sin asignar a una rutina sin una interfaz explícita? (1)

Casi has respondido tu propia pregunta. Sí, según el estándar, siempre es ilegal pasar un conjunto asignable no asignado como un argumento real si no tiene una interfaz en el alcance.

Si tiene una interfaz en el alcance, solo es legal si el argumento ficticio también es asignable.

Y sí, me ha mordido. Mi trabajo ha sido asignar a tamaño cero antes de la llamada.

Considerar:

program main real, allocatable, dimension(:) :: foo integer n n=10 call dofoo(foo,n,1) allocate(foo(n)) call dofoo(foo,n,0) end program main subroutine dofoo(foo,n,mode) real foo(n) integer i,n,mode if(mode.eq.1)then n=6 return endif do i=1,n foo(i)=i enddo return end subroutine dofoo

¿Hay algo mal con el código anterior? (Funciona con gfortran) Paso en una matriz no asignada la primera vez, pero no la toco. ¿Hay algo en el estándar que pueda hacer que esto se comporte de una manera dependiente del sistema?