From alison Tue May 13 09:45:39 1997
Subject: DIGITAL Fortran 5.0

To NONMEM users with PC's:

Most NONMEM users with PC's and Windows 95/NT have been using the Microsoft Fortran 4.0 compiler.

As some of you may may know, Microsoft discontinued sales of Powerstation Fortran 4.0 earlier this month, and will soon discontine support for it, although some software vendors still have PowerStation 4.0 in stock and are still selling it.

Here is a portion of the press release (for the full text: see http:\\

MAYNARD, Mass., and REDMOND, Wash. <97> March 11, 1997 <97> DIGITAL Equipment Corp. and Microsoft Corp. today announced an agreement under which DIGITAL will license the Microsoft<AE> Developer Studio(tm) visual development system. DIGITAL's first product under the arrangement, DIGITAL(tm) Visual Fortran 5.0 for the Microsoft Windows<AE> 95 and Windows NT<AE> operating systems, can be ordered beginning March 19 for shipments starting next month. It features the combined strengths of DIGITAL's Fortran 90 compiler technology and Microsoft Developer Studio. Microsoft is discontinuing sales of its own Fortran PowerStation 4.0 to the channel effective April 1, 1997, and is recommending DIGITAL's Visual Fortran 5.0 as the approved upgrade for current scientific and engineering customers. Microsoft and DIGITAL will ensure a smooth migration path and support for existing Microsoft Fortran PowerStation customers. Microsoft will continue to provide current levels of support until Oct. 1, 1997, and subsequent paid support until April 1, 1998. DIGITAL will provide 90-day warranty support and post-warranty service options for DIGITAL Visual Fortran 5.0 customers.

I've just received a copy of DIGITAL Visual Fortran 5.0 Standard Edition (purchased directly from DEC) and have installed it on a Pentium PC running Windows 95. This computer also has Powerstation Fortran 4.0 installed.

Based on my experience to date, here are some prelimary comments.

The memo is long, but the details (notes 6-9) can be skipped. (I refer to the new compiler as "Fortran 5.0".)

1) Fortran 5.0 is a completely different product than PowerStation 4.0. It appears to be the same compiler that DEC developed for DEC hardware, ported to the Intel platform, with an attempt to make it identical to PowerStation so far as user interface is concerned. The price and performance are comparable to that of PowerStation 4.0. The results for a given NONMEM problem may be somewhat different.

2) Either compiler can be invoked from the DOS command line with the command "fl32", depending on the current DOS path. Both compilers can co-exist on the same computer, but you have to be careful. See 7 below.

3) With PowerStation Fortran, /Ox (full optimization) is buggy.

We recommend compiler options "/Ox /Op". With Fortran 5.0, there is more control over optimization (options /optimize:0 thru /optimize:4). BUT: there is a new bug with full optimization (see 6 below).

We recommend compiler options "/optimize:1 /fpe:0".

4) I see no reason to upgrade from Powerstation 4.0 to Fortran 5.0. Some benchmark results are discussed in 9 below, and some differences in output in 8 below.

5) If someone is buying a Fortran compiler for Windows 95 or NT for the first time, Fortran 5.0 is an adequate choice.

The memo "INSTALLATION NOTES FOR NONMEM VERSION IV UNDER DOS OR MICROSOFT WINDOWS USING MICROSOFT FORTRAN POWERSTATION" by Bill Bachman and myself will be revised and will apply to both compilers. The only difference will be the compiler options, as described above.

There are, of course, other compilers that can be used, but the NONMEM Project Group intends to work with both PowerStation 4.0 *AND* Fortran 5.0 in the future, e.g., for testing NONMEM V and its installation on the Intel/Win95 platform. There will be advantages for NONMEM users who have one (or both) of these compilers.

--------------- details for those who are interested -------

6) Note on the option /fpe:0 for those who are familiar with floating point errors:

/fpe:0 provides the same actions with floating point error as does PowerStation Fortran: silent underflow to 0; immediate stop with overflow, operand error, or divide by zero. Without /fpe:0, the default is /fpe:3, and Fortran 5.0 acts much the same as Unix: underflow is benign, and the program continues after other floating point errors with results set to Inf, NaN, etc. We feel that the former set of actions is preferable for typical users of NONMEM.

Note on optimization:

/optimize:1 is the least-aggresive level of optimization. PREDPP's routine RRXPON (which is used by ADVAN7/SS7; e.g., CONTROL6 on the distribution medium) must be compiled with this level optimization. There is a definite problem with routine DDDMEXP of RRXPON which not exist with PowerStation Fortran. When compiled with /optimize:2 and higher, it sometimes gives incorrect results. I have reported this as a compiler bug to DEC. Until DEC explains to me what causes DDDMEXP to return incorrect results with /optimize:2 and higher, and I can assure myself that this does not apply to any other NONMEM or PREDPP code, it seems unwise to use any higher level of optimization.

Options /G4 and /G5 are ignored in Fortran 5.0.

This message may be ignored:

info: Some interprocedural optimizations may be disabled when compiling in this mode

7) Note on co-existence of both compilers on the same computer, for people who choose to upgrade:

