Stephen
Yes you can do what you want with the report class
You can still use the recnum array but instead of a recnum you can store other things in it such as a pointer to your array
say you have your data in a list object/array as follws
// data for report
Object oMyData is a List
Send Add_Item 0 "Mike"
Send Add_Item 0 "Kelly"
Send Add_Item 0 "Lauren"
End_Object
first we enable the recnum array and fill the array and turn off IsLastRecord processing
Set pbFillIsLastRecord to False
// use recnum array
Set pbUseRecnumArray to True
// fill recnum array
Procedure DoFillRecnumArray
Integer iIndex
For iIndex from 0 to (item_Count(oMyData(Self))-1)
Send AddRecordToArray (Value(oMyData(Self),iIndex)) iIndex
Loop
End_Procedure
Instead of filling the recnum array with a record number it is filled with a pointer to my array with the data
the next step is to stop reading of records
// override read record
Procedure ReadRecord Integer rec#
Indicate Found True
End_Procedure
In order to also make this work with our new packages for RowID you need to add the following code to stop RowID processing
Procedure ReadByRowID RowID riRec
Indicate Found True
End_Procedure
// this is to make this work under > VDF10 (row ids)
Procedure AddRecordToArray String sValue Number nRecnum
Integer iCount
Move (Item_Count(oRecnumArray(Self))) to iCount
Send Add_Item to oRecnumArray 0 sValue
Set Aux_Value of oRecnumArray item (iCount) to nRecnum
Set RowId_Value of oRowIds (iCount) to (NullRowID())
End_Procedure
This should do the trick
Mike