Suppose a Starlink application package, PKG, contains two monoliths, pkg_exe1, containing actions act1 and act2, and pkg_exe2, containing actions act3 and act4. The IFD would have the basic form:
where ‘...
’ represents omitted lines.
This is interpreted by Tcl with the keywords ‘package
’, ‘executable
’, ‘action
’, etc. treated as
procedures which are defined appropriately depending upon the software environment for which
files are being produced. There are currently three scripts which make these definitions and produce
environment-specific files:
ifd2star
ifd2iraf
ifd2irafifl
The following points should be noted:
#
is found where a command (keyword) is expected, the
remainder of the line is treated as comment.
vpath
specifier are space-separated (not comma-separated as
in ADAM Interface Files).
$
must be quoted (with {
}
). Other Tcl special characters
will also need to be quoted or escaped.A ‘full’ IFD will normally contain additional keywords to define absolutely everything required in producing the environment-specific files.
The IFD may contain sections to be included or excluded depending upon the environment for which it is being processed.
environment:
{
code }
environment! {
code }
The separator ‘:
’ causes the code to be processed, and ‘!
’ causes the code to be ignored only if the
environment is environment
. In both cases, environment
can be a comma-separated list of
environment names and the code may consist of multiple lines.
The term ‘environment’ is used loosely here – the environment is set to:
star
ifd2star
is running.
iraf
ifd2iraf
is running.
irafifl
ifd2irafifl
is running.For example with,
star:
{
code }
code
will only be processed by ifd2star
, and with
star,iraf!
{
code }
code
will not be processed by either ifd2star
or ifd2iraf
.
For existing packages a basic IFD can be produced by running the ifl2ifd
script on the .ifl
file(s) of
the package.
Will produce IFD kappa_mon.ifd
from interface file kappa_mon.ifl
.
Where the package consists of several monoliths, the resulting IFDs must be combined to produce a single IFD.
This basic IFD will define all the package applications which are in the monoliths. However:
size
definition added.
More information on the changes required for IRAF is given in SSN/35.