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



questionaire page 1


questionaire page 2



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