Path: bloom-beacon.mit.edu!hookup!ames!koriel!newsworthy.West.Sun.COM!male.EBay.Sun.COM!engnews1.Eng.Sun.COM!engnews2.Eng.Sun.COM!engnews2!khb
From: khb@chiba.Eng.Sun.COM (chiba)
Newsgroups: comp.lang.fortran,comp.answers,news.answers
Subject: Fortran FAQ
Followup-To: comp.lang.fortran
Date: 05 Apr 1994 02:14:15 GMT
Organization: SunPro
Lines: 2542
Approved: news-answers-request@MIT.Edu
Expires: 1 May 1994
Message-ID: <KHB.94Apr4191416@chiba.Eng.Sun.COM>
NNTP-Posting-Host: chiba.eng.sun.com
Archive-name: fortran-faq
Frequency: mostly monthly
Xref: bloom-beacon.mit.edu comp.lang.fortran:8845 comp.answers:4775 news.answers:17673

Archive-name: fortran-faq
Archive-name: fortran-faq
Frequency: mostly monthly
Expires: 1 May 1994

Here are some answers to frequently asked questions. The "author", as
is the custom, has appropriated posted responses as seemed apt. I have
tried to leave attributions in, as correctly as possible. To anyone
who has been offended by omission or otherwise, my apologies. I shall
give priority to corrections regarding attribution.

No one takes responsibility for any of this text, neither the employer
of the "author", the "author", friends of the "author", pets of the
"author" nor anyone else.

Your mileage WILL vary. 

A good place to look for FAQ's is:
	rtfm.mit.edu, /pub/usenet

If you have comments/suggestions/edit proposals please send them to me
(keith.bierman@eng.sun.com). I do not promise to accept 'em. I
encourage others to make better FAQ lists, so I can retire this one.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
summary of changes:

None this month.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	Questions:

Q0) How should one spell FORTRAN/Fortran?
Q1) Is Fortran 90 a Standard? Where can I get a copy of the Fortran
    90 Standard? How about electronic copies? 
Q2) What Fortran 90 translators are available?
Q3) I have heard of fortran "lints"; what are they, and where can
    I get one?
Q4) "Why do people use FORTRAN? C is so much better"
Q5)  Why can't I get an electronic version of the standard?
Q6)  Where can I get "foo" (some random package)
Q7)  Where can I get a free compiler?
Q8)  What is the best compiler for a PC?
Q9)  How does Fortran 90 relate to FORTRAN '77 and what is Fortran 90?
Q10) My compiler is mis-behaving; who enforces the standard?
Q11) What are good books on Fortran? 
Q12) Are there pretty printers for FORTRAN? Flowchart generators?
Q13) Why are there aimless debates?
Q14) How do I call f77 from C (and visa versa)
Q15) What constitutes good FORTRAN style?
Q16) For whatever reasons, I want to translate my Fortran into C.
     What tools are available?
Q17) For whatever reasons, I want to translate my existing C code
     into Fortran. What tools are available?
Q18) What is preprocessing, how can it help? How can it hurt?
Q19) How can I convert an existing FORTRAN 77 program to the free form
     source of Fortran 90?
Q20) Who creates these silly standards anyway?
Q21) How can I read my VAX binary data somewhere else?
Q22) My F77 program compiled ok on a <system1>, but gives me heaps of
     syntax errors on a <system2>. What's wrong?
Q23) My F77 program ran ok on a <system1>, but on a <system2> it just gives
     me strange results. What's wrong?
Q24) Is there a WEB for Fortran (and what is WEB anyway)?
Q25) Where can I find coded BLAS (and what are coded BLAS?)
Q26) How common is DO ... END DO?
Q27) Where can I learn more about the history of Fortran?
Q28) Fortran text editors?
Q29) What are ENCODE and DECODE statements, and how are they translated to
     standard Fortran?
Q30) Tell me about Parallel Fortran dialects, what are they, etc.
Q31) Where can I find a f90 tutorial?
Q32) f90.faq from Michel Olagnon
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Q0)  How should one spell FORTRAN/Fortran?

    FORTRAN is generally the preferred spelling for discussions of versions of
    the language prior to the current one ("90"). Fortran is the
    spelling chosen by X3J3 and WG5. In this document a feeble effort
    has been made to capitalize accordingly (e.g. vast existing
    software ... FORTRAN vs. generic Fortran to mean all versions of
    the standard, and specifically the modern dialect. generic Fortran to mean all versions of
    the standard, and specifically the modern dialect, ISO 1539:1991).

From: walt@netcom.com (Walt Brainerd)
	There was an effort to "standardize" on spelling of programming
	languages just after F77 became a standard.  The rule: if you say
	the letters, it is all caps (APL); if you pronounce it as a word,
	it is not (Cobol, Fortran, Ada).  See, for example the difinitive
	article describing Fortran 77 in the Oct 1978 issue of the Comm.
	of the ACM.  The timing was such that FORTRAN got put on the
	standard itself, though many always after that have referred to
	it as Fortran 77.  Of course, there are those who think it is not
	truly Fortran if not written with all caps.

<ed note>

	ISO 1539:1991 and its ANSI counterpart X3.198-1992 consistently
	employ the spelling "Fortran" to refer to the language being
	defined. Reference(s) to the older version employ "small caps"
	for the "ORTRAN" characters.


Q1)  Is it a Standard? Where can I get a copy of the Fortran 90
     Standard?

Fortran "90" is an ISO standard endorsed/adopted by several countries.
It is also a US standard in its own right. ANSI adopted it on 21
September 1992 (X3.198-1992). It was adopted by ISO July 1991 as
ISO/IEC 1539:1991.

<khb> You can't get it from ftp. The various standards bodies get a
substantial fraction of their income from sales of standards
documents. This is unfortunate <khb> Electronic versions are
available, see the note from Walt below.

From: julian@cernvax.cern.ch (julian bunn)

         The new Fortran 90 standard has now been formally published
	 and is available from the ISO central secretariat or from the
	 national member bodies. The price is about $120. Some
	 ordering detail follow.  I can supply addresses in other
	 countries not mentioned on request (to METCALF@CERNVM).
 
    The document reference is ISO/IEC 1539 : 1991. There is no ISBN.
 
    ISO
    1, rue de Varembe
    Case postale 56
    1211 Geneva 20
    Switzerland
    Fax: +41 22 734 10 79   cost 185 swiss francs.
 
    ANSI
    1430 Broadway
    New York, NY 10018

or

American National Standards Institute
Attn: Customer Service
11 West 42nd Street
New York, NY 10036

Phone: (212)642-4900 8:45-4:45 (EST) 
Fax: (212)302-1286
 
    BSI
    2 Park Street
    London W1A 2BS
 
    DIN
    Burggrafenstrasse 6
    Postfach 1107
    D-1000 Berlin 30
 
    AFNOR
    Tour Europe
    Cedex 7
    92049 Paris La Defence
 
SCC
1200-45 O'Connor
Ottawa
Ontario  K1P 6N7
 
                            Mike Metcalf
                            (metcalf@cernvm)

and from walt@netcom.com

For those of you who don't read comp.lang.fortran, you might be
interested to know that I (Walt Brainerd) just called Global
Engineering to see if they sell ISO 1539:1991.  They do; the price is
$225.

And 

You can obtain copies through:
	Global Engineering Documents
	2805 McGaw Ave.
	Irvine, CA. 92714
	(714) 261-1455
	(800) 854-7179


New ANSI number 
			ANSI X3.198-1992

How about electronic copies?
Return-Path: walt@netcom.com
Subject: ISO 1539 in electronic form

In accordance with an official agreement with
the International Standards Organization, Unicomp
is now able to distribute electronic versions of
the Fortran 90 standard: "ISO/IEC 1539 : 1991,
Information technology--Programming languages--Fortran".

The money received from this effort will go partly to
fund ISO activities and partly to recover the costs
incurred by Unicomp in preparing and typesetting the
standard document.  The prices are set by ISO.

The document can be obtained in three versions:

1.  An ASCII version suitable for viewing on a
    computer terminal using any kind of editor.
    Cost: USD 125.

2.  A PostScript version with a license allowing
    the purchaser to print n paper copies.
    Cost: USD 125 + 10n.

3.  Complete source in ditroff with macros and
    software to extract and create the annexes.
    The source constitutes a fairly highs and
    software to extract and create the annexes.
    The source constitutes a fairly high level
    marked-up document; for example, each program
    beginning and ending is marked and there
    are few low-level typographic commands such
    as size and font changes.  Cost USD 1000.

I am quite enthused especially about version (2).
If you want to have 10 copies for your organization,
and it costs $10 to make a printed copy, then the
cost to make the 10 copies would be $125 + $200,
or just $32.50 per copy, which is a substantial
savings over purchasing paper copies.

Versions (1) and (3) will be accompanied by a
license restricting use to one CPU and prohibiting
copying, except for backup purposes, etc.  The
version (2) license will prohibit distributing
any of the printed copies outside of the purchasing
organization.

If you have special requirements, such as wanting
to distribute a copy with each version of your compiler
or using the source as a part of your documentation,
we can make special arrangements, subject to the
approval of the ISO.  Please advise me of your
requirements and we can work up a proposal together.

ISO and Unicomp think this will provide the oft requested access to
the standard in electronic form. This is the first time this is being
tried, so we hope that organizations will be careful to observe the
rules and encourage the continued availability of this and other
standards in electronic form. 

Payment can be made by Visa or MasterCard, or with
a check on a US Bank in US funds.  We <unicomp> will accept
a purchase order only if the amount is $500 or more.

Walter S. Brainerd; Unicomp; phone: (415) 949-4052
 email: walt@netcom.com; fax: (415) 949-4058; 


Q2) What Fortran 90 translators are available?

From: schumanm@Informatik.TU-Muenchen.DE (Matthias Schumann)
From: macphed@dvinci.USask.Ca (Ian MacPhedran)

This is the promised summary of my request for information about
Fortran 90 (f90) compilers. I am sorry for the delay in getting this
posted, but I was away for a week, and still haven't caught up.

I received a large amount of information, including a previous summary.
Rather than parroting the entire list, I have prepared the following
breakdown of the points which interested me.

------------------------------------------------------------------------------

A more current list can be found (if you have gopher) direct from NAG's own 
Bulletin Board thus:

gopher nags2.nag.co.uk 70

Product:  NAGware Fortran 90 Compiler
Descript: Compiles f90 code to C source, or directly to executable
          file under MS-DOS. Therefore requires native C compiler
          as back end on most platforms.
Platform: Apollo DN10000, DECstations, HP 9000, IBM RS/6000, NeXT,
          Intel 386/486 (MSDOS), Sun 3, Sun 4 (SunOS 4.1)
          VAX/VMS forthcoming.
Pricing:  Varies with platform. Academic Pricing available. Site
          licenses are  available
 +------------------------------------------------------------+
 |                    NAGWare F90 Compiler                    |
 +------------------------------------------------------------+
 |          License Fee Options for Initial Computer          |
 +------------------------------------------------------------+
 |        |         Standard        |         Academic        |
 +--------+-------------------------+-------------------------+
 |        |  Perpetual|  Maintenance|  Perpetual|  Maintenance|
 |        |     Fee   |      Fee    |     Fee   |      Fee    |
 +--------+-----------+-------------+-----------+-------------+
 | CLASS 1|      $895 |      $160   |      $537 |       $97   | (MSDOS)
 +--------+-----------+-------------+-------------------------+
 | CLASS 2|    $1,495 |      $270   |      $897 |      $162   | (Low end work-
 +--------+-----------+-------------+-----------+-------------+ stations)
 | CLASS 3|    $1,995 |      $360   |    $1,197 |      $215   |
 +--------+-----------+-------------+-----------+-------------+
 | CLASS 4|    $2,49 $215   |
 +--------+-----------+-------------+-----------+-------------+
 | CLASS 4|    $2,495 |      $450   |    $1,497 |      $270   | (Server class
 +--------+-----------+-------------+-----------+-------------+ computers)
 | CLASS 5|    $3,295 |      $594   |    $1,977 |      $356   |
 +--------+-----------+-------------+-----------+-------------+
 | CLASS 6|    $4,295 |      $774   |    $2,577 |      $464   |
 +--------+-----------+-------------+-----------+-------------+
 | CLASS 7|    $5,295 |      $945   |    $3,177 |      $572   |
 +--------+-----------+-------------+-----------+-------------+
          (US Dollars)
