It is intended to issue a basic version of SPROGS by 30 March. This will not include such features as multiple sequence list entries, variables or library facilities, but will enable users to get some idea of the system.
The following work will need to be done before this date.
A user manual, giving details of the basic system, will be prepared from the complete SPROGS manual by RET. All references to facilities not yet implemented will be removed.
It is necessary to regularise the COMMON blocks used in the system to save lower data storage, and to avoid name clashes with user defined blocks. RET has collected these into three basic blocks, and will mend the routines. It is suggested that only references to the COMMON blocks be inserted in the source files, and that a pre-processing run is used to insert these blocks before compilation. In this way, altering COMMON will not require an extensive edit.
Currently the SPROGS routines are collected together in a haphazard order, and it is necessary to load all of them for each job. Re-ordering this library should allow only those routines required to be loaded.
A suggested ordering is
SPROGS high level routines Display routines in descending priority order INTERP OBEY Execution routines derived from display routines Basic house keeping
RET will do this ordering.
It is essential that a good simple software font is included. PRH is currently designing a font on the PDP15, which will be included.
The SPROGS macro will have to be reorganised to provide all useful user facilities.
It has been decided that the following high level routines should be available in the original system.
Shaded regions Hardware character plot at given X, Y (this is one routine to perform SETXY PLOT) Vertical TEXT printing Number printing Hardware font Standard region setting routines and Standard device selection routines, which will ease the use of RGLIM RGPLIM RGPRM DVOUT Circle, and arc generation Quadratic form generation Axes Grid Scales Contour plotting- (possibly a modified version of SDFORTRAN routine) Histogram (possibly a modified version of SDFORTRAN routine) Sine curve generation Clock Milometer Leader Filemarks Expand image and other such SD4020 control routines.
Initially, FRAH, RET, AHF and PRH will work on these. Later it may be necessary to get help from the rest of the group.
It will be necessary to have a discipline imposed when altering existing routines or adding new ones, so that incompatible editing can be avoided. Similarly some conventions must be applied to high level routines.
The basic SPROGS system will reside in pseudo user :SPROGS under :GSIN00. This pseudo user will have the following directory structure.
Directory Files SOURCE FORTSRC1 Source file of high level FORTRAN routines which will always be present. FORTSRC2 Source file of high level FORTRAN routines which may be present. FORTSRC3 Source file of high level FORTRAN routines PLANSRC1 Source file of PLAN routines which will always be present. PLANSRC2 Source file of PLAN routines which may be present. EDITS EDFORTSRC1 Edits files for the appropriate EDFORTSRC2 source files to give the latest EDFORTSRC3 source versions. EDPLANSRC1 EDPLANSRC2 COMMON SPRG1 COMMON Blocks for FORTRAN SPRG2 SPRG3 SPRG1X COMMON Blocks for PLAN SPRG3X
The latest version of any routine can be obtained by getting the original source listing from the appropriate source file, and applying the relevant edits from the appropriate edits file. All edits will reference absolute source line numbers rather than text.
Anyone updating a routine should first inform RET, select the latest version of the routine and test it, and then hand the routine back to RET, together with the test program and a file containing the necessary edits to convert the original source file version of the routine to the new updated version. These edits should follow the convention about line numbers.
Routines which reference the SPROGS COMMON blocks should have the line
==COMMON common file name
inserted at the appropriate point. The compilation system will automatically insert the required COMMON block. However, users updating routines which reference a COMMON block will have to do their own inserting during testing.
Users writing high level routines should first write a complete specification and show this to RET. When complete, the routine source, together with the test program, should be given to RET. The following conventions will hold.
(1) All subroutine headings will be underlined.
(2) The routine will be heavily commented, and accompanied by a write up sufficient for a prospective user.
(3) Errors occurring in a high level routine should cause a call to XERROR(N) for non-fatal errors (i.e. errors that the routine itself can sort out) or ZERROR(N) for fatal errors. A COMMON block
COMMON/SPRG4/ERR(6,2)
will enable parameters to be passed to the error routines for writing, where.
ERR(1,1) = number of parameters ERR(*,1) = parameter ERR(*,2) = 0 if real number 1 if text in real number form
The error number N must be checked with RET to avoid duplication. The writer should also give a FORMAT for each error checked.
(4) The last letter of a routine name will give some indication of the way it is written, or what arguments are expected. The following letters will be used for indication initially, but no doubt others will be needed later.
A File contains VEC orders. If it is a curve drawing routine, DX,DY are required for specifying smoothness. B File contains VEC orders. Smoothness of curve is specified by the number of points N. R File contains relative orders. If it is a curve drawing routine, DX,DY are required for specifying smoothness. S File contains relative orders. Smoothness of curve is specified by the number of points N.