PPWIZARD is a free preprocessor for HTML, REXX, Visual Basic or any text files.
\ -> Introduction -> Change History
Please note that my version numbers are of the format "YY.DDD" where "YY" represents the year and "DDD" is the day of the year (1-366).
While this format does not let you know of the magnitude of any changes (my change history shows this) it does make it simple to know the "age" of a release.
Please let me know of any bugs or issues and do not assume that someone else has reported it.
I have fixed all known bugs/issues.
The very fact that you are having a problem means that I probably
do not know of it!
In rare cases I do get snowed under and forget things, in this case
remind me!
- Version "Next Release"
- You tell me, feedback please!
Have you ever looked at a product and said
"Wouldn't it be nice if ...", well get on your backside
and send an email, make it so!
I'm not always right and believe it or not I don't mind being told so.
- Your idea here :-).
-
- Version 17.308
- New /PowerShell processing mode and by default
".p" files are mapped to it.
- Version 16.059
- Huge changes to CompareReplaceFixed() - mainly related to space handling.
- The leading "-" sign now turns off most but not all information on the
"/DependsOn" switch, to get the original effect
(not recommended) use "!" instead.
- Temporary "dependancies" now go into
the state file as comments (debugging aid), left format as "00.157"
so rebuilds won't be forced. The comments list the files they affected.
- The "<?NewLine>" symbol was not
adding any required "ExtraIndent"
- The #import command now searches for the file if
required using the FindFile() routine.
- If you let the #import command determine the
field names we now ensure there is no issues if they begin with "{".
- If you used "{col}" codes on a field, the #import
command now validates the column # is an integer.
Added more debugging to this part of the import also.
- MakeWebLinks() modified so that
"#@[]()$!';" and double quote are now valid URL characters.
Also added an optional 4th parameter which allows you to modify this
list to suit your requirements.
- The "File Stack" on a trap is now reversed so that the first entry
is the lowest depth (the failing module).
- Now includes newer version (v11.072) of "REXSYSTM.XH" for
"OpenBSD" support.
- Created new "$$BSX2" transformation.
- Version 10.097
- Fixed a "*Rexx" dependancy bug
where the expression was being converted to upper case.
- New "/RepeatsOfInputFileOK" switch.
- New "ReplaceEnv" routine and env change to command line and /list.
- Version 08.298
- The SQL variation of the #import command uses
"REXXSQL", this doesn't always set "SQLCA.FUNCTION" like its
supposed to. We no longer fail to display the error message
on failure if "SQLCA.FUNCTION" is missing.
- Created new "$$DQX2" and
"$$C2X" transformations.
- Improved "/DependsOnIgnore1H" to handle one hour
difference spanning midnight.
- Version 08.071
- As yet undocumented MacroUndef().
- New optional 3rd parameter (As yet undocumented)
on the GetIdPrepare() call
allows you to add a prefix to generated values.
- I'd stuffed up the "/DependsOnCheckOnly"
and "/DependsOnIgnore1H" switches.
- Improved error message when inability to execute commands detected.
- During install PPWIZARD looks for the environment variable
"PPWIZARD_PPW_CONSOLE_PATH", if found this is the name of the path
where console output goes (instead of "out" directory).
- New "<?NewLineInMacro>" symbol.
- A temporary file was being left behind when a file was successfully
syntax checked.
- All temporary files are now "tagged" making it easier to determine
the part of the code that "leaks".
- Version 07.048
- By default timestamps that differ by one hour are now ignored.
New "/DependsOnIgnore1H" switch can be used to
alter this.
- Version 06.278
- Enhanced "FOR" loops ("#{") to now support
the use of rexx variables for the starting value.
- New "/DependsOnCheckOnly" diagnostics switch.
- The files that matched an "/Exclude" switch
could fail to match against ones from an input mask on non-UNIX
operating systems under some circumstances.
- Minor change so TMP files are not left behind when a file fails a
syntax check.
- Version 06.154
- Regina is not always consistent about its handling of syntax errors.
In some situations PPWIZARD would display a message similar to
"Error 64.1: [Syntax error at line 3]" but then fail to determine
the faulty line, it will now do so!
- Minor #AutoTag bug (could not define a "before"
string of all spaces).
- The #import command can now be configured on how
leading and trailing whitespace on column data should be handled
(STRIP_SPACES).
The default for fixed field imports now leaves leading whitespace
alone.
- Version 06.109
- The image resizing that GetImageHeightWidth()
performed could be slightly out when new width or height of "?"
was specified.
- No longer use "dennisbareis.id.au", use cyberone and gmail
information instead.
- Version 05.331
- The reset of bits with the "-" prefix on the
DebugLevel option was not working.
- The extension returned by FilePart()
could be incorrect if the file didn't have an extension and any
directory portion did!
- Added a second parameter to Defined() allowing
you to ignore the fact that a symbol may be invalid.
- A user requested that GetImageHeightWidth()
be able to handle ".BMP" files.
- The "Expand All Unused Parameters"
facility was not producing the required space when needed.
Thanks to "Jan Weatherhead" for reporting this.
- Version 05.278
- The "$$?" facility can now have
parameters.
- Improved a "#option" error message.
- The "Elapsed Time" in the summary is now formatted.
- New ConsoleCount() routine.
- New Seconds2Text() routine.
- New ValidateNesting() routine.
- Better detection of location of syntax error in some situations
(for example if filename contains brackets).
- Version 05.115
- The FileCopy() routine now uses
"--preserve=timestamps" on the linux "cp" copy command line.
It now also has a "newer" mode.
- More flexability in the "#import" command when
field information is omitted.
- MakeWebLinks() modified so that
"&" and "=" are now URL characters, other minor changes.
- Version 05.013
- Fixed the "#import" command so that it wouldn't
die if all field information was omitted.
- Recent regina versions
(such as that introduced by the "04.251" release) have problems
with a previously support rexx syntax.
The failing line looks like "call time('R')".
Not sure under which circumatances this causes PPWIZARD to fail...
- Version 04.332
- Some reorganisation of details output in rexx trap situations
(hopefully more understandable).
- New "ScheduleCleanupCode()" routine.
- Improved the FileDelete() routine so that
you can queue a file deletion for when PPWIZARD terminates.
- Possibly large performance improvement as suggested by
Julian Onions (MAKEMSI user - MAKEMSI improves by about 10%).
- Version 04.252
- Oops need to update the supported regina versions list.
I had this configured on my computer so it worked OK!
- Version 04.251
- The "/Syntax" switch and PPWIZARD now supports
column information.
- Fixed the "$$PASSDSQ" and
"$$PASSAQ" transformations so
that the passed parameter name retains its original case.
- Includes the new version of regina (3.3).
This corrects some memory leaks I identified plus correctly
identifies WINXP (but not WIN 2003).
- Minor performance improvement as suggested by
Julian Onions (MAKEMSI user).
- Version 04.212
- New "HOLD" option on the "#output command.
- The dependency "previous" and "now" debug output was switched.
- Version 04.106
- Fixed a bug in SET loop ("#{") which was only invoked
if the set was completely empty.
- The #OnExit command can now take the slot number
from a rexx variable or ppwizard macro.
- Modified AddInputFileToDependancyList() so
that by default it will abort if the file doesn't exist.
- Minor change to dependancy handling (handling of non-existant
input files).
- Version 04.051
- Oops, my command line change killed project file support.
- Version 04.050
- Added infinite loop detection for macro parameter handling.
Improved infinite loop detection for macro replacement.
- I did not realise that filenames beginning with "/" were being
interpreted as switches requiring
Curley Codes or
project files for workarounds...
On UNIX only "-" now interpreted as starting a switch, on others
both "-" or "/" can be used.
- The FileCharOut() now does what the doco
says it does (it was not useful for external use as is).
- Better detection and reporting of shell execution problems,
values of key environment variables are now reported and attempts
to delete console and error files will no longer prevent the
messages display.
- Version 04.026
- Updated DirQueryExists() so as to return
"" if a file (not directory) passed in regina
(it appears to be inconsistant when "stream()" used).
- Better error message for "{$!:keywords}" validation.
- New "HOOK_UNKNOWN_MACRO" hook which is
called when we can't find a PPWIZARD macro.
- Version 03.268
- Updated appropriate extension related details so that by default
".j" files build ".js" (jscript) and are syntax checked.
- Fixed ML import
so that ASIS process occurs on the continued parts as well as the
first bit!
- Updated the processing of the /Debug
"look ahead" code such that if a console file has not been set up
it will create "PpwDebug.txt".
- New macro validation
which ensures that keyword parameters were not used.
- Fixed a bug which I doubt anyone ever noticed in the
"#{" command (for/set loops would fail if the
command prefix was changed from '#').
- Improved the "#{" command to support nested loops.
Note that this needs more work, it will not work correctly in
some situations but nesting to any level now supported.
- Version 03.220
- The Tabs2Spaces() code and therefore the
"tabs" #option where a specific tab stop was
specified fixed as it was always expanding one column too short
(to "4,8,12" not "5,9,13" etc).
- Added a "max" parameter to the "Wbr()" routine.
- Created a new "$$DEL" transformation.
- Created "<?CTEXT.EXE>" symbol.
- Version 03.147
- Some "#import" command changes:
- SQL importing now correctly processes ASIS options.
- XHTML fixes - quote some more attribute parameters.
- Allow easier setup of a table captions.
- The insertion of html generator
tags will now handle "html" tags with attributes.
- New /AddressCmdTrace routine.
- Version 03.103
- Make PPWIZARD more XHTML friendy by default.
The #import command and some other situations
now generate lower case tags and attributes.
- You may need to modify your source, see following issues:
- Modified the GetImageHeightWidth()
routine.
You should only need to make changes if you were parsing
the return value (or were originally passing "Y").
The routine's 4th parameter has been modified to
hopefully make parsing nearly obsolete but for the simplest code
change you can pass the result through the rexx translate()
routine to convert the result to upper case.
- Version 03.089
- Modified the #data command so that
the column number is optional.
- New DataInfo() routine.
- Version 03.059
- Fixed an error reporting bug in the
FileNameRelative() routine.
- Defined a range of user colors (all starting with "?")
which is not used by PPWIZARD but allows you to configure
and use any colors of your own.
- Fixed some default color configuration errors.
- Version 03.024
- Fixed "EXEC" option on #OnExit
(probably broke in v01.112).
- The /COPY and /CLONE switches
should now work correctly when /TEMPLATE is
also specified.
- Fixed ArraySplit() so that if a string ends
with the delimiter then now treat this as an extra empty field.
- Improved "#PUSH and #POP
macros to make them easier to use for simple nesting validation.
- New macro facility
(How many parameters were passed?).
- New Quoted() routine.
- You can now specify the default separator for the
#( command.
- Minor change to the /BuildTitle switch.
- Version 03.004
- New $$NOSPAM transformation
and NoSpam() routine.
- Modified how <?PpwizardAuthorEmail>
generates its output.
- Better display of any evaluated rexx code on trap.
- The Windows Installer fixed for Windows NT, 2000 and XP.
This would only affect its use from a command prompt.
The ".rex" and ".rexx" associations had some errors.
To start PPWIZARD from command line you would have needed
to specify "regina" as well.
- Version 02.326
- The #import command can now import data into
memory (populates #data structure).
- The _filespec() routine has been renamed
FilePart() (old name still works).
- New $$FILEPART
transformation.
- Enhanced {$!}
to allow valid parameters to be listed by macro creator.
- Added workaround to a regina bug which might cause
incorrect "Unknown AutoTag Change Type" messages.
I do not believe this occured
in 02.319 or earlier.
The Regina 3.1 Beta 2 is supposed to fix this problem
(testing shows problem disappears).
- Version 02.319
- Fixed error handling bug in FileDelete().
- New #data command can make it easier to pass
more complex structures to macros.
- Reorganised the doco for
macro transformations
to make them easier to understand and document.
- Version 02.292
- When installing under WIN95, WIN98 or WINME with some unusual
situations the Windows Installer could incorrectly update
"autoexec.bat", the code has been rewritten to be simpler and more
robust.
- There may have been some trouble installing PPWIZARD on
WIN95 using regina 3.0.1, until I know more I have reverted to
installing 2.2. If you wish to use a more recent regina then
simply overwrite the 2 "regina" files installed.
- Version 02.284
- The /CLONE switch was not correctly handling
a destination directory name which contained spaces.
- The insertion of html generator
tags could in some unusual cases cause insertion of a second
"head" section.
- Fixed a minor bug in ArraySort()
(handling of 3rd parm).
- Fixed minor error handling "unknown variable" bug (SF!L) in
GetQuotedText() and
GetQuotedRest() routines.
Bug introduced in the 02.268 release.
- Documented ExtnInfoGet().
- Version 02.268
- Improved the #transform command so it can
drop lines and be nested.
Added more examples to doco.
- When PPWIZARD reports missing stack pops
the information will now appear as part of the error message making
it available in the error file.
- New HOOK_OUTPUT hook.
- Updated FileCopy() to output more
information if the copy fails.
- Better error messages from some failures in macro replacement.
- Updated GetQuotedText() and
GetQuotedRest() routines to allow for better
error messages in most circumstances.
- The /Debug switch now turns
/PpwTrace state is to "ON".
- Better debugging when rexx executed.
- Version 02.256
- Version 02.242
- Version 02.228
- Fixed a bug (introduced in 02.213) with "input"
dependancies where some "TEMP" values
were filtered out.
- Fixed a "*Rexx" dependancy
bug which would trap ("EndsVar" unknown) if debug was on.
- The #import command and /List
switch (and therefore project file handling) updated to make better
use of the whitespace option.
- Improved QuoteIt().
- Version 02.221
- Fixed "*EXEC" dependancy
bug affecting Windows 95, 98 and ME as well as DOS.
- Fixed "*FILES" dependancy
checking so that file ordering is guaranteed to be consistant.
Added file size information.
Now also marks all files found as "TEMP" to prevent any possible
duplicate processing.
- If a dependancy "stamp" is
very large a CRC based stamp for the value is now generated.
- Modified #import to replace macros once
in any filter code.
- Better, safer handling of REXXSQL variables in
"ErrorSql()".
I suspect REXXSQL bugs can cause a trap (on error).
- Improved #{ error message when nesting
attempted.
Will now also detect end of loop when preceeded by tabs.
- Performance improvements to UpdateCrc32()
(about 2 times faster).
- New FileLineOut(),
FileCharOut(),
FileOpenReadOnly() and
FileClose()
routines.
- The FileNameRelative() routine
now handles more situations.
- Version 02.213
- The Windows Installer fixed for Windows NT, 2000 and XP.
If on the first install you changed the install directory from
the default or on a subsequent install changed install directory
then the right click registry entries would be incorrect
(installing twice into the correct directory would fix).
It now correctly remembers the previous
directory it was installed into and defaults to this on
subsequent installs (95/98/ME won't remember).
- "* Processing" text changed to "* Reading" and other default
formatting changes.
- The "/Making" switch renamed to "/BuildTitle".
- New /Reading switch to disable or change
the "* Reading:" message.
New Reading() function.
- New /Making switch to disable or change
the "- Making:" message.
New Making() function.
- "TEMP" dependancies can now be specified at
any time.
- New FileNameRelative() routine.
- Version 02.207
- Enhanced fragment handling on the #Include command.
- Can now have
PPWTRACE aliases and alias macros
which are multi-line.
You can now use a macro called "REXX_BP_AUTO_CMD"
to automatically execute one or more commands when a breakpoint
expires.
The "REXX_BP_ALIAS" macro has been renamed
"REXX_BP_ALIAS_FILES".
The "?v" command can now also dump specified variables.
Other improvements.
- Version 02.200
- Fixed unknown variable "TraceBreakPoint" if syntax error in rexx
code being evaluated.
Reorganised code to make it easier to understand and faster to
execute.
- Fixed bug in IncludePath(), if you wished
to look in a directory tree, the base directory was not searched.
- New PpwTrace option and /PpwTrace
switch.
Removed the "/$Trace" switch.
PPWIZARD Tracing
no longer depends on debug mode being on.
- The "$TRACE" commands on the #DefineRexx
command have been renamed to match the new options.
- The "REXX_BP" macro can now specify a simple
expression for evaluation, for example to stop when the variable
"count" is 99.
The "BP" commands response is now handled exactly as per the
"REXX_BP" contents.
- You can now display the current location (file and line number)
being processed at a break point command line.
You can also now define aliases via macros if you wish.
- Better error message when we can't find start/end fragment on
a #Include command.
- Version 02.193
- Added /Color support for Windows NT, 2000
and XP (on by default)
and DOS, Windows 95, 98 and ME and UNIX (off by default).
Colors now configurable.
- New /ColorCfg switch plus these
new rexx functions:
- Added a "$BreakPoint" command to #DefineRexx.
- You can now dump the value of a macro at the
break point command line.
- New /1 switch to work around a basic
rexx command line handling issue.
- New /CONSOLE switch which can be used to turn off
console output.
- If multiple /ConsoleFile switches are found then
any previous output to another file is copied across to the new
file (if the same file now appends).
- The Windows installer now creates "Send To" options to create
HTML (WIN2000 and WINXP only).
If anyone can send me a
"Send To"
shortcut which works for WIN95-ME and WINNT then I will
add these also.
- Updated the PPWIZARD command line syntax error message
(more informative).
- Now spell "copying" correctly (/COPY).
- Version 02.186
- The "Expand All Parameters As Rexx Code"
functionality updated to handle extremely long values and
all situations (makes use of some
"$$RxVar" code).
- Fixed a #intercept feature.
If a block was not turned off then a following build within the
same PPWIZARD invokation could fail if it also used the command.
- Oops, fixed a recently introduced bug with
BreakAt() which could cause incorrect
characters to be used when splitting a string.
- Improved the way #DefineRexx handles
traps (was looking at unexpanded rexx code).
- Added Regina 3.0.1 to list of supported versions.
- Version 02.181
- New "$$RxVar"
transformation command to once and for all eliminate
regina "clause length" and other problems (fingers crossed).
I will be removing $$Rx' and $$Rx" transformations in a not so distant future release...
- New "Wbr()" routine.
- New "XVarDefined()" routine.
- Fixed bug in handling of line breaks generated by macro created
with #DefineRexx.
This would cause CR+CR+LF termination when generating
rexx code (using as a rexx preprocessing).
- Added "trace_none" parameter on the
#DefineRexx command.
- We no longer try to resolve error line number in evaluated rexx
code on "no value" traps (not possible).
- The HTML doco updated so that when a page is printed the
header and and most of the footer will not be
(works in most browsers).
- Version 02.168
- The "last used" /DependsOn switch processing was
not configured by default.
It had to be used prior to a input mask.
- Windows installer now double quotes text editor name in registry to
correctly support names containing spaces.
- Version 02.166
- Updated /ExtnInfo switch and default values so that
PPWIZARD now defaults to working very close to the way it did before
"02.161", in that it will use the last specified switch information
if available, only if this not available will it specifically set
default info (you can change this behavour any way you wish).
I wish I had of though of doing this in the last release!
- Updated delimited file importing
so that if you wish to import all fields in the original order
and the first record contains suitable field descriptions then
you can tell PPWIZARD to use this field information.
- Modified #import to hopefully produce a slightly
more pretty default table look
(tweeked "TABLE_ATTRIBS").
In HTML mode "BLANK_FIELD" now defaults to a non-breaking space.
- Fixed /CLONE switch (broke in 02.161).
- Fixed FileCopy() and
/COPY processing mode under Windows NT.
- Error messages now display a
"file stack" (if not processing the main input file)
as well as any console or error file names.
- Version 02.161
- New /ExtnInfo switch allows you to specify default
extension handling.
Note this now allows default
dependancy masks and
output directories and extensions to be configured!
- Modified /output so that a default directory
can now be configured.
It now also takes an "empty" value.
- New /NoFiles switch allows you to configure
a default filemask and optional switches.
The file "default.it" is no longer special, the functionality has been
enhanced and it allows me to simplify the code a lot.
- New /BC switch allows you to set some PPWIZARD
backwards compatability options.
- New $$ commands of
"$$IsBlank" and "$$IsPassed".
- Version 02.148
- PPWIZARD now tries to identify the exact failing statement if a
#evaluate or #DefineRexx
command fails with a syntax error.
This should make development with rexx code much more pleasant!
- /Syntax reporting was probably failing when
incorrect syntax under OS/2.
- The following modified to support international case translations
(better):
- Improved #NextId command, can now specify the
characters used with "CHARS" subcommand (default set expanded).
- Minor tweeks to Windows Install including fixing incorrect "install"
and "next" buttons (swapped pages).
- Version 02.140
- Fixed "colon bug" in <?=RexxExpression>
(introduced in 02.109).
- Added optional parameter to
FindFile() routine to tell it to die if
file not found.
- The ArraySort() routine can now do case
insensitive sorts.
It is now also much faster.
Older Entries Than Those Above |
If you need to see older entries then please have a look at
my older change history page.
PPWIZARD Manual

Sunday November 05 2017 at 10:00am