PPWIZARD Manual
Change History - Older Entries
This page does not contain
the latest ppwizard change history entries.
It is meant as a bit of an archive in case you are upgrading from a really old
release or maybe you are just interested.
Just note that any change described here could easily have been superceeded
in a newer release.
- Version 99.355
- New #OutputHold block command.
It allows you to hold output (not written directly to file) and
allows you to drop or modify it at end of block.
- Improved next & Prev html links created by
OL_DOC.DH.
- Version 99.350
- New #transform block commands.
Similar to "#import WRAP", but code
inline (unless you use #include)
and it is passed straight to rexx code you define.
This command will probably turn out to be a commonly
used command.
It can be very useful in situations where you currently
manually encapsulate one type of code in another, for
example generating "HTML" via javascript or
generating rexx code from rexx.
- New /List switch allows you to read a list
of input masks from a file.
- New Beginners Guide.
- Version 99.345
- Oops REXXBP (now "REXX_BP") was not always working
unless "?" used.
Also now if a breakpoint is set and a trap occurs
you get to the command prompt for debugging.
- You can now specify aliases for long commonly used debug
commands (from file and command prompt).
Also commands that you enter are automatically remembered,
allowing for their reuse.
- New "$TRACE" attribute on #DefineRexx as well
as /$Trace switch.
- Version 99.336
- New /Hook switch to allow you to do processing
before and after a build as well as handling warning and error
situations (perhaps to update your own log file).
- New /RegSyntax switch to allow better syntax
checking of generated rexx code under OS/2.
- When processing rexx code, ppwizard was removing semicolons from
the ends of all lines on input rather than rexx lines on output.
- Some improvements to existing
OL_DOC.DH macros and created
new ones for comments, images, graphic bullet in lists and table
support.
- New alternative way of debugging rexx code (to normal rexx tracing)
created with #DefineRexx.
If you use "$TRACE" you can easily set breakpoints,
dump variables etc.
- Debug mode improved.
New "QUOTING" DebugLevel to allow tracing of quote
handling.
- New /CopyRight switch to allow you to turn
off display of the 3 line copyright message.
- Made more changes which may make ppwizard work better faster
under Windows 95 & 98.
- Version 99.329
- PPWIZARD now supports
Positional Parameters,
these remove the need to "name" parameters.
- I have worked out a workaround to regina's annoying
"clause length" feature.
This has also prompted me to work out a better way
of handling rexx code generation (when used as a rexx
code preprocesser).
If you define your rexx code with
#DefineRexx you will never get
the clause length message unless an individual line
is greater than the "maximum clause length" (1,024
characters in regina interpreters ppwizard supports).
Not only that but any rexx code you generate will also
not cause clause length problems.
Note that regina incorrectly calls a line a clause.
- New line continuation code for separate with
newline, new default code is "%\" (I should never have used the
down arrow...).
Using the old code will work for now but generate a warning.
At some future stage this support will be removed.
- PPWCURL.CMD improved to handle "SSL" links
("https://").
- The "{$Parm-}" format no longer exists,
it is probably rarely used, if required however (extremely
unlikely) you can use the new "$$IGNORE" parameter command.
- Some debug mode changes which hopefully make it easier to work
through.
- Version 99.324
- Updated '{$?}', can now specify '$$' commands in which case
they are applied to each parameter (and they are not in pass
through format).
- When defining your own '$$' commands you can now determine the
source of the value (macro or parameter name).
- Updated directory creation code, under regina we can tell if a
directory exists, so now only create when required.
- New ProcessNext() routine.
- New ReplaceMacros() routine.
- New /DebugTime switch.
- The "BIN2PPW.CMD" updated to work within regina's
tight restrictions.
- Updated HtmlPre.IH &
OL_DOC.DH so that
the right angle bracket is now converted to the html code.
- Updated error messages when a macro expansion fails, the macro
being expanded is now reported.
Try to show macro expanded lines where possible.
- If compound rexx variable unknown then known "components" are
now always dumped.
- Some lists and other items would not show up correctly under
Internet Explorer, hopefully all occurances have now been fixed.
- Version 99.317
- New '$$' command of '$$SPCPLUS'.
Adds space before item if its non empty.
- If executing #DefineRexx code immediately
then macro parameters are always replaced.
- New MacroSet() &
MacroGet() routines, the later replaces
any "GetMacro()" calls which will be removed in a later release.
- Updated OL_DOC.DH so
that it should now work under regina.
- Updated NestChk.H to perform
more validation of IDs and created new macro for easy
definition of HTML tags you want to verify the nesting of.
- Version 99.313
- Fixed bug in '{$?}', would not always work unless in debug mode!
- New "#option" of CsReplacement.
By default ppwizard Macros and their parameters
are case insensitive.
- Updated OL_DOC.DH so that
headings can contain single quotes. Also added new as yet
undocumented "SimpleList" list type to match IPF
"sl" and "esl" tags.
- New BulkChangePrepare() routine.
- New "<?DebugOn>" variable which simply
tells you if debug is on or off.
The new IsDebugOn() call tells you
similar information.
New "user" DebugLevel states that you can use
for your own purposes.
- New Debug() and
DebugIndent() calls.
- Version 99.310
- The '$$' commands introduced last release now also apply to
Standard Definitions, allowing standard
variables as well as rexx variables to be easily handled.
- The #{ loops can now be used in a macro.
Prior to this it would only work if read from file.
- The #DefineRexx command can now immediately
execute rexx code (no need to save as macro contents).
- Document that
AddInputFileToDependancyList() and
AddOutputFileToDependancyList() can
now be used.
- Updated OL_DOC.DH
so that it no longer generates java navigation (wasn't reliable).
- Removed a number of files from main download, now available
separately.
- Version 99.304
- New macro and macro parameter
replacement options, you can perform translations on whole
macro values or on individual parameter values.
Tell me if you can think of any other common transformations you
would like to be able to do.
- New macro replacement option, you can
now use '{$?}' to generate "unused" parameters.
This will be a very handy feature and allows you to create better
macros as replacements to existing HTML tags.
- Some rare very early errors were not being correctly reported as
they would cause ppwizard to trap.
- Version 99.299
- Updated the #RexxVar command to create better
"PUSH" and "POP" commands (old format still supported).
- Updated FTPLIKE.IH header so that it
can handle filenames and directories that contain single quotes.
- Version 99.289
- There are now some special alternatives to the normal method
of macro replacement.
Valueless parameters starting with '$$' are now special cases
and represent instructions to PPWIZARD.
- Updated OL_DOC.DH
header, main change is validation of links to ensure that
the destination heading exists.
Updated it's documentation and fixed some faulty links.
- Modified GetImageHeightWidth() so that it
now dies on failure instead of generating warnings.
- The FTPLIKE.IH header was
updated.
Added new
WPS URL to HTML example.
- Input (only) dependencies are now converted to upper case on case
insensitive operating systems so that we don't store information
for the same file more than once.
- Dependency file has a new format.
The #DependsOn command has been enhanced so
that you can "stamp" commands or files matching masks.
- Regina 08h allows better reporting on syntax traps, improved
trap handler to take advantage of this change.
- Version 99.281
- New Summary() routine to allow you
to add (or remove) details on the displayed summaries.
- Updated VALRURL.H to remove "name expected"
trap when used under regina.
- Updated default whitespace to include EOF
(26 decimal) as different versions of regina seem to handle
it correctly, then not!
- Work around to stream('STATE') & stream('DESCRIPTION') bug in
regina 08h beta.
- Improved text of some error messages.
- Version 99.276
- Fixed bug in handling of macro parameters which did not have
a value (new feature in 99.225).
PPWIZARD would fail if the parameter was the last supplied (and
there was no spaces after it).
- The SortArray() routine has been updated
so you can decide whether or not compares are strict.
The default is that they are not, strict compares are best for
text, numbers however will not correctly sort this way.
- Spelling dictionaries are now put into dependency file
if required.
- Improved way ppwizard fails if user makes certain mistakes
with the name of an included file (such as empty name), rexx used
to spit the dummy.
- New FAQ section in doco.
- The HTML generator tags now go in no matter the case of the user
html tags.
It now also handles a body tag with parameters.
- Finally managed to generate a very small test case to demonstrate
the 08g "stream('query exists')" bug and sent it to Mark Hessling,
he has fixed the problem for the next release.
We have also confirmed that this bug has been around for a while.
While ppwizard (in my setup) would only fail on 08g, my testcase
fails on all regina versions I have access to.
For this reason I have decided to support 08g and remove the
warning.
- Version 99.269
- Had to restore an old workaround to a regina bug (removed in
99.225).
I'd thought it had been fixed (looks like only partially
fixed).
Quite a few header files updated to correct this.
If you had trouble retrieving variables after you'd created them
(ppwizard would trap - variable not found) then you were
probably bitten by this bug.
- The default is now to see each spelling error (for a word) once
per build, you can use the new /SpellShowAll
switch to indicate that you'd like to see each error.
- You can now modify the spelling delimiters from within a
dictionary.
- Version 99.268
- Updated #import command so that closing column
tags are now generated by default.
These are optional but some browsers such as Netscape may
not work correctly in all circumstances when they are missing.
There are now options which allow the easy definition
of text which goes before and after record data (say to change
fonts within a cell).
- When generating rexx code (/Rexx used) the
syntax of the generated code is now checked in all cases.
With regina the generated code had previously not been checked.
- We now have a basic spell checker, its not perfect and will probably
change in future (maybe based on user feedback), but its a good
start. It tries to avoid HTML tags and so does not yet handle
"ALT" text etc.
There are 2 basic modes (you can use both together) as
follows:
- You can indicate words that you frequently get wrong and
ppwizard will tell you when you use the word.
- You can supply a list of "good" words (dictionaries) and
ppwizard will tell you if you use a word which is not in
a dictionary.
- There are new switches of /SpellCheck and
/SpellAddWord.
A new option of AllowSpell gives you control
over which parts of the output you wish to spell check.
- Note that currently ppwizard only reports a spelling related error
for a word once per ppwizard invocation not once (or many)
per individual build (as it probably should).
- HtmlPre.IH &
OL_DOC.DH updated so
spell checking on examples is optional (default state controlled
by user).
- The "/DependsOnPpw" switch no longer exists, see the new
"/DependsOnComplete" switch.
- PPWCURL.CMD improved.
New switches allow timed out URLs to be retried and for you
to specify if moved URLs are OK or not (for each one).
Memory file can be backed up to 'x' levels.
- The default handling of the FTPLIKE.IH
header should now handle spaces in filenames better.
If you have any problems please let me know!
- Updated "PPWSORT.H" so default method of sorting
is not strict (">>") as this incorrectly sorts numeric values.
- Better debug output.
- You may need to modify your source, see following issues:
- Updated #import command so that the
option "?_BLANK_COLUMN#" now has a underscore before
the field number to be consistant with all other
options which refer to column #.
- If you use "DecodeUrl()" or "EncodeUrl()" see doco for
UrlDecode() &
UrlEncode().
- Version 99.261
- Windows (at least NT) appears to have a bug/feature in its handling
of the "dir" command which caused ppwizard to report that no files
were found when /ScanSubDir used and maybe other
times. I've worked around this bug.
This would probably have affected the use of the
FTPLIKE.IH header and maybe others.
- The way PPWCURL.CMD is invoked has changed,
most environment variables have disappeared, replaced by command
line switches. Can now test URLs extracted straight from HTML pages.
The program is much improved in many other ways.
- PPWCURL.CMD will now run under Windows using
the windows version of RxSock (although there is no support
for FTP checking under windows).
Apparently there is a linux version of RxSock with object
rexx this may or may not work with regina, please tell me if you
try it!
- Version 99.252
- The /Output and /DependsOn
switches can now generate their output in a completely separate
directory tree (when /ScanSubDir used).
- New "<?RexxSkip>" and
"<?RexxSkipTo>" variables.
- Updated OL_DOC.DH, main
change allows you to specify "targets" on links (section within
a html page). Can also save/restore heading levels.
- Documented fact that PPWCURL.CMD can be used
to check WPS URL objects (created by Netscape etc).
Also minor improvements to program.
- Assorted performance enhancements.
- Started documenting the tags and
options of
OL_DOC.DH.
A few names modified.
- Version 99.234
- Updated #OneLine command so it will correctly
handle ppwizard commands embedded within a #define
(a macro which executes ppwizard commands).
- Updated VALRURL.H and PPWCURL.CMD
so that it will now tell you in which html file(s) the failing URL
occurs.
Assorted other improvements.
- New InputComponentLevel() and
InputComponentLineLevel() routines.
- Version 99.230
- I've set up an email based PPWIZARD discussion group
(using "list bot").
Join up at http://www.labyrinth.net.au/~dbareis/ppwizard.htm.
- Please read the changes to the
"Bugs or Suggestions" section.
- New #OneLine command, hopefully this will
please a lot of people (judging by past feedback).
- The "PPWCURL.CMD" (URL validator) batch
file has had some major improvements, the biggest one being
able to specify a period of time (in days)
after a successful check before another is required (this is major
performance improvement).
- Must have forgotten to document the /HtmlGenerator
switch. Wasn't working 100% anyway!
- Minor change to #import to allow the
specification of particular values for each column to replace
empty fields (not just "?_BLANK_FIELD" - which still exists).
- Version 99.225
- Can now have macro parameters
without you having to specify a value (it will be given the
value of the parameter name in upper case).
Thanks to feedback from "Mads Orbesen Troest" for this one.
- Removed work around to regina value() bug (to speed up PPWIZARD).
This bug is fixed in regina 0.08f onwards (the only version
that PPWIZARD now supports - see next item!).
- Found bug in regina 0.08g (latest available), do NOT use this
version, I have reported the problem and am providing as much
detail as possible so hopefully the next version will be OK.
- A debug message and warning message will be generated if
PPWIZARD does not "approve" of the version of regina you are
using.
- Updated "VALRURL.H" to not do http/ftp support
checking if URL checking is not immediate.
- Version "99.220
- The #DefineRexx command now honours the
AllowPack setting.
- The SortArray() routine is now much faster.
Note that the routine now "correctly" uses strict compares, this
may have caused "funny" sorts if you had leading/trailing
whitespace.
- You may need to modify your source, see following issues:
- Updated "PPWSORT.H".
Added some easy to use macros for 1 and 2 array sorts.
New much faster code is generated, see doco about
changes to variable names.
- Version "99.215
- New #DefineRexx command which simplifies the
definition of rexx code (for example line continuation
characters are no longer required).
- Version 99.150
- New "PPWSORT.H" header.
This allows you to define how the sorting is done as well as
sort more than one array (keep associated info together).
- Updated "VALRURL.H" support.
- Version 99.148
- New Info() routine to match
#info command.
- Updated "VALRURL.H" header file. Now performs
immediate checking of URLs at end of each successful build or
can batch URL's for later validation, or you can define your
own URL handler.
- You may need to modify your source, see following issues:
- "BubbleSort()" renamed to
"SortArray()".
- "ReverseIt()" renamed to
"ReverseArray()".
- Version 99.145
- New "VALRURL.H" header file which allows
validation of remote http and ftp URLs.
I am very interested in feedback on this feature.
- Updated FTPLIKE.IH.
- New "DieIfIoErrorOccurred()" routine which
can be called any time prior to the closing of a stream to see if
any input or output errors have occurred.
- Updated "GetEnv()", it now takes an optional
parameter telling it to die if the env var does not exist.
- Removed "/CheckImage" &. "/CheckHref" validation switches as they
did not handle all cases, did not do a really good job of
checking, there are better ways of doing it anyway (see the
Resource Validation - Local section for more details) and
user feedback seems to imply its a rarely used feature.
I will probably come up with a new header file and framework for
the validation of local files (and maybe remote as well) in a
future release.
- New "GenerateFileName()" routine which
allows you to create filenames from masks exactly like
switches such as /Output do.
- Version 99.135
- Assorted linux improvements.
- Updated FTPLIKE.IH so it can handle
directories in operating systems other than OS/2. It now works
well under linux.
- Updated NestChk.H to work around
bug in regina. Note that under regina 0.08e you will get a
"clause" error, please change to "0.08f".
- Updated _SysFileTree() to handle
directories. Basically also clean up some other "strange" stuff.
- #import would fail if you used some import
types such as ",,," and your "TMP" or "TEMP" environment variable
pointed to a drive without long filename support
(PPWIZARD would trap).
- If "TMP" or "TEMP" pointed to a root directory (such as in "E:\")
then PPWIZARD would trap. A terminating slash on other
directories was OK!
- Now when a trap occurs variables from nearby lines are dumped
to help in problem diagnosis.
- Version 99.131
- In some unusual situations where a file that ppwizard had to
locate is read directly from file it could get confused. Under
OS/2 this would correctly trap, due to a regina bug/feature it
will cause an infinite loop.
- Summary information improved.
- Version 99.120
- The way a file is included has been rewritten.
A file may now either be read directly from the file or via a memory
cache. Reading from cache will improve performance if the file
resides on slow media (if it needs to be re-read). If a recursive
#include is detected (this is now allowed) then read
from cache is forced, there is no more need for a file copy workaround.
- A /Inc2Cache switch allows you to override
the default read method (file/cache) chosen by PPWIZARD.
- Improved CompareReplaceFixed() routine so that
it can also be used as a compare function.
- No bugs reported or seen however I think in some situations
#import could have caused some weird looping or
other bugs.
- Version 99.115
- Version 99.110
- New "FTPLIKE.IH" header file which
allows you to create simple FTP like listings with
".DIZ" file support.
The DIZ file can contain HTML tags.
- Fixed bug in "#{" type loops where
#if nesting level could get confused if loops
were "nested". Possibly other effects.
- Version 99.106
- Version 99.100
- Version 99.092
- More of a feature (as code functioned...), however the
"StartsMacroParm" and similar stuff was not what I was aiming for!
You would only have seen this while debugging T2H
imports.
- So problems such as the one above can never reoccur, rather than
delay trap handling I now use a "simple" trap handler until
PPWIZARD has initialized itself enough to use the normal
(much more complex) one.
- New GetInputFileNameAndLine(),
GetFileLineBeingProcessed() &
GetLineBeingProcessed() calls so rexx code can
keep track of debugging/diagnostic type information.
- New "NestChk.H" header file which
contains macros for generic handling of nesting validation.
You could use this to ensure numbers of "TABLE" tags match
numbers of "/TABLE" tags etc (rather than hope testing shows this up).
- Now validate #AutoTagState nesting level.
- Much more complex import example
put into doco.
The example reads a comma delimited file (could have been fixed
field etc) and generates 3 html files based on the first letter
of the surname.
- Version 99.083
- New /WarningsIgnore switch. This allows you to
specify one or more individual (expected) messages to ignore.
- A parameter on the command line can now be surrounded by double
quotes if it needs to contain spaces.
- Updated documentation, particularly the #Import
command (more details on internal processing etc).
- New "Resource Validation - Local" section
in documentation.
- Documented WriteLineToTmpImportFile() routine,
must have forgotten to do so in an earlier release.
- New Error() &
Warning() routines (useful in filters etc).
- Fixed bug which may occur if you had used the
ReplacementTags option (rare bug to do with 'x' codes).
- Summary now includes warning count (if any).
- You may need to modify your source, see following issues:
- The '\\' line continuation form no longer exists (it was an
alias for '-\').
You can use the modified (but backwards compatible)
LineContinuation option to
allow '\\' if you wish.
- Syntax of #Warning slightly modified.
To quickly get yourself going simply add "USER " before
your warning text.
- If the defined line continuation character ends a line
but it otherwise does not look like a line continuation
then the line is no longer treated as continued.
In practical terms you now need a space before the '\'
character!
- Version 99.074
- Enhanced the #Output command so that the new file
does not need to be processed in the same mode as the "current" file.
For example while generating rexx code you may wish to generate
data files (such as TEXTEDIT scripts) which the rexx program will
use as input at runtime. This allows #define variables to be easily
shared and gives you the option of wrapping everything up in a single
source file.
- Fixed error message when invalid parameter used on
#Output command.
- Better temporary file name calculation (and handling) under regina.
- Handling of "stderr" redirection changed so should work on "csh" and
similar shells under unix and not just the "bash" shell (not 100%
sure this was required as regina seems to use "bash" shell for
operating system commands).
- The "#Import" command can now take "EOF:" in the
"Remove" variable to remove to EOF.
- Updated "#Import" command so that you can now always
specify a number of lines to drop and not just if "CMA-" etc used.
Whether or not the '-' is used now just determines the default state.
- New /beep switch for people who don't like beeps on
errors (grumpy bunch!).
- On all operating systems now do "set" command (and capture output)
when /debug used. No real reason except may help me in future
debugging (help me identify unix shell, version etc).
- Other minor debug and doco improvements.
- Version 99.067
- When environment variables containing paths are searched the character
separating paths is now ':' for unix, for all other operating
systems it remains ';'. Similar change for processing of
/#Include switch.
- Minor debug and doco improvements.
- Version 99.056
- In unix now default to lines terminating with a newline (no carriage
return).
Other operating systems now default to CR + LF even for
HTML, to 'pack' this more use the /CRLF switch to
turn off carriage returns (HTML browsers don't require them).
No switches apart from /CRLF modify the line termination state.
- New /Exclude switch to allow you to exclude certain
files. Now only process a file once even if specified in multiple
masks on the same command line.
- Improved syntax/novalue trap information on user errors
in #if, #evaluate commands etc.
- More debug parameters for AddressCmd(), lots of
other little debug changes.
- Version 99.051
- New "#option" of WhiteSpace, under
unix this defaults to the EOF (decimal 27) and CR (decimal 13)
characters. This allows unix to read PC files without problems.
- Whitespace after line continuation characters no longer prevents
line continuation.
- Temporary files under unix will no longer go into the root directory
if the "TMP" environment variable is not set up, they will go into the
"/tmp" directory (I assume this will always be there).
- The /output and /DependsOn switches
now have non-wildcard alternatives as placeholders.
- Unix has case sensitive filenames, the documentation should now match
the correct case of the files.
- Other minor changes.
- Version 99.049
- Unix fix for directory search bug.
- Version 99.048
- Improved "TRYME.IT" example to demonstrate more
features (while hopefully still being fairly easy to understand).
- If all input files end in ".X" and "/Rexx"
(or other mode switch) was not specified then /rexx is invoked
anyway. Now have a /html switch.
- After looking everywhere else for a file PPWIZARD now also checks
the directory it is executing from.
- Removed "OL_DOC.DH"
from document and now bundle together with PPWIZARD.
- Minor change to generated rexx header.
- Version 99.044
- New "HtmlPre.IH" header file to make
it easier for people to start using PPWIZARD to include example
code into a html page.
- Many enhancements to
ML
importing, other import types have also had relatively small
changes.
- New "Dropped" array during import so you can access fields that are
not directly displayed. This would allow you to create combined fields
etc.
- Fix to /DependsOn when /Template
also used.
- Minor change to way REXXTRACE define is accessed for
tracing rexx code. Improved use of "interactive mode" rexx debugging.
- Version 99.038
- Fixed "#Import" bug where fields could not be
reordered with '{2}' etc.
- New "#Import" type
ML, this
allows you to create a text database in an easy to manage format.
Some people are already using WRAP imports to
handle similar formatted text databases.
- Version 99.034
- Optimised #AsIs text changes so that it will work much
better for large numbers of single character replacements such as
would be required to convert international characters for correct
display in a html browser.
New BulkChar2String() routine.
- The /output and /DependsOn switches
now have a new special character of '?' (allows
specification of paths relative to the input file).
- Worked out a faster workaround to a regina bug, this should speed
up PPWIZARD when the regina interpreter is used.
- Major update to the "rexx" section of the manual.
- Minor improvement to rexx packing.
Minor change to generator header.
- Minor cleanups for rexx tracing.
- Version 99.030
- Oops, wildcards were not expanding correctly under regina.
- New SortArray() and
ReverseArray() "array" routines.
- If you were having trouble with the
/DependsOn switch then you are probably using regina
version 0.08e. It has a bug in the "parse" command which
can generate spaces. I have added a workaround but it would be safer
to move to a newer version.
- Version 99.027
- Document fact that delimited and fixed imports can be setup so that
the format for each record (row of table) can vary depending on
the data. This documents a new variable that can be used in a filter.
- Enhanced looping so that it can contain
"#include" or "#import"
commands.
- New DebugLevel option of REXXTRACE
for debugging any rexx that you might be executing.
- Removed "RestrictKey" routine, this functionality can
be achieved through the new "GetId" routine. Also
see the new "SetId" routine. This is a much
more powerful mechanism which
"OL_DOC.DH"
now uses.
- New "<?RestartLine>" variable.
- Minor debug improvements.
- Version 99.023
- Version 99.020
- Changed syntax and way "#AsIs" command works so that
it is now much more flexible. If you have used the "#AsIs" command
you will need to make minor changes. Sorry but I never
liked the way it was before... Too limiting.
- Changed "#AsIs" mode so that when turned off it
restores the state of the options to the state that existed just
before the "as is" mode was turned on.
- More "#Import" changes/options. You can now
filter records in the T2H mode. Largish changes
to WRAP import. You can now easily disable or
extend on the "standard" #AsIs replacements that
occur during import (chars like '<' and the box chars).
- New "<?ProtectFromPpwStart>" &
<?ProtectFromPpwEnd> definitions.
- New "ToLowerCase" routine.
- New "rexx" section in the manual.
- Improved summary information.
- Version 99.014
- More "#Import" changes. Default is now to
"PROTECT" delimited and fixed imported data. More configurable
parameters in T2H import. "T2H" import now finds and by default
tags email addresses.
- Parm 2 of #AutoTag command now can now include
"{$AT}" to refer to the before (automatically tagged) text. This
can save a lot of retyping.
- Version 99.009
- Fix looping problem on loops
other than the first.
- Improved "#Import" type T2H, this
affects you if you used "_LINK" definitions.
- Modified "#Import" type WRAP, to
work better under regina (OS/2 seems to have better garbage
collection).
- No longer delete temporary files during
#Import command if debug mode is on.
- Modified "#option" command so push and pop
commands can be combined with setting options.
- Added an example of importing using SQL.
- I correct some code which may not have correctly handled
a line with all blanks (when writing to output file).
- Note that you can now tell PPWIZARD exactly what characters to
translate during the #Import command. For example
if your text includes internation characters such as umlauts you
could convert them to the html symbols so that they display correctly.
- Version 99.006
- Improved documentation.
- Fixed major problems with "#Import" type
T2H.
- Version 99.005
- PPWIZARD looping is now possible.
Requested by Chris Wenham. Note that you have always been able
to do loops in rexx (#evaluate).
- New "#Import" type T2H. This
is basically
a TEXT to HTML conversion mode. It is reasonably configurable (and
will get more so). You can determine look and feel and whether
"http:" links are made links or not, plus more.
Use /Debug to make up for lack of doco for now - everything
can be turn off or changed for example you can turn off creation
of links and can change mode from "PRE" to blank line indicates
end of paragraph. If you know of common examples of text then maybe
we can get much smarter. Basically feedback required.
- Now when in HTML mode (the default), if no input files were specified
PPWIZARD will look for "DEFAULT.IT".
Requested by Chris Wenham.
- New "<?CgiStart>" variable.
Feedback from Chris Wenham.
- New "<?PpwizardAuthor>",
"<?PpwizardAuthorEmail>",
"<?PpwizardAuthorHomePage>",
"<?PpwizardGeneratorMetaTags>" and
"<?PpwizardHomePage>" variables.
- Version 99.001
- Fix some minor documentation issues.
- Generator meta tagging added when generating html.
- Version 98.360
- You can now filter records in the #Import
command. You can modify column values before they are used to
generate the output or tell PPWIZARD to drop the record
altogether.
- Version 98.355
- If you hadn't used the #RexxVar command to define
a 'X' variable you used to get a cryptic message when you used the
variable.
- Version 98.346
- Updated #Import command so that by default
"COLS=" is no longer specified in the "TABLE" definition. If you
wish you can specify an alternative and use "COLS={$Columns}". It
has been removed so that browsers that understand the tag can format
the table better. The widths of
each column will now be as wide as required and not evenly divided
up.
- Updated #Import command so that a record with all
blank fields is treated the same as a blank line (that is you can
control whether to ignore it or not). In the past the
"DROP_BLANK_LINES" define only worked on "WRAP" type imports and on
other import types blank lines were always dropped.
- Updated #Import command so that the default column
formatting of a record is not tied to the current formatting of the
heading columns.
- Version 98.333
- Updated #Import command so that it understands
double quoted fields in delimited imports.
A double quoted field may contain the delimiter.
Within a double quoted field a double quote is represented
by 2 double quotes.
Validation occurs on the format of quoted fields.
- Version 98.325
- Updated #Import "WRAP" import command so that by
default blank lines are ignored. This means that your wrap macro
does not need to check for blank lines so it can be simpler and
faster.
- Corrected bug in #if command. Macro references
within the parameters of this command should not be expanded if
lines are being dropped anyway due to being in an enclosing 'false'
condition. That is, something like "#if '<$Fred>' = '1'"
will not be expanded immediately after a '#ifdef FRED' (to verify
it exists). Up until now PPWIZARD terminated with an error.
- Now allow use of #undef command in regina.
Using #undef may cause problems if regina version 0.08f onwards is not used.
- Version 98.321
- Updated #RexxVar command so that the "=" and "=X="
operators can now be used to assign one variable to another, it
was previously limited to literals and numbers.
- Modified "<?TemplateDataFile>" variable
so that it returns a null string if you are not using a template rather
than dying. This allows you to test to see whats going on.
- Updated document creation
header to improve generation of table of contents HTML. Next step
will be to generate both "simple" (what we have now) and java tree
enabled table of contents (started - waiting on java applet fix).
- Updated #Import "WRAP" import example to make
better use of recent PPWIZARD performace features such as
#RexxVar.
- Version 98.307
- You no longer need to specify a default value on each occurance of
a macro parameter which the user did
not specify. If a default was not specifed on a particular
parameter the last default specified is used.
- New /DependsOnPpw switch to control whether or
not you want to rebuild on change of PPWIZARD version in use. The
default is that it will rebuild when PPWIZARD changes.
- New "<?=RexxExpression>" definition to
eliminate need for extra #evaluate commands in some
simple situations.
- Corrected minor glitch for rexx variable replacement (but only if
ReplacementTags had been used to
change Standard Definitions characters).
- Version 98.297
- More DebugLevel options. Can now turn off
nearly everything.
- In debug mode dropped lines are now shown in a more cryptic if
easier to read format ('-IF-'). Blank lines which are dropped
are now also shown ('-BL-').
- More debugging of #import command.
- Fixed document creation
macros so that generated HTML (example PPWIZARD doco) will
display correctly in Microsoft's IE and not just Netscape!
- Version 98.262
- New /Template switch and
<?TemplateDataFile> variable.
- New /Sleep switch to cause PPWIZARD to sleep
after it completes. This would allow you to have a simple batch
loop that keeps "polling" for work. The /DependsOn
switch would usually be specified as well. This could be used as
a poor man's CRON.
- New DebugLevel option. This allows you to
selectively turn off some of the debugging output to concentrate
on your specific problem.
- The #debug command no longer turns debug on or off
if the /debug switch was used.
- The POP subcommand of the #option command would
not always restore the correct values.
- Its possible that some macros would fail (maybe trapping PPWIZARD)
when it thought a a parameter was not used even though it was (but
only as a default value). This would probaby only occur early
on in a build. You'd have be be unlucky, but if you were - its
fixed!
- Minor improvement to trap info.
- Minor change for Windows 98. Still no feedback, may not have
worked before, now probably will.
- Documentation for #AsIs command rewritten.
- Version 98.255
- Parm 2 of #AutoTag command now has standard
variables replaced (if possible) as well.
- Version 98.254
- More UNIX changes/fixes. Will
now work with paths and wildcards etc. Basically I believe it to
be as fully functional as the Windows versions.
- Cleaned up left over issues with the "#option"
command and the "/option" switch.
- New options of:
- New "/GetEnv" switch to allow more flexible
specification of command line parameters.
- New <?HashPrefix> variable.
- Improved error message which gets displayed if an unknown
macro is used. It got a bit
cryptic with the 98.248 release.
- Improvements to debug output as well as trap info.
- Minor enhancement to _filespec routine.
- The following are no longer allowed (I've eliminated all in one
hit to make it easier for you to upgrade, none are common
options so it should not take much):
- /# and #prefix
- /KeepIndent and #KeepIndent
- /LeaveBlankLines and #LeaveBlankLines
- /; and #LineCommentChar
- #AllowPack
- #ContinuationChar
- #Indent
- Version 98.248
- Created new "#option" command and
"/option" switch.
This command will eventually (soon?) replace a lot of
existing ones and already replaces #replace.
Other new options are
ReplacementTags & MacroParmTags.
- #Replace command should no longer be used.
- When setting up your own <?xXX> codes you
must now use the "=x=" operator of the
#RexxVar command.
- Rewrote the macro code so that
virtually any character is valid in a name. This is not
only faster but will allow users to define names containing
international (high ASCII) characters.
- The '_PPWIZARD_' macro was not being
correctly set.
- Fixed minor formatting bugs (of informational messages)
which could occur since the 98.241 version.
- New EnsureFileHasCorrectCase routine.
- You can now have spaces or any other character within
command line options as
long as you encode them. For example "{x20}" for space. Unless
the code looks correct it is ignored so it would be fairly unusual
to have to encode existing command lines to work around this change.
- Modified "DataGet" and "DataSave"
routines (last parameter dropped and routine faster).
- New <?DirSlash> variable.
- Started modifying code to run under
UNIX. It should now be OK if
no directories specified.
- Version 98.241
- Improved /CGI handling. If a fatal error
occurs the default action is to duplicate the error details
to stdout (in large red text).
- New "RestrictKey", "DataGet"
and "DataSave" routines.
- New program "BIN2PPW.CMD" created which takes a binary file and
creates a PPWIZARD command which you can either
#Include or cut and paste into your source. If
you look at the end of the
document creation
header file
"OL_DOC.DH".
It uses
is to generate images so that GIF files don't need to be
distributed along with the header file.
- Fixed bug which could cause the "#DependsOn"
command to fail (if you were not using dependancy checking).
- Fixed partially incorrect error display on some types of fatal
errors where an interpreted command failed.
- Version 98.233
- Fixed a bug which could cause errors when symbols such as
"<??RexxVariable> and maybe others were
used within macros. They were being substituted too early
in some cases!
- Added /CGI switch. Requested by Chris Wenham.
- Modified <?xXX> codes such that the name of an
'x' symbol can now contain any character except '>'. Requested
by J Christopher Kennedy.
- Modified #output command to add "append"
option. Requested by J Christopher Kennedy.
- Document creation support
is now probably good enough to use. More features will be added
but then again so what else is new...
- Version 98.229
- Major enhancement to the way <?xXX> codes
work. You can now "name" ASCII codes and control what each code
is replaced by (no longer restricted to single byte either).
- The #RexxVar command has a new variation which
allows you to save/restore variables on a stack.
- The #EOF command now has an optional
parameter (the number of #EndIf commands to
simulate).
- New <?Unique> variable returns a unique
number every time its used.
- New <?IncludeLevel> variable returns the
file inclusion level (starts at 1).
- Added more HTML support to my
document creation header.
Indexes are the only missing feature at this stage (still need
forward/backward buttons etc).
- Fix to fix for Windows 95, oops.
- Improved handling of dropping macro
parameters, the old way would fail if the dropped parameter was
not specified on the reference.
- Macro values are now stored &
accessed differently. This new method is safer and the new code
is hopefully slightly faster.
- Now show #AutoTag parm 2 replacement if
debug mode is on.
- Debug mode was incorrectly displaying line as having changes if
it contained <?xXX> codes.
- Dependancy files are now
made after rexx syntax check.
- Fixed bug in #output command which could cause
problems if used within a macro (queued data went to start of new
file and not the end of the old).
- Fixed minor bug which could cause whitespace to be lost in unusual
situations.
- Version 98.223
- Would not work correctly under Windows 95, should now.
- Debug mode now shows "uname()" information when running under regina.
- Version 98.221
- Improved dependancy file checking,
it is now much superior to that of any make file process.
- Version 98.216
- New "performance" section in the doco.
- Updated "#if" command so that if the text is
surrounded by square brackets then its a "simple" test which can
be executed very quickly.
- Extensively modified the "#RexxVar" command. It
can now also execute some simple statements so that it can frequently
replace the much slower "#Evaluate"
command.
- New "#info" command to allow you to output text.
- New "#AllowPack" command allows you to disable packing
over portions of your code.
- New "#Require" command to make PPWIZARD version number
checking easier.
- New "/#Include" switch to allow specification of file
inclusion from the command line.
- More information output on fatal error. This will reduce need to
turn debug on to diagnose errors.
- More error detection on some commands.
- Version 98.211
- Fixed 2 "/Pack" bugs which could cause problems
on some lines containing strings like "'01'x" or
"if !fred =". One of these bugs was introduced
during a recent Regina bug workaround. Code now also packs slightly
better.
- Updated "#Import" wrapping. Now value passed to
the line parameter is a rexx statement which needs to be
interpreted to be used. This was required
otherwise problems when a line contains quotes! Now have
example
of "WRAP" import in doco.
- Fixed a couple of bugs which would affect trailing whitespace in
some weird situations. If you have more whitespace than you want then
you have probably been working around the bugs. If required check
any multi-line macros
that you may have used and use
-\ where appropriate.
- The "#AutoTag" command now partially or fully
processes any macros in parameter #2 ONLY. This will speed up
execution as any substitution we make up front does not need
to be performed for the probably many references. You can turn
off the replacement with the
"#replace" command if required.
- New "#Indent" command. This allows a indent to
be forced when "#KeepIndent" mode is on.
- Better error messages on some commands where the rexx
"interpret" command used.
- Improved support for unquoted macro
parameters and defaults.
- New type of quoted text which is only used
for the last parameter of some commands (such as
"#Evaluate"). It allows the quote character
to be embedded in the quoted string. This will help simplify some
difficult situations.
- New "#RexxVar" command. This allows you to
set the value of a rexx variable without difficult quote issues
arising.
- Program was dying if not all parameters that were specified on a
reference were used my a macro (got trap not nice error message).
- Code which handles "Standard Definitions" has been
rewritten. Variables can now be in any case.
- New method to get rexx variable
without first copying it with "#evaluate".
- Fixed "<?Space>", it was generating "2" and
not a space, oops.
- Now that I've decided on the term
"macro", I have renamed the
PPWIZARD "GetVariable" function to "GetMacro".
- Version 98.206
- Parsing of quoted strings and creation of #defines and their
replacement is now much faster.
This document now builds 40% faster. This performance
boost does not apply when running under regina as I've had
to undo most of this benefit to work around a new Regina bug in the
value() built in function.
- Improved documentation for example, the new macros
section. I don't know of any glitches in the documentation, it
should now all be OK.
- The parameters for the "#DependsOn" command can
now contain macros.
- It is not valid for a specific command's parameters to expand to more
than one line. A specific error message is now generated if this
occurs (instead of assorted cryptic ones).
- The "#AutoTag" command no longer processes any
macros in its parameters. This should not cause any problems and
will in fact make the command easier to use. If anyone can
demonstrate a real need, I'll make it an option to do so.
- Can now name states on the "#AutoTagState" command.
This allows us to create a new state and copy tags from any number
of named states as well as from the previous state.
- Simplified my Document Creation
macros. This will reduce debug output and also speeds up the processing.
- More debug and error message text improvements.
- Version 98.198
- Complex macros no longer cause extra lines to be generated. If you wish multiple lines you must indicate this.
- Major changes to the way complex multi line/command macros are expanded. If you were using undocumented side effects of the way it used to work (as I was in a couple of places) then you will see some minor problems
which should fairly easily be fixed by placement of "<?NewLine>" codes. You can
now use macros to do things that were impossible before. Some of the problems would not have been noticable in pretty much default modes.
- The "#AsIs" command modified. New "SETUP" parameter to define your own tagging. The way it works is now radically different. Replacements now take place as soon a line is read in from a file.
- The way the "#AutoTag", "#AutoTagClear" & "#AutoTagState" commands work has been completely rewritten. Replacements now take place as soon a line is read in from a file.
You can now delete autotags and have more control in the order of substitution.
- The "#Import" command now uses any "#AsIs" tags you have defined when importing (even when AsIs mode if OFF!).
- The "<?xXX>" code changed, now translation occurs much later in the processing (ONLY just before line generated to output file). The code is now also much faster.
- In general quite large changes to way lines from all sources are handled (mostly in relation to whitespace).
- My Document Creation support is now sufficient for creating IPF documents. In fact its much better and easier to use than my old method, it may still undergo more tweeking and needs to be documented.
HTML support will be added next. This will support custom backgrounds, images etc.
- This document is now 100% fully converted to use my Document Creation support.
There are likely to be some glitches in the document as this was a massive conversion effort.
- Modified the "#Include" command to allow the inclusion of a "part" of the identified file. This could be used to
combine many smaller include files into a larger one.
- New "#replace" command.
- New "#LeaveBlankLines" command.
- New "#ContinuationChar" command.
- New "/Other" command line switch.
- Debug output now shows more details. Its output is hopefully easier to understand.
- Definition replacement and debug mode is now faster.
- New line continuation codes. '-\' same as existing '\\', and '\' means add newline (no space) to end of line.
- Missing #endif commands at EOF are now reported earlier than some less important issues. Better error message as well. Debug mode now shows more nesting details.
- The directory portion (if specified) on the "/output" switch will be made if the directory does not exist.
- Version 98.189
- Now works in DOS using the free Regina rexx interpreter. So now works in OS/2, DOS and Windows NT &. 95.
- Under Regina searching along paths such as the "INCLUDE" and "PPWIZARD_INCLUDE" environment variables now enabled.
- You can now specify more than one file or filemask on the command line. No matter where the names are placed they are processed after ALL options have been processed.
- Now automatically create a define of "_PPWIZARD_" (no particular value) which can be used to create header files which can safely be included in other languages such as 'C' as well as by this program.
- New definition of "<?OpSys>", this will help you create conditional scripts that will work under multiple operating systems.
- Now PPWIZARD.CMD and #output files are taken care of when /DependsOn used.
- New #EOF command (specify End Of File - rest ignored).
- New #DependsOn command (helps cover some complex situations - most people won't need).
- If the parameter on the /DependsOn switch starts with '-' then dependancy checking progress is not displayed.
- /CRLF now reenabled under regina (version 0.08e fixed a stream bug).
- Minor change to syntax of #ifdef &. #ifndef commands. Its no longer valid to supply quotes (now compatible with 'C' code).
- Added work around to doubled up newline codes (internal stuff) glitch. Will look for better solution when I get more time. You may notice that extra blank lines from complex macros no longer appear.
- Improved my Document Creation support, now can include a file (as example) in .IPF, I'm concentrating now on getting IPF working first so I can convert my documentation, then I'll get the html part working and then produce doco as HTML.
- Version 98.185
- The /Rexx option of /Pack is now so fast that the slightly more time taken is no longer a reason not to use it.
- This program is now packed.
- Regina has a problem with packing (investigating if this is a regina bug) in the meantime, reduced packing slightly to prevent the problem.
- New Defined() routine.
- New "#AutoTagState" command. Related changes to the way "#AutoTagClear" works.
- #AutoTagClear was turning the #AutoTag state off. This was not documented and probably not what one would want.
- Minor fix to recent bug which only affects debugging of "#autotag" changes (unchanged lines could be displayed as changed).
- Reorganised some of my error handling to remove redundancies.
- Under regina the rexx programs name is now available with full path.
- Time taken to handle each source file is listed in summary.
- Some /Debug output now formatted/indented better.
- Version 98.180
- Modified ReplaceString(), counting works differently.
- Performance improvements in #autotag and any situation where ReplaceString() routine used.
- #autotag on/off/yes/no commands can now be in lower case.
- New #import variables to control (defaults work the same as
in previous releases):
- How blank fields are displayed.
- What happens to newlines.
- How many lines dropped when "tab-" etc used.
- What happens to tabs.
- New #import type of "WRAP". You code what happens to each line. For example you could decide that you wish straight text to be imported where a blank line indicates the start of a new paragraph.
- More #import documentation examples (including importing into an IPF/INF table).
- Set new Regina 0.08e option to prevent unknown functions from being treated as external commands.
- New '/**/' switch (for /rexx mode) to prevent comments being stripped.
- Version 98.172
- Major changes made to #import, if you
are overriding any defaults in the way a table is generated
you must make changes. Changing formatting is now very much
easier, even swapping columns no longer requires use of #defines.
Also this change was required to allow expansion of supported
import formats to include a fixed column format.
- Imbedded Newlines found during #import are translated to '
'.
- New #import fixed column import format.
- New #import custom delimited format where you specify the delimiting character.
- Version 98.169
- I've updated my release procedures so that a better syntax check
automatically takes place as part of my packaging up a release.
There have been a couple occassions where traditional OS/2 rexx will
not pick up a problem but OO rexx or regina does. I also intend to
build my whole web site with both OS/2 rexx and OS/2 regina and
compare the results to ensure they are the same. Only after large
scale changes will I boot NT and try the NT version.
- Minor change to "#Import" handling. The characters '&.', '<' and '>' are converted as each line is read in.
- Missing trailing fields on tab/comma delimited data now handled. Note that I have had data exported from Excel fail to import but only when Excel fails to import the same data!
- New "TAB-" &. "CMA-" formats which drop the first line of the #import file.
- Use my new LINECRLF.XH header routines to import Excel exported data that Excel itself can't import!
- Some performance enhancements for #import.
- New "_filespec" command. Performs same function as OS/2 filespec() routine (but on all platforms).
- New "#define+" command (already had a #evaluate+).
- Version 98.164
- New "#Import" command. Imports data from data
exported from spreadsheets etc. Currently handles tab and comma
delimited fields. CSV probably next. That will do it unless I get
orders! If you request a format please provide all details and an
example file.
- New 0.08e (11/6/98) version of regina fixes the arg() corruption problem I
reported, unfortunately I had to report a bug in the drop() command,
for this reason under regina #undef does not do so, you
should either handle a return code of 1 or use the
"/WarningsOk" command line switch.
- Version 98.150
- Renamed from "HTMLPP" to "PPWIZARD". The
main reason was that I'd found that someone else was already using
this name. A secondary reason was that the tool was no longer
really HTML specific (plus HTML looks to be replaced by XML).
- Updated HTML/IPF document creation example, it
now handles INF generation reasonably well. HTML improved also.
Still much more to do.
- Debug output improved so that newlines are translated to down arrows.
- The switch "/LeaveBlankLines" is no longer simulated when "/debug" is used.
- New #evaluate+ (alias "#E+") allows you to redefine without warning (otherwise #ifdef etc required).
- The "#error" command now outputs location of error.
- Version 98.143
- Added HTML/IPF document creation example.
- Found another #define variable replacement bug.
Replacement must stop as soon as the insertion of multiple lines is
detected and not at the end of the pass.
- If ";;" was used to add a comment on a continued line then the
line continuation was being discarded.
- New "#output" command.
- New "<?OutputLevel>" &. "<?TotalOutputLines>"
variables.
- New "/define" switch which allows you to set #define
variables from the command line (or environment).
- New "/info" switch.
- Reorganised standard symbol replacement to hopefully improve performance (in most common situations).
- The following switches now have parameters:
- /CrLf
- /KeepIndent
- /LeaveBlankLines
- WarningsOk
- Some switches need renaming as I add parameters as I don't want
people to deal in double negatives (example /NOPACK = NO means YES!).
- "/NOPACK" replaced by "/PACK". Packing is now off by default.
- "/NOCOLOR" replaced by "/COLOR" switch.
- Version 98.139
- New "/Tabs" switch to control how tabs are handled.
- Don't fail if last line of file does not end with CR+LF even
though this makes it an invalid text file. This is probably a
fairly common situation with some editors. A message informs
you when this is detected.
- Now make sure files that are only read are not opened for write
as well. This was not a problem but is probably safer all round.
- PPWIZARD.CMD is now built using a stable version of itself.
- Finished initial port to NT (using the
free REGINA interpreter available at
"http://www.lightlink.com/hessling").
REGINA looks pretty impressive but is not without
bugs/features/differences. The one version of code will work in
all environments (OS/2, 95, NT etc). I think I can work around regina
bugs and will initially lose some functionality under NT version.
See operating systems status for
more details.
- If "/rexx" used, an information message will
be displayed if something may not be quite right. The error
level is not modified.
- Version 98.134
- Fixed bug which would prevent #evaluate from defining a variable
with leading or trailing whitespace.
- Fixed syntax error which could only show up if #AsIs
mode was on and there were #AutoTags (I think!).
- Fixed syntax error which only occurred on malformed #define
parameters.
- Fixed "syntax" error in BreakAt routine, this
error seems to be ignored by OS/2 and the code works!
- Fixed "syntax" error in handling of <?xXX>
variables, this error seems to be ignored by OS/2 and the code works!
- Document existance of "SetEnv" routine.
- Implemented new /FilterOutput command (most
users will never use or need).
- MacroSpc.EXE updated so that you can optionally supply a function
name on the "ADD" or "DROP" commands.
- Modified "#MacroSpace" command.
- Halved the overhead of simple /FilterInput filters
(heaps faster).
- Cleaned up exit code so that more cleanup occurs on errors as
well as successes.
- Version 98.131
- Fixed bug where SysSearchPath was failing if "MacroSpc.EXE"
did not exist in same directory as "PPWIZARD.CMD" and checking of rexx
code was being done (/Rexx used) or
#MacroSpace was used.
- Better output if there was a syntax error in generated rexx.
- New /; option. Changes to way
"#LineCommentChar" works (backwards compatable).
- New /# option. Changes to way
"#prefix" works (backwards compatable).
- New "PPWIZARD_OPTIONS" environment variable. If it
exists its options are processed before any specified on the command
line.
- Added CTRL+C handler to ensure any required cleanup occurs.
However it looks like a rexx "bug/feature" is currently preventing it
from always working (when in interpret instruction)...
- Improved documentation (mostly
command line switches).
- Implemented new /FilterInput command (most
users will never use or need).
- Version 98.125
- New "MacroSpc.EXE" program now replaces "RexxChk.EXE", this
changed final syntax checking of rexx code. It also means that
searching for the EXE is better, it now looks in the same directory
as PPWIZARD.CMD and then along the "PATH" and "DPATH" before giving up.
- New #MacroSpace command as a performance aid when
calling external rexx code.
- Added new BaseDate() routine, this can be used to
calculate the day of the week given a date such as that returned by
GetFileTimeStamp().
- Version 98.118
- #define/#evaluate parameters are no
longer case sensitive (to make them much more html like).
- Added new GetFileTimeStamp() routine.
- Added new <?NewestFileDateTime> variable to
allow you to date/time stamp your files based on the newest files
date/time (not compile date/time).
- New "/WarningsOk" option (want Rc=0 when warnings given).
- More examples and debug code.
- Version 98.115
- Improved handling of syntax and no value errors on the
#evaluate command. This should make it much easier to
work out what your doing wrong!
- Added new #evaluate routines
"EncodeUrl" &. "DecodeUrl".
- Added <?xXX> variables to allow you to specify any characters
by their hexadecimal code.
- New "/Filenames" option to optionally allow generated filenames
to be translated to all lower or upper case.
- Added new html external file validation code to check that
referred to graphic and html files exist. The switches are
"/CheckHref" &. "/CheckImage" with the parameter being the base
path where the image can be located on your 'local' drives. Probably
not 100% as yet. If you try please report
if it works or not (if not what line does it fail on etc). I Recommend
you use "/debug" to help you diagnose problems if they occur.
- Added more debugging to
#define &. #evaluate variables (and
their parameter) replacement as well as some other areas.
- Corrected/Improved other minor error reporting issues.
- Improved html examples (as I improve the real ones!).
- Oops, fixed "GetImageHeightWidth()"
handling when optional parameters not supplied (or '?' used).
- Version 98.109
- Modified the handling of the optional parameters on the
"GetImageHeightWidth()"
routine.
- Improved doco (more examples).
- Added '#' to default BreakAt() chars. Also fixed
up problem where we could get a break at the start of the string.
- Version 98.096
- Version 98.095
- Tab characters cause a warning to be generated.
- Added new
"Rexx Preprocessing" section
to this document.
- The syntax of the generated rexx code (when /rexx used) is now
checked.
- New '/NoPack' option for rexx code.
- New '/KeepIndent' option to set default (performs same function
as #KeepIndent). When turned on for rexx code no
packing (apart from very basic stuff) takes place.
- If generating rexx code and line ends with ";" then drop the
character as its optional (helps shrink rexx source). Comments on
end of rexx lines are also dropped.
- Version 98.092
- 1st release of specific support for the generation of REXX code
instead of HTML (use '/REXX' command line switch). Still basic
but will improve in time or as I get feedback...
- Added some more standard symbols, these would mainly be used when
generating rexx code. The new symbols are:
- <?InputComponentLine>
- <?OutputLine>
- Stuffed up previous fix, this prevented the following symbols
from working:
- <?Version>
- <?Hash>
- <?Dollar>
- Version 98.091
- Now replace any variables in
#Error &. #Warning text. Also correct the
problem where the text was not being treated as a quoted string as
documented.
- When replacing parameters for #defines, they can now contain
references to other parameters. It is possible to set up infinite
loops so please don't create them!
- When one complex macro referenced another it was possible to
"lose" the tail end of the first, this should no longer happen.
- Now verify that you can build the dependancy file (check for I/O
errors). Also now check generated output.
- Was generating a blank line (if required) to enable replacement
of "<?OutputFile>", now output 0 bytes instead!
- Create dependancy directory if required.
- Version 98.087
- The standard variables
"<?Version>" &. "<?Hash>"
would not have been replaced in most cases.
- Restored check to ensure that all #define parameters
specified in a reference are actually used (warn in case of spelling
mistakes etc). Since we don't always wish to use all parameters
(for example if there is more than one version of the macro) a
way of indicating that the parameter is not required was needed.
"{$Parm}" is as usual replaced with the text you specify and the new
"{$Parm-}" format is used to indicate that the parameter
should be dropped.
- New "<?Dollar>" symbol, useful in some cases where
if after a "<" or "{" it may be mistaken for a macro or
macro parameter reference.
- You can now specify a default value for a parameter,
"{$Parm}" does not have a default and if one is not
supplied an error will NOW result. Also
"{$Parm=@A value@}" specifies a default value if none is
supplied.
- Since we now ensure that all parameters are replaced (as
specified above) we now have to be able to
"hide" parameters for macros that may be defined within
the current definition. After its been validated that all parameters
have been replaced (ie contains no '{$' strings), any
"{_$" strings are replaced with "{$". Remember you can
also use the new "<?Dollar>" symbol if required.
- There is a limit to the size of a rexx literal string (which I hit on one
of my macros), to provide more resolution options I have provided
some short forms of #commands.
These should not be used unless required.
They are:
- #E
- #U
- #!
- #W
- #Else
- #End
- Version 98.080
- Fixed minor bug where if a variable did not exist it was
incorrectly flagged as having invalid characters in the
variables name but the invalid char list was empty.
- Better updating when #AsIs mode is on
and when #AutoTags are replaced.
- New BreakAt() function for use in
#evaluate.
- Version 98.073
- When variables are replaced in a line the replacement occurs in
passes, a further pass is required when the previous one generated
references to more variables. The change now stops replacement if
its detected that multiple lines of data was generated. This
corrects some problems with #define statements spanning
multiple lines (example unknown variables trying to be replaced even
through they are in a #ifdef block).
- Corrected SYNTAX &. NOVALUE trap handlers so that they will
report these errors when they occur.
- New #Error &. #Warning commands.
- Included more realistic example pages.
- Better debugging support. All output now goes to console (none
to generated html (except header for now). This will now make it
much easier to diagnose problems when complex #if nests or #defines
fail.
- Version 98.068
- New #ifdef &. #ifndef commands.
- New "#debug" command. Debug mode improved.
- New "GetVariable" function which can be used to retrieve the
value of a variable using "#evaluate".
- No longer ensure that all "{$...}" strings are replaced as this
prevents some more complex #defines where it may create one or
more #defines/#evaluates itself.
- Fixed bug in handling of unquoted "quoted strings". In some
cases you can drop the quote chars from a string that does not
contain spaces (such as the variable name on a #evaluate
command). The bug was that you would actually need to separate
the unquoted string from following stuff by 2 or more spaces.
- Modified handling of continued #defines so that it works where a
'#' command immediately follows the define name followed by the '\'.
line continuation.
- Version 98.044
- #define replacement is now very very much faster, the gain being
directly related to the number of #defines you have declared.
- Improved error handling and reporting.
- The "/Output" mask was incorrectly being translated to upper
case. It is now left as supplied.
- Line continuation code rewritten, continued lines can now
include # commands. Handling of lines included by #if (within #define definition)
will now be slightly different. You may need to recode so #if is
used outside of multiple #defines.
- New commands such as
"#AsIs",
"#KeepIndent". &.
"#undef".
- New #AutoTag &. #AutoTagClear commands
which can be very handy along with "#AsIs" mode.
- Redefinition of #defines while allowed will produce a warning
message, use "#undef" if required.
A successful redefine that
generates warnings will return a return code of 1.
- #define variable names are no longer case sensitive (some unusual
characters are no longer allowed and other characters are mapped to
underscores. You will be told if you try to use an illegal
character.
- Now have summary on end of compile.
- Color is now used when displaying text. New "/NoColor"
command line switch.
- Generated lines are now terminated by LF only (by
default). New "/CrLf" command line switch.
- #command names are no longer case sensitive.
PPWIZARD Manual

Tuesday January 02 2001 at 7:37am