Is it possible to use CopyRecords to copy records by recnum descending.

I am creating a program that will "auto-repair" a .dat file if corrupted by first copy by recnum in ascending order when it fails in descending order.

Is there by any chanse a definition of how the DAT file is built? If the datfile is corrupted it would be nice to edit the position where the error is and keep a lot of data.
Most of the time there is a lenght issue and if i can correct it with a hex-editor it would be great.