X++ conversion runtime functions
This article describes the conversion run-time functions.
any2Date
Converts an anytype value to a date value.
date any2Date(anytype object)
Parameters
Parameter | Description |
---|---|
object | The value to convert to a date. |
Return value
A date value.
Remarks
The object parameter can be of most data types, but useful output is obtained when it's of the str or int type. Inappropriate content generates a run-time error.
Example
static void any2DateExample(Args _args)
{
date myDate;
str s;
int i;
s = "2010 6 17"; // A string object, of yyyy mm dd.
myDate = any2Date(s);
Global::info(strFmt("%1 is output, from input of "2010 6 17"", myDate));
i = 40361; // An int object, which represents the number of days from 1900/01/01.
myDate = any2Date(i);
Global::info(strFmt("%1 is output, from input of 40361", myDate));
}
/**** Infolog display.
Message (04:44:15 pm)
6/17/2010 is output, from input of "2010 6 17"
7/4/2010 is output, from input of 40361
****/
any2Enum
Converts an anytype value to the Name property value of an element in the target enum.
enum any2Enum(anytype object)
Parameters
Parameter | Description |
---|---|
object | The value to match the Value property of an element in the target enum. |
Return value
The value of the Name property for whichever element in the target enum has a Value property that matches the input parameter.
Remarks
The object parameter can be of most data types, but useful data is obtained only when you use a parameter of the str or int type. This input object parameter refers to the Value property of an individual element in the target enum.
Example
static void any2EnumExample(Args _args)
{
NoYes myNoYes; // NoYes is an enum.
int i;
str s;
i = 0; // An int that will be converted.
myNoYes = any2Enum(i);
Global::info(strfmt("'%1' - is the output, from input of the %2 as int.", myNoYes, i));
s = "1"; // A str that will be converted.
myNoYes = any2Enum(s);
Global::info(strfmt("'%1' - is the output, from input of the %2 as str.", myNoYes, s));
/**** Infolog display.
Message (01:05:32 pm)
'No' - is the output, from input of the 0 as int.
'Yes' - is the output, from input of the 1 as str.
****/
}
any2Guid
Converts the specified anytype object to a GUID object.
guid any2Guid(anytype object)
Parameters
Parameter | Description |
---|---|
object | The value to convert to a GUID object. |
Return value
A GUID object.
any2Int
Converts an anytype value to an int value.
int any2Int(anytype object)
Parameters
Parameter | Description |
---|---|
object | The value to convert. |
Return value
An int value.
Remarks
The object parameter can be of most data types, but useful data is obtained only when you use parameters of the enum, real, or str type.
Example
static void any2IntExample(Args _args)
{
int myInt;
str s;
NoYes a;
real r;
s = "31";
myInt = any2Int(s);
Global::info(strfmt("%1 is the output, from input of 31 as a str value.", myInt));
a = NoYes::No;
myInt = any2Int(a);
Global::info(strfmt("%1 is the output, from input of NoYes::No as an enum value.", myInt));
r = 5.34e2;
myInt = any2Int(r);
Global::info(strfmt("%1 is the output, from the input of 5.34e2 as a real value.", myInt));
}
/**** Infolog display.
Message (02:23:59 pm)
31 is the output, from input of 31 as a str value.
0 is the output, from input of NoYes::No as an enum value.
534 is the output, from the input of 5.34e2 as a real value.
****/
any2Int64
Converts an anytype object to an int64 object.
int64 any2Int64(anytype object)
Parameters
Parameter | Description |
---|---|
object | The anytype object to convert. |
Return value
An int64 object.
any2Real
Converts an anytype value to a real value.
real any2Real(anytype object)
Parameters
Parameter | Description |
---|---|
object | The value to convert. |
Return value
A real value.
Remarks
The object parameter can be of most data types, but useful output is obtained for input elements of the date, int, enum, and str types.
Example
static void any2RealExample(Args _args)
{
real myReal;
str s;
int i;
NoYes a;
s = "5.12";
myReal = any2Real(s);
Global::info(strfmt("%1 is the output from the input of 5.12 as a str object", myReal));
i = 64;
myReal = any2Real(i);
Global::info(strfmt("%1 is the output from the input of 64 as an int object", myReal));
a = NoYes::Yes;
myReal = any2Real(a);
Global::info(strfmt("%1 is the output from the input of NoYes::Yes as an enum object", myReal));
}
/****Infolog display.
Message (02:43:57 pm)
5.12 is the output from the input of 5.12 as a str object
64.00 is the output from the input of 64 as an int object
1.00 is the output from the input of NoYes::Yes as an enum object
****/
any2Str
Converts an anytype value to a str value.
str any2Str(anytype object)
Parameters
Parameter | Description |
---|---|
object | The value to convert. |
Return value
A str value.
Remarks
The object parameter can be of most data types, but useful output is obtained from input elements of the date, int, and enum types.
Example
static void any2StrExample(Args _args)
{
str myStr;
anytype a;
a = "Any to string";
myStr = any2Str(a);
Global::info(strFmt("%1 is output, from input of Any to string as a str value", myStr));
a = NoYes::Yes;
myStr = any2Str(a);
Global::info(strFmt("%1 is output, from input of NoYes::Yes as an enumeration", myStr));
}
/****Infolog Display
Message (09:08:46 am)
Any to string is output, from input of Any to string as a str value
1 is output, from input of NoYes::Yes as an enumeration
****/
anytodate
See any2Date.
anytoenum
See any2Enum.
anytoguid
See any2Guid.
anytoint
See any2Int.
anytoint64
See any2Int64.
anytoreal
See any2Real.
anytostr
See any2Str.
char2Num
Converts a character in a string to the ASCII value of the character.
int char2Num(str text, int position)
Parameters
Parameter | Description |
---|---|
text | The string that contains the character. |
position | The position of the character in the string. |
Return value
The ASCII value of the character as an int object.
Remarks
char2Num("ABCDEFG",3); //Returns the numeric value of C, which is 67.
char2Num("ABCDEFG",1); //Returns the numeric value of A, which is 65.
date2Num
Converts a date to an integer that corresponds to the number of days since January 1, 1900.
int date2Num(date _date)
Parameters
Parameter | Description |
---|---|
_date | The date to convert. |
Return value
The number of days between January 1, 1900, and the specified date.
Example
//Returns the value377.
date2Num(1311901);
static void date2NumExample(Args _arg)
{
date d = today();
int i;
i = date2Num(d);
print i;
}
date2Str
Converts the specified date to a string.
str date2Str(date date, int sequence, int day, int separator1, int month, int separator2, int year [, int flags = DateFlags::None])
Parameters
Parameter | Description |
---|---|
date | The date to convert. |
sequence | A three-digit number that indicates the sequence for the components of the date: 1 for day, 2 for month, and 3 for year. |
day | An enumeration value that indicates the format for the day component of the date. |
separator1 | An enumeration value that indicates the separator to use between the first two components of the date. |
month | An enumeration value that indicates the format for the month component of the date. |
separator2 | An enumeration value that indicates the separator to use between the last two components of the date. |
year | An enumeration value that indicates the format for the year component of the date. |
flags | A DateFlags enumeration value that indicates whether the language settings on the local computer should be used to calculate the proper left-to-right or right-to-left sequence in the returned string. |
Return value
A string that represents the specified date.
Remarks
MorphX allocates valid values to the formatting parameters if the specified values aren't valid. To use the date format that the user specified in Regional Settings, use the strFmt or date2Str function and specify -1 in all the formatting parameters. When the regional settings control the date format, the settings can change from user to user. If -1 is used for either separator parameter, both separators default to Regional Settings. The sequence parameter values must be any three-digit number that contains exactly one occurrence of each the digits 1, 2 and 3. The digits 1, 2, and 3 represent day, month, and year, respectively. For example, 321 produces the sequence year, month, and day. Or the value can be -1 to use Regional Settings. No enumeration type should be used for this parameter, because numbers such as 321 exceed the range of valid values for enumeration values, which is 0 through 250, inclusive. The default value of the flags parameter is the DateFlags::None enumeration value, which means no left-to-right or right-to-left sequence processing is done.
Example
The following example displays the current date in the sequence of year, month, and day.
static void Job2(Args _args)
{
date currentDate = today();
str s;
int iEnum;
s = date2Str
(currentDate,
321,
DateDay::Digits2,
DateSeparator::Hyphen, // separator1
DateMonth::Digits2,
DateSeparator::Hyphen, // separator2
DateYear::Digits4
);
info("Today is: " + s);
}
/** Example Infolog output
Message (12:36:21 pm)
Today is: 2009-01-13
**/
datetime2Str
Converts a utcdatetime value into a string.
str datetime2Str(utcdatetime datetime [, int flags = DateFlags::None])
Parameters
Parameter | Description |
---|---|
datetime | The utcdatetime value to convert. |
flags | A DateFlags enumeration value that indicates whether to use local settings for right-to-left output. |
Return value
A string that represents the utcdatetime value that was specified as the datetime parameter.
Remarks
Null date-time input
If the minimum utcdatetime value is specified for the datetime parameter, the datetime2Str function treats it as a null input value. This causes the function to return an empty string. The date-time 1900-01-01T00:00:00 is returned by the DateTimeUtil::minValue method. This minimum value is treated as null.
Right-to-left local settings
The default behavior of this function is to generate the string in left-to-right sequence, where the year portion is leftmost. However, the flags parameter value of the DateFlags::FormatAll enumeration value directs the function to generate the string in right-to-left sequence if the local settings are configured for right-to-left. The format of the toStr method of the DateTimeUtil class is unaffected by regional settings.
Example
static void jobTestDatetime2str( Args _args )
{
utcdatetime utc2 = 1959-06-17T15:44:33;
str s3;
s3 = datetime2Str( utc2 );
info( s3 );
}
enum2Str
Converts the specified enumerated text to a character representation.
str enum2Str(enum enum)
Parameters
Parameter | Description |
---|---|
enum | The enumerated text to convert. |
Return value
The value of the enumeration as a string.
Example
The following example returns the string "Not included." This is the label for the IncludeNot value of the ListCode enumeration type.
static void enum2StrExample(Args _arg)
{
ListCode l;
l = ListCode::IncludeNot;
print enum2Str(l);
}
guid2Str
Converts the specified GUID object to the equivalent string.
str guid2String(guid _uuid)
Parameters
Parameter | Description |
---|---|
_uuid | The GUID object to convert. |
Return value
The string equivalent of the specified GUID object.
Example
static void guid2StrExample()
{
guid _guid;
str stringGuid;
_guid = Global::guidFromString("{12345678-1234-1234-1234-123456789abc}");
print strfmt("GUID is %1", _guid);
stringGuid = guid2str(_guid);
info("String GUID is " + stringGuid);
}
/**** Output to Infolog
String GUID is {12345678-1234-1234-1234-123456789ABC}
****/
int2Str
Converts an integer to the equivalent string.
str int2Str(int integer)
Parameters
Parameter | Description |
---|---|
integer | The integer to convert. |
Return value
A string representation of the integer.
Example
static void int2StrExample(Args _arg)
{
print "This is int2Str, value is " + int2Str(intMax());
print "This is int642Str, value is " + int642Str(int64Max());
}
int642Str
Converts the specified integer parameter to the equivalent text string.
str int642Str(int64 integer)
Parameters
Parameter | Description |
---|---|
integer | The int64 to convert to a string. |
Return value
The equivalent text string of the integer parameter.
Example
static void example()
{
print "This is int2Str, value is " + int2Str(intMax());
print "This is int642Str, value is " + int642Str(int64Max());
}
num2Char
Converts an integer to the corresponding ASCII character.
str num2Char(int figure)
Parameters
Parameter | Description |
---|---|
figure | The integer to convert to a character. |
Return value
The character that is represented by the specified integer.
Example
static void num2CharExample(Args _arg)
{
str s;
s = num2Char(42);
// Prints an asterisk * -the character represented by 42.
print s;
}
num2Date
Retrieves the date that corresponds to the specified number of days after January 1, 1900.
date num2Date(int _days)
Parameters
Parameter | Description |
---|---|
_days | The number of days after January 1, 1900 to return the date for. Note: The first valid date is January 1, 1901. Therefore, the num2Date function doesn't return a valid date unless _days is more than 365. |
Return value
The date that is the number of days that is specified by the _days parameter after January 1, 1900.
Remarks
num2Date(366); //Returns the date 01/01/1901 (1 January 1901).
num2Str
Converts a real number to a string.
str num2Str(real number, int character, int decimals, int separator1, int separator2)
Parameters
Parameter | Description |
---|---|
number | The real number to convert to a string. |
character | The minimum number of characters that are required in the text. |
decimals | The required number of decimal places. |
separator1 | A DecimalSeparator enumeration value. |
separator2 | A ThousandSeparator enumeration value. |
Return value
A string that represents the number.
Remarks
For the decimals parameter, the maximum value is 16. If a larger number is used, this method obtains a value for the decimals parameter from the local computer instead. In both cases, rounding occurs. Here are the possible enumeration values for the separator1 parameter:
- 99 – Auto (the formatting settings of the user determine what decimal separator is used), enumeration value DecimalSeparator::Auto
- 1 – Dot (.), enumeration value DecimalSeparator::Dot
- 2 – Comma (,), enumeration value DecimalSeparator::Comma
Here are the possible values for the separator2 parameter:
- 99 – Auto (the formatting settings of the user determine what thousand separator is used)
- 0 – None (no thousand separator), enumeration value ThousandSeparator::None
- 1 – Dot (.), enumeration value ThousandSeparator::Dot
- 2 – Comma (,), enumeration value ThousandSeparator::Comma
- 3 – Apostrophe ('), enumeration value ThousandSeparator::Apostrophe
- 4 – Space ( ), enumeration value ThousandSeparator::Space
Example
In the following code example, the first call to the num2str method provides 16 for the decimals parameter, and the second call provides 17.
static void Job_Num2Str(Args _args)
{
real realNum = 0.1294567890123456777; // 19 decimals places.
info(Num2Str(realNum, 0, 16, DecimalSeparator::Dot, ThousandSeparator::Space)); // 16 decimal places
info(Num2Str(realNum, 0, 17, DecimalSeparator::Dot, ThousandSeparator::Space)); // 17 decimal places
}
Output
The messages are in the following Infolog output. The first number in the output contains 16 decimal place digits, whereas the second number contains only two decimal place digits.
Message (10:18:12)
0.1294567890123457
0.13
str2Date
Converts the specified string to a date value.
date str2Date(str _text, str _sequence)
Parameters
Parameter | Description |
---|---|
_text | The string to convert to a date value. |
_sequence | A three-digit integer that describes the positions of the day, month, and year in the string to convert. |
Return value
A date value.
Remarks
Use the following values to specify the positions of the day, month, and year in the _sequence parameter:
- Day: 1
- Month: 2
- Year: 3
For example, if the sequence in the string is month, year, and then day, the _sequence parameter must be 231. A 0 (zero) date is returned if the input parameters specify an invalid date. The following two examples specify an invalid date.
str2Date("31/12/44", 123) // Year must be four digits to reach the minimum of January 1 1901.
str2Date("31/12/2044", 213) // 213 means the month occurs first in the string, but 31 cannot be a month.
Example
static void str2DateExample(Args _arg)
{
date d;
d = str2Date("22/11/2007", 123);
print d;
}
str2Datetime
Generates a utcdatetime value from the specified string of date and time information.
utcdatetime str2datetime( str text, int sequence )
Parameters
Parameter | Description |
---|---|
text | The string to convert to a utcdatetime value. |
sequence | A three-digit number that describes the sequence of the date components in the text parameter. |
Return value
A utcdatetime value that represents the specified date and time.
Remarks
The syntax requirements for the date portion of the text parameter are flexible. The variety of valid formats is the same as in the date2str function. Each of the following calls to str2datetime is valid, and all of them produce the same output.
utc3 = str2datetime( "1985/02/25 23:04:59" ,321 );
utc3 = str2datetime( "Feb-1985-25 11:04:59 pm" ,231 );
utc3 = str2datetime( "2 25 1985 11:04:59 pm" ,123 );
Each component of the date time is represented by a digit in the sequence parameter:
- 1 – Day
- 2 – Month
- 3 – Year
For example, year, month, day order is 321. All valid values contain each of these three digits exactly one time. If the value of the sequence parameter isn't valid, the regional settings are used to interpret the input text parameter. If the input parameters describe an invalid date and time, an empty string is returned.
Example
static void JobTestStr2datetime( Args _args )
{
utcdatetime utc3;
str sTemp;
utc3 = str2datetime( "1985/02/25 23:04:59" ,321 );
sTemp = datetime2str( utc3 );
print( "sTemp == " + sTemp );
}
str2Enum
Retrieves the enum element for which the localized Label property value matches the input string.
enum str2Enum(enum _type, str _text)
Parameters
Parameter | Description |
---|---|
_type | A variable that is declared of the enum type. |
_text | The localized Label property text of the target element in the enum. |
Return value
An element of the target enum, which also represents an int.
Remarks
The related function enum2str returns the value of a Label property from one element in the enum. The value that is returned by enum2str function can be the input for the _type parameter of the str2enum function. An appropriate value for the _text parameter is enum2Str(BankAccountType::SavingsAccount). Each element of an enum has a Name property and a Label property. In a fresh install, the Name values are almost always English words. In the English edition, the Label property value is almost always the same as the Name value. However, in non-English editions, the Label values are localized and therefore don't match the Name values.
Example
To avoid string mismatches that are caused by localization to other spoken languages, we recommend that you use the enum2str function to generate the input into the str2enum function. The following example shows the appropriate way to use the str2enum function together with the enum2str function.
static void str2Enum_AcrossLangs(Args _arg)
{
BankAccountType bat;
str sEnumValueLabelLocalized;
int nInt;
// enum2str.
sEnumValueLabelLocalized = enum2str(BankAccountType::SavingsAccount);
info("Localized friendly string: "
+ sEnumValueLabelLocalized);
// str2enum.
bat = str2Enum(bat, sEnumValueLabelLocalized);
nInt = bat;
info("nInt = " + int2str(nInt));
/********** Actual output:
Message (04:32:12 pm)
Localized friendly string: Savings account
nInt = 1
**********/
}
str2Guid
Converts a string to a GUID object.
Guid str2Guid(str text)
Parameters
Parameter | Description |
---|---|
guid | A string that represents a GUID. |
Return value
A GUID that is represented by the input string.
Remarks
For example, a valid value for the guid parameter is {12345678-1234-abCD-3456-123456789012}, either with or without the braces.
str2Int
Converts a string to the equivalent integer.
int str2Int(str _text)
Parameters
Parameter | Description |
---|---|
_text | The string to convert to an integer. |
Return value
The integer equivalent of the specified string.
Example
static void str2IntExample(Args _arg)
{
int i;
i = str2Int("1234567890");
print "i = " + int2Str(i);
}
str2Int64
Converts a string into an Int64 value.
int str2Int64(str text)
Parameters
Parameter | Description |
---|---|
text | The string to convert. |
Return value
The Int64 value of the specified string.
Example
static void str2Int64Example(Args _args)
{
str myStr;
str tooBig;
Int64 myInt64;
myStr = "1234567890";
tooBig = int642str(int64Max()+1);
myInt64 = str2Int64(mystr);
print strfmt ("int64: %1",myInt64);
myInt64 = str2Int64(tooBig);
print strfmt ("Too big int64: %1",myInt64);
}
str2Num
Converts a string to a real number.
real str2Num(str _text)
Parameters
Parameter | Description |
---|---|
_text | The string to convert to a real number. |
Return value
The real number if the specified string contains a valid number; otherwise, 0 (zero).
Remarks
The following examples show how this function is used.
str2Num("123.45") returns the value 123.45.
str2Num("a123") returns the value 0.0.
str2Num("123a") returns the value 123.00.
Scanning occurs from left to right and ends when a character can't be converted to part of a real number.
Example
static void str2NumToReal(Args _arg)
{
real r;
str s;
r = str2Num("3.15");
s = strFmt("r = %1", r);
info(s);
}
/*** Infolog output.
Message_@SYS14327 (02:36:12 pm)
r = 3.15
***/
static void str2NumExponentialSyntax(Args _args)
{
Qty qty1, qty2, qty3;
qty1 = str2num('1e-3'); // Bad syntax by the user.
qty2 = str2num('1.e-3');
qty3 = str2num('1.0e-3');
info(strfmt('Result: %1; Expected: %2', num2str(qty1, 0,3,2,0), '0.001'));
info(strfmt('Result: %1; Expected: %2', num2str(qty2, 0,3,2,0), '0.001'));
info(strfmt('Result: %1; Expected: %2', num2str(qty3, 0,3,2,0), '0.001'));
}
/*** Infolog output. The first result differs from expectations.
Message_@SYS14327 (02:20:55 pm)
Result: 1,000; Expected: 0.001
Result: 0,001; Expected: 0.001
Result: 0,001; Expected: 0.001
***/
str2Time
Converts a string to a timeOfDay value.
int str2Time(str _text)
Parameters
Parameter | Description |
---|---|
_text | The time to use to calculate the number of seconds since midnight. |
Return value
The number of seconds between midnight and the _text parameter; otherwise, -1.
Remarks
str2Time("05:01:37") //Returns the value 18097.
str2Time("7 o'clock") //Returns the value -1.
Example
static void str2TimeExample(Args _arg)
{
int i;
i = str2Time("11:30");
print i;
}
time2Str
Converts a timeOfDay value to a string that includes hours, minutes, and seconds.
str time2Str(int _time, int _separator, int _timeFormat)
Parameters
Parameter | Description |
---|---|
_time | A timeOfDay value. |
_separator | A TimeSeparator enumeration value that indicates the characters between the hours, minutes, and seconds in the output string. |
_timeFormat | A TimeFormat enumeration value that indicates whether a 12-hour clock or a 24-hour clock is used. |
Return value
A string that represents the specified time.
Remarks
The value of the _time parameter is the number of seconds since midnight.
Example
static void TimeJob4(Args _args)
{
timeOfDay theTime = timeNow();
info( time2Str(theTime, TimeSeparator::Colon, TimeFormat::AMPM) );
}
/**
Message (04:33:56 pm)
04:33:56 pm
**/
uint2Str
Converts an integer to a string. The assumption is that the integer is unsigned.
str uint2Str(int integer)
Parameters
Parameter | Description |
---|---|
integer | The integer to convert. |
Return value
The string equivalent to the specified unsigned integer.
Remarks
Use this function instead of the int2str function for very large integers, such as record IDs.
info(int2str(3123456789)); //returns -1171510507 as a string.
info(uint2str(3123456789)); //returns 3123456789 as a string.