Copyright: Copyright ©
Citation: Property of Donald M. Ludlow - SuperC Inc.


Contents
   DLSuperC Contents

The Help menu for DLSuperC contains the following discussion topics.  Before reading these topics review this documenters intent pertaining to the level of detail and content contained in the Help discussion.

General Discussion

DLSuperC Main Panel

File Select Tab and Browse Button

Compare Types Option Drop Down List Discussed

Process Preference and Don't Process (Dp) Options Discussion

Viewing, Saving, and Printing Comparison Results

Interpreting Comparison Output Listing

Drag, Drop and Desktops Operations

Expanded Discussion About DLSuperC

Enhancements and Omissions in the DLSuperC Program

DLSuperC Package Omits RevDel Program for File Regeneration


Line Compare

Compares logical lines with each line being delimited by a carriage return (CR), line feed (LF), or CR-LF combination.  Lines may be up to 256 characters.


IBM PC Released Product


Expanded About SuperC
Expanded Discussion about DLSuperC

SuperC is the name associated with a series of IBM compare utility programs - not a C programming language.  It was originally developed in 1977 and used internally within IBM as the main component in a library data base delta generation process.  IBM released a version in 1981 of SuperC for OS/MVT under the name AUDIT SOURCE COMPARE UTILITY as an IBM IUP (Internally Developed User Program).  It was later ported, expanded and released in 1985 as an independent product for the IBM PC DOS environment.  Versions of SuperC were, later, developed for other IBM mainframes and micro processor operating system platforms -- OS/MVS, S/38, AS/400, OS/2, and VM/370.

SuperC has been used extensively as both an internal and external standalone IBM program.  It has also been used as an encapsulated service function for library and database maintenance purposes as well as being encapsulated within such diverse applications as a telephone directory system and an authorization/code verification agent program.  It was widely used as a productivity aid by individual programmers that wanted to determine code changes during program development.  It was very common to refer to SuperC change reports when upgraded levels of a software build did not work as expected.

Many projects used SuperC to count changed lines of source code to determine programmer productivity since it was easy to run and produced results as good or better than other more sophisticated measuring methods.  Source changes were considered a factor in predicting future maintenance projected costs and SuperC derived numbers were used in an equation to determine future support costs.  However, SuperC is most commonly recognized as an important identifiable component of the IBM ISPF/PDF utilities -- within MVS/TSO and OS/VM-TSO environments.

Previous implementation of IBM's SuperC appear to have stood the test of time.  It is still considered by IBMers as the Best of Breed in difference determination - setting a standard that has yet to be matched.  It is considered modestly fast and comprehensive.  It hosts the programming community requirement of the rarely implemented function of automatic change determination.  The purpose of this newest version of SuperC (namely, DLSuperC) is to make it available outside of IBM and, most importantly, available as a Windows PC program.

The current developer of this Windows' version of SuperC (i.e., me Donald M. Ludlow) admits to sole authorship to all prior versions of the IBM SuperC product while employed by IBM.  This SuperC Windows' clone is, however, a completely new non-IBM product.  It has been independently developed using a programming combination of a Borland's Delphi front and C++ back end compiled processing components (a previous Microsoft Visual Basic front end preceded the current Delphi component).  By contrast, the original SuperC source code was written in a completely different IBM's proprietary higher level system programming language -- PLS/PLAS.  That language (PLS) and the original source code was only available within IBM and the programming host generating system only ran on an IBM mainframe processor (i.e., IBM S/370+).

The original IBM source code was not used in any way in this newest version of the Delphi version of SuperC - only externally released documents were reviewed and a single.PC released product was consulted as a calibration tools.  However, the similarity in operations, functions, appearance and reproducibility of generated results to IBM's older versions of SuperC is intentional.  In other words, it is hard to see differences when using this new version and in the output results it produces.

The original SuperC products are protected programs that are copyrighted by IBM.  Yet, the concepts are in public domain and have been shamelessly embedded within the new DLSuperC and VBSuperC products.


VBSuperC Main Panel
DLSuperC Main Panel

There are 6 Tabs on the top of Main Panel.  Their purposes are summarized as follows:

1. Main Panel 	Panel being described.

2. File Select 	Allows the user to select the input files. The Browse button (at the side of the file name slots) also serves as entry to the File Select panel.

3. Preference	User specifiable options for tailoring comparison results and presentation.

4. Dp Options	User specifiable filters. Eliminates comments and other non-code generating source statements from the input files to better examine the important comparison differences

5. About	Displays the "About" credit panel.

6.Overview	Entry to the Help contents and discussion dialogue -- this file.

The main DLSuperC Panel contains two input text fields that the user needs to specify.

1. New Input File Name - This is the full path filename of the text source that the user designates as being the newest or current source file.  The significance of choosing this file as the new file is arbitrary except the output results will label changes in the new file as inserted lines (relative to the old file).  In addition, certain output filtering options can be specified so only certain new file lines are listed (e.g.,  new file reformatted lines) whereby the corresponding old file lines are omitted as being redundant.

