Constants
String
All string literals must be contained within single quotation marks
( ' ' ). All ECL code is UTF-8 encoded, which means that all strings are
also UTF-8 encoded, whether Unicode or non-Unicode strings. Therefore, you
must use a UTF-8
UTF-8
editor (such as the ECL IDE
ECL IDE
program).
To include the single quote character (apostrophe) in a constant
string, prepend a backslash (\). To include the backslash character (\) in
a constant string, use two backslashes (\\) together.
STRING20 MyString2 := 'Fred\'s Place';
//evaluated as: "Fred's Place"
STRING20 MyString3 := 'Fred\\Ginger\'s Place';
//evaluated as: "Fred\Ginger's Place"
Other available escape characters are:
\t
tab
\n
new line
\r
carriage return
\nnn
3 octal digits (for any other character)
\uhhhh
lowercase "u" followed by 4 hexadecimal digits (for any
other UNICODE-only character)
MyString1 := 'abcd';
MyString2 := U'abcd\353'; // becomes 'abcdë'
Hexadecimal
Hexadecimal
string constants
string constants
must begin with a leading “x” character. Only
valid hexadecimal values (0-9, A-F) may be in the character string and
there must be an even number of characters.
DATA2 MyHexString := x'0D0A'; // a 2-byte hexadecimal string
Data string
Data string
constants
constants
must begin with a leading “D” character. This is
directly equivalent to casting the string constant to DATA.
MyDataString := D'abcd'; // same as: (DATA)'abcd'
Unicode string
Unicode string
constants must begin with a leading “U”
character. Characters between the quotes are utf8-encoded and the type of
the constant is UNICODE.
MyUnicodeString1 := U'abcd'; // same as: (UNICODE)'abcd'
MyUnicodeString2 := U'abcd\353'; // becomes 'abcdë'
MyUnicodeString3 := U'abcd\u00EB'; // becomes 'abcdë'
UTF8 string
UTF8 string
constants must begin with leading “U8”
characters. Characters between the quotes are utf8-encoded and the type of
the constant is UTF8.
MyUTF8String := U8'abcd\353';
VARSTRING string constants
VARSTRING string constants
must begin with a leading “V” character. The
terminating null byte is implied and type of the constant is
VARSTRING.
MyVarString := V'abcd'; // same as: (VARSTRING)'abcd'
QSTRING string constants
QSTRING string constants
must begin with a leading “Q” character. The
terminating null byte is implied and type of the constant is
VARSTRING.
MyQString := Q'ABCD'; // same as: (QSTRING)'ABCD'
Numeric
Numeric constants containing a decimal portion are treated as REAL
values (scientific notation is allowed) and those without are treated as
INTEGER
INTEGER
(see Value Types). Integer
constants may be decimal, hexadecimal, or binary values.
Hexadecimal
Hexadecimal
values are specified with either a leading “0x” or a
trailing “x” character. Binary values
Binary values
are specified with either a leading “0b” or a trailing “b”
character.
MyInt1 := 10; // value of MyInt1 is the INTEGER value 10
MyInt2 := 0x0A; // value of MyInt2 is the INTEGER value 10
MyInt3 := 0Ax; // value of MyInt3 is the INTEGER value 10
MyInt4 := 0b1010; // value of MyInt4 is the INTEGER value 10
MyInt5 := 1010b; // value of MyInt5 is the INTEGER value 10
MyReal1 := 10.0; // value of MyReal1 is the REAL value 10.0
MyReal2 := 1.0e1; // value of MyReal2 is the REAL value 10.0
Compile Time Constants
The following system constants
constants
system constants
are available at compile time. These can be useful in
creating conditional code.
__ECL_VERSION__
__ECL_VERSION__
A STRING containing the value of the platform version.
For example, '6.4.0'
__ECL_VERSION_MAJOR__
__ECL_VERSION_MAJOR__
An INTEGER containing the value of the major portion of
the platform version. For example, '6'
__ECL_VERSION_MINOR__
__ECL_VERSION_MINOR__
An INTEGER containing the value of the minor portion of
the platform version. For example, '4'
__ECL_LEGACY_MODE__
__ECL_LEGACY_MODE__
A BOOLEAN value indicating if it is being compiled with
legacy IMPORT semantics.
__OS__
__OS__
A STRING indicating the operating system to which it is
being compiled. (Available values are: 'windows' or
'linux')
__STAND_ALONE__
__STAND_ALONE__
A BOOLEAN value indicating if it is being compiled to a
stand-alone executable.
Example:
IMPORT STD;
STRING14 fGetDateTimeString() :=
#IF(__ECL_VERSION_MAJOR__ > 5) or ((__ECL_VERSION_MAJOR__ = 5) AND (__ECL_VERSION_MINOR__ >= 2))
STD.Date.SecondsToString(STD.Date.CurrentSeconds(true), '%Y%m%d%H%M%S');
#ELSE
FUNCTION
string14 fGetDimeTime():= // 14 characters returned
BEGINC++
#option action
struct tm localt; // localtime in "tm" structure
time_t timeinsecs; // variable to store time in secs
time(&timeinsecs);
localtime_r(&timeinsecs,&localt);
char temp[15];
strftime(temp , 15, "%Y%m%d%H%M%S", &localt); // Formats the localtime to YYYYMMDDhhmmss
strncpy(__result, temp, 14);
ENDC++;
RETURN fGetDimeTime();
END;
#END;