The flexibility of CRC-based r-code makes it easy to distribute a new release of an existing application.
To distribute a new release of an existing application:
1. Create an incremental .df file of your application database using the Data Administration tool (for graphical environments) or the Data Dictionary's Admin submenu (for character environments). For more information on creating an incremental .df file, see OpenEdge Data Management: Database Administration.
2. Recompile source files that were affected by the new schema changes.
3. Send the .df file and copies of the new r-code files that were affected by the schema changes to your users. After the users load the incremental .df file, they can immediately run your new .r code.
Essentially, the steps you take are the same as when you use encrypted source, but you gain the following advantages:
You do not have to encrypt your procedures. However, you need to recompile some r-code.
The user does not have to compile your procedures.
In addition, unlike time-stamp-based r-code, you gain these advantages:
You do not have to send a copy of a new database to the user.
The user does not have to dump and reload data.
One possible disadvantage of using CRC-based r-code is that a user with the 4GL Development System, OpenEdge Studio, and Progress Developer Studio for OpenEdge, or WebSpeed Workshop can create a counterfeit database (a database with the same structure as your application database). The user can then write, compile, and run it against your application database. (The user cannot do this if you use time-stamp-based r-code because the time-stamps in the counterfeit code would not match those in your database.)
If this concerns you, you can either turn on run-time permission checking or use the PROUTIL utility's DBAUTHKEY qualifier. For details on how to turn on run-time permission checking, see MaintainingApplication Security.
The PROUTIL utility's DBAUTHKEY qualifier enables you to set an authorization key for your database. When compiling a procedure, OpenEdge includes the value of this key in your r-code. CRC-based r-code that does not include the correct authorization key will not run against your database. You can insert the authorization key into existing CRC-based r-code with the PROUTIL utility's RCODEKEY qualifier. For more information on the PROUTIL utility's DBAUTHKEY and RCODEKEY qualifiers, see OpenEdge Data Management: Database Administration.