Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29245 Discussions

Compiler error#8299 when recompiling in version 11.1

Reinaldo_Garcia
Beginner
657 Views

I have a program that was compiling and runing fine in version 11.0.074. When I upgrad to version 11.1, the same code gives me this error in the CALL DDDATA(LOC(OpCodes)) in subrotine SetDDData (see below):

"error #8299: A scalar actual argument must be passed to a scalar dummy argument unless the actual argument is of type character or is an element of an array that is neither assumed shape nor pointer. [IPTR]"

I checked the compiler options and seem to be the same for both versions.

Any suggestions?

Thanks,

Reinaldo

SUBROUTINE SetDDData (WindowHeader)

use spmodule ! Specifies constants, TYPEs and OpCodes

USE GLOBALSHAL2D

TYPE(SIMPLE_WINDOWS_DATA_STRUCT_T), DIMENSION(3) :: OpCodes

CHARACTER(50) :: WindowHeader

TYPE(SIMPLE_WINDOWS_SIZE_T) WindowSize

SAVE OpCodes,WindowSize

WindowSize%iUnits = SIMPLE_PERCENT

WindowSize%iWidth = 80

WindowSize%iHeight =

WindowSize%iDepth =

OpCodes(1)%iOpc = SIMPLE_WINDOWS_SET_WINDOWNAME

OpCodes(1)%iPtr = LOC(WindowHeader)

OpCodes(2)%iOpc = SIMPLE_WINDOWS_WINDOW_SIZE

OpCodes(2)%iPtr = LOC(WindowSize)

OpCodes(3)%iOpc = SIMPLE_WINDOWS_END_LIST

CALL DDDATA(LOC(OpCodes)) ! here is the compile error

CALL DEVNAM('WINDOW')

END SUBROUTINE SetDDData

MODULE SPMODULE

...

TYPE SIMPLE_WINDOWS_DATA_STRUCT_T

INTEGER :: iOpc

INTEGER :: iPtr

END TYPE SIMPLE_WINDOWS_DATA_STRUCT_T

SUBROUTINE DDDATA(IPTR)

!DEC$ ATTRIBUTES STDCALL, REFERENCE, MIXED_STR_LEN_ARG, DECORATE, ALIAS:"DDDATA" :: DDDATA

INTEGER, DIMENSION(*), INTENT(IN) :: IPTR ! 1D[8]

END SUBROUTINE

0 Kudos
1 Solution
Steven_L_Intel1
Employee
656 Views
The compiler is now detecting an error in your code that it didn't previously. This is discussed in a recent Doctor Fortran post, I've Come Here For An Argument. The problem is that you're passing the scalar expression LOC(OpCodes) to IPTR which is declared as an array. Read the post for more information.

View solution in original post

0 Kudos
2 Replies
Steven_L_Intel1
Employee
657 Views
The compiler is now detecting an error in your code that it didn't previously. This is discussed in a recent Doctor Fortran post, I've Come Here For An Argument. The problem is that you're passing the scalar expression LOC(OpCodes) to IPTR which is declared as an array. Read the post for more information.
0 Kudos
Reinaldo_Garcia
Beginner
656 Views
The compiler is now detecting an error in your code that it didn't previously. This is discussed in a recent Doctor Fortran post, I've Come Here For An Argument. The problem is that you're passing the scalar expression LOC(OpCodes) to IPTR which is declared as an array. Read the post for more information.

Steve:

Thanks so much for the clarification.

Reinaldo
0 Kudos
Reply