DLSuperCRV is primarily a Revision-Delta-Undelta Library Targeted Utility implementing a backward source revision delta of full source changes. The delta file helps reduce the storage requirement for previous back versions of full source code. Deltas can be stored in a library with a succession of back versions. Applying an iteration of back versions allows a user to recreate source for any level of archived source.
As a result, a delta control generated file should be smaller as a substitute for the full source of a previous version. Changes between two levels of source are, normally, a fraction (often less than 10%) of the total source. There also exists another compaction level (although that capability is not shipped as part of the DLSuperCRV package) where a delta file can be further compressed using a zip like compression program.
The DLSuperCRV program is composed of two separate processes. The first is a Delta Generator that produces a control file representing the changes between two source versions (i.e., levels). The second is a Regenerator that recreates a back level version using as input a current version and the corresponding delta control file representing the previous version.
A unique feature in DLSuperCRV is the generation of full source for all changed lines in the delta file. Others in the DLSuperC family of compare programs, DLSuperC and DLSuperCX, have a maximum 120-character line limit for changed lines. This is due to these programs being targeted to a user where displaying changes are directly directed to a display panel. The user may, subsequently, save the displayed results (120-character maximum) to an output file.
The DLSuperCRV approach is the reverse of DLSuperC. It generates all changes directly to a delta file, which could eventually become the primary input to a future regeneration process. Nevertheless at the end of the delta compare, the program allows the user to display the delta file limiting any source line to 120-characters. It is the responsibility of the user to examine at a later time the full changed source lines for columns not displayed within the 120-character limit by using a separate display program. This full source display program could include special capabilities to handle extra long lines.
Another unique feature of DLSuperCRV is the comparison of fixed length record files. There is no DLSuperCRV imposed limit on the fixed line length except the MS Window’s constraint in providing adequate virtual storage. Fixed length records are not required to have CRLF line ending delimiters. Since no other DLSuperC program implements a non-delimited fixed length-processing capability, DLSuperCRV may be the sole candidate of this type of compare requirement. The additional DLSuperCRV regeneration capability might never be called upon.
The more normal variable length CRLF delimited lines are, arbitrarily, processed in increment lengths of up to 1024 characters. Text lines exceeding this length (a rare case for text input) are broken into smaller segments and processed as separate lines. This presents no problem for the regeneration process, if required. The undelta reassembles broken long line changes contained in the delta file and recombines them into single lines prior to using them in the regeneration of the back level source.
It is important to consider that the DLSuperCRV design allows no filtering capability in the selection prior to the comparison of lines. Changes are meant to reflect all changes. Since DLSuperCRV is primarily targeted as a library utility, the collection of all changes is required. This contrasts to the role of DLSuperC and DLSuperCX, which targets the user in attempting to visually determine changes that are important to the detail level of the inspection process.
A new feature not currently available in DLSuperC and DLSuperCX is the capability for running a series of revision-delta and regeneration-undelta jobs using a batch-like interface. A series of job scripts can be assembled into a file (in an Ini-like format) and be referred to indirectly via a passed parameter upon program invocation. Each job script has a complete set of input files, output files, and options defined. During execution, the Individual jobs display their running status. Only the optional ending status panel is ever displayed. Thereupon, the user has the completion ending status line highlighted. A response with the end button being pressed causes the program to finally terminate. Alternately, an option can cause this last panel to be bypassed and terminate the batch task, immediately, after all jobs have been completed. No use response is required.
Compare Criteria and Results
DLSuperCRV uses, essentially, the same compare algorithm in detecting changes as the other DLSuperC programs. However, the change detection criterion targets a library requirement rather than a user interpretation environment. Library systems require all line differences to be logged as changes. This means that blank character and all line length differences are considered changes. These characters are never suppressed nor altered. Even line ending CRLF characters are passed back as part of the complete line for comparison.
Blank character appearance and handling are quite different in DLSuperCRV. As an example, a user would not, visually, recognize the difference between a null input line (i.e., a line containing only a CRLF string) flagged as a change compared to a line of one or more blanks. The two lines appear to look identical in a display report. The same visual ineffectiveness exists when comparing one editor’s policy for truncating lines prior to end padding blanks with another editor that preserves the blanks as the line trailing characters. Both examples are considered as matching lines in the normal DLSuperC and DLSuperCX compare process. In contrast, DLSuperCRV considers both as changes. This is consistent with a library utility that considers all differences as changes.
Batch Invocation of DLSuperCRV
Batch job scripts are contained in a file that is passed to DLSuperCRV as an input parameter. Each script is self-contained. That is, each job script have a complete set of input files, output files, and options defined. Individual jobs display their running status. No intermediate or final result panels are displayed. Only the overall returned status is displayed in the status box at the completion of the operation.
Each job script is allowed to complete and then proceeds to the next job. If there is an error in the input script, that job will be flushed and the next job will be initiated. The results from each job operation are recorded in a log file DLSuperCRV.log. This file will be written into the same subdirectory that contains the DLSuperCRV.exe program.