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

Non-optional actual argument?

Intel_C_Intel
Employee
3,546 Views
Does anybody know what this compilation error message mean:

Error: A non-optional actual argument must be present when invoking a procedure with an explicit interface. [Y3]
CALL ARC(FI, P, D1, D2, D3)

I have no Y3 throughout the whole program.
0 Kudos
4 Replies
james1
Beginner
3,546 Views
The subroutine ARC was defined with an interface including the formal argument called Y3, probably the sixth argument, which you didn't specify when you made the call to ARC in your program. Make sure your actual argument and formal argument lists match.

James
0 Kudos
Intel_C_Intel
Employee
3,546 Views
Thank you James. I know now. The reason was that the ARC is a (reserved) Fortran graphics function which looks like this:

result = ARC (x1, y1, x2, y2, x3, y3, x4, y4)

I have to change my subroutine's name.
0 Kudos
Steven_L_Intel1
Employee
3,546 Views
There are no reserved names in Fortran. My guess is that you had a USE DFLIB, but did not have an explicit interface for your routine ARC. The best solution is to use an ONLY clause on the USE DFLIB to import only those names you are using, or to use a renaming clause to rename DFLIB's ARC to something else. You should then add an explicit interface for your ARC, though that is not strictly required.

You should not change the name of your routine.

Steve
0 Kudos
Intel_C_Intel
Employee
3,546 Views
Thank you Steve. Yes, there is a USE DFLIB there and I could guess the same thing myself too, because I had the same call to ARC in another routine where I didn't get any compile time error message. But I did change the name of the routine anyway, because many other people here, now or in the future, are going to use this routine and perhaps together with DFLIB, and they are going to get the same error without knowing the reason, which means several lost hours.
0 Kudos
Reply