Contact:  Sheila Caswell, Account Manager,
          Numerical Algorithms Group, Inc.

          1400 Opus Place, Suite 200
          Downers Grove, IL, USA
          60515-5702
Phone:    (708) 971-2337
Source:   E-mail messages, postings, and paper mailing
------------------------------------------------------------------------------

Product:  VAST-90
Descript: Compiles Fortran 90 to Fortran 77 source (requires native 
          Fortran 77 compiler).  Also converts Fortran 77 to Fortran 90.  
Platform: Sun, IBM RS/6000, HP, DEC, Convex, Cray Research.
Pricing:  Single system: starts at $1250 for Unix workstations; higher 
	  prices for larger machines.  Academic discount is 10%.  Volume 
	  discount and site license are also available.  Included: 
          VAST-90, f90 driver, f90 library and documentation.
Contact:
Pacific-Sierra Research Corp.               Switchboard:   (310) 314-2300
2901 28th Street                            Fax:           (310) 314-2323
Santa Monica  CA  90405                     VAST-90 e-mail: info@psrv.com
------------------------------------------------------------------------------
Product:  PF90 Version 2.0
Descript: Converts f90 programs to f77, then compiles with native
          f77 compiler. Therefore native f77 compiler is required.
Platform: Sun 4, IBM RS/6000, Silicon Graphics, DECstations, Convex,
          Alliant, IBM 3090 (AIX), Cray
Pricing:  $595 any platform, single copy.
	  Also available are special site licenses for Universities at
	  only $2000 ($3000 outside the US). This license includes
	  binaries for all platforms that ParaSoft currently supports.
	  Similar license are also available for goverment and
	  commercial sites.  

Contact:  ParaSoft Corporation
          2500 E. Foothill Blvd
          Pasadena, CA 91107
Phone:    (818) 792-9941
E-mail:   f90-info@parasoft.com
Source:   E-mail messages, and PostScript advertisement
------------------------------------------------------------------------------
Product:   PV version 1.1 of Fortran 90 compiler
Descript:  Port of NAG's f90 compiler to MS-DOS, together with Salford
           Software Ltd.
Platform:  Intel 386/486 Computers
Pricing:   $1950.00 (single user, US currency)
Contact:   OTG Systems Inc
Phone:     (717) 222-9100
Source:    E-mail message/summary of previous queries
------------------------------------------------------------------------------
------------------------------------------------------------------------------

I wish to thank the following people for their help, and apologize to any
which I have missed.

psrv!bob@uu.psi.com
naginc!caswell@sunbird.Central.Sun.COM
malcolm@nag.co.uk
roman@parasoft.com
khb@chiba.Eng.Sun.COM
METCALF@crnvma.cern.ch
----------------------------------------------------------------------------
Ian MacPhedran, Engineering Computer Centre, University of Saskatchewan.
2B13 Engineering Building, U. of S. Campus, Saskatoon, Sask., CANADA S7N 0W0
macphed@dvinci.USask.CA  macphedran@sask.USask.CA

Walt Brainerd                walt@netcom.com:

Yes, a Fortran 90 system can be had for $134.

Salford FTN90 is a full PC Fortran 90 implementation based
on the front end developed by the Numerical Algorithms
Group, Ltd.  The Entry Level system requires that all
parts of a program reside in one file (except those that
are brought in with an INCLUDE line).  That file
is compiled and executed without producing a permanent
executable file.

It runs on a 386SX, 386DX, or 486 system with DOS 3.3
or later.

Contact Unicomp for ordering information in North America.
+1-415-949-4052   4058 (fax)

To find out the price and how to get it outside of North
America, contact Salford Software, Venables Building,
5 Cockcroft Road, Salford, M5 4NT, United Kingdom,
+44 61 745 5678, +44 61 745 5666 (fax).

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Media:      Steve Conway 612/683-7133
Financial:  Bill Gacki 612/683-7372

CRAY RESEARCH ANNOUNCES FIRST COMPLETE FORTRAN 90 IMPLEMENTATION FOR
SUPERCOMPUTERS

Cray Fortran 90-Based Products Will Also Be Marketed For PCs, Workstations,
Servers

PORTLAND, Ore., Nov. 15, 1993 -- At the Supercomputing 93
conference held here this week, Cray Research, Inc. (NYSE:CYR)
announced the Cray Fortran 90 (CF90) Programming Environment,
calling it the first native, complete implementation for supercomputers of
the Fortran 90 standard.  The company said products based on the CF90
Programming Environment will also be marketed for leading personal
computers, workstation products and servers.  "Our goal is for the CF90
Programming Environment to become an industry standard,"  said Cray
....
The CF90 Programming Environment will be available for Cray
Research's complete line of parallel vector supercomputers by year-end
1993.  Support for the company's CRAY T3D massively parallel
processing (MPP) systems is planned for the second release of the
CF90 Programming Environment, due out about a year from now, she
said.
...
Under the company's new CraySoft initiative, Cray-compatible, CF90-
based products for SPARC-based workstations and servers, including
Sun products and the recently announced CRAY SUPERSERVER 6400
series from subsidiary Cray Research Superservers, are slated for
availability by mid-1994, auperservers, are slated for
availability by mid-1994, according to CraySoft manager Leary Gates. 
Versions will also be developed for other leading workstation products. 
...
CraySoft will also oversee Cray Research's previously announced
agreement calling for Absoft Corp., Rochester Hills, Mich., to develop and
market Cray-compatible versions of the CF90 compiler for personal
computers based on Intel 486 and Pentium processors, as well as the
forthcoming series of PowerPC-based Macintoshes, by mid-1994, he
said. 
....
CRAY RESEARCH, VISUAL NUMERICS SIGN JOINT TECHNOLOGY AND DISTRIBUTION
AGREEMENT FOR FORTRAN 90 SOFTWARE PRODUCTS

PORTLAND, Ore., Nov. 16, 1993 -- Cray Research, Inc., and Visual Numerics,
Inc., today announced at Supercomputing 93 an agreement to cooperate in the
development and marketing of leading Fortran 90 technologies.
...


Q3) I have heard of fortran "lints" what are they, and where can
   I get one?

   Fortran compilers are not required (and most do not) to protect
   users from themselves, that is to say

	 call sub(1)
	 ...
	 subroutine sub(i)
	 i=i+10
	 return
	 end

   Is non-standard complying but the compiler need not tell you about
   it. Arguably worse, the compiler can produce any result it deems
   fit, up to and including the start of world war III (assuming the
   right optional hardware has been installed).

   Fortran lint programs focus on searching out programming
   errors (or likely errors) and alerting the user.

   There are a wide variety of commercial and pd products. A partial
   list follows:

   IPT FORTRAN lint 1096 East Meadow Circle, Palo Alto, CA 94303, 415/494-7500.
 
   Forwarn from quibus 719 527 1384.

   QA-FORTRAN from PRL UK 44 372 4621 30 fax 44 372 468353
	and *perhaps*  (817) 589 0949

   FORCHECK from Leiden University ND 31 71 276804

   FTNCHEK from netlib. One may receive FTNCHEK by mailing to
   netlib@ornl.gov the following message:

	send ftnchek from fortran

    And Ajay Shah, (213)749-8133, ajayshah@usc.edu
    You may want to mention f2c followed by an ANSI C compiler as a great
    free fortran lint. I could not have survived writing fortran if it
    were not for f2c.  You need to know some C to deal with the error
    messages, but that's not a bad price to pay.


From: atae@spva.ph.ic.ac.uk (Ata Etemadi)...
A very kind soul who wishes to remain anonymous sent me the answer below. 
....
1.  There is a prettyprinter (called TIDY) available via FTP from simtel20.  
    It's in PD2:MSDOS.FORTRAN or some directory with a similar name.
    Capsule review:  does an ok job, sometimes has trouble with
    newer extensions (and even some Fortran 77 standard features).
    Not too bright about making good continuation-line break decisions.
    Free, and available via FTP, so probably the quickest solution.
    Includes source (in Fortran).
    
