[comp.lang.fortran] Dates for the different versions of FORTRAN?

North_TJ@cc.curtin.edu.au (Tim North) (08/13/90)

Hi,
	I'm running a class on various programming languages, and I'm doing a
couple of lectures on FORTRAN. I'm not really sure of the different versions
of FORTRAN that have appeared over the years, though. I'd really appreciate it
if someone could make corrections/additions to the following table:

	1953	FORTRAN I
	19??	FORTRAN II  ?
	19??	FORTRAN III ?
	1966	FORTRAN IV
	1977	FORTRAN 77
	198?	FORTRAN 8X
	1990?   FORTRAN 90  ?

	I'd *really* appreciate it if someone could direct me towards a paper
containing a brief comparison/overview of the different versions or post me 
a brief summary.

Many thanks in advance,
Tim North
---------------------------------------------------------------------------
SNAIL :   Dept. Computer Engineering, Curtin University of Technology.
          Perth, Western Australia.
Internet: North_TJ@cc.curtin.edu.au
ACSnet:   North_TJ@cc.cut.oz.au
Bitnet:   North_TJ%cc.curtin.edu.au@cunyvm.bitnet
UUCP  :   uunet!munnari.oz!cc.curtin.edu.au!North_TJ
---------------------------------------------------------------------------

pockrand@cs.umn.edu (Mitch Pockrandt) (08/13/90)

In article <3093.26c6b1cd@cc.curtin.edu.au> North_TJ@cc.curtin.edu.au (Tim North) writes:
>Hi,
>	I'm running a class on various programming languages, and I'm doing a
>couple of lectures on FORTRAN. I'm not really sure of the different versions
>of FORTRAN that have appeared over the years, though. I'd really appreciate it
>if someone could make corrections/additions to the following table:
>
>	1953	FORTRAN I
>	19??	FORTRAN II  ?
>	19??	FORTRAN III ?
>	1966	FORTRAN IV         <***** ??? (see below)
>	1977	FORTRAN 77
>	198?	FORTRAN 8X
>	1990?   FORTRAN 90  ?
>
Time for some confusion on my  part.  I used to use Fortran 66 on IBMs
mainframes (FORTG and FORTG1 as I recall).  At the time I was under
the impression that Fortran IV was a newer different beast (not
necessarily blessed by ANSI or any such body) that had come about in
the early 1970's to take care of some of the shortcomings of Fortran
66.  At least on the Burroughs equipment I worked on 12 years ago, we
had a Fortran IV compiler (FORTIV) which was different from the
Fortran 66 extended workhorse we frequently used.

Any body else remember or know?

===========================================================================
  Mitchell S. Pockrandt - Computer Science Dept. - University of Minnesota
     Internet:  pockrand@cs.umn.edu        
     UUCP    :  {uunet,rutgers}!umn-cs!pockrand
     Bitnet  :  pockrand%cs.umn.edu@UMNACVX.BITNET
===========================================================================

mroussel@alchemy.chem.utoronto.ca (Marc Roussel) (08/13/90)

In article <3093.26c6b1cd@cc.curtin.edu.au> North_TJ@cc.curtin.edu.au (Tim
North) writes:
>	I'm running a class on various programming languages, and I'm doing a
>couple of lectures on FORTRAN. I'm not really sure of the different versions
>of FORTRAN that have appeared over the years, though. I'd really appreciate it
>if someone could make corrections/additions to the following table:
>
>	1953	FORTRAN I
>	19??	FORTRAN II  ?
>	19??	FORTRAN III ?
>	1966	FORTRAN IV
>	1977	FORTRAN 77
>	198?	FORTRAN 8X
>	1990?   FORTRAN 90  ?

FORTRANs 8X and 90 are the same draft ANSI/ISO standard.  The latest
FORTRAN standard was originally expected to be completed in the late
80's, but it didn't happen so it's now being referred to (somewhat
optimistically, I think) as FORTRAN 90.

You could add to your list FORTRAN 66.  I believe that the ANSI
specified language by this name was thought of as distinct from FORTRAN
IV.  The latter was generally taken to mean F66 with some extensions,
but I'm not sure on this point.  (I'm not old enough to remember.)  We
had a FORTRAN IV compiler at my last school that certainly included many
features that were not part of the F66 standard.

				Sincerely,

                                Marc R. Roussel
                                mroussel@alchemy.chem.utoronto.ca

