SIMSCRIPT III Product Features

General Purpose Language Features

Data types
The SIMSCRIPT III language provides a full complement of features used in object-oriented general-purpose programming. There are several basic data types available including REAL, INTEGER, DOUBLE, POINTER, REFERENCE, TEXT, CLASS. TEXT values are dynamic character strings whose allocation and de-allocation are managed automatically by the system. CLASS is a dynamic type, it encaptulates data and methods, and can be dynamically instantiated.
There are numerous operators available which include not only the standard arithmetic, relational and logical operators but a large variety of "built-in" functions for such diverse tasks as computing the square root, concatenating TEXT and performing date arithmetic.
Dynamic Arrays
All arrays are dynamic, i.e. the number of elements are specified at run-time rather than compile time.
Control Statements
Conditional statements include the IF-ELSE and the SELECT CASE statements. Loops are controlled by one or more "control phrases," such as the FOR, WHILE and WITH phrases, which may be mixed and matched in any way. The FIND statement provides a search capability for sets.
Powerful I/O Constructs
SIMSCRIPT III provides complete facilities for I/O. Both free-form and formatted input are supported as well as a variety of output statements including a report generation capability. Files may contain character or binary data.
SIMSCRIPT III supports modularity. A program may consist of main module and multiple programming modules. Main module contains preamble, main routine and may import multiple modules/subsystems. The preamble can be public and private and contains classes, data structure and process type definitions of the module/subsystem. Implementation of the subsystem contains executable routines and functions. SIMSCRIPT routines and functions may have parameters as well as local variables and may be recursive. A routine may be called directly by a CALL statement or indirectly using a SUBPROGRAM variable. In addition, a "monitoring" routine may be defined which is called whenever a particular attribute or global variable is accessed.
NON-SIMSCRIPT Modules - Interoperability
SIMSCRIPT III is an open environment. Functions and routines written in C/C++, FORTRAN, and Java can be invoked from a SIMSCRIPT III program by simply declaring them as non-SIMSCRIPT routines or functions. This provides an elegant way for interfacing with the specialized libraries, databases, specialized tools like MATLAB and middleware for distributed simulation like HLA RTI.