Each file should have a special section describing the proposal and observation block (OB hereafter). Say,
$HEADER { parameters with proposal code, proposal contact person, addresses, phone numbers, etc., comments helpful to operators at run time. }
A special symbol is needed to define a macro. As I mentioned above, I think requiring them to be early in the file is a good idea for readability purposes. The observer's tool should include a library of macros, which can be searched for useful macros to be extracted and put in the script file. A few macro's could be usefully built into the real-time system, for example the list of antennas with a specific set of hardware.
$MACRO <macroname> { a body of text, not containing a reserved word, that appears in the script when the macroname, preceded by a &, appears }
There are two items which I suggest deserve a special status, for different reasons. The correlator setup is very fundamental to the system. It, in particular, determines the output format. I think it is useful for the real-time system to have a list of the correlator setups that it may be required to setup for, and especially for the data reduction programs to have a list of the possible data formats they may have to deal with.
Source descriptions are really tables. For a mosaic, the table is a list of offsets from the reference position, or perhaps preferably, a list of positions to be included in a mosaic organized around the reference position. For a planet, asteroid, or comet, the source description is a table of position versus time. (This differs from the mosaic table in that it may be queried at fractional rows, with the expectation of receiving an interpolation.)
Because these two items are quite different I shall return to them individually below, here remarking that they will look something like this:
$SOURCE <sourcename> { a body of text setting parameters to set up an observation of a source. These parameters may appear only in a $SOURCE| block. } $CORRELATOR <setupname> { a body of text describing the correlator setup. These parameters may appear only in a $CORRELATOR block. } $MESSAGE <messagename> <messageaddress> { A block to pass information to other programs, especially the pipeline reduction program in their native tongue, passed on but not interpreted by the real-time system. }