2. Old Input File Name - This is the full path filename of the text source that the user designates as being the basis for the difference detection between the new and old file.  Old file line changes are considered deleted lines (in relation to the new file).

Occasionally, slightly different comparison results may be found if the old file and the new file names are interchanged.  Normally, this does not occur.

-- Tip --The new and old file name may also be entered using the file manager drag and drop mechanism or the file selection tab menu.

In desktop systems like Norton Desktop or PC Tools for Windows the files (up to two) may be dragged from the file manager list and dropped on a DLSuperC desktop icon.  In a pure unmodified Windows systems, the DLSuperC application must be opened to the menu panel before it can accept any dropped filename objects.

The other fields are essentially optional as they are initialized to some default value or retain a previously entered value.  All entry fields and selectable options are persistent.  For example, when the user enters a file name it is retained between comparisons as well as between separate DLSuperC sessions.  This information is kept within the active program or retained in the DLSuperC.ini data file.

The two input text entry boxes are combo boxes.  They allow DLSuperC to retain up to four previous entries of file names.  The combo slots are updated before each program execution.

The descriptions for the other fields, buttons, and check box on the main panel follow:

Listing Type Drop Down List -- A list of output listing types that allows the user to limit or expand the amount of output.  The listing types are Long, Delta, Chng, and Ovsum.  The Listing types are detailed in the Compare Type Option Discussion.

Start Compare Button -- Activating this button initiates the comparison of the two input files after a series of consistency checks are made on certain input panel fields and the input file names have been revalidated.  The comparison proceeds and the results of the comparison will be, optionally, displayed by a file viewer  The results of the comparison will later be displayed in the bottom status slot on the panel.

View Latest Results Button -- The results of the last comparison may be viewed at any time after completion of the comparison.  This view on demand is an alternate way for observing the end results of the comparison.  In other words, if there are no differences in the files the ending message may be as informative as displaying the comparison statistics. This button will be initially grayed out upon initial entry to the DLSuperC program since no results have yet been generated .

View results only on demand Check Box --This check box causes the results of the compare not to be displayed after completing the comparison operation.  Instead, only the returned results message will be displayed in the comparison ending message box at the bottom of the main panel.  The user may, at any time, use the View Results Button to inspect or reinspect the last compare output.

Compare Preferences and Dp (Don't Process) Options Selected - This is the collection of the user selected Process Preference and Don't Process options that can be used to change the both the appearance and composition of the generated DLSuperC listing.  Examples are : excluding comments from the comparison (e.g., ddlc) or generation of listings styles (e.g., fmvl).  The two Tab panels that detail these options are discussed under the Compare and Dp Options Tab Panels Pages Discussion

Status field and Comparison Ending Message Output Text Field -- This is the completion message returned from the comparison routine.  It normally indicates whether there are differences in the processed input files.  This same message will, normally,also appear as the last line in the results output.

Turn Off Hints Check Box -- This check box allows the user to turn off the hints supporting the various titles on the main panel page.  Hints are welcomed for the uninitiated user.  After a while they become irritating.  Many times they are merely a repeat of the panel title.  Nevertheless, turn them on or off at the user's discretion.


General Discussion

DLSuperC is a comprehensive compare program that compares two files and produces an assortment of reports that can be configured to suit a users preference for seeing which lines have been modified and changed. The program features simplicity and ease of use although it offers a large number of optional and unique comparison, listing, and filtering options.  It even flags reformatted line changes and detects matching lines that have been moved from their original sequence.  Most importantly DLSuperC appears to generate change reports that visually communicates user perceived change activity consistent with changes that appear to have been made either through user initiated data editing or through automatic program initiated modification.

In other words, DLSuperC is an intelligent comparison program that gives results most users expect.  Yet, it can be characterized as being fast in execution.  DLSuperC processes file and line sizes up to the virtual memory limits of Windows.  It uses data techniques that do not limit it to the normal PC processor 16 bit/64K segment addressing restriction.  Lastly, DLSuperC recognizes line differences based solely on data content and sequence order in the appearance of the input file text lines.  There is no need for nor does it use line number references in it change determination and it does not need to be tailored with a set of match set criteria or optimization parameters.

DLSuperC uses the same published but unique processing algorithm that has been used extensively in the IBM main frame SuperC products.  This is the prime factor responsible both for its accuracy and speed.  Even though this Windows PC version is a completely new and independently produced version encompassing the SuperC algorithm, the spirit of the original SuperC program is in evidence.

Output filters (e.g., allowing changed comment lines to be ignored) and specialized listing types (e.g., delta-only and statistics-only) are provided to minimize the volume in the program returned results.  As a results, both input and output filtering options can be specified to produce a tailored final result that best services a user's preference for quickly recognizing differences and in particular -- significant differences.

 For normal usage, DLSuperC may be simply invoked to determine where lines between two text files differ. The output from the comparison can be displayed so the user can immediately see these differences.  A summary section at the end of the report is, normally, included to further highlight of the comparison results.


Filtering
DLSuperC's filtering uses a process that intercepts input source records (i.e., lines of text) and deletes from the comparison certain information depending on a number of user selected options.  Comment filtering is very common.  Filtering is provided so the user may simplify the text change results but emphasize the differences to meaningful code changes.

Related to filtering but not optional is reformatted text lines.  These are lines of text that have space (i.e., blank character) differences with all other data matching.  DLSuperC integrates reformatting determination in its basic algorithm while allowing the user to override the reporting in the final output report.


Enhancements and Omissions in VBSuperC Program
Enhancements and Omission in DLSuperC Program

Many features in this current Delphi version of SuperC are similar to the mainframe versions of SuperC.  Yet, each previous version of SuperC included features that catered to the host system that contained it.  For example most of the versions allowed a variation of an entire directory-to-directory comparison.  These versions also catered to the host system naming conventions using host system names (data set names instead of file names) while allowing system unique grouping concepts in defining comparisons.  Part file comparison was also in most version.  In addition, all previous IBM versions implemented comparisons ranging over the FILE, LINE, WORD, and BYTE level of specification.

This current Windows version of SuperC only incorporates comparison at the LINE level.  This seemed to be the most common area that interested users.  This restricted level of support both simplifies the product implementation, its operation, and the user interface when using the product.

There was no attempt to develop and build an all-in-one giant system comparison utility.  Also, no attempt has been made to incorporate a directory like comparison whereby more than one file pair could be specified and compared - producing a composite listing of all the compared pairs in one invocation.  Some former main frame users may miss the massive file comparison that allowed a directory member synchronization/comparison view (See the VBSuperC package for an independent VBDirCmp.program).  This program does a synchronization comparison between two different subdirectories).  The Seach-For capability may also be missed by a few.  Yet, these specialty areas are more than adequately addressed in other Windows vendor utilities and products.

