【发布时间】:2014-05-24 15:51:14
【问题描述】:
我最近继承了以前使用旧版英特尔 Visual Fortran 编译器构建的 Fortran 代码。有一段代码用于编译,但现在抛出错误 #6633 'The type of the actual argument of the dummy argument.'
问题是当一个名为READ_AND_CONVERT 的函数被REAL*4 DATA_ARRAY(*) 调用时,但在READ_AND_CONVERT 中,该参数被声明为INT*2。我想它真的只是想要DATA_ARRAY的地址。
有没有办法传递DATA_ARRAY 的地址,即使它们属于不同类型?
这里是READ_AND_CONVERT:
SUBROUTINE READ_AND_CONVERT (MX, N)
C=======================================================================
C Reads Integer*2 Data Array and Converts it to Real*4.
C
C This is a service routine called by subroutines
C READ_XYZ_2, READ_XYZ_4, READ_XYZ_ALL and READ_XYZ_FULL
C=======================================================================
C
IMPLICIT NONE
C
INCLUDE 'XYZ.FOR'
INCLUDE 'COMMON_XYZIO.FOR'
INCLUDE 'COMMON_HDR.FOR'
C
C-----------------------------------------------------------------------
C Local Parameters
C-----------------------------------------------------------------------
C
LOGICAL BB_FOUND
INTEGER*2 MX, MY
INTEGER*4 N, J
REAL*4 YJ, BB
C
DIMENSION MX(*), MY(2)
EQUIVALENCE (YJ, MY(1))
C
C-----------------------------------------------------------------------
C
CALL GET_REAL_PARAMETER ('XYZ$_OFFSET', BB, BB_FOUND)
C
READ (LUGIN) (MX(J), J = 1,N)
C
IF (BB_FOUND) THEN
DO J = N, 1, -1
YJ = (SCALE_FACTOR * MX(J)) + BB
MX(2*J) = MY(2)
MX(2*J-1) = MY(1)
END DO
ELSE
DO J = N, 1, -1
YJ = SCALE_FACTOR * MX(J)
MX(2*J) = MY(2)
MX(2*J-1) = MY(1)
END DO
END IF
C
RETURN
END
【问题讨论】:
-
您确实需要更好地标记您的问题以获得一些关注。即使订阅了 [fortran*],我也没有听懂。 intel-fortran的粉丝只有41个,fortran的粉丝只有1500个。
标签: fortran intel-fortran