fwebb@bbn.com (Fred Webb) (08/14/90)

In article <3093.26c6b1cd@cc.curtin.edu.au> North_TJ@cc.curtin.edu.au (Tim
North) writes:
>if someone could make corrections/additions to the following table:
>
>	1953	FORTRAN I
>	19??	FORTRAN II  ?
>	19??	FORTRAN III ?
>	1966	FORTRAN IV
>	1977	FORTRAN 77
>	198?	FORTRAN 8X
>	1990?   FORTRAN 90  ?
>

I'm not sure Fortran III ever appeared, or if it did, it never got much
use. When Fortran IV first appeared, everyone was still using Fortran II.
It's possible some manufacturer made and sold a product called Fortran III,
but I don't remember one.

I think Fortran IV first appeared around 1963. I worked at NASA that summer,
and the Mission Control Center programs were being done using the brand new
IBM 7094s, which came with Fortran IV, I think. Fortran IV was (originally)
an IBM product, and definitely preceeded the '66 standard. Many of the
extensions that were in Fortran IV provided the basis for the '66 standard.
(Back then, only things that had actually been implemented by someone were
considered for inclusion in the standard.)

Various manufacturers made and sold Fortran IV compilers, and extensions
to Fortran IV called Fortran V (all different, of course) between the
time IBM first released Fortran IV and when the Fortran '66 standard really
took hold.

So Fortran '66 should be added to the list, with the 1966 date, and Fortran IV
should be moved back a few years.

The "Fortran '77" standard wasn't officially published until 1978, so if you
want to give a single date, maybe 1978 would be better. The final approval
by the Fortran standards committee was in 1977, but final ANSI approval of
the standard happened April 3, 1978. In spite of this, the language is called
Fortran 77.

Fortran 8x was the term used to refer to the various drafts of the next ANSI
standard. There are probably a couple of compilers out there that claim they
are "Fortran 8x" compilers, but that's an absolutely meaningless term. That
could mean they conform to some or all of any of about 25 different documents.

The ANSI standards committee recently decided that the new standard, when
issued, would be called Fortran 90. However, the Fortran 90 standard is about
to go out for another public review period, so it will probably be a year or
so before the standard is actually issued. So, to give a correct date for
Fortran '90, you'll have to wait until the standard is actually published -
maybe 1991, but it could easily be 1992.

						-- Fred

bk7295@leah.Albany.Edu (Brian A. Kell) (08/15/90)

