The Database Managers, Inc.

Contact The Database Managers, Inc.

Use an RSS enabled news reader to read these articles.Use an RSS enabled news reader to read these articles.

DataFlex Decompiler Information:

The Database Managers offers a DataFlex Decompiling Service for every major character-mode version of DataFlex and some versions of Visual DataFlex:

  • 2.1
  • 2.2
  • 2.3, 2.3b and 2.3 enhanced runtime
  • 3.0 and 3.01
  • 3.05 
  • 3.1
  • 3.2
  • Visual DataFlex (VDF) (availability varies -- contact us)
  • Web App  (availability varies -- contact us)

The decompilers generate code based on an unmodified FMAC.  This guarantees that the source code will be recompilable without manual changes from the user. 

Some parts of the original program are lost forever when a program is compiled.  These parts include: 

  • the original variable names
  • the window names
  • labels
  • comments 
  • blank lines

All of these parts are removed or replaced by the DataFlex compiler.  A decompiler can't do anything about blank lines or comments.  Variable names, labels and window names are assigned reasonable, generic names. 

Datafile names and field names are decompiled to their original names.  The decompiler checks the FILELIST.CFG, *.TAG and *.FD files for datafile names and field names.  If the programmer originally used CUSTOMER.NAME in the source code, the decompiler will also use CUSTOMER.NAME. 

Window names always start with the prefix PAGE.  The first page encountered will be called PAGE1.  The second will be called PAGE2, and so on.  Individual windows on the page will be given an appropriate suffix.  The third window on page 2, for example, will be called PAGE2.3.

Label names always start with the letters 'CL', for Constant Label.  A number will follow the 'CL' prefix.  CL23, for example, is constant label 23.  The number (23, in this example) part of the label corresponds directly with the original icode line generated by the compiler.  Due to macro compaction, the icode lines get shuffled around.  The label CL23: may not actually be on the 23rd source code line.  But it was originally the 23rd icode line. 

Variable names also have a prefix and suffix.  The prefix is always two letters.  The first letter is always V for variable.  The second letter is one of S, N, I, D, R for string, number, integer, date and real.  The variable suffix is a number that uniquely identifies the variable from all others of the same type. 

Indicators are the only exception to the variable name rule.  Indicators always have a prefix IND and the suffix identifies the indicator.  IND23 would distinguish indicator 23 from VI23, the variable integer 23. 

Constants are detected and are placed directly in the final source code.  Constants should look exactly like they did when the code was originally compiled. 

The generated code is quite readable.  The decompilers have been programmed to use standard indenting rules after certain block commands, such as BEGIN/END, REPEAT/LOOP and others.  We've even had some programmers remark that the generated code looks better than the original code! 

Back to the Top

More Information:

Other Popular DataFlex topics at The Database Managers, Inc.:

DataFlex Decompiler
Decompiler: Service | Examples | Guarantee | FAQ
Services | Programming | Contact Us | Recent Updates

Send feedback to: