
2.001
------------------------------------------------------------------------------
Many changes to working lashup vv 1.0 to make it distributable without
    excessive embarassment.

2.002
------------------------------------------------------------------------------
Internal, experimental (abandoned).

2.003
------------------------------------------------------------------------------
Fixed bug in IRV that retained blank lines unnecessarily.
Fixed getenv bug that showed up in UNIX build.

2.004
------------------------------------------------------------------------------
Internal, experimental.

Enforced at least one space after a directive (woops! missed that before).
Added command line undefine switch U for convenience.
Changed parse() definition and usage in main() to improve code localisation.
Added #SUBST directive and support for name=value pairs.
Added #DERIVE directive.
Added #IF and #IFN directives.
Added #OR, #ORN, #AND and #ANDN modifier directives.
Tidied up annotations and added backward line No. references to #ELSE & #ENDIF.
Fixed line overflow detection in #SUBST etc.
Added #SHELL directive.
Fixed bug in command option D when macro already defined
Fixed bug in re-definition after #UNDEF or U switch.

2.005
------------------------------------------------------------------------------
beta for 3.000

Added special internal macro facilities.
Added Z switch.
Fixed bug in annotation of directives that refer to undefined macros.
Added #MDUMP directive.
Maximised available stack in DOS TurboC make.
Fixed obscure bug in opening files on the ISEARCH path.
Added #TEMPLATE directive.
Added facilities for 'ocpp.rc' files.
Added private comments
Updated documentation for new features.

3.000
------------------------------------------------------------------------------
N.B: 3.000 is a true super-set of 2.xxx except that *c is added to *n during
     interpretation of strings from C header files (but this can be changed
     back if required using "OcppAddCrToLf", see ocpp.doc).

Tidied up and enhanced directive line annotations.
Extended Z option help text.
Added #DEFSFROM directive as an embedded equivalent of DF option.
Fixed bug whereby malformed directives (lacking whitespace) were missed.
Provided warnings on unrecognised special internal macro (symbol name Ocpp*).
Arranged to list any (all) un-closed conditional constructs at EoF.
Further reduced stack requirements during recursion by shunting more stuff off
    onto the heap (good practice, and pretty essential under DOS).
Added #IN/OUTDENT to help with writing generic variant protocol handling &c.
Arranged for the macro list to be ASCII-sorted to speed up searches a bit
    and provide prettier listings from the #MDUMP directive.
Refined and extended documentation, changed release format to MS Word and
    postscript.

3.001
------------------------------------------------------------------------------

Added error when OcppIrrevocable set TRUE whilst MIP command option in force
    (a backdoor way to destroy your input file accidentally!).
Fixed exit return code discrepancies between actual code and documentation.
Fixed bug in #ELSE clauses nested deeper than two.
Fixed problem where MIP action happened in some cases even after errors were
    detected, particularly when un-closed conditional blocks were present.
Fixed bug whereby line numbering and the input filename were corrupted after
    processing a #DEFSFROM directive.
Fixed bug that corrupted certain backward line No. references in annotations
    in the presence of private comments and/or templates.
Changes to make DOS variants tolerate lowercase environment variable names.
Change to allow #DERIVE in a definition indirect file.
Added ability to expand references to environment variables within file
    specifications for #TEMPLATE, #DEFSFROM, #INTERPRET and #MDUMP when
    encountered in the form "$(<variable name>)".
Added extra ability to do the above when necessary for #INCLUDE, #USE and
    #IMPORT, with new special internal macro "OcppExpandFileNames" to turn
    the feature off if necessary.
Added ability to change search path variable name from default "ISEARCH".

3.002
------------------------------------------------------------------------------

Fixed uninitialised data bug in output code. N.B: very serious and definitely
    present since 3.000. sorry folks!
Fixed bug that mis-reported the line No.s of un-closed conditional
    constructs in the error message when exiting from within template files.
Added new PP switch to chain the occam compiler automatically.
Added ability to add foldmarks to #IF[N][DEF] ... #ENDIF lines via new
    special internal macro "OcppFoldUpHashIFs".
Added optional modifer tokens to regulate case of alphabetic substitutions,
    and slicing to select sub-strings.
Added optional multiple regular expression matching of macro values to
    patterns for the #IF[N], #OR[N] and #AND[N] directives.
Added #EXTRACT directive as a more sophisticated form of #DERIVE employing
    regular expressions, and #REPLACE for detailed macro value editing.
Added user-defined return code values to the #ERROR directive.
Added #RETURN directive to allow templates to terminate early and optionally
    return values.
Changed command line parsing so that both DOS and Unix switch characters
    are equally acceptable to either variant, as per 4-series occam toolset.
Employed the PD library SPAWNO by Ralf Brown to improve performance when
    shelling out from within the DOS variant.
Various other internal changes to make DOS variant more memory efficient.
Added defaults.ocp to the distribution.
Expanded template example to demonstrate more features.
Updated documentation again.

