Copying complete arrays

The compiler allows the .* notation to assign an array to another array with the same structure. Static array elements are copied by value (except objects and LOB members), while elements of dynamic arrays are copied by reference, even for simple data types. This means that after assigning a dynamic array with the .* notation, if you modify an element in one of the arrays, the change will be visible in the other array. You must pay attention to this behavior if you are used to the .* notation for simple records.

Note: When assigning a dynamic array with the .* notation, all elements are copied by reference:
MAIN
  DEFINE a1, a2 DYNAMIC ARRAY OF RECORD
             key INTEGER
         END RECORD
  LET a1[1].key = 123
  LET a2.* = a1.*
  DISPLAY a2[1].key    -- shows 123
  LET a2[1].key = 456
  DISPLAY a1[1].key    -- shows 456
END MAIN