I installed Fortran 5.0 on a system that already had Powerstation installed. The DEC manual indicates that they can co-exist. I myself use them not from the Developer's studio environment but rather from the MS-DOS prompt.

The command that invokes Fortran 5.0 is "df" and it has a totally new set of options. However, for the sake of customers who are moving from Powerstation, it can also be invoked as "fl32", and the old options are recognized. (Old command; new compiler!) It detects which command was used, and has different defaults for "df" vs. "fl32", but recognizes both sets of options.

Fortran 5.0 and PowerStation can both be used, but you have to set the PATH variable correctly. You can see your full path by entering the command "path" at an MS-DOS prompt.

On my system, AUTOEXEC.BAT was updated during the installation of Fortran 5.0 and now contains this line (which I've broken across three lines for readability):

set PATH="C:\Program Files\DevStudio\SharedIDE\BIN";
"C:\Program Files\DevStudio\DF\BIN";
"C:\Program Files\DevStudio\VC\BIN";"%PATH%"

In other words, it puts the new directories ahead of all the old ones in the path.

With this path, *either* of the commands df or fl32 invokes a file from directory DF\BIN (df.exe and fl32.exe are the same file), and gives this output:

DIGITAL Visual Fortran Optimizing Compiler Version: V5.0 Copyright (c) 1997 Digital Equipment Corp. All rights reserved.

In order to revert to the PowerStation compiler, I created a file that I call "pathpow.bat" contining this line:


This lists the other directories, i.e., the ones that follow the "Program Files" group added by DEC.

After entering the command "pathpow", the command fl32 invokes fl32.exe from the MSDEV\BIN directory, and gives this output:

Microsoft (R) Fortran PowerStation Version 4.00 Copyright (C) Microsoft Corp 1982-1995. All rights reserved.

I have not tried combining object modules from the two compilers. I suggest that, if you want to have both on the same system so that you can compare results, keep the NONMEM/PREDPP/NMTRAN object modules in totally separate directories, e.g.,

c:\nmiv (PowerStation object modules)
c:\nmdf (DEC object modules)

If you use nmlink.for and nmfe.bat as described in the memo, make sure that *ALL* directory names in these programs are appropriate to the given compiler.

8) Differences in output:

With PowerStation Fortran, leading 0's are not displayed in most of NONMEM's output. E.g.,

With Fortran 5.0, leading 0's are displayed. E.g.,

This makes no difference, except that people who upgrade from PowerStation to Fortran 5.0 will find it harder to compare old and new output files because so many trivial differences will appear. This is, of course, a frequent difficulty when comparing NONMEM output from different platforms.

9) Benchmark results:

I tried a short NONMEM problem with both compilers.
With PowerStation Fortran and options /Ox /Op /G5:
Objective function 105.332
560 evaluations of the Objective Function
3.1 sig digits
approx 2 min. 40 secs. NONMEM run time
With Fortran 5.0 and options /fpe:0 /optimize:1
Objective function 105.351
434 evaluations of the Objective function
3.3 sig digits
approx 2 min. 50 secs. NONMEM run time
With SUN Fortran SC3.0.1 and no optimization:
Objective function 105.351
341 evaluations
3.0 sig digits

Final estimate of theta and sigma were the same with all, but gradients and the final estimate of omega was somewhat different with all three.

This illustrates the difficulty of comparing a given run across different hardware and/or compilers. Minor differences of this sort in the path to the minimum and even in the minimum itself are not unexpected when comparing runs on different platforms.


From Wed May 14 04:55:07 1997
Subject: Re: DIGITAL Fortran 5.0

NONMEM users:

Concerning Microsoft's decision to discontinue sales of Powerstation FORTRAN (and thus all of their limited selection of FORTRAN products?), people should consider FORTRAN products from Lahey Computer Systems, Inc., Incline Village, Nevada ( Several years ago, I used their 16 bit DOS compilers finding them quite good. Lahey specializes in FORTRAN products for PCs with emphasis on 32 bit products for the Windows environment.

Lahey deserves consideration for several reasons:

1. They're big enough to have been in business for 30 years specializing in FORTRAN products.

2. They're small enough to know that without solid support and a loyal customer base they won't reach 35 years. They offer unlimited, free technical support. (Microsoft never had to worry about doing this!)

3. Lahey the company and Tom Lahey the CEO have been pushing hard to advance FORTRAN into more modern forms, ie., FORTRAN 90 and FORTRAN 95, which add to the language components like vectorized math and some object oriented features while deemphasizing undesirable aspects like common blocks. Eventually (soon) NONMEM will have to be in part rewritten, if only because FORTRAN compilers and their human programmers are too young to remember ever seeing Hollerith constants or assigned GOTOs.

In case you are wondering, I have no ties to Lahey. Rather, I have been pleased with their products in the past, just as I have been displeased with the level of commitment Microsoft has offered. I am doubtful that DIGITAL's commitment will be much different.


Paul (Sisyphus) B. Laub
mathematical modeling of biomedical data
Dept. of Medical Oncology 328 West Bldg.
Fox Chase Cancer Center
7701 Burholme Ave.
Phila. PA 19111 USA
(215)728-4743 (voice)
(215) 728-2741 (fax)