home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Equalizer BBS
/
equalizer-bbs-collection_2004.zip
/
equalizer-bbs-collection
/
BBS-PCBOARD-STUFF
/
PPL.ZIP
/
PPL.DOC
< prev
Wrap
Text File
|
1994-11-01
|
70KB
|
1,972 lines
PCBoard Programming Language Version 2.00
-----------------------------------------
Rewritten by: DOOMER (01/11/94)
-------------------------------
┌───────────────────┐
│ PPL SOURCE SYNTAX │
└───────────────────┘
Each line of a PPL source file may contain none, one, some or all
of the following sections:
[KEYWORD ][EXPR|VAR][,EXPR|VAR][;|'][COMMENT TEXT]
KEYWORD - A PPL statement used to accomplish some task.
EXPR - A PPL expressioin which may contain VARs, CONSTs,
and/or FUNCs.
VAR - A PPL variable with optional array subscript.
CONST - A PPL constant.
FUNC - A PPL function that returns a value.
; - Used to start a comment. Ignored by the compiler.
' - Used to start a comment. Ignored by the compiler.
COMMENT - Comment text following the ; or '.
Ignored by the compiler.
+ A double quote ("") may be embedded within a string constant to tell
the compiler that a single literal quote is desired (in other
words, "THIS""IS""A""TEST" would evaluate to THIS"IS"A"TEST after
the leading and trailing quotes are removed and the double quotes
were folded to single quotes)
+ Labels and variable names may include the following characters in
addition to A-Z, 0-9, and the _ (underscore) character: $ (dollar
sign), @ (commercial at), # (pound sign), ¢ (cents), £ (british
pound), ¥ (japanese yen)
+ A \ (backslash) character as the last character on a line (before any
comments) will now allow continuing a logical line from one to the
next physical line
+ A : (colon) character may be used to separate multiple logical lines
on a single physical line
+ A comment may be started by an asterisk (*) if it is the first
non-whitespace character on a line.
+ Source files can be included from other source files. This is
accomplished with a compiler directive in a comment like this:
;$INCLUDE:FILESPEC.EXT
(Note that the first character need not be the semi-colon. An
apostrophe ['] or asterisk [*] may also be used where appropriate.)
This allows you to include subroutines from a source code 'library'.
This should help in starting reusable code fragments. When the
file is included, it is compiled as though it were in the main
source file. For example:
FOO.INC
-------
:subroutine
PRINTLN "Hello!"
RETURN
FOO.PPS
-------
PRINTLN "Running FOO.PPS"
GOSUB subroutine
END ' This line is important!
*$INCLUDE:FOO.INC
Note the use of END in FOO.PPS. It is important in this case to
ensure that you don't accidentally run subroutine twice by just
falling through to it.
┌────────────┐
│ DATA TYPES │
└────────────┘
BIGSTR
Allows up to 2048 characters per big string
(up from 256 for STRING variables)
May include CHR(0) characters in the middle of the big string
BOOLEAN
unsigned character (1 byte)
0 = FALSE, non-0 = TRUE
BYTE
1-byte unsigned integer
0 - 255
DATE
unsigned integer (2 bytes)
PCBoard julian date (count of days since 1/1/1900)
DOUBLE
8-byte floating point number (same as DREAL)
-1.7E-308 - +1.7E+308 (15-digit precision)
DREAL
8-byte floating point number
-1.7E-308 - +1.7E+308 (15-digit precision)
DWORD
4-byte unsigned integer (same as UNSIGNED)
0 - 4,294,967,295
EDATE
Julian date in earth date format
Deals with dates formatted YYMM.DD
FLOAT
4-byte floating point number (same as REAL)
-3.4E-38 - +3.4E+38 (7-digit precision)
INT
2-byte signed integer (same as SWORD)
-32,768 - 32,767
INTEGER
signed long integer (4 bytes)
-2,147,483,648 - +2,147,483,647
LONG
4-byte signed integer (same as INTEGER)
-2,147,483,648 - 2,147,483,647
MONEY
signed long integer (4 bytes)
-$21,474,836.48 - +$21,474,836.47
REAL
4-byte floating point number
-3.4E-38 - +3.4E+38 (7-digit precision)
SBYTE
1-byte signed integer
-128 - 127
SDWORD
4-byte signed integer (same as INTEGER)
-2,147,483,648 - 2,147,483,647
SHORT
1-byte signed integer (same as SBYTE)
-128 - 127
STRING
far character pointer (4 bytes)
NULL is an empty string; non-NULL points to a string of some
length less than or equal to 256
SYNTAX
TYPE var[(dim[,dim[,dim]])][,var...]
SWORD
2-byte signed integer
-32,768 - 32,767
TIME
signed long integer (4 bytes)
Count of seconds since midnight
UBYTE
1-byte unsigned integer (same as BYTE)
0 - 255
UDWORD
4-byte unsigned integer (same as UNSIGNED)
0 - 4,294,967,295
UNSIGNED
4-byte unsigned integer
0 - 4,294,967,295
UWORD
2-byte unsigned integer (same as WORD)
0 - 65,535
WORD
2-byte unsigned integer
0 - 65,535
NOTES: Any type may be assigned to any other type. This is the
------ simplest way to accomplish type conversion. BOOLEAN, DATE,
INTEGER, MONEY and TIME are all integer types and may be
assigned to each other. Assignment from a larger data type
to a smaller data type automatically converts the data to a
format suitable for the smaller data type. Conversion to
and from STRINGs is dependent on the other data type:
* DATEs are imported & exported as "MM-DD-YY"
* TIMEs are imported & exported as "HH:MM:SS"
* MONEYs are imported & exported as "#.##" without embedded
dollar signs or commas, and using as many characters as
needed to the left of the decimal point.
-> All variables must be declared before use <-
┌───────────┐
│ CONSTANTS │
└───────────┘
$#.## - A MONEY constant (dollar sign followed by optional dollars
followed by decimal point followed by cents; # = 0-9)
#h - An INTEGER hexadecimal constant (# = 0-9 & A-F)
#d - An INTEGER decimal constant (# = 0-9)
#o - An INTEGER octal constant (# = 0-7)
#b - An INTEGER binary constant (# = 0-1)
# - An INTEGER constant (# = 0-9)
"X" - A STRING constant (X = any displayable text)
@X## - An INTEGER @X constant (# = 0-9 & A-F)
The following predefined constant labels are also defined:
AUTO = 2000h
Parameter passed to INPUTSTR and PROMPTSTR statements
(automatically press enter after 10 seconds of no user input)
BELL = 800h
Parameter passed to DISPTEXT statement
(sound a bell when prompt displayed)
CUR_USER = 0
Parameter passed to CURUSER() function
DEFS = 0
Parameter passed to various statements for default values
ECHODOTS = 1h
Parameter passed to INPUTSTR and PROMPTSTR statements
(echo dots instead of user input)
ERASELINE = 20h
Parameter passed to INPUTSTR and PROMPTSTR statements
(erase the current line when user presses enter)
FALSE = 0
BOOLEAN FALSE value
FCL = 2
Value passed to STARTDISP to force line counting display
FIELDLEN = 2h
Parameter passed to INPUTSTR and PROMPTSTR statements (displays
parenthesis to show input field width if ANSI enabled)
FNS = 1
Value passed to STARTDISP to force non-stop display
F_EXP = 2h
Expired subscription access allowed flag for CONFFLAG and
CONFUNFLAG
F_MW = 10h
Mail waiting flag for CONFFLAG and CONFUNFLAG
F_REG = 1h
Registered access allowed flag for CONFFLAG and CONFUNFLAG
F_SEL = 4h
Conference selected flag for CONFFLAG and CONFUNFLAG
F_SYS = 8h
Conference SysOp access flag for CONFFLAG and CONFUNFLAG
GRAPH = 1h
Parameter passed to DISPFILE statement to search for graphics
specific files
GUIDE = 4h
Parameter passed to INPUTSTR and PROMPTSTR statements
(displays parenthesis above current line if FIELDLEN used and
ANSI not enabled)
HIGHASCII = 1000h
Parameter passed to INPUTSTR and PROMPTSTR statements
(allow high ascii characters, regardless of current valid
character set, if disable high ascii filter set to yes)
LANG = 4h
Parameter passed to DISPFILE statement to search for language
specific files
LFAFTER = 100h
Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements
(send an extra line feed after user presses enter)
LFBEFORE = 80h
Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements
(send an extra line feed before prompt display)
LOGIT = 8000h
Parameter passed to DISPTEXT statement
(log text to callers log)
LOGITLEFT = 10000h
Parameter passed to DISPTEXT statement
(log text to callers log, forcing left justification)
NC = 0
Value passed to STARTDISP to not change display mode
NEWLINE = 40h
Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements
(send a line feed after user presses enter)
NOCLEAR = 400h
Parameter passed to INPUTSTR and PROMPTSTR statements
(don't clear field at first keypress regardless of ANSI)
NO_USER = -1
Parameter passed to CURUSER() function
O_RD = 0
Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in
read only mode
O_RW = 2
Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in
read and write mode
O_WR = 1
Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in
write only mode
SEC = 2h
Parameter passed to DISPFILE statement to search for security
specific files
STACKED = 10h
Parameter passed to INPUTSTR and PROMPTSTR statements
(allow semi-colons and spaces in addition to valid character
set passed)
S_DB = 3h
Parameter passed to FCREATE/FOPEN/FAPPEND to deny read and
write (both) access from other processes
S_DN = 0h
Parameter passed to FCREATE/FOPEN/FAPPEND to allow read and
write (deny none) access from other processes
S_DR = 1h
Parameter passed to FCREATE/FOPEN/FAPPEND to deny read access
from other processes
S_DW = 2h
Parameter passed to FCREATE/FOPEN/FAPPEND to deny write access
from other processes
TRUE = 1
BOOLEAN TRUE value
UPCASE = 8h
Parameter passed to INPUTSTR and PROMPTSTR statements
(force user input to upper case)
WORDWRAP = 200h
Parameter passed to INPUTSTR and PROMPTSTR statements
(if user hits end of line, save the text at the end of the line
for future use)
YESNO = 4000h
Parameter passed to INPUTSTR and PROMPTSTR statements
(Only allow international yes/no responses)
┌──────────────────────┐
│ PREDEFINED VARIABLES │
└──────────────────────┘
BOOLEAN U_CLS
Clear screen between messages status
BOOLEAN U_DEF79
79 column message editor default
BOOLEAN U_EXPERT
Users current expert status
BOOLEAN U_FSE
Users full screen editor default
BOOLEAN U_FSEP
Prompt for full screen editor status
BOOLEAN U_LONGHDR
6 line vs 4 line message header status
BOOLEAN U_SCROLL
Scroll multi-screen message status
DATE U_EXPDATE
The users subscription expiration date
DATE U_PWDEXP
The date that the users password expires and must be changed
INTEGER U_EXPSEC
The users expired security level
INTEGER U_PAGELEN
The users page length
INTEGER U_SEC
The users security level
STRING U_ADDR(5)
The users address information (if the SysOp has enabled address
recording)
Subscript 0 = First street line
1 = Second street line
2 = City
3 = State
4 = Zip
5 = Country
STRING U_ALIAS
The users alias (if the SysOp has enabled alias use)
STRING U_BDPHONE
The users business/data phone number
STRING U_CITY
The users city/state information
STRING U_CMNT1
The users comment field
STRING U_CMNT2
The SysOps comment field
STRING U_HVPHONE
The users home/voice phone number
STRING U_NOTES(4)
Notes about the user (if the SysOp has enabled the note
capability)
Subscripts 0-4 hold lines 1-5
STRING U_PWD
The users password
STRING U_TRANS
The users default transfer protocol
STRING U_VER
The users verification string (if the SysOp has enabled user
verification)
┌──────────────────────┐
│ EXPRESSION OPERATORS │
└──────────────────────┘
PPL allows the following operators to be used in expressions
(lvalue and rvalue are simply the values to the left and right,
respectively, of binary operators):
( - Start sub-expression (also allows [ or { to be used)
) - End sub-expression (also allows ] or } to be used)
^ - Raise lvalue to the power of rvalue (also allows **)
* - Multiply lvalue by rvalue
/ - Divide lvalue by rvalue
% - Remainder of lvalue divided by rvalue
+ - Add rvalue to lvalue
- - Subtract rvalue from lvalue
= - Is lvalue equal to rvalue (also allows ==)
<> - Is lvalue not equal to rvalue (also allows != and ><)
< - Is lvalue less than rvalue
<= - Is lvalue less than or equal to rvalue (also allows =<)
> - Is lvalue greater than rvalue
>= - Is lvalue greater than or equal to rvalue (also allows =>)
! - Logical not of rvalue
& - Logical and of lvalue with rvalue (also allows &&)
| - Logical or of lvalue with rvalue (also allows ||)
┌───────────┐
│ FUNCTIONS │
└───────────┘
PPL allows the following functions, returning the specified type,
with the specified arguments, to be used in an expression (some
functions require no arguments, in which case the parenthesis are
empty; if arguments are required, the arguments may all be
expressions of any type, but will be converted to one of the
following types prior to function evaluation: BEXP (BOOLEAN),
DEXP (DATE), IEXP (INTEGER), MEXP (MONEY), SEXP (STRING),
TEXP (TIME)):
ABORT() (BOOLEAN)
Returns a flag indicating whether or not the user aborted the
display of data via ^K/^X or answering no to a MORE? prompt
ABS(IEXP) (INTEGER)
Returns the absolute value of IEXP
ALIAS (BOOLEAN)
Allows PPE control of whether or not the user is using an alias
ALIAS() (BOOLEAN)
Returns the users current ALIAS setting
(TRUE = alias use on, FALSE = alias use off)
AND(IEXP1,IEXP2) (INTEGER)
Returns the bitwise and of two integer expressions
ANSION() (BOOLEAN)
Returns TRUE if the user has ANSI capabilities
ASC(SEXP) (INTEGER)
Returns the ASCII value (0-255) of the first character of SEXP
B2W(IEXP1,IEXP2) (INTEGER)
Returns a word built from two byte sized values by the formula:
(IEXP1*0100h+IEXP2)
CALLID() (STRING)
Returns the caller ID string
CALLNUM() (INTEGER)
Returns the caller number of the current user.
CARRIER() (INTEGER)
Returns the carrier speed as reported by the modem to PCBoard
CCTYPE(SEXP) (STRING)
Returns the issuer of credit/JCB/other Diners cards number SEXP
CDON() (BOOLEAN)
Returns TRUE if the carrier detect signal is on
CHATSTAT() (BOOLEAN)
Returns TRUE if the current users chat is available
CHR(IEXP) (BIGSTR)
Returns a single character long string of the character
represented by ASCII code IEXP (0-255)
CONFALIAS() (BOOLEAN)
Returns TRUE if the current conference is configured to
allow aliases
CONFEXP(IEXP)
Returns TRUE if users expired flag is set in conference IEXP
NOTE: CONFREG() = FALSE & CONFEXP = TRUE, user locked out
----- CONFREG() = TRUE & CONFEXP = TRUE, user reg & exp
CONFMW(IEXP) (BOOLEAN)
Returns TRUE if user has mail waiting in conference IEXP
CONFREG(IEXP) (BOOLEAN)
Returns TRUE if users registered flag is set in conference IEXP
CONFSEL(IEXP) (BOOLEAN)
Returns TRUE if user has selected conference IEXP
CONFSYS(IEXP) (BOOLEAN)
Returns TRUE if user has SysOp access in conference IEXP
CURCOLOR() (INTEGER)
Returns the current color (0-255) in use by the ANSI driver
CURCONF() (INTEGER)
Returns the current conference number
CURSEC() (INTEGER)
Returns the users current security level
CURUSER() (INTEGER)
Determines what users information, if any, is available via the
user variables. It takes no arguments and returns one of the
following values:
NO_USER (-1) - User variables are currently undefined
CUR_USER (0) - User variables are for the current user
Other - The record number of an alternate user for whom user
variables are defined
DATE() (DATE)
Returns todays date
DAY(DEXP) (INTEGER)
Returns the day of the month (1-31) of DEXP
DBGLEVEL() (INTEGER)
Returns the debug level in effect
DEFANS() (STRING)
Returns the last default answer passed to an INPUT statement.
For example, this allows a PPE to determine what the default
answer would have been had a PCBTEXT prompt not been replaced
with a PPE.
DEFCOLOR() (INTEGER)
Returns the default color as specified in PCBSetup
DOW(DEXP) (INTEGER)
Returns the day of the week (0 = Sunday, 6 = Saturday) that
DEXP fell on
ERRCORRECT() (BOOLEAN)
Returns TRUE if a session is determined to be error corrected
EXIST(SEXP) (BOOLEAN)
Returns a boolean TRUE value if the file SEXP exists
EVTTIMEADJ() (BOOLEAN)
Detects if the users time has been adjusted for an upcoming event.
This is useful to detect if a users time left can be increased with
the ADJTIME statement.
FERR(IEXP) (BOOLEAN)
Returns TRUE if a file access error occurred on channel IEXP
since the file was opened or FERR was last called
FILEINF(SEXP,IEXP) (BOOLEAN, DATE, INTEGER, STRING and TIME)
Returns a piece of information (specified by IEXP) about the
file SEXP
Valid values for IEXP: 1 = Return TRUE if file exists
2 = Return file date stamp
3 = Return file time stamp
4 = Return file size
5 = Return file attributes
01h = Read Only
02h = Hidden
04h = System
20h = Archive
6 = Return file drive
7 = Return file path
8 = Return file base name
9 = Return file extension
FLAGCNT() (INTEGER)
Returns the number of files flagged for download.
FMTCC(SEXP) (STRING)
Returns a formatted credit card number based on SEXP
FMTREAL(EXP,IEXP1,IEXP2)
Formats REAL/DREAL values for display purposes
EXP = A REAL/DREAL floating point expression
IEXP1 = The minimum number of characters to display
IEXP2 = The number of characters to display to the right of
the decimal point
GETENV(SEXP) (STRING)
Returns the value of the environment variable named by SEXP
GETTOKEN() (STRING)
Returns the next string token from a prior call to TOKENIZE
(Same as the GETTOKEN statement but can be used in an
expression without prior assignement to a variable)
GETX() (INTEGER)
Returns the current column (X position) of the cursor on the
display
GETY() (INTEGER)
Returns the current row (Y position) of the cursor on the
display
GRAFMODE() (STRING)
Returns a character indicating the users graphics status
R = RIPscrip supported, G = ANSI graphics (color and
positioning) supported, A = ANSI positioning (no color)
supported, or N = No graphics (RIP or ANSI) supported
HELPPATH() (STRING)
Returns the path, as specified in PCBSetup, to the help files
HIMSGNUM() (INTEGER)
Returns the high message number for the current conference
HOUR(TEXP) (INTEGER)
Returns the hour of the day (0-23) of TEXP
I2S(IEXP1,IEXP2) (STRING)
Returns a string representing the integer value IEXP1 converted
to base IEXP2
INKEY() (STRING)
Returns the next keypress as a single character long string, or
a string with the name of the function or cursor control key
INSTR(SEXP1,SEXP2) (BIGSTR)
Returns the position of SEXP2 in SEXP1 (1-LEN(SEXP1)) or 0 if
SEXP2 not in SEXP1
ISBITSET(VAR,BIT) (BOOLEAN)
Checks the status of a specified bit (BIT) in a variable (VAR)
ISNONSTOP() (BOOLEAN)
Returns TRUE if the display is currently in non-stop mode
(ie, did the user type NS as part of their command line)
KBDBUFSIZE() (INTEGER)
Returns the number of key presses pending in the KBDSTRING buffer
KBDFILUSED() (BOOLEAN)
Returns TRUE if key presses are being stuffed via a KBDFILE
statement
KINKEY() (STRING)
Returns the next keypress from the BBS keyboard as a single
character long string, or a string with the name of the
function or cursor control key
LANGEXT() (STRING)
Returns the file extension for the users language selection
LASTANS() (STRING)
Returns the last answer accepted by an INPUT statement
LEFT(SEXP,IEXP) (BIGSTR)
Returns the left-most IEXP characters of SEXP
LEN(SEXP) (BIGSTR)
Returns the length of SEXP
LOGGEDON() (BOOLEAN)
Returns TRUE if the user has already logged on to the BBS,
FALSE otherwise
LOMSGNUM() (INTEGER)
Returns the low message number for the current conference
LOWER(SEXP) (BIGSTR)
Returns a string of SEXP with all uppercase characters
converted to lowercase characters
LPRINTED() (INTEGER)
Returns the number of lines printed on the display
LTRIM(SEXP1,SEXP2) (BIGSTR)
Returns a string of SEXP1 with the first character of SEXP2
trimmed from the left
MASK_ALNUM() (STRING)
Returns a valid character mask for input statements of
A through Z, a through z, and 0 through 9
MASK_ALPHA() (STRING)
Returns a valid character mask for input statements of
A through Z and a through z
MASK_ASCII() (STRING)
Returns a valid character mask for input statements of
space (" ") through tilde ("~")
MASK_FILE() (STRING)
Returns a valid character mask for input statements of
file names
MASK_NUM() (STRING)
Returns a valid character mask for input statements of
0 through 9
MASK_PATH() (STRING)
Returns a valid character mask for input statements of
path names
MASK_PWD() (STRING)
Returns a valid character mask for input statements of
passwords
MAXNODE() (INTEGER)
Returns the maximum node possible with the current software
(ie, /2 would return 2, /10 would return 10, etc)
MEGANUM(IEXP) (INTEGER)
Converts a decimal number (from 0 to 1295) to a hexa-tri-decimal
number, or meganum
MGETBYTE() (INTEGER)
Returns the value of the next byte from the modem (0-255) or -1
if there are no bytes waiting for input
MID(SEXP,IEXP1,IEXP2) (BIGSTR)
Returns a string from SEXP starting at the IEXP1 position of
SEXP and containing IEXP2 characters of SEXP
MIN(TEXP) (INTEGER)
Returns the minute of the hour (0-59) of TEXP
MINKEY() (STRING)
Returns the next keypress from the remote caller as a single
character long string, or a string with the name of the
function or cursor control key
MINLEFT() (INTEGER)
Returns the current callers minutes left to use online
MINON() (INTEGER)
Returns the current callers minutes online so far this session
MIXED(SEXP) (STRING)
Converts a string to mixed (or proper name) case
MKADDR(IEXP1,IEXP2) (INTEGER)
Returns a segment:offset address as a long integer built from
two word sized values by the formula: (IEXP1*00010000h+IEXP2)
MKDATE(IEXP1,IEXP2,IEXP3) (DATE)
Returns a date with the year specified by IEXP1 (1900-2079),
month specified by IEXP2 (1-12), and day specified by IEXP3
(1-31).
MODEM() (STRING)
Returns the modem connect string as reported by the modem to
PCBoard
MONTH(DEXP) (INTEGER)
Returns the month of the year (1-12) of DEXP
NOCHAR() (STRING)
Returns the current language no character
NOT(IEXP) (INTEGER)
Returns the bitwise complement (all bits inverted) of an
integer expression
ONLOCAL() (BOOLEAN)
Returns TRUE if the user is on locally
OR(IEXP1,IEXP2) (INTEGER)
Returns the bitwise or of two integer expressions
PAGESTAT() (BOOLEAN)
Returns TRUE if the user has paged the SysOp (or PAGEON has
been issued), FALSE otherwise (or PAGEOFF has been issued)
PCBDAT() (STRING)
Returns a string with the path and file name of PCBOARD.DAT
PCBNODE() (INTEGER)
Returns the node number
PEEKB(IEXP) (INTEGER)
Returns a byte value (0-255) located at memory address IEXP
(PEEK is a synonym)
PEEKDW(IEXP) (INTEGER)
Returns a signed integer value (-2147483648 - +2147483647)
located at memory address IEXP
PEEKW(IEXP) (INTEGER)
Returns a word value (0-65535) located at memory address IEXP
PPENAME() (STRING)
Returns the name of the currently executing PPE file minus the
path and extension
PPEPATH() (STRING)
Returns a string with the path (no file name) of the currently
executing PPE file
PPLBUFSIZE() (INTEGER)
Returns the number of key presses pending in the KBDSTUFF buffer
PSA(IEXP) (BOOLEAN)
Returns TRUE if the feature specified by IEXP is enabled,
FALSE if the feature specified by IEXP is disabled
Valid values for IEXP: 1 = Alias Support Enabled
2 = Verify Support Enabled
3 = Address Support Enabled
4 = Password Support Enabled
5 = Statistics Support Enabled
6 = Notes Support Enabled
RANDOM(IEXP) (INTEGER)
Returns a random number between 0 and IEXP inclusive
READLINE(SEXP,IEXP) (STRING)
Read and return line number IEXP from file SEXP
REGAH() (INTEGER)
Returns the value of the AH register after a DOINTR statement
REGAL() (INTEGER)
Returns the value of the AL register after a DOINTR statement
REGAX() (INTEGER)
Returns the value of the AX register after a DOINTR statement
REGBH() (INTEGER)
Returns the value of the BH register after a DOINTR statement
REGBL() (INTEGER)
Returns the value of the BL register after a DOINTR statement
REGBX() (INTEGER)
Returns the value of the BX register after a DOINTR statement
REGCF() (BOOLEAN)
Returns the state of the carry flag after a DOINTR statement
REGCH() (INTEGER)
Returns the value of the CH register after a DOINTR statement
REGCL() (INTEGER)
Returns the value of the CL register after a DOINTR statement
REGCX() (INTEGER)
Returns the value of the CX register after a DOINTR statement
REGDH() (INTEGER)
Returns the value of the DH register after a DOINTR statement
REGDI() (INTEGER)
Returns the value of the DI register after a DOINTR statement
REGDL() (INTEGER)
Returns the value of the DL register after a DOINTR statement
REGDS() (INTEGER)
Returns the value of the DS register after a DOINTR statement
REGDX() (INTEGER)
Returns the value of the DX register after a DOINTR statement
REGES() (INTEGER)
Returns the value of the ES register after a DOINTR statement
REGF() (INTEGER)
Returns the value of the flags register after a DOINTR
statement
REGSI() (INTEGER)
Returns the value of the SI register after a DOINTR statement
REPLACE(SEXP1,SEXP2,SEXP3) (BIGSTR)
Returns a string of SEXP1 with all occurences of the first
character of SEXP2 replaced by the first character of SEXP3
REPLACESTR(SEXP1,SEXP2,SEXP3) (BIGSTR)
Returns a string of SEXP1 with all occurences of sub-string SEXP2
replaced by sub-string SEXP3
RIGHT(SEXP,IEXP) (BIGSTR)
Returns the right-most IEXP characters of SEXP
RTRIM(SEXP1,SEXP2) (BIGSTR)
Returns a string of SEXP1 with the first character of SEXP2
trimmed from the right
S2I(SEXP,IEXP) (INTEGER)
Returns an integer representing the string SEXP converted from
base IEXP
SCRTEXT(IEXP1,IEXP2,IEXP3,BEXP) (STRING)
Returns a string with the text (and color information in the
form of @X codes if BEXP is TRUE) from column IEXP1, row IEXP2,
and of length IEXP3
SEC(TEXP) (INTEGER)
Returns the second of the minute (0-59) of TEXP
SHOWSTAT() (BOOLEAN)
Returns TRUE if writing to the display is active, FALSE if
writing to the display is disabled
SLPATH() (STRING)
Returns the path, as specified in PCBSetup, to the login
security files
SPACE(IEXP) (BIGSTR)
Returns a string of spaces IEXP characters long
STRING(EXP) (STRING)
Returns EXP converted to a string
STRIP(SEXP1,SEXP2) (BIGSTR)
Returns a string of SEXP1 with all occurrences of the first
character of SEXP2 removed
STRIPSTR(SEXP1,SEXP2) (BIGSTR)
Returns a string of SEXP1 with all occurrences of sub-string
SEXP2 removed
STRIPATX(SEXP) (BIGSTR)
Returns a string of SEXP with all @X codes removed
SYSOPSEC() (INTEGER)
Returns the SysOp security defined in PCBOARD.DAT
TEMPPATH() (STRING)
Returns the path, as specified in PCBSetup, to the temporary
work directory
TIME() (TIME)
Returns the current time
TIMEAP(TEXP) (STRING)
Returns a string representing the time TEXP in civilian format
(XX:XX:XX AM)
TOBIGSTR(EXP) (BIGSTR)
Forces the result of EXP to the BIGSTR type
TOBOOLEAN(EXP) (BOOLEAN)
Forces the result of EXP to the BOOLEAN type
TOBYTE(EXP) (BYTE)
Forces the result of EXP to the BYTE type
TODATE(EXP) (DATE)
Forces the result of EXP to the DATE type
TODOUBLE(EXP) (DOUBLE)
Forces the result of EXP to the DOUBLE type
TODREAL(EXP) (DREAL)
Forces the result of EXP to the DREAL type
TODWORD(EXP) (DWORD)
Forces the result of EXP to the DWORD type
TOEDATE(EXP) (EDATE)
Forces the result of EXP to the EDATE type
TOFLOAT(EXP) (FLOAT)
Forces the result of EXP to the FLOAT type
TOINT(EXP) (INT)
Forces the result of EXP to the INT type
TOINTEGER(EXP) (INTEGER)
Forces the result of EXP to the INTEGER type
TOLONG(EXP) (LONG)
Forces the result of EXP to the LONG type
TOMONEY(EXP) (MONEY)
Forces the result of EXP to the MONEY type
TOREAL(EXP) (REAL)
Forces the result of EXP to the REAL type
TOSBYTE(EXP) (SBYTE)
Forces the result of EXP to the SBYTE type
TOSDWORD(EXP) (SDWORD)
Forces the result of EXP to the SDWORD type
TOSHORT(EXP) (SHORT)
Forces the result of EXP to the SHORT type
TOSTRING(EXP) (STRING)
Forces the result of EXP to the STRING type
TOSWORD(EXP) (SWORD)
Forces the result of EXP to the SWORD type
TOTIME(EXP) (TIME)
Forces the result of EXP to the TIME type
TOUBYTE(EXP) (UBYTE)
Forces the result of EXP to the UBYTE type
TOUDWORD(EXP) (UDWORD)
Forces the result of EXP to the UDWORD type
TOUNSIGNED(EXP) (UNSIGNED)
Forces the result of EXP to the UNSIGNED type
TOUWORD(EXP) (UWORD)
Forces the result of EXP to the UWORD type
TOWORD(EXP) (WORD)
Forces the result of EXP to the WORD type
TOKCOUNT() (INTEGER)
Returns the number of tokens available via the GETTOKEN
statement and/or function
TOKENSTR() (STRING)
Returns a previously tokenized string reconstructed with
semi-colons separating the component tokens
TRIM(SEXP1,SEXP2) (BIGSTR)
Returns a string of SEXP1 with the first character of SEXP2
trimmed from both ends
U_LMR(IEXP)
Returns the number of the last message read for the specified
conference IEXP
UPPER(SEXP) (BIGSTR)
Returns a string of SEXP with all lowercase characters
converted to uppercase characters
UN_CITY() (STRING)
Returns a nodes city from USERNET.XXX after a RDUNET statement
UN_NAME() (STRING)
Returns a nodes user name from USERNET.XXX after a RDUNET
statement
UN_OPER() (STRING)
Returns a nodes operation text from USERNET.XXX after a RDUNET
statement
UN_STAT() (STRING)
Returns a nodes status from USERNET.XXX after a RDUNET
statement
U_BDL() (INTEGER)
Returns the current users number of bytes downloaded
U_BDLDAY() (INTEGER)
Returns the current users number of bytes downloaded today
U_BUL() (INTEGER)
Returns the current users number of bytes uploaded
U_FDL() (INTEGER)
Returns the current users number of files downloaded
U_FUL() (INTEGER)
Returns the current users number of files uploaded
U_INCONF(IEXP1,IEXP2) (BOOLEAN)
Returns TRUE if user record number IEXP2 is registered in
conference IEXP1
U_LDATE() (DATE)
Returns the current users last date on the system
U_LDIR() (DATE)
Returns the current users last directory scan date
U_LOGONS() (INTEGER)
Returns the current users number of times logged on
U_LTIME() (TIME)
Returns the current users last time on the system
U_MSGRD() (INTEGER)
Returns the number of messages the user has read
U_MSGWR() (INTEGER)
Returns the number of messages the user has written
U_NAME() (STRING)
Returns the current users name
U_PWDHIST(IEXP) (STRING)
Returns the specified password from the password history
Valid values for IEXP are 1 through 3
U_PWDLC() (DATE)
Returns the date of the last password change
U_PWDTC() (INTEGER)
Returns the number of times the password has been changed
U_RECNUM(SEXP) (INTEGER)
Returns the user record number (0-65535) for user name SEXP or
-1 if SEXP is not registered on this system.
U_STAT(IEXP) (DATE or INTEGER)
Returns a statistic about the user that is tracked by PCBoard
Valid values for IEXP are 1 through 15
1 - Returns the first date the user called the system
2 - Returns the number of SysOp pages the user has requested
3 - Returns the number of group chats the user has
participated in
4 - Returns the number of comments the user has left
5 - Returns the number of 300 bps connects
6 - Returns the number of 1200 bps connects
7 - Returns the bumber of 2400 bps connects
8 - Returns the number of 9600 bps connects
9 - Returns the number of 14400 bps connects
10 - Returns the number of security violations
11 - Returns the number of "not registered in conference"
warnings
12 - Returns the number of times the users download limit
has been reached
13 - Returns the number of "file not found" warnings
14 - Returns the number of password errors the user has had
15 - Returns the number of verify errors the user has had
U_TIMEON() (INTEGER)
Returns the current users time online today in minutes
USERALIAS() (BOOLEAN)
Returns TRUE if the current user is allowed to use an alias
VALCC(SEXP) (BOOLEAN)
Strips invalid characters from the card number SEXP and returns
TRUE if SEXP is a valid credit card number
VALDATE(SEXP) (BOOLEAN)
Returns TRUE if SEXP is in a valid date format
VALTIME(SEXP) (BOOLEAN)
Returns TRUE if SEXP is in a valid time format
VER() (INTEGER)
Returns the version number of PCBoard that is running
XOR(IEXP1,IEXP2) (INTEGER)
Returns the bitwise exclusive-or of two integer expressions
YEAR(DEXP) (INTEGER)
Returns the year (1900-2079) of DEXP
YESCHAR() (STRING)
Returns the current language yes character
┌────────────┐
│ STATEMENTS │
└────────────┘
PPL recognizes the following statements with the specified
arguments to perform the specified operations (some statements
require no arguments, in which case there is nothing following the
statement; if arguments are required, they may be of two types,
expression and variable:
* expression arguments may all be expressions of any type, but will
be converted to one of the following types prior to function
evaluation: BEXP (BOOLEAN), DEXP (DATE), IEXP (INTEGER),
MEXP (MONEY), SEXP (STRING), TEXP (TIME);
* variable arguments (VAR) may be variables of any type, but may be
converted to and from an appropriate type in order to accomplish
the required statement):
ADJTBYTES IEXP
Add or substract IEXP bytes to the users total download bytes
ADJTFILES IEXP
Add or substract IEXP files to the users total download files
ADJTIME IEXP
Add or subtract IEXP minutes to the users time available this
session
ANSIPOS IEXP1,IEXP2
If ANSI is available, position the cursor in
column IEXP1 row IEXP2
Legal ranges: 1 <= IEXP1 <= 80
1 <= IEXP2 <= 23 (Because of the status lines)
(1,1) is the top left corner of the screen
APPEND SEXP1,SEXP2
Append the contents of one file SEXP1 to another file SEXP2.
BACKUP IEXP
Backup (move the cursor to the left) IEXP columns without going
past column 1
BITCLEAR VAR,BIT
Clears a specified bit (BIT) from a variable (VAR). This statement
is primarily intended to be used with BIGSTR variables which can be
up to 2048 bytes long. However, it will work with other data types
as well if desired. Just be aware of the potential problems in 'bit
twidling' non-string buffers and then trying to access them later as
their 'intended' type without re-initializing the variable. If the
bit parameter (an integer from 0 to the number of bits in the object)
is invalid no processing takes place.
BITSET VAR,BIT
Sets a specified bit from a variable. This statement is primarily
intended to be used with BIGSTR variables which can be up to 2048
bytes long. However, it will work with other data types as well if
desired. Just be aware of the potential problems in 'bit twidling'
non-string buffers and then trying to access them later as their
'intended' type without re-initializing the variable. If the bit
parameter (an integer from 0 to the number of bits in the object) is
invalid no processing takes place.
BLT IEXP
Display bulletin number IEXP
BREAK
Can be used to break out of a WHILE or FOR loop without the use
of a GOTO statement
BROADCAST IEXP1,IEXP2,SEXP
Broadcast message SEXP to nodes from IEXP1 to IEXP2 inclusive
BYE
Same as having the user type BYE from the command prompt
CALL SEXP
Load and execute PPE filename specified by SEXP
CDCHKOFF
Turn off carrier detect checking
CDCHKON
Turn on carrier detect checking
CHAT
Initiate SysOp chat mode
CLOSECAP
Close the capture file previously opened with OPENCAP
CLREOL
Clear to the end of the line, with the current color if in ANSI
mode
CLS
Clear the screen, with the current color if in ANSI mode
COLOR IEXP
Change the current color to IEXP
CONFFLAG IEXP1,IEXP2
Turn on the conference IEXP1 flags specified by IEXP2
CONFUNFLAG IEXP1,IEXP2
Turn off the conference IEXP1 flags specified by IEXP2
CONTINUE
Can be used to abort the current iteration of a WHILE or
FOR loop and resume with the next iteration of the loop
COPY SEXP1,SEXP2
Copy the contents of one file SEXP1 to another file SEXP2.
DBGLEVEL IEXP
Set the debug level to IEXP
DEC VAR
Decrement the value of VAR
DEFCOLOR
Resets the current color to the system default
DELAY IEXP
Pause for IEXP clock ticks
(1 clock tick = approximately 1/18.2 second)
DELETE SEXP
Deletes the filename specified by SEXP (ERASE is a synonym)
DELUSER
Flags the current user record for deletion
DIR SEXP
Performs a file directory command, passing it SEXP as arguments
DISPFILE SEXP,IEXP
Display file SEXP with IEXP alternate file flags
(valid flags = GRAPH, SEC, LANG)
DISPSTR SEXP
Display file if SEXP is "%filename", execute PPE if SEXP is
"!filename", or display string SEXP
DISPTEXT IEXP1,IEXP2
Display PCBTEXT prompt IEXP1 using flags IEXP2
(valid flags = NEWLINE, LFBEFORE, LFAFTER, BELL, LOGIT,
LOGITLEFT)
DOINTR IEXP1,IEXP2,IEXP3,IEXP4,IEXP5,IEXP6,IEXP7,IEXP8,IEXP9,IEXP10
Generate interrupt number IEXP1 (0-255) with the following
register values:
AX = IEXP2
BX = IEXP3
CX = IEXP4
DX = IEXP5
SI = IEXP6
DI = IEXP7
FLAGS = IEXP8
DS = IEXP9
ES = IEXP10
DOWNLOAD SEXP1[,SEXP2,...]
Allow downloading files from PPL.
The string passed to DOWNLOAD is a list of commands in the
same format as what a user would type after a D or DB command.
If a file name for download is specified here it must be
downloadable according to the criteria established in the FSEC
and DLPATH.LST files. If it is necessary to download a file
not normally available via the FSEC and/or DLPATH.LST files the
FLAG statement may be used to force it into the list of files to
download.
DTROFF
Turn off the DTR signal
DTRON
Turn on the DTR signal
END
End PPE execution
FAPPEND IEXP1,SEXP,IEXP2,IEXP3
Use channel IEXP1 to open file SEXP in append mode with access
mode IEXP2 and share mode IEXP3
(valid channels = 0 - 7 [0 is used for script questionnaires])
(valid access modes = O_RD, O_WR, O_RW [should use O_RW])
(valid share modes = S_DN, S_DR, S_DW, S_DB)
FCLOSE IEXP
Close channel IEXP (accept channel -1 as the READLINE() function
'channel' and close it
FCREATE IEXP1,SEXP,IEXP2,IEXP3
Use channel IEXP1 to create and open file SEXP in access mode
IEXP2 and share mode IEXP3
(valid channels = 0 - 7 [0 is used for script questionnaires])
(valid access modes = O_RD, O_WR, O_RW [should use O_WR])
(valid share modes = S_DN, S_DR, S_DW, S_DB)
FDEFIN IEXP
Specify a default input file channel IEXP (used to speed up
file input)
FDEFOUT IEXP
Specify a default output file channel IEXP (used to speed up
file output)
FDGET VAR
Read a line from a channel, opened by FDEFIN and assign it to FAR
FDPUT SEXP[,SEXP...]
Write one or more SEXP out to a channel, opened by FDEFOUT
FDPUTPAD SEXP,IEXP
Write out SEXP, padding or truncating to length IEXP as needed,
to a channel, opened by FDEFOUT
FDREAD SEXP,IEXP
Read binary data of size IEXP in variable SEXP from a file opened
by FDEFIN
FDWRITE SEXP,IEXP
Write binary data SEXP with size IEXP to a file on a channel, opened
by FDEFOUT
FFLUSH channel
Flush a specified channels changes to disk
FGET IEXP,VAR
Read a line from channel IEXP and assign it to VAR
FLAG SEXP
Allow flagging files SEXP for download directly from a PPE.
Note that FLAG does not attempt to honor restrictions in the
FSEC and/or DLPATH.LST files. This allows you to flag up any
file desired. Remember to indicate the whole path & filename
(wilcards not allowed)
FOPEN IEXP1,SEXP,IEXP2,IEXP3
Use channel IEXP1 to open file SEXP in access mode IEXP2 and
share mode IEXP3
(valid channels = 0 - 7 [0 is used for script questionnaires])
(valid access modes = O_RD, O_WR, O_RW)
(valid share modes = S_DN, S_DR, S_DW, S_DB)
FOR VAR = IEXP1 TO IEXP2 [STEP IEXP3]
statement(s)
NEXT
FOR - Initializes a loop by assigning IEXP1 to VAR and
continuing while VAR <= IEXP2 (if IEXP3 >= 0) or VAR >= IEXP2
(if IEXP3 < 0) (TO is required to separate IEXP1 and IEXP2;
if STEP (optional) is not specified IEXP3 defaults to 1)
NEXT - Adds IEXP3 to VAR, transfers control to the closest FOR
statement, and marks the end of the FOR loop (ENDFOR and END
FOR are synonyms)
FORWARD IEXP
Move the cursor forward (to the right) IEXP columns without
going past column 80
FPUT IEXP,SEXP[,SEXP...]
Write one or more SEXP out to channel IEXP
FPUTLN IEXP[,SEXP[,SEXP...]]
Write zero or more SEXP out to channel IEXP and terminate with
a carriage return/line feed pair
FPUTPAD IEXP1,SEXP,IEXP2
Write out SEXP, padding or truncating to length IEXP2 as
needed, to channel IEXP1
FREAD IEXP1,SEXP,IEXP2
Read binary data of size IEXP2 in variable SEXP from a file with
channel IEXP1
FRESHLINE
If the cursor is not in column 1, do a newline
FREWIND IEXP
Rewind channel IEXP after flushing buffers and committing the
file to disk.
FSEEK IEXP1,IEXP2,IEXP3bytes,position
Start seek from IEXP3 to any random location (+/-IEXP2) within a
file on channel IEXP1.
(SEEK_SET (0) for the beginning of the file, SEEK_CUR (1) for
the current file pointer location, SEEK_END (2) for the end of
the file)
FWRITE IEXP1,SEXP,IEXP2
Write binary data SEXP with size IEXP2 to a file on channel IEXP1
GETALTUSER IEXP
Get the information for an alternate user. It will fill the user
variables with information from the specified user record IEXP as
well as redirect user statements and functions.
If an attempt is made to get a record number that doesn't exist,
the user functions will revert to the current user and the user
variables will be invalidated as though no GETUSER/GETALTUSER
statement had been issued (though they will continue to maintain
any value held). PUTUSER/PUTALTUSER should be issued to commit any
variable changes to the user record. Additionally, there is at
least one statement that will not affect alternate users: ADJTIME.
It is restricted to the current user online. Also, if the
alternate user is online, changes to the record won't take hold
until after the user has logged off. Also, if there is not enough
memory available (primarily for the last message read pointers)
this statement will fail.
FDPUTLN [SEXP[,SEXP...]]
Write zero or more SEXP out to a channel, opened by FDEFOUT and
terminate with a carriage return/line feed pair
GETTOKEN VAR
Get a token from a previous call to tokenize and assign
it to VAR
GETUSER
Fill the predefined variables (U_...) with current information
from the user record
GOSUB LABEL
Transfer control to LABEL, marking the current PPE location for
a future RETURN statement (GO SUB is a synonym)
GOTO LABEL
Transfer control to LABEL (GO TO is a synonym)
GOODBYE
Same as having the user type G from the command prompt
HANGUP
Hangup on the user without any notification
IF (BEXP) statement ...
Evaluate BEXP and, if true, execute statement; otherwise skip
to the next statement
IF (BEXP) THEN
statement(s)
ELSEIF (BEXP) THEN
statement(s)
ELSE
statement(s)
ENDIF
IF - If expression cond is TRUE then this statement transfers
control to the statement(s) following it, otherwise control
is tranferred to the next ELSEIF, ELSE or ENDIF statement
(requires THEN [or DO] after the condition)
ELSEIF - (optional) If expression cond is TRUE then this
statement transfers control to the statements following it,
otherwise control is tranferred to the next ELSEIF, ELSE or
ENDIF statement (There may be multiple ELSEIF statements
between the IF and ELSE statements (ELSE IF is a synonym;
nothing is required to come after the condition, although
THEN [or DO] may appear for clarification and consistency in
the source code)
ELSE - (optional) Separates the false portion of an IF/ELSEIF
statement from the true portion
ENDIF - Ends an IF/ELSEIF/ELSE statement block (END IF is a
synonym)
FREALTUSER
Deallocates alternate user information and gets the information
for the current caller. GETALTUSER must allocate memory to hold
the alternate user information. FREALTUSER is used to free up
that memory for other processes. Additionally, the MESSAGE
statement needs to use alternate user information as well and can't
if the PPE is already using it. So this statement is necessary if
a MESSAGE statement needs to be used after a GETALTUSER pair.
INC VAR
Increment the value of VAR
INPUT SEXP,VAR
Display SEXP and get input from user, assigning it to VAR
(60 characters maximum)
INPUTCC SEXP,VAR,IEXP
Display SEXP in color IEXP and get a credit card formatted
string from the user, assigning it to VAR
(16 characters maximum, valid characters 0-9)
INPUTDATE SEXP,VAR,IEXP
Display SEXP in color IEXP and get a date formatted string from
the user, assigning it to VAR
(8 characters maximum, valid characters 0-9 - /)
INPUTINT SEXP,VAR,IEXP
Display SEXP in color IEXP and get an integer formatted string
from the user, assigning it to VAR
(11 characters maximum, valid characters 0-9)
INPUTMONEY SEXP,VAR,IEXP
Display SEXP in color IEXP and get a money formatted string
from the user, assigning it to VAR
(13 characters maximum, valid characters 0-9 $ .)
INPUTSTR SEXP1,VAR,IEXP1,IEXP2,SEXP2,IEXP3
Display SEXP1 in color IEXP1 and get a string (maximum length
IEXP2, valid characters SEXP2, flags IEXP3) from the user,
assigning it to VAR
(valid length = 1-256)
(valid characters = any string)
(valid flags = ECHODOTS, FIELDLEN, GUIDE, UPCASE, STACKED,
ERASELINE, NEWLINE, LFBEFORE, LFAFTER, WORDWRAP, NOCLEAR,
HIGHASCII, AUTO, YESNO)
INPUTTEXT SEXP,VAR,IEXP1,IEXP2
Display SEXP in color IEXP1 and get a string (maximum length
IEXP2) from the user, assigning it to VAR
INPUTTIME SEXP,VAR,IEXP
Display SEXP in color IEXP and get a time formatted string from
the user, assigning it to VAR
(8 characters maximum, valid characters 0-9 :)
INPUTYN SEXP,VAR,IEXP
Display SEXP in color IEXP and get a yes/no response from
the user, assigning it to VAR
(1 characters maximum, valid characters determined by language)
JOIN SEXP
Performs a join conference command, passing it SEXP as
arguments
KBDCHKOFF
Turn off keyboard time out checking
KBDCHKON
Turn on keyboard time out checking
KBDFILE SEXP
Stuff the keyboard buffer with the contents of file SEXP
KBDFLUSH
Flush the local keyboard buffer and any stuffed keystroke buffers.
KBDSTRING SEXP
Stuff the keyboard buffer with the contents of SEXP with
'keystrokes' echoed to the display
KBDSTUFF SEXP
Stuff the keyboard buffer with the contents of SEXP
KEYFLUSH
Flush both the local buffers and the incoming modem buffer.
LANG IEXP
Changes the language (Number IEXP) in use by the current user
LASTIN IEXP
Set the users last conference in value IEXP. It can be used
during the logon process to force the user into a particular
conference at start up (for example, from a logon script).
LET VAR = EXP
Evaluate expression EXP, convert and assign to VAR
(NOTE: LET is the only optional keyword. If no keyword is
found, LET is assumed. There are certain circumstances where
it may be required, such as assignment to a variable named the
same as a statement (PRINT, for example, would require a line
such as LET PRINT = TRUE instead of just PRINT = TRUE)
LOG SEXP,BEXP
Write string SEXP to the callers log, left justified if BEXP is
TRUE
1
LOOP
Can be used to abort the current iteration of a WHILE or FOR loop
and resume with the next iteration of the loop (alias for CONTINUE)
MDMFLUSH
Flush the incoming modem buffer
MESSAGE IEXP,SEXP1,SEXP2,SEXP3,SEXP4,DEXP,BEXP1,BEXP2,SEXP5
Write a message in conference IEXP, to user SEXP1 (empty string
defaults to current caller), from user SEXP2 (empty string
defaults to current caller), subject SEXP3, security in SEXP4
(N or R; N is the default), pack out date in DEXP (0 for no
pack out date), BEXP1 TRUE if return receipt desired, BEXP2
TRUE if message should be echoed, and SEXP5 is the filename to
use for the message text
MORE
Displays a MORE? prompt
MOUSEREG IEXP1,IEXP2,IEXP3,IEXP4,IEXP5,IEXP6,IEXP7,BOOLEAN1,BOOLEAN2,SEXP
Sets up a RIP mouse region on the remote terminal
IEXP1 = Is the RIP region number
IEXP2,IEXP3 = The (X,Y) coordinates of the upper-left of the region
IEXP4,IEXP5 = The (X,Y) coordinates of the lower-right of the region
IEXP6 = The width of each character in pixels
IEXP7 = The height of each character in pixels
BOOLEAN1 = A boolean flag (TRUE to invert the region when clicked)
BOOLEAN2 = A boolean flag (TRUE to clear and full screen the text window)
SEXP = Text that the remote terminal should transmit when the region
is clicked
MPRINT SEXP[,SEXP...]
Display one or more string expressions on the callers screen
only (this statement does not send anything to the BBS screen)
MPRINTLN [SEXP[,SEXP...]]
Display zero or more string expressions on the callers screen
only and follow with a newline (this statement does not send
anything to the BBS screen)
NEWLINE
Write a newline to the display
NEWLINES IEXP
Write IEXP newlines to the display
OPENCAP SEXP,VAR
Open SEXP and capture all screen output to it. If an error
occurs creating or opening SEXP, VAR is set to TRUE, otherwise
VAR is set to FALSE.
OPTEXT SEXP
Writes string SEXP into the @OPTEXT@ macro
PAGEOFF
Turn off the SysOp paged indicator (flashing p on status line)
PAGEON
Turn on the SysOp paged indicator (flashing p on status line)
POKEB IEXP1,IEXP2
Assign the value IEXP2 (0-255) to memory address IEXP1
(POKE is a synonym)
POKEDW IEXP1,IEXP2
Assign the value IEXP2 (-2147483648 - +2147483647) to memory
address IEXP1
POKEW IEXP1,IEXP2
Assign the value IEXP2 (0-65535) to memory address IEXP1
POP VAR[,VAR...]
Pop values (previously pushed onto the stack) into a list of
variables
PRFOUND
Display one or more string expressions. If the last SEARCHFIND
statement resulted in a match, it will automatically highlight
found words.
PRFOUNDLN
Display zero or more string expressions and follow with a newline.
If the last SEARCHFIND statement resulted in a match, it will
automatically highlight found words.
PRINT SEXP[,SEXP...]
Display one or more string expressions
PRINTLN [SEXP[,SEXP...]]
Display zero or more string expressions and follow with a
newline
PROMPTSTR IEXP1,VAR,IEXP2,SEXP,IEXP3
Display PCBTEXT entry IEXP1 and get a string (maximum length
IEXP2, valid characters SEXP, flags IEXP3) from the user,
assigning it to VAR
(valid length = 1-256)
(valid characters = any string)
(valid flags = ECHODOTS, FIELDLEN, GUIDE, UPCASE, STACKED,
ERASELINE, NEWLINE, LFBEFORE, LFAFTER, WORDWRAP, NOCLEAR,
HIGHASCII, AUTO, YESNO)
PUSH EXP[,EXP...]
Push a list of evaluated expressions onto the stack
PUTALTUSER
Write the information from the predefined variables (U_...) to
the user alias record if a successful GETUSER or GETALTUSER was
issued previously.
PUTUSER
Write the information from the predefined variables (U_...) to
the user record if a successful GETUSER or GETALTUSER was issued
previously.
REDIM
Dynamically redimension an array at run-time. To use it you must
declare the array in advance with the number subscripts desired.
This allows the compiler to perform it's standard error checking
on subscripts. For example:
STRING s(1,1,1)
REDIM s,5,5,5
LET s(4,4,4) = "Hello, World!"
PRINTLN s(4,4,4)
If an attempt is made to redimension an array with a different number
of dimensions, an error or warning (as appropriate) will be generated.
QUEST IEXP
Do script questionnaire IEXP
QUIT
Can be used to break out of a WHILE or FOR loop without the
use of a GOTO statement (alias for BREAK)
RDUNET IEXP
Read information from USERNET.XXX for node IEXP
RDUSYS
Reads a USERS.SYS file, if present, and updates the users
record
RENAME SEXP1,SEXP2
Rename file SEXP1 to SEXP2
RESETDISP
Reset the display after an user abort
RESTSCRN
Restore the screen from the buffer previously saved with
SAVESCRN
RETURN
Return to the statement after the last GOSUB or, if no GOSUB is
waiting for a RETURN, END the PPE
SAVESCRN
Save the current screen in a buffer for later restoration with
the RESTSCRN
SCRFILE IEXP,SEXP
Finds a file name and line number that is currently on the screen
IEXP = Should be set before calling to the line number to start
searching on (1 is the top line); Will be set to the line
number where the file name was found or 0 if no file name
was found
SEXP = Will be set to the file name if one is found on screen
SEARCHFIND EXP,BOOLEAN
Searchs with BOYER-MOORE a text buffer using EXP criteria (BOOLEAN=
TRUE if EXP contains the search criteria)
SEARCHINIT SEXP,BOOLEAN
Initializes search parameters SEXP (|& are valid) for a faster
BOYER-MOORE search algorithm (BOOLEAN=TRUE for case sensitive)
SEARCHSTOP
Clears out previously entered search criteria
SENDMODEM SEXP
Send the text in SEXP out to the modem
SHELL BEXP,VAR,SEXP1,SEXP2
Shell (via COMMAND.COM if BEXP is TRUE) to program/command
SEXP1 with arguments SEXP2, saving the return value in VAR
(NOTE: If BEXP is TRUE, the value assigned to VAR will be the
return code of COMMAND.COM, not SEXP1)
SHOWOFF
Turns off display of information to the screen
SHOWON
Turns on display of information to the screen
SORT EXP,IEXP
Sorts the contents of an array EXP into a pointer array IEXP
SOUND IEXP
Turn on the BBS PC speaker at the frequency (1-65535) specified
by IEXP (or turn it off if the frequency is 0)
SPRINT SEXP[,SEXP...]
Display one or more string expressions on the BBS screen only
(this statement does not send anything to the modem)
SPRINTLN [SEXP[,SEXP...]]
Display zero or more string expressions on the BBS screen only
and follow with a newline (this statement does not send
anything to the modem)
STARTDISP IEXP
Start display monitoring in mode IEXP
(valid modes = NC, FNS, FCL)
STOP
Abort PPE execution without appending answers (channel 0) to
the answer file
TOKENIZE SEXP
Tokenize string SEXP into individual items separated by
semi-colons or spaces
TPACGET SEXP,VAR,IEXP
Get information from a named TPA SEXP for a specified conference
IEXP in string format VAR
TPACPUT SEXP,VAR,IEXP
Put information to a named TPA SEXP for a specified conference IEXP
in string format VAR
TPACREAD SEXP,VAR,IEXP
Get information VAR from a named TPA SEXP for a specified conference
IEXP
TPACWRITE SEXP,VAR,IEXP
Put information VAR to a named TPA SEXP for a specified conference
IEXP
TPAGET SEXP,VAR
Get static information from a named TPA SEXP in string format VAR
TPAPUT SEXP,VAR
Put static information to a named TPA SEXP in string format VAR
TPAREAD SEXP,VAR
Get static information VAR from a named TPA SEXP
TPAWRITE SEXP,VAR
Put static information VAR to a named TPA SEXP
VARADDR VAR1,VAR2
Assign the address (segment and offset) of VAR1 to VAR2
VAROFF VAR1,VAR2
Assign the offset address of VAR1 to VAR2
VARSEG VAR1,VAR2
Assign the segment address of VAR1 to VAR2
WAIT
Displays a PRESS ENTER TO CONTINUE? prompt
WAITFOR SEXP,VAR,IEXP
Wait up to IEXP seconds for the string SEXP, assigned TRUE to
VAR if the string is found in the time specified or FALSE if
the string is not found (WAIT FOR is a synonym)
WHILE (BEXP) statement ...
While BEXP is true execute statement; when BEXP is false
execute following statements
WHILE (BEXP) DO
statement(s)
ENDWHILE
WHILE - While BEXP is true execute statement(s); when BEXP is
false transfer control to the first statement following the
ENDWHILE statement (requires DO [or THEN] after the
expression)
ENDWHILE - Transfers control to the closest WHILE statement and
marks the end of the WHILE loop (END WHILE is a synonym)
WRUNET IEXP,SEXP1,SEXP2,SEXP3,SEXP4,SEXP5
Write information to USERNET.XXX for node IEXP, where SEXP1 is
the new node status, SEXP2 is the new node user name, SEXP3 is
the new node city, SEXP4 is the new node operation text, and
SEXP5 is broadcast text
WRUSYS
Writes (creates) a USERS.SYS file which can be used by a
SHELLed application
WRUSYSDOOR SEXP
Write a USERS.SYS file with a TPA record for a DOOR application SEXP