However, this Delphi version of SuperC is unique in that it solves (using virtual address space techniques) the most vexing problem of all previous version of SuperC - False Match resolution.  Paradoxically, there are no longer any false matches to resolve or correct.  The basic underlaying comparison algorithm was significantly revised and augmented by a newly developed technique for retaining the text data during the comparison pass.  This allowed a more accurate difference determination while simplifying the reporting operations.  In other words, the old false match problem having gone away lead to other desirable program refinements.

Each version of SuperC incorporates optional features that addresses the programming environment requirements thought to exist in the product time frame.  This emphasis continue with this version.  No longer does DLSuperC acknowledge that lines numbers might be present on source records and that there is a need to allow for fixed input records without delimiters.  Current PC editors generate source lines without line numbers and terminate variable length source lines with CR/LF.  In addition, coders produce little assembly code so many of the older mainframe SuperC requirements are no longer required.

Delphi , Visual Basic, C++  and script like (Win.INI and Config.SYS) coding statements now predominate text input source.  The DLSuperC filtering options has been updated to handle the first three languages in its basic comment exclusion support as well as *.ini and *.bat file commenting/scripting comment statements.


Detail and Content

Many on line help tutorials are very sparse and tend to give the title HELP a bad name.  Many lack details on what the purpose for various functions and options.  Many are nothing more than Title repeaters.  That is, a button title labeled OPTIONS will sometimes be explained with the help dialogue -- Allows the user to enter the program options.  How helpful is that?

Yes, sometimes titles tend to be unclear and should be explained with more surrounding words. However, the emphasis on the DLSuperC help will be to be more than just a restatement of the title.  It is intended to provide purpose and examples along with the discussion.

Some may find the Help dialogues to be too technical and wordy.--guilty as charged.  Don't expect to see smooth non-technical prose that can be read without being digested.  This Help document will follow a format that includes details directed for the technical user.  There is no other methods to include this type of information.  No Programmer's Guide or any other special help section is being contemplated..

Hopefully, the information in the Help discussion is up-to-date.  There have been numerous changes made to the panels since this original documentation was first started in support of its predecessor product -- VBSuperC.  This has caused the accompanying documentation to be somewhat updated and changed.

It should be pointed out that the VBSuperC product package included a Microsoft Visual Basic front end and a number of Visual Basic distributed programs.  None of these VB programs are shipped with this current DLSuperC distribution.  See the previous VBSuperC package (on the AOL Software Center) for a number programs that might be of some use.

As always, anyone can contact me for assistance with DLSuperC.  I would be more than happy to help you along.  SuperC has been my baby for over 16 years.  A father can not be more proud.  How could I ever turn down a request for assistance.  I also encourage additions and modifications to the current package.

Signed

Don Ludlow

superc02@aol.com

(919) 846-7108


same data content
Data content refers to removing blanks prior to generating a hash substitute value.  As a results, reformatted lines (lines with blank character differences in number and/or line position) are inherently treated as matches during the comparison process but later reclassified when the original line is reverified for all line matches.


