Fortran - matriz allocatable subrutina

 
Vista:

matriz allocatable subrutina

Publicado por Esteban (1 intervención) el 05/10/2013 23:53:15
Hola a todos, mi problema es el siguiente:

Tengo una subrutina que dentro de ella calcula (o llena) una matriz, y despues esa misma matriz la devuelve al programa principal, el problema es que al llamarla desde el programa principal me sale el error:

Dummy argument 'm_salida' of procedure 'sub2' at (1) has an attribute that requires an explicit interface for this procedure

sé que es porque en el programa principal la matriz no tiene una dimensión específica (puesto que la matriz es de dimensión variable dependiendo si se cumplen ciertas condiciones), como puedo conocer la dimensión de esa matriz en el programa principal para luego seguir ocupando esa misma matriz para cálculos posteriores?

Un ejemplo básico que arroja el mismo error seria el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
program pruebematriz1
implicit none
integer, allocatable, dimension(:) :: m_salida
 
 
 call sub2(m_salida)
print*, m_salida
 
end program
 
subroutine sub2(m_salida)
implicit none
integer :: i,nto=4
integer, allocatable, intent(out),dimension(:) :: m_salida
allocate(m_salida(3))
 
m_salida=(/(-1*i,i=1,3)/)
 
if (nto>=3) then
 
	deallocate(m_salida)
	allocate(m_salida(4))
	m_salida=(/(i,i=5,8)/)    ! cambia la dimension si se cumple la condicion
 
end if
end subroutine


Espero puedan ayudarme porfavor

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder