===============================================================================
========================== ============================
========================== VERSION HISTORY ============================
========================== ============================
===============================================================================
For easy reference, this history is presented in reverse order (most
recent version first). Remember: if you have previously registered
Parse-O-Matic, you can self-register any trial (test-drive) copies
we create for a period of two years. Thus, your small investment in
the initial registration can provide you with a lot of free updates.
Since we do not automatically ship new versions, we encourage you to
drop by our BBS at 514-345-8654 every few months, to see what's new.
+-----------------------------------------------------------------------------+
| |
| Most of the enhancements to Parse-O-Matic are inspired by POM users. |
| We charge a nominal fee for custom work, but we will usually provide |
| a discount if the requirement seems to be beneficial to other users. |
| POM's evolution has been guided almost entirely by our customers. |
| |
+-----------------------------------------------------------------------------+
------ ------------------------------------------------------------------------
VER. WHAT'S NEW IN THIS VERSION
------ ------------------------------------------------------------------------
3.20A Parsing of multiple input files into one output file
DOS wildcards are now permitted in POM command for input file name
For example: POM XYZ.POM *.TXT OUTPUT.TXT
New NEXTFILE command skips to next input file
New predefined variable $COMMAND, showing current POM command
New PEEL command
Works like PARSE, but removes parsed text from source variable
New SOUND command
Sets error-message sound or generates a sound
The DONE and READNEXT commands now have optional comparisons
For example: DONE x = y
Restructured example files as an interactive tutorial
Enhancements for unattended operation
Log file (POMLOG.TXT) records processing, and any errors
Error and warning messages pause for a minute, then the program ends
Fixed problem with ELSE statements nested two deep
------ ------------------------------------------------------------------------
VER. ENHANCEMENTS IN PREVIOUS VERSIONS
------ ------------------------------------------------------------------------
3.11A DBF file enhancements
Improved reporting of DbF fields when tracing
Corrected data alignment error that affected some DbF files
3.10A New ELSE command
Allows BEGIN/ELSE/END blocks
New READNEXT command
Reads next line from input file, maintaining current place in POM file
New SETLEN command
Sets a variable to the length of a value (e.g. "XYZ" is length "3")
New DONE command (useful only in BEGIN/ELSE/END blocks)
Jumps to the end of the POM file; equivalent to IGNORE "X" = "Y"
New ~ comparator ("does not contain")
PARSE returns a null value if given impossible parsing task
Example: PARSE x "FRED/MARY" "1*/" "2*/" (problem: no second slash)
Maximum number of variables and literals increased to 1000 (was 225)
3.00A New PARSE command
You can now parse free-form data (including comma-delimited files)
New APPEND command
Allows you to concatenate up to four values
Data in output buffer (via OUT) is now flushed at end of input file
You can now use POM to create binary and fixed-record-length files
Varied comparators (equals, not equals, less than, contains, etc.)
Affects the commands IF, IGNORE, ACCEPT, BEGIN, OUT[END]
For example: IF x > y THEN z = "YES"
------------------------------------------------------------
NOTICE REGARDING CHANGES REQUIRED IN YOUR EXISTING POM FILES
------------------------------------------------------------
This notice involves a change in the behaviour of IGNORE and ACCEPT.
With the addition of varied comparators, you may have to change some of
your old POM files. The IGNORE and ACCEPT commands were considered
"true if the string contains the specified text". In other words, they
performed a "contains" comparison rather than an "equals" comparison.
(IF, BEGIN and OUT[END] used an "equals" comparison.) IGNORE and ACCEPT
now default to an "equals" comparison.
There are two situations in which you must modify an IGNORE or ACCEPT:
(1) If you padded the line with "=" (for clarity or aesthetics), yet
you meant "contains", the line should be changed. For example:
IGNORE $FLINE[1 10] = "YES" (old style, using "=" for clarity)
IGNORE $FLINE[1 10] ^ "YES" (new style, using "contains" symbol)
(2) If you omitted the "=" character, and you want to do a "contains"
comparison, you must insert the "contains" symbol:
IGNORE $FLINE[1 10] "YES" (old style, stated tersely)
IGNORE $FLINE[1 10] ^ "YES" (new style, using "contains" symbol)
If you are comparing two strings of equal length, there is no need to
modify an IGNORE or ACCEPT. For example: IGNORE $FLINE[1 3] "YES"
will continue to work properly, since either a "contains" or "equals"
comparison will produce the same result.
2.71B Fixed SPLIT bug
POM quit early if file length was an exact multiple of 32767
2.71A Added PROPER command
Updated manual to explain licensing options
2.70C Minor fix to unregistered (trial copy) reminder
2.70A POM can now read DBF (DBase) files directly
New ASCII literals (using the # character)
New TRACE, OUTHDG and PAGELEN commands
Documented the /Q command-line switch
User manual expanded to 30 pages; new examples (walk-throughs) provided
2.60 New BEGIN and END commands (blocked "IF" operations)
Command lines may now be indented for clarity
New predefined variable $SPLIT
This indicates which CHOP or SPLIT segment you are on (1, 2, 3 etc.)
New look-up processing
New LOOKUP, LOOKSPEC, LOOKCOLS, LOOKFILE commands
New /L start-up option
Improved error detection and reporting
Comparison operation is now optional for OUT and OUTEND
2.52 Added new symbol $TAB; fixed operation of $BRR and $BRL
New provisions for international registration
2.51 Fixed Program Error MV-P-2 caused by padding with tabs instead of spaces
2.50 CHOP command breaks up fixed-length (non-text) files
User manual restructured and partially rewritten
2.40 SPLIT command breaks up long (over 255 characters) input lines
2.33 New /Q (quiet) function: type POM /? for explanation
Fixed bug: long output lines (>255) occasionally would lose some text
2.32 Fix to CHANGE to correct lock-up when matching single-character string
Added registration via credit card
Added new version of SEE to allow full browsing of wide documents
While tracing, processing display now shows precise line number
2.31 MINLEN now supports zero-length lines
Default MINLEN is, however, still "1"
2.30 Output (via OUT and OUTEND) can now be more than 255 characters
However, no individual OUT or OUTEND can output a line longer than 255
New commands: PAD, INSERT
Ease-of-use changes
More informative processing display
Variable names are no longer case sensitive
Improved error checking
Added another example to documentation
2.20 Provided 2-year self-registration for registered users
Increased number of variables and literals from 100 to 225
Allowed "=", "THEN" and "ELSE" to improve readability
New commands: SET, ACCEPT
Now possible to trace variables by name (SET POM=var/var/var...)
SET POM=T (older versions) is now specified as SET POM=ALL
Improved documentation (more examples)
2.10 First public release
2.00 Custom version; not released to public
1.00 Custom version; not released to public