Revdel Versioning Concept

The mainframe versions of SuperC have been the basis of several successful library based implementations of versioning.  Striped down subsets of SuperC have been used to provide the reverse delta differences.

The VBSuperC package contains a companion program that implements the regeneration of the old file using the revdel as input.


Compare Types Option Drop Down List Explained

There are four listings types produced by the DLSuperC program.  These are:

1. Long	Lists the entire New File source lines with only the changed old file lines, indicating which lines from each file have changed.  The changed new file lines (i.e., inserted) are listed first before any changed old file lines (i.e., deleted) that occur in the same area.  Inserted lines are interleaved with deleted lines when the change span is of equal length.   The listing process assumes that equal length inserts/deletes implies line replacements and interleaving appears appropriate.  Block listing of changed lines results when the change lengths are unequal and it is unclear how to interleave the block of inserts and deletes.  Single blocks of inserted and deleted changed lines result when the changes do not occur in resynchronized file positions.

2. Chng	This is a shorter listing than the Long List.  It produces a view of the changes with up to 6 matched lines proceeding and following the line change sequences.  A special section delimiter line is used to indicate where lines have been omitted between successive changed sections.  This is the most popular listing type and most accurately shows the changes with a minimum of matching lines cluttering up the output listing.

3. Delta	This produces a listing with only the changed lines shown.  It is produces a compact listing but may not show enough of the contextual lines so the changes can be differentiated from other changes that appear similar.

4. Ovsum	Only the overall summary statistics as determined from the comparison are listed.

Revdel (a fifth listing type) has been omitted from the DLSuperC version but it is still available as part of the VBSuperC program.  The Revdel output could be used as input to a separate VBRevdel program to regenerate a previous source file using a delta of changes generated by VBSuperC.

Revdel	This is a control type output listing.  The format consists of a (./ +Indicator) headed control record conditionally followed by succession of full source delete lines.  The Revdel output is very structured and can be used in a library preprocessing program to regenerate the old file by reverse applying the old source lines.  See discussion topic on  the Reverse Delta Companion Program.

Note: The Revdel output is the only Listing Type that reproduces the full source line of up to a maximum of 254 character line segment.  The other listings only list up to a maximum of 80 characters from the input source line.  It is, therefore, possible to have changed lines displayed in the normal output listings where the differences are not displayed in the 1 ->80 output columns.

Each listing ends with a summary and statistics section.  This shows the number of lines processed from each file and the changes found.  There is also a special summary measurement value (Total Changes) that can be used as a single change value number.

Few users recognize that the normal listing line extends past the input line 80 columns.  These extra columns contain DLSuperC generated line reference numbers plus a reiteration of the line status - insert/delete/reformat/etc.  This information is useful for determining where changes have occurred.  The user may wish to truncate this data as it might wrap when using certain browsers on any saved file.  The max80 process option can be used for this purpose.


Old File lines are listed
Old File lines are normally listed unless the changed line is a reformatted line.  There are options covering this case and old file reformatted lines are only listed if the selection override (LORL - List old reformatted lines) is specified.


Total Changes
The Total Changes value account for changes that occur in separate sections of a file.  That is, a line that replaces another line (flagged as an insert/delete pair) is only counted as a single change.  Similarly, reformatted lines are only counted as single paired changes.  Changes that occur in non-consecutive sections are counted as multiple changes.  When blocks of inserts and deletes refer to common areas, the minimum value of the insert or delete total is singularly counted and the excess value over this minimum value is added.  And example would be 5 inserts replacing 3 deletes.  The is a change value of 3 + 2 not 5 + 3.

Often two files differing in size must be qualified with a single value indicating the comparison change activity.  The gross value of the number of inserted lines and the number of deleted lines is not a single number but is two numbers.  The total change value becomes a better descriptor of the change activity as it can be made to account for different line sizes and how the distribution of the changes occurs.  It goes back to the editing viewpoint that common area changes are singular actions and separate changes are singular actions.  At best, the total change value is an arbitrary indicator but it is better than no value at all.


