FILIST (X,XN)
will list the header and contents of the file called X, number XN. Thus file A will be listed by FILIST (ANAME('A'),1.0). However, listing will only take place if the file is present in store.
LSTALL
will list all the files currently defined. Basic files may also be listed.
Display routines give the basic ability to draw lines, etc. More complex facilities are provided by high level routines which, although not display routines themselves, call display routines to produce their effects. Examples of such routines that have been met so far are TEXT, VTEXT, NLINES and NPAGE.
Other routines are described in the Appendices, and include contour drawing, histograms, shading and curve plotting. More routines will be added later.
Two main facilities have been included to assist the user in debugging his SPROGS output.
As was mentioned above, one of the possible output devices is the lineprinter, which lists the coordinates output at that point, together with a visibility marker. Using RGPRM and DVOUT, it is possible to see the coordinates being generated at any stage of the region chain, and so discover, for example whether your blank output is due to all the coordinates being zero or just invisible!
The routine:
LPDBUG
will add lineprinter to the output device settings of the current region (thus making this region the basic output region for lineprinter as well), and select lineprinter output in addition to those devices currently selected.
A display routine:
STRACE (XM,XN)
allows tracing information to be printed on entry to each display routine,whether being executed directly or from file. The first parameter, XM, the trace number, sets the level of tracing required and the second parameter, XN, the trace frequency, sets the frequency of extra tracing. If XM = 3.0, a survey of the current state of the program is output. However, the global variables for the trace number and trace frequency are not altered. In all other cases, setting XM supersedes the previous setting. The table below describes the output for the different levels of tracing.
XM | XN | Tracing Output |
---|---|---|
0.0 | No tracing. This is the initial setting. | |
1.0 | 0.0 | Display routine names and arguments. |
1.0 | XN | As above, with the current region parameters output after every XN display routine calls. |
2.0 | 0.0 | Display routine names and arguments, together with the global variables IPRMV, NFLNO, NPRYV, LPRYV, NTRMLS and ISVCNT (respectively, the parameter type marker, file number, global priority, local priority, output device selection and basic file marker). If STDF, STSAV, FISAV or FIDF are called, some information about the file table is also output. If DVOUT is called, a list of currently selected devices is printed. |
2.0 | XN | As above, together with the current region parameters after every XN display routine calls. |
3.0 | The values of XPOS and YPOS (current display position), the current region chain and the current file store contents and the file stack. | |
4.0 | 0.0 | As for XM=2.0,together with information each time a file stack block is used. |
The display routine:
PRINV (ANAME ('XIND'))
will print the value contained in the index variable XIND, in floating point and text form, on the I/O stream associated with file listing. This will aid in keeping track of the value of such variables during complicated sequence list operations.
The SD4020 has a number of facilities which are not available on other output devices. The following collection of routines allows the user to make use of these features. The routines will only take effect if either SD4020 hardcopy or microfilm cameras are currently selected (with the exception of EXPRED).
EXPRED (A)
If A = 1.0, the SD4020 expand image mode is selected. In this mode, successive frames of 35 mm microfilm will abut. A = 0.0 will reduce the image to normal size (the default setting). This routine will be effective only if microfilm has been selected. If full images are required on 16 mm film, it is suggested that, instead of using this routine, the user instructs the SD4020 operators to use one of the alternative camera lenses.
This routine will also affect lineprinter graphical output. If A=1.0, the page throw between frames is suppressed, thus giving the same abut effect as for 35 mm film.
FLASH
This routine causes the form slide to be projected onto the current frame.
FLEMKS (ANO)
This routine writes ANO filemarks to the SD4020 tape, after first emptying the current buffer.
MF35MM
Normally, the 16 mm camera will be used if microfilm is selected. This routine sends a message to the SD4020 operator instruction stream requesting that the 35 mm camera be used instead. It has no effect if microfilm has not been selected. Note that the operators may not receive this message if spooling is being used (see Chapter 11).
TOPRIN (ANO)
It is possible to cause the actual orders being sent to the SD4020 tape to be printed as well. ANO = 1.0 will turn on the print, and ANO = 0.0 will turn it off. This should be used sparingly for debug purposes only, as it generates a lot of output.
TOTAPE (ANO)
This routine is also useful for debugging. ANO = 1.0 will prevent SD4020 instructions being sent to the tape, although they will be generated. ANO = 0.0 will restore the situation. Using this routine allows the testing for an SD4020 film program to proceed faster since no tape is written.
RUNOUT (X)
This will output X blank frames on SD4020 microfilm, if this device has been selected.
Currently, SPROGS appears to work at about 650 lines per second, using the optimising FORTRAN compiler. The function:
XMLTIM (A)
gives the current mill time usage in seconds so that a user can time his own program. Note that the argument A is dummy, since the time is returned as the value of the function.
From time to time, new facilities will be added to SPROGS. A record of the latest additions will be kept in file:
:SPROGS.SPROGSNEWS
which can be listed. This manual will be updated when there are sufficient changes to make it worthwhile.
Users who do not wish to select lineprinter graphical or SD4020 output during a run can call two routines to prevent the inclusion of the code for these devices at consolidation. This will decrease the store required for the run, but will cause an error if the devices are in fact used.
NOLPG omit lineprinter graphical code NOSD omit SD4020 code