PPWIZARD is a free preprocessor for HTML, REXX, Visual Basic or any text files.
You can get a rexx manuals (for regina) from http://www.lightlink.com/hessling/, there are HTML and PDF versions available.
Rexx unlike many other programming languages does not require its variables to be predefined and there is only one type (string). A number is just a string of characters.
Variable names can be any reasonable length and can contain the letters 'A' to 'Z', the digits '0' to '9' or any of "!?_" (digits can't start a variable name).
In PPWIZARD you must not try to use the value of a variable which does not exist or it will trap with a "NOVALUE" abort and output diagnostic information which should spell out your problem.
I very much recommend that you don't use simple rexx variable names such as "Count". This is dangerous as it may clash with PPWIZARD variables. If this occurs it will probably be very difficult to diagnose and PPWIZARD (and your code) will probably malfunction in unpredictable ways.
No PPWIZARD variables start with '_' and for this reason I recommend that you preceed all variable names with this character. For example instead of 'Count' use '_Count'. A better approach is to use the "#NextId" command and then use '@@' (by default) to prefix all rexx variables.
All rexx variables you define are global, as are those used by PPWIZARD. This gives a lot of its power but it can also be dangerous. Always try to be aware of this fact.
You also need to be aware that PPWIZARD may modify the rexx RC or RESULT variables that you believe has been set by an #evaluate command. Do not rely on these variables, set your own (of course within a single #evaluate PPWIZARD will not touch these variables).
The #RexxVar can be used for simple rexx variable assignment and maths, for more complex requirements the #DefineRexx or #evaluate commands can also be used.
Also note that rexx variables (unlike macros) are not cleared between input files. You can use this to cache values or if not wanted you should initialize all rexx variables or use the rexx "drop" command to drop them. The rexx "symbol()" call can be used to tell if a rexx variable exists.
Some examples of giving rexx variables a value:
#evaluate ^^ ^_Count = 1^ ;;Both this and next line set value to the number 1 #evaluate ^^ ^_Count = '1'^ #evaluate ^^ ^_Count = _Count + 1^ ;;Increase value by 1 #evaluate ^^ ^_Array.1 = 'a value'^ #evaluate ^^ ^_Fred = "a value"^