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.]




Appendix A

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.




Appendix B


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.





   Appendix C

  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.