Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

Declaration Implicit real*8(A-H,O-Z)

Jon_D_2
New Contributor I
459 Views

 

Our new system is the Intel64 f90 on Red Hat Linux 64 bit environment.

I am porting from DEC Alpha Unix Tru 64.   So we are moving from a 64 bit environment, to a new 64 bit environment using a 64 bit compiler.

The real declarations used in the old code are:    Implicit real*8(A-H,O-Z) 

In one large application, I spent a week changing the real declaration from the implicit to:  IMPLICIT NONE and the REAL(8) for the all the vars thereby explicitly declaring all the reals.  

I am now working on a huge application (at least a half billion lines of code) and it uses the same implicit declarations.  

QUESTION:

The compiler does not complain about the use of implicit declaration; however, I am having problems with the output.   Do I need to stop troubleshooting and explicitly declare the reals before proceeding any further? 

Thanks in advance for you time.    -Jon

 

0 Kudos
3 Replies
Braun__Jay
Beginner
459 Views

Having ported a Fortran application from Alpha OpenVMS to Linux, I can offer the opinion that "implicit none" is worth it.  Let the compiler find the variables that need to be declared; errors and warnings can be your friend.

Jay

jimdempseyatthecove
Black Belt
459 Views

You might look at using the command line option:

-real-size 64

***However, there may be issues to resolve with library routines that you do not compile.

I do strongly agree/suggest use of IMPLICIT NONE.

Also, make use of all the compilation diagnostics during conversion as this often shakes out errors in coding that went undetected.

Jim Dempsey

mecej4
Black Belt
459 Views

If you really decide to write declarations for 500 million lines of code, you should use utilities that are known to do a good job of that.

It may also be useful to use the cross-reference listings that the compiler can output when run on the old code. Those listings will show information about the variables in each subprogram, which you can use in checking the variable declarations that are being added.

Reply