=============================================================================== ========================== ============================ ========================== 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 evaluation copies we create for two years (six years for deluxe registration). Thus, your small investment in the initial registration can provide you with many free updates. Since we do not automatically ship new versions, we invite you to visit our Web site (users.aol.com/psoftinfo) every few months, to see what's new. +------------------------- WE ARE CUSTOMER-DRIVEN! ---------------------------+ | | | 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. | | | | ******* PARSE-O-MATIC'S EVOLUTION IS GUIDED BY OUR CUSTOMERS ******* | | | +-----------------------------------------------------------------------------+ ------ ------------------------------------------------------------------------ VER. WHAT'S NEW IN THIS VERSION ------ ------------------------------------------------------------------------ 3.92A Enhanced SET command Added trimming and default settings to SET command This turned out to be so useful that it alone warranted a new release! Minor changes to documentation Renamed several files to use proper .TXT extension This is in deference to Windows users 3.91A New Features Job (POJ) files contain the parameters for a POM command Job files allow you to prompt for the input and output file names See "Parse-O-Matic Job (POJ) Files" in the manual Job files are a handy way to run POM from Windows New Command FILESIZE var value Returns size of file, or null if file does not exist See "The FILESIZE Command" in the manual Enhanced Commands OFILE can now deduce an output file name, based on the input file name See "The OFILE Command" in the manual TRIM now has "multiple" option TRIM $FLINE "M" " " removes multiple spaces, leaving only singles See "The TRIM Command" in the manual POM-File Encryption New SCRAMBLE utility discourages users from tampering with a POM file The POM file is rendered unreadable -- except to Parse-O-Matic See "Encrypted (Scrambled) POM Files" in the manual Other Enhancements The code for trimming has been rewritten for faster performance This improvement should be noticeable when converting large files The SHOWNUM utility now converts characters as well as numbers See "The SHOWNUM Utility" in the manual ------ ------------------------------------------------------------------------ VER. ENHANCEMENTS IN PREVIOUS VERSIONS ------ ------------------------------------------------------------------------ 3.90A New Features Deduced, array and eponymous variables This is an extremely powerful feature of Parse-O-Matic Supports 1, 2 and 3 dimensional arrays Supports eponymous variables You can name a variable after a piece of input data You can not do this kind of thing in most standard languages User-specified command-line parameters /X /Y /Z set $CMDLINEX $CMDLINEY $CMDLINEZ New SCANPOSN command compares a string against a list of items New RANDOM command generates a random number Enhancements POM now runs in protected mode for improved performance POM will no longer run on 8088 and 8086-class machines A custom 8088/8086 copy of 3.90 can be made for you, if necessary Improved capacity for variables and literals Increased maximum number of variables and literals from 1000 to 2000 This can get used up quickly by arrays (each entry is a variable) Optimized storage of literals Identical literals only take up one variable/literal slot Vastly improved file viewer (SEE.EXE) No limits to file length; views lines up to 255 chars wide Many helpful search commands; built-in help and customization This version is to support POM -- not for distribution Problems Fixed Corrected unexpected page eject when using OFILE then PAGELEN This only mattered if PAGELEN was set for the previous file Corrected occasional spurious character "found" at end of SPLIT files ---------------- UPGRADE ADVISORY ---------------- Any variable names that contain parentheses "(" or ")" should be renamed Any variable names that contain commas should be renamed In general, use only A to Z, 1 to 9 and underscore in variable names Debugging notice The OUT and OUTEND commands work slightly differently They no longer report if they encounter a non-existent variable If they can't find a variable, they simply put nothing at that spot This is closer to the general theory of variables of POM This also allows for simpler code with scattered array variables 3.81C Corrected leap-year interaction between DATE, MAKEDATA and MAKETEXT This occured when converting both date serials and text dates 3.81B Corrected typographical error in the user manual 3.81A New commands OVERLAY lets you extend or overwrite portions of a variable REWIND lets you back up in a SPLIT or CHOPped file ROUNDING controls rounding by CALCREAL (see Upgrade Advisory) SHOWNOTE displays a short progress message on the processing screen Enhancements The GET command GET can now be used in SPLIT files, not just CHOPped files GET x "EOF" returns "Y" or "N" for End-of-File condition LOOSE parameter (STRICT is default) Permits processing to continue despite unexpected end-of-file Manual reading (CHOP 0) now runs slightly faster Problems fixed ERASE did not work if the file name had a plus ("append") in front Quiet Mode (/Q) is better behaved when POM is called by a DOS program Minor changes sometimes appeared on the screen if it was not redrawn ---------------- UPGRADE ADVISORY ---------------- This notice concerns you if you use the CALCREAL command. Due to the way that real numbers (as opposed to integers) are calculated in binary, CALCREAL would sometimes return unexpected results. For example: CALCREAL x = "400.00" "-" "390.60" "2" produces the answer "9.39" rather than the expected answer of "9.40". This is because, in real-mode binary calculations, the answer ends up as 9.3999999, which is very close indeed to the correct answer. However, when you specify "two digits of precision" (the "2" in the command), the answer is simply truncated after two digits, yielding the answer "9.39". This issue is now resolved. When appropriate, answers are rounded up, if you have explicitly specified a fixed number of digits of precision. Floating calculations are not rounded. This means that existing POM files may work slightly differently than before. To make your existing POM files continue to work the way they used to (i.e. simply truncating answers when you specify the number of digits of precision), place the following command at the beginning of your POM file (typically in the PROLOGUE): ROUNDING "N" This will disable the rounding feature, which is, by default, enabled. See "The ROUNDING Command" (in the user manual) for full details. 3.80A New KEEP command performs a conditional page eject to keep text together New CODE and CALL commands allow you to define subroutines New predefined value $LINECOUNTER Color control for menus (see Upgrade Advisory) Changes to user manual Reformatted for easier reference Manual file has been renamed from POM.DOC to MANUAL.DOC Please note that our phone numbers for credit card orders has changed See the text file ORDER.FRM for the new numbers ---------------- UPGRADE ADVISORY ---------------- This notice concerns you if: - You use the old menu program MENU.EXE in your own batch files, or... - You placed the old DEVELOP.BAT file in another directory, or.. - You are using a modified copy of the old DEVELOP.BAT The old menu program (MENU.EXE) has been replaced by a slightly improved version, named PSMENU_D.EXE. The name was changed to avoid confusion with the numerous menu programs that are also called MENU.EXE. (Some users experienced problems when using the DEVELOP.BAT batch file because they had more than one MENU.EXE on their system.) Please do not rename PSMENU_D.EXE to something else; we will be upgrading our multi-platform support soon, and the menuing system will expect the DOS menu program to have that name. PSMENU_D lets you control the color of the menus. For details, print or view the comments in the file POM.MNU. You may use PSMENU_D in your other applications. Enter PSMENU_D at the DOS prompt for an explanation of the distribution (legal) conditions. 3.71A Fixed: Some data might be lost if OUT generated exactly 254 characters and then additional data was added with another OUT or OUTEND command 3.70A New commands CVTCASE converts a variable to uppercase or lowercase GETENV obtains a system environment variable (e.g. PATH) MSGWAIT controls the behaviour of error messages REMAP transforms sub-strings into other strings MAPFILE reads a file containing data transformations for REMAP Enhancements to PARSE, PEEL and FINDPOSN Search strings (e.g. "2*,") are now known as decapsulators Overlapping decapsulators now behave more gracefully PARSE and PEEL return an empty string; FINDPOSN returns "0" This situation used to generate an error message i.e. "From" value exceeds "To" value Most users found this unhelpful or confusing For details, see "Overlapping Decapsulators" in the manual New search parameter looks for "last occurence" or "first occurence" Example of "last occurence": PARSE xyz $FLINE ">*$" ">*.00" Example of "first occurence": PARSE xyz $FLINE "<*$" "<*.00" Documentation Improved quick-reference section The "importable" version has moved from EXAMPL04.POM to QUICKREF.POM ---------------- UPGRADE ADVISORY ---------------- This notice concerns you if: - You have created POM applications that are run unattended - You use the HALT command (See "Unattended Operation" and "The HALT Command" in the manual) Since version 3.20, error messages would "time out" after sixty seconds (or when a key was pressed), whereupon Parse-O-Matic would terminate. Parse-O-Matic now waits for permission to continue if an error occurs. You can control this behaviour with the new MSGWAIT command (see "The MSGWAIT Command" in the manual). To make Parse-O-Matic behave as it did before (i.e. timing out sixty seconds), add this line to your POM file: MSGWAIT "60" If you simply want to make your HALT commands work the same way (i.e. allowing them to time out after about a minute), insert MSGWAIT "60" prior to each HALT command. 3.61A Added inline decrement (e.g. SET y = x-) LOG command now allows two additional (optional) values Rationalized null specs and empty fields in Parse, Peel and FindPosn Customers were using these in creative ways that we had not foreseen We have taken these into account and fully documented the behaviour See "The Null Decapsulator", "Left-Peeling" and "Insoluble Searches" Minor improvements to the processing display 3.60A New commands MAKEDATA converts text data to binary MAKETEXT converts binary data to text ZERODATE initializes the date for serialized date format GET reads variable-length records and delimiter-terminated data GETTEXT combines functions of GET and MAKETEXT commands AGAIN allows you to return to an earlier BEGIN comparison Enhancements CHOP now allows manually-controlled reading (via the GET command) Read-only files are opened as such, avoiding sharing problems on LANs Improved appearance of trace logs Hexadecimal literals (e.g. $39$34 means "94") Utilities SHOWNUM.EXE: reference tool converts decimal to hex and vice-versa DEVELOP.BAT: simple interactive development environment (IDE) Documentation New material added for the READNEXT and LOOKUP commands Several new sections about techniques and operational planning Additional material about running Parse-O-Matic under Windows Improved file-handling OFILE now adds the default extension, if necessary In 3.50, OFILE "XYZ" would not automatically add the .TXT extension The default extension routine is no longer "fooled" by ..\ or .\ Earlier, a file name like ..\XYZ would not get the default extension Problems fixed Fixed "FRAME-UUI" problem affecting Quiet mode Fixed routine to search through DOS PATH for "missing" files 3.50A Corrected a bug in the LOOKCOLS command (affected Parse-O-Matic v3.4x) It would set the "Key-End" value to the last number listed in LOOKCOLS It would set the "Data-Start" and "Data-End" to defaults (12 and 255) New commands ERASE deletes a file OUTPAGE sends a page eject to the output file (or device) PAUSE delays the specified number of milliseconds OFILE switches between output files You can overwrite a file or append (add to the end) See "How Parse-O-Matic Opens an Output File" in the manual The append feature is also available at the command-line level Enhancements Processing display now shows input and output in appropriate units Input units (Bytes or Records) Output units (Bytes or Lines) Additional information in "processing completed" line in POMLOG.TXT It now specifies the amount of output (in bytes or lines) Output can now be sent to a generic device (e.g. COMx or LPTx) See "Sending Output to a Device" in the manual Documentation New "File Handling" section in the manual ---------------- UPGRADE ADVISORY ---------------- POM now creates the output file ONLY when it first receives output See "How Parse-O-Matic Opens an Output File" in the manual for details If the output file does not receive any output... If it did not previously exist, it will not be created If it already existed, it will contain the old data To ensure old data is gone... Delete the output file before running Parse-O-Matic, or ... Use the ERASE command in the PROLOGUE 3.41B PEEL reports precise nature of certain impossible parsing situations 3.41A Fixed trimming problem affecting PEEL when using "null" delimiter 3.40 New commands DATE and TODAY provide date formatting, in any language MONTHNUM converts text month to numeric month, in any language COPY copies a variable from one character position to another DELETE removes selected characters positions from a variable EXTRACT moves selected characters from one variable to another FINDPOSN locates the position of a string in another Enhancements All control files (including POM) are searched for, if necessary If a directory is explicitly specified, POM looks there only Otherwise, POM searches logged dir, POM's dir, then the DOS PATH This makes it easier to build a library of standard files INSERT now allows "insert to left" and "insert to right" Automatic numeric comparators The old method used text comparisons, which required pre-padding Comparisons automatically determine if number is real or integer CALC and CALCREAL now explicitly report "divide by zero" attempts User manual reformatted for easier reference Explanations of commands are preceded by an improved overview Problems fixed There were no problems reported in the last release 3.31A Numeric command parameters are now more forgiving Spaces, tabs and commas are removed 3.30A New commands LOG command writes a message to the log file POMLOG.TXT HALT command allows termination with a DOS errorlevel CALC command performs integer arithmetic functions CALCREAL command performs decimal arithmetic functions EPILOGUE command defines code to be run before input is processed PROLOGUE command defines code to be run after input is processed Enhancements Optional MINLEN setting controls the READNEXT command Tracing no longer shows code inside skipped BEGIN/ELSE/END blocks Increased variable name length from 8 to 12 Increased number of DBF fields from 50 to 100 Increased maximum line length in look-up files from 80 to 255 Increased maximum number of POM lines from 500 to 750 This does not include comment lines Lookup file (LOOKFILE) is now searched for in various directories If a directory is explicitly specified, POM looks there only Otherwise, POM searches logged dir, POM's dir, then the DOS PATH Restructured tutorial for easier reference New deluxe registration provides 6 years of new version registration Three times the standard benefit, but only twice the price Problems fixed Clustered ACCEPTs inside "false" code blocks were sometimes executed Some error reporting caused problems on extremely large POM files Ran out of file handles if you had a large number of input files Incomplete trimming of multiple character delimiters in PEEL 3.21A Custom version; not released to public 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 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" ------------------------------------------- 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