The STRUCTURE package consists of independent modules which together form a structured data manipulation system within an automated mapping environment. The modules which form the STRUCTURE package offer:
STRUCTURE is designed to replace the existing Laser-Scan utilities IFJ and CBA, as well as to create new facilities for the creation and manipulation of structured data.
Within the VAX/VMS system IFF files can be treated as any other file type for file management purposes. To enable the user to distinguish an IFF file from a file of another type IFF files have by default the file extension '.IFF'. To provide great flexibility in the production environment IFF files are referenced by all the STRUCTURE modules using logical name LSL$IF:. (For an explanation of logical names see the VAX/VMS document set). Logical name LSL$IF: is assigned to a device and directory specification either using the VMS DEFINE command or the Laser-Scan SI utility, (see the "IFF User Guide" for details).
Like VMS utilities, all STRUCTURE modules generate VMS format messages and set VMS DCL symbol $STATUS on image exit. This is a valuable feature as a non-interactive process can test the success of a preceding STRUCTURE module before proceeding. $STATUS will always be set to a VMS 32 bit condition code. Successful program execution will result in $STATUS being set to SS$_NORMAL. If an error occurred during STRUCTURE processing, SS$_ABORT of varying severities, or a VMS System or CLI (Command Line Interpreter) condition code will be used. The user may simply test $STATUS for TRUE or FALSE within a DCL command procedure. If $STATUS is TRUE then processing was successful. If it is FALSE, an error occurred during processing. For a detailed description of the uses of $STATUS see the VAX VMS document set.
Structure module ILINK handles all data internally as CB entries and therefore can cope with IFF files containing ST, ZS or CB entries. Module RELHT (another STRUCTURE module) expects ST or ZS entries, and hence can handle ST's and ZS's, or CB entries. For both modules, the Z coordinates are ignored and just copied unchanged.
Once logged in the user must give two commands to initialise the STRUCTURE package. Before the STRUCTURE package can be used DCL symbols and logical names must be assigned to enable the user to invoke the modules. This is done using a command procedure STRUCTUREINI.COM which is supplied as part of the STRUCTURE package. STRUCTUREINI itself will be defined as a DCL symbol at your site and should be invoked thus: (see PREFACE for explanation of presentation conventions)
The STRUCTUREINI command invokes a command procedure which defines a DCL symbol (the module name) for each of the STRUCTURE modules. After using STRUCTUREINI the user need only type the symbol name to activate the selected module.
As an alternative to explicitly typing the STRUCTUREINI command each time the user wishes to use the STRUCTURE package, the STRUCTUREINI command may be placed in the user's login file, or in the site dependent default login file.
The second command which must be given before using the STRUCTURE package is the SI command. The SI command assigns the logical name LSL$IF: (or IF: for short) to the device-directory specification which contains the IFF file(s) that are to be manipulated. For example:
$ SI DUA3:[BUREAU.TRIALS.DIGITISING]
This will assign logical name LSL$IF: to the device and directory specification DUA3:[BUREAU.TRIALS.DIGITISING]
STRUCTURE utilities use the VMS Command Line Interpreter (CLI) to get and parse the program command line. STRUCTURE utilities thus offer a VMS emulating user interface. As many STRUCTURE utilities require floating point arguments to command qualifiers, Laser-Scan has developed an enhanced CLI based command line decoding mechanism. This enables the interpretation of numbers as either "real" or "integer".
The CLI allows the user to specify single and lists of integer qualifier arguments. If a list of arguments is specified, each argument must be separated by a comma and the whole list enclosed within parentheses, for example:
Where "EXAMPLE" is the command and /QUALIFIER is a qualifier to that command. There is one qualifier argument - 7
Where "EXAMPLE" is the command and /QUALIFIER is a qualifier to that command. There are 9 qualifier arguments within the argument list.
While developing the floating point command line data type (see Preface) it was recognised that there is a need for numeric range decoding within a VMS emulating command line. Argument ranges are specified with the syntax:
Where n is the lower limit of the range and m is the upper limit of the range (inclusive).
Such ranges are expanded in full. A maximum of 1024 arguments can be specified to any one command qualifier.
If we take our example argument list used above, i.e:
and now use the Laser-Scan argument range decoding mechanism:
we see that a more compact command line results but yields the same arguments. This is clearly an advantage in an IFF map processing environment where a single file could contain hundreds of attributes which the user may wish to reference via command line arguments.
Other examples are:
This yields 8 integer arguments: 2, 3, 4, 5, 6, 7, 8, and 9
This yields 9 integer arguments: 0, 1, 2, 3, 4, 5, 6, 7, and 8
If when ranges are decoded, a qualifier has more than 1024 arguments the Laser-Scan LSLLIB library issues the error message:
%LSLLIB-E-RESPARSOVF, result of parse overflowed buffer
and program execution is terminated.
Floating point value ranges are decoded in a different manner to integer value ranges. Instead of expanding the range to yield all its component integer values the command decoder merely leaves the range as a lower limit and an upper limit. Processing then takes account of any possible value lying between these limits (inclusive).
Select all features having a height which lies within the range 23.5 to 110.2 inclusive.