LOCAL loList loList=CREATEOBJECT('FournierTransformationList') IF ... This.RecursiveLoop() ENDIF FUNCTION RecursiveLoop LOCAL loList loList=CREATEOBJECT('FournierTransformationList') loList.CopyObject(This) ... FUNCTION CopyObject PARAMETER toList LOCAL loObject,laFields[1],lnCompteur,lnCount,lcField,lcExec lnCount=AMEMBERS(laFields,toList) FOR lnCompteur=1 TO lnCount lcField=LOWER(laFields[lnCompteur]) IF NOT INLIST(UPPER(lcField),'BASECLASS','CLASS','PARENT') lcExec='This.'+lcField+'=toList.'+lcField &lcExec ENDIF NEXT