Minutes of BCS Fortran Specialist Group Meeting held at
BCS HQ on 19 January 1989
Present: Graham Barber - EPCL
Martin Counihan - Southampton University
E Golton - RAL
Anne Gooding - Air Products plc
Dave Griffiths - SSF
Valerie Harmer - University of Surrey
Bob Hatfield - Nottingham University
Les Hatton - Programming Research Ltd
Carol Hewlett - LSE
Peter Holland - SSL
Chris Lazou - ULCC
Clive Massey - Bath University
David Muxworthy - University of Edinburgh
Mike Nunn - CCTA
Shahzad Rahban - Queen Mary College
Les Russell - AWE
John Stratford - Queen Mary College
Paul White - Met Office
John Wilson - Leicester University
John Young - PE-MOD
l. APOLOGIES FOR ABSENCE
Apologies for absence were received from Mike Geary, Lawrie
Schonfelder, Mike Gunn, and Miles Ellis.
2. MINUTES OF THE PREVIOUS MEETING [6 October 1988]
On item 2 the National Information Software Service (NISS)
does not look at compilers but only acts as an information
On page 4 the ISO Observer at X3J3 was Gerhard Schmitt not
3. MATTERS ARISING
Fortran Compilers on PC's.
The Secretary, John Young, reported that Mike Gunn had
acquired the NCC's list of certified compilers. Mike Gunn has
also written to companies who advertise Fortran compilers for
PC's and, so far, has received only two replies. With the
current interest it was felt that this response was
disappointing. John Young said that due to other commitments he
was unable to support Mike Gunn on this sub-group but would still
act as a "clearing-house" for any information. An appeal was
made for another member of the Group to assist Mike Gunn and
Carol Hewlett said that she would be available to help.
The IUSC and CHEST evaluation of Fortran compilers was under
way and the Chairman, John Wilson, had received a mail message
from Laurie Burbridge of Bristol University. John Wilson and
Lawrie Schonfelder were included in the CHEST list of interested
parties and there had been a meeting in December 1988.
ISO Observer at X3J3.
The Group's support of Gerhard Schmitt's attendance at the
X3J3 in Boston has been acknowledged by letters of thanks from
Gerhard Schmitt himself, his superior, and Jeanne Martin the
Chair of WG5. Reports suggest that Gerhard Schmitt's presence
in Boston did influence the successful outcome of the X3J3
meeting even though he did not give a formal presentation.
4. REPORT FROM X3J3
Boston Meeting November 1988.
In the absence of the X3J3 representative, Miles Ellis, the
Chairman, John Wilson, led a discussion on the X3J3 meeting in
Boston based on the report from John Reid (Appendix B [of the previous
minutes]) and Brian Meek's article in Datalink dated 9 January 1989.
John Wilson read extracts from the article and these are summarised as
1. Internal Procedures.
WG5 removed this facility due to US pressure but X3J3
wanted it restored. Unlikely to cause any
2. Vector Subscripts.
Again WG5 removed this facility to satisfy US comments
so its restoration by X3J3 would not cause any
3. DO n TIMES
X3J3 voted for a DO .... WHILE facility but not a major
issue for WG5.
4. Parameterized KIND=LOGICAL
X3J3 wanted to exclude this statement but WG5 felt it
had to be included. Possible area of conflict here.
5. Stream I/O
X3J3 have done little work on this subject but WG5
strongly urged it to be included. No real disagreement
here but possible delay while details are worked out.
X3J3 wanted unbounded pointers which provide more
flexibility but would require more work. WG5 wanted
bounded pointers which are relatively simple to define.
There followed a general discussion on these points within
BSI Fortran Panel.
The Chairman of the Panel, David Muxworthy, had been delayed
by fog so again John Wilson led a discussion of the meeting held
on 9 January 1989. The Fortran Panel met to discuss a WG5
Informal Ballot which contained 9 questions concerning a
country's response to the new Fortran 88 proposals. The Group
discussed the questions and answers on the Ballot and felt that
the replies, in general, reflected the feelings of the Group.
John Wilson was unhappy about the questionnaire but the Group
felt that the items should be accepted with reservation. The
Vice Chairman, Chris Lazou, proposed that the Ballot be endorsed
as a positive statement of the British view of Fortran 88.
David Muxworthy arrived in time for the afternoon session
so the meeting continued with this item before he presented his
talk. He again went through the WG5 questionnaire and clarified
some of the points raised earlier. It was reported that the
Alvey/Salford University Group would test fragments of Fortran
from the S8 draft and that the IST5 Programming Languages Panels
which included Fortran were to be re-structured. The BSI Panel
had also discussed whether the NCC should provide a validation
suite of programs for Fortran 88. David Muxworthy said that the
Informal Letter Ballot stressed that there should be no more
delays. The Panel was also recommending accepting Bounded
Pointers rather than Unbounded.
David Muxworthy then drew the Group's attention to the fact
that the VALUES= statement on a READ statement had been voted
out by X3J3 but apparently had not been reported. It had also
been proposed to remove BOZ from KIND= for LOGICAL and that
Stream I/O would be a minimal set of functions. Chris Lazou
again stated that he thought the Panel had been very positive and
that the new standard Fortran 88 should be published as soon as
Martin Counihan asked where he could obtain SC22 papers such
as those listed in Appendix B top of page 4. John Wilson replied
that he thought they should be obtained through Jeanne Martin,
the Chair of WG5, or perhaps through members of WG5. He added
that WG5 Working Papers were not published and were not
There followed a short discussion on Significant Blanks in
the Free Source Form.
[A report on the subsequent X3J3 meeting is in Appendix A.]
5. EXTRA MEETINGS ON FORTRAN
Fortran 88 Seminar - East Kilbride
Since the last meeting of the Group, the Glasgow branch of
the BCS has arranged and held a one-day seminar at the National
Engineering Laboratory. The speakers from the Group were David
Muxworthy and Lawrie Schonfelder and the seminar was organised
by John Bruce, Glasgow Branch's Public Relations Officer. John
Bruce reports that "the event was a great success with an
attendance of 110. NEL staff comprised more than half as 44 were
from Universities and Industry". John Bruce said that David
Muxworthy and Lawrie Schonfelder spoke with authority and
presented Fortran 88 in a positive way.
It was suggested at the Seminar that a sub-group of the
Fortran Specialist Group be set up taking in all four Scottish
Branches of the BCS. Monthly meetings would rotate around
Dundee, Edinburgh and Glasgow. There would be a
Secretary/Organiser of the sub-group which would operate under
the main Group. The frequency and format of the meetings had yet
to be decided.
The meeting endorsed the actions of the Glasgow Branch and,
in particular, John Bruce, who was commended for his work on the
Seminar. It was unanimously agreed that every support should be
given to this new sub-group and, if necessary, the Group would
seek extra funds from BCS to finance any extra costs. Initially,
it was felt that there was sufficient funds to meet any demands
from the new sub-group and that any request made could be met.
Evening_and Tutorial Meetings
The Vice Chairman, Chris Lazou apologised to the Group for
not being able to arrange an evening meeting on Fortran in
London. The Group gave the go-ahead to anybody who wished to
organise an evening meeting or a tutorial meeting to do so. It
was felt that time and place were not too important as long as
the Fortran 88 message was put across.
With the present time-table for the publication of the new
standard Fortran 88 there will be another public review period
of about three months in late Summer 1989. The WG5 timescale of
publication of the new standard at their meeting in Italy in
July 1989 had already slipped. The meeting felt that another
Fortran Forum should be held to coincide with the public review
period to discuss and approve the final document of the standard pd
as well as some tutorials on the new features.
The venue for a Forum would be a problem at such short
notice but as it would probably be in the Summer holidays a
University could accommodate the required numbers. It was
suggested that either London or Liverpool might be appropriate
locations. It was proposed that a sub-group be formed with the
task of organising a Forum and, perhaps, liaising with BISL.
6. BCS BUSINESS
The Chairman, John Wilson, has received a letter from the
Specialists Group's'Technical Co-ordinator, Tony Sale, requesting
that this year's BCS President, Brian Oakley, be invited to an
ordinary meeting of the Group. It was decided that as the Group
met during the day, the Group's business was positively ordinary,
and that there are at least 40 other Groups as well as all the
Branches to visit, the President would not be formally invited
to attend a Fortran Group meeting.
Involvement in Standards
The Chairman, John Wilson, had nothing to report on his
approach to BCS seeking regular funding for attendance at WG5.
Apparently, the Group cannot use its usual grant but could
possibly use the profit from the Fortran Forums. John Wilson has
been told that there is a BCS special purposes fund but he could
not find out who operated it.
Technical Committee for Standards
The Vice-Chairman, Chris Lazou, has joined the Software
Engineering Technical Committee which is to provide support for
Specialist Groups. The terms of reference for the new Committee
are still to be finalised.
Specialist Group's Management Committee
The Chairman, John Wilson, attended the meeting which took
place on 2 November 1988. He reported on the following matters:
(a) The new Secretary had resigned.
(b) The next printing of the BCS Handbook would be in
September 1989. All updates are to be in by May 1989.
(c) There are 3 new Specialist Groups
(i) CASE: Computer Assisted Systems Engineering
(ii) GIS: Geographical Information Systems
(iii) SQM: Software Quality Management
(d) There had been two meetings held for Specialist Group
Treasurers. The BCS now have a centralised accounting
system which is being used by Branches but Specialist
Groups can opt out if they so wish.
(e) Mature members' applications for Chartered Engineer are
being processed very slowly. Unless the process is
speeded up it may be some years before some mature
members obtain CE.
7. ANY OTHER BUSINESS
A new Fortran publication called Fortran Journal described
as "The Journal for the Fortran User Community" has been
launched. The new Journal contains news items and has
advertising, software exchange, and the subscription includes
membership of the Fortran Users Group. Published in the USA the
editors are Walt Brainerd and Charles Ritz.
Programming Research Ltd Flier
The Managing Director of Programming' Research Ltd, Les
Hatton, requested that a one page flier on FLINT - a
comprehensive FORTRAN engineering toolset - be included in the
next mailing to members of the Group. This was approved with the
proviso of including the Group's standard disclaimer on
WG5 Meeting in Italy
The next meeting of the International Standards
Organisation's Fortran Standards Committee WG5 is to be held at
Ispra in Italy from 10-14 July 1989. Anybody wishing to attend
this meeting should give their name to David Muxworthy by
8. FUTURE MEETINGS
The next meeting of the Group will take place on Thursday,
20 April 1989, in Oxford. The morning session will include the
AGM and the afternoon programme has yet to be arranged.
The meeting will be held in Oxford University's Computing
Teaching Centre at 59 George Street, Oxford by kind invitation
of the Treasurer, Miles Ellis.
The following meeting will be on Thursday, 29 June 1989, at
BCS HQ. This meeting will consider any items needed to
presented to WG5 in Italy.
11 April 1989
To: Fortran Forum, BCS, NAG, etc.
From: John Reid
Date: 27th February 1989
Subject: X3J3 meeting in Stanford
Note: This is a personal note on the meeting and in no sense does it
constitute an official record of it.
[Note: This appendix was written after the meeting of 19 January 1989
but was included in the minutes of that meeting.]
The Chairman announced on the first day that her aim was to complete
consideration of all technical issues during the week, so that the
next meeting could focus on edits, bug fixes, and agreeing responses
to comments from the public. This aim was achieved. A letter ballot on
forwarding the document will now be held, and if this is successful,
proposals for changing the draft will be limited at the next meeting
to edits and bug fixes that are mentioned in the ballots. Her ruling
to this effect was accepted unanimously.
The result of the Chairman's informal letter ballot was 28-12-6, so it
looks as if the necessary two-thirds majority vote will be achieved in
the coming letter ballot (with a small margin). The principal reason
given for a no vote was the size and complexity of the language.
The result of the WG5 Convenor's informal ballot was favourable (7-0
by countries and 27-2 by individuals).
The major technical changes made at the meeting were:
1. Add pointers as a data attribute (retaining allocatable arrays).
2. Parameterize LOGICAL (without BIT properties).
3. Add nonadvancing i/o (formerly called stream i/o).
4. Allow structures in COMMON and EQUIVALENCE.
5. Limit the intrinsics permitted in data initializations and
6. Alter the rules on argument association of arrays to permit
new arrays to correspond to old dummy arrays.
7. Extend the DATA statement to array sections and derived types.
8. Add intrinsic functions FLOOR, CEILING, and MODULO.
Some of the votes were nail-bitingly close (see details below). The
effect is that action has been taken on all the major differences
between S8 and the plan P2 of WG5, but two significant differences
have been introduced: structures in COMMON and no BIT arrays. The WG5
Convenor is hopeful that WG5 will accept these changes, so plans to
ballot WG5 on a document that is identical to S8 except for the cover,
title pages, foreword, headers and footers, and change marks.
It looks hopeful that identical ISO and ANSI draft standards may be
issued for comment after the May meeting of X3J3.
At the previous meeting, X3J3 adopted the addition of a pointer type
and explicit de-referencing for accessing pointer targets. However,
the availability of text and further clarification of the issues led
to some people changing their minds and straw votes indicated that it
was unlikely to get the support necessary for adoption, whereas the
WG5 proposal might. The WG5 proposal was changed so that pointers are
initially undefined and only become disassociated when the NULLIFY
statement or a suitable pointer assignment statement is executed, and
was adopted (25-12).
There was concern that users needing simple allocatable arrays would
need to understand pointers. Therefore, allocatable arrays were
restored (30-4), now without the ability to use them as dummy
arguments or function results. There may be advantages for
optimization since an allocatable array may be declared without the
TARGET attribute and this will prevent pointer access to it.
3. Parameterized LOGICAL
The parameterization of LOGICAL without any BIT connotations was
adopted (30-8). There is no requirement for LOGICAL (KIND=l) to be
represented as a single bit, though this is a possible
implementation. Note that this results in a uniformity among the
intrinsic types, all of which now have a KIND type parameter.
4. Nonadvancing input/output
For what had somewhat erroneously become known as stream i/o, the
Committee indicated in early straw votes that it preferred a facility
based on i/o statements to the use of intrinsic subroutines. It was
felt that there should be a form of the READ and WRITE statements that
does not automatically cause an advance to the start of the next
record. For lack of a better term, it was called 'nonadvancing' i/o. A
strong desire was also expressed (by me and others) for a means of
reading as many characters as the record contains and finding out how
many this is. The facility was refined by active subgroup work and was
eventually adopted unanimously. It involves only formatted sequential
access to an external file and the maintenance of a pointer to the
current character in the current record. It is specified by
ADVANCE='NO' and the number of characters processed is returned by an
optional NCHARS= specifier.
There is no longer a need for PROMPT=, so this was deleted.
5. Structures in COMMON and EQUIVALENCE
By exactly the same marginal vote as for pointers (25-12), a facility
that permits structures in COMMON and EQUIVALENCE was adopted. It
involves a new keyword, SEQUENCE, within a type definition. Separate
type definitions specify the same type if they have the SEQUENCE
property, have the same name, and have components that agree in order,
name, type, type parameters, and shape. A sequenced structure may
appear in COMMON or EQUIVALENCE, and may be storage associated with
another structure of the same type. If all the components ultimately
resolve into default numeric or default logical type, they must be
laid out in storage as in a COMMON block and the usual storage
associations are available (and similarly for default character).
6. Restricted constant expressions
It was decided to introduce a new category of constant expression, for
use in data initializations and KIND specifications but not in CASE
statements. It reduces the number of intrinsic functions permitted and
(presumably) makes evaluation at compile time easier, but the rules
will be hard for the user to remember. An intrinsic function reference
is permitted when
1. the arguments are restricted constant expressions of type integer
or character, the result is of type integer or character, and the
function is not DOTPRODUCT, MATMUL, an array reduction function
such as ALL, an array construction function such as PACK, an array
manipulation function such as CSHIFT, nor an array location
function such as MAXLOC;
2. the arguments are restricted constant expressions and the function
is RESHAPE; and
3. the function is an inquiry function and each argument is either a
restricted constant expression or a variable whose type parameters
or bounds inquired about are restricted constant expressions.
The motion was accepted (29-3) as a compromise towards those who want
a smaller and simpler language.
7. Argument association of arrays
Tom Aird of IMSL drew my attention to a problem with the argument
association of arrays. Many library codes use assumed-shape arrays;
under the old rules for argument association, these would not have
been permitted to be called with actual arguments that were array
sections, array expressions, or assumed-shape arrays. Also simply
adding an explicit interface for the sake of argument checking would
not have been permitted.
My proposed change allows sequence association with an explicit
interface and says that sequence association always takes place for
explicit-shape and assumed-size dummy arrays. The natural
implementation is for such arrays always to be stored contiguously,
which means that copy-in copy-out will be needed if the actual
argument is a discontiguous array. This led to some opposition, but I
pointed out that it will occur only in the transitional phase when new
arrays are being passed to old dummy arrays and will not occur for
Two snags were pointed out by the subgroup: a copy-in should not be
made for an actual argument that is an array element when the dummy
argument is a scalar, and resolution of overloads requires rank
agreement. I therefore added the requirement of rank agreement when
the actual argument is an element of a possibly discontiguous array
and for a generic call. The proposal was accepted (28-10).
8. Additional obsolescent features
None of my suggestions for additional obsolescent features was
accepted. I found it quite extraordinary that only 3 people supported
making obsolescent the calling of an external procedure without
declaring it in as EXTERNAL statement or an interface block, since
declaration in an EXTERNAL statement was recommended on page B-13 of
the Fortran 77 standard and is needed for upward compatibility of
Fortran 77 programs (see page 1-2 of S8). The whole concept of
language evolution appears to be rejected by a majority of X3J3. The
most favoured proposal in straw votes was the H-edit descriptor but
this failed (15-19) in a formal vote.
9. Minor changes
The following minor changes were made:
1. If a COMMON block appears in a module, allow objects in the block
to be declared PRIVATE, so that they are inaccessible via USE
statements (though still available through COMMON).
2. Rename the ARRAY attribute as DIMENSION.
3. Add EXTERNAL and INTRINSIC as attributes that may be included in a
type declaration statement.
4. Require agreement in type and type parameters of the elements of
an array constructor.
5. Allow the declaration of any sort of array in a DIMENSION
statement or attribute.
6. Extend the DATA statement to array sections and derived types.
7. Add intrinsic functions FLOOR (the integer just less than the
argument, for example FLOOR(3.7) = 3 and FLOOR(-3.7) = -4),
CEILING (the integer just greater than the argument), and MODULO
(mathematical modulo function, for example MODULO(8,5) = 3 and
MODULO(-8,5) = 2).
8. Allow DATA statements among the specification statements, provided
an array that appears in a DATA statement has its array properties
established in a previous declaration statement.
9. Allow statement functions to appear among the specification
10. Remove DATA attribute (simply allow initialization without the
need to specify DATA in a type declaration statement).
11. Extend DATA statement to array sections and derived types.
12. Replace the argument MOLD that gives a template for the KIND type
parameter of the result of many intrinsics by the argument KIND
that specifies the KIND parameter directly.
13. In the intrinsic DATA_AND_TIME, change 'Greenwich Mean Time' to
'Coordinated Universal Time' and require that all values returned
refer to the same instant in time.
14. The intrinsic REAL for a single complex argument takes the kind
parameter value of the argument.
15. Ensure that the right-hand side of a defined assignment is always
treated as an expression.
16. Require the argument MOLD of RESHAPE to have constant size, and
rename it as SHAPE.
17. Allow zero-sized objects in COMMON.
The following proposals were not accepted (votes are not given where
straw votes were so unfavourable that the proposal was not moved
1. Restore the FORALL statement.
2. Replace % by . for structure component selection.
3. Delete module procedures (10-29).
4. Add one-argument SIGN function (11-16).
5. Add intrinsic NUM_KINDS that returns the number of kinds and add
optional argument N to KIND to specify the N-th kind (22-12).
6. Allow the value 60 for argument SECOND of DATE_AND_TIME (17-16).
7. Allow RETURN in a main program (10-25).
8. Convert PACK and UNPACK to subroutines (9-21).
9. Language name should be Fortran 88 (11-17).
10. Allow more than one SAVE for an object (4-25).
11. Restore part of the VALUES= facility.
12. Lessen the restriction on the position of IMPLICIT statements
13. Add CPU_TIME intrinsic (21-13).
10. Appreciation of longstanding memberships
It was decided to request that CBEMA send letters of appreciation to
Jeanne Adams, Neldon Marshall, Lloyd Campbell, Walt Brainerd, Jim
Matheny, and Rich Ragan, who have all been members since 1976. This
was expected to be Jim's last meeting and he was given a standing
11. Next meeting of X3J3
The next meeting of X3J3 will be in New York, 8-12 May. The deadline
for the pre-meeting distribution is 3 April.
SHORT HISTORY OF FORTRAN PREPROCESSORS
Abstract of the talk given by David Muxworthy, Edinburgh University
The term "Fortran preprocessor" is most commonly taken to mean a
program which translates a program written in an extended Fortran
language including control structures, and possibly omitting more
primitive standard Fortran ones, into compilable Fortran for a
particular implementation. Such preprocessors appeared mainly in the
early to mid-1970s following IBM's embracing structured programming
techniques as part of its Chief Programmer Team software development
technique; over 60 such preprocessors have been mentioned in the
literature. Well known names include IFTRAN, MORTRAN, RATFOR and
SHELTRAN (marketed as FORTRESS).
Ten years earlier automatic translators from Fortran II to IV had
established the precedent of programs, themselves written largely in
Fortran, to read and write Fortran source. Many other tools to
manipulate Fortran source and either print information about it or
output a transformed version have appeared. Examples include the
SIFT - Fortran II to Fortran IV (Datamation March 1963 pp 43-46)
Dialect to dialect
Fortran to Fortran optimizer (1973)
Fortran to other languages (Algol, PL/I)
Other languages to Fortran
2. Analyzers and Documentors
Syntax checkers (PFORT 1974)
Frequency counters (UCL 1972)
Path analyzers (DAVE 1976)
Source tidiers (DCE263 1968)
3. Program generators
Part program generators
Common/Equivalence Builder (1971)
Recursive Fortran (1975)
Structured Fortran preprocessors
Master source systems
EDINBURGH PORTABLE COMPILERS LTD
[The 36 slides used in this talk have not yet been digitized.]