DESL is a file-oriented, name driven collection of Fortran code which can be used to manipulate, analyze and plot data through the use of a command line user interface.
Each of its attributes is important to the overall efficiency of DESL operations.
DESL is File Oriented. The basic data entity typically used by DESL is the Standard Interface File or SIF. A SIF file is the binary internal file format used by DESL for efficient data manipulation. Other ascii forms can be imported/exported or translated to/from the SIF format. This is the means by which a user's non-SIF file can be used within DESL
Typically, each of the DESL functions read one or more files, operate on the data from each file or the collective set of their data, depending on the function being invoked, and create none, one or more new files containing a corresponding set of possibly modified data.
Each stage of a DESL script performs this type of activity. Collectively, the set of serial operations, can accomplish a customized user task. This is referred to as the "building block" nature of DESL.
DESL is NAME Driven. The SIF files being operated on internally by the DESL functions are, by definition, structured such that data values are referenceable by name; access to their data values can be name driven. In fact, this is the key to the DESL code's flexibility. Knowing where a variable name is in a SIF NAME record immediately informs a program where the corresponding data value is for that variable.
DESL uses a Command Line Interface. Although graphical user interfaces (GUIs) are presently very much in vogue, they are most often geared to an immediate, event-driven type application. Additionally, when a GUI is used as a front end for an otherwise command line application, some of the application's natural control is usually given up in the interest of keeping the GUI relatively simple to use and create.
Since DESL is naturally a command line application it has been decided that the production of a GUI front end is a lower priority activity. This way a concentration on the enhancemet of DESL can be given top billing.
The command line interface DESL employs, along with its control structures, allows a batch task to be set up and carried out. Batch tasks are seldom emphasized these days, but in the real world there are many needs for this mode of using an application. DESL can create, for example, 1000 plots as easily as it can create 1 plot.
So, the features emphasized above are the keys to the usefulness of DESL. DESL is a unique product in that it provides basic data engineering capabilities in a relatively easy to use package.
DESL is operated as a line-oriented scripting language. Interactively
or in a file of commands and, possibly, commands' options and
option arguments,
DESL is directed as to
what
to do and
how
to do it.
DESL schematic example
A schematic example of an
instance of a DESL command and
option/argument list is shown below in this excerpt from a longer
hypothetical input sequence :
DESL command option1 argument1 option2 argument1 argument2 argument3 option3 option4 argument1 option5 argument1 go |
The go option ends the command input - ends the collection of options and options+arguments - and tells DESL to invoke the function named by the command and to report the results.
The entry of a line containing the command's name or abbreviation signals to DESL to expect more input particular to the command entered until the time when input is ended (at "go").
ALL of the input to DESL is in a free form stype, having individual entities separated from eachother by at least one blank space. When a command (and arguments) is to be processed, all blank-delimited input encountered is gathered and preliminarily parsed to verify its syntax.
If the syntax of all of the input - options and their respective arguments - is judged to be correct, then the input is passed to the function's processor for a final determination of completeness and legality and then for its use. If there is a problem, the syntax error is reported and the user is returned to the DESL command prompt.
Below is a particular example of the use of the DESL fit command with the DESL prompts being in the bold font and, as above, the option names being in blue :
DESL> fit FIT> files run10 FIT> names alpha cl cd order 3 curve poly FIT> values -5 to 25 by 1 FIT> go DESL> stop |
At the DESL command-level prompt (DESL>) the system recognizes that the intent of the user is to cause the "fit" function to be invoked.
The FIT> prompt is then issued and DESL waits for one or more lines of blank-delimited input in the form of options and option arguments to fully describe the user's intentions.
Upon encountering the option go DESL is informed that all input, as far as the user is concerned, has been completed and that it should now go perform the fit operation as described.
If any run time problems are encountered they will be reported and appropriate action(s) taken.
Once the FIT has been completed, successfully or unsuccessfully, DESL returns to the command level prompt waiting for the next command. In this example, the stop command was entered, indicating that the user is ending this DESL session.
DESL Command | Command Intent |
---|---|
autosys |
Toggle direct system command capability. DESL has the ability to execute DOS commands without having to exit. If the autosys state is on then the system DESL command does not have to be issued in order for DESL to attempt to recognize the entered command as a DOS command. |
cleanup |
Remove tagged files As files are created in a DESL session they are tagged as those which will or will not be automatically removed at the issuance of the cleanup command. The cleanup command is, therefore, a handy way of recovering file space as temporary files are deleted as a DESL session progresses. |
clear | Clear the screen |
continue |
Restart a DESL session from named hold file
A DESL session can be halted and saved at any time via the hold command. All of its states will also be saved such that at the issuance of the continue command the DESL session held (assuming the files are still available) will effectively be right back where it was when the hold command had originally been issued. |
copy |
Copy one file to a new file
Read SIF file(s) and create new SIF file(s), possibly consolidating the incoming files' variables, filtering the incoming files based on specified conditions, doing statistical calculations, etc. |
create | Create an ASCII file inline |
diff | Difference between two SIF files |
do | Looping control |
echo | Explicit setting or toggle system echoing |
endcreate | Ends the creation of an inline ASCII file |
edit | Edit an ASCII file(s) with DESL line editor |
editor | Define the default ASCII file text editor |
else | Conditional branch point |
elseif | Conditional branch point |
endif | Conditional branch point |
enddo | Looping control |
endm | End a macro definition |
endw | End a while loop |
equation |
Execute Fortran-like equations
The user can produce and execute Fortran-like code on each qualifying incoming SIF file record. Many of the standard Fortran functionalities are available with additional built-in integration and differentiation capability. |
extra |
Build your own DESL-compatible stand-alone executable
using the Compaq Fortran compiler, the supplied .OBJ
file and your Fortran code.
Use the ViGYAN consulting service to provide the compilation/linking means. |
extremes | Determine and report variable(s) min's/max's in file(s) |
files | List current new files which have been produced in this session |
filter | Apply filters to data in file(s) |
fit |
Curve fitting in file(s)
Nth order least squares and piecewise polynomial fitting is possible. Analytic differentiation is also possible. |
hold |
Suspend DESL session into named file then stop (see "continue")
A DESL session can be halted and saved at any time via the hold command. All of its states will also be saved such that at the issuance of the continue command the DESL session held (assuming the files are still available) will effectively be right back where it was when the hold command had originally been issued. |
holdn | Suspend DESL session into named file (see "continue") |
if | Conditional branch point |
input |
Use an alternate file as DESL input
Normally, DESL takes its commands interactively. However, a file of DESL commands and the commands' options, can be presented to DESL for execution by naming such a file with the input command. |
learn |
Determine "best set" of coefficients for polynomial data fit
A user-specified group of possible polynomial independent variable names can be used to determine the resulting polynomial coefficients such that a data set can be fit with the least resulting error. |
list |
Define a set of attributes for later application
A list of items is a structure which DESL can use in conjunction with the do command to define the looping variables (constants or variables) to use. |
log | Toggle system logging |
macrolib |
Load system macro(s)
DESL macros are sets of collections of DESL commands which can be effectively called from the DESL command line. A DESL macro can contain arguments which can be supplied at the time the macro is invoked. Nested macros are possible. |
merge |
Combine files laterally
Akin to logically shuffling a deck of cards, the merge command will join the corresponding records from two or more files into a single new file. |
overstore |
Toggle state of system file overwriting ability
Noamally, DESL will not allow a named new file to be created if that named file already exists. The overstore command can be set such that DESL can overstore files. |
page | Define the default output page size for various forms of output |
password | Specify the DESL password |
path |
Define alternate lower-priority file paths
By default, DESL look in the current directory for the files one of its commands is trying to open for reading. With the path command up to 10 alternate, lower priority locations can also be specified. |
Print information from file(s) to output
The print command allows the variable names values from a file to be listed in tabular form in one of several formats. |
|
pubplot |
Produce PostScript publication-quality graphical output
The grand daddy of all DESL commands, pubplot allows the user to generate a PostScript file which can contain one or more of a wide variety of plot types and styles. Virtually all aspects of the plots are controllable, giving the user much control and flexibility as to how their plots will appear. X-Y plots, contour and surface plots are possible, with X-Y plots being most mature and capable. PostScript file results can be viewed directly via the use of any number of previewers. GhostView/GhostScript ( freely available software) is very capable at this task. Publication quality plots are the norm. |
record | Toggle user input logging |
register |
Perform DESL register actions
DESL provides 10 user Name registers and 10 user Value registers which can be used for storing and/or passing numeric or string information, respectively, between DESL commands. |
say | Echo line to output |
saveinput | Copy previous user input to file |
sifstats |
Display statistical information for SIF file(s)
This function provides a good way to view the structure of a SIF file. |
sleep | Halt DESL action for specified time |
spawn |
Generate multiple file(s) from file(s) based on data
From one incoming file, based on splitting criteria, break the file into one or more smaller files. |
stack |
Combine files longitudinally
Akin to logically stacking two or more deck of cards, the stack command will append the corresponding records from two or more files into a single new file. |
statistics |
A function under construction! Calculate various statistical parameters |
status | Display DESL status information |
stop | End DESL and use DESLEXIT file if present |
stopn | End DESL and do not use DESLEXIT file if present |
system |
Execute a command outside of DESL
The system command, followed by a string will attempt to have the sring executed in the DOS system. |
tally |
Display categorized file parameter information
An incoming file can be logically parsed such that records falling into specified categories can be counted and reported. |
time | Display current system date/time |
translate |
Translate between file formats
The translate command provides the means whereby DESL is able to go to/from SIF files from/to, respectively, other valid file formats. The tab-separated ASCII format, as can be exported from Excel and imported to Excel is one of these forms. The file structure all other commands need to see in their files is the SIF format. |
until | Conditional branch point |
while | Conditional branch point |
whilelimit | Limit on while loop transversals |
As mentioned in the above table, an .OBJ stub file is provided such that user code can be compiled with Compaq Visual Fortran (CVF) and linked with this file to yield a new executble which is a stand-alone executable application. This stand-alone executable uses a simple yet powerful interface to the SIF data files such that variables are extracted from and installed in a dynamic data set by name. The executable can then be used in a manner similar to the DESL functions : with command-line options to specify the SIF files to read and write and an optional setup file to process.
For users without the CVF resource a consultation service is available which can provide the means to receive user source code, repair obvious faults and do the compile and link and return an executable.
With this ability, major applications can be produced which can process SIF files to accomplish many goals.
30 Research Drive Hampton, VA 23666 Voice: (757) 865-1400 Toll Free: (800) 288-3998 FAX: (757) 865-8177 |