2.  Greg Flint (afc@klaatu.cc.purdue.edu) at Purdue distributes a program 
    called CLEAN77.  Pretty good (higher quality than #1 above), also free,
    but must be obtained from Purdue (not available via FTP, not 
    redistributable).  Available for assorted systems: PC, UNIX, etc.
    In Fortran, comes with source.

3.  There is an excellent prettyprinter in TOOLPACK - probably has
    more options than any other.  Has trouble with extensions, such
    as long variable names.  Free, comes in source form, in Fortran.
    TOOLPACK as a whole is pretty huge, and requires some work to
    install, but it might be worth it if you stick to pretty much
    standard Fortran.  Available by FTP from Los Alamos (lanl.gov,
    directory pub/toolpack/NAG).  Also distributed commercially for 
    a fee by NAG, who may have a new, improved version that is better 
    than the free one - I don't really know.

4.  SPAG, sold by OTG Systems (about $1000 for MS-DOS, more for Unix).
    Its main function is to restructure GOTOs into IF-THEN-ELSEs, but
    it also prettyprints.  (I think they renamed this within the past
    year).
    it also prettyprints.  (I think they renamed this within the past
    year).

5.  FOR-STRUCT, sold by Cobalt Blue.  Also a GOTO restructurer that
    prettyprints.  About $700 for MS-DOS.  Available from most of the
    big PC software dealers (Programmer's Paradise, etc...)
    (They now have a "budget" version that costs about $250 but has
    program-size limitations.)

6.  PRETTY, sold by Quibus Enterprises, Inc.  Restructures GOTOs, also 
    indents, relabels, moves Formats, etc. $149 for MS-DOS, $500 for Unix 
    workstations.  Call (719) 527-1384 for more info.


From: "John D. McCalpin" <mccalpin@perelandra.cms.udel.edu>
Not too many people use it, but you might want to add TOOLPACK to
the list of FORTRAN "lint" packages.  Here is the blurb that I
send to people who are interested:

======================================================================
TOOLPACK is a large set of utilities written in FORTRAN to do FORTRAN
code analysis and transformation.

TOOLPACK begins by actually parsing the program with a fully FORTRAN-
compliant parser and then does all the code transformations on the
parse and comment trees.

This means that you cannot confuse TOOLPACK by silly FORTRAN-isms that
can easily overwhelm more naive utilities (such as ftnchek).  For
example, TOOLPACK correctly handles statements such as:

      D O U B L E  P R E C I S I O N   A(100,100)
      doubleprecision fred

      DO I = 1.2
      READ(I,J) = 10.


The usual interface to TOOLPACK is a set of 'csh' scripts that run the
various TOOLPACK utilities to do specific tasks.

The ones you will find most useful are: pol, polx, apt, dapt, decs, 
getlst, and discard.   These are the prettyprinter, precision converter,
declaration standardizer, and some necessary utilities.  See below for
more details.

By aware that TOOLPACK is *very* rigorous about the FORTRAN-77
standard.  You may or may not consider this an advantage.

The scripts are described by the 'scripts' script, which delivers the
following:
----------------------------------------------------------------------------
In the Toolpack script summaries below, the section numbers refer to
the Unix environment Users' Guide where more detailed information can
be found.  To obtain on-line information about a script's usage, type
its name without any arguments.

FORTRAN Analysis Facilities

  getlst  Produce a listing showing statement and token numbers. Report
          lexical scanning warnings and errors. (3.1.1)

  syn     Report errors and warnings detected by lexical scanning, parsing,
          and examining a set of symbol attributes. (3.1.2)

  sem     Report errors and warnings detected by lexical scanning, parsing,
          and examining an extended set of symbol attributes. (3.1.3)

  pfort   Report errors and warnings detected by lexical scanning, parsing,
          examining an extended set of symbol attributes, checking for unsafe
          references, and checking conformance to a portable subset of
          FORTRAN. (3.1.4)

  statdoc In a user-supplied report template, place information derived from
          static analysis to assist in documenting the program.  Examples of
          information the user may request are COMMON block usage, symbol
          attributes, and a graph of subprogram calls. (3.1.5)

  inst    Instrument a FORTRAN program so that the instrumented program, when
          executed, produces information about program execution. (3.2.1)

  rundoc  Execute a program instrumented by inst and, in a user-supplied
          report template, place information derived from dynamic analysis
          to assist in documenting the program.  For example, the user may
          determine the frequency of execution of program segments. (3.2.2)

FORTRAN Transformation Facilities

  pol     Format a FORTRAN program under control of user-supplied options
          in a Polish option file. (4.1.1)

  polx    Construct a Polish option file via a menu-driven editor. lish option file. (4.1.1)

  polx    Construct a Polish option file via a menu-driven editor. (4.1.2)

  decs    Rebuild the declarative part of a FORTRAN program. (4.2.1)

  apt     Transform a single-precision version of a FORTRAN program to
          double precision or vice versa. (4.3.1)

  dapt    Convert precision and rebuild the declarations, combining the
          functions of apt and decs. (4.3.2)

  cname   Change the names in a FORTRAN program that satisfy conditions
          derived from information in either the lexical token stream or
          the symbol table or both. (4.4.1)

  lname   Transform a FORTRAN program containing long names to a program
          with standard names. (4.4.2)

  stf     Rebuild the flow of control in a FORTRAN program to standardized
          form. (4.5.1)

  ucs     Transform nests of DO loops matching certain paradigms so that
          the transformed code executes more efficiently on vector machines.
          (4.6.1)

Miscellaneous Facilities

  fdiff   Compare two FORTRAN programs at the lexical token level. (5.1.1)

  dac     Compare two data files, neglecting certain formatting differences
          and numerical differences smaller than a given tolerance. (5.1.2)

  vcon    Create, edit, and retrieve versions of a file contained in a
          version file. (5.2.1)

  discard Remove unneeded files created by the above scripts. (5.3.1)

  scripts Print this summary of the scripts. (5.4.1)

----------------------------------------------------------------------------

TOOLPACK can be obtained by anonymous ftp from perelandra.cms.udel.edu
in the directory pub/Lang/Toolpack/.
The UNIX version is in the file toolpack.tar.Z
Serious hackers will want the versions in the Distrib directory.

The package is known to compile on Silicon Graphics and Sun machines,
though the Makefile is reasonably braindamaged.

You will need about 16 MB for the stripped executables on an SGI machine.
Figure on double that for compiling the package.....

Have fun!
--
John D. McCalpin			mccalpin@perelandra.cms.udel.edu
Assistant Professor			mccalpin@brahms.udel.edu
College of Marine Studies, U. Del.	John.McCalpin@mvs.udel.edu

Aside from code reformatting, there is the other meaning of pretty
printing ...  

From: James F Hall <james.f.hall@uwrf.edu>
....

Second, on Q12 in the faq, about available pretty printers for
Fortran...  Some time ago, I found a pretty printer called "lgrind",
which converted a Fortran program into LaTeX/TeX.  This text could be
included in a larger LaTeX/TeX file, or processed immediately.  I
chose not to use this because I found it was not the best use of my
quota, but others may find it useful.

Lgrind may be found using an archie search:
	archie lgrind
;;;;
Q4) "Why do people use FORTRAN?, C is so much better"

   One should avoid such pointless arguments .... if you feel this
   way, don't subscribe to comp.lang.fortran.

   This sort of question always triggers off a protracted discussion,
   the highlights of which are typically:

       a) FORTRAN and C have different semantics. A FORTRAN optimizer
	  knows more about aliasing, function interactions, and I/O. A
	  C optimizer has to infer or compute such information. C
	  bigots typically have neither written such optimizers nor
	  worked with folks who do it for a living, and are prone to
	  dismiss such arguments as being petty and neolithic.

	  FORTRAN programmers are often a bit more in touch with high
	  performance computing, and are unwilling to bet that heavily
	  on compiler wizardry. 
	  
	  In addition, ANSI/ISO C has very tight requirements on
	  expression evaluation (an overreaction to the K&R ignore
	  parenthesis days) which cripples an optimizer even further.
	  The restrictions are spelled out in Section 5.1.2.3 of
	  ISO/IEC 9899-1990. Both the '77 and '90 Fortran standards
	  allow the optimizer more latitude.

	  Of course, compiler options, vendor extensions and the like
	  sometimes narro latitude.

	  Of course, compiler options, vendor extensions and the like
	  sometimes narrow the difference. Also, some Fortran
	  compilers do not take advantage of all of these features of
	  the language, thus narrowing the gap in the other direction.

	  On any given code, on any given system, all bets are off.

      b)  There is a vast body of existing FORTRAN code (much of which
	  is publically available and of high quality). Numerical
	  codes are particularly difficult to "vet", scientific
	  establishments usually do not have large otherwise idle
	  programming staffs, etc.  so massive recoding into any new
	  language is typically resisted quite strongly.

      c)  Fortran tends to meet some of the needs of scientists
	  better.  Most notably, it has built in support for:
	    - variable dimension array arguments in subroutines
	    - a compiler-supported infix exponentiation operator which
	      is generic with respect to both precision and type,
	      *and* which is generally handled very efficiently  or
	      the commonly occuring special case floating-point**small-integer
	    - complex arithmetic
	    - generic-precision intrinsic functions

      d)  Retraining staff is quite expensive.

      e)  It is sometimes argued that: 
- Jonathan Thornburg <also responsible for misc. other fixups>
	Fortran tends to be easier for non-experts to learn
	than C, because its "mental model of the computer" is
	much simpler.  For example, in Fortran the programmer
	can generally avoid learning about pointers and memory
	addresses, while these are essential in C.  More generally,
	in Fortran the difference between (C notation) x, &x,
	and often even *x is basically hidden, while in C it's
	exposed.  For non-experts this makes Fortran a considerably
	simpler language.

	Because of this relative simplicity, for simple programming
	tasks which fall within its domain, (say writing a simple
	least-squares fitting routine), Fortran generally requires
	much less computer science knowledge of the programmer than
	C does, and is thus much easier to use.

     
Q5)  Why can't I get an electronic version of the standard?

    Someday, perhaps you can. However, at the moment the various
    standards bodies finance some fraction of their work via sales of
    standards documents. ISO and ANSI have both claimed copyright to
    the finished standard, so those who would make and distribute
    copies should be forewarned.

    It should be noted that various people are working to correct
    this; but it is unlikely to ever become free.

Q6) Where can I get "foo" (some random package)

Q6) Where can I get "foo" (some random package)
		contributed by:
				Marc R. Roussel
                                mroussel@alchemy.chem.utoronto.ca

    Use archie. archie is an online database of what is available and
    where on the "net". Archie can be used either via telnet or by
    mail. 
    
    For information about archie send 

    mail archie@archie.rutgers.edu
    subject: help

    And you will get back copious directions on how to use archie.  If
    you prefer interactive experimentation, telnet to
    archie.rutgers.edu and log in as archie.  No password will be
    required.  The first thing you will be shown is a list of other
    archie servers.  If one of these servers is geographically much
    closer to you than Rutgers, NJ, please disconnect (by typing 'quit')
    and use that one.  To save you this step, here is the latest list of
    archie sites:

    archie.rutgers.edu	 128.6.18.15	 (Rutgers University)
    archie.unl.edu	 129.93.1.14	 (University of Nebraska in Lincoln)
    archie.sura.net	 128.167.254.179 (SURAnet archie server)
    archie.ans.net	 147.225.1.2	 (ANS archie server)
    archie.au		 139.130.4.6	 (Australian server)
    archie.funet.fi	 128.214.6.100	 (European server in Finland)
    archie.doc.ic.ac.uk  146.169.11.3	 (UK/England server)
    archie.cs.huji.ac.il 132.65.6.15	 (Israel server)
    archie.wide.ad. (UK/England server)
    archie.cs.huji.ac.il 132.65.6.15	 (Israel server)
    archie.wide.ad.jp	 133.4.3.6	 (Japanese server)

    I believe that all of these servers run the mail server as well as
    the telnet and archie server software.  (The archie server is a
    third way to use archie.  It's probably the best way, but it
    requires that you install software.)

    Once you logged into an archie server, you will want to make
    sure that all the information you will retrieve will be mailed to
    you.  Type

    set mailto userid@machine.foo.edu

    where, of course, you will substitute your own email address for the
    made-up one shown above.  You are now ready to search the database.
    If at any time you want to know what options are available to you,
    type help.  To search for a program or file, type

    prog foo

    where foo is the name of the program or file required.  Once your
    search is done, type 'mail' to have the output sent to you.  (The
    output will almost always be several pages long.)  Then type 'quit' to
    exit.

Q7)  Where can I get a free compiler?

    One such is f2c.

From: mwm@a.gp.cs.cmu.edu (Mark Maimone)
Newsgroups: comp.lang.fortran,comp.lang.c
Subject: Re: Fortran to C translator
Keywords: fortran, C, translator, f2c
Date: 13 Sep 90 01:43:30 GMT
Organization: Carnegie-Mellon University, CS/RI


	Since there have been several requests for a Fortran to C translator
in the past week, I'm reposting the announcement about f2c.  The short
answer is you can get f2c by anonymous-ftp from research.att.com in
directory dist/f2c.

------------------------------------------------------------------------------

	Source for f2c, a Fortran 77 to C translator jointly developed by
folks from Bell Labs, Bellcore, and Carnegie Mellon, is now freely
available.

	F2c was derived from the original UNIX operating system's f77(1),
and the generated C follows f77's calling conventions; on some machines, the
resulting object files are interchangeable with (and behave
indistinguishably from) objects compiled by f77.  The main "advantage" of
f2c is that it converts ANSI standard Fortran 77 into C without manual
intervention, at least when invoked by a suitable script or makefile (that
may need to exercise an f2c option to ensure that COMMON blocks are defined
just once).  The main "problems" are that f2c does no code restructuring
(e.g., gotos are preserved) and that Fortran I/O gets converted into a bunch
of calls; thus the translated C code doesn't look too pretty, and in general
one would need to maintain the Fortran rather than its translation into C.
[F2c is not meant to displace the services of commercial vendors whose
business is to convert Fortran into maintainable C.]

	There is a plethora of options, many of which exist to support
different compilation environments for the translated C (e.g., ANSI C or C++
compatibility, different type sizes, separate files for COMMON blocks to
appease "smart" linkers).  So far f2c (and f2c-generated source) has
compiled successfully on many machines:  Sun, Vax, IBMRT, Apollo, SGI, MIPS,
and Cray to name a few.

	F2c has been under test by the net community for over a year
and has been verified on the NBS tests, several large math libraries,
floating point tests, even code for laying cable on the ocean floor!

	To find out about f2c, send the following E-mail message to netlib
(netlib@research.att.com or research!netlib):

	send index from f2c

