我最近繼承了Fortran代碼,這些代碼曾經是用舊版本的英特爾Visual Fortran編譯器構建的。有一段代碼用於編譯,但現在拋出錯誤#6633'實際參數的類型與僞參數的類型不同。'fortran僞參數與實際參數不匹配。鑄造可用?
問題是,當一個函數調用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位追隨者。 –