Structure of a Mosel model
A Mosel model (text file with extension .mos) has the form
model model_name Compiler directives Parameters Body end-model
- Compiler directives
-
- Options are specified as a compiler directive, at the beginning of the model
- Options include explterm, which means that each statement must end with a semi-colon, and noimplicit, which forces all objects to be declared
options explterm options noimplicit
- uses statements are also compiler directives
uses "mmxprs", "mmodbc"
- Can define a version number for your model
version 1.0.0
- Run-time parameters
-
- Scalars (of type integer, real, boolean, or string) with a specified default value
- Their value may be reset when executing the model
- Use initializations from for inputting structured data (arrays, sets,...)
- At most one parameters block per model
- Model body
-
- Model statements other than compiler directives and parameters, including any number of
- declarations
- initializations from / initializations to
- functions and procedures
- Model statements other than compiler directives and parameters, including any number of
- Implicit declaration
-
- Mosel does not require all objects to be declared
- Simple objects can be used without declaring them, if their type is obvious
- Use the noimplicit option to force all objects to be declared before using them (see item Compiler directives above)
- Mosel statements
-
- Can extend over several lines and use spaces
- However, a line break acts as an expression terminator
- To continue an expression, it must be cut after a symbol that implies continuation (e.g. + - , * )