Your message will be answered automatically (by a program -- see CACM vol.
30 #5 (May, 1987), pp. 403-407).  You will receive a reply explaining how to
automatically acquire f2c source (about 600K), f2c library source (130K),
and supporting info (man page, etc).  Or you can anonymous-FTP to
research.att.com and look in directory dist/f2c at these files:

	all.Z -- 250K compressed shar file for f2c
	f2c.ps.Z -- 24 page tech report describing f2c
	index -- general info about files
	libf77.Z, libi77.Z -- compressed shar file describing f2c
	index -- general info about files
	libf77.Z, libi77.Z -- compressed shar files for libraries

****************************** DISCLAIMER ******************************
	     Careful! Anything free comes with no guarantee.
************************************************************************

----------------------------------------------------------------------
Mark Maimone				phone: (412) 268 - 7698
Carnegie Mellon Computer Science	email: mwm@cs.cmu.edu
					       cmcspt!mwm@cs.cmu.edu

Notes: f2c accepts only fairly vanilla FORTRAN; vendor supplied f77's
       usually produce better quality code, and accept a wider variety
       of codes. 

The FSF is working on a f77 front end to be integrated with the gcc back end. 

"A mailing list exists for those interested in the Fortran front end for
GCC.  To subscribe, ask: `info-gnu-fortran-request@prep.ai.mit.edu'.
Or try "finger -l fortran@gate.gnu.ai.mit.edu"

There is no FSF project to do a f90 front end. The author of the gf77
front end is willing, if anyone will fund it.

Q8)  What is the best compiler for a PC?

    There are many products, some are quite good. Few are free. 
    f2c and gcc can be had for the PC environment. Popular ones are:

	Lahey (very fast compilation; excellent reputation for support)
	Watcom (touted for good optimization)
	MicroWay (support for odd floating point units)
	LPI  (multi-platform support)
	MicroSoft (various good hooks into windows and such)
	Absoft (multi-platform support)

   It is beyond the scope of a faq to provide a commercial endorsement.

Q9) How does Fortran 90 relate to FORTRAN '77?

	With a few minor exceptions, Fortran 90 is a superset
	of X3.9-1978 FORTRAN.

But this does not mean that all "77" codes will port sans changes.
Many (if not most) programmers employed constructs beyond the '77
standard, or rely on unspecified behavior (say, assuming that an OPEN
of an existing file will position the file pointer to just past the
last record already written) which has changed (that is to say, has
become specified). 

This leads to the obvious question, what is new in Fortran 90?

A complete answer would require considerable text. Some of the most
obvious additions are:

	1) array notation (operators, etc.)
	2) dynamic memory allocation
	3) derived types and operator overloading
	4) keyword argument passing, INTENT (in, out, inout)
	5) modules
	6) modern control structures
	7) free format source code form
	8) other stuff

While it is always tricky to characterize the motives of a large group
of people, I <khb> am inclined to try as follows:

   '90 incorporates two sets of improvements: (1) relatively minor
   fixups that *could* have been done earlier (2) relatively major
   changes to enable better software engineering practices.

Sometimes a "minor" fixup has major effect, such as addition of free
form source form combined with canonization of the MIL-STD 1753
INCLUDE. 

I further go off on a limb and assert that it was the goal of the
*committee* to evolve Fortran in a fashion to enable it to continue to
be the premier language for scientific computation.


Q10) My compiler is mis-behaving; who enforces the standard?

    ANSI and ISO standards do not usually have a particular enforcement
    mechanism. Local bodies sometimes do. 

    However, it should be borne in mind that if *your* source code is
    not standard compliant there is *NO* obligation for a FORTRAN ('77
    and before) compiler to do  *ANYTHING* in particular. In Fortran (90)
    the text in "constraints" must be tested and a warning produced
    (compiler option can be used to evade this, of course).

    Some (notably Guy Steele, with respect to another standard) have
    noted that when non-standard complying code is encountered, a
    compiler may do *ANYTHING* including initation of Global Warfare.
    Keep this in mind.

    When you do find a bona fide compiler bug, you are generally best
    served by reporting it to the *vendor*.nd a bona fide compiler bug, you are generally best
    served by reporting it to the *vendor*. If you neglect to tell the
    vendor, how can you complain about it not being fixed?

    When reporting a *suspected* bug be sure to be quite specific
    about the computer system, operating system rev level (patches
    applied if known) and *compiler*version* (and patches thereof).
    It is very hard for people to read your mind; but they will try. 
    The attempts are often entertaining, sometimes helpful, but always
    an inefficient use of people-time and net-bandwidth.

    Also note that it is generally helpful if you cut down the example
    to the smallest size you can. Vendors are developers too; the
    tendency is invest time/money where one can get the biggest bang
    for the buck. 
    

Q11) What are good books on Fortran? 

    Don't know if they are good. Inclusion in the list is not
    endorsement.  Have misplaced name of the compiler of the 
    original list <sorry>


Author                         Title                                     Year
Morgan/Schonfelder	       Programming in Fortran 90		  1993
Kerrigan		       Migrating to Fortran 90		          1993
Kruger			       Efficient Fortran Programming		  1990
Mojena/Ageloff                 FORTRAN 77                                 1990
Metcalf/Reid                   FORTRAN 90 EXPLAINED                       1990
Boyle                          FORTRAN 77 PDQ                             1989
Bezner                         FORTRAN 77                                 1989
Tremblay                       PROGRAMMING IN FORTRAN 77                  1988
Salmon                         ... ENGINEERS & SCIENTISTS WITH FORTRAN 77 1988
Nyhoff/Leestma                 FORTRAN 77 FOR ENGINEERS & SCIENTISTS      1988
McCracken/Salmon               ... ENGINEERS & SCIENTISTS WITH FORTRAN 77 1988
Davis/Hoffman                  FORTRAN 77: A STRUCTURED DISCIPLINED STYLE 1988
Barnard/Skillicorn             FORTRAN 77 FOR ENGINEERS AND SCIENTISTS    1988
Mashaw                         PROGRAMMING STRUCTURED FORTRAN 77          1987
Cole                           FORTRAN 77: A STRUCTURED ... APPROACH      1987
Boillot                        UNDERSTANDING FORTRAN-77                   1987
Starkey/Ross                   FUNDAMENTAL PROGRAMMING WITH FORTRAN 77    1986
Rouse/Bugnitz                  INTRODUCTION TO FORTRAN 77                 1986
Ratzer                         FORTRAN 77 COURSE                          1986
Page                           FORTRAN 77 FOR HUMANS                      1986
Lehman                       ... SOCIAL SCIENCES: ALGORITHMS & FORTRAN 77 1986
Smith                          FORTRAN 77: A PROBLEM-SOLVING APPROACH     1985
Shelly                         FORTRAN 77: AN INTRODUCTION                1985
Nickerson                      FUNDAMENTALS OF FORTRAN 77 PROGRAMMING     1985
Metcalf                        EFFECTIVE FORTRAN 77                       1985
McKeown                        STRUCTURED PROGRAMMING USING FORTRAN 77    1985
Hume                           FORTRAN 77 FOR SCIENTISTS & ENGINEERS      1985
Dillman                        PROBLEM SOLVING WITH FORTRAN 77            1985
Brainerd                       FORTRAN 77 FUNDAMENTALS AND STYLE          1985
Borse                          FORTRAN 77 & NUMERICAL METHODS FOR ENGINEERS1985
Adman                          FORTRAN 77 SOLUTIONS NON-SCIENTIFIC PROBS. 1985
SSI, Inc. Staff                FORTRAN 77 REFERENCE                       1984
Etter                          PROBLEM SOLVING WITH STRUCTURED FORTRAN 77 1984
Etter                          PROBLEM SOLVING USING FORTRAN 77            ?
Dyck                           FORTRAN 77: A STRUCTURED APPROACH ...      1984
Chivers/Clark                  FORTRAN 77: A HANDS ON APPROACH            1984
Adman                          FORTRAN 77 FOR NON-SCIENTISTS              1984
Willamson/Levesque           * A GUIDEBOOK TO FORTRAN ON SUPERCOMPUTER   1989
Rule            
Willamson/Levesque           * A GUIDEBOOK TO FORTRAN ON SUPERCOMPUTER   1989
Rule                           FORTRAN 77: A PRACTICAL APPROACH          1983
Rouse/Bugnitz                  PROGRAMMING THE IBM PC: FORTRAN 77        1983
Nyhoff/Leestma                 PROBLEM SOLVING WITH FORTRAN 77           1983
Marateck                       FORTRAN 77                                1983
Lehmnkuhl                      FORTRAN 77                                1983
Law                            ANSI FORTRAN 77: INTRO. TO SOFTWARE DESIGN 1983
Holoien/Behforooz              ... STRUCTURED PROGRAMMING WITH FORTRAN 77 1983
Grout                        FUNDAMENTAL ... PROGRAMMING USING FORTRAN 77 1983
Fleming/Redish                 THE U. S. MC MASTER GLOSSARY OF FORTRAN-77  1983
Cole                           ANSI FORTRAN IV WITH FORTRAN 77 EXTENSIONS  1983
Wu                             ANSI FORTRAN IV & 77 AND BUSINESS PROGRAMS  1982
Pollack                        STRUCTURED FORTRAN 77 PROGRAMMING           1982
Katzan                         FORTRAN 77                                  1982
Gibson/Young                  INTRODUCTION TO PROGRAMMING USING FORTRAN 77 1982
Ellis                         STRUCTURED APPROACH FORTRAN 77 PROGRAMMING   1982
Durgin                        FORTRAN 77                                   1982
Nanney                        A PROBLEM-SOLVING APPROACH USING FORTRAN 77  1981
Merchant                      FORTRAN 77: LANGUAGE AND STYLE               1981
Khailany                      BUSINESS PROGRAMMING FORTRAN IV/ANSI FORTRAN 1981
Ashcroft                      PROGRAMMING WITH FORTRAN 77                  1981
Wagener                        FORTRAN 77                                    ?
Wagener                       PRINCIPLES OF FORTRAN 77 PROGRAMMING         1980
Meissner/Organick             FORTRAN 77 FEATURING STRUCTURED PROGRAMMING  1980
Hume/Holt                     PROGRAMMING FORTRAN 77                       1979
Balfour                       PROGRAMMING IN STANDARD FORTRAN 77           1979
Brainerd 		      Programmer's guide to Fortran 90            1990
Adams et al                   Fortran 90 Handbook                         1991
Counihan                      Fortran 90                                  1991
O'Reilly&Assoc		      Unix for FORTRAN Programmers                1990

From: dtm@castle.ed.ac.uk (D Muxworthy)
Newsgroups: comp.lang.fortran
Subject: Fortran 90 text books (was: Fortran 8x Information sought)
Date: 16 Jul 93 12:10:32 GMT
Distribution: comp
Organization: Edinburgh University

In article <KUMAZAWA.93Jul15114854@sutkbcn1.c1.kagu.sut.ad.jp> kumazawa@c1.kagu.sut.ad.jp (Tomonobu Kumazawa) writes:
>
>   I would appreciate any information (books, information materials,
> contacts of software publishers etc.) related to FORTRAN 8x.

Here is a bibliography of Fortran 90 text books.  Any information on additions
would be welcome, as would the ISBN number of Schobert's book. 

1.   Fortran 90 - Counihan, Pitman, 1991, ISBN 0-273-03073-6.
2.   Fortran 90; Approche par la Pratique - Lignelet, Se'rie
     Informatique E'ditions, Menton, 1993, ISBN 2-090615-01-4.
3.   Fortran 90: eine informelle Einfu"hrung - Heisterkamp,
     BI-Wissenschaftsverlag, 1991, ISBN 3-411153-21-0.
4.   Fortran 90 Explained - Metcalf and Reid, Oxford University
     Press, 1992, ISBN 0-19-853772-7 (also available in French,
     Japanese [from Oct 1993] and Russian [Q4, 1993] translation).
5.   Fortran 90 Handbook - Adams, Brainerd, Martin, Smith and
     Wagener, McGraw-Hill, 1992, ISBN 0-07-000406-4.
6.   Fortran 90; Initiation a` partir du Fortran 77 - Aberti,
     Se'rie Informatique E'ditions, Menton, 1992, ISBN 2-090615-00-6.
7.   Fortran 90 Referenz-Handbuch: der neue Fortran-Standard -
     Gehrke, Carl Hansen Verlag, 1991, ISBN 3-446163-21-2.
8.   Programmer's Guide to Fortran 90 - Brainerd, Goldberg and
     Adams, McGraw-Hill, 1990, ISBN 0-07-000248-7.
9.   Programmieren in Fortran - Langer, Springer Verlag, 1993,
     ISBN  ISBN 0-07-000248-7.
9.   Programmieren in Fortran - Langer, Springer Verlag, 1993,
     ISBN 0-387-82446-4.
10.  Programmierung in Fortran 90 - Schobert, Oldenburg, 1991.
11.  Programming in Fortran 90 - Morgan and Schonfelder,
     Blackwell Scientific Publications, 1993, ISBN 0-632028-38-6.
12.  Software Entwicklung in Fortran 90 - U"berhuber and Meditz,
     Springer Verlag, 1993, ISBN 0-387-82450-2.

David Muxworthy
Edinburgh University



Q12) Are there pretty printers for FORTRAN? Flowchart generators?

    Yes. 

    One such is SPAG:  OTG <usa> voice 717 222 9100  fax   717 229 9103
    Authors are   

	       Polyhedron Software Ltd
	       Magdalen House
	       98 Abingdon Road
	       Standlake
	       Witney
	       Oxon OX8 7RN

	       Tel 0865 300 579

     part of their plusFORT product.
	       

    Another is Fortran development Tools from  Quibus 714 527 1384

    Also FOR_STRUC from cobalt-blue. 404 518 1116

    These more than pretty print, they optionally restructure your
    code (duplicating code as needed to tidy up strange GOTO lists,
    turning them into IF-THEN chains, and etc.).


From: dappel@grafted.UUCP (Dave Appel)
Newsgroups: comp.lang.fortran
Subject: Re: code beautifier wanted
Date: 4 Mar 92 21:30:25 GMT
Organization: GRAFTED, Central Indiana's Usenet BBS 317-881-4369

wg@cbnewsm.att.com (Bill Gieske) writes:
> I have tons of old FORTRAN code, most of it in upper case, the majority
> of it not indented.  Is there a code beautifier, either PD or $$ that I
> can run the code through to improve the readability, hence the main-
> tainability?
> Reply to me direct.  I will summarize if appropriate.
> Bill Gieske
> AT&T Bell Laboratories
> wg%alux2@att.research.com

     Call "The Connection at 800-336-1166"  and ask for
