Features of version 2.22 release 10
Fractional numbers canot always be precisely represented even in 64 bit
This can lead to a result of 14.5, computed one way, rounding to 14 and another
14.5, computed a different way, rounding to 15.
This is due to slight differences
in the 64 bit representation of the two 14.5s.
The P-STAT formatting routines have been changed, and will now
cause such numbers to consistently round up.
Error messages are much improved when invalid
arguments are given to PPL functions.
An error was introduced on October 14, 2004 in the
/// character concatenate function; this is now fixed.
Features of release 9
The TURF command has 4 important enhancements.
The SIZE identifier can
be used to specify multiple sizes. For example SIZE 4 TO 8 would
cause those 5 sizes to be done.
FREQ scoring has been changed in two situations.
The first is when reach.threshold is not 1, or when
response weights and/or item weights are used.
The data from all cases, reached or not, had been
used to compute the FREQ score.
Now, only reached cases contribute to the FREQ score.
The second is when response weights and/or item weights
are used. The freq score is now the SUM of the values
rather than the COUNT of the non-zero values.
This better reflects the impact of a given combination.
A new option, SET.MISS.TO.ZERO, causes missing values
on the analysis items to be converted to zeros.
This saves writing some PPL when this change is wanted.
It is now possible to terminate a run that appears to be
taking too much time. Press the F2 function key and
confirm that you indeed want to terminate the run. All the
files are closed properly and and all completed sizes are
in the output files. This permits a tidy way out if you
realize that you have asked for a size combination that
might take many hours/days.
TABFILE.IN is now much less restrictive regarding the supplied
names of variables.
It will try to cobble a legal name from whatever it is given.
If too messy, a var17 type of name is generated.
Extensive tests have been added to make sure that
the values within a case end with the delimiter,
and that the value ending the case ends with the
end-of-record, which in most files is a CR-LF.
Concatenation of extended variable name strings is no
longer limited to 2 strings per line.
A new subcommand QUESTION IN LABELS.AREA formats the
question in the margin of the labels are. This is
supported in regular, postscript and tabbed output but
not in the transposed file format.
The TOTALS.AREA can now contain 2 entries. Thus both the
total count and the base can be in the same section. In
addition the percents are now printed when the base is
in the TOTALS.AREA and the percents are based on the
on the good count.
Several minor problems have been fixed. NEVER SKIP no
longer leaves blank lines before a bottom title. NO LEAD
BLANKS now applies to title lines.
General System Changes
The maximum length for P-STAT system file names has been
increased on all systems to 16 characters. This does not
include the 3 character extension. The P-STAT command
ALLOWABLE.NAME can be used to decrease the size if necessary.
The alternate characters on the number pad such as
plus and minus are now accepted.
It is now possible to do more complex PPL using the
menus including simple DO loops.
Features of release 8
TABFILE.IN and TABFILE.OUT now allow alternate delimiters
instead of the default horizontal tab character.
BLANK or COMMA (or indeed any ascii character) can be used.
Two identifiers, NUMERIC and CHARACTER, have been added
to TABFILE.IN to specify the datatypes of selected variables.
Minor changes have also been made to the PC/Windows menus.
Features of release 7
The PRINT command has been rewritten.
for PC/Windows, Linux and Unix. It is
used to send either a text file or a P-STAT system file to the system
printer or print queue.
Since the P-STAT system file is a binary file that cannot
be printed directly, a LIST command is automatically generated which
writes the contents to a text file.
The text file is
given a generated name that will not be confused with any other
file. A generated CLOSE and a generated PRINT with the text file
as its argument completes the process.
The PRINT command is fully documented in the P-STAT help file.
Version 2.22 release 5
For PC users there is a new front end on all systems.
It uses familiar windows features such as the file manager,
the print manager, pull down menus and message boxes.
Those users who always run from scripts in batch mode will not
notice any difference. Users who run interactively will find
it easier to print and to edit commands.
The major feature of
release 5 is one that you will only see if you make an
error using one of P-STAT's functions. The error messages
are greatly enhanced by including the function name in the
November 12, 2003 is a minor upgrade. For PC/Windows the
numeric keypad is again recognized. For all versions SURVEY
has 2 new subcommands, USE RESPONSES and USE PERCENTS. The
usage is documented in the online help file.
A new date/time function WEEK.WITHIN.YEAR has been added.
Either an ABSOLUTE week
or a CALENDAR week can be used, and the beginning day of
the calendar week can be specified.
WEEK.WITHIN.YEAR ( date, integer ) >>> integer
This function returns the week number within the year
for the supplied date. The range can be 0 to 53,
depending on the date and on the calculation method.
There are two methods for determining what constitutes
week one of a given year.
The first method is simple: the first week goes from
Jan 1 through Jan 7. This can be called an ABSOLUTE week.
The second method makes use of a calendar week, which is
defined by ISO 8061 as going from Monday through Sunday.
The first week is the first CALENDAR week that contains
a sufficient number of days within the current year.
Sufficient can be set to 1 through 7; the ISO standard
is 4. This function assumes a Mon-Sun calendar week;
a different calendar week can be given in the function.
* examples using ABSOLUTE weeks *
Week.within.year ( 'jan 3 2004', 0 ) = 1
Week.within.year ( 'jan 5 2004', 0 ) = 1
Week.within.year ( 'jan 8 2004', 0 ) = 2
Week.within.year ( 'dec 31 2004', 0 ) = 53
* examples using the default *
* Monday to Sunday calendar week *
mon tue wed thu fri sat sun
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
Week.within.year ( 'jan 5 2004', 1 ) = 2
Week.within.year ( 'jan 3 2004', 4 ) = 1
Week.within.year ( 'jan 5 2004', 4 ) = 2
Week.within.year ( 'jan 5 2004', 4 ) = 2
Week.within.year ( 'jan 5 2004', 7 ) = 1
* examples using an alternative *
* Sunday to Saturday calendar week *
sun mon tue wed thu fri sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
Week.within.year ( 'jan 3 2004', 1, 'sun' ) = 1
Week.within.year ( 'jan 3 2004', 4, 'sun' ) = 0
Week.within.year ( 'jan 5 2004', 4, 'sun' ) = 1
Week.within.year ( 'jan 1 2004', 7, 'sun' ) = 0
Week.within.year ( 'jan 2 2004', 7, 'sun' ) = 0
Week.within.year ( 'jan 3 2004', 7, 'sun' ) = 0
Week.within.year ( 'jan 4 2004', 7, 'sun' ) = 1
The major new feature in release 4 is "EXPAND".
EXPAND is a PPL statement that projects the values of one or more input
variables into a set of new variables, each associated with a specified
value in the input variables.
In it's simplest usage, EXPAND uses one input variable to create a group
of new zero/one variables. Each case begins with the new variables set
to zero. Then, if the value on the input variable is one of the specified
values, the associated new variable is set to one.
The input variable can be numeric or character. The output variables
are always numeric. These new variables are sometimes called "dummy"
Several input variables can be expanded together. The output variables
can then be set to:
(1) one if ANY of the input variables has the associated value.
This is the default.
(2) the NUMBER of input variables that have the associated value.
(3) a one if the first input variable has the associated value,
otherwise a two if the second input variable has the value,
and so on. In other words, the RANK of the value.
An Example of EXPAND
Suppose variable BREAD is coded 1 through 4, with 1 meaning rye, 2 meaning
wheat, 3 meaning raisin and 4 meaning white. The PPL statement
[ expand bread, values 1:4, gen rye wheat raisin white ]
will generate four new variables named RYE, WHEAT, RAISIN and WHITE. If
a given case has a 1 on BREAD, the value for RYE for that case will be
set to one and the other three to zero. If BREAD is two, the second new
variable, WHEAT, is set to one and the rest to zero, and so forth.
The new variables are placed after the last current variable. In the
VALUES phrase, either 1:4 or 1 TO 4 could have been used, they mean the
Enhancements to the TURF command includes
a new option allows you to try only the combinations that
satisfy logical constraints which are specified in the command.
The output files will contain the results for the combinations
that were actually evaluated. This saves having to search the
REACH output file for the combinations that make sense.
You might specify that any combination to be used must have at
least 2 but no more than 4 of a specified group of variables.
This is done with the USE identifier.
TURF xxx, size 8,
use aaa bbb to ddd 1 1,
use eee to ggg jjj to mmm 2 4,
use yyy zzz 0 1 $
In the above command, the only combinations that will be
evaluated are those that have
one and only one variable from the first group, and
at least two but no more than four variables
from the second group, and
no more than one variable from the third group.
In SURVEY some problems with the printing of significance
tests have been fixed. The FPC, finite population correction,
has also been corrected to work with f tests.
Version 2.22 release 1 & 2
This release consolidates all the changes in
version 2.21 releases 1-10 and contains many new
Version 2.21 release 10
Release 10 has minor enhancements and bug fixes.
The PPL PLACES function has been changed so that a value
like 0.35, when one decimal place is requested,
will routinely round up. This is done by adding an
extremely small additional increment when doing the round.
This change has also been made to the PPL ROUND function.
A problem in the BALANCE command has been fixed.
when the number of control
variables and categories required the use of a
second index block.
Several SURVEY problems caused by sparse data have been fixed.
These are described in the help file.
New features in release 9
INQUIRE xxx$ This is a new command which determines if
a file (in this example, xxx) is there or not.
A system variable (.inquire.) is set to 1 if it is there
and 0 if not. The file is not read by this command.
A one-line report is written, which can be suppressed
by using 'verbosity 0' in the inquire command.
WILDCARDS have been limited to forms like abc? (a prefix) and
?abc (a suffix). They now can have a number of question marks,
like ?ab?c?de?. A test has been added to prevent a variable
from being inadvertantly referenced twice in lists
In the SURVEY command, new features
of the signficance test subcommand,
PAIRED.VALUES and PAIRED.VARIABLES, had problems when
changing the test value from .95 . These have been fixed.
New features in release 10
New features in release 7
The major feature of release 6 was support of
, Total Unduplicated Reach and Frequency, analysis.
User-defined arrays have been added to the PPL language.
These arrays can have up to 7 dimensions, and can be
numeric or character. The rules for using these arrays
are described in the P-STAT help file.
Standalone PPL now allows nested DO loops which are
especially useful in initializing arrays.
DBASE.OUT has a new option to specify the year byte in
the header date of the new file. This overcomes a problem
with packages that do not support a year byte of 00.
There are three improvements for PC/Windows users.
Directory and file names with blanks in the name are
The windows behavior has been improved so that control
returns to the proper line after a screen save or a
window minimize. This is especially useful in DATA.ENTRY.
The Z option for full screen editing in the P-STAT
editor now handles character delete in an intelligent way.
Release 5 provided some enhancements to the SURVEY command.
For full details see:
SURVEY enhancements in P-STAT 2.21 Releases 5/6 (May 29, 2000)
P-STAT macros for the social scientist
If you are interested in social network analysis, a series of
of P-STAT macros is now available on the statlib server. Click
on P-stat and look for netstat1.tar.gz.
New Features in P-STAT 2.21 release 3.
There are a dozen enhancements to the SURVEY command, some minor and
some quite major. The preliminary documentation for these features
is now available in Acrobat format. New subcommands include
SKIP.RULES, OMIT.PERCENTS, ADD, SUBTRACT, MULTIPLY and DIVIDE. In
addition there is more flexibility in selecting columns for
New Features in P-STAT Version 2.21
P-STAT version 2.21 contains all the incremental changes and fixes
that have been made since version 2.20 was released in 1998.
The release of the manual in Acrobat format with a master index and
the enhancements to the SURVEY command are major improvements.
Like version 2.20, version 2.21 is Y2K compliant.
release 2.21 the installation
on Windows and NT has been simplified and a new
procedure PSTATINI has been provided which allows the various environment
variables to be defined and changed as needed after installation.
Most of the variables that were previously set as environment
variables in the AUTOEXEC.BAT file are now stored in a PSTAT.INI
file in the windows directory. This means that you do not have
to reboot after installation to have you PSKEY take effect.
The dBase file interface has been improved allowing larger records,
more variables and retaining data types.
The external variables PSFILES, PSAUTO, PSDATA and PSTEMP make it
easier for users to locate their data files.
Additional new sizes are available. Whopper 7 allows 250,000
variables per file and has a 60,000,000 byte workspace.
MAKE.CHARACTER permits numeric variables to be converted
into character variables of designated sizes.
It also allows character variables to be grown or shrunk.
Use HELP MAKE.CHARACTER $ for details on usage.
MAKE.NUMERIC permits character variables to be converted
into numeric variables without the need for PPL and renaming
variables. Use HELP MAKE.NUMERIC $ for details on usage.
The sort algorithms in P-STAT have been changed to use
the Quick Sort technique.
File management commands such as LOOKUP and JOIN,
which check for duplicate variable names, will be faster
when the input files have a great many variables.
- New features: April 21, 1998
Use HELP NEWS $ to check on the new commands which make it
easier to locate your files if you run from a Windows program
manager. PSFILES and PSDATA join PSAUTO and PSTEMP as commands
which can also be installed as environment variables.
The commands which interface with dBase format files have
been replaced and enhanced. The new files are named DBASE.IN
and DBASE.OUT. Check the help file for details.
- New features: December, 1997
List can now have value labels for character variables. The size
of value labels has been increased to 80 characters and labels
can now be folded.
Major enhancements to the TEXTWRITER command include value labels for
character variables and full PostScript support
When PostScript is used with TEXTWRITER, the composition of a line is
determined by the font that is being used and the settings of the
margins in inches rather than the output width.
Underlining, fonts, and colors can be used within sentences and para
paragraphs even with justify turned on. However, the justification is
optimized when there are uninterupted long lines. The justification is
done by apportioning the extra space equally to the blanks between
words. When the line is interrupted by a font change, underline, or
color change, this algorithm is also interrupted.
Tabular data can be placed left justified, right justified or centered
at specific inch locations. The centering can be based on the position
of a specified character such as and equal sign. These fields can
be optionally underlined.
X1/Y1 and X2/Y2 coordinates can be specified to determine the location
of lines and boxes.
The maximum input record size for BUILD and the output record
size for FILEOUT have been greatly increased.
The DATA.ENTRY command now has a full screen frontend for
free and fixed format BUILD. The frontend creates a definition
file that can be saved. The BUILD command is automatically
invoked when the definitions are complete.
- Macro Enhancements
Macros can have arguments, either keyword or positional.
Default values can be supplied for these arguments.
Macros can be inserted within commands or subcommands,
or can be entire blocks of commands.
There are two types of macros, BLOCK macros and INSTREAM macros.
A BLOCK macro contains one or more commands which may have subcommands
and data records. It is invoked by using the RUN command.
An INSTREAM macro can contain whatever one wishes.
Its contents are inserted into a command or subcommand wherever
!!macname is found (where macname is the name of the macro).
Both types of macro can have positional or keyword arguments,
and can be defined with default values for those arguments.
Alternatively, a macro can be defined without any arguments.
The commands within a BLOCK macro can contain INSTREAM macro calls.
INSTREAM macros can contain other instream macro calls.