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 Manage the OpenEdge Database.
  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.

    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 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.

    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 Maintain Application 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 Manage the OpenEdge Database.