(Windows only; GUI for .NET only)
Returns an object reference to a .NET System.Object that contains (boxes) a .NET mapping of an ABL value. At run time, this mapping depends on the kind of ABL value passed to the function. If you pass an ABL primitive value, the function returns a corresponding .NET mapped object type. If you pass an ABL array of .NET-compatible elements, the function returns a corresponding .NET array object type.
A .NET-compatible ABL array is an ABL array of one of the listed ABL primitive types or an ABL array of any supported .NET object type (a .NET object type not mapped as specified in Table 4 ).
If you do not specify AS-data-type-expression and ABL-expression is an ABL primitive (or primitive array), ABL boxes ABL-expression using the default matching .NET type that corresponds to the ABL primitive type (or array element type) of ABL-expression.
This option has no meaning when ABL-expression is an ABL array of a supported .NET object type.
The following code creates a .NET DataTable with a single DataRow containing two columns. It then adds data to the row for the two columns. The Item indexed property used to access the columns has the data type System.Object. So, to add data to each column, you might have to use the BOX function to box the specified ABL value into an appropriate System.Object instance for the column. For example:
USING System.Data.* FROM ASSEMBLY. DEFINE VARIABLE dataTable1 AS DataTable NO-UNDO. DEFINE VARIABLE dcCustNum AS DataColumn NO-UNDO. DEFINE VARIABLE dcName AS DataColumn NO-UNDO. DEFINE VARIABLE dcBusType AS DataColumn NO-UNDO. DEFINE VARIABLE row1 AS DataRow NO-UNDO. dataTable1 = NEW DataTable(INPUT "Customer"). /* Create columns for a dataTable */ dcCustNum = NEW DataColumn(INPUT "CustNum"). dcName = NEW DataColumn(INPUT "Name"). dcBusType = NEW DataColumn(INPUT "BusType"). dataTable1:Columns:Add(INPUT dcCustNum). dataTable1:Columns:Add(INPUT dcName). dataTable1:Columns:Add(INPUT dcBusType). /* Create a new row */ row1 = dataTable1:NewRow( ). /* Add data to row */ row1:Item["CustNum"] = 1. row1:Item["Name"] = "Mr Jones". /* Without BOX, this automatically boxes System.Int32 value. */ row1:Item["BusType"] = BOX( 236, "UNSIGNED-BYTE"). /* System.Byte value */ |