- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Boolean isn't LOGICAL. It's INTEGER. Otherwise, there shouldn't be a problem.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page