Compare and Dp Options Tab Panels
Process Preference and Dp (Don't Process) Options Tab Panels

These options are presented on two separate Tab Pages.  They are functionally very different.  The first options group (Process Preference Options) are check box options whereby more than one option may be specified.  The other group are mutually exclusive option buttons -- Dp (Don't Process) Options.  Only one from the group can be selected as active.

1.Process Preference Options - These are options that are used to affect the overall appearance of the listing output by filtering out certain information not deemed necessary for tailoring the output report.  They also may be used to affect the content of the compare set by modifying the comparison rules or changing the way the output report flags the output changes.

Some options may be selected even though they might not be be valid for the particular compare conditions.  This would mean that they can be safely ignored.  For instance, few options are valid when the Ovsum list type has been selected since no source lines are listed

• (ICAS)	Ignore case during compare

This option causes the compare process to convert all text characters to the same case before the difference determination is made.  However, the final listing output appears in the proper input case.

• (ROVR)	Reformat listing override

This option requests that all reformatted lines between the two compare files be displayed (i.e., flagged) as matching lines.  Hence, the number of reformatted lines that exist between the compared files will not appear in the summary section of the output results.  The comparison will assume that all reformatted line pairs qualify as matched lines.

• (MX80)	Limit output line to 80 characters

This option limits all output listing lines to be no longer than 80 character in length.  This affects the listed columns that normally contain the line reference numbers as these are the columns that are truncated.

Note: All output listings only show up to 80 characters of the input text.  Longer text lines are truncated and the user must consult the input files if differences are not seen in the first 80 columns.

• (APND)	Append the output to the latest comparison results.

This option causes the comparison listing to be appended to the latest comparison results during the same invocation of DLSuperC.  If there are no previous results, the comparison output will appear as the first and only result.  This option can be used to accumulate many comparison results into one report.  This report can, then, be saved as a single output file composed of the combined results.

• (FMVL)	Flag moved matches

This option extends the comparison operation so that inserted and deleted lines are rescanned for matches that exist in other sections of the compared files.  The prefix flagging column is changed form an insert/delete notation to a moved line prefix (IM/DM) and the line reference numbers refer to the line number of the resultant move match.

• (LORL)	List old reformatted lines

This option causes the old reformatted line to be listing in the output file.  Old reformatted lines are normally deleted from the output listing since they usually represent redundancy and bulk.  A user may wish to inspect the old reformatted line to confirm that the reformatted pair is more than a cosmetic change.

• (NOSS)	No Summary Section

This option deletes the summary totals and statistics from the output file.

• (XDPL)	Exclude don't process lines from the output

This option causes the don't process lines and part comments from being included in the output listing.

• (IEOF)	Ignore any premature eof character

This option causes any embedded or premature end of file character to be ignored.  The input files continue to be read and are processed passed this normally terminating binary character.  Text files with embedded binary data may contain EOF characters and a user may wish to continue processing past these data points.

Note: DLSuperC may sometimes be used to compare data based files that contains numeric alphanumeric data.  The compare results should be accurate even thought the data does not contain the lines terminating sequence of CR/LF.  DLSuperC will resynchronize each 254 character line segment ( or after each new line character sequence) and display the first 80 characters of each line segment that sequentially match.

• (SUBC)	Use a specified substitute character for control characters when generating the output listing.

This option allows the user to specify a substitute character for any embedded text character that could affect the printer/browser/editor visual presentation.  Characters that have a numeric value less than 32 (i.e., a blank character)and the value 127 are never passed to the output file.  The default character is a period character.

It is sometimes important to know whether the substitute character appears in the output as a result of the substitution or actually exist in the original input text.  The user can specify other characters including the space character if this problem exists.  The tab character is a special case of a non printing character that is not included in the normal output.  Many printers accept tabs as valid data but their imprecise spacing in the output makes fixed column appearances unpredictable.  In addition, this would affect listing the fixed 80 character input text.

• (XTAB)	This option can be used to replace embedded tab control characters with one or more blanks.  The value is usually between 2 and 8.

2.Don't Process Options - These are mutually exclusive options that affect the amount of source text to be compared (i.e., compare set).  These options allow the user to exclude a number of comment line types.  They are particularly helpful when it is unnecessary to detect all source changes -- only the code generating source changes.

Whole line comments are eliminated by being recognized and blanked from the line leaving the line blank with no other data.  Since blank lines are considered comment lines in all of the supported exclude options, these blanked lines are excluded from the input compare set .  Part comment lines result when a comment appears on the same line as a program statement.  That portion of the line with the comment is cleared.  The remaining statement part remains intact and it is included as part of the compare set along with the blanked portion.

Matched lines are indicated in the output report by not being flagged with change indicators.  New file comment lines that are excluded due to a don't process option also appear in the listing without flagging (with no prefix indicators) like matched lines.  The user had requested that these lines not be involved in the comparison process.  Hence, the new file comment lines are listed because they do not represent differences between the two files.  Comments, also, tend to give contextual continuity to the output results.  In other words, comments are skipped during the comparison steps so they won't interfere with the comparison results but will reappear in the listing output as a recognition convenience.

The user may request that comment lines be excluded entirely from the output by specifying the XDPL (exclude don't process lines in the output) process option.  This can also be a double check on the correctness of the DLSuperC parsing logic to exclude line and part lines that should not be part of the compare set.

• (DSEM)	Don't process semicolon leading lines.

These lines are comment lines that have a semi column character as the leading character on the statement line.  Semi colon comments are normally found in most Windows *.ini files and in some files written in MS assembly code.  This option causes only whole comment line to be excluded.from the compare set.

Note: Part comment lines (mostly in assembly code files) with the semi colon following the program statement are not recognized.

• (DREM)	Don't process REM leading lines

These lines are comment lines that have blank characters prior to the leading REM character string sequence.  REM comment statements are often found in autoexec.bat and config.sys files.  This option causes the whole comment line to be excluded.from the compare set.

• (DBLK)	Don't process blank comment lines.

Blank lines are detected and the whole line is excluded from the compare set.  Blank lines with embedded tabs are not considered qualifying blank lines.  Blank lines are also considered part of all the Don't process option comment types.  Even the DSEM and DREM options, described below, consider blank lines as excludable comment lines.

• (DDLC)	Don't process Delphi and Pascal comments.

Delphi and Pascal  comments are detected and excluded from the compare set.  Delphi comments are lines that contain (* ... *) and { ...} delimiter pairs.  These comments may occur on single and consecutive lines and are excluded from the compare set.

• (DCPP)	Don't process C++ comments.

C++ comments are detected and excluded from the compare set.  C++ comments are lines that contain a /* ... */ delimiter pair or the start of comment sequence - //.  Multi line C++ comments are also detected and are excluded from the compare set.  The selection logic does not, however, recognize the non-standard multilevel C comments such as /* ... /* ... */ ... */.

• (DVBC)	Don't process Visual Basic comments

Microsoft Visual Basic comments are recognized by the appearance of the single quote (') and REM convention.  Comments may be whole or part line comments.  Full line comments are completely dropped from the compare set.  Part comment lines become part of the compare set with the comment portion of the line removed (i.e., blanked).

• (DVFS)	Don't process Visual Basic Forms Section of a *.frm Visual Basic file.

Users not interested in the details of changes in the Visual Basic Forms section may request that it be excluded from the compare set.  The code changes outside the forms section may be of more interest so deleting the forms section tends to simplify and reduce the listing volume resulting from tracking the file change activity.  The forms section (as don't process lines) will not be listed in the output of the Long List even though other don't process comment lines are usually included in the output.  It is felt that the forms section is not a significant factor in recognizing normal changes that may interleave with program statements.

• (DVFC)	Don't process Visual Basic Forms Section and Visual Basic comments.

Both the forms section and comments are excluded from the compare set.  This is a combination of DVBC and DVFS don't process options.

• (DPDS)	Don't process Pound Sign containing comments.

These lines are comments that contain the # as a special comment leading character.  They may also be part comment lines when there are other instructions or any non-blank character on the line preceding the first # character.


Companion Revdel Program for Regeneration of Files Using Deltas

aaa


Interpreting Output Listing

The DLSuperC output lines may be classified by the appropriate flagging in the first column of the comparison output.

(blank)	Matched Line

These lines do not have any flagging character in the first column in order to minimize the distraction for locating the lines that have changed.

Matched lines, imply, that corresponding lines from each file match.  This is normally true unless one of the two following cases exists:

1. A Don't Process Option such as DVBC, DDLC, etc.  These classes of Don't process options cause the comparison to ignore qualifying comments in determining matches.  Yet, the comment lines appear in the output as matched lines as this creates a recognizable sequence from the input source.  Only the new file comment lines are listed.  Old file comment lines are never passed through to the output file.

2. The override options ICAS (Ignore text case) or ROVR ( Reformatted line override) have been specified.  In each case the user has indicated that the corresponding case changed line should be treated as a matched line due to the reasonableness that any of these changes are not essential in determining more important differences.

I -	Inserted Line

These are lines not present in the old file but have been added to the new file.  The insert term and the I flagging are standard editing term.  Other comparison programs might use the compound symbol of >> or N for new to indicate added lines.

D -	Deleted Line

These are lines that are present in the old file but have been deleted from the new file.  Another compare program might use the compound symbol of << to indicate its absence in the new file.

RN  	New File Reformatted Line

These are new file changed lines that match the corresponding old file line in data content except for the placement of blanks and/or the number of blanks composing the line.  Reformatted lines are summarized in the final statistics summary section.

Detecting reformatted lines is basic in determining line changes.  There is no way to override its detection.  A Reformat Override option (ROVR) allows the user to eliminate listing reformatted line changes and allows them to appear as line matches.  This simplifies the listing so less lines are flagged as changes and more important changes can be observed.

RO-	Old File Reformatted Line

These are old file changed lines that correspond to new file reformatted line.  Reformats appear in pairs.  Normally, old reformatted are not listed unless the List old reformatted lines (LORL) option is selected..

IM-	Inserted Moved Lines

These are inserted lines that have deleted matches in another sequence section of the old file.  Moved lines add another level of complexity to the comparison process but allows the user to detect sequences that have been displaced to other source areas.  The user must select the Flag Moved Lines  (FMVL) option for this detection to occur.

DM	Deleted Moved Lines

These are deleted lines that have corresponding inserted matches in another sequence of the new file.

In the normal output listing there is no flagging for replace line changes.  Lines may, however, appear to be replaced if inserts and deletes appear in succession.  Since DLSuperC does not use line numbering in detecting changed lines, it is impossible to assign the replacement characteristics to a line change.  The replacement can only be inferred.

Similarly, source comment lines are not specially flagged.  A comment may be counted as a changed source line or may be ignored as a source line (due to a Don't Process Option selection) and listed as a pseudo match line.

The user should recognize that there are line reference numbers assigned to the source lines that appear in the right most columns of the output listing.  In between the New File Reference and Old File Reference Number appears a restatement of the line status of match and change.  This data may be useful in determining file change orientation.  It is the only data available for relating moved lines and their corresponding old and new file appearances.  Comment lines (when detected by a don't process option selection) are specially marked with a comment identifier appearing between the reference numbers columns.

The comparison output color codes Insert/Inert-Moved/Reformatted New file lines as blue lines.  Deletes, Deleted-Moved, and Reformatted Old file lines are color coded as red lines.  Matched lines are shown as black.


Eliminating the Summary and Statistics Section
The summary and statistics section can be eliminated by selecting the No Summary Section (NOSS) process option.


PC Released Product

A 1985 IBM PC DOS product SuperC was released as a part of a Personally Developed Software for IBM Personal Computers set of programs.  The publication - The Directory.- Volume 1, Number 2 listed SuperC as an orderable program offering.

Amazingly, the SuperC DOS program is still available for a modest price of $14.95.  Its distribution is no longer handled by IBM but should be still available.  It can be ordered by dialing: 1-800-IBM-PCSW

As an aside, anyone interested in an early history of the SuperC motivation and development landmarks (and who wouldn't) should obtain the original product documentation and review the documentation section titled - SuperC - A Trivia Tour.


moved
Moved lines are special cases of changed lines that have corresponding matches in other areas of the program source.  DLSuperC attempts to first locate all matched lines within a sequence.  It then attempts to determine if any of the leftover inserts and deletes have matches in other sections of the two files.  This is an optional process as it adds to the normal processing overhead.  In effect, DLSuperC processes data twice to uncover moved lines.  The second pass uses the left over compare set to determine the best fit match sets among the inserts and deletes.


execution.
It is still possible to implement a slow compare program even in these days where microprocessors execute with blazing speed and hard drives that operate under a 10 ms response time.  However, all versions of SuperC have executed as a fast and accurate compare program in all previous operating environments - even on antiquated systems.

DLSuperC uses a unique algorithm that minimizes file references and determines differences mainly based upon a short 16 -> 32 bit hash substitute value that represents the original line of text.  This allows DLSuperC to index and chain together lines having the same data content.  The processing speed comes from knowing where all matches exist within a file before starting the iterative best match determination.


sequence order
Comparing for sequence order is different than detecting whether a line of text exists (i.e., is included) within a file.  For example, if two lines were interchanged in a sequence this is termed a program change with one line being deleted from the old file and one line inserted in the new file.  However, if the source lines were first sorted prior to invoking DLSuperC, both sequence order and set inclusion criteria are met and no change is detected.


Drag, Drop and DeskTops
Drag, Drop and DeskTop Operations

The DLSuperC Compare Program is capable of accepting file names that have been highlighted in a file manager list, dragged to the DLSuperC icon and dropped.  But not all implementations of drag and drop among file managers and desktops are equal.  This short discussion will relate experience with 3 implementations -- Windows Program Manager, Norton Desktop, and PC Tools for Windows.

The Windows Program Manager only allows the user to drag and drop files from a file manager list onto an application icon if that application had been previously activated.  That would mean, for example, a program like the Windows Notepad Editor could accept dropped files after it had been activated, the initial panel displayed and the program ready to initiate browsing or editing of the dropped files.  Similarly, DLSuperC must be opened in the Program Manager environment for it to be operational and accept dropped file names to the input file text slots.  Conversely, files dropped onto an unopened applet within a program group appear to lay on top of the program icon and must be, eventually, deleted.  In effect, these dropped files become candidates for inclusion within the containing program group -- not candidates for being executed as dropped files.

Norton Desktop (2.2) causes program icons to be activated by the drag-drop mechanism in either case.  It passes the names of the dropped files in the command string during activation of a program contained on the desk top or within a program group.  This is not a true drag-drop operation but it serves the same purpose.  The real drag-drop operation occurs after the icon representing the program has been activated and (like the Program Manager) the file list of names are passed to the program in the standard drag-drop list structure.

PC Tools for Windows is much like Norton Desktop but it passes the names of the files to an non-activated applet one name at a time.  If DLSuperC were to be activated and passed two file names to be compared, two instances of DLSuperC would result with each instance being passed a single file name from the file list.  The user should be aware of this anomaly.


Viewing Comparison Result File, Saveing, and Printing Results

xxx


authorship
The SuperC name originated because it was this author's successor program to a very successful IBM maintenance program called SUPERZAP.  That program was used by field engineers to modify (i.e., zap) link edited executable IBM 360/370 module when no source code was available for recompiling.  The author's successor to SUPERZAP (i.e., SuperC) was characterized as equally successful and inherited the super prefix.

Author's note: SuperC's name was coined prior to the C programming language became a well known industry standard.  The "C" in the name represents a compare process not a language product.


reformatted
Reformatted lines are lines that have the same data content but differ only in the number and position of blanks.  One exception would be a line that has blanks padded at the end of the line.  This case would not result in the lines being considered reformatted because it would be impossible to detect any differences between the two lines when reviewing the output listing.

A user may wish to override the reformat flagging by specifying the ROVR (Reformat Override) process option.  This causes DLSuperC to reclassify all reformatted lines as matched lines.  Thus, the user is indicating that reformatted lines are only cosmetic changes and wants them temporarily overlooked.  DLSuperC's algorithm processes text lines with a bias toward detecting the common occurrence of reformatted lines without regard to the user options for flagging.  Hence, the difference determination is not affected by the user override.

Many times reformatted lines occur due to the changing of an indentation level of a processing routine or changing a line and then attempting to reenter the same line with different spacing on that line.  Overriding the classification of reformatted lines tends to modify the actual difference reporting but it should allow a clearer presentation of more important changes.


line sizes
Native PC generated files have lines terminated by a CR-LF character sequence.  Lines longer than 254 limit imposed by the DLSuperC program are broken into multiple line segments.

Transported Unix/AIX files to the PC contain only the single New Line (same as CR - Hex 09) character as a line separator.  These lines are handled by the normal PC line processing logic.

PC text files are normally ended by an EOF (Hex - 1A) terminating character.  To compare two non-text files (or text files with embedded data) subject to the input occurrence of an EOF character, the user should specify the IEOF (Ignore EOF input character and continue) Compare Option.


addressing restriction
Files with large number of lines are broken into smaller segments of up to 8000 lines.  The comparison reiteratively processes successive segments using a technique that determines heuristically the best break point depending on the results of each previous segment.  The final comparison results are then a summation of all the smaller segment totals to determine the overall totals .


Viewing, Saving, and Printing Comparison Results

The results of the comparison can be displayed in a virtual list box on a separate panel.  The capability allows the DLSuperC program to process two files of any number of lines and display the results without regard to a capacity limit.  Problems with the previous version of VBSuperC required special handling when handling greater than 32K lines.

The list box colors the new changes (inserts) in blue.  The old file deleted lines are colored in red.  The matched lines remain colored in black.

The list box is read only and can not be altered nor can sections be saved to the Windows Clipboard. The user can scroll the display by using the scroll bars.  Sizing the number and width of the shown lines is made easier by using specially designed buttons at the bottom of the panel.  Of course, seizing the sides of the displayed panel can still be used to change the size of the display panel as can maximizing the panel to the full panel dimensions.

Two buttons are provided to save the results.

The Print Button allows the user to print the results to any attached printer.

The Save As Button allow the user to save the results to any named output file.


dropped
Dropped files must sometimes have an association before the Program Manager will allow the files to be dropped without a warning message.  In either case, the files will be dropped if the user responds with a Yes.


File Select Tab and Browse Button

The DLSuperC main panel displays a File Select Tab and Browse Button that can assist in selecting the compare file names.

The file selection panel utilizes a traditional Windows file selection method whereby Drive, Directory List and File List text boxes are used to select the appropriate file names.  The File Select Panel allows selection of two corresponding and related file names -- New and Old Input File Names.  The user must identify which file name is being selected.  Either the "Use As New" or "Use As Old" button must be clicked.  Thereafter, the file name will be moved to the proper slot on the Main Panel.

Note: The file name text slots on the main panel are enabled for cut, paste, and drag-drop.  Some advanced users may wish to use these methods to deliver file names in conjunction with an independent file manager.


DLSuperC Package Omits RevDel Program for File Regeneration

One of the Listing Types the user can specify only in the VBSuperC program (excluded from the current DLSuperC program because the option depends on a VB based program) causes the creation of a revdel output file.  This is an Ascii text file with a standardized file structure that contains control records followed by old file source text lines.  This generated revdel text file can, subsequently, be used at any time to recreate the corresponding old file using the new file as one of the source files and the revdel file as the other.

The entire process allows creation of a library backup system whereby newer versions of a program can be saved and back level versions can be replaced by deltas.  This amounts to an enormous saving of backup space and creates a backup process for retrieving older saved versions of a program/module   This the basis for a versioning utility.

Deltas are most often a fraction of the original file size.  In addition, the process can be further augmented by compressing deltas prior to cataloging back level versions.

.

A reliable library system can be built on the Revdel versioning concept.  VBSuperC allows the generation of a revdel output file containing embedded checking information.   The Revdel program uses this information to assure the accuracy of the delta regeneration process.  The VBSuperC Revdel output also contains additional checking values to confirm that the produced regeneration originated from the inputs involved in the reversing process.