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

fglGetFloatv and fglGetBooleanv subroutines dropped

Giel_H_
Beginner
683 Views
I am wondering whether the subroutines fglGetFloatv and fglGetBooleanv are dropped from the include file ifopngl.f90 in the latest release of the IVF compiler (version 9..29).
I get build errors (no matching specific subroutine for this generic subroutine call).
Is ittrue that fglGetFloatv and fglGetBooleanv have been deleted?
Giel
0 Kudos
5 Replies
Steven_L_Intel1
Employee
683 Views
No - if they were dropped, the error message would be different. More likely the arguments you are passing don't match the interfaces as declared. You can read the source of the module in the compiler's IA32INCLUDE folder.
fglGetFloatv takes two arguments. These can be a scalar integer(4) and an array of real(4), or a scalar integer(4) and an integer(4) containing a pointer to an array (this was an older implementation). fglGetBooleanv is similar except that the second argument can be an integer(4) array.
0 Kudos
Giel_H_
Beginner
683 Views
Steve, I used the project properties Fortran Diagnostics Check Routine Interfaces setting 'Yes' to check the interfaces of an application and the compilation reported errorswith calls to fglGetFloatvand fglGetBooleanv. Since the ifopngl.f90 hasn't changed, there must have been something wrong with the arguments of fglGetFloatvand fglGetBooleanv.
The second argument in both calls contained %ref(param).
I changed it into loc(param).
That resolved the compilation errors with the Check Routine Interfaces setting set to 'Yes'.
Giel
0 Kudos
Steven_L_Intel1
Employee
683 Views
Actually, that feature won't help you in this case. That works when you don't already have an explicit interface for the routine.

What is the declaration of "param"? My guess is that it is not the correct type for the routine.

Nothing has changed in ifopngl, but the compiler has had bugs fixed where it was improperly lenient in argument matching with generics.
0 Kudos
Giel_H_
Beginner
683 Views
For the param in the fglGetFloatv I have two occurrences in two different subroutines; the declaration is eitherreal param(4) orreal param(16) .
For the param in the fglGetBooleanv the declaration islogical param(1).
Giel
0 Kudos
Steven_L_Intel1
Employee
683 Views
Boolean isn't LOGICAL. It's INTEGER. Otherwise, there shouldn't be a problem.
0 Kudos
Reply