/Sequencer ODB tree: Difference between revisions
No edit summary |
No edit summary |
||
(4 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Pagelinks}} | |||
== Links == | == Links == | ||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | ||
* [[Sequencer]] | * [[Sequencer]] | ||
* [[mhttpd]] | * [[mhttpd]] | ||
</div> | </div> | ||
== Purpose == | == Purpose == | ||
The ODB /Sequencer tree contains information related to the [[Sequencer]]. | The ODB /Sequencer tree contains information related to the [[Sequencer]]. The <span style="color:purple; font-style:italic">State</span> and <span style="color:purple; font-style:italic">Script</span> subdirectories are used by the Sequencer system and are not usually accessed directly by the user. The <span style="color:purple; font-style:italic">Command</span> directory allows for programmatic control of the Sequencer. | ||
== Creating the /Sequencer tree == | == Creating the /Sequencer tree == | ||
The <span style="color:purple; font-style:italic">/Sequencer</span> ODB tree is created | The <span style="color:purple; font-style:italic">/Sequencer</span> ODB tree is created the first time that the msequencer program is run. It will be filled with default values. | ||
== Example of /Sequencer tree == | == Example of /Sequencer tree == | ||
Line 24: | Line 25: | ||
Sequencer DIR | Sequencer DIR | ||
State DIR | State DIR | ||
Path STRING 1 256 | New File BOOL 1 4 5h 0 RWD n | ||
Filename STRING 1 256 | Path STRING 1 256 5h 0 RWD /home/cdms/packages/SuperCDMS_DAQ/MidasDAQ/online/sequencer/ | ||
Error STRING 1 256 | Filename STRING 1 256 5h 0 RWD dc.msl | ||
Error line INT 1 4 | Error STRING 1 256 5h 0 RWD | ||
SError line INT 1 4 | Error line INT 1 4 5h 0 RWD 0 | ||
Message STRING 1 256 | SError line INT 1 4 5h 0 RWD 0 | ||
Message Wait BOOL 1 4 | Message STRING 1 256 5h 0 RWD | ||
Running BOOL 1 4 | Message Wait BOOL 1 4 5h 0 RWD n | ||
Finished BOOL 1 4 | Running BOOL 1 4 5h 0 RWD n | ||
Paused BOOL 1 4 | Finished BOOL 1 4 5h 0 RWD y | ||
Current line number INT 1 4 | Paused BOOL 1 4 5h 0 RWD n | ||
SCurrent line number INT 1 4 | Current line number INT 1 4 5h 0 RWD 6 | ||
Stop after run BOOL 1 4 | SCurrent line number INT 1 4 5h 0 RWD 4 | ||
Transition request BOOL 1 4 | Stop after run BOOL 1 4 5h 0 RWD n | ||
Loop start line INT 4 4 | Transition request BOOL 1 4 5h 0 RWD n | ||
[0] 0 | Loop start line INT 4 4 5h 0 RWD | ||
[0] 3 | |||
[1] 0 | |||
[2] 0 | |||
[3] 0 | |||
SLoop start line INT 4 4 5h 0 RWD | |||
[0] 1 | |||
[1] 0 | |||
[2] 0 | |||
[3] 0 | |||
Loop end line INT 4 4 5h 0 RWD | |||
[0] 8 | |||
[1] 0 | |||
[2] 0 | |||
[3] 0 | |||
SLoop end line INT 4 4 5h 0 RWD | |||
[0] 6 | |||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
Loop counter INT 4 4 5h 0 RWD | |||
[0] | [0] 1 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
Loop | Loop n INT 4 4 5h 0 RWD | ||
[0] | [0] 200 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
Subdir STRING 1 256 5h 0 RWD | |||
Subdir end line INT 1 4 5h 0 RWD 0 | |||
Subdir not notify INT 1 4 5h 0 RWD 0 | |||
If index INT 1 4 5h 0 RWD 0 | |||
If line INT 4 4 5h 0 RWD | |||
[0] 0 | [0] 0 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
If else line INT 4 4 5h 0 RWD | |||
[0] 0 | [0] 0 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
If endif line INT 4 4 5h 0 RWD | |||
[0] 0 | [0] 0 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
Stack index INT 1 4 5h 0 RWD 0 | |||
Subroutine end line INT 4 4 5h 0 RWD | |||
Stack index INT 1 4 | |||
Subroutine end line INT 4 4 | |||
[0] 0 | [0] 0 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
Subroutine return line INT 4 4 | Subroutine return line INT 4 4 5h 0 RWD | ||
[0] 0 | [0] 0 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
Subroutine call line INT 4 4 | Subroutine call line INT 4 4 5h 0 RWD | ||
[0] 0 | [0] 0 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
SSubroutine call line INT 4 4 | SSubroutine call line INT 4 4 5h 0 RWD | ||
[0] 0 | [0] 0 | ||
[1] 0 | [1] 0 | ||
[2] 0 | [2] 0 | ||
[3] 0 | [3] 0 | ||
Subroutine param STRING 4 256 | Subroutine param STRING 4 256 5h 0 RWD | ||
[0] | [0] | ||
[1] | [1] | ||
[2] | [2] | ||
[3] | [3] | ||
Wait value FLOAT 1 4 | Wait value FLOAT 1 4 5h 0 RWD 0 | ||
Wait limit FLOAT 1 4 | Wait limit FLOAT 1 4 5h 0 RWD 0 | ||
Start time DWORD 1 4 | Start time DWORD 1 4 5h 0 RWD 0 | ||
Wait type STRING 1 32 | Wait type STRING 1 32 5h 0 RWD | ||
Last msg STRING 1 10 | Last msg STRING 1 10 5h 0 RWD 16:09:03 | ||
Script DIR | |||
Lines STRING 6 19 5h 0 RWD | |||
[0] LOOP 200 | |||
[1] TRANSITION START | |||
[2] WAIT SECONDS 120 | |||
[3] TRANSITION STOP | |||
[4] WAIT SECONDS 10 | |||
[5] ENDLOOP | |||
XML STRING 1 343 5h 0 RWD | |||
Command DIR | |||
Start script BOOL 1 4 5h 0 RWD n | |||
Stop immediately BOOL 1 4 5h 0 RWD n | |||
Load new file BOOL 1 4 5h 0 RWD n | |||
Load filename STRING 1 1 5h 0 RWD | |||
</pre> | </pre> | ||
== Keys in the <span style="color:purple; font-style:italic">/Sequencer</span> ODB tree == | == Keys in the <span style="color:purple; font-style:italic">/Sequencer</span> ODB tree == | ||
=== <span style="color:purple; font-style:italic">Command</span> subtree === | |||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |||
* '''Type:''' DIR | |||
</div> | |||
The {{Odbpath|path=Command}} subtree in the [[#top|/Sequencer ODB tree]] is created by msequencer. The sequencer will perform various actions when keys in this subtree are set by the user. | |||
<br> | |||
--------- | |||
<br> | |||
==== <span style="color:purple; font-style:italic">Start script</span> ==== | |||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |||
* '''Type:''' BOOL | |||
* '''Default:''' "n" | |||
</div> | |||
Setting this key in the [[#Command subtree|Command subtree]] to "y" will start the currently-loaded sequencer script. | |||
<br> | |||
--------- | |||
<br> | |||
==== <span style="color:purple; font-style:italic">Stop immediately</span> ==== | |||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |||
* '''Type:''' BOOL | |||
* '''Default:''' "n" | |||
</div> | |||
Setting this key in the [[#Command subtree|Command subtree]] to "y" will stop the currently-running sequencer script. | |||
<br> | |||
--------- | |||
<br> | |||
==== <span style="color:purple; font-style:italic">Load new file</span> ==== | |||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |||
* '''Type:''' BOOL | |||
* '''Default:''' "n" | |||
</div> | |||
Setting this key in the [[#Command subtree|Command subtree]] to "y" will cause the sequencer to load a new script (as defined by the "Load filename" key). | |||
<br> | |||
--------- | |||
<br> | |||
==== <span style="color:purple; font-style:italic">Load filename</span> ==== | |||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |||
* '''Type:''' STRING | |||
* '''Default:''' "" | |||
</div> | |||
This key in the [[#Command subtree|Command subtree]] defines which on-disk file the sequencer should load when "Load new file" is set to "y". The filename must end in ".msl" and must not contain "..". | |||
<br> | |||
--------- | |||
<br> | |||
=== <span style="color:purple; font-style:italic">State</span> subtree === | === <span style="color:purple; font-style:italic">State</span> subtree === | ||
Line 112: | Line 198: | ||
</div> | </div> | ||
The {{Odbpath|path=State}} subtree in the [[#top|/Sequencer ODB tree]] is created by msequencer. It is used by the [[Sequencer]] to store various data while running the sequence. | |||
The user may wish to change the path of where Sequencer files are stored (see [[#Path]]) otherwise this tree is largely for internal use. | |||
<br> | <br> | ||
Line 471: | Line 559: | ||
* '''Default:''' 0 | * '''Default:''' 0 | ||
</div> | </div> | ||
This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] and | This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] and is used when the Sequencer is Waiting | ||
(i.e. is executing a Wait statement in the Sequencer script). It will contain the current value of the wait parameter. For example, | |||
if executing the statement "WAIT events 500" and the current count is 250, this key will contain 250. When the Sequencer is not executing a WAIT statement, this key will be set to 0. | |||
<br> | <br> | ||
Line 483: | Line 574: | ||
* '''Default:''' 0 | * '''Default:''' 0 | ||
</div> | </div> | ||
This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] and | This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] and is used when the Sequencer is Waiting | ||
(i.e. is executing a Wait statement in the Sequencer script). It will contain the Wait limit, e.g. it will contain '5' if the Sequencer is executing the statement "WAIT seconds 5". When the Sequencer is not executing a WAIT statement, this key will be set to 0. | |||
<br> | <br> | ||
--------- | --------- | ||
Line 496: | Line 587: | ||
* '''Default:''' 0 | * '''Default:''' 0 | ||
</div> | </div> | ||
This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] | This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]]. If the Sequencer is Waiting for a certain time (i.e. executing a Wait Seconds statement in the Sequencer script), this key will contain the time that the Sequencer started waiting. In all other cases, it will be set to 0. | ||
<br> | <br> | ||
Line 509: | Line 600: | ||
* '''Default:''' "" | * '''Default:''' "" | ||
</div> | </div> | ||
This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] and | This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]]. If the Sequencer is Waiting (i.e. is executing a Wait statement in the Sequencer script) it will contain the type of the Wait, e.g. "Seconds", "Events" or "ODB" and operator (e.g. "ODB>=" see [[#Example of /Sequencer tree|example above]]). | ||
<br> | <br> | ||
Line 521: | Line 612: | ||
* '''Default:''' "00:00:00" | * '''Default:''' "00:00:00" | ||
</div> | </div> | ||
This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] and contains ... | This key in the [[#State subtree|State subtree]] is filled by the [[Sequencer]] and contains the time of the latest MIDAS message. | ||
<br> | |||
--------- | |||
<br> | |||
=== <span style="color:purple; font-style:italic">Variables</span> subtree === | |||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |||
* '''Type:''' DIR | |||
</div> | |||
The {{Odbpath|path=Variables}} subtree in the [[#top|/Sequencer ODB tree]] is created by the msequencer program. It is used by the [[Sequencer]] to store input parameters used by the sequence (see [[Sequencer#PARAM|PARAM command]]). | |||
<br> | |||
--------- | |||
<br> | |||
==== <span style="color:purple; font-style:italic"><parameter name></span> ==== | |||
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> | |||
* '''Type:''' STRING | |||
* '''Default:''' | |||
</div> | |||
Keys are created when [[Sequencer#PARAM|PARAM statements]] are included in the [[Sequencer]] file. In the [[#Example of /Sequencer tree|example above]], | |||
the ODB key {{Odbpath|path=runs}} has been created in the {{Odbpath|path=Variables}} subtree with the value 3. The Sequencer file used in the example contained a statement | |||
"PARAM runs", and when the sequence was started, the user entered the value "3" for the number of runs. | |||
<br> | <br> |
Latest revision as of 14:45, 3 February 2020
Links
Purpose
The ODB /Sequencer tree contains information related to the Sequencer. The State and Script subdirectories are used by the Sequencer system and are not usually accessed directly by the user. The Command directory allows for programmatic control of the Sequencer.
Creating the /Sequencer tree
The /Sequencer ODB tree is created the first time that the msequencer program is run. It will be filled with default values.
Example of /Sequencer tree
An example of the /Sequencer tree where the sequencer is running is shown below.
$mhttpd -p 8080 -D $odbedit [local:Defaults:S]ls -rwl /Sequencer Key name Type #Val Size Last Opn Mode Value --------------------------------------------------------------------------- Sequencer DIR State DIR New File BOOL 1 4 5h 0 RWD n Path STRING 1 256 5h 0 RWD /home/cdms/packages/SuperCDMS_DAQ/MidasDAQ/online/sequencer/ Filename STRING 1 256 5h 0 RWD dc.msl Error STRING 1 256 5h 0 RWD Error line INT 1 4 5h 0 RWD 0 SError line INT 1 4 5h 0 RWD 0 Message STRING 1 256 5h 0 RWD Message Wait BOOL 1 4 5h 0 RWD n Running BOOL 1 4 5h 0 RWD n Finished BOOL 1 4 5h 0 RWD y Paused BOOL 1 4 5h 0 RWD n Current line number INT 1 4 5h 0 RWD 6 SCurrent line number INT 1 4 5h 0 RWD 4 Stop after run BOOL 1 4 5h 0 RWD n Transition request BOOL 1 4 5h 0 RWD n Loop start line INT 4 4 5h 0 RWD [0] 3 [1] 0 [2] 0 [3] 0 SLoop start line INT 4 4 5h 0 RWD [0] 1 [1] 0 [2] 0 [3] 0 Loop end line INT 4 4 5h 0 RWD [0] 8 [1] 0 [2] 0 [3] 0 SLoop end line INT 4 4 5h 0 RWD [0] 6 [1] 0 [2] 0 [3] 0 Loop counter INT 4 4 5h 0 RWD [0] 1 [1] 0 [2] 0 [3] 0 Loop n INT 4 4 5h 0 RWD [0] 200 [1] 0 [2] 0 [3] 0 Subdir STRING 1 256 5h 0 RWD Subdir end line INT 1 4 5h 0 RWD 0 Subdir not notify INT 1 4 5h 0 RWD 0 If index INT 1 4 5h 0 RWD 0 If line INT 4 4 5h 0 RWD [0] 0 [1] 0 [2] 0 [3] 0 If else line INT 4 4 5h 0 RWD [0] 0 [1] 0 [2] 0 [3] 0 If endif line INT 4 4 5h 0 RWD [0] 0 [1] 0 [2] 0 [3] 0 Stack index INT 1 4 5h 0 RWD 0 Subroutine end line INT 4 4 5h 0 RWD [0] 0 [1] 0 [2] 0 [3] 0 Subroutine return line INT 4 4 5h 0 RWD [0] 0 [1] 0 [2] 0 [3] 0 Subroutine call line INT 4 4 5h 0 RWD [0] 0 [1] 0 [2] 0 [3] 0 SSubroutine call line INT 4 4 5h 0 RWD [0] 0 [1] 0 [2] 0 [3] 0 Subroutine param STRING 4 256 5h 0 RWD [0] [1] [2] [3] Wait value FLOAT 1 4 5h 0 RWD 0 Wait limit FLOAT 1 4 5h 0 RWD 0 Start time DWORD 1 4 5h 0 RWD 0 Wait type STRING 1 32 5h 0 RWD Last msg STRING 1 10 5h 0 RWD 16:09:03 Script DIR Lines STRING 6 19 5h 0 RWD [0] LOOP 200 [1] TRANSITION START [2] WAIT SECONDS 120 [3] TRANSITION STOP [4] WAIT SECONDS 10 [5] ENDLOOP XML STRING 1 343 5h 0 RWD Command DIR Start script BOOL 1 4 5h 0 RWD n Stop immediately BOOL 1 4 5h 0 RWD n Load new file BOOL 1 4 5h 0 RWD n Load filename STRING 1 1 5h 0 RWD
Keys in the /Sequencer ODB tree
Command subtree
- Type: DIR
The Command subtree in the /Sequencer ODB tree is created by msequencer. The sequencer will perform various actions when keys in this subtree are set by the user.
Start script
- Type: BOOL
- Default: "n"
Setting this key in the Command subtree to "y" will start the currently-loaded sequencer script.
Stop immediately
- Type: BOOL
- Default: "n"
Setting this key in the Command subtree to "y" will stop the currently-running sequencer script.
Load new file
- Type: BOOL
- Default: "n"
Setting this key in the Command subtree to "y" will cause the sequencer to load a new script (as defined by the "Load filename" key).
Load filename
- Type: STRING
- Default: ""
This key in the Command subtree defines which on-disk file the sequencer should load when "Load new file" is set to "y". The filename must end in ".msl" and must not contain "..".
State subtree
- Type: DIR
The State subtree in the /Sequencer ODB tree is created by msequencer. It is used by the Sequencer to store various data while running the sequence.
The user may wish to change the path of where Sequencer files are stored (see #Path) otherwise this tree is largely for internal use.
Path
- Type: STRING
- Default: ""
This key in the State subtree contains the directory path of the sequencer loadfile(s)
Filename
- Type: STRING
- Default: ""
This key in the State subtree contains the name of the current sequencer loadfile.
Error
- Type: STRING
- Default: ""
This key in the State subtree contains the error message from the system when an error is detected, or blank if no error.
Error line
- Type: INT
- Default: 0
This key in the State subtree contains the loadfile line number where error occurred, or zero if no error.
Serror line
- Type: INT
- Default: 0
This key in the State subtree contains the ??? line number where error occurred, or zero if no error.
Message
- Type: STRING
- Default: ""
This key in the State subtree contains the Sequencer message
Message wait
- Type: BOOL
- Default: "n"
This key in the State subtree contains ...
Running
- Type: BOOL
- Default: "n"
This key in the State subtree indicates whether the sequencer is running.
Finished
- Type: BOOL
- Default: "y"
This key in the State subtree indicates whether the sequencer is finished.
Paused
- Type: BOOL
- Default: "y"
This key in the State subtree indicates whether the sequencer is paused.
Current line number
- Type: INT
- Default: 0
This key in the State subtree indicates the line number in the loadfile that the sequencer is currently executing.
SCurrent line number
- Type: INT
- Default: 0
This key in the State subtree indicates the line number in ??? that the sequencer is currently executing.
Stop after run
- Type: BOOL
- Default: "n"
This key in the State subtree indicates whether the sequencer should stop after current run
Transition request
- Type: BOOL
- Default: "n"
This key in the State subtree indicates whether a transition has been requested by the sequencer loadfile.
Transition request
- Type: BOOL
- Default: "n"
This key in the State subtree indicates whether a transition has been requested by the sequencer loadfile.
Loop start line
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree contains the line number(s) in the sequencer loadfile where a loop starts.
SLoop start line
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree contains the line number(s) ...
Loop end line
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree is filled by the Sequencer and contains the line number(s) in the sequencer loadfile where a loop ends.
SLoop end line
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree is filled by the Sequencer and contains the line number(s) ... where a loop ends.
Loop counter
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree is filled by the Sequencer and contains the loop counter for loops.
Loop n
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree is filled by the Sequencer and contains ...
Subdir
- Type: STRING
- Default: ""
This key in the State subtree is filled by the Sequencer and contains ...
Subdir end line
- Type: INT
- Default: 0
This key in the State subtree is filled by the Sequencer and contains ...
Subdir not notify
- Type: INT
- Default: 0
This key in the State subtree is filled by the Sequencer and contains ...
Stack index
- Type: INT
- Default: 0
This key in the State subtree is filled by the Sequencer and contains ...
Subroutine end line
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree is filled by the Sequencer and contains ...
Subroutine return line
- Type: INT array of 4 elements
- Default: 0,0,0,0
This key in the State subtree is filled by the Sequencer and contains ...
Subroutine param
- Type: STRING array of 4 elements
- Default:
This key in the State subtree is filled by the Sequencer and contains ...
Wait value
- Type: FLOAT
- Default: 0
This key in the State subtree is filled by the Sequencer and is used when the Sequencer is Waiting (i.e. is executing a Wait statement in the Sequencer script). It will contain the current value of the wait parameter. For example, if executing the statement "WAIT events 500" and the current count is 250, this key will contain 250. When the Sequencer is not executing a WAIT statement, this key will be set to 0.
Wait limit
- Type: FLOAT
- Default: 0
This key in the State subtree is filled by the Sequencer and is used when the Sequencer is Waiting
(i.e. is executing a Wait statement in the Sequencer script). It will contain the Wait limit, e.g. it will contain '5' if the Sequencer is executing the statement "WAIT seconds 5". When the Sequencer is not executing a WAIT statement, this key will be set to 0.
Start time
- Type: DWORD
- Default: 0
This key in the State subtree is filled by the Sequencer. If the Sequencer is Waiting for a certain time (i.e. executing a Wait Seconds statement in the Sequencer script), this key will contain the time that the Sequencer started waiting. In all other cases, it will be set to 0.
Wait type
- Type: STRING
- Default: ""
This key in the State subtree is filled by the Sequencer. If the Sequencer is Waiting (i.e. is executing a Wait statement in the Sequencer script) it will contain the type of the Wait, e.g. "Seconds", "Events" or "ODB" and operator (e.g. "ODB>=" see example above).
Last msg
- Type: STRING
- Default: "00:00:00"
This key in the State subtree is filled by the Sequencer and contains the time of the latest MIDAS message.
Variables subtree
- Type: DIR
The Variables subtree in the /Sequencer ODB tree is created by the msequencer program. It is used by the Sequencer to store input parameters used by the sequence (see PARAM command).
<parameter name>
- Type: STRING
- Default:
Keys are created when PARAM statements are included in the Sequencer file. In the example above, the ODB key runs has been created in the Variables subtree with the value 3. The Sequencer file used in the example contained a statement "PARAM runs", and when the sequence was started, the user entered the value "3" for the number of runs.