The oroginal poster requested information on where to find a
summary of the `history' of FORTRAN, and here's my suggestion:

Any decent-sized college or university library should have a
fair number of books on various languages, including FORTRAN.
However, because the 'state-of-the-art' changes so much, many (most?) 
of these books will be horribly out-of-date.  Just looking at the
titles and copyright dates (and maybe the prefaces) should give a 
quick-and-dirty summary of FORTRAN's history...

Brian A. Kell
SUNY/Albany Department of Computer Science
brian@isadora.albany.edu
bk7295@leah.albany.edu
bk7295@albnyvms.bitnet

magnus@THEP.LU.SE (Magnus Olsson) (08/15/90)

Speaking of the various versions of Fortran:

The later versions of Fortran (IV, 66, 77) are reasonably downward
compatible with each other, even though there are some discrepancies,
such as the handling of a degenerate DO loop (DO 10 I=1,0 ...).

However, from what I've heard, Fortran I and II were quite different
from later versions in, for example, the syntax for I/O statements.

I've never used any of these old versions, or even come across a manual.
So could somoeone out there please say something about what these languages 
were like?


Magnus Olsson		     	| \e+ 	   /_	      
Dept. of Theoretical Physics 	|  \  Z	  / q	      
University of Lund, Sweden	|   >----<	      
Internet: magnus@thep.lu.se	|  /	  \===== g    
Bitnet: THEPMO@SELDC52 		| /e-	   \q	      

taylor@sun.soe.clarkson.edu (Ross Taylor) (08/15/90)

There has been quite a bit of discussion on the net regarding the
history of FORTRAN.  I recently acquired several volumes in the
Time-Life series "Understanding Computers".  The volume "Computer
Languages" discusses the history of most of the widely used languages
and the following comments are based on material in that book.  I think
that this particular book may be a useful source of historical and
anecdotal material for the individual that posted the original request
for information (sorry, I don't have that message any more).

FORTRAN was developed by an IBM team led by John Backus.  It appears
that developing the compiler took much more time then was ever
anticipated and was six months to completion for two years.  Backus
regards the major contribuiton of FORTRAN as the organization of loops.
The first release of FORTRAN was in April 1957 and the book refers to
the attempts (succesful) by Herb Bright at the Westinghouse-Bettis
Atomic Power Lab to run the compiler blind (it was recieved with no
instructions).  It is not clear if they were the very first outside IBM
to use the new compiler but they were one of the first.

FORTRAN II followed only about a year after the original release.  This
version allowed for, among other things, links to assembly language.
FORTRAN III was written in 1958 and FORTRAN IV was announced in 1962.

I hope the above information is useful.  For further information the
Time Life book cited above has an extensive bibliography that cites many
book and journal articles that would be interesting reading.  The
journal "Annals of the history of computing" is cited frequently and the
following issues may be particularly interesting: October 1982 and July
1979.  The latter includes an article by Backus "The History of FORTRAN
I, II and III".  I have not read any of these articles; our library does
not subscribe to this journal.

Ross Taylor
Department of Chemical Engineering
Clarkson University, Potsdam, NY 13699
email: taylor@sun.soe.clarkson.edu (internet)

wsb@boise.Eng.Sun.COM (Walt Brainerd) (08/15/90)

In article <9008151155.AA11309@thep.lu.se>, magnus@THEP.LU.SE (Magnus Olsson) writes:
> 
> The later versions of Fortran (IV, 66, 77) are reasonably downward
> compatible with each other, even though there are some discrepancies,
> such as the handling of a degenerate DO loop (DO 10 I=1,0 ...).

The STANDARD Fortran 77 was compatible with the STANDARD Fortran 66
because "zero-trip" DO loops were not legal in Fortran 66.  Although
many compilers allowed them as an extension (e.g., IBM), not all of
them got it wrong.  For example, CDC 1604 Fortran executed a "zero-trip"
DO loop zero times (not once).

Speaking of upward compatibility, I have a copy of the original Fortran
manual for the IBM 704.  It contains a nice example of a complete
Fortran program, almost all of which is completely legal Fortran 90.
One counterexample is a line containing the FREQUENCY statement.
--
Walt Brainerd        Sun Microsystems, Inc.
wsb@eng.sun.com      MS MTV 5-40
                     Mountain View, CA 94043
                     415/336-5991

bam@bnlux0.bnl.gov (Bruce A. Martin) (08/16/90)

In article <1990Aug13.145301.20663@cs.umn.edu> pockrand@cs.umn.edu (Mitch Pockrandt) writes:
>In article <3093.26c6b1cd@cc.curtin.edu.au> North_TJ@cc.curtin.edu.au (Tim North) writes:
>>Hi,
>>	I'm running a class on various programming languages, and I'm doing a
>>couple of lectures on FORTRAN. I'm not really sure of the different versions
>>of FORTRAN that have appeared over the years, though. I'd really appreciate it
>>if someone could make corrections/additions to the following table:
>>
>>	1953	FORTRAN I
>>	19??	FORTRAN II  ?
>>	19??	FORTRAN III ?
>>	1966	FORTRAN IV         <***** ??? (see below)
>>	1977	FORTRAN 77
>>	198?	FORTRAN 8X
>>	1990?   FORTRAN 90  ?
>>
>Time for some confusion on my  part.  I used to use Fortran 66 on IBMs
>mainframes (FORTG and FORTG1 as I recall).  At the time I was under
>the impression that Fortran IV was a newer different beast (not
>necessarily blessed by ANSI or any such body) that had come about in
>the early 1970's to take care of some of the shortcomings of Fortran
>66.  At least on the Burroughs equipment I worked on 12 years ago, we
>had a Fortran IV compiler (FORTIV) which was different from the
>Fortran 66 extended workhorse we frequently used.
>
>Any body else remember or know?
>
>===========================================================================
>  Mitchell S. Pockrandt - Computer Science Dept. - University of Minnesota...
>===========================================================================


There's some confusion, here.  Let me try:

	The year numbers refer to standards.
	(Date of completion -- not necessarily publication.)

	The roman numerals were used by IBM to identify major releases.

__________________________________________________________________________

WARNING:  Type "J" now, to avoid lots of gory detail, 
		replete with opinions and bad jokes.
__________________________________________________________________________

As most people know, the original "Fortran" was developed at IBM by a team
led by John Backus, beginning in 1954.  [An excellent and enjoyable article
about this work appeared over ten years later in IBM's "Computing Report 
(for the Scientist and Engineer)", Nov. 1976, Vol. II, No. 4.]  They slipped
somewhat in schedule, but completed it in 1957.  The resulting commercial
product was then known as "FORTRAN", but nowadays most people add a Roman
numeral to distinguish "Fortran I" from its successors.  (Most people 
nowadays have keyboards with lower case, so I'll avoid ALL-CAPS, below.)

Shortly thereafter (I'll let somebody else look up the exact dates!),
another team (under Libby Miller) developed a revision which was dubbed
\Fortran II.  It added many useful extensions (like subroutines) and
became enormously popular on IBM machines (particularly the 704).  

I'm fuzzy about the details of \Fortran III, but it never really saw the 
light of day.  (Some say it was never completed and that there is no such
name -- just a placeholder; others say it was named but stillborn;
others say it became PL/I.  Inquiring minds want to know! :^> )

Finally, IBM came out with FORTRAN IV, which cleaned up a lot of silly stuff
(like SQRTF and XMAXF) and added much good stuff (like the logical IF
statement).  FORTRAN II and FORTRAN IV were implemented on other computers
(after IBM released the rights, in order to placate nervous customers who
didn't want to get locked in forever to proprietary hardware).  Thus arose
serious issues of code portability!  (Like 1620 to 7094?  ;-)

The American Standards Association (ASA, later renamed USASI, know known
as ANSI) established a technical committee (via X3, but I'll skip the
internal logic) named "X3.4.3" (later renamed X3J3) to develop a "standard".
That standard -- the first standard ever developed for a programming 
language -- was known published as "X3.9-1966".  It was virtually
completed in 1963, when it was published in Communications of the ACM,
but the 1966 reflects the year in which ANSI completed all the red tape
and published it.

The term "Fortran 66" was occasionally used to describe the language
defined by X3.9-1966.  The term "FORTRAN IV" refers to any of a number
of slightly different IBM compilers, which more or less conform to
X3.9-1966 but which also allowed various extensions (which made the
user programs nonstandard).  The standard also defined the semantics
more precisely and more generally, restricted the syntax somewhat more
to insure portability across vendors, and defined a number of things
as "undefined" -- especially when different vendors (and different
IBM compilers) executed them differently.  [COMMON saving, Assigned
GO TO variable values, and DO loop indexes are some examples.]

Certainly, there was a FORTRAN IV before there was a Fortran 66.  In fact,
by 1964, I was already using FORTRAN IV under IBSYS on the 7040 at Brooklyn
Poly.  (I earned half my Graduate School tuition money by converting 
crystallographic codes from II to IV, and discovered how much effort a $NAME
card could save!  The rest came from guiding white-water canoe trips.)

Many people erroneously used the term "FORTRAN IV" to describe compilers
and languages conforming to X3.9, altho it rarely mattered:  the differences
were not very noticeable -- except when porting to another machine.  (THEN
you'd hear them yell at the new vendor for not having the nonstandard
extension which they THOUGHT was part of the language!).  Anyhow, the term
"Fortran 66" got used much more AFTER the term "Fortran 77" was invented.

			-=o=-

The term "Fortran 77" was introduced by X3J3 (the ANSI Fortran Standards
Committee, at a November 1976 meeting (which I hosted at BNL)) as an
*informal* name for the revision which was just being completed.
It replaced the ugly name "FORTREV", which X3J3 had been using to
refer to drafts of the proposed revision to ANSI standard X3.9.

Unfortunately, some people used the term "Fortran 78", which either had no
meaning or substitutes the ANSI adoption/publication date for the *name*
of the language.  (This is silly:  you wouldn't call it "Fortran 80" just
because the (identical) ISO standard bears a publication date of 1980;
Similarly for the Canadian (1979?) and other national standards.)

Some clever vendors chose product names to suggest that their compiler
was bigger, or better, or up to date with the state-of-the-whatever.  
For example:  Fortran 76, Fortran 79, Fortran 80 (which was realy a subset
of 66 (!) with a few 77 features, but which ran on the Z-80), Fortran V,
Fortran VI, Fortran VII, WATFIV.  Such names were parochial (and much hyped),
but they only served to confuse the issue of name and vintage.

				-=o=-

When X3J3 first met (July 1977, in Jackson, WY) to plan the next revision,
there was much debate as to whether we should call it "Fortran 82" or
"Fortran 83".  (ANSI had recently reasserted its policy of revising
standards on a five-year basis.)  Some preferred a quickie extension
(for free form, longer names, an extended-range substitute, and perhaps
a structured loop) in a couple of years, with work being done in parallel
on the major changes for a more complete revision.  [Alas.  Would that
our side had won that vote!!]    :-[

Altho the revision effort was completed in about 1985, its finalization
was prevented by a number of internal conflicts (vendors vs. users, vendor
vs. vendor, ANSI vs. ISO, idiot vs. genius [pick your own villan(s)],
micro vs. mainframe, vector vs. scalar, and many permutations [and
perversions] thereof) which are too-extensively dealt with elsewhere.  |-{

Of course, "Fortran 8x" was used as the working name throughout most of
the revision effort.  One esteemed member of X3J3 (JHM) did predict (in
about 1984) that "x" was a hexadecimal digit!   8*>

At one point, the ISO Fortran Standards Committee (WG5) -- which had 
delegated the technical work to X3J3 (in parallel with X3's delegation of
work to X3J3) got so fed up that it defined the language features at its
August 1988 meeting (in Paris) and threatened to proceed if X3J3 didn't
finish by early the next year.  The language so described was named 
"Fortran 88".  Subsequently, "Fortran 88" was often used (but NOT by 
all -- it became VERY political) to describe whichever "compromise
had a plurality that week.    #:+<

Partly to distinguish the end product from specific versions (including
the August 88 ultimatum), and partly because too much time had slipped
by, the committees agreed to the name "Fortran 90" to describe what has
now finally become a "Draft International Standard".    8-)

Whether ISO publishes it in 1990 or later (and whether ANSI revises X3.9
or adopts two languages this decade or never) the *name* of the language
is "Fortran 90".

				-=o=-

The term "Fortran 9x" often appeared in proposals and in articles as a
reference to the "next" revision (i.e. the one in which ASSIGN and 
alternate return will be "deleted").  However, people seem to have
stopped guessing when or whether there will be another revision.
Maybe the next one will be "Fortran 00".   :->   ;-}

Just to confuse things further:  around these parts, 9X is part of the
Bell system (^G ?).


    -/s/-					BAM
Bruce A. Martin		(516) 282-3712	[Address given for identification only.]
Grumman Space Systems			[Every conceivable disclaimer applies!!]
c/o National Synchrotron Light Source	[Opinions are mine only, & will change,]
Bldg. 725C, Brookhaven National Lab.	[without notice, whenever appropriate!!]
Upton, NY  11973

[DISCLAIMER:  The statements made herein do not necessarily reflect those of 
any other individual, group, organization, corporation, or government agency.  
My work on X3J3 does not in any way represent official policies or positions
of my past or present employers nor those of any other sponsor or affiliate.]

zctsfisher@qut.edu.au (08/17/90)

In article <3093.26c6b1cd@cc.curtin.edu.au>, North_TJ@cc.curtin.edu.au (Tim North) writes:
> Hi,
> 	I'm running a class on various programming languages, and I'm doing a
> couple of lectures on FORTRAN. I'm not really sure of the different versions

As I remember a few things slightly differently from some who have
contributed I'll add my 2 cents worth.

I worked for ICT in 1966 and at that time I understood that strictly 
speaking the terms FORTRAN I, II, III and IV only applied to the 
compilers supplied by IBM at various times for their 704, 7040 and 
similar machines. The terms FORTRAN II and IV were commonly used by 
other manufacturers, including us, to indicate compilers with similar 
functionality and syntax to those IBM compilers.

FORTRAN II was a subset of FORTRAN IV in functionality but not in 
syntax. I know that some FORTRAN II statements had to be modified to be 
correct FORTRAN IV but this was always possible. FORTRAN II used 
specific output commands for different peripherals such as PRINT and 
PUNCH. I don't think these were considered correct FORTRAN IV which 
used the generic WRITE.

ANSI (then ASA) defined ASA FORTRAN, which was essentially a defined 
standard for FORTRAN IV, and ASA BASIC FORTRAN which had the same 
functionality as FORTRAN II but, unlike FORTRAN II, was a proper 
subset of ASA FORTRAN. In those days FORTRAN IV with its logical 
variables, logical IF statements and A Formats was considered far too 
complex a language for a small computer. For instance we commonly sold 
8K by 24 bit systems with an ASA BASIC FORTRAN compiler. You needed 16K 
to run our ASA FORTRAN compiler. It was ASA FORTRAN which later became 
known as ANSI FORTRAN-66.

At about the same time (1966/67) many computer companies started 
referring to their compilers as FORTRAN V which had no standard meaning 
other than that its supplier considered it superior to others.

W.J.G.(Bill) FISHER,
Director, Computing Services (Gardens Point),
Queensland University of Technology

Mail       P.O. Box 2434       Ph (Inatl)  (61+7) 223 2123 (w)
           Brisbane                        (61+7) 378 2810 (h)
           Queensland 4001     Fax         (61+7) 229 1510
           Australia           Internet    W_FISHER@QUT.EDU.AU
Telex      AA44699             ACSNET      w_fisher@csvax.qut.oz.au
Telegrams  Quintech Brisbane   VAX PSI     505272223015::W_FISHER

sakkinen@tukki.jyu.fi (Markku Sakkinen) (08/17/90)

Note: This is the second posting of an article that apparently
did not go out at first.  Sorry if somebody receives it twice.

In article <140686@sun.Eng.Sun.COM> wsb@boise.Eng.Sun.COM (Walt Brainerd) writes:
>In article <9008151155.AA11309@thep.lu.se>, magnus@THEP.LU.SE (Magnus Olsson) writes:
>> 
>> The later versions of Fortran (IV, 66, 77) are reasonably downward
>> compatible with each other, even though there are some discrepancies,
>> such as the handling of a degenerate DO loop (DO 10 I=1,0 ...).
>
>The STANDARD Fortran 77 was compatible with the STANDARD Fortran 66
>because "zero-trip" DO loops were not legal in Fortran 66. [...]
> ...

There is at least one true incompatibility in DO loops.
STANDARD Fortran 66 allowed jumps into DO loops from the outside
under the rather complicated "extended range" rules.
STANDARD Fortran 77 prohibits such jumps completely.
However, as I mentioned in this newsgroup (almost a year ago?),
most compiler writers haven't taken notice yet - well, what
can you expect in mere 12 years?

Markku Sakkinen
Department of Computer Science
University of Jyvaskyla (a's with umlauts)
Seminaarinkatu 15
SF-40100 Jyvaskyla (umlauts again)
Finland
          SAKKINEN@FINJYU.bitnet (alternative network address)

bam@bnlux0.bnl.gov (Bruce A. Martin) (08/21/90)

In article <1990Aug17.123818.8951@tukki.jyu.fi> sakkinen@jytko.jyu.fi (Markku Sakkinen) writes:
>...
>In article <140686@sun.Eng.Sun.COM> wsb@boise.Eng.Sun.COM (Walt Brainerd) writes:
>>In article <9008151155.AA11309@thep.lu.se>, magnus@THEP.LU.SE (Magnus Olsson) writes:
>...
>There is at least one true incompatibility in DO loops.
>STANDARD Fortran 66 allowed jumps into DO loops from the outside
>under the rather complicated "extended range" rules.
>STANDARD Fortran 77 prohibits such jumps completely.

Quite true.

X3J3 actually promised (in public comment responses) that this capability
would be restored -- in a cleaner way -- in the next revision.  In fact,
a safe "extended range" capability is one of the functionalities (i.e
functional requirements) which the INTERNAL subroutine feature was designed
to satisfy.  (MODULE capabilities also satisfy this need, to some extent.)