我是Fortran的初学者。我必须使用函数和数组创建一个程序,但它不起作用。我尝试使用调试器:
-g -fcheck-bounds -fbacktrace -fimplicit-none etc
但没有错。
这是我的功能:
FUNCTION tabspot (i, j, OFFSHORE, hauteurhoulemin, hauteurhoulemax)
IMPLICIT NONE
!---------------------------------------
! Déclaration des arguments
!---------------------------------------
INTEGER, INTENT(INOUT) :: i, j
CHARACTER(LEN=5), INTENT(OUT) :: OFFSHORE
INTEGER, INTENT(OUT):: hauteurhoulemin
INTEGER, INTENT(OUT):: hauteurhoulemax
!---------------------------------------
! Déclaration du type de la fonction
!---------------------------------------
CHARACTER(LEN=14), DIMENSION(4) :: tabspot
!---------------------------------------
! Déclaration des varibles locales
!---------------------------------------
CHARACTER(LEN=14) :: box
tabspot(1) = 'Cotedesbasques'
tabspot(2) = 'Mundaka'
tabspot(3) = 'Parlementia'
tabspot(4) = 'Hendaye'
DO i=1,4
SELECT CASE (i)
CASE(1)
OFFSHORE = 'EST'
hauteurhoulemin = 30
hauteurhoulemax = 150
CASE(2)
OFFSHORE = 'SUD'
hauteurhoulemin = 90
hauteurhoulemax = 400
CASE(3)
OFFSHORE = 'EST'
hauteurhoulemin = 120
hauteurhoulemax = 500
CASE(4)
OFFSHORE = 'SUD'
hauteurhoulemin = 60
hauteurhoulemax = 200
END SELECT
DO j=i+1,5
IF (((vent1%direction == OFFSHORE) .AND. (hauteurhoule>=hauteurhoulemin)&
.AND. (hauteurhoule<=hauteurhoulemax)) .OR. &
((vent1%force == 0) .AND. (hauteurhoule>=hauteurhoulemin)&
.AND. (hauteurhoule<=hauteurhoulemax)))THEN
box=tabspot(i)
tabspot(i)=tabspot(j)
tabspot(j)=box
END IF
END DO
END DO
END FUNCTION
提前感谢您的回答。 马丁