RESULTS OF A BRITISH QUESTIONNAIRE ON FORTRAN 82
by David Muxworthy, on behalf of the BSI DPS/13 Fortran Working Group
Prepared for submission to the ISO ad-hoc meeting of Fortran experts,
London, November 27 - 30 1978.
Contents
1 Introduction
2 Discussion
3 Summary
Appendix 1 Questionnaire
Appendix 2 Results of Questionnaire
Appendix 3 Additional comments from respondents
Appendix 4 Distribution and analysis
Appendix 5 Membership of the Fortran Working Group
[Appendices 2 to 4 have not yet been digitized.]
1. Introduction
A working group of the programming languages committee (DPS/13) of the
British Standards Institute was charged with collating British opinion
for input to the ISO ad-hoc meeting on Fortran in November 1978. The
group made various efforts to publicize the ISO meeting and to invite
comment, including writing letters to the trade press, giving presen-
tations to the BCS Fortran Specialist Group and distributing a question-
naire. Some 300 - 400 copies of the questionnaire were distributed and
107 were returned; this paper summarizes the results.
It is not claimed that these results are representative of British op-
inion, if such a thing exists. Rather they represent a wider spread of
opinion on Fortran development than is possible within any particular
working committee.. Indeed for almost every question there is a full
range of answers from 'agree strongly' to 'disagree strongly'.
2. Discussion of the results
2.1 Introduction
The questionnaire is shown in Appendix 1, the detailed results in
Appendix 2 and the additional comments written on the completed quest-
ionnaires in Appendix 3. This section is intended only to introduce
the results; the reader must peruse appendices 2 and 3 to appreciate
the variety and range of opinions recorded.
It may be deduced from the results that many respondents have given
answers in accordance with their desires for language changes and have
not taken into account the practical difficulties (technical or political)
of meeting their wishes. A surprisingly high proportion (42%) of res-
pondents claimed to be familiar with Fortran 77 and the vast majority
(88%) thought that Fortran should remain an important language.
2.2 General considerations
Portability, universality, compatibility, simplicity and ease of use were
cited as strengths of Fortran and fears were expressed that these might
be lost in revising the language. Newer languages are already established
and a choice between them and Fortran may be made for each programming
job according to the task in hand.
As many as a third of respondents said that the standard should explicitly
prohibit extensions but the majority rejected this as impractical.
2.3 Program form
Perhaps surprisingly the two strongest wishes in this section were not
to have free-form source or longer names but to have graphical operators
(less than, greater than etc.) and to have a device to copy external
source into the program, e.g. the INCLUDE statement, However the latter
also provoked strong opposition on the grounds that this was an operating
system, not a Fortran, function.
The balance of opinion was in favour of embedded comments, longer iden-
tifiers and no change in the status of the blank character within.a
program; there was some sentiment for removing column significance and
for allowing multiple statements per line.
2.4 Control flow
The strongest consensus of opinion in the whole questionnaire was in
favour of more general loop constructs, with the need for a DO-WHILE
having a slightly higher precedence than a DO-UNTIL; even here one person
in twelve voted against. The question about Zahn loops was answered by
only a third of respondents and one of them suggested that if such loops
were introduced Fortran should change its name completely.
There was also very strong opinion in favour of a case statement with
labelled cases having a slight edge over cases numbered 1 to N. Internal
subroutines and functions were also favoured and with the probability of
these structures being introduced it is slightly surprising to find
opinion in favour of extending labels by introducing alphabetic labels.
There was however a majority against label variables.
Opinion was evenly divided on recursion, with a slight majority against
its introduction.
2.5 Data types, storage and expressions
Array-handling and bit-handling were the most-wanted items in this sec-
tion. There was some difference of opinion on how far the ability to
handle arrays as single entities should extend towards having full matrix
arithmetic. The enthusiasm for bit-handling and, to a lesser extent,
'dropping into assembler' was not immediately reconcilable with the desire
for portability.
There was definite interest in records (data structures) and in pointer
variables although it was noted that the latter can make error control
much more difficult to effect.
In the three questions on input-output there was some requirement for
NAMELIST, little for asynchronous I/O and positive antipathy to COBOL-
like file access.
Additional comments showed minority requirements for such things as
packed-decimal data type, keyed-file I/O and routines to unpack real
numbers.
2.6 Environments
There was quite strong opinion in favour of standard diagnostics and
standard listing output. The questions on conditional compilation and
internal files were probably interpreted differently by different res-
pondents, but the principles were approved. Again there were those who
felt very strongly that these matters were no concern of the Fortran
standard.
2.7 Specialist requirements
Most specialist requirements got a luke-warm reception although relat-
ively few would object to them being in a module and accessed through
a subroutine call. Of the requirements listed 'numerical analysis' and
'graphics' had most support and 'report generator' had least. The ob-
jections were made quite strongly on the grounds that Fortran was a
general-purpose language and again portability, clarity and efficiency
were at stake.
Other specialist requirements written in were in the fields of data
types, sorting and statistics.
2.8 Other issues
Of the issues listed, specifying the character set got most support,
followed by enquiry functions about the environment and standardized
interrupt handling. There was not much enthusiasm for a macro pass or
for special pre-processor linkages.
3. Summary
It must be recorded that there is a real fear that Fortran, the work-
horse of scientific computing, the language commonly used by research
workers who are 'amateur' programmers, the only practicable language
available to program writers who want their software to be widely
available, the language in which there has been incalculable investment,
will be damaged by radical development and there is a body of opinion
which is in favour of only a minor revision of Fortran 77. There are
indeed those who think that Fortran 77 itself threatens the advantages
of using Fortran.
That said, there is evidence of a strong desire for such more modern
language features as loop and case constructs and internal functions.
The traditional pragmatic Fortran ethos exhibits itself in the desire
for array-handling and bit-handling facilities and also in the desire
for a fixed character set. The wish to be able to write down programs
more easily rather surprisingly leads to a vote for the INCLUDE facility
and graphical operators rather than for free-form source and longer
names.
These items on the questionnaire were the ones on which opinion was
most positive. It was most negative on general label variables and on
the proposal to make blank a significant character in a program.
If it is possible to sum up such a variety of opinion, the advice to
the X3J3 committee would be, "Make haste slowly".
4. Acknowledgements
Thanks are due to all members of the BSI DPS/13 Fortran Working Group
and especially to Anton Walter who composed the final version of the
distributed questionnaire.
[Note: 'Y' = In favour of
'F'= Should be optional, but fixed definition if available
'N'= Opposed to]
Extreme Scores with 'F'regarded as 'Y'
(This may be interpreted to mean features in the language as a whole,
not necessarily in the core)
1.99 More general loop constructs?
1.93 WHILE condition DO ... ?
1.79 Case statements?
1.78 Special array-handling facilities?
1.70 DO .... UNTIL condition?
1.64 Bit pattern operators?
1.55 Bit packing specifications?
1.52 Character set specifications?
1.46 Graphic operators, e.g. ><?
1.44 Labelled cases?
1.42 Access to external source, e.g. INCLUDE?
1.42 Internal functions?
-0.29 General label variables?
-0.77 Recursion only for internal subroutines?
-1.00 Blanks should be significant?
Extreme Scores with 'F'regarded as 'N'
(This may be interpreted to mean features specifically in the core)
1.87 More general loop constructs
1.64 WHILE condition DO ... ?
1.62 Case statements?
1.36 DO .... UNTIL condition?
1.24 Special array-handling facilities?
1.22 Standard diagnostics?
-0.56 Report generator features?
-0.59 Special pre-processor linkages
-0.87 General label variables?
-1.16 Recursion only for internal subroutines?
-1.33 Blanks should be significant?
Extreme Percentages
Y
87 More general loop constructs? 22 Blanks should be significant?
83 WHILE condition DO ... ? 22 Recursion only for internal subroutines?
83 Case statements? 30 Special pre-processor
79 DO .... UNTIL condition? 31 General label variables?
78 Special array-handling facilities? 32 Report generator facilities?
73 Standard diagnostics? 35 Long identifiers (no explicit limit)?
72 Bit pattern operators? 36 Real-time features?
N
70 Blanks should be significant 8 Access to external source, e.g. INCLUDE?
66 Recursion only for internal subroutines? 8 More general loop constructs?
53 General label variables? 9 WHILE condition DO .... ?
46 Long identifiers (no explicit limit)? 9 Special array-handling facilities?
44 COBOL-like file access statements? 10 Graphics operators e.g. >< ?
44 Recursion as standard? 11 Case statements?
41 Recursion by request? 13 Internal files
F
36 Real-time features? 0 Long identifiers (explicit number e.g. 10)?
35 Database features? 5 Standard editor?
34 Simulation features? 5 Standard diagnostics?
33 Report generator features? 5 More general loop constructs?
30 Access to external source, e.g. INCLDE? 7 Remove column significance?
30 Special pre-processor linkages
Appendix 5
MEMBERSHIP OF THE BSI DPS/13 FORTRAN WORKING GROUP
Members: P.A. Clarke (Rothamsted Experimental Station)
D.T. Law (National Computing Centre)
B.L. Meek (Queen Elizabeth College, London)
J.D. Murchland (University College, London)
D.T. Muxworthy (University of Edinburgh) (Convener)
A.J.H. Walter (Rutherford Laboratory)
A. Wilson (International Computers Ltd)
J.D. Wilson (University of Leicester)
Members took part as individuals and opinions expressed should not
be attributed to their employers.
Meetings: The group meet on the following dates
18 May 1978
14 June 1978
12 July 1978
6 September 1978
12 October 1978