British Computer Society Fortran Specialist Group
Minutes of a meeting held on 4th October 1976 in Lecture
Theatre 4.34 Royal School of Mines, Imperial College Computer Centre,
Prince Consort Road, London, S.W.7.
Present: Mr.D.T.Muxworthy (Chairman) University of Edinburgh
Mr.P.D.Bond Philips Industries
Mr.T.J.Bourne I.C.L.
Mr.D.Ellison U.M.R.C.C.
Mr.G.Harding Imperial College Computer
Centre
Mr.D.Hill Zeus-Hermes/C.C.F.
Dr.I.D.Hi11 M.R.C.
Mr.D.J.Holmes Rolls Royce (1971)Ltd.,
Bristol
Mr.K.M.Law Imperial College Computer
Centre
Mr.M.Lewis Imperial College Computer
Centre
Mr.P.Loftus Marconi-Elliott Avionic
Systems Ltd., Rochester.
Mr.D.J.Maisey I.C.L.
Mr.H.Pitcher N.C.C.
Mr.T.L.van Raalte M.O.D. (A.W.R.E.)
Mr.J.Roberts-Jones Liverpool City Council
Dr.G.M.Stacey E.R.C.C.
Mr.P.Vyse Honeywell I.S.Ltd.
Dr.H.J.Zell Imperial College
Mr.P.A.Clarke (Secretary) Rothamsted Experimental
Station
Apologies for absence:
Dr.J.D.Murchland U.C.L.
Dr.J.K.Reid U.K.A.E.A. Harwell
Mr.B.H.Shearing Alcock, Shearing and
Partners.
1. Approval of Minutes of Previous Meeting
The minutes of the meeting of 7th June 1976 were approved subject
to the following corrections:
In the list of those present, 'Mr.J.R.Jones' should read 'Mr,J.Roberts-
Jones', Mr.J.D.Beasley wishes the words '(afternoon on1y)' to be added
to indicate that he did not take part in the morning activities. On
page 3 item 4.3, '16th meeting' should read '11th meeting'. On the
final page, 'Royal Statistical Sofiety' should read 'Royal Statistical
Society' and 'D=1.0*(B-C)' should read 'D=-1.0*(B-C)'. Dr. Hill
requested that the word '(sic)' appear after the expression 1.0/SQRT(44.0/
7.0).
2. Matters Arising from the Minutes
Mr.Muxworthy mentioned that since the last meeting ANSI X3J3
had extended their public comment period to 28th September 1976.
He had noticed that an article in Computer Weekly (Sept.3O) confirmed
that the BCS Standards Committee would be acting as distributors for
the revised U.S.Navy Fortran test programs.
Mr.Clarke gave further details of the modifications forwarded
by Mr.J.Ehrman of the Standard Linear Accelerator Laboratory (SLAC).
These apply to IBM software for MVP and VS2 systems. Module IEWFETCH
is changed so that relocation is done during an interrupt. This
can alleviate a bottleneck situation that can arise when loading programs
into core. Situations where the modification gives most benefit are:
environments with many jobs with short CPU requirements, environments
with heavy compilation (particularly multi-compilation) requirements
and environments with jobs employing much overlay changing. Typically
University and Fortran environments would benefit considerably.
Increases in throughput of 20 to 30 percent have been recorded when
used in conjunction with blocking of the file containing the compiler
(SYSLIN) in large blocksizes e.g. 64Kb. The modifications are also
available through the IBM Users Group, SHARE. It is believed that
similar modifications are also included in an IBM enhancement for
the MVS Release 4 System obtainable from IBM at a rental of $875/month
(Computer Weekly, Aug.12).
3. Election of vice-Chairman
Mr.M.Lewis (Imperial College Computer Centre) offered to act
as vice-Chairman for the remainder of the 1976-77 year and was
declared to be duly elected.
4. Activities of other Fortran Groups
4.l ANSI X3J3 Activities
Mr.Muxworthy described further details of the March/April meeting
of X3J3: Gw.dEe format edit descriptor is provided, auxiliary I/O
must not specify an internal file, expressions are permitted in the
PARAMETER Statement.
At the July meeting, IF-THEN-ELSE was included (see Appendix A),
a "non-character" storage unit becomes a 'numeric' storage unit (even
for logicals), the operators .NGT. and .NLT. were rejected, the
abbreviations .T. and .F. were rejected. There was discussion about
the operator .XOR. and names of more than six characters.
Mr.D.Maisey who was present at the September meeting of X3J3,
reported the following events:
The committee had estimated that it would take about two years
to process all the comments received on the d.p.standard. The U.S.
Federal Government had threatened to use FORTREV/76 as the new standard
unless proceedings were quickly resolved. The committee therefore plan
to complete processing of comments by March 77. There was general
agreement that members should avoid considering new or contentious
matter and concentrate on 'tidying up' the existing document. The
following decisions were made: Only constant expressions may appear
in the PARAMETER statement, the syntax of PARAMETER is of the form:
PARAMETER (parameter definitions), only one unnamed BLOCK DATA
subprogram is permitted in an executable program, blank lines are
treated as comments in all respects, type DOUBLE PRECISION COMPLEX
was again rejected (by 6 votes to 12), expressions have been restricted
to type integer in places where this is sensible - such as array
subscripts, control variable of computed GO TO etc. - but not as
control variable of DO loops, Functions with no arguments do not
require a pair of empty parentheses, .XOR. and .EQV. operators are
included, array block list item was rejected, names of eight characters
was rejected, the collating sequence of letters and digits must not
overlap.
When questioned, Mr.Maisey said that he thought that the main
reason for X3J3 not adopting D.P.COMPLEX was because it was not
necessary on some machines such as CDC 6000 series.
4.2 Fortran Development Committee activities
The group had received no communication from this committee
since the last meeting (July). Mr.Muxworthy noted that in the July
FOR-WORD (Vol.2 No.3) six pre-processors had been recommended. These
included S-FORTRAN (by G.J.de Balbine of Caine, Forber, and Gordan
Ltd.), FLECS (T.Beyer, University of Oregon), IFTRAN (W.R.Wisehart,
General Research Corporation), MORTRAN (A.J.Cook Computation Research
Group, S.L.A.C.), RATFOR (B.W.Kernighan, Bell Telephone Laboratories),
and WATFIV-S (P.Dirksen, University of Waterloo).
He was disappointed that SHELTRAN was not among these. Perhaps
this was because availability to U.S.A. users was uncertain.
Members wishing to contribute to FOR-WORD, or wishing to receive
copy of it should write to the editor, Dr.L.P.Meissner, 50B 3239,
Lawrence Berkeley Laboratory, Berkeley, CA 95720, U.S.A.
4.3 CODASYL Fortran DBML Committee Activities
Mr.Clarke reported from their minutes that at their May 24-26
meeting 12 the FDBMLC had decided by 6-1 that the Fortran rule that
blanks are not significant in statements, except within literals,
should apply to subschema (DDL) statements. Other straw votes
include: a limit of 30 characters in (presumably Cobol/schema) names
in the ALIAS statement, add END= clause to FIND and FETCH statements
to be applicable to NEXT, PRIOR and DUPLICATE, change ERROR = to ERR =.
Although no minutes of meeting 13 held in July were available, a
letter saying that the committee has completed its development of its
draft JOD version 1.0 was received together with a copy of 1.0 in
microfiche form. The committee welcome comments on the document. Mr.
Clarke asked if any members would be interested in reviewing the document
and some names were received after the meeting. Any other persons wishing
to be involved should contact Mr.Clarke before the next meeting (December).
4.4 Other Fortran Groups
4.4.1 ECMA TC 8 activities
Mr.Maisey reported that at the June meeting of ECMA, the committee
had made some minor proposals to X3J3, these included recommending
that wherever they occurred in dp ANS, repetitions of definitions
should be removed together with much of the redundant material in
the appendices and examples. It was believed that this would avoid
ambiguities that could arise from careless revision or incorrect
examples and charts.
ECMA had also re-stated proposals to remove the $ character,
to include DOUBLE PRECISION COMPLEX and to modify the syntax of
PARAMETER to permit the extension of names with more than 6 characters.
4.4.2 IFIP WG 2.5
In the absence of Dr.Reid, Mr.Muxworthy reported that a meeting
of IFIP WG 2.5 (Software Portability) had been held at Ardonne [sic]
(nr.Chicago) prior to the September X3J3 meeting. It was known
that Dr.Reid (UKAEA Harwell) and Dr.Ford (N.A.G. Oxford) had been
present and also Betty Holberton (N.B.S.), a member of x3J3.
Three proposals had been prepared in detail and these had been
submitted to X3J3: A MAP statement to provide simplified passing of
work storage to subprograms also provides some data structuring
facilities, the statement takes the form: MAP/name/name-list where the
names are those of variables, arrays or adjustable arrays.
Type DOUBLE PRECISION COMPLEX was drafted in detail. Intrinsic
functions for environmental enquiries had been drafted:
EPSLN(a) returns e such that a-e<a<a+e
INTXP(a) returns n such that B**(n-1)<a<B**n
SETXP(a1 a2) returns a1 *B*(-INTXP(a1))
where B is some base.
Those present discussed these and were in favour of EPSLN(o) and
EPSLN(1) only.
A set of simpler proposals had recently been submitted by BSI in
connection with deficiencies in the INQUIRE statement.
4.4.3 Purdue Workshop Activities
Mr.Muxworthy reported that he had received copy of draft
standard ISA S61.2 - 1976 Procedures for file access and the control
of file contention, from the ISA Committee SP61, together with a
ballot paper for approving/disapproving of the contents. A circulation
copy of the document can be obtained from the secretary.
The next meeting of this group will be 10-12 October 1976.
4.4.4 Canadian Standards Association - Fortran Working Group
Mr.Clarke reported that this is a newly formed group and the
Secretary is Mr.J.Robinson (see 5.2.1). A letter has been received
indicating that they arc interested in exchange of information about
meetings.
5. Progress Reports
5.l Preprocessor Working Party
In the absence of Dr. Murchland, Mr. Clarke reported on the progress of
this working party. Slow progress was being made in obtaining the structured
preprocessors, MORTRAN and FLECS. Many documents and articles of interest were
continuing to circulate among the four members. A proposal for a general
Fortran preprocessor statement syntax (as an alternative or supplement to the
'comment card' proposal) has been circulated.
It takes the form:
[label] statement [ (parameter list) ]
where square brackets indicate optional items. Normal Fortran conventions apply
for continuation, spaces not being significant, etc. Instances could include
'structured Fortran':
l IF(A.GT.B)
ELSEIF(C.GT.D)
99 WHILE(J.EQ.l0)
END IF
or 'DML' statements
INVOKE (SUBSCHEMA=XYZ)
5 FIND (NEXT, RECORD=YEAR, SET=LEAP)
GET(RECORD= 'ABC')
The problems associated with multiple pre-processes and conventions for
permitting these have been circulated. In the above proposal, each preprocessor
would have its own set of statements that it would 'recognise' by name. If
clashes occurred e.g. both preprocessors recognise 'GET' it would be necessary
to make provision for an alternative statement-word (such as GETSOME) to be
recognised by one or other of the preprocessors for the particular application
that required the GET facility of both preprocessors.
A problem of communication may arise between preprocessors. Where a
preprocessor generates names or labels, there should be a convention to
prevent a subsequent preprocess generating the same names or labels.
Where one preprocessor outputs statements or information that is going to
be further preprocessed by a subsequent preprocessor, the order of
preprocessing is relevant and a proposed restriction is to prohibit the
recursive situation where preprocessor A outputs information for preprocessor B
and vice versa.
This proposal is being designed to provide a development environment for
the Fortran language to enable proposed extensions to be tested within a
'conventional' syntax that could provide direct incorporation into ANS Standard
Fortran. The W.P. would be interested to hear any suggestions or alternatives.
5.2 Other Reports
5.2.1 Group Promotion/Information W.P
Mr. Clarke said that prior to the release of the next versions, the
following changes and corrections should be made to the Fortran Contact List,
version 1, dated l5 June 1976: On pages 3, 5, 7 and 15 correct Dr. Day's
address to Dr. A. C. Day Computer Centre, 19 Gordon Street, London WClH 0AH.
On the index and page 18 correct the ECMA committee to TC8. On pages 4 (BSI),
4(MVFDSA) and 15 delete the references to Mr. D. J. Maisey. On the index 3.4
and page 16 change 'Canadian Standardisation Committee' to 'Canadian Standards
Association - Fortran Working Group' and insert on page l6 their secretary and
his address: Mr. J. Robinson, IBM Canada Ltd., 1150 Eglinton Ave, East, Don
Mills, Ontario M3C lH7.
On page 19 delete the reference to Mr. J. Besse.
On page 3 add the words 'Vice-Chairman' before the reference to Mr. M. Lewis.
6. BCS Business
6.l BCS Standards Committee Activities
Mr. Muxworthy reported that Dr. Day had attended a meeting of the
Standards Committee in June to discuss the Working Party review of the spans
Fortran standard(Fortrev/76). Frank Taylor, the chairman had asked Dr. Day if
he would mind if the review was used as the BCS viewpoint on the standard, Dr.
Day agreed to this and the committee voted in favour. The review now has the
odd status of being a BCS viewpoint and yet has not received Fortran Specialist
Group approval as a whole and on some points it is only a majority view between
the authors.
Mr. Muxworthy said that in the distribution of Fortrev and invitation for
comments to be sent to ANSI the Fortran Specialist Group had not received the
co-operation of the Standards Committee who had mounted their own duplicate
exercise. He said that this contrasted strongly with BSI who had been very
willing to collaborate with the BCS Fortran Specialist Group throughout.
6.2 Other BCS Activities
6.2.1 BCS Library
The BCS librarian has forwarded a list of new accessions on Fortran these
are attached (see Appendix B). It includes a new copy of Dr. Days 'Fortran
Techniques'. The charge for postal loans has been increased from 40p to 60p.
6.2.2. BCS Specialist Group's Committee
At the last meeting of this committee it was recommended that Specialist
Groups should try not to pay speakers expenses and should try to raise some of
their own funds.
7. Any Other Business
There was no other business.
8. Date of Next Meeting
The next meeting will be held on Monday 6th December, 1976.
9. In the afternoon, Dr. Stacey gave a talk on his 'Experiences with Fortran
and a CODASYL Data Base System' (see Appendix C).
[In the original typescript sections 5 to 9 were typed in a smaller font so that
the minutes proper would fit on six pages rather than seven.]
11.6 Block IF statement
The block IF statement is used with the ENDIF statement
and, optionally, the ELSE IF and ELSE statements to control
the execution sequence.
The form of a block IF statement is:
IF (e) THEN
where e is_a logical expression.
11.6.1 IF-level
The IF-level of a statement s is
n1 - n2
where n1 is the number of block IF statements from the
beginning of the program unit up to and including s, and n2
is the number of END IF statements in the program unit unit up to
but not including s.
The IF-level of every statement must be zero or positive.
The IF-level of each block IF, ELSE IF, ELSE, and END IF
statement must be positive. The IF-level of the END
statement of each program unit must be zero.
11.6.2 IF-Block
An IF-Block consists of all at the executable statements
after the block IF statement up to, but not including, the
next ELSE IF, ELSE, or END IF statement that has the same
level as the block IF statement. An IF-Block may be
empty.
11.6.3 Execution of a Block IF Statement
Execution of a block IF statement causes evaluation of the
expression e. If the value of e is true, normal execution
sequence continues with the first statement of the IF-block.
If the IF-block is empty, control is transferred to the next
END IF statement that has the same IF-level as the block IF
statement. If the value of e is false, control is
the execution ol the last statement In the IF-
transferred to the next ELSE IF, ELSE, or END IF statement
that has the same IF-level as the block IF statement.
Transfer into an IF-block is permitted.
If the execution of the last statement in the IF-block does
not result in a transfer of control, control is transferred
to the next END IF statement that has the same IF-level as
the block IF statement that precedes the IF-block.
11.7 ELSE IF Statement
The form of an ELSE IF statement is:
ELSE IF (e) THEN
where e is a logical expression.
1l.7.1 ELSE IF-Block
An ELSE IF-Block consists of all of the executable
statements after the ELSE IF statement up to, but not
including, the next ELSE IF, ELSE, or END IF statement that
has the same IF-level as the ELSE IF statement. An ELSE IF-
block may be empty.
11.7.2 Execution of an ELSE IF Statement
Execution of an ELSE IF statement causes evaluation of the
expression e. If the value of e is true, normal execution
sequence continues with the first statement of the ELSE IF-
block. If the ELSE IF-block is empty. control H
transferred to the next END IF statement that has the same
IF-level as the ELSE IF statement. If the value of e is
false, control is transferred to the next ELSE IF, ELSE, or
END IF statement that has the same IF-level as the ELSE IF
statement.
Transfer into an ELSE IF-block is permitted.
If execution of the last statement in the ELSE IF-block does
not result in a transfer of control, control is transferred
to the next END IF statement that has the same IF-level as
the ELSE IF statement that precedes the ELSE lF-block.
11.8 ELSE Statement
The form of an ELSE statement is:
ELSE
11.8.1 ELSE-Block
An ELSE-Block consists of all of the executable statements
after the ELSE statement up to, but not including, the next
END IF statement that has the same IF-level as the ELSE
statement. An EL5E-block may be empty.
An END IF statement of the same IF-level as the ELSE
statement must appear before the appearance of an ELSE IF or
ELSE statement of the same IF-level.
11.8.2 Execution of an ELSE Statement
Execution of an ELSE statement has no effect. Normal
execution sequence continues.
Transfer into an ELSE-block is permitted.
11.9 END IF Statement
The form of an END IF statement is:
END IF
Execution of an END IF statement has no effect. Normal
execution sequence continues.
For each block IF statement, there must be a corresponding
END IF statement in the same program unit. A corresponding
END IF statement is the next END IF statement that has the
same IF-level as the block IF statement.
New Accessions
BROWN, G.D.: Fortran to PL/l dictionary: PL/l to Fortran dictionary.
Wiley, l975.
DAY, A.C.: Fortran techniques: with special reference to non-numerical
applications. Cambridge UP, 1972.
DOCK, V.T.: Fortran IV programming. 2nd edition. Reston, 1976.
DRAFT proposed ANS Fortran: developed by ANSI Committee X3J3.
Association for Computing Machinery, l976.
FORSYTHE, A.I. et al: Computer science: programming in Fortran IV with
Watfor and Watfiv. Wiley, i975.
HAMMOND, R.H., ROGERS, W.B. & HOUCK,B.: Introduction to Fortran IV. McGraw
Hill, l976.
MURRILLQ E.W., & SMITH, C.L.: Fortran IV programming: for engineers and
scientists. International Textbook Co., I968.
PETERSON, WM. & HULZ, J.L.: Fortran IV and the IBM 360. McGraw Hill, l971.
RAMDEN, H.A.: JCL and advanced Fortran programming. Elsevier, I976.
SILVER, G.A. & SILVER, J.B.: Simplified ANSI Fortran IV programming. Harcourt
Brace Jovanovich, I976.
SLATER, L.J.: Fortran programs for economists. Cambridge UP, l967.
VONELS, R.A.: Algol 60 and Fortran IV. Wiley, 1974.
Summary of a talk by Dr. G. M. Stacey on 'Experiences with
Fortran and a CODASYL Data Base System'
Since July 1975 Dr. Stacey has been developing and using Integrated Data
Management System (IDMS) on ERCC and NUMAC IBM 360/370 computers and more recently
on ICL 2900 series computers. The existing Schema, subschema and DML are all
COBOL oriented and there exists the problem of making the facilities available from
Fortran. For example, the User Work Area containing an IDMS record, which in Cobol
would map onto a 'Cobol record' has to be mapped to some area such as a Fortran array
elements of which are equivalenced to suitable Fortran variables. This requires a
knowledge of internal storage formats so that when data is stored and retrieved,
conversions of format are minimised. On IBM 360 for example, a sixteen character
item declared in a (Cobol) Schema as PICTURE X(l6) could be mapped onto a Fortran
INTEGER N(4) array.
During the evolution of a subschema and DML for Fortran, several major revisions
have occurred in their design. Making use of existing software as far as possible,
the simplest way of implementing a Fortran-like subschema was to write a preprocessor
to provide simple syntax checking and to output a standard IDMS (cobol) subschema -
which then is further checked and compiled by the Cobol subschema processor.
Similarly for data manipulation language (DML) three possible implementations
have existed. The user who is familiar with the internal workings, layout of tables
etc., of IDMS, might write on IDMS operation such as:
CALL IDMS(IDMSCT(lO), TDDBK(l), IOUTP(l), ----)
To the casual user this coding is rather obscure so a preprocessor was written along
the lines of the Cobol one to simplify the statements. Note that this was before
the existence of the CODASYL Fortran DBML Committee.
The Cobol-like statement:
OBTAIN NEXT 'IDENTIFICATION' RECORD OF 'OUTPATIENTS' SET provides a readable but
not very Fortran-like improvement.
The current syntax, closely follows that of the FDBMLC and the current
preprocessor would accept the Fortran-like statement:
* OBTAIN (NEXT, RECORD='IDENTIFICATION', SET='OUTPATIENTS')
The system is available on a trial basis and currently six applications,
including 2 student records, 2 health surveys, l animal breeding and l computer user
accounting system have been developed using IDMS and the Fortran interface. The
animal breeding system was a conversion of an existing special purpose program and much
of the code and data was reused without change.