Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
27160 Discussions

Error 6633 & error #8284 actual argument and dummy argument problem.

Mark_I_1
Beginner
245 Views

I'm getting a few errors after turning on interface checking and need some help as I'm not an experienced Fortran coder :-)

I have the code below that generates the errors #6633 & error #8284

INTEGER*4	nv,nc
INTEGER*4	reason
INTEGER*4	first_iter, max_iter
INTEGER*4	iterations

REAL*8		x(1)
REAL*8		price
REAL*8		lamda(*)

nc = int(x(1))
CALL opt_plant_model ( nv, nc, price )

error #6633: The type of the actual argument differs from the type of the dummy argument.   [NC]
error #8284: If the actual argument is scalar, the dummy argument shall be scalar unless the actual argument is of type character or is an element of an array that is not assumed shape, pointer, or polymorphic.  

The definition of opt_plant_model is below

REAL*8 FUNCTION opt_plant_model (nv, nc, nxt)
IMPLICIT NONE 

INCLUDE		'RTO+.PRM'
INCLUDE		'OPTIMUSER.CMN'
INCLUDE		'NEW_INTERFACE.INC'

INTEGER*4	nv, nc, nxt

I thought that as I am assigning x(1) to an integer this would be Ok. I'm using Intel Fortran 2016 update 3 on Windows 7.

0 Kudos
1 Reply
andrew_4619
Honored Contributor I
245 Views

1] Price is declared as real*8 but you are passing it to integer*4 Nxt. The types must match.

2] opt_plant_model is a real*8 "function" but CALL is valid only for a "subroutine" so changeing:

REAL*8 FUNCTION opt_plant_model(nv, nc, nxt)

to 

SUBROUTINE opt_plant_model(nv, nc, nxt)

would be more valid

 

 

 

 

Reply