Installing RFU, RFX and RFT
|
Note |
This has long been deprecated, but the tools still exist. |
The Xtal distribution tape contains some software which is intended to support
the updating and maintenance of the system. The program sources rfu.r
,
rfx.r
and rft.r
are supplied for these purposes. Their
installation is not essential to the use of Xtal but RFU should be installed if
at all possible.
RFU is an update editor for applying program updates. It does this
automatically by opening the appropriate source files; searching the line
identification codes for the correct match; applying the update and closing the
file. Xtal updates will be supplied in the correct format for use with RFU.
RFX is the routine used to extract updates from a program source file. It is
used to generate an update file that may be read by RFU. This is needed if
corrections or enhancements are made to Xtal source files and these must be
transmitted to the Xtal Coordinator.
RFT is the routine used to 'tidy' Xtal source files, and to check logical
ratmac errors. It is an essential developers tool but not needed by an Xtal
user.
Installing the update editor RFU
RFU is supplied as ratmac source code rfu.r
. It must be
preprocessed, compiled and linked before it can be applied. The most
machine-dependent aspect of RFU is the reading and writing of files. Four I/O
devices are used: ufile: input file containing the update information
(named UPDATE); ifile: the input source file automatically opened by RFU
(detailed below); ofile: the output source file automatically opened by
RFU; and lfile: the list file or device. These devices are opened with
the macros openu:, openi:, openo: and openl:,respectively. Check that the supplied definitions are appropriate for your
machine. Note particularly the device numbers, filenames and status codes
needed in the open statements. Use the filename UPDATE for the file ufile:unless there is a particular reason for not doing so. The terminal device
name for lfile: will depend on the local operating system. Check the
definitions of the macros read:, and write: which are responsible
for the reading and writing from/to these devices.
An essential requirement for opening the RFU input and output source files, is
the appropiate definition of the filename macros dev:, exti: and
exto:. The filename for the input file is constructed by RFU as the
concatenation of the character strings defined by the 'device' macro dev:,the program code (pcode) from the input PROGRAM line, and the 'name
extension' macro exti:. That is the filename
dev://pcode//exti:. The output source filename is constructed as
dev://pcode//exto:. The total length of each filename may not
exceed 12 characters. The definition of dev:, exti: and exto:will be very shop specific. They must enable RFU to find and open the
current version of each Xtal program, and to create a new updated copy. For
example if the program ABSORB is being updated, pcode will be set as ab
and typical filenames would be dsc2:ab.r and dsc2:ab.new.
There is one additional safety feature of RFU. The most dangerous aspect of
automatic updating occurs when a previous update run has been omitted. Despite
the check on matching 'boundary lines', the inconsistency of prior updates can
give rise to undetected and insidious errors. RFU provides an additional
control line CHECKX
which contains the date of the previous update
run. This line must precede an update sequence which modifies the definition of
the update: macro in the XMACRO file. Here is a typical set of lines at
the start of each update run.
** UPDATE Nov93
** CHECKX Sep93
** PROGRAM xmacro
** ............................................................
macro:(version:,3.2)# XM
60
macro:(update:,Nov93/compiler:)#
Nov93001
## XM
62
** ............................................................
Since RFU expects to open files with a ratmac filename extension (e.g.
xx.r
), then there must exist an input file named
xmacro.r
. The file named xmacro.new
will be
output.
Updated source files normally have an extension .new
. The user
is responsible for renaming these to match the usual ratmac file extension
(e.g. .r
). Each updated source file will contain an additional lines
following the first systemheader: line containing the version
dates of updates. These provide an imbedded audit record of the updates applied
to a file.
Installing the update extracter routine RFX
RFX searches a source file for lines tagged with '^^' and generates and update
file which is suitable for input to the update editor RFU. Note that choice of
the two-letter tags is made by the definition of scode: in RFX. As you
will see you can use this code repeatedly for successive batches of updates -
because they get removed with each application of RFU.
Attach the source as RFXPRG
to a run of RFX and the update file will
be output as RFXUPD
. It should be stressed that the most common
difficulty that arises with updating is the deletion of lines. These will get
lost from the updating process unless the line before or the line after the
deleted line(s) is tagged with ^^ (it does not matter that the tagged line is
unchanged). The success of any updating process is completely dependent on the
tags being applied consistently. It you miss one it can cause much
anguish!
Installing the source tidy routine RFT
RFT is used to tidy ratmac source files for clarity and to make the
preprocessing task of the preprocessor more efficient. RFT does the
following.
* Separates active code from comments. Active code is left-justified and
comments start in column 40 and are converted to lower-case. Full line comments
are not altered. Active code in a line following a continue digraph $# is not
left-justified.
* Converts alphabetic characters of active code to upper-case except for
macro names which are output in lower-case. Characters inside an apostrophe
string, or when flagon:(R) is in force, are not changed.
Characters in a
comment preceeded by double-sharp ## are not realigned and their case is not
changed. This feature may be used to make special header lines.
* Converts all 'dot' relational operators (i.e. .GT., etc.) to their
symbolic form (i.e. >, etc.). If this conversion is not desirable in Boolean
expressions (such asI=J.AND.MASK
), the user may prevent it by
substituting each period . using the digraph ($.). The above Boolean expression
would then be entered as I=J$.AND$.MASK
.
* Identifies each brace with a distinctive comment and brace-level and
brace-count numbers. For example, the seventh open brace $( , which is nested
inside two other open braces, will be commented with
2>>>>>>>>>>>> 7
and the balancing
close brace will be commented with
2<<<<<<<<<<<< 7
. These serve to
highlight statement blocks in the source code.
* Appends a program name and line number to each source line. This is
optional according to the definition of the RFT macro linid:. The
program name is extracted from each systemheader: encountered in the
ratmac source. Line numbers start from this macro.
* Tests for balanced open and close braces, left and right parentheses and
square brackets. Error messages are generated if an imbalance is detected.
Here are the implementation procedure for RFT.
Use an editor to examine the macro definitions. The macro linid:
enables or disables the insertion of line ID numbers (in columns 73-80).
Normally this is set to no:. The input, output, and list files are
opened according to the openi:, openo:, and openl: macro
definitions. The supplied definitions are for the input file named RFTOLD, the
output file named RFTNEW, and the list file named RFTLST. The device numbers
are assigned to these files using the macros inp:, out:, andlst:. The macros read:, write: and list: are used to define
the input-output for your machine.
Preprocess, compile and link RFT. Prepare a command procedure to execute RFT.
A suitable first test is the RFT source code itself, though this has the
disadvantage of already being tidy! It should, however, be error-free and
enable you to match input with output. Be careful with the renaming of input
and output files. The RFTNEW file is your new tidied source, but keep RFTOLD as
a backup just in case!