BRITISH COMPUTER SOCIETY FORTRAN SPECIALIST GROUP
Minutes of a meeting held on
24th January, 1975 at the Royal
Society for Tropical Medicine and
Hygiene, 26 Portland Place, London, W.l.
Present: Mr. D. Muxworthy (Chairman) University of Edinburgh
Mr. E. O. Bodger (Vice-chairman) IBM W. T. Systems Aid Centre
Mr. K. Aldridge North Thames Gas
Mr. G. Ashley I.C.L.
Mrs. E. Aylmer-Kelly University of York
Dr. J. C. Baldwin University College, Cardiff
Mr. B. J. Banes Rolls-Royce, Bristol Engine Division
Mr. S. J. Bell Computer Weekly
Mr. H. W. Eradly Bradly Associates
Mr. D. W. Brown SCICON
Dr. A. C. Day University College, London
Mr. B. C. Chapman Honeywell Information Systems Ltd.,
Hemel Hempstead
Mr. E. C. Coles M.R.C.
Mr. J. Cullen B.P.
Mr. M. Fitzsimmons Berne Electronics
Mr. D. J. Flower SCICON
Mr. A. J. Forward I.C.L.
Mr. J. Gilbert U.L.C.C.
Mr. D. Grossmann E.S.R.O.
Mr. D. Hill Micro Computer Systems Ltd.
Mr. I. D. Hill M.R.C.
Mr. D. J. Holmes Rolls-Royce (l97l) Ltd.
Mr. I. Kelly Calikam
Mr. W. M. M. Kerr C.E.G.B.
Mr. H. J. King B.B.C.
Mr. R. S. Love G.L.C.
Mr. D. J. Maisey I.C.L.
Mr. I. McNico1 E.S.R.O.
Mr. W. Y. Milne I.C.C.
Mr. C. W. Nott Central Computer Agency
Mr. L. A. Odell Ministry of Defence
Mr. N. Patet South Eastern Road Construction Unit
Mr. J. S. Pearson I.C.L.
Mr. G. Pegg South Eastern Road Construction Unit
Mr. M. Peltu Dataweek
Mrs. R. J. Pyne Computing
Mr. T. L. van Raalte Ministry of Defence, A.W.R.E.
Mr. R. W. S. Rodwell I.C.L.
Mr. R. J. Salmon SCICON
Mr. B. Shearing Alcock Shearing and Partners
Dr. G. M. Stacey E.R.C.C.
Mr. C. R. Towler I.C.L.
Mr. M. C. Turnill University of Glasgow
Mr. E. Willey Prudential Assurance Co. Ltd.
Mr. R. Woollett U.L.C.C.
Mr. P. A. Clarke (Secretary) Rothamsted Experimental Station
Apologies for Absence:
Mr. D. Ellison University of Manchester R.C.C.
Mr. C. K. Mackinnon U.K.A.E.A., Risley
Mr. T. D. Palmer Computer Power Ltd.
Mr. P. D. Bond Philips Industries
Mr. B. Meek Queen Elizabeth College, London
l. Introduction by Mr. Shearing welcomed the many new attenders and
The Chairman. distributed a summary sheet of the activities of the
group. He also welcomed the first visit by a president of
the B.C.S., Mr. E. L. Willey. He said that this was
encouraging to the group because of Mr. Willey's long
experience in programming and Standards activities.
2. Election of Mr. Shearing, as retiring chairman, declared that the
Officers. steering committee proposed the following officers for
1975:
Chairman: Mr. D. T. Muxworthy of Edinburgh University.
Vice-chairman: Mr. E. O. Bodger of IBM W. T. Systems Aid
Centre
Secretary: Mr. P. A. Clarke of Rothamsted Experimental
Station
These would be subject to election at the next meeting.
3. Address by the Mr. Willey briefly expressed the view that groups like
President of the the Fortran specialist group were important to the B,C.S.
B.C.S. because they could provide an effective voice on
technical matters such as influencing the revision of the
ANSI Fortran Standard. He said that when he visited other
specialist and branch meetings, he could cite the Fortran
Standards work as an example of a current B.C.S. activity
of significance.
4. ICL 2900 Series Mr. D. J. Maisey of the I.C.L. Systems Programming
Fortran Division, Bracknell, who was involved in designing the
2900 series Fortran Language standards presented a
summary of the new facilities. He said that the design
criteria were:
l. The language should be a superset of the ANSI 1966
standard.
2. It should be upward compatible with existing ICL
implementations .
3. A few bad and obsolete features in existing
implementations would be dropped.
4. Some of the better features from other manufacturers
would be included.
5. Many of the features in the forthcoming ANSI standard
would be included.
Generally the language would be made as machine
independent as possible.
He then detailed the major extensions to the ANSI 1966
standard and listed extensions and restrictions nn the
existing 1900 series and system 4 series implementations.
[See Appendix 1]
5. Next meeting. The next meeting will be held on Friday, 7th March 1975,
at 10.30 a.m.; the venue is not yet decided.
(Note that this appendix is for interest only and whilst information contained
herein is believed to~be correct, no liability is assumed by the Fortran
Specialist Group or by Mr Maisey.)
Summary of the Main Extensions to ANSI 1966 Standard in the ICL 2900 Fortran
Language as described by Mr D. Maisey
Blank lines are allowed and treated as comments.
Variables and constants may be declared with a symbolic length thus:
INTEGER*J
The allowed symbols are
I, J, K for INTEGER (default is I)
E, D, Q, R for REAL and COMPLEX (default is E)
L, M, N for LOGICAL (default is L)
These lengths are mapped onto a suitable storage by means of a compile-time
option.
Type statements have been extended to include the symbolic length. Thus:
REAL*E X,Y,Z, A*D
Also functions may be declared with a symbolic length.
A new type, CHARACTER has been introduced for constants, variables, arrays and
functions. These may have a declared length (in number of characters) in the
range 1-255
Character constants are of the form 'constant'
Character comparison is possible within relational expressions using .EQ.,.GT.,
etc and the collating sequence of the machine is used. If one character
expression is of shorter length than the other, the shorter is padded on the
right with spaces before comparison.
Assignment of characters is allowed and for different length characters, the
rules are:
(1) extend with spaces and assign if R.H.S. is shorter than L.H.S.
(2) truncate from right and assign if R H.S. is longer than L.H.S.
Hexadecimal constants of the form Zdddddddd are allowed but their use is
restricted to the DATA statement only.
Subscripts of expressions may be of any numerical type and length and may be of
any complexity.
Expressions and assignments containing mixed numerical types and lengths are
allowed - with the exception of the form: expression**complex.
A**B**C is defined to mean A**(B**C).
The comma before the controlling variable in a computed GO TO may be omitted.
If the controlling variable is out of range, a computed GO TO acts as if it
were a CONTINUE.
PAUSE n is allowed with n being either a 1-5 digit number or a character
string.
The instructions in a DO loop will be executed at least once
The rules for extended range of a DO loop have been simplified so that
branching may enter an 'active' DO loop only, provided that the control
variable has not been redefined. A loop is regarded as 'inactive' prior to
being entered at the DO statement and after it has been exited normally.
List directed input/output is provided. This is indicated by an asterisk in
the place of a Format label in input/output statements. The data items must be
delimited by either a blank, a comma or end of record. If the input/output
list contains more variables than there are data items, a READ can be
terminated by /. Each READ/WRITE statement starts a new record. 'End of Record'
causes an 'End of READ' except if the READ is half way through a complex data
item or a character data item (which may be up to 255 characters and thus may
not fit onto a single record).
NAMELIST input/output is provided (as implemented in ICL 1900 series Fortran).
Direct access input/output is provided (this does not require a DEFINE FILE or
a FIND statement as exists in some Fortran implementations) by statements of
the form:
READ(unit,fmt REC=n,REPLY=m)iolist
where REPLY returns the physically next record after the statement has been
executed. If n is set to m and the statement repeated. sequential access will
result.
READ, PRINT and PUNCH may have implied units. In this case, the statements
used are of the form:
READ fmt,iolist
ENCODE/DECODE are provided (as in CDC Fortran) for conversion to/from character
variables 'in core'.
Arrays may have up to seven dimensions.
The variable used to dimension adjustable dimensioned arrays may be passed in
common.
Named common blocks may have different lengths in different program units.
In an EQUIVALENCE statement, an array name may be used to indicate the first
element of that array.
If a user defined function has the same name as a basic external function it
must be declared in an EXTERNAL statement of the form:
EXTERNAL & name, . . .
A function may be typed by a type statement within that function. Date initial-
ization may be performed in a type statement. An IMPLIC1T statement may be
used to declare the type and length of variables whose names start with
specified letters. The general form is:
IMPLICIT type*lenqth (Letter1 - Letter2)
In a DATA statement, the list specified variables may have different types and
lengths to the corresponding constants - provided this is sensible. DATA X/1/
is allowed. DATA I/1.32/ is not allowed. In a DATA statement, an arrayname
may be used to indicate all the elements of that array.
In FORMAT statements, brackets may be nested to any level. A T descriptor is
provided for tabbing, an M descriptor is provided for reading data that
consists of 'integers with exponents' eg. 3I3 meaning 3000.
The G descriptor allows numeric, logical and character data to be input/output.
G w.d. acts as Iw for integers, as Fw.d for reals and complex, as Lw for
logicals and as Aw for characters. The Z descriptor is provided for hexadecimal
data.
Statement function definitions may include array elements.
Automatic function selection (sometimes called Generic) is provided for ease of
use and simplification of REAL/DOUBLE PRECISION length changes.
Subprograms may have multiple entry points. These are indicated by an ENTRY
statement, which is similar in Syntax to SUBROUTINE or FUNCTION statements.
The type of the entry name and the number of arguments may be different to that
of the function containing the entry. There must be at least one executable
statement between the ENTRY and END statements.
The RETURN n statement is provided (as in ICL System 4 Fortran). If n is out
of range, the statement is interpreted as RETURN. BLOCK DATA subprograms may
be named.
Data initialization of items in labelled common may be performed in any
subprogram in which that common is declared.
A PROGRAM statement allows main subprograms to he named.
Variables local to a subprogram do not become undefined upon return from that
subprogram.
The concept of second level definition has been dropped.