BRITISH COMPUTER SOCIETY - FORTRAN SPECIALIST GROUP
Minutes of Meeting held at BCS Headquarters on Monday 2nd February 1981
Present: G. Harding (Chairman) ECMWF
M. Appleford Ove Arup Partnership
R. Bentley N.E.R.C.
O. Branley London Boro' Redbridge
P. A. Clarke Rothamsted Experimental Station
P. Croft Unilever Computer Services
J. L. Dyke Huntingdon Research Centre
E. Gorczynski B.P. Research Centre
S. Hague N.A.G.
D. J. Holmes Rolls Royce Ltd., Bristol
P. Jamieson Scottish Widows
M. Lee R. Watson & Sons
D. Muxworthy Edinburgh University
K. Normington Coventry Polytechnic
M. Nunn C.C.T.A.
J. Roberts-Jones Liverpool City Council
G. A. Ruscoe O.L.B.S.S. Ltd.
J. Stewart SPL International
D. M. Vallance Salford University
T. G. van Raalte M.O.D.
A. Wilson ICL
J. D. Wilson (Secretary) Leicester University
l. Apologies
An apology for absence was received from Mr. P. D. Bond, Philips Industries.
2. Minutes of Previous Meeting [20 October 1980]
Item 7, line 2: replace National Algorithms Group by Numerical Algorithms
Group. The Minutes were then accepted.
3. Matters Arising
A few members reported that they had not received their copy of the Minutes
or the Agenda. The secretary agreed to check the mailing list with BCS
Headquarters and asked members to inform him of any problems they experience
with distribution.
4. Report from January Meeting of X3J3 - Berkeley
D. Muxworthy reported on the main areas discussed at the recent meeting.
(i) John Reid gave a presentation on Groups and Internal Procedures. The
Proposal has the following aims:
- replacement for statement function, extended range of DO and ENTRY.
- permit a single block of code to be executed in several places without
destroying "clean" structure.
- data-sharing and name-hiding facilities for procedures that are private
to a collection of procedures.
- flexible mechanism for a user to provide code needed during execution
of a library "black-box" subroutine.
- binding together in a package a set of procedures designed for a
single task.
- keep as simple as possible.
An INHERIT statement is used define global or common variable names; all
those not defined are assumed local. Nesting of internal Procedures is
allowed (any number of levels). An Internal Procedure may be called from
outside the host subroutine if it is labelled by the word ENTRY.
e.g. SUBROUTINE HOST(X)
<Code of host using variable Y>
ENTRY INTERNAL FUNCTION MEMBER(A)
INHERIT X,Y
<Code of member>
END INTERNAL MEMBER
END
The syntax is illustrative only.
(ii) Conformity Module This was initially assigned to Subgroup l0 (Core plus
Modules) for detailed evaluation. The committee was unhappy about calling
it a module: it should simply be referred to as the Conformity proposal.
The following proposals were put to the committee by D. Muxworthy.
Proposal l: That at a mathematical domain error (divide by zero negative
square root etc.) execution of the program should terminate
unless the program has explicitly made allowance for an
alternative continuation by means of some event-handling device.
Straw vote: 19 for - 8 against - 8 undecided
(objections were (a) efficiency, (b) will be better handled
by hardware soon)
Proposal 2a: That a standard - conforming processor must have the ability
to indicate whether or not the statements of a program unit
conform syntactically to the standard.
Straw vote: 25 for - l against - 9 undecided
Proposal 2b: That the option to select conformance shall be expressed in
the same manner as the option to select old-style or new-style
program source (new-style being free-form i.e. significant
blanks).
This proposal was withdrawn.
D. Muxworthy was asked where the Conformity Proposal should go from here.
There are two alternatives: either a formal task group controlled by X3J3 s
could be set up; or some informal group could carry on the work. There
seems to be little advantage in setting up a task group and no indication
that such a group would carry more weight with X3J3. There is no evidence
of much positive support from the rest of Europe. It was suggested that
the BSI group DPS/l3/WG6 be re-convened to develop the proposal. It was
also agreed that the BCS should continue to be pressed for financial support
to send someone to X3J3 meetings.
(iii) A formal vote was taken on the proposal that procedure calls be extended
to include keyword references, default values and entity-oriented
declarations (i.e. PARAMETER, COMMON, DIMENSION be combined):
formal vote 24-3.
(iv) A formal vote was also taken on the proposal to add a USING statement as
the means of identifying a module to be used: formal vote 19-7.
(v) The ECMA proposal to allow a decimal comma rather than a decimal point in
I/O formatted data was given a straw vote:
6 for - 16 against - l3 undecided.
(vi) A comprehensive Macro facility should be added: formal vote l8-8.
(vii) The concept of variable length character strings has been agreed in
principle: the form has yet to be finalised.
J. Wilson expressed concern at the statement that independent compilation
of units will not be possible with the next Fortran standard. However it appears
that separate compilation will be possible; independent compilation, strictly
speaking, is not possible with current Fortran as COMMON variables can be changed
in different units.
The next meeting of X3J3 will be at Austin, Texas in March, followed by
Toronto in May.
5. Fortran Forum
D. Muxworthy said that 9 members of X3J3 have indicated they will attend
Fortran Forums to be arranged in London and Edinburgh in October 1981. The
provisional dates are: London, Monday 12th October, Edinburgh, Wednesday 14th
October. The Edinburgh forum will be organised by D. Muxworthy and D. Marwick. A
small committee is being set up to organise the London forum - anyone willing to
help is asked to get in touch with the secretary as soon as possible. It is
suggested that the first part of the forum should deal with users' experience
with FORTRAN 77; the second with presentations from ANSI on FORTRAN 8X with
plenty of time for discussion. Presentations from non-ANSI speakers will be
sought.
6. BCS Business
No news has been received on the status of BCS 81: chairman to investigate.
7. Any Other Business
(i) The following press release has been received from AFIPS.
1982 will mark the 25th anniversary of the delivery of the first FORTRAN
compiler from the group at IBM which was led by John Backus. To mark
this occasion the History of Computing Committee of AFIPS has chosen the
topic of FORTRAN as the subject of the 1982 Pioneer Day Activities at
the National Computer Conference to be held in New York in May 1982.
Dr. J.A.N. Lee of Virginia Tech has been chosen as the chairman of the
organizing committee. (Dr. Lee is currently on leave at the Santa Teresa
Laboratory of IBM.)
Included in the preparatory activities of the committee is the collection
of historical anecdotes and stories about the development and use of
FORTRAN during the early days (say up to 1967) and in particular the history
of FORTRAN in non-IBM environments. It is also hoped to develop an archive
of FORTRAN related materials which would be deposited with the Charles
Babbage Institute; to this end, the committee would appreciate knowing of
the whereabouts of appropriate materials. Please forward stories, anecdotes,
names of pertinent people, locations and descriptions of potential archival
materials etc. (please use your imagination) to:
J.A.N. Lee
IBM Corporation, M43/D22,
555 Bailey Avenue,
SAN JOSE CA 95150.
(ii) The preliminary results of a FORTRAN 8X questionnaire sent out to the
European high energy physics community by M. Metcalf, CERN have just been
received. The report is reproduced, by permission, as Appendix A of these
minutes.
8. Next Meeting
The next meeting, the AGM, will be held on Monday 6th April 1981 at
BCS Headquarters. In the afternoon Alan Wilson, ICL will lead a discussion
on array processing proposals for FORTRAN 8X.
---------------------------
Steve Hague's talk on "Tools for Numerical Software Engineering"
is reproduced as Appendix B of these minutes.
FORTRAN 8x QUESTIONNAIRE (Preliminary results)
An article summarizing the proposed revisions to FORTRAN 77 was pub-
lished in the November issue of the CERN Computer Newsletter, which is
circulated among high-energy physicists engaged in software activities
throughout Europe. A total of 52 replies to the accompanying questionnaire
has been received, and the results are summarized below.
1. No. of replies : 52.
2. Repondants were mainly European physicists, with a few replies from
American physicists and from systems programmers.
3.
a) 6 repondants expressed the view that FORTRAN should remain un-
changed
b) 3 repondants (only one of them a physicist) thought that in the
long-term ADA should be adopted for high-energy physics program-
ming.
c) Respondants were asked to express their general opinion on the
proposals, and to state whether they should be proceeded with
quickly or slowly. The pattern of replies is shown in Table I,
from which it may be concluded that the proposals meet with gen-
eral approval, and that there is considerable support for moving
fairly quickly.
Proposals are -------------- Revision should be carried out |
Excellent |
Acceptable |
Poorly thought-out |
Quickly |
8 |
24 |
|
Slowly |
|
10 |
2 |
Table I
4. Respondants were asked to list the three most useful/interesting
items from the list of 20 described in the article, and also the
three least interesting/useful. In fact, many of the negative votes
seemed to imply disapproval rather than lack of interest, and the
voting pattern is shown in Table II. (Some replies contained fewer
or more than the six votes requested).
Item |
Interesting/ useful |
Not Interesting/ useful |
Total |
Array processing |
28 |
3 |
31 |
Recursion |
2 |
22 |
24 |
Source form (including longer names) |
13 |
7 |
20 |
BIT data type |
17 |
2 |
19 |
Data structures |
17 |
1 |
18 |
Looping construct |
9 |
9 |
18 |
Macros |
11 |
4 |
15 |
IMPLICIT NONE |
2 |
13 |
15 |
GLOBAL |
12 |
2 |
14 |
Dynamic Storage |
9 |
3 |
12 |
CASE |
8 |
4 |
12 |
Enhanced CALL |
S |
4 |
9 |
Significant blanks |
2 |
7 |
9 |
GROUP |
4 |
4 |
8 |
Extended character set |
4 |
3 |
7 |
Type CHARACTER extensions |
6 |
- |
6 |
Internal Procedures |
2 |
4 |
6 |
Precision Specification |
3 |
2 |
5 |
Environmental Enquiry |
3 |
2 |
5 |
I/O facility extensions |
1 |
- |
1 |
Total |
159 |
97 |
254 |
Table II
It is possible to rearrange this voting pattern in a way which places each
item on a scale of concern (i.e. total no. of votes) against the distribu-
tions of votes between interest and lack of interest (or disapproval). I
have performed a rearrangement in this manner, shown in Table III.
Degree of approval ------------------ Scale of concern |
Approve (#positive/ #negative >2) |
Undecided |
Uninterested/ disapprove (#negative/ #positive > 2) |
Indifferent (1-9 votes) |
I/O facility extension Type CHARACTER extensions |
Precision specification Extended character GROUP Environmental enquiry Enhanced CALL |
Internal Procedures Significance of blanks |
Moderate concern (12-15) votes) |
CASE Macros Dynamic storage GLOBAL |
|
IMPLICIT NONE |
Strong concern (18-20 votes) |
Data structures BIT data type |
Looping construct Source form |
|
Overwhelming concern (> 23 votes) |
Array processing |
|
Recursion |
Table III
The following points are of particular interest:
i) the overwhelming support for array processing;
ii) the surprising number of negative votes for the proposed
looping construct;
iii) the lack of significant interest in such hotly discussed
items as precision specification, environmental enquiry and
internal procedures;
iv) the marked resistance to the introduction of recursion;
v) the complete lack of interest in I/O is probably due
to the fact that physicists' requirements are either
simple, or handled by utilities written by specialists.
Of course, the classification into Table III is to some extent a
personal one, and replies may also have been partly influenced by the pre-
sentation in the explanatory article, but the overall trend is, I think,
clear.
5. A request for comments on the proposals brought the following edit-
ed replies (some of them were up to three pages long):
i) requests for environmental enquiry to extend to the clock,
date, machine type, CP time left or used, etc.;
ii) comments that the question of internal procedures versus
macros should be clarified;
iii) pleas for more advanced types of dynamic storage;
iv) requests for the ability to link data structures;
v) worries about the efficiency of precision specifications;
vi) requests for more array operators, e.g. TRACE, TRANSPOSE,
ORDER etc.;
vii) worries about the implications of the possible loss of
independent compilation;
ix) strong emphasis that FORTRAN must remain an efficient
execution language.
6. A request for comments on items not mentioned in the article re-
sulted in the following edited replies:
i) a request for a wider variety of loop constructs, e.g.
DO..WHlLE..UNTlL;
ii) many requests for alphanumeric labels;
iii) comments that FORTRAN 8x is no longer 'FORTRAN';
iv) requests for exception handling;
v) pleas for meaningful diagnostics and better run
time support.
In summary, I believe the number of replies and the seriousness of the
answers mean that the testing of opinion was both a worthwhile exercise,
and presents a reasonably accurate picture of the attitudes of the high-
energy physics community.
M.Metcalf
CERN, 1211 GENEVA 23, Switzerland.
Tools for Numerical Software Engineering
S.J. Hague and B. Ford
1. Introduction
Software tools in the context of this paper are programs designed
to assist in the development, testing, implementation, maintenance and
distribution of computer software. (These tools are sometimes referred
to as programming or mechanical aids). This paper deals with the
subject of software tools that operate on FORTRAN software, though
equivalent tools exist in some cases for other high-level applications
languages. Few non-trivial programs, once completed, remain entirely
unaltered throughout their computing life. In the next section we consider
why it is necessary to analyse and modify numerical software and the
benefit of mechanising such processes. Then we summarise software tools
in use by numerical software groups; the experiences of the Numerical
Algorithms Group (NAG) in using some of them; and in the final section
describe the recently formed Toolpack project.
2. Manipulation and Mechanisation
Before discussing software tools in detail, we must provide answers
to two basic questions which might be posed by the 'lay user' or perhaps by
the numerical analyst who suspects that his more software-orientated
colleagues are attempting to create a major new branch of computer science
with no real need for it. These basic questions are:
(i) why is it necessary to manipulate
numerical software?
(ii) does the mechanisation of that
manipulation process bring
significant advantages?
2.1 Why May Changes Be Required?
Answering this question poses little difficulty particularly if one
has witnessed the development of NAG from a single machine range library
project to its present state in which there are implementations of the
NAG FORTRAN Library on 28 distinct machine ranges. Within each
implementation there may be sub-implementations for particular computing
systems, e.g. on the CDC 7600, there are source text differences between
the Small Core Memory and Large Core Memory implementations. Similar
problems are faced by other groups who are also interested in developing
and maintaining high-quality software on many machines. Whether for
reasons of uniformity, portability or refinement, it is frequently necessary
to alter a body of source text either on a small scale or throughout an
entire suite of programs. Below are summarised a number of reasons which
might precipitate such changes:
- correcting a coding error either of an
algorithmic or linguistic nature.
- altering the structural property of
the text e.g. imposing a certain order
on non-executable statements in FORTRAN.
- standardising the appearance of the
text.
- standardising nomenclature used e.g.
giving the same name to variables
having the same function in different
program units.
- conducting dynamic analysis of the text
(e.g. by planting tracing calls).
- ensuring adherence to declared
language standards or subsets thereof.
- changing the operational property of
the text (s.g. changing the mode of
arithmetic precision).
- coping with the arithmetic, dialect
and other differences between computing
systems.
- altering similar algorithmic
processes and similar software
constructs in large collections of
programs.
2.2 What are the Benefits of Mechanisation?
Several published papers have eloquently argued the case for the
mechanised approach to program manipulation. Standish et al [2]
discuss the merits of improving and refining programs by means of an
interactive program manipulation system. Perhaps more immediately relevant
to numerical software, a paper by Boyle et al [3] discussed the advantages
of automating multiple program realisations; that is, deriving by mechanical
means, several members (realization) of a family of related programs from a
proto-type or generalised program.
The main arguments presented for mechanisation usually concern two
factors: economy and reliability. If numerous changes are to be repeatedly
made to a large body of software, then the use of a mechanical aid offers the
prospect of considerable savings in time and effort. Presumably some poor
programmer is relieved of performing what would be a tedious and slow manual
task and can be employed on some activity with a greater intellectual stimulus.
The fact that the changes are made mechanically means that we can at least
expect consistency. It may also be that the mechanical nature of the
alterations are amenable to at least an informal (if not formal) proof of
correctness for the transformed program. The study of correctness-preserving
transformations is an active field of research, on the basis of which, some
developed form of a TAMPR-like system may eventually lead to software tools
whose operations are demonstrably reliable.
In the light of the experience of the NAG Central Office in using
automated aids, our overall view would be that the use of such aids can
indeed lead to greater economy and enhanced reliability. We would add two
notes of caution, however. The first is that programming projects in general
are prone to take longer than expected. In an organisation of limited
resources, practical aims and subject to the day-to-day pressures of both
academic and commercial life, the decision to undertake the design and
implementation of a new software tool should be taken with perhaps more
caution than in, say, a research establishment. A second point of concern is
that the use of a software tool may lead to over-reliance upon its effective-
ness and so to a temptation not to check the output software closely. After
a tool has been successfully operational for sometime, complacency can arise.
If the tool is applied to data (i.e. programs) which contravene some un-
documented assumption made by its developers, then what we must hope for is
that the output is unmistakeably wrong even at a casual glance. If such a
contravention caused a somewhat obscure malfunction to occur, however,
incorrect coding may be generated without it being noticed.
3. Software Tools in use
To indicate the kinds of software tools in use, particularly by
numerical software groups, we give below a list of categories into which
tools might fall:
dialect verifiers (e.g. PFORT)
static analysers
data flow analysers
control flow analysers
program verification tools
test data generators
formatters (e.g. POLISH)
variant extraction |
precision changes | portability aids
value substitution |
structuring tools
language translators
probe insertors
syntax-driven transformers
plus general text editors, string processors ...
As examples, we summarise the properties of widely-used tools from two
of the above categories:
- PFORT ([4]), produced by Bell Laboratories is a language dialect
verifier. It checks a program for conformity to the PFORT
Portable FORTRAN) dialect of ANS-66 FORTRAN, and also generates
information about program entities in tabular form.
- POLISH ([5]) is a FORTRAN-tidying program developed by the
University of Colorado at Boulder. Its actions are to
- recalculate statement labels into a specified order,
- recalculate FORMAT labels into a specified order,
- adjust spacing in lists, comments and expressions
- indent the body of DO-loops
- terminate each DO-loop with its own CONTINUE
- move FORMAT statements to the end of a program unit.
Though individual tools such as PFORT and POLISH are useful, well-
documented and easy to implement, the overall state of software tools for
applications programming is not satisfactory. Apart from the problems of
learning of and obtaining these independently-developed tools, the following
difficulties may also arise:
- the software tool developed on one system might be
difficult to mount on another,
- the tool from an outside source may not be properly
maintained,
- such a tool is likely to have a different user-inter-
face from that of others from different sources,
- its effect may not be easily adjustable,
- its actions may be incompatable with other tools,
- it may rely on undocumented assumptions about the
input program,
- each tool of any sophistication must perform some
analysis of the program being processed. Much of
that analysis is common to many tools but each
performs it separately.
4. The use of Software Tools in NAG
4.1 The Background to NAG
The main aim of the Numerical Algorithms Group (NAG) project is the
development and distribution of a numerical and statistical algorithms
library. There are three language versions of the NAG Library; Algol 60,
Algol 68 and FORTRAN. The most widely-implemented and used of these three
is the FORTRAN version, Mark 8 of which ([6]) contains over 460 user-
callable routines. These routines plus their auxiliaries and associated
test software comprise over 200,000 source text records, and new material
will be added at later Marks.
Thus, the overall software management task faced by NAG is the provision
of a large and still expanding Library which is available in several
languages and on many machine ranges; there are over forty, distinct,
compiled and tested implementations of the NAG FORTRAN Library, for
example. Manpower for this considerable undertaking is provided by a
combination of full-time personnel and voluntary specialists at a number
of institutions in the United Kingdom and elsewhere. Most of the full-
time personnel work in the NAG Central Office which is responsible for the
overall coordination of the project's activities. The main technical task
of the Central Office is the verification and standardisation of
contributions to the NAG Library, culminating in the assembly of a further
Mark (edition) of the Library, which is then passed on for formal certification
under various computing systems. The increasing use of mechanical aids by
the Central Office in its library assembly and processing work is summarised
below. For a more extensive description of the technical functioning of the
NAG organisation as a whole, see [7].
Interest in mechanisation began to grow within NAG soon after the project
started in 1970. The Library was originally intended for a single machine
range (the ICL 1906A) but from 1972, other implementations were launched,
and the need for a multi-variant source text management scheme was perceived.
This led to the development of the NAG Master Library File System ([8]).
With the rapid growth of other machine-range versions, it became apparent
that, as well as having the means to store variants, it was even more
important to anticipate and minimise differences between implementations, i.e.
to remove those variations wherever possible. From its beginning, NAG had
intended to use a subset of the ANS-66 standard for its FORTRAN Library but it
became clear that adoption of a dialect intersection policy in name only was
not enough; conformity needed mechanical verification. The importance of
relegating and isolating machine dependencies was appreciated and the
desirability of mechanising other, unavoidable changes (such as precision
transformation) was also recognised, as were the benefits of a uniform
structure and layout of coding throughout the Library.
Thus a major standardisation exercise, called Mark 4.5, was carried out
in 1974/5 to make the NAG Library software more portable and more uniform
in structure and layout. (At the same time, documentation was revised so
that it could support an arbitrary number of implementations.) From Mark 4.5
onwards, the Central Office started to use software tools such as POLISH and
PFORT mentioned earlier, and testing aids such as BRNANL ([9]). It also
developed a precision transformer, APT, and a standardisation tool, DECS,
which uses the output from PFORT to introduce explicit declarations for all
variables into a program (and can revise the order of non-executable statements
at the same time). The following diagram indicates the major processing
steps in the Central Office procedure for software processing. A few
explanatory comments may be required:
- the verification stage is primarily linguistic;
algorithmic validation has taken place at an earlier
stage
- several minor standardisation processes to introduce
NAG conventions may be applied between DECS and
POLISH
- in the testing phase, the purpose of the test runs
on machines X, Y, ... is to gauge the extent to
which test results may differ. This is in anticipation
of the formal Library implementation activity later on.
To summarise experience within the NAG Central Office, our view is
that without partial mechanisation, the task of Library assembly and
processing would be extremely tedious, the code itself would be less
consistent, and implementation on different machine ranges much more
difficult - a point borne out in practice when pre- and post- Mark 4.5
implementations periods are compared. We are interested in improving our
existing tools to make them of use to our own collaborators but also see
the need for a more broadly-based and concerted effort to make these and
other useful tools more generally available. For this reason, we support
the aims of the Toolpack project.
5. The Toolpack Approach (1980)
5.1 Background to Toolpack
In the third section of this paper, we drew attention to some of the
unsatisfactory aspects of software tools in general. The recently-formed
Toolpack project has set out to remedy those defects and may start to have a
significant impact in 3 to 4 years time. It is a collaborative effort
whose aim, according to the Toolpack prospectus ([10]), is "to produce a
systematized collection of software tools to facilitate the development and
maintenance of FORTRAN programs." The potential Toolpack user could be any
FORTRAN programer but the proposed facilities are more likely to have
immediate appeal to the programming professional or the regular (but non-
computer specialist) FORTRAN user engaged in numerical computation.
The reasons for starting a project with the aims and structure of
Toolpack can be summarised as follows:
- numerical computation still represents a significant
proportion of all computer use, and FORTRAN is by far
the most widely used language for numeric applications
(and is extensively used in non-numeric areas too).
Toolpack is therefore addressing a potentially vast
audience,
- software developers such as NAG have come to appreciate
the value of software tools both for their own work and
for the benefit of computer users generally. There is
also some experience of collaborative activities
amongst mathematical software groups,
- research into software engineering has matured to the
point where an integrated ensemble of tools seems
feasible, and the integration attempt would in itself
be a worthwhile research effort.
5.2 Toolpack Development Plan
The current intention of the Toolpack group is to carry out a three year
development plan which, if successful, could lead to the general availability
of facilities sometime in 1984. The plan contains three phases, the first of
which is already underway (see section 5.3.):
Phase 1: Determination of the functional capabilities
to be provided by Toolpack and of the initial
packaging and integration environment.
Phase 2: Implementation and documentation of tool
components within that environment.
Phase 3: Packaging of the implemented tool components,
testing and refinement.
The definition of packaging environment includes consideration of:
- collection of basic tools (such as parsers, lexers,
associated table managers).
- input/output primitives,
- specification of the subject language (i.e. the
language of the programs upon which Toolpack will
operate).
- specification of the implementation language (i.e. the
language in which Toolpack tools will be written),
- user/Toolpack interface requirements,
- inter-tool communication conventions.
Investigation of these and other considerations is proceeding. It has
already been decided that the principal subject language will be FORTRAN 77
but it may be possible to allow other FORTRAN variants too - on input at
least - by concentrating the task of dialect recognition in the front-end
lexer/parser rather than in the processing tools themselves. The implementation
language has been defined to the extent that whatever language Toolpack
participants use initially, it must map into FORTRAN 77. The basic
principle of construction is uncontentious, the higher-level tools should be
built using lower-level modules where possible. Emphasis on "data-hiding",
i.e. not being specific about the exact details of data transfer and structure,
is also appropriate, particularly in the initial design stages. A point
under active discussion, however, is concerned with the user interface; should
an attempt be made to build an integrated information management system
which is directive-driven by the user, or should the less ambitious goal of
loose confederation of tools be pursued? Under the latter arrangement, the
user would drive each tool directly.
5.3 Candidates for Inclusion in Toolpack
The following tools are under examination during Phase 1 and may be
included in the final set of facilities chosen for release. Other tools not
in this list may also be added. In most cases, the tools already exist in
a pre-Toolpack form and if chosen for inclusion will be reconstructed
according to the construction principle adopted. It should not necessarily
be assumed that such existing tools are currently available or suitable for
general release. Interested readers are advised to contact the individual
developers concerned, via the Toolpack coordinator (see next section).
Tools under review include:
1. DAVE: a static data flow analyser.
(The University of Colorado)
2. POLISH: a formatter.
(The University of Colorado)
3. BRNANL: a dynamic test probe inserter.
(The University of Colorado)
4. BIGMAC: a FORTRAN language macro definer/expander.
(The University of Colorado)
5. FSCAN/CLEMSW: a tokenizer/parser generator.
(The University of Colorado)
6. A static semantic analyser/error detector.
(The University of Colorado)
7. A floating point data generator.
(The University of California at Santa Barbara)
8. FLOCHK: a structure and programming convention
checker.
(The University of California at Santa Barbara)
9. IPUCHK: an inter-program-unit checker based on the
PFORT verifier.
(The University of California at Santa Barbara)
10. STRUCT: a control flow structor.
(Bell Laboratories and The University of California
at Santa Barbara)
11. The PFORT Verifier: a portability convention -
checker.
(Bell Laboratories)
12. The EFL Compiler: a translator for an extended
FORTRAN language.
(Bell Laboratories)
13. FORTLEX: a FORTRAN lexer.
(Bell Laboratories)
14. APT-X: a precision type converter.
(The Numerical Algorithms Group)
15. A FORTRAN-Intelligent Editor.
(The Numerical Algorithms Group)
16. Template Processors.
(Purdue University)
17. TAMPR: a program transformer.
(Argonne National Laboratory)
18. A set of basic tools: lexers, parsers, symbol
table manipulators etc.
(Jet Propulsion Laboratory, Pasadena)
5.4 General Information about Toolpack
The participating institutions in the Toolpack project at the present
time are:
Argonne National Laboratory
Bell Laboratories
Jet Propulsion Laboratory
International Mathematical and Statistical Libraries Inc.
Numerical Algorithms Group Limited
Purdue University
University of California at Santa Barbara
University of Colorado at Boulder
The project has funding support from the National Science Foundation
and the U.S. Department of Energy.
For further information about Toolpack, readers should contact the
Toolpack project coordinator:
Dr. Wayne R. Cowell
Applied Mathematics Division (Bldg.221)
Argonne National Laboratory
9700 South Cass Avenue
Argonne
Illinois 60439
U.S.A.
(Telephone: (312) 972 7164).
6. Conclusions
We have described how NAG's own experience in using software tools has
led to our involvement in the formation of Toolpack. Our belief is that if
Toolpack succeeds in its aims, the programming environment provided for the
FORTRAN user will be considerably enhanced. That environment for most users
at present consists largely of a FORTRAN compilation system and a general
purpose system text editor. Toolpack offers the prospect of a number of
additional supporting facilities which will make FORTRAN software easier to
develop and maintain.
7. References
[1] HAGUE, S.J.
"software Tools", In Numerical Software -
Needs and Availability,
Ed. D.A.H. Jacobs, Academic Press, pp 57-79, 1979
[2] STANDISH T.A., KIBLER,D.F. and NEIGHBOUR J.M.
"Improving and refining programs by program
manipulation,
Proceedings of ACM annual conference,
Houston, Texas, pp 509-516, 1976
[3] BOYLE J.M. and MATZ M.,
Automating multiple program realisation,
Proceedings of Computer Software Engineering Symposium,
New York., 1976
[4] RYDER, B.G.
The PFORT Verifier, Software Practice and
Experience,
No.4, pp 359-377, 1974
[5] DORRENBACHER J., PADDOCK D., WISNESKI D. and
FOSDICK L.D.
POLISH - A FORTRAN Program to Edit FORTRAN Programs,
Department of Computer Science Report #CU-CS-050-74,
University of Colorado at Boulder, 1974.
[6] The NAG FORTRAN Library Manual, Mark 8
Published (1980) by Numerical Algorithms Group Ltd.,
7 Banbury Road, Oxford, U.K.
[7] FORD B., BENTLEY J., DU CROZ J.J. and HAGUE S.J.,
Preparing the NAG Library,
This Volume.
[8] RICHARDSON M.G. and HAGUE S.J.
The Design and Implementation of the NAG Master
Library File System,
Software - Practice and Experience,
Vol.7 No.1, pp 127-137, 1977.
[8] FOSDICK L.D.
BRNANL - A FORTRAN Program to Identify Basic
Blocks in FORTRAN Programs,
Department of Computer Science Report #CM-CS-040-74,
University of Colorado at Boulder, 1974.
[9] COWELL W.R. and MILLER W.C.
The Toolpack Prospectus
Argonne National Laboratory, Applied Mathematics
Division,
Report TM-341, 1979.
-------------------------------------------------------------------
NAG Central Office
7 Banbury Road
Oxford OX2 6NN
(Tel: (0865) 511245)
October 1980