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

IMSL environment Variable

Wen_C_
Beginner
1,194 Views

Hi, I tried to compile a program with IMSL routines. The error message is "error #7002" Error in opening the compiled module file.  Check INCLUDE paths."  According to "Using the IMSL Libraries from the Integrated Development Environment (Windows* OS)",   I added:      $(FNL_DIR)\IA32\include\dll, Should I specify $(FNL_DIR) in the environment variable ? How to specify this ?  Or Should I replace  $(FNL_DIR) with something else.  I installed the IMSL and Intel Fortran using all default folders.  Thank you.

0 Kudos
9 Replies
Steven_L_Intel1
Employee
1,194 Views

You appeared to follow the instructions correctly, though sometimes I have seen customers mis-type the string in the directories list. Can you attach a screenshot of the Includes directory list? Are you building for Win32 or x64? 

Also, do this: Press Start, and search for "cmd.exe". When cmd.exe is displayed, click on it to run it. Type:

set fnl_dir

what is displayed?

0 Kudos
Steven_L_Intel1
Employee
1,194 Views

I got the screenshots you sent as a message - it would better to keep this in the forum.

You didn't include the full text of the error message. What is the name of the module it was looking for?

0 Kudos
Wen_C_
Beginner
1,194 Views

Steve,  Thank you. Here is the complete error message and part of my source code with IMSL call.

C:\0_Fortran\Balance\Balance.for(2): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [DLSBRR_INT]

Part of my source code is listed below:

use DLSBRR_int

INCLUDE 'link_fnl_static.h'

C

IMPLICIT DOUBLE PRECISION(A-H,O-Z)

C

PARAMETER(MAXS=200,MAXP=500,MAXQ=500,MAXSQ=4*MAXS*MAXQ)

PARAMETER(MAXP2=2*MAXP,MAXQ2=2*MAXQ)

C

COMPLEX*16 X0(MAXQ),X(MAXQ),HIJ, HIJK(MAXQ,MAXP,MAXS)

DIMENSION H(MAXSQ,MAXP2),UV(MAXP2),XY(MAXSQ),RES(MAXSQ)

C............

C

IH = MAXSQ

M = 2 * NSQ

N = 2 * NP

TOL= 0.0D0 ! 1.0E-08 -- Note ZERO uses all the columns -- important

C

CALL DLSBRR(M,N,H,IH,XY,TOL,UV,RES,KBASIS)

 

 

 

0 Kudos
Wen_C_
Beginner
1,194 Views

If anyone can show me how to compile and run the sample codes provided from the IMSL package, that will be great.  I could not even compile the sample codes.

0 Kudos
Steven_L_Intel1
Employee
1,194 Views

Thanks - that's very helpful.

There is no module DLSBRR_int. If you were using the "Fortran 90" interface you would instead want "USE LSBRR_INT", but you're calling the "Fortran 77" interface instead so you don't want to use LSBRR_INT. Please read the IMSL documentation carefully.

You could instead add:

USE NUMERICAL_LIBRARIES

This will pull in definitions of the "Fortran 77" interfaces and make sure you're calling them with the correct arguments.

0 Kudos
Steven_L_Intel1
Employee
1,194 Views

Which sample do you need help with? Note that the examples provided don't have the INCLUDE line and it's expected that you'll use %LINK_FNL_STATIC% on the command line.

I'll also suggest that you include 'link_fnl_shared.h' instead.

0 Kudos
mecej4
Honored Contributor III
1,194 Views

There is no module with the name DLSBRR_INT, but there is one named LSBRR_INT. However, since your code calls the Fortran 77 entry point "DLSBRR", using the module does nothing for you, so you may simply delete the USE statement. Alternatively, write "Use LSBRR_INT" and call the module procedure with the name LSBRR.

0 Kudos
Wen_C_
Beginner
1,194 Views

Steve,  Thank you very much.  DLSBRR is the double precision of LSBRR.  I followed the IMSL manual Chapter 1, page 465-466 before and it did not work.  I followed your suggestions: USE NUMERICAL_LIBRARIES and INCLUDE 'link_fnl_static.h' . The program compiled and ran OK.  Thank you very much.  I am learning slowly. 

0 Kudos
Steven_L_Intel1
Employee
1,194 Views

Yes, DLSBRR Is the double precision version of the "Fortran 77" interface to LSBRR. You don't use the _INT modules if you are using the Fortran 77 interfaces. If the documentation says USE LSBRR_INT, you shouldn't try changing the module name just because you are calling DLSBRR.

In new code, I'd recommend calling the "Fortran 90" interface routines which would then require the documented USE line.

0 Kudos
Reply