their software catalog.

     In their catalog that I have, Sprint 1992, there is an
ad on page 39 from AutoCASE Technology.  They have
a product called "AutoFLOW-FORTRAN" that lists for $1,995.
It claims to automatically document your existing source code.
AutoCASE's number is 408-446-2273.
 
      On page 93 is an ad from POWERLINE Software Inc.
Their number is 800-257-5773, 206-623-9204.  They offer
a product called SOURCE PRINT+, which they call a code
management tool with "multi-style formatting with structured
code blocking."  

They have a Fortran/Basic version for $169, and a Delux
Multi-language version for $249.  This program is for
DOS (MS-DOS presumably) Windows, and OS/2.
 
Hope this helps.

--
Dave Appel
The Grafted Branch BBS
317-881-4369
internet: dappel@grafted.UUCP
uucp: ..!uunet!grafted.UUCP!dappel
    -= newsfeeds available, contact robert@towers.rn.com =-

Hindsight/Fortran

		Summary:

	Features include the ability to draw an interactive structure
	chart and display coverage, software complexity and
	performance information on the structure chart. There are also
	code tracing features, for instance 3 logic diagrams are
	produced. Common blocks can be traced through the structure
	charts, including specific variables within common blocks.
	Hindsight is excellent for documentation, code inspection, and
	bringing new software engineers up to speed on new code. 

For more information or a free demo copy, contact:

Dan Zimmerman,  National Account Manager
Advanced Software Automation, Inc.
3130A Coronado Dr
Santa Clara, 95054

Phone: 408 492-1668  Fax: 408 492-1669

Email: zimme@hindsight.com 

Alternative contact (if Dan cannot be reached:
			    manny@hindsight.com (John Mansperger)


Hindsight/FORTRAN Version 1.0 features

Hindsight/FORTRAN Version 1.0 is a fully integrated software
maintenance, testing, and re-engineering environment which addresses
many problems of the software development cycle, from design to
maintenance.

Hindsight/FORTRAN Version 1.0 parses FORTRAN source code, decomposes
system structure, and from this analysis, produces a single database
from which all of Hindsight's charts, diagrams and reports are
pro produces a single database
from which all of Hindsight's charts, diagrams and reports are
produced.  The results of Hindsight's analysis is a detailed picture
of the static structure of the software system, a representation of
the common and local data, and connections to the dynamically
collected run-time data.  From this, Hindsight generates active
structure charts where the user can isolate logical subtrees to
analyze both the parents and the children of a selected function.
Hindsight collects and analyzes performance, complexity, and test
coverage data.  With the structure chart, the user can display this
data in a graphical and easy to use format.  From the structure chart,
the user can edit multiple functions at a time without having to
specify the file or directory path where the file exists.  Hindsight
even displays the use of common blocks on the structure chart.
Lastly, Hindsight generates logic diagrams for the entire program,
provides point-and-click tracing between high-level and detailed logic
with active line numbers, and generates over fifty detailed reports.

All capabilities mentioned above are integrated in a menu
driven environment utilizing the OpenLook or Motif Graphical User
Interface. Engineers only need to specify a list of source files to be
analyzed and select the operation and parameters for their purposes.
Hindsight provides the ability for multiple diagrams and reports to be
produced simultaneously during a single Hindsight session.

Hindsight/FORTRAN Version 1.0 provides an innovative technique to
graphically represent a software system. The structure chart reflects
the system structure, from which the user can get a clear overview of
the program being examined. Hindsight also allows the user to view or
edit the original code with a click on any subprogram box in the
structure chart.  A major time-saving advance is Hindsight's ability
to reanalyze an edited function and update the structural database
without reanalyzing the entire system.  The J-Diagram and ActionPlus
diagram are two graphical representations of the logic in a software
system and can contain a single module or the entire system.  Both
diagrams utilize the active line number technique to link high-level
module calls with detailed module logic.  Hindsight also actively
links computed GOTO statements with their destination labels by
clicking on the label.  Users can walk through programs and trace the
logic without having to memorize the directories and files where
subprograms are defined and called. This technique saves a great deal
of the users time.

Hindsight/FORTRAN Version 1.0 has many integrated automated tools to
generate documents either on-screen or on paper. Because the documents
are automatically generated, they can be updated as soon as engineers
have modified their source code.  This approach guarantees the
consistency between the design documents and the source code.  The
updated and correct documents will be of great value in maintaining
and improving software products.  These documents are available
on-line to the user and readily accessible through Hindsight's
interactive report mechanism.

Hindsight Version 1.0 has the ability to provide segment or line test
coverage data.  Hindsight generates test coverage data and displays
the data on the structure chart in a statistical way.  Hindsight can
also display the precise location of testing deficiencies on the
J-Diagram, which helps engineers find the exact part of the program
where the code has not been tested. Hindsight's ability to display
performance data, complexity metrics, and test coverage data on charts
and diagrams play an important role in controlling program quality.

Hindsight/FORTRAN Version 1.0 uses a new notation for the J-diagram
which accommodates branch test coverage capability.  The new notation
has a better and more precise method of showing control levels,
complexity, and segment number counting.  The branch test coverage
data generation and display is a great enhancement for test coverage
analysis.  Hindsight's branch test coverage is able to detect
invisible branches, finding more problems that would otherwise be
hidden in programs.  With this information, users can add test cases
for covering the untested code.

Hindsight/FORTRAN Version 1.0 contains the ability to speed up the
development process by generating a specific order for coding the
modules of a users system.  By analyzing a group of modules containing
nothing more than empty shells of subprogs system.  By analyzing a group of modules containing
nothing more than empty shells of subprograms that call the other
subprograms in the system, Hindsight generates the coding order for
the modules to ensure that the process will be testable with the use
of a single driver process and without the need to stub out uncoded
subprograms.  The bottom-up coding approach saves time that would be
wasted coding unneeded stubs.  As development proceeds, Hindsight's
ability to verify that calls to other subprograms are utilizing the
proper interface will also save time and improve program quality.

Other tools:

      		Refine/FORTRAN  ("re-engineering tool")
		Reasoning Systems Inc
		415 494 6201

		FORM (graphical interface to toolpack)
		University of Kent 44 227 762811


		pub/fortran/fxref.tar.Z from biome.bio.ns.ca.
		create cross reference of a FORTRAN program.

		CLEAN77 available from Purdue University.
		Mail Greg Flint (afc.klaatu.cc.purdue.edu) for more info.

		There is a program called TIDY that is available via
		FTP from simtel20  pub/msdos/fortran/tidy621.zip on
		oak.oakland.edu 

Q13) Why are there aimless debates?

    There are some  persistent individuals who would like computer systems
    to work in a fashion somewhat unlike they do now. It seems pointless
    to debate with them; the debates (in various groups) always take
    the same form and never result in meaningful dialog.

    One can usually recognize such by reading a week or so's worth of
    postings. Sometimes you may have to read for a month to recognize
    such. When you do, please try to avoid triggering (or responding to)
    such individuals. 

    Many (if not most) newsreaders support a feature entitled KILL files.
    As you recognize individuals, you may wish to put them into your
    local kill file. For example, the style employed by GNUS:

	(gnus-kill "From" "hrubin@pop.stat.purdue.edu")
	(gnus-kill "Subject" "test")

    the first kills off all postings from the named individual,
    the second kills off all postings including the beloved "test" string.
    See your local NewsGod for details suitable for your local system.
	
Q14) How do I call f77 from C (and visa versa)
     This is quite platform dependent. For Suns see the FORTRAN User's
     Guide, Chapter 14.

    There is a package available from usenet which attempts to make
    this "quick and easy" for a wide range of platforms:

Host ftp.germany.eu.net

    Location: /newsarchive/comp.sources.misc/volume20
      DIRECTORY drwxr-xr-x        512  Jul  7 1993  cfortran

Host ftp.sunet.se

    Location: /pub/usenet/comp.sources.misc/volume20
      DIRECTORY drwxrwxr-x        512  May 28 1993  cfortran

Host ftp.wustl.edu

    Location: /usenet/comp.sources.misc/volume20
      DIRECTORY drwxr-xr-x       8192  Oct 30 15:09  cfortran

Host halcyon.com

    Location: /dec/.0/usenet/comp.sources.misc/volume20
      DIRECTORY dr-xr-xr-x        512  Jul  8 1993  cfortran

Host lth.se

    Location: /pub/netnews/sources.misc/volume20
      DIRECTORY drwxr-xr-x        512  Jun  7 1993  cfortran

Host math.mps.ohio-state.edu

    Location: /pub/archives/comp.sources.misc/vol20
      DIRECTORY drwxrwxr-x        512  Jun  2 1993  cfortran


   It is on many other sites (around the world) too. See archie if
   you need other pointers.

   For some systems, you have to initialize a runtime system explicitly
   if you call a different language, and stopping execution from the
   other program may not work.

	The most recent version of cfortran.h is available via anon. ftp at
	zebra.desy.de.


Q15) What constitutes good FORTRAN style?

One rendition of a FORTRAN 77 style guide is available through anonymous
ftp from ics.uci.edu (128.195.1.1).  To retrieve (please note that it's
not really "anonymous", that's just the Name that you'll be using):

% ftp ics.uci.edu
anonymous
<enter your e-mail address at Password: prompt>
cd pub/levine
ascii
get F77_Style_Guide
bye

If you can'mail address at Password: prompt>
cd pub/levine
ascii
get F77_Style_Guide
bye

If you can't access this site directly, please send an e-mail request to
levine@ics.uci.edu (BITNET: levine@uci, UUCP: ...!uunet!ucivax!levine).

Q16) For whatever reasons, I want to translate my Fortran into C.
    What tools are available?

    f90 from NAG, see above
    f2c see above.

    FORTRAN=C=FORTRIX=Rapitech Rapitech (914) 368-3000
    FORTRAN=C=FOR_C=Cobalt Blue  404 518 1116
    FORTRAN=C=PROMULA.FORTRAN=Promula (614) 263-5512

Q17) For whatever reasons, I want to translate my existing C code
     into Fortran. What tools are available?

Regretably none. This is indeed unfortunate, as even a limited
translator could help with typical C header files.

Q18) What is preprocessing, how can it help? How can it hurt?
     
Preprocessing often refers to usage of a Macro-prepressor upon ones
source code prior to compilation. 

       How can this help?

It can make it easier to move code between machines.

       How can this hurt?
  
It can cause difficulties in compilation of the processed code; most (if
not all) macro-preprocessors know nothing about Fortran syntax and
code layout rules. So, a common problem is that after preprocessing
some text may be lost past "sacred" column 72. Those working with
compilers that optionally compile *past* line 72 should probably
employ that option when using a preprocessor.

Common prepressors are: cpp, m4, and ratfor. Many sites have their
own custom prepressors. Basic functions are:

    1) definition of a symbol
    2) conditional code selection based on a symbol
    3) substition of a symbol by its definition

Traditional BSD Unix f77 processors treat a file named foo.F (as
opposed to foo.f) as one that should be run through cpp prior to
compilation "automatically".

Q19) How can I convert an existing FORTRAN 77 program to the free form
     source of Fortran 90?

Source code conversion program from ftp
---------------------------------------

   Many people who start to code in Fortran 90 prefer to do so
using the new, less restictive, source form. However, a problem
arises when wanting to modify old FORTRAN 77 code while sticking
to the new style. To help in this situation, a source code conversion
program has been written (and well tested) and made availble by
anonymous ftp.

   Apart from the conversion, the program can:

       ensure that blanks are used correctly in the code as they are
       significant with the new source form;

       indent DO-loops and IF-blocks;

       replace CONTINUE by END DO, where appropriate;

       add subprogram names to END statements;

       change non-standard length specification syntax,
       like INTEGER*2, to the
       Fortran 90 equivalent, in all contexts (type statements, FUNCTION
       statements, and IMPLICIT statements);

       produce an interface block automatically from the source code of a
       procedure - useful to the library developer when wishing to use
       this important new facility with an existing library.

   The source code can be obtained by anonymous ftp to
jkr.cc.rl.ac.uk (130.246.8.23). When prompted for a userid, reply with

   anonymous

and give your name as password. The directory is /pub/MandR
and the file name is convert.f90.


                           Mike Metcalf
                           (metcalf@cernvm.cern.ch)


Q20) Who creates these silly standards anyway?

Typically X3J3. X3J3 is an ANSI subcommittee dedicated to Fortran. WG5
is the ISO counterpart. WG5 owns responsibility for Fortran on an
international basis. WG5 has previously tasked X3J3 to do the work.
This arrangement continues.

