dstIdent := expression [TIME timeExpression] dstIdent :?= expression |
dstIdent | in | Values destination (row identifier or whole structure identifier). |
expression | in | Expression defining a value. |
TIME timeExpression | in | Expression (AbsTime) defining the time of the value occurrence (optional parameter). |
TIME |
timeExpression
will be used for the time of when the value is generated. dstIdent
is the identifier of one value of: expression
must be given type. If not, the script will attempt to convert the value into the correct type. If it is not successful, then the result value will be invalid. RECORD (SD.RecordDef) _lArr REDIM _lArr[10] _lArr[2]^Int := 1 |
ALIAS _a SET _a AS U.Int _a := 1 WAIT |
ALIAS (SD.RecordDef) _aArr SET _aArr AS SV.Structure _aArr[2]^Int := 1 WAIT |
Conditional assignment :?=
In a conditional assignment, the expression is evaluated first, and the resulting value is compared to the current dstIden value.
If the values are different, the assignment is performed. If the values are not different, the assignment will not be performed.
When comparing values (if both values are valid), only the value without other attributes, such as the time of value creation is taken into account,
The comparison considers two invalid values to be the same.
Conditional assignment makes sense especially when changing the values of objects within DODM, which prevents unnecessary activities that follow the assignment.
For example:
A conditional assignment is the equivalent of the following entry
IF M.Output # _newValue THEN M.Output := _newValue ENDIF |
Example:
INT _prevValue _prevValue := U.Int ; assign previous value U.Int := U.Int + 1 ; add the value of 1 to object value IF U.Int = _prevValue THEN ; check the value ; the assignment has not been executed ELSE ; the assignment has been executed ENDIF |