orting your applications is a straightforward process. Existing DBF and DBT files are used as is, until you choose to port them to SQL. Note that you may elect to use SQL and DBF databases simultaneously in the same application, giving you the best of both worlds.
Your existing .PRG files are then processed by the OnCmd compiler, either invoked from a command line, or imported into our project system. Because of differences in dBase, Fox, and Clipper you may find it desirable to run your .PRG files through our MIGRATE utility to maximize compatibility with OnCmd.
OnCmd also provides an error analysis utility so that you can quickly analyse the errors that may result from compiling dozens or hundreds of programs in your application. This may help you to determine, for example, that 1000 errors is really just the same 2 errors occurring 500 times each. The creation of one or two simple UDF (user defined functions) may be all that is required to eliminate the errors.
Clipper users will be pleased to note that OnCmd implements their unique code block facility. Neither dBase nor Fox provides a mechanism for supporting this code.
After you have cleanly ported your xBase application, you may now start to exploit the many additional features of OnCmd. (further described on the Advantages, Porting, SQL, and Features pages). The benefits of multiple platforms and application scalability are now options you can explore.
From the perspective of an application being ported, especially a long-term text based application, you would probably exploit the following extensions:
Since your text-based apps are automatically GUI enabled when run under OnCmd, your users now enjoy full mouse navigation for their xBase READ data entry templates. By just changing the picture clauses on the xBase get operations, you can easily implement GUI controls drop-down list fields, radio buttons, check boxes, and other controls to optimize data entry. In addition, you may easily blend frame menus and button bars to replace traditional navigational fields in xBase applications. Your applications can then be completely mouse-enabled without any major structural changes to your code. You can even polish up your applications by using the graphics primitives to draw lines, rectanges, circles, and ellipses. Because OnCmd supports a virtual window, you might want to redo some of your data entry screens so that they emulate exactly the layout of the physical input form. If enabled, OnCmds virtual forms mode will automatically scroll the appropriate section of the data entry template into the viewable window area.
You may wish to change the M memo fields in your xBase applications to B binary fields in OnCmd. This allows the storage of any binary data, as well as dynamically reclaiming disk space from deleted fields (which is not done in xBase memo fields until the entire database is packed.
Improve your report management by issuing enhanced calls to the spooling system to set options such as report name, allowing better management of the spool queue.
OnCmds optional index server can be implemented without any changes to your application, increasing the performance of applications with multiple users sharing databases, or sorting data on remote nodes. The server also reduces consumption of network file handles, which increases the number of concurrent open files in a multiuser environment. You may then decide to keep commonly used databases open in OnCmd, which can improve performance..
Improvements you add from this point on are only limited by your imagination. Use binary objects, bitmap, and multimedia support to store voice clips or pictures on your employee database. Add schematics and spec sheets to your product database. Build a complete document management system. Use OnCmds built-in compression & decompression calls to reduce storage requirements. Or even the encryption & decryption facilties for the ultimate in security.
Add message-passing to your applications to notify multiple users of database updates, or as a signal to have the application automatically refresh the currently displayed screen. You can even use the built-in TCPIP support to message to OnCmd or non-OnCmd applications (like a web server) through the Internet.
OnCmds software interrupts allow xBase applications to escape the linear execution model, and respond to events such as external messages and mouse clicks. You can even respond to alarms or to real time input from devices such as a bar code reader.
If all of this power of OnCmd is not enough, you can make function calls to applications written in any language and compiled to a .DLL - this may be appropriate if you have used a third-party library in your application, and you need to replace this functionality. However, remember that the functionality of many third-party libraries are included in the base language facilities of OnCmd.