WG5 is composed of Fortran users, vendors, and academics from several
ISO supporting nations. Delegates represent *their*countries* not
their companies; so several delegates from a single company is
permitted. 

ANSI rules prohibit multiple voting delegates from the same company.
X3J3 is composed of users ANSI rules prohibit multiple voting delegates from the same company.
X3J3 is composed of users (aerospace, government labs, military, DECUS,
railroads, oil to name a few), vendors (IBM, CRI, Sun, Convex, DEC,
UNISYS, to name a few) and the odd academic (oxford, yale, liverpool, to
name a couple). Members need not be US citizens nor must their company
be US domiciled. Being a member of a standards group is typically
involves non-trivial work. To be effective, one should plan on at
least 8 weeks of time per year (those who are really doing the hard
work do far more). This time commitment is typically far more
expensive than the travel and membership costs.

X3J3 meetings are open to the public. There are typically 4 meetings a
year, typically 3 are in the US and 1 *may* be overseas (to precede or
follow the WG5 plenary session). Membership fees are levied by ANSI,
and are on the near order of $400 (plus an extra $300ish for those who
wish to be members of the US delegation to ISO). In addition,
attendees to a particular X3J3 meeting pay a "meeting fee" which
covers reproduction costs, snacks and etc.

WG5 has established various goals and targets for future work. Roughly
speaking 5yrs rather than 13years are the targets for future work.

Current work projects include cleanup and interpretations of Fortran
(90), features for future versions of the standard (e.g. parallel
processing, "object-oriented" technologies, etc.). In addition to work
done directly by X3J3, there is work on standardized modules, and OS
bindings taking place in other organizations. X3J3 would like to keep
track of such efforts, those involved are invited to inform X3J3 early
in their development efforts if possible. X3J3 is currently working
with X3H5, DIN (varying string character) and tracking the efforts of
HPFF. 

New members are always welcome. Visitors are also; though it is very
hard to get a good grip on things in only one meeting!

Contact the X3J3 chair for more information:

	jwagener@trc.amoco.com   chair
	KELBLE%TRPROGB@trenga.tredydev.unisys.com  vice-chair

Upcoming meetings are:

	February 7-11 1994 Palmdale California
	May    1994        Lake Tahoe
	Summer 1994        Scotland

Q21) How can I read my VAX binary data somewhere else?

     Some vendors provide bulit in methods (DEC provides this via
     special options on the OPEN statement). Others provide library support 
     (on SPARC products, with the SunPro compilers, checkout convert_external)
     In addition, Accerl8 provides a commerial tool. Contact:

	Robert Hickler                            Tel   (303) 863-8088
	Accelr8 Technology                        Email robert@accelr8.com

     for more information.

The following three Q's and A's based on email from:
    ecmtwhk@ccu1.aukuni.ac.nz (Thomas Koenig) 

Q22) My F77 program compiled ok on a <system1>, but gives me heaps of
     syntax errors on a <system2>. What's wrong?

     Most likely, the program was written with a line length greater than
     72. If your compiler supports it, turn on the option for greater
     line length (e.g. -e is not uncommon) ; otherwise, split up the
     lines by hand, or via one of those pretty-printers/restructing
     tools mentioned above.

Q23) My F77 program ran ok on a <system1>, but on a <system2> it just gives
     me strange results. What's wrong?

     There are different reasons why this could be. Possibly, your program
     violates the standard in some way which is not caught by the compiler
     on <system1>.
     
     Many programs rely on variables to be initialized to zero when a
     subroutine or function is first called, and also on the retention
     of values between calls. While many compilers (VAX/VMX and IBM VS,
     for example) exhibit this behaviour, compilers on newer
     architectures often fill variables with garbage on each new
     function call. This is permitted, according to the standard.

     Initialize variables explicitly, and put the variables which you need
    he standard.

     Initialize variables explicitly, and put the variables which you need
     to keep across function calls into SAVE statements. Your compiler may
     have an option to trap unititialized variables; use that to find the
     trouble spots. Alternatively, compile using a flag which forces
     static allocation of all variables.

     Another problem might be that the accuracy of REAL and DOUBLE
     PRECISION differs between different platforms; that can cause
     roundoff error to wipe out your results or your program to go
     into endless loops.

     Yet another (and much more subtle) problem can occur if a lot of
     formatted I/O is employed. The conversion from internal to
     external representations can introduce very significant errors;
     much worse on some platforms than others (doing correctly rounded
     base conversion is expensive). 

     There are, of course, lots of other possibilities, these are just
     a starting point.

Q24) Is there a WEB for Fortran (and what is web anyway)?

     fweb is available via anonymous ftp; use archie(above) to
     determine current location(s).

     As for the more general question, what is WEB .... WEB is a
     "literate" programming system created by Knuth (he of reference
     book fame, and TeX fame, and etc.). It permits the programmer to
     write code and documentation together. WEB takes the "high level
     code and documentation" and creates real publishable
     documentation (using TeX or LaTeX) and compilable code. WEB
     versions for many languages are available.

Q25) Where can I find coded BLAS (and what are coded BLAS?)

The BLAS (basic linear algebra software) comes in several flavors:
BLAS-1, -2, and -3. These can be described as scalar, vector and
matrix-matrix levels. "Coded" BLAS are either hand coded in assembler,
or at least tweaked for a given machine. Some vendors provide these,
some are provided on the net (see archie) and some are marketed by
various commercial organizations. 

In addition, it should be noted that BLAS-3 is very amenable to
parallel processing. Done cleverly, this could be done by a network of
processors over a net. DSS markets just such an implementation. Contact:

     Mike Boucher
    Dakota Scientific Software, Inc.
    501 East Saint Joseph Street
    Rapid City, SD  57701-3995
    fax: (605) 394-1256
    scisoft@well.sf.ca.us

for more information about their implementation.

Q26)  How common is DO ... END DO

      It is very common; and of course is part of Fortran 90.
      Compilers claimed to *not* support it (much shorter list this
      way)

      		1) Salford ftn77/Primos version
		2) Prime f77 compiler
		3) Microsoft Fortran for CP/M 8080/Z80 machines    
		4) Fujitsu VPxxx UXP/M compiler

      
Q27) Where can I learn more about the history of Fortran?
From: metcalf@apofort.cern.ch (Michael Metcalf )
The history of Fortran is documented in:		

Annals of History of Computing, 6, 1, January, 1984 (whole issue).

Programming Systems and Languages (S. Rosen ed.), McGraw Hill, 1967, pp 29-47
    (this is Backus's original paper).		

History of Prorammining Languages (R.L. Wexelblat ed.), Academic Press, 1981,
              pp 25-74.	

A summary appears in vol. 5 of the Encyclopedia of Science and Technology,
Academic Press, 1986, under 'Fortran'. 
and in Chapter 1 of Fortran 90 Explained (Oxford, 1990).

Q28) Fortran text editors?

Thomas Koenig, ig25@rz.uni-karlsruhe.de, ig25@dkauni2.bitnet
      If you use EMACS, you can use M-x fortran-mode.  An extended
      version, which includes the fortran-auto-fill-mode minor mode, is
      available via anonymous ftp from hallc1.cebaf.gov [129.57.32.62]
      in the directory /emacs.

More generally, Unipress emacs has a Fortran mode. There are XEDIT,
BRIEF, TPU and EDT clones available on many common platforms these
days. 

Q29) What are ENCODE and DECODE statements, and how are they translated to
     standard Fortran?

ENCODE and DECODEd DECODE statements, and how are they translated to
     standard Fortran?

ENCODE and DECODE are vendor extensions to Fortran (invented in the
sixties, long before X3.9-1978 added internal I/O to the language)
which are most often used to convert data between numeric and
character representations.  They may be viewed as formatted writes to
(ENCODE) or reads from (DECODE) memory.  The standard-conforming
alternatives are internal write and internal read statements
respectively.

For example,
     INTEGER MONTH, DAY, YEAR
     MONTH = 7
     DAY = 4
     YEAR = 93
C    FORM THE STRING  7/ 4/93 IN VARIABLE "DATE"
     ENCODE (8,10,DATE) MONTH,DAY,YEAR
 10  FORMAT (I2,'/',I2,'/',I2)

The above can be translated as "write 8 characters, formatted according to
format 10, storing the results in variable DATE, and using the contents of
variables MONTH, DAY, and YEAR as the data to write."

A DECODE statement would be used to reverse the process (extract the
variables MONTH2, DAY2, and YEAR2 from the string DATE).  Thus:

     INTEGER MONTH2, DAY2, YEAR2
     DECODE (8,20,DATE) MONTH2, DAY2, YEAR2
 20  FORMAT (I2,1X,I2,1X,I2)

Conversion of ENCODE/DECODE to standard Fortran-77 is not difficult.  The
critical thing to remember is that the variable to be written to (ENCODE)
or read from (DECODE) must be a CHARACTER variable which is long enough to
contain the string.  The first number within the parentheses (in this case
8) is the minimum length to use in a type declaration.  Thus a standard-
conforming equivalent of the above example is:

     CHARACTER*8 DATE
     INTEGER MONTH, DAY, YEAR
     INTEGER MONTH2, DAY2, YEAR2
     MONTH = 7
     DAY = 4
     YEAR = 93
     WRITE (DATE,10) MONTH, DAY, YEAR
 10  FORMAT (I2,'/',I2,'/',I2)
     READ (DATE,20) MONTH2, DAY2, YEAR2
 20  FORMAT (I2,1X,I2,1X,I2)

Although the above example used integers, any other data type may also be
used.

<forags@nature.berkeley.edu (Al Stangenberger)>

Q30) Tell me about Parallel Fortran dialects, what are they,etc.

Newsgroups: comp.lang.fortran,comp.parallel.pvm
From: lfm@pgroup.com (Larry Meadows)
Subject: Re: Parallel FORTRAN Questions
Date: Fri, 20 Aug 1993 00:13:33 GMT
Nntp-Posting-Host: pacific2.pgroup.com
Organization: The Portland Group

spencer@glint.mcc.com (Steve Spencer) writes:

>We are trying to decide what parallel FORTRAN environment
>to port to a MIMD multiprocessor that we are building 
>for ARPA. We are looking for information on the follwing
>environments:

>	FORTRAN90
>        HPF (High Performance FORTRAN from Rice U. I think)
>	FORTRAN D
>        PVM (works with F77 to provide a parallel env.)

>Does anyone know where we can get information on the 
>above programming environments or any others that may
>be appropriate?

Fortran90 is an ANSI and an ISO standard.  The usual reference is
Fortran 90 Handbook, published by McGraw Hill.  Several vendors provide
Fortran 90 translators and/or compilers.

HPF is Fortran 90 augmented with data distribution statements to
allow portable programming for distributed memory multiprocessors.
The language was defined by a committee consisting of over 40
organizations over a period of about one year.  The effort was
spearheaded by Geoffrey Fox and Ken Kennedy.  Several vendors have
announced HPF products or development efforts.
The language document is available via anoymous ftp:

    ftp cs.rice.edu
    cd public/HPFF/draft
    get hpf-v10-final.ps.Z

Fortran D is a precursor to HPF; as a commercial product it has been
superceded by HPF, but several academic projects still exist that target
Fortran D.

PVM is a message passing library and run-time environment; as such, it
exists at a lower level than the previous items.  One might imagine an
HPF compiler that produced FORTRAN77 with calls to PVM.  There is a newsgroup
on PVM.  It is available through netlib, and possibly from Oak Ridge as
well.

Hope this helps.
--
Larry Meadows		The Portland Group
lfm@pgroup.com
;;;;
Q31) Where can I find this helps.
--
Larry Meadows		The Portland Group
lfm@pgroup.com
;;;;
Q31) Where can I find a f90 tutorial?



Newsgroups: comp.lang.fortran
From: metcalf@apofortn.cern.ch (Michael Metcalf )
Subject: f90 tutorial on World Wide Web
Keywords: f90 WWW
Organization: CERN European Lab for Particle Physics
Date: Wed, 24 Nov 1993 12:15:43 GMT


   Those of you with access to the World Wide Web (WWW) may like	
to know that my colleague Michel Goossens has now installed a	
Fortran 90 tutorial under the URL

  http://asis01.cern.ch/CN/CNTUT/f90/Overview.html		
               
There is no copyright on this material.
 	
   To access WWW, try typing www on your workstation or look for	
its icon on your PC. If it's unavailable, please contact your	
system manager, not me.


                      Mike Metcalf
                      (metcalf@cern.ch)

Q32) f90.faq


Subject: F90 additions to Fortran FAQ.

F90 FAN's : Fortran 90 Frequently Asked about News.
A Fortran 90 addition to the Fortran FAQ.

Michel Olagnon - October   1st, 1993.
Last updated   - February 28th, 1994.

Send flames and suggestions for improvement to Michel.Olagnon@ifremer.fr

Contents :
========

   1.- Fortran 90 and Fortran 77
   2.- Available in Fortran 90:
       Compilers
       Code re-structurers and converters
       Libraries and utilities
       Tests and Benchmarks
       Tutorials
       Examples
       Courses and Consultancy
   3.- Documentation:
       Standards
       Journals
       Books
|      Articles
   4.- Fortran 90 Benchmarking
   5.- Announced, foreseen, and rumours
|  6.- Workshops, seminars, conferences
   7.- Developments, related languages
       Standard
|      HPF
       PVM
       Parallel Programming
   8.- Addresses


1.- Fortran 90 and Fortran 77:
##############################

  Fortran 90 is, with very few exceptions, a superset of Fortran 77.
The FAQ of the Usenet group Comp.lang.fortran deals with both 
standards, and may be obtained, like any FAQ, via anonymous ftp from
rtfm.mit.edu, directory /pub/usenet. The present document is an attempt
to supplement that FAQ with some specific Fortran 90 information.

  The main extensions of Fortran 90 over Fortran 77 are:
 * array notation (for instance, X(1:N)=R(1:N)*COS(A(1:N)))
 * dynamic memory allocation (ALLOCATE, DEALLOCATE, ...)
 * derived types and operator overloading
 * better declarations, and prototyping possible
 * MODULES, allowing users to create ``storage pools'',
    or to define environment
 * more of modern control structures (SELECT CASE, EXIT, ...)
 * more of useful intrinsics (date, precision, arrays, ...)
 * free format source code form

  ``Pure'' Fortran 77 is F90 compatible. Yet, it is better to convert
it to a ``mixed'' format, acceptable both as free and fixed source
form Fortran 90, which only requires replacing C by ! as the comment
character, to use & as the continuation line character, and
to append it to the continued line, to remove blanks embedded inside
constants or identifiers, and to check some intrinsics usage. Most
of this can be done automatically.

  Fortran 90 allows the Fortran 77 programmer to write code faster,
to make it more legible, and to avoid many bugs. For a newcomer to
programming, it is an opportunity to learn a modern language, with
most recommended features, and yet to be in line with scientific
and industrial engineering communities where Fortran is and is going
to remain for a good while THE favourite language.

2.- Available in Fortran 90:
############################

Compilers
---------
  CRAY              CF90 - presently, for Crays YMP and YMP-C90

  EPC Fortran 90         - for Sparc Solaris 1.X and 2.X, IBM RS/6000,
                           Intel 3/486 (SVR3&4, Solaris 2.x),
                           Motorola 88000/100/100 (SVR3&4)

  IBM             XLF V3 - full compiler for RISC System/6000 

  MicroWay               - for DOS, OS/2, Unix
  
  NAG                f90 - uses C as intermediate lany               - for DOS, OS/2, Unix
  
  NAG                f90 - uses C as intermediate language

  Pacific Sierra VAST-90 - uses F77 as intermediate language

  Parasoft               - uses F77 as intermediate language

  Salford          FTN90 - PC implementation of NAG f90, direct
                           generation of object code.

  NOTE: Some vendors, such as Fujitsu with its "Numerical Workbench"
        for Sparc Solaris 2.x, or Convex on their machines, offer
        a number of F90 extensions, for instance array syntax or
        ALLOCATE instruction.

Code re-structurers and converters
----------------------------------
  Pacific-Sierra VAST-90 (see article by JKP in Fortran Journal 5/4)

  Connexite FOREST-90

  NAGWare f90 tools, pretty-printer, declarations standardiser,
                     precision standardiser, names changer.

  CONVERT, conversion to F90 free format, proposed by
                          Mike Metcalf via anonymous ftp on
                          jkr.cc.rl.ac.uk (130.246.8.23),
                          file /pub/MandR/convert.f90.

  ftof90.c, minimal F77 -> F90 conversion, via anonymous ftp on
                          molene.ifremer.fr (134.246.150.6),
                          file pub/ifremer/fortran90/ftof90.c)

Libraries and utilities
-----------------------
  Syntax verifier extracted from NAG compiler, put into
           public domain by NAG for Sun 3, Sun 4, Sgi.

  Lahey has F90 components (manual, array intrinsics, front end,...)
           that they would like to license to others.

  CADNA, by professeur Vignes from Universite Pierre et Marie Curie,
           implements stochastic arithmetic in Fortran 90, and
           enables monitoring of precision loss and/or numerical
           instabilities during execution. (Control of Accuracy
           and Debugging for Numerical Aplications in Fortran)
           More information available from ICHOR. (see also
           aricles by J. Vignes)


  ISO 1539-2 Recommendation - Variable length chains
  (Draft)                     in Fortran (with a demonstration
                              of implementation)
  
  LAPACK, (minimaly) translated by myself, successfully passed
          all its tests with NAg-f90 2.0.
          I aggressively translated single precision Blas,
          and intend to do the same with other Blas as soon as
          I have time.
          Steve Moulton works on LAPACK conversion.

Tests and Benchmarks
--------------------
  
  NAGware Test suite   - tests for compilers (same (?) as:
  U_F90_TS Test suite  - from Dr. Brian Smith (University
                    of New Mexico), marketed by Unicomp and NAG.

  Lahey Test suite     - F77 & F90 (license agreement)

  SHAPE Test suite     - 3400 tests of array instructions,
                         from Spackman & Hendrickson, Inc.
  
  Parasoft Test suite  - 1500 tests for compilers
  
  Quetzal Benchmark from John K. Prentice, via anonymous ftp on
                    unmfys.unm.edu, in pub/quetzal.

  Benchmark of Syracuse University, via anonymous ftp on
                    minerva.npac.syr.edu, in /benchmark.


Tutorials
---------
   Michel Goossens has now installed a Fortran 90 tutorial on the
  World Wide Web (WWW) under the URL :
    http://asis01.cern.ch/CN/CNTUT/f90/Overview.html
  There is no copyright on this material.


Examples
--------
  11 000 lines offered by Richard Maine via anonymous ftp on
                          ftp.dfrf.nasa.gov (130.134.64.17),
                          file pub/fdas/f90sample/fdas.tar.Z
                          
  STEJOI, statistical package for joint occurrence events, on Sun,
                          including source code and everything, 
                          via anonymous ftp on molene.ifremer.fr,
                          file pub/ifremer/fortran90/f90dvl.tar.Z.

  Module unsigned_32, for definition and use of unsigned 32 bits
                          integers, also on molene.ifremer.fr,
   and use of unsigned 32 bits
                          integers, also on molene.ifremer.fr,
                          file pub/ifremer/fortran90/unsi32.f90.Z.

  Algorithm 999 by A.G. Buckley for unconstrained nonlinear
                          minimization, on ftp.royalroads.ca,
                          pub/software/bbuckley/alg999/source.

Courses and Consultancy
-----------------------
      IT Independent Training Limited, UK

      Connexite, France

      CTS, Germany

      Unicomp, USA
      Pacific-Sierra Research Corp., USA
  

3.- Documentation:
##################

Standards
---------
ISO/IEC 1539:1991 (E)
International Standard
Information technology - Programming langages - Fortran
Somewhat expensive (CHF 210 ~ US$ 140 !) for instance, at ISO.
Surprisingly enough, the identical, save for foreword and
acknowledgements, ANSI standard X3.198-1992 is even more expensive.
Walter S. Brainerd, Unicomp., offers:
- for 125 US$, an electronic ascii monouser version,
- for 125 + 10n US$, an electronic PostScript version, and the right
to make n paper copies,
- or for 1000 US$, an electronic ditroff monouser version.


Journals
--------
Fortran Journal
ISSN 1060-0221
Enquiries: Walt Brainerd walt@netcom.com
Subscriptions: Fortran Users Group / P.O. Box 4201 / Fullerton, CA 92634
             (about $30/year individual, $100/year company, 
              ~$50/$150 outside the USA, call 1 (714) 441 2022)

Books
------

 * in English,

Adams, Brainerd, Martin, Smith, Wagener.
Fortran 90 Handbook, McGraw-Hill, 1992.
ISBN 0-07-000406-4

Brainerd, W., Goldberg, and Adams.
Programmer's guide to Fortran 90, McGraw-Hill, 1990.
ISBN 0-07-000248-7

Counihan.
Fortran 90, Pitman, 1991.
ISBN 0-273-03073-6

Hahn, B.D.
Fortran 90 for Scientists and Engineers, Edward Arnold, 1994.
ISBN 0-340-60034-9

Kerrigan, J.
Migrating to Fortran 90, O'Reilly and Associates, 1993
ISBN 1-56592-049-X

Metcalf, M. and Reid, J.
Fortran 90 Explained, Oxford University Press, 1992.
ISBN 0-19-853772-7

Morgan and Schonfelder,
Programming in Fortran 90, Blackwell Scientific Publications, 1993.
ISBN 0-632028-38-6

 * in French,

ABERTI, C.
Fortran 90: Initiation  partir du Fortran 77, Serie Informatique, 1992.
ISBN 2-090615-00-6

AIN, M.
Savez-vous parler Fortran, Bibliotheque des universites (de Boeck), 1994.
ISBN 2-8041-1755-3

DELANNOY, C.
Programmer en Fortran 90, Eyrolles, 1992.
ISBN 2-212-08723-3

DUBESSET, M. et VIGNES, J.
Les specificites du Fortran 90, editions Technip, 1993.
ISBN 2-7108-0652-5

LIGNELET, P.
Fortran 90: Approche par la Pratique, Serie Informatique, 1993.
ISBN 2-090615-01-4

METCALF, M. et REID, J.
Fortran 90: Les concepts fondamentaux, AFNOR Editions, 1993.
ISBN 2-12-486513-7


 * in German,

Gehrke.
Fortran 90 Referenz-Handbuch, Carl Hansen Verlag, 1991.
ISBN 3-446163-21-2

Heisterkamp.
Fortran 90: Eine Informelle Einfuehrung, BI-Wissenschaftsverlag, 1991.
ISBN 3-411153-21-0

Langer.
Programmieren in Fortran, Springer Verlag, 1993.
ISBN 0-387-82446-4

Schobert, Oldenburg.
Programmierung in Fortran 90, 1991.

Ueberhuber, C., Meditz, P.
Software-Entwicklung in Fortran 90, Springer Verlag, 1993.
ISBN 0-387-82450-2

Wojcieszynski, B, Wojcieszynski, R.
Fortran 90 Programmieren mit dem neuen Standard.


 * in Russian,
 
Metcalf, Reid
Fortran 90 Explained

 * in Japanese

Metcalf, Reid
Fortran 90 Explained


Articles
--------
Appleby, D., FORTRAN First in a six-part series on languages that have
stood the test of time -- BYTE, Sep. 1991, 147-150

Bernheim, M., Fortran Mode d'emploi - Fortran 90 -- Intereditions (1991)
163-176

Buckley, Albert G., Conversion to Fortran 90: A Case Study -- accepted
(Sep. 93) for ACM TOMS (ftp.royalroads.ca:pub/software/bbuckley/alg999)

Buckley, Albert G., Algorithm 999: A Fortran 90 code for unconstrained
non linear minimisation -- accepted (Sep. 93) for ACM TOMS

Chesneaux, J.M., Description d'utilisation du logiciel CADNA_F --
MASI 92.32 (1992) InstOMS

Chesneaux, J.M., Description d'utilisation du logiciel CADNA_F --
MASI 92.32 (1992) Institut Blaise Pascal, Paris

Corde, P., Girou, D., Fortran 90: la nouvelle norme -- Tribunix
Dossiers calculateurs, Vol 8. No. 41 (1992) 12-17

Du Croz, Jeremy J., Building Libraries with Fortran 90
Fortran Journal 4/5, Sep./Oct 1992

Glassy, L., Tiny-Ninety: A subset of F90 for beginning programmers --
Fortran Journal 4/3, May/Jun. 1992, 2-6

Hanson, R.J., A design of high-performance Fortran 90 Libraries --
IMSL technical report series No. 9201 (1992)

Hanson, R.J., Matrix multiplication in Fortran 90 using Strassen's
algorithm -- Fortran Journal 4/3, May/Jun. 1992, 6-7

Iles, Robert, Fortran 90: The First Two Years -- Unicom Seminar on
Fortran and C in Scientific Computing, 1993.

Iles, R., Palant, L., Fortran 90: 2 ans deja -- Tribunix No. 49
Mai/Juin 1993, 32-37.

Lahey, T., Fortran 90 is coming ! -- Programmer's Journal, Mar/Apr 1991.

Lignelet, P., Fortran -- Les Techniques de l'ingenieur, H2120, Dec 1993.

Maine, R., Review of NAG Fortran 90 translator -- Fortran Journal 3/6,
Nov/dec 1991.

Metcalf, M., Recent progress in Fortran standardization -- Computer
Physics Communications 57 (1989) 78-83.

Metcalf, M., Fortran 90 - A summary -- Int. Journal of modern Physics C,
Vol. 1, Nos. 2&3 (1990) 193-206.

Metcalf, M., A derived data type for data analysis -- Computers in
Physics, Nov/Dec 1991, 599-604.

Metcalf, M., A first encounter with Fortran 90 -- Fortran Journal 4/1,
Jan/Feb 1992, 2-7.

Metcalf, M., An encounter with F90 -- Particle World 3/3 (1993),
130-134.

Metcalf, M., Fortran 90 Tutorial -- CERN Computer Newsletter,
Nos. 206/207/208/209/210/211 (1992-1993).

Metcalf, M., Using the f90 compiler as a software tool -- CERN Computer
Newsletter, No. 209 (1992).

Metcalf, M., Still programming after these years -- New Scientist,
(12 Sep. 1992), 30-33

Olagnon, M., Experience with NagWare f90 -- Fortran Journal 4/6,
Nov/dec 1992, 2-5.

de Polignac, Christian, Du Fortran VAX au Fortran 90 -- Decus, Paris,
7 Avril 1993.

Prentice, John K., Fortran 90 benchmark results -- Fortran Journal 5/3,
May/June 1993.

Reid, John, The Fortran 90 Standard -- Programming environments for high
level scientific problem solving, Gaffney ed., IEEE Trans.,
North-Holland (1992), 343-348.

Reid, John, Fortran 90, the language for scientific computing in the
1990s --Unicom Seminar on Fortran and C in Scientific Computing, 1992

Reid, John, The advantages of Fortran 90 -- Computing 48, 219-238.

Robin, F., Fortran 90 et High Performance Fortran, Bulletin technique
CEA, Oct. 1992, 3-7.

Sawyer, M., A summary of Fortran 90 -- EPCC-TN92-04, Univ. of Edinburgh,
(1992).

Schonfelder, J.L., Semantic extension possibilities in the proposed
new Fortran -- Software practice and experience, Vol.19, (1989),
529-551.

Schonfelder, J.L., Morgan, J.S., Dynamic strings in Fortran 90 -- 
Software practice and experience, Vol.20(12), (1990), 1259-1271.

Sipelstein, J.M., Blelloch, G.E., Collection-oriented languages --
Proceedings of the IEEE, Vol. 79, No. 4, (1991), 504-530.

Vignes, Jean, Vers un calcul scientifique fiable : l'arithmetique
stochastique -- La Vie des Sciences, Comptes rendus, serie generale,
tome 10, 1993, No 2, 81-101.

Vignes, Jean, A stochastic arithmetic for reliable scientific computation
MATCOM 940 - Mathematics and Computers in Simulation 35 (1993) 233-261.

Walker, D.W., A Fortran 90 code for magnetohydrodynamics. Part I:
banded convolution -- Oak Ridge National Lab. report TM-12032 (1992).

Walter, W., Fortran 90: Was bringt der neue Fortran-Standard fuer das
numerische Programmieren ? -- Jahrbuch Ueberblicke Mathematik Vieweg,
(1991) 151-174.

Wampler, K. Dean, The Object-Oriented programming Paradigm and Fortran
programs -- Computers in Physics, Jul/Aug 1990, 385-394.

Willhoft, Robert G., Comparison of the functional Power of APL2 and
Fortran 90 -- APL Quote Quad, 1991


4.- Fortran 90 Benchmarking
#########################
Fortran 90 -- APL Quote Quad, 1991


4.- Fortran 90 Benchmarking
###########################

  An interesting article by John K. Prentice appeared in the
May/June 93 issue of Fortran Journal.
He also gave a more complete one in HPNews July/August 93.

  I made some tests myself with LAPACK, and got a ratio of 10
between Sun f77 and Nag f90 2.0 when no source change was performed.
With an aggressive rewriting, especially using array instructions
and intrinsics, the ratio gets back to 2, which is also that of a
f77 [sd]axpy to a C one.

  On actual applications, this ratio seems to be much closer to 1,
and even sometimes in favor of Fortran 90. On Sept. 7th, 1993, John
wrote "I think there is in fact beginning to be a quite large body of
evidence to suggest that most of the efficiency fears about F90 are
unfounded."

  For Nag f90 on workstations, the effect of the underlying C
compiler (gcc, vendor, etc...) seems very limited (less than 4%).


5.- Announced, foreseen, and rumours
####################################

  CRAY full compiler CF90 in a Sparc version in 94
  DEC full compiler (1994)
  Sun full compiler (unofficially mid-94)
  MicroSoft after next release of present PowerStationFortran 
  Lahey (2nd quarter 94,
         pre-order, +400$ when buying F77L-EM/32)


6.- Workshops, seminars, conferences
####################################

  28 Feb. - 4 Mar. 94. "Introduction to Fortran 90 and strategies
    for migration from Fortran 77" (leader speaker Walt Brainerd).
    Workshop - London (UK). Unicom Seminars.

  13 - 15 April 94. 13th Annual Conference of the NAG Users 
    Association - Oxford (UK). Nagua.
  
  20 - 22 April 94. "Efficient Fortran 90 Programming" Seminar,
    Santa Monica, California. Pacific-Sierra Research Corp.

7.- Developments, related languages  
###################################

Standard
--------
  Work did not stop with the publication of the Fortran 90 standard.
A new release is scheduled for 1996 (called 95), mainly devoted to 
clarifications, corrections and interpretations. A more important
revision is scheduled for 2000 (or 2001 ? called F2k though C.Burley's
F00 is a pleasant alternative).
  Documents related to the work of X3J3 can be found via anonymous
ftp on ftp.ncsa.uiuc.edu, directory x3j3.

HPF
---
  High Performance Fortran (HPF) is a language for programming
massively parallel architectures. It lets the user insert directives
for code and data distribution among the processors in the
(Fortran 90) code.
Electronic copies of HPF draft specification are available by anonymous
FTP from the following sources:
 Machine name            File name
 titan.cs.rice.edu       public/HPFF/draft/hpf-v10-final.tar
 titan.cs.rice.edu       public/HPFF/draft/hpf-v10-final.tar.Z
 titan.cs.rice.edu       public/HPFF/draft/hpf-v10-final.ps
 titan.cs.rice.edu       public/HPFF/draft/hpf-v10-final.ps.Z
 think.com               public/HPFF/hpf-v10-final.ps.Z
 ftp.gmd.de              hpf-europe/hpf-v10-final.ps.Z
 theory.tc.cornell.edu   pub/hpf-v10-final.ps.Z
 minerva.npac.syr.edu    public/hpf-v10-final.tar.Z

PVM
---
  Parallel Virtual Machine consists of a library and a run-time
environment which allow the distribution of a program over a network
of (even heterogeneous) computers. It works with Fortran 77 
(which is the way we presently use it), C and probably Fortran 90.
  There is a usenet comp.parallel.pvm group, and the FAQ for it
can be found via anonymous ftp on rtfm.mit.edu, /pub/usenet.

Parallel Programming
--------------------
  An interesting report can be obtained via anonymous ftp on 
bulldog.wes.army.mil:/pub/report.ps.Z, for a large review of
products related to parallel systems programming.


8.- Addresses
#############

AFNOR, Tour Europe, Cedex 7, F-92049 Paris la Defense, France
   tel: +33 1 42 91 55 55

Connexite, B.P. 37, F-06901 Sophia Antipolis Cedex, France
   tel: +33 92 94 23 50, fax: +33 93 65 33 42

CTS, Prinz-Otto Str. 7c, D-85521 Ottobrunn, Germany
  +33 92 94 23 50, fax: +33 93 65 33 42

CTS, Prinz-Otto Str. 7c, D-85521 Ottobrunn, Germany
   tel: +49 89 6083758, fax: +49 89 6083758

EPC, 17 Alva St, Edinburgh, EH2 4PH, United Kingdom
   tel: +44-31-225-6262, fax: +44-31-225-6644, support@epc.ed.ac.uk
EPC, 20 Victor Square, Scotts Valley, California 95066
   tel: (408) 438-1851, fax: (408) 438-3510, info@epc.com

Fortran Journal, P.O. Box 4201, Fullerton, CA 92634, USA
   fax: (714) 441-2022

ICHOR, 27 rue Linne, F-75005 Paris, France
   tel: +33 1 43 37 02 02

ISO, 1 rue de Varembe, Case postale 56, CH-1211 Geneve 20, Switzerland
   fax: +41 22 734 10 79
 
IT Independent Training Limited, 113 Liscombe, Birch Hill, Bracknell,
   Berkshire, RG12 7DE, UK                  
   tel: +44 344 860172, fax: +44 344 867992

Lahey Computer Systems, Inc., 865 Tahoe Blvd., P.O. Box 6091,
   Incline Village, NV 89450, USA
   tel: (702) 831-2500, fax: (702) 831-8123, gride@lahey.com

Microway, Research Park, Box 79, Kingston, MA 02364, USA
   tel: (508) 746-7341, fax: (508) 746-4678

NAG Ltd., Wilkinson House, Jordan Hill Road, Oxford, OX2 8DR, UK
   tel: +44 865 311744, fax: +44 865 311755, infodesk@nag.co.uk
   Mosaic: http://nags2.nag.co.uk/intro
NAG Inc., 1400 Opus Place, Suite 200, Downers Grove, IL 60515-5702, USA
   tel: (708) 971-2345, fax: (708) 971-2346, infodesk@nag.com
NAG GmbH., Schleissheimerstr. 5, D-85748 Garching, Germany
   tel: +49 89 3207395, fax: +49 89 3207396

NAG Users Association, PO Box 426, Oxford, OX2 8SD, UK
   tel: +44 865 311102, fax: +44 865 310139, nagua@nag.co.uk

Pacific-Sierra Research Corp., 2901 28th Street, Santa Monica, CA 90405
   tel: (310) 314-2300, fax: (310) 314-2323, info@psrv.com

ParaSoft Corporation, 2500 E. Foothill Blvd, Pasadena, CA 91107, USA
   tel: (818) 792-9941, f90-info@parasoft.com

Quetzal Computational Associates, 3200 Carlisle N.E., Albuquerque,
   NM 87110-1664, USA
   tel: (505) 889-4543, fax: (505) 889-4598, quetzal@aip.org

Spackman & Hendrickson, Inc., 13708 Krestwood Drive, Burnsville,
   MN 55337,  USA
   tel: (612) 892-5847, fax: (612) 892-5844

Unicom Seminars Ltd., Brunel Science Park, Cleveland Road, Uxbridge,
   Middlesex, UB8 3PH, UK
   tel: +44 895 256484, fax: +44 895 813095 

Unicomp, Inc., 1123 Marigold Drive, Albuquerque, NM 87122, USA 
   tel: (505) 275-0800, fax: (505) 856-1501, walt@netcom.com

I am always pleased to receive informations.
Thanks to all those who sent some to me, and that I can not cite
all because I lost some of their names and addresses :-)


Michel

| Michel OLAGNON            | email : Michel.Olagnon@ifremer.fr         |
| IFREMER: Institut Francais de Recherches pour l'Exploitation de la Mer|
| Centre de Brest - B.P. 70 | phone : +33  98 22 41 44                  |
| F-29280 PLOUZANE - FRANCE | fax   : +33  98 22 41 35                  |

-- 
----------------------------------------------------------------
Keith H. Bierman    keith.bierman@Sun.COM| khb@chiba.Eng.Sun.COM
SunPro 2550 Garcia MTV 12-40             | (415 336 2648) fax 964 0946
Mountain View, CA 94043  <speaking for myself, not Sun*> Copyright 1994

