Wrong result when assigning a handle to an any variable

Symptom

If you assign the handle of an object (for example a window) to an array whose datatype is any, the result is incorrect: you always get 0.

Environment

PowerBuilder

Reproducing the Issue

  1. Create an external DataWindow object with a column of type long

  2. Assign this object to a DataWindow controldw_1

  3. Code the following script in the Open event of the DataWindow control

    any la_array[]
    la_array[1] = Handle(this)
    
    dw_1.InsertRow(0)
    dw_1.SetItem(1, 1, la_array[1])
    
    dw_1.InsertRow(0)
    dw_1.SetItem(2, 1, Handle(this))

You will see that values of each row are different !! For your convenience, see attached example pb.zip.

Solution

As a workaround, you can cast the any array to a Long as follows:

la_array[1] = Long(Handle(this))