*Use a master object for the additional properties (and methods too) LOCAL loMaster, loData CREATE CURSOR temp ('field1' c (10), 'field2' C(20)) APPEND BLANK REPLACE field1 WITH 'ONE', FIELD2 WITH 'TWO' loMaster = CREATEOBJECT('custom') loMaster.AddProperty('oData', null) SCATTER MEMO NAME loMaster.oData loMaster.AddProperty('NewProperty', 'New Value') ? loMaster.oData.field1 ? loMaster.oData.field2 ? loMaster.NewProperty APPEND BLANK REPLACE field1 WITH 'THREE', FIELD2 WITH 'FOUR' SCATTER MEMO NAME loMaster.oData ? loMaster.oData.field1 ? loMaster.oData.field2 ? loMaster.NewPropertyor
*Create the data object field by field (slower than a real SCATTER NAME) LOCAL loData CREATE CURSOR temp ('field1' c (10), 'field2' C(20)) APPEND BLANK REPLACE field1 WITH 'ONE', FIELD2 WITH 'TWO' loData = ScattertoObj() loData.AddProperty('NewProperty', 'New Value') ? loData.field1 ? loData.field2 ? loData.NewProperty FUNCTION ScattertoObj LOCAL loData, loTemp, lcField, laFields loData = CREATEOBJECT('custom') SCATTER MEMO NAME loTemp DIMENSION laFields(FCOUNT()) =AMEMBERS(laFields, loTemp) FOR EACH lcField IN laFields loData.AddProperty(lcField, EVAL(ALIAS() + '.' + lcField)) ENDFOR RETURN loDataHTH