- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Everyone,
I'm new to this community and I'm seeking your help.
I recently purchased a visual Fortran compiler professional version 11.1.072 with the IMSL library.
Actually Im facing a difficulty in running one ofthecodes that was written in 1995. Im not able to establish a link between the program and the IMSL library which makes all call statements generate errors. I tried to establish that link by following all steps mentioned on the read me files and the help files as well but unfortunately it wasnt successful.
Could anyone please help me or direct me to someone who can help.
Ifrequested by anyone who canhelp, I cane-mail my source code to check the errors.
Thank you so much
I'm new to this community and I'm seeking your help.
I recently purchased a visual Fortran compiler professional version 11.1.072 with the IMSL library.
Actually Im facing a difficulty in running one ofthecodes that was written in 1995. Im not able to establish a link between the program and the IMSL library which makes all call statements generate errors. I tried to establish that link by following all steps mentioned on the read me files and the help files as well but unfortunately it wasnt successful.
Could anyone please help me or direct me to someone who can help.
Ifrequested by anyone who canhelp, I cane-mail my source code to check the errors.
Thank you so much
Link Copied
6 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Read this first.
Add the following lines to your main program:
include 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'
If you are using fixed form source, be sure to start those in column 7 (the include, anyway).
See if that helps.
Add the following lines to your main program:
include 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'
If you are using fixed form source, be sure to start those in column 7 (the include, anyway).
See if that helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If the suggestions from Steve Lionel do not suffice to solve your problem, please post the source code using the Syntax Highlighter Tool for sources with a reasonably small number of lines, or attach the source code files (see the
"Attaching or Including
Files in a Post"
link at the top of this forum).
We also need to know the specific error messages from the compiler, linker and IMSL or Fortran runtime, as appropriate.
"Attaching or Including
Files in a Post"
link at the top of this forum).
We also need to know the specific error messages from the compiler, linker and IMSL or Fortran runtime, as appropriate.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When I see "CALL" errors, my first thought is always the stricter evaluation of IVF compared to CVF.
In IVF, you cannot CALL a routine that has been given a "prototype" that specifies a return value. You have to give each call a return value. So, instead of CALL SomeSub() you need DummyResult = SomeSub().
Similarly, if you don't have a "prototype", you must use CALL.
If this is your problem, they are easy to fix, because the compiler finds them for you. Just use the function prototype version, and create a dummy to return the result into.
We had thousands of these errors, and we fixed them in a day or two. Also, the fixes are compatible with CVF, so we put all these fixes into the CVF baseline before we migrated. I have no issue at all with problems the compiler finds for you.
In IVF, you cannot CALL a routine that has been given a "prototype" that specifies a return value. You have to give each call a return value. So, instead of CALL SomeSub() you need DummyResult = SomeSub().
Similarly, if you don't have a "prototype", you must use CALL.
If this is your problem, they are easy to fix, because the compiler finds them for you. Just use the function prototype version, and create a dummy to return the result into.
We had thousands of these errors, and we fixed them in a day or two. Also, the fixes are compatible with CVF, so we put all these fixes into the CVF baseline before we migrated. I have no issue at all with problems the compiler finds for you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all
Many thanks to all for your constructive replies.
To Jeremy: Actually I wasn't able to get your suggestion about the usage of function prototype version to create a dummy to return the result into. As such I would be very apprecaitive if you sent me an example on how to use the mentioned function or alrenatively you can use my attached code for that purpose.
To mecej4 the code you asked for is attached now. Please kindly try to help me out to solve the problem I described before. Note: the error is in the calling of the the U matrix as shown below
Error 1 error #7983: The storage extent of the dummy argument exceeds that of the actual argument. C:\Documents and Settings\TOC\Desktop\Robert SIMPSON\IASTSIM.FOR 1179
Error 2 error #7983: The storage extent of the dummy argument exceeds that of the actual argument. C:\Documents and Settings\TOC\Desktop\Robert SIMPSON\IASTSIM.FOR 1222
Error 3 error #7983: The storage extent of the dummy argument exceeds that of the actual argument. C:\Documents and Settings\TOC\Desktop\Robert SIMPSON\IASTSIM.FOR 1223
Error 4 error #7983: The storage extent of the dummy argument exceeds that of the actual argument. C:\Documents and Settings\TOC\Desktop\Robert SIMPSON\IASTSIM.FOR 1430
Error 5 Compilation Aborted (code 1) C:\Documents and Settings\TOC\Desktop\Robert SIMPSON\IASTSIM.FOR 1
Error 6 error #7983: The storage extent of the dummy argument exceeds that of the actual argument. C:\Documents and Settings\TOC\Desktop\Robert SIMPSON\IASTSIM2.FOR 1083
Error 7 Compilation Aborted (code 1) C:\Documents and Settings\TOC\Desktop\Robert SIMPSON\IASTSIM2.FOR 1
Deep Regards
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We need the Fortran source code (or at least the relevant parts); the solution file by itself is not helpful in tracking down source code errors.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As you don't show the source code, my guess would be that you have done something like
cubroutine caller
real array(25)
call callee(array)
end
subroutine callee(array)
real array(100)
end
which could be translated to Fortran 77 (still valid although the standard terminology changed):
subroutine callee(array)
real array(*)
....
or to Fortran 90:
module yourmod
subroutine callee(array)
real array(:)
end subroutine callee
end module yourmod
...
subroutine caller
use yourmod
......
While your code doesn't comply with standards, it will probably work with the checking disabled, if the errors aren't a symptom of something more serious.
cubroutine caller
real array(25)
call callee(array)
end
subroutine callee(array)
real array(100)
end
which could be translated to Fortran 77 (still valid although the standard terminology changed):
subroutine callee(array)
real array(*)
....
or to Fortran 90:
module yourmod
subroutine callee(array)
real array(:)
end subroutine callee
end module yourmod
...
subroutine caller
use yourmod
......
While your code doesn't comply with standards, it will probably work with the checking disabled, if the errors aren't a symptom of something more serious.

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