The TOOL component of of the whatIf? suite is a high level interactive language for manipulating data. It performs mathematical operations on structured data objects, including multi-dimensioned arrays, sets, mappings, and geometric objects such as points, lines and polygons. For example, the data object 'population' containing population counts stratified by age (100 single years of age), sex (male, female), region (13 provinces and territories)and time (2002 to 2050 in steps of 1 year) may be manipulated as a single 4-dimensional array containing 127,400 elements. TOOL objects are manipulated by TOOL operators or 'tools' which perform mathematical, statistical, and financial functions on objects, and display objects in tabular, graphic and cartographic format.
TOOL performs all functions associated with modelling unlike many packages that concentrate exclusively on representing model logic:
- TOOL is supported by a language sensitive editor inside the Documenter application for expressing the logic in each model procedure.
- TOOL is used in stand-alone mode as a powerful environment for ad hoc data manipulation, visualization, and data cleaning.
- TOOL is used to create reports of model ouput and to create values for input variables.
It is our experience that in any modelling project, there will be signifcantly more code associated with data cleaning and reporting than with model logic. Use of the TOOL language for these functions enhances the productivity of the development team.
- The TOOL language has over 150 mathematical operators or 'tools', including standard mathematics, booleans, statistics, linear difference equations, shaping tools such as insert, extract, and reorder, stock-flow accounting tools, and tools for financial analysis such as present value, compound interest, and depreciation; customized tools can be easily created and added without impact on existing software
- The syntax of TOOL is a stylized subscripted algebra with control structures providing 'if, then, else' and looping constructs.
- TOOL performs full dimensional analysis - each tool embodies a full set of inheritance rules to ensure consistency with respect to dimensionality, standard international units of measure, and entity; the language ensures that apples and oranges cannot be added.
- TOOL can be used interactively or by creating and using 'scripts' containing multiple TOOL statements.
- TOOL supports many different data objects types: n-dimensional arrays, sets, sequences, mappings, and points, lines and polygons in n-dimensional spaces; new data object types can be added.
- Each data object contains data and 'shape' information including object type, units of measure, and the dimensions over which the object is defined.
- TOOL provides data import/export channels to ASCII files, spreadsheets and GIS systems.
- TOOL uses data compaction for efficient use of disk storage: all data is stored in a compact binary format.