Another alternative is to create a class that does the copying, but use a virtual method to do the deep assign of the fields.
CopyTPS2SQL CLASS,TYPE
Copy PROCEDURE(FILE pTPS,FILE pSQL,STRING pProgressText,LONG pProgressBar,UNSIGNED pFeq)
Assign PROCEDURE,VIRTUAL
END
CopyTPS2SQL.Copy PROCEDURE(FILE pTPS,FILE pSQL,STRING pProgressText,LONG pProgressBar,UNSIGNED pFeq)
CODE
!Your existing code, wherein it calls SELF.Assign()
CopyTPS2SQL.Assign PROCEDURE
CODE
!Abstract Virtual
ASSERT(False, 'CopyTPS2SQL.Assign must be derived')
!For each file
CT2S_SomeFile CLASS(CopyTPS2SQL)
Assign PROCEDURE,DERIVED
END
CT2S_SomeFile.Assign PROCEDURE
CODE
SomeFileSQL.Record :=: SomeFileTps.Record