2 INTRODUCTION

This note offers advice on how to write applications programs for Starlink, so as to:

Programming standards like this one are apt to be treated with contempt by battle-hardened user-programmers, at least those who have only ever used one sort of computer and have never been faced with having to look after someone else’s code. Even experienced professional programmers are sometimes reluctant to accept advice, in the confident belief that their own style constitutes the ideal balance between discipline and pragmatism. However, the lamentable standards of programming generally and Starlink’s objective of software sharing make some restrictions necessary and desirable. The requirement that a program should work is merely the beginning; the effort expended in distributing and supporting even the best software is well known to be much greater than that required to write it in the first place.

Several existing standards were consulted before the Starlink standard was drawn up. Compared with most standards, the Starlink one is rather liberal, omitting many of the rules in these others while adding comparatively few of its own.

The ‘rules’ in this standard are of variable importance, and range from mere stylistic suggestions to firm requirements. The relative importance of each rule is indicated by the following coding:

. Suggestion

! Strong recommendation

!! Rule which can sometimes be waived

!!! Firm rule

Any program submitted to Starlink (whether written by a Starlink programmer or a generous user) may be vetted for conformity with this standard, and any violations taken into account when deciding whether Starlink is to undertake distribution and support. Major violations will only be acceptable if there are good reasons. For example (a) the program may be of an interim nature and not require long-term support, (b) it may be so urgently required that this has to override all other factors, (c) while departing from the standard in detail, it is so disciplined and consistent that it can be accepted for support on its own terms.

Of course, this document does not pretend to be an exhaustive specification for writing Starlink application programs. More information on, respectively, the Fortran 77 language and general program design and coding, can be found in the following two books: