MSPL Types and Type Conversion
MSPL Types and Type Conversion
All variables in MSPL are implicitly declared; you cannot explicitly declare a variable as any of the types listed below. These assignments must be of the form:
variableName = value;
Floating-point and integer values must be specified using the en-US cultural format.
MSPL Data Types
The following data types are supported by MSPL:
string: a Unicode string value.
integer: a 32-bit signed integer value.
float: an IEEE single-precision floating point value.
bool: a value that evaluates to true or false.
[ ]: a flat file.
collection: a grouping of one or more of the previous types.
Type Conversion Rules
If a variable has been implicitly declared as one type through assignment, and a value of a different type is later assigned to it, the type will be coerced by the type conversion rules below.
If the source type is string:
Result type is integer: The string will be converted to the corresponding integer value. An error occurs if the source string cannot be entirely consumed.
Result type is float: The string will be converted to a floating-point value. An error occurs if the source string cannot be entirely consumed.
Result type is bool: true if the string has a nonzero length; false if it is zero characters in length.
Result type is collection: A collection that contains a single string is created.
If the source type is integer:
Result type is string: A string representation of the integer value is created.
Result type is float: The integer will be converted to a floating-point value.
Result type is bool: true if the integer is nonzero; false if it is zero.
Result type is collection: A collection that contains a single integer value is created.
If the source type is float:
Result type is string: A string representation of the float value is created.
Result type is integer: An integer representation of the float value is created. All digits after the decimal point are truncated.
Result type is bool: true if the float is nonzero; false if it is zero.
Result type is collection: A collection that contains a single float value is created.
If the source type is bool:
Result type is string: If the value is true, a string that contains "true" is created; else if false, a string that contains "false" is created.
Result type is integer: If the value is true, an integer with a value of 1 is created; else if false, an integer with a value of 0 is created.
Result type is float: If the value is true, a float with a value of 1.0 is created; else if false, a float with a value of 0.0 is created.
Result type is collection: A collection that contains a single bool value is created.
If the source type is collection:
Result type is string: If at least one element is present in the collection, the coercion rules for converting the base type to a string are applied to the first element; else, if the collection is empty, an empty string value is used.
Result type is integer: If at least one element is present in the collection, the coercion rules for converting the base type to an integer are applied to the first element; else, if the collection is empty, the value 0 is used.
Result type is float: If at least one element is present in the collection, the coercion rules for converting the base type to a float are applied to the first element; else, if the collection is empty, the value 0.0 is used.
Result type is bool: true if the collection contains one or more items; false if it is empty.
Note
Two collections cannot be compared. The script will abort with an error if a collection comparison is attempted.