home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / BBS / POWPP200.ZIP / POWERPPL.200 / PPHLP.HLP (.txt) < prev    next >
Borland Turbo Vision Help  |  1994-12-30  |  166KB  |  3,162 lines

  1. FBHFU
  2. THelpTopic
  3.   Power PPL 2.0 General Help
  4.   File
  5. Editor
  6.   Calculator
  7.   Calendar
  8.   Ascii
  9. Table
  10.   Message
  11. Window
  12.   PPL
  13. Reference
  14. Index
  15. THelpTopic    
  16.   Compiler Options
  17. There are two options for the compiler : 
  18.  Array Dimension Checking
  19. This option allow the compiler to check for mistakes when using the statement REDIM. for example : =
  20.        DIM TABLE(5,5,5)
  21.        ...
  22.        REDIM TABLE,10,10
  23. This will generate an error unless Array Dimension Checking has been disabled. 
  24.  User Variable Generation
  25. This allow the PPE to generate the user variables when starting... disable this option if you don't want to have the work done... {
  26. Usually, there is no need to change anything here... both options may be checked unless you have reasons to changed that. 
  27. THelpTopic
  28.   The File Editor
  29. The File Editor allows you to edit your .PPS files... '
  30. here are the keys that you may press: 
  31.   Up         Move up one line
  32.   Down       Move down one line
  33.   Right      Move right one column
  34.   Left       Move left one column
  35.   PgUp       Move one page up
  36.   PgDn       Move one page down
  37.   Home       Move right most column of line
  38.   End        Move left most column of line
  39.   Ctrl-Right Move right one word
  40.   Ctrl-Left  Move left one word
  41.   Ctrl-PgUp  Move to top of text
  42.   Ctrl-PgDn  Move to bottom of text
  43. You can use blocks to move/delete/replace any block of text... simply hold the Shift key pressed and press: $
  44.   Up         Resize the block one line up
  45.   Down       Resize the block one line down
  46.   Right      Resize the block one column right
  47.   Left       Resize the block one column left
  48.   PgUp       Resize the block one page up
  49.   PgDn       Resize the block one page down
  50.   Home       Resize the block to right most column of line
  51.   End        Resize the block to left most column of line
  52.   Ctrl-Right Resize the block to next word
  53.   Ctrl-Left  Resize the block to previous word
  54.   Ctrl-PgUp  Resize the block to bottom of text
  55.   Ctrl-PgDn  Resize the block to end of text
  56.   Del        Delete the block (the block is lost, unless UNDO is pressed)
  57.   Shift-Del  Put the block in the current buffer and delete it
  58.   Shift-Ins  Fill the block with the current buffer
  59.   Ctrl-Ins   Put the block in the current buffer
  60. The File editor can be resized and moved using the Windows menu or the mouse. W
  61. It is possible to open many File Editors at a time, just open a file or create one... 
  62. THelpTopic
  63.   Calculator
  64. A calculator is very usefull when programming... you can have many calculators opened at a time, calculating different things... 
  65. The calculator is a simple four-function calculator with add, subtract, multiply, and divide.  To operate the calculator you can either use the keyboard or press the buttons on the calculator with the mouse.  The 'C' key clears the calculator, the '
  66. ' key will erases the last character typed, and the '
  67. ' key toggles the value from positive to negative (the keyboard equivalent of '
  68. ' is '_'). 
  69. THelpTopic
  70.   Message Window
  71. The Message Window is here to show you the result of the compilation procedure. Here are shown the line number of your errors or simply the confirmation of a perfect compilation, so you know you're the best PPL programmer all over the world <grin!> 
  72. THelpTopic
  73.   Calendar
  74. The calendar displays the current month, highlighting todays date. The next and previous months can be viewed using the '+' or '-' keys respectivly.  The mouse can also be used to change the month by pressing the 
  75.  icons. 
  76. THelpTopic
  77.   ASCII Table
  78. An Ascii table is REALLY usefull when programming... we never know what's the code of the '
  79. ' character for exemple... j
  80. The ASCII table displays the entire IBM PC character set.  The current character is marked by a blinking block cursor, and the hexadecimal and decimal ASCII values of the character are displayed below the chart. A new character is selected by pressing it on the keyboard, by clicking the mouse on it in the chart, or by moving the cursor using the cursor keys. 
  81. THelpTopic
  82.   PCBoard Programming Language Reference Index
  83.    PPL
  84. Source
  85. Syntax
  86.    Data
  87. Types
  88.    Constants
  89.    Predifined
  90. Variables
  91.    Predifined
  92. Constants
  93.    Message
  94. Header
  95. Constants
  96.    Expression
  97. Operators
  98.    Accounting
  99. features
  100.    DBase
  101. features
  102.    @Xnn
  103. Color
  104. codes
  105.    Compiler
  106. Options
  107.    Compiler
  108. Directives
  109.                
  110.  Functions & Statements 
  111.    Functions
  112. Statements
  113. A Functions
  114. Statements
  115.    Functions
  116. Statements
  117. C Functions
  118. Statements
  119.    Functions
  120. Statements
  121. E Functions
  122. Statements
  123.    Functions
  124. Statements
  125. G Functions
  126. Statements
  127.    Functions
  128. Statements
  129. I Functions
  130. Statements
  131.    Functions
  132. Statements
  133. K Functions
  134. Statements
  135.    Functions
  136. Statements
  137. M Functions
  138. Statements
  139.    Functions
  140. Statements
  141. O Functions
  142. Statements
  143.    Functions
  144. Statements
  145. Q Functions
  146. Statements
  147.    Functions
  148. Statements
  149. S Functions
  150. Statements
  151.    Functions
  152. Statements
  153. U Functions
  154. Statements
  155.    Functions
  156. Statements
  157. W Functions
  158. Statements
  159.    Functions
  160. Statements
  161. THelpTopic
  162.   Functions & Statements - A
  163.   Abort
  164.   Abs
  165.   Account
  166.   ActMsgNum
  167.   AdjBytes
  168.   AdjDBytes
  169.   AdjTBytes
  170.   AdjTFiles
  171.   AdjTime
  172.   Alias
  173.   And
  174.   AnsiOn
  175.   AnsiPos
  176.   Append
  177.   Asc
  178. THelpTopic
  179.   Function & Statements - B
  180.   B2w
  181.   Backup
  182.   BitClear
  183.   BitSet
  184.   Blt
  185.   Break
  186.   Broadcast
  187.   Bye
  188. THelpTopic
  189.   Function & Statements - C
  190.   Call
  191.   CallID
  192.   CallNum
  193.   Carrier
  194.   CcType
  195.   CdCheckOff
  196.   CdCheckOn
  197.   CdOn
  198.   Chat
  199.   ChatStat
  200.   Chr
  201.   CloseCap
  202.   ClrEol
  203.   Cls
  204.   Color
  205.   ConfAlias
  206.   ConfExp
  207.   ConfFlag
  208.   ConfMw
  209.   ConfReg
  210.   ConfSel
  211.   ConfSys
  212.   ConfUnFlag
  213.   Continue
  214.   Copy
  215.   Crc32
  216.   CurColor
  217.   CurConf
  218.   CurSec
  219.   CurUser
  220. THelpTopic
  221.   Function & Statements - D
  222.   Date
  223.   Day
  224.   DbgLevel
  225.   Dec
  226.   Declare
  227.   DefAns
  228.   DefColor
  229.   Delay
  230.   Delete
  231.   DelUser
  232.   Dir
  233.   DispFile
  234.   DispStr
  235.   DispText
  236.   DNext
  237.   DoIntr
  238.   Dow
  239.   Download
  240.   DriveSpace
  241.   DtrOff
  242.   DtrOn
  243. THelpTopic
  244.   Function & Statements - E
  245.   End
  246.   ErrorCorrect
  247.   EvtTimeAdj
  248.   Exist
  249. THelpTopic
  250.   Function & Statements - F
  251.   FAppend
  252.   FClose
  253.   FCloseAll
  254.   FCreate
  255.   FDefIn
  256.   FDefOut
  257.   FDGet
  258.   FDPut
  259.   FDPutLn
  260.   FDPutPad
  261.   FDRead
  262.   FDWrite
  263.   Ferr
  264.   FFlush
  265.   FGet
  266.   FileInf
  267.   Flag
  268.   FlagCnt
  269.   FmtCC
  270.   FmtReal
  271.   FNext
  272.   FOpen
  273.   ForNext
  274.   Forward
  275.   FPut
  276.   FPutLn
  277.   FPutPad
  278.   FRead
  279.   FReAltUser
  280.   FreshLine
  281.   FRewind
  282.   FSeek
  283.   Function
  284.   FWrite
  285. THelpTopic
  286.   Function & Statements - G
  287.   GetAltUser
  288.   GetEnv
  289.   GetToken
  290.   GetUser
  291.   GetX
  292.   GetY
  293.   Goodbye
  294.   GoSub
  295.   GoTo
  296.   GrafMode
  297. THelpTopic
  298.   Function & Statements - H
  299.   Hangup
  300.   HelpPath
  301.   HiConfNum
  302.   HiMsgNum
  303.   Hour
  304. THelpTopic
  305.   Function & Statements - I
  306.   I2s
  307.   IfThen
  308.   InBytes
  309.   Inc
  310.   Inkey
  311.   Input
  312.   InputCC
  313.   InputDate
  314.   InputInt
  315.   InputMoney
  316.   InputStr
  317.   InputText
  318.   InputTime
  319.   InputYN
  320.   Instr
  321.   IsBitSet
  322.   IsNonStop
  323. THelpTopic
  324.   Function & Statements - J
  325.   Join
  326. THelpTopic
  327.   Function & Statements - K
  328.   KbdBufSize
  329.   KbdChkOff
  330.   KbdChkOn
  331.   KbdFile
  332.   KbdFileUsed
  333.   KbdFlush
  334.   KbdString
  335.   KbdStuff
  336.   KeyFlush
  337.   KInkey
  338. THelpTopic
  339.   Function & Statements - L
  340.   Lang
  341.   LangExt
  342.   LastAns
  343.   LastIn
  344.   Left
  345.   Len
  346.   Let
  347.   Log
  348.   LoggedOn
  349.   LoMsgNum
  350.   Loop
  351.   Lower
  352.   Lprinted
  353.   Ltrim
  354. THelpTopic
  355.   Function & Statements - M
  356.   Mask_Alnum
  357.   Mask_Alpha
  358.   Mask_Ascii
  359.   Mask_File
  360.   Mask_Num
  361.   Mask_Path
  362.   Mask_Pwd
  363.   MaxNode
  364.   MdmFlush
  365.   MegaNum
  366.   Message
  367.   MGetByte
  368.   Mid
  369.   Min
  370.   MInkey
  371.   MinLeft
  372.   MinOn
  373.   Mixed
  374.   MkAddr
  375.   MkDate
  376.   Modem
  377.   Month
  378.   More
  379.   MouseReg
  380.   MPrint
  381.   MPrintLn
  382.   MsgToFile
  383. THelpTopic
  384.   Function & Statements - N
  385.   NewLine
  386.   NewLines
  387.   NoChar
  388.   Not
  389. THelpTopic
  390.   Function & Statements - O
  391.   OnLocal
  392.   OpenCap
  393.   Operators
  394.   OpText
  395.   OutBytes
  396. THelpTopic
  397.   Function & Statements - P
  398.   PageOff
  399.   PageOn
  400.   PageStat
  401.   PCBAccount
  402.   PcbAccStat
  403.   PcbDat
  404.   PcbMac
  405.   PcbNode
  406.   PeekB
  407.   PeekDW
  408.   PeekW
  409.   PokeB
  410.   PokeDW
  411.   PokeW
  412.   Pop
  413.   PPEName
  414.   PPEPath
  415.   PPLBufSize
  416.   PRFound
  417.   Print
  418.   PrintLn
  419.   Procedure
  420.   PromptStr
  421.   Psa
  422.   Push
  423.   PutAltUser
  424.   PutUser
  425. THelpTopic
  426.   Function & Statements - Q
  427.   Quest
  428.   Quit
  429.   QwkLimits
  430. THelpTopic
  431.   Function & Statements - R
  432.   Random
  433.   RdUnet
  434.   RdUsys
  435.   ReadLine
  436.   RecordUsage
  437.   ReDim
  438.   RegAh
  439.   RegAl
  440.   RegAx
  441.   RegBh
  442.   RegBl
  443.   RegBx
  444.   RegCf
  445.   RegCh
  446.   RegCl
  447.   RegCx
  448.   RegDh
  449.   RegDi
  450.   RegDl
  451.   RegDs
  452.   RegDx
  453.   RegEs
  454.   RegF
  455.   RegSi
  456.   Rename
  457.   Replace
  458.   ReplaceStr
  459.   ResetDisp
  460.   RestScrn
  461.   Return
  462.   Right
  463.   Rtrim
  464. THelpTopic
  465.   Function & Statements - S
  466.   S2i
  467.   SaveScrn
  468.   ScanMsgHdr
  469.   ScrFile
  470.   ScrText
  471.   SearchFind
  472.   SearchInit
  473.   SearchStop
  474.   Sec
  475.   Select
  476.   SendModem
  477.   SetEnv
  478.   SetLmr
  479.   Shell
  480.   ShowOff
  481.   ShowOn
  482.   ShowStat
  483.   SlPath
  484.   Sort
  485.   Sound
  486.   Space
  487.   SPrint
  488.   SPrintLn
  489.   StackAbort
  490.   StackErr
  491.   StackLeft
  492.   StartDisp
  493.   Stop
  494.   String
  495.   Strip
  496.   StripAtx
  497.   StripStr
  498.   Syntax
  499.   SysopSec
  500. THelpTopic
  501.   Function & Statements - T
  502.   TempPath
  503.   Time
  504.   TimeAP
  505.   ToDDate
  506.   TokCount
  507.   Tokenize
  508.   TokenStr
  509.   ToType
  510.   TPACGet
  511.   TPACPut
  512.   TPACRead
  513.   TPACWrite
  514.   TPAGet
  515.   TPAPut
  516.   TPARead
  517.   TPAWrite
  518.   Trim
  519. THelpTopic
  520.   Function & Statements - U
  521.   Un_City
  522.   Un_Name
  523.   Un_Oper
  524.   Un_Stat
  525.   Upper
  526.   UserAlias
  527.   U_Bdl
  528.   U_BdlDay
  529.   U_Bul
  530.   U_Fdl
  531.   U_Ful
  532.   U_InConf
  533.   U_LDate
  534.   U_LDir
  535.   U_Lmr
  536.   U_Logons
  537.   U_LTime
  538.   U_MsgRd
  539.   U_MsgWr
  540.   U_Name
  541.   U_PwdHist
  542.   U_PwdLc
  543.   U_PwdTc
  544.   U_RecNum
  545.   U_Stat
  546.   U_TimeOn
  547. THelpTopic
  548.   Function & Statements - V
  549.   ValCC
  550.   ValDate
  551.   ValTime
  552.   VarAddr
  553.   VarOff
  554.   VarSeg
  555.   Ver
  556. THelpTopic
  557.   Function & Statements - W
  558.   Wait
  559.   WaitFor
  560.   While
  561.   WrUnet
  562.   WrUsys
  563.   WrUsysDoor
  564. THelpTopic
  565.   Function & Statements - X
  566.   Xor
  567. THelpTopic
  568.   Function & Statements - Y
  569.   Year
  570.   YesChar
  571. THelpTopic
  572.   PPL SOURCE SYNTAX
  573. Each line of a PPL source file may contain none, one, some or all of the following sections: 5
  574. [KEYWORD ][EXPR|VAR][,EXPR|VAR][;|'][COMMENT TEXT] 9
  575. KEYWORD - A PPL statement used to accomplish some task. J
  576. EXPR    - A PPL expression which may contain VARs, CONSTs, and/or FUNCs. 9
  577. VAR     - A PPL variable with optional array subscript. 
  578. CONST   - A PPL constant. 0
  579. FUNC    - A PPL function that returns a value. >
  580. ;       - Used to start a comment.  Ignored by the compiler. >
  581. '       - Used to start a comment.  Ignored by the compiler. C
  582. *       - Used to start a comment if first character of the line. G
  583. COMMENT - Comment text following the ; or '. Ignored by the compiler. 
  584. if a line is blank or contains only a comment, it is skipped. if it contains a KEYWORD, that line is compiled into a tokenized format. If it doesn't contain a KEYWORD but some argument, it is assumed to be an assignement statement (LET). %
  585. 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. 
  586. Labels and variable names may now include the following characters in addition to A-Z, 0-9, and the _ (underscore) character: $ (dollar sign), @ (commercial at), # (pound sign), 
  587.  (cents), 
  588.  (british pound), 
  589.  (japanese yen) 
  590. 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 `
  591. A : (colon) character may be used to separate multiple logical lines on a single physical line 
  592. THelpTopic&
  593.   DATA TYPES
  594.         SYNTAX
  595. TYPE var[(dim[,dim[,dim]])][,var...] )
  596. PPL utilizes the following data types: 
  597.         BOOLEAN
  598. unsigned character (1 byte) 0 = FALSE, non-0 = TRUE 
  599.         DATE
  600. unsigned integer (2 bytes) PCBoard julian date (count of days since 1/1/1900) 
  601.         DDATE
  602. Signed long integer for julian date. DDATE is for use with DBase date fields. It holds a long integer for julian dates. When coerced to string type it is in the format CCYYMMDD or 19940527 !
  603.         INTEGER / SDWORD / LONG
  604. signed long integer (4 bytes) Range: -2,147,483,648 -> +2,147,483,647 
  605.         MONEY
  606. signed long integer (4 bytes) Range: -$21,474,836.48 -> +$21,474,836.47 
  607.         STRING
  608. 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 
  609.         TIME
  610. signed long integer (4 bytes) Count of seconds since midnight 
  611.         BIGSTR
  612. 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 (unlike STRING variables which may not) 
  613.         EDATE
  614. Julian date in earth date format Deals with dates formatted YYMM.DD Range:  Same as DATE 
  615.         REAL / FLOAT
  616. 4-byte floating point number Range:  +/-3.4E-38 - +/-3.4E+38 (7-digit precision) 
  617.         DREAL / DOUBLE
  618. 8-byte floating point number Range:  +/-1.7E-308 - +/-1.7E+308 (15-digit precision) $
  619.         UNSIGNED / DWORD / UDWORD
  620. 4-byte unsigned integer Range:  0 - 4,294,967,295 
  621.         BYTE / UBYTE
  622. 1-byte unsigned integer Range:  0 - 255 
  623.         WORD / UWORD
  624. 2-byte unsigned integer Range:  0 - 65,535 
  625.         SBYTE / SHORT
  626. 1-byte signed integer Range:  -128 - 127 
  627.         SWORD / INT
  628. 2-byte signed integer Range:  -32,768 - 32,767 
  629.         NOTES
  630.         
  631. 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. 
  632. THelpTopic
  633.   CONSTANTS
  634. PPL allows user defined constants in the following formats: 
  635.         $#.##
  636. A MONEY constant (dollar sign followed by optional dollars followed by decimal point followed by cents; # = 0-9) 
  637.         #h
  638. An INTEGER hexadecimal constant (# = 0-9 & A-F) 
  639.         #d
  640. An INTEGER decimal constant (# = 0-9) 
  641.         #o
  642. An INTEGER octal constant (# = 0-7) 
  643.         #b
  644. An INTEGER binary constant (# = 0-1) 
  645.         #
  646. An INTEGER constant (# = 0-9) 
  647.         "X"
  648. A STRING constant (X = any displayable text) 
  649.         @X##
  650. An INTEGER @X constant (# = 0-9 & A-F) 
  651. THelpTopicY
  652.   PREDEFINED CONSTANTS
  653. PPL predefines the following constants: 
  654.         AUTO = 2000h
  655. Parameter passed to INPUTSTR and PROMPTSTR statements (automatically press enter after 10 seconds of no user input) 
  656.         BELL = 800h
  657. Parameter passed to DISPTEXT statement (sound a bell when prompt displayed) 
  658.         CRC_FILE - CRC_STR
  659. These constants were added to avoid confusion when telling the function CRC32 what it is taking the CRC of. CRC_FILE tells CRC32 to calculate the CRC of the file contained within the string argument. CRC_STR tells CRC32 to calculate the CRC of the string argument itself. CRC_FILE has a value of 1 (TRUE) CRC_STR has a value of 0 (FALSE) 
  660.         CUR_USER = 0
  661. Parameter passed to CURUSER() 
  662.         DEFS = 0
  663. Parameter passed to various statements for default values 
  664.         ECHODOTS = 1h
  665. Parameter passed to INPUTSTR and PROMPTSTR statements (echo dots instead of user input) 
  666.         ERASELINE = 20h
  667. Parameter passed to INPUTSTR and PROMPTSTR statements (erase the current line when user presses enter) 
  668.         FALSE = 0
  669. BOOLEAN FALSE value 
  670.         FCL = 2
  671. Value passed to STARTDISP to force line counting display 
  672.         FIELDLEN = 2h
  673. Parameter passed to INPUTSTR and PROMPTSTR statements (displays parenthesis to show input field width if ANSI enabled) 
  674.         FNS = 1
  675. Value passed to STARTDISP to force non-stop display 
  676.         F_EXP = 2h
  677. Expired subscription access allowed flag for CONFFLAG and CONFUNFLAG 
  678.         F_MW = 10h
  679. Mail waiting flag for CONFFLAG and CONFUNFLAG 
  680.         F_REG = 1h
  681. Registered access allowed flag for CONFFLAG and CONFUNFLAG 
  682.         F_SEL = 4h
  683. Conference selected flag for CONFFLAG and CONFUNFLAG 
  684.         F_SYS = 8h
  685. Conference SysOp access flag for CONFFLAG and CONFUNFLAG 
  686.         GRAPH = 1h
  687. Parameter passed to DISPFILE statement to search for graphics specific files 
  688.         GUIDE = 4h
  689. Parameter passed to INPUTSTR and PROMPTSTR statements (displays parenthesis above current line if FIELDLEN used and ANSI not enabled) 
  690.         HIGHASCII = 1000h
  691. 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) 
  692.         LANG = 4h
  693. Parameter passed to DISPFILE statement to search for language specific files 
  694.         LFAFTER = 100h
  695. Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements (send an extra line feed after user presses enter) 
  696.         LFBEFORE = 80h
  697. Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements (send an extra line feed before prompt display) 
  698.         LOGIT = 8000h
  699. Parameter passed to DISPTEXT statement (log text to callers log) 
  700.         LOGITLEFT = 10000h
  701. Parameter passed to DISPTEXT statement (log text to callers log, forcing left justification) 
  702.         NC = 0
  703. Value passed to STARTDISP to not change display mode 
  704.         NEWLINE = 40h
  705. Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements (send a line feed after user presses enter) 
  706.         NOCLEAR = 400h
  707. Parameter passed to INPUTSTR and PROMPTSTR statements (don't clear field at first keypress regardless of ANSI) 
  708.         NO_USER = -1
  709. Parameter passed to CURUSER() 
  710.         O_RD = 0
  711. Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in read only mode 
  712.         O_RW = 2
  713. Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in read and write mode 
  714.         O_WR = 1
  715. Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in write only mode 
  716.         SEC = 2h
  717. Parameter passed to DISPFILE statement to search for security specific files 
  718.         STACKED = 10h
  719. Parameter passed to INPUTSTR and PROMPTSTR statements (allow semi-colons and spaces in addition to valid character set passed) 
  720.         S_DB = 3h
  721. Parameter passed to FCREATE/FOPEN/FAPPEND to deny read and write (both) access from other processes 
  722.         S_DN = 0h
  723. Parameter passed to FCREATE/FOPEN/FAPPEND to allow read and write (deny none) access from other processes 
  724.         S_DR = 1h
  725. Parameter passed to FCREATE/FOPEN/FAPPEND to deny read access from other processes 
  726.         S_DW = 2h
  727. Parameter passed to FCREATE/FOPEN/FAPPEND to deny write access from other processes 
  728.         TRUE = 1
  729. BOOLEAN TRUE value 
  730.         UPCASE = 8h
  731. Parameter passed to INPUTSTR and PROMPTSTR statements (force user input to upper case) 
  732.         WORDWRAP = 200h
  733. 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) 
  734.         YESNO = 4000h
  735. Parameter passed to INPUTSTR and PROMPTSTR statements (Only allow international yes/no responses) 
  736.         NO_USER = -1
  737. Return by GetUser - variables are currently undefined 
  738.         CUR_USER = 0
  739. Return by GetUser - User variables are for the current user "
  740.  See also : Predefined
  741. Variables
  742. THelpTopic5
  743.   PREDEFINED VARIABLES
  744. PPL predefines the following variables for user record access: 
  745.      BOOLEAN U_CLS
  746. Clear screen between messages status 
  747.      BOOLEAN U_DEF79
  748. 79 column message editor default 
  749.      BOOLEAN U_EXPERT
  750. Users current expert status 
  751.      BOOLEAN U_FSE
  752. Users full screen editor default 
  753.      BOOLEAN U_FSEP
  754. Prompt for full screen editor status 
  755.      BOOLEAN U_LONGHDR
  756. 6 line vs 4 line message header status 
  757.      BOOLEAN U_SCROLL
  758. Scroll multi-screen message status 
  759.      DATE U_EXPDATE
  760. The users subscription expiration date 
  761.      DATE U_PWDEXP
  762. The date that the users password expires and must be changed 
  763.      INTEGER U_EXPSEC
  764. The users expired security level 
  765.      INTEGER U_PAGELEN
  766. The users page length 
  767.      INTEGER U_SEC
  768. The users security level 
  769.      STK_LIMIT
  770. This constant was added so the PPL programmer could determine how close they are getting to the stack limit when using recursion. 
  771.      STRING U_ADDR(5)
  772. The users address information (if the SysOp has enabled address recording) 
  773.      Subscript 0 = First street line
  774.                1 = Second street line
  775.                2 = City
  776.                3 = State
  777.                4 = Zip
  778.                5 = Country
  779.      STRING U_ALIAS
  780. The users alias (if the SysOp has enabled alias use) 
  781.      STRING U_BDPHONE
  782. The users business/data phone number 
  783.      STRING U_CITY
  784. The users city/state information 
  785.      STRING U_CMNT1
  786. The users comment field 
  787.      STRING U_CMNT2
  788. The SysOps comment field 
  789.      STRING U_HVPHONE
  790. The users home/voice phone number 
  791.      STRING U_NOTES(4)
  792. Notes about the user (if the SysOp has enabled the note capability) $
  793.      Subscripts 0-4 hold lines 1-5
  794.      STRING U_PWD
  795. The users password 
  796.      STRING U_TRANS
  797. The users default transfer protocol 
  798.      STRING U_VER
  799. The users verification string (if the SysOp has enabled user verification) "
  800.  See also : Predefined
  801. Constants
  802. THelpTopic
  803.   EXPRESSION OPERATORS
  804. 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): Z
  805.      (  - Start sub-expression (also allows [ to be used)
  806.      )  - End sub-expression (also allows ] to be used)
  807.      ^  - Raise lvalue to the power of rvalue (also allows ** to be used)
  808.      *  - Multiply lvalue by rvalue
  809.      /  - Divide lvalue by rvalue
  810.      %  - Remainder of lvalue divided by rvalue
  811.      +  - Add rvalue to lvalue
  812.      -  - Subtract rvalue from lvalue
  813.      =  - Is lvalue equal to rvalue (also allows ==)
  814.      <> - Is lvalue not equal to rvalue (also allows != and ><)
  815.      <  - Is lvalue less than rvalue
  816.      <= - Is lvalue less than or equal to rvalue (also allows =<)
  817.      >  - Is lvalue greater than rvalue
  818.      >= - Is lvalue greater than or equal to rvalue (also allows =>)
  819.      !  - Logical not of rvalue
  820.      &  - Logical and of lvalue with rvalue (also allows &&)
  821.      |  - Logical or of lvalue with rvalue (also allows ||)
  822. THelpTopic
  823.   ABORT() :BOOLEAN
  824. Returns a flag indicating whether or not the user aborted the display of data via ^K/^X or answering no to a MORE? prompt 
  825. THelpTopic
  826.   ABS(var:integer) :INTEGER
  827. Returns the absolute value of "var" 
  828. THelpTopic
  829.   AND(var1:integer,var2:integer) :INTEGER
  830. Returns the bitwise and of two integer expressions 
  831.  See also : Or Xor Not
  832. THelpTopic
  833.   ANSION() :BOOLEAN
  834. Returns TRUE if the user has ANSI capabilities 
  835.  See also : OnLocal GrafMode
  836. THelpTopic
  837.   ASC(var:string) :INTEGER
  838. Returns the ASCII value (0-255) of the first character of "var" 
  839.  See also : Chr
  840. THelpTopic
  841.   B2W(var1:integer,var2:integer) :INTEGER
  842. Returns a word built from two byte sized values by the formula: 
  843.          (var1*0100h+var2)
  844. THelpTopic
  845.   CALLID() :STRING
  846. Returns the caller ID string 
  847. THelpTopic
  848.   CALLNUM() :INTEGER
  849. Returns the caller number of the current user. 
  850. THelpTopic
  851.   CARRIER() :INTEGER
  852. Returns the carrier speed as reported by the modem to PCBoard 
  853.  See also : ErrCorrect
  854. THelpTopic
  855.   CCTYPE(var:string) :STRING
  856. Returns the issuer of credit card number "var" !
  857.  See also : FmtCC InputCC ValCC
  858. THelpTopic
  859.   CDON() :BOOLEAN
  860. Returns TRUE if the carrier detect signal is on "
  861.  See also : CdCheckOn CdCheckOff
  862. THelpTopic
  863.   CHATSTAT() :BOOLEAN
  864. Return the current users chat availability status (TRUE means available, FALSE means unavailable). 
  865.  See also : PageStat
  866. THelpTopic
  867.   CHR(var:integer) :BIGSTR
  868. Returns a single character long string of the character represented by ASCII code "var" (0-255) 
  869.  See also : Asc
  870. THelpTopic
  871.   CONFREG(confNum:integer) :BOOLEAN
  872. Returns TRUE if users registered flag is set, FALSE otherwise u
  873.  See also : ConfSel  ConfSys ConfMw  CurConf   ConfExp CurConf
  874.            ConfFlag ConfUnFlag Join ConfAlias LastIn
  875. THelpTopic
  876.   CONFEXP(confNum:integer)
  877. Returns TRUE if users expired flag is set, FALSE otherwise 
  878. NOTE: h
  879. ConfReg() = FALSE & CONFEXP = TRUE, user locked out ConfReg() = TRUE  & CONFEXP = TRUE, user reg & exp 
  880.  See also : ConfSel  ConfSys    ConfMw CurConf   CurConf
  881.            ConfFlag ConfUnFlag Join   ConfAlias LastIn
  882.            ConfReg
  883. THelpTopic
  884.   CONFSEL(confNum:integer) :BOOLEAN
  885. Returns TRUE if user has selected the conference, FALSE otherwise 
  886.  See also : ConfSys  ConfMw     CurConf   ConfExp   CurConf
  887.            ConfFlag ConfUnFlag Join      ConfAlias LastIn
  888.            ConfReg
  889. THelpTopic
  890.   CONFSYS(confNum:integer) :BOOLEAN
  891. Returns TRUE if user has conference SysOp access, FALSE otherwise 
  892.  See also : ConfSel  ConfMw     CurConf   ConfExp   CurConf
  893.            ConfFlag ConfUnFlag Join      ConfAlias LastIn
  894.            ConfReg
  895. THelpTopic
  896.   CONFMW(confNum:integer) :BOOLEAN
  897. Returns TRUE if user has mail waiting in conference "confnum", FALSE otherwise 
  898.  See also : ConfSel  ConfSys    CurConf   ConfExp   CurConf
  899.            ConfFlag ConfUnFlag Join      ConfAlias LastIn
  900.            ConfReg
  901. THelpTopic
  902.   CURCOLOR() :INTEGER
  903. Returns the current color (0-255) in use by the ANSI driver 
  904.  See also : DefColor
  905. THelpTopic
  906.   CURCONF() :INTEGER
  907. Returns the current conference number 
  908.  See also : ConfSel  ConfSys ConfMw  ConfExp   CurConf
  909.            ConfFlag ConfUnFlag Join ConfAlias LastIn
  910.            ConfReg
  911. THelpTopic
  912.   CURSEC() :INTEGER
  913. Returns the users current security level 
  914.  See also : SysopSec
  915. THelpTopic
  916.   DATE() :DATE
  917. Returns todays date 
  918.  See also : Time
  919. THelpTopic
  920.   DAY(datevar:date) :INTEGER
  921. Returns the day of the month (1-31) of "datevar" 
  922.  See also : Month Year Dow
  923. THelpTopic
  924.   DBGLEVEL() :INTEGER
  925. Returns the debug level in effect /
  926.   DBGLEVEL dbg:integer
  927. Set the debug level to "dbg" 
  928. THelpTopic
  929.   DEFANS() :BIGSTR
  930. 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. 
  931.  See also : LastAns
  932. THelpTopic
  933.   DEFCOLOR() :INTEGER
  934. Returns the default color as specified in PCBSetup 
  935.   DEFCOLOR
  936. Resets the current color to the system default 
  937.  See also : CurColor
  938. THelpTopic
  939.   DOW(day:date) :INTEGER
  940. Returns the day of the week (0 = Sunday, 6 = Saturday) that "day" fell on 
  941.  See also : Date Month Year
  942. THelpTopic
  943.   ERRCORRECT() :BOOLEAN
  944. Returns TRUE if a session is determined to be error corrected (or FALSE for non-error corrected sessions). 
  945.  See also : Carrier
  946. THelpTopic
  947.   EVTTIMEADJ() :BOOLEAN
  948. 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. 
  949.  See also : AdjTime
  950. THelpTopic
  951.   EXIST(file:string) :BOOLEAN
  952. Returns a boolean TRUE value if the file "file" exists /
  953.  See also : Delete Copy Append FileInf Rename
  954. THelpTopic
  955.   FERR(channel:integer) :BOOLEAN
  956. Returns TRUE if a file access error occurred on channel "channel" since the file was opened or FERR was last called 
  957.  See also : FOpen
  958. THelpTopic
  959.   FILEINF(file:string,option:integer) :MULTITYPE
  960. Returns a piece of information (specified by "option") about the file "file" 
  961.  Valid values for "options": 1 = Return TRUE if file exists
  962.                              2 = Return file date stamp
  963.                              3 = Return file time stamp
  964.                              4 = Return file size
  965.                              5 = Return file attributes
  966.                                    01h = Read Only
  967.                                    02h = Hidden
  968.                                    04h = System
  969.                                    20h = Archive
  970.                              6 = Return file drive
  971.                              7 = Return file path
  972.                              8 = Return file base name
  973.                              9 = Return file extension
  974. Return value type is depending on the info requested. It may be BOOLEAN, DATE, INTEGER, STRING and TIME -
  975.  See also : Delete Copy Append Exist Rename
  976. THelpTopic
  977.   FMTCC(format:strinf) :STRING
  978. Returns a formatted credit card number based on "format"  
  979.  See also CcType ValCC InputCC
  980. THelpTopic
  981.   FMTREAL(realExp:real/dreal,fieldWidth:integer,decimalPlaces:integer)
  982. Formats REAL/DREAL values for display purposes. 
  983.        realExp       = A REAL/DREAL floating point expression
  984.        fieldWidth    = The minimum number of characters to display
  985.        decimalPlaces = The number of characters to display to the right of
  986.                        the decimal point
  987. THelpTopic
  988.   GETENV(var:string) :STRING
  989. Returns the value of the environment variable named by "var" 
  990. THelpTopic
  991.   GETTOKEN() :STRING
  992. 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) s
  993.   GETTOKEN VAR
  994.          Get a token from a previous call to Tokenize and assign
  995.          it to VAR
  996.  See also : Tokenize TokenStr TokCount
  997. THelpTopic
  998.   GETX() :INTEGER
  999. Returns the current column (X position) of the cursor on the display 
  1000.  See also : GetY AnsiPos
  1001. THelpTopic
  1002.   GETY() :INTEGER
  1003. Returns the current row (Y position) of the cursor on the display 
  1004.  See also : GetX AnsiPos
  1005. THelpTopic
  1006.   GRAFMODE() :STRING
  1007. Returns a character indicating the users graphics status 
  1008.         R = RIPscrip supported
  1009.         G = ANSI graphics (color and positioning) supported
  1010.         A = ANSI positioning (no color) supported
  1011.         N = No graphics (RIP or ANSI) supported
  1012.  See also : AnsiOn OnLocal
  1013. THelpTopic
  1014.   HELPPATH() :STRING
  1015. Returns the path, as specified in PCBSetup, to the help files %
  1016.  See also : PPEPath SlPath TempPath
  1017. THelpTopic
  1018.   HIMSGNUM() :INTEGER
  1019. Returns the high message number for the current conference. 
  1020.  See also : LoMsgNum
  1021. THelpTopic
  1022.   HOUR(dayhour:time) :INTEGER
  1023. Returns the hour of the day (0-23) of "dayhour" 
  1024.  See also : Min Sec
  1025. THelpTopic
  1026.   I2S(var1:integer,var2:integer) :STRING
  1027. Returns a string representing the integer value "var1" converted to base "var2" 
  1028.  See also : S2i String
  1029. THelpTopic
  1030.   INKEY() :STRING
  1031. Returns the next keypress as a single character long string, or a string with the name of the function or cursor control key $
  1032.  See also : KInkey MGetByte MInkey
  1033. THelpTopic
  1034.   INSTR(var1:bigstr,var2:bigstr) :INTEGER
  1035. Returns the position of "var2" in "var1" (1-LEN(var1)) or 0 if "var2" not in "var1" 
  1036. THelpTopic
  1037.   ISBITSET(var:multitype, bit:integer) :BOOLEAN
  1038. Check the status of a specified bit in a variable. 
  1039.    This function is primarily intended to be used with BIGSTR variables
  1040.    which can be up to 2048 bytes long.  However, it will work with other
  1041.    data types (and expressions) as well if desired.
  1042.  See also : BitSet BitClear
  1043. THelpTopic
  1044.   ISNONSTOP() :BOOLEAN
  1045. Return whether or not the display is currently in non-stop mode ( ie, did the user type NS as part of their command line) 
  1046.  See also : StartDisp
  1047. THelpTopic
  1048.   KBDBUFSIZE() :INTEGER
  1049. Return the number of key presses pending in the KbdString buffer p
  1050.  See also : PPLBufSize  KbdFlush KbdStuff KbdFile  KbdString
  1051.            KbdFileUsed MdmFlush KeyFlush KbdFlush
  1052. THelpTopic
  1053.   KBDFILEUSED() :BOOLEAN
  1054. Return TRUE if key presses are being stuffed via a KbdFile statement. s
  1055.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  1056.            MdmFlush    KeyFlush   KbdFlush KbdString
  1057. THelpTopic
  1058.   KINKEY() :STRING
  1059. 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 #
  1060.  See also : Inkey MInkey MGetByte
  1061. THelpTopic
  1062.   LANGEXT() :STRING
  1063. Returns the file extension for the users language selection 
  1064.  See also : Lang
  1065. THelpTopic
  1066.   LASTANS() :STRING
  1067. function to return the last answer accepted by an Input statement. 
  1068.  See also : DefAns
  1069. THelpTopic
  1070.   LEFT(var1:string,var2:integer) :BIGSTR
  1071. Returns the left-most "var2" characters of "var1" 
  1072.  See also : Right Mid
  1073. THelpTopic
  1074.   LEN(var:bigstr) :INTEGER
  1075. Returns the length of "var" 
  1076. THelpTopic
  1077.   LOGGEDON() :BOOLEAN
  1078. Returns TRUE if the user has already logged on to the BBS, FALSE otherwise 
  1079. THelpTopic
  1080.   LOMSGNUM() :INTEGER
  1081. Returns the low message number for the current conference. 
  1082.  See also : HiMsgNum
  1083. THelpTopic
  1084.   LOWER(var:bigstr) :BIGSTR
  1085. Returns a string of "var" with all uppercase characters converted to lowercase characters 
  1086.  See also : Upper Mixed
  1087. THelpTopic
  1088.   LPRINTED() :INTEGER
  1089. Return the number of lines printed on the display 
  1090.  See also : StartDisp
  1091. THelpTopic
  1092.   LTRIM(var1:bigstr,var2:string) :BIGSTR
  1093. Returns a string of "var1" with the first character of "var2" trimmed from the left 
  1094.  See also : Rtrim Trim
  1095. THelpTopic
  1096.   MASK_ALNUM() :STRING
  1097. Returns a valid character mask for input statements of A through Z, a through z, and 0 through 9 I
  1098.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Num Mask_Path Mask_Pwd
  1099. THelpTopic
  1100.   MASK_ALPHA() :STRING
  1101. Returns a valid character mask for input statements of A through Z and a through z I
  1102.  See also : Mask_Alnum Mask_Ascii Mask_File Mask_Num Mask_Path Mask_Pwd
  1103. THelpTopic
  1104.   MASK_ASCII() :STRING
  1105. Returns a valid character mask for input statements of space (" ") through tilde ("~") I
  1106.  See also : Mask_Alpha Mask_Alnum Mask_File Mask_Num Mask_Path Mask_Pwd
  1107. THelpTopic
  1108.   MASK_FILE() :STRING
  1109. Returns a valid character mask for input statements of file names J
  1110.  See also : Mask_Alpha Mask_Ascii Mask_Alnum Mask_Num Mask_Path Mask_Pwd
  1111. THelpTopic
  1112.   MASK_NUM() :STRING
  1113. Returns a valid character mask for input statements of 0 through 9 K
  1114.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Alnum Mask_Path Mask_Pwd
  1115. THelpTopic
  1116.   MASK_PATH() :STRING
  1117. Returns a valid character mask for input statements of path names J
  1118.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Num Mask_Alnum Mask_Pwd
  1119. THelpTopic
  1120.   MASK_PWD() :STRING
  1121. Returns a valid character mask for input statements of passwords K
  1122.  See also : Mask_Alpha Mask_Ascii Mask_File Mask_Num Mask_Path Mask_Alnum
  1123. THelpTopic
  1124.   MAXNODE() :INTEGER
  1125. Returns the maximum node possible with the current software (ie, /2 would return 2, /10 would return 10, etc) 
  1126.  See also : PcbNode
  1127. THelpTopic
  1128.   MEGANUM(number:integer)
  1129. Converts a decimal number (from 0 to 1295) to a hexa-tri-decimal number, or meganum. 
  1130. THelpTopic
  1131.   MGETBYTE() :INTEGER
  1132. Returns the value of the next byte from the modem (0-255) or -1 if there are no bytes waiting for input !
  1133.  See also : Inkey KInkey MInkey
  1134. THelpTopic
  1135.   MID(var1:bigstr,var2:integer,var3:integer) :BIGSTR
  1136. Returns a string from "var1" starting at the "var2" position of "var1" and containing "var3" characters of "var1" 
  1137.  See also : Right Left
  1138. THelpTopic
  1139.   MIN(var1:time) :INTEGER
  1140. Returns the minute of the hour (0-59) of "var1" 
  1141.  See also : Hour Sec
  1142. THelpTopic
  1143.   MINKEY() :STRING
  1144. 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 #
  1145.  See also : Inkey KInkey MGetByte
  1146. THelpTopic
  1147.   MINLEFT() :INTEGER
  1148. Returns the current callers minutes left to use online 
  1149.  See also : MinOn
  1150. THelpTopic
  1151.   MINON() :INTEGER
  1152. Returns the current callers minutes online so far this session 
  1153.  See also : MinLeft
  1154. THelpTopic
  1155.   MIXED(var1:string)
  1156. Converts a string to mixed (or proper name) case 
  1157.  See also : Upper Lower
  1158. THelpTopic
  1159.   MKADDR(seg:integer, off:integer) :INTEGER
  1160. Returns a segment:offset address as a long integer built from two word sized values by the formula: (var1*00010000h+var2) #
  1161.  See also : VarSeg VarOff VarAddr
  1162. THelpTopic
  1163.   MKDATE(year:integer, month:integer, day:integer) :DATE
  1164. Returns a date with the year specified by "year" (1900-2079), month specified by "month" (1-12), and day specified by "day" (1-31). 
  1165.  See also : Year Month Day
  1166. THelpTopic
  1167.   MODEM() :STRING
  1168. Returns the modem connect string as reported by the modem to PCBoard 
  1169.  See also : Carrier
  1170. THelpTopic
  1171.   MONTH(var1:date) :INTEGER
  1172. Returns the month of the year (1-12) of "var1" 
  1173.  See also : Year Day Dow
  1174. THelpTopic
  1175.   NOCHAR() :STRING
  1176. Returns the current language no character 
  1177.  See also : YesChar
  1178. THelpTopic
  1179.   NOT(var1:integer) :INTEGER
  1180. Returns the bitwise complement (all bits inverted) of an integer expression 
  1181.  See also : Or And Xor
  1182. THelpTopic
  1183.   ONLOCAL() :BOOLEAN
  1184. Returns TRUE if the user is on locally 
  1185.  See also : AnsiOn GrafMode
  1186. THelpTopic
  1187.   OR(var1:integer, var2:integer) :INTEGER
  1188. Returns the bitwise or of two integer expressions 
  1189.  See also Xor And Not
  1190. THelpTopic
  1191.   PAGESTAT() :BOOLEAN
  1192. Returns TRUE if the user has paged the SysOp (or PageOn has been issued), FALSE otherwise (or PageOff has been issued) 
  1193.  See also : ChatStat
  1194. THelpTopic
  1195.   PCBDAT() :STRING
  1196. Returns a string with the path and file name of PCBOARD.DAT 
  1197. THelpTopic
  1198.   PCBNODE() :INTEGER
  1199. Returns the node number 
  1200.  See also : MaxNode
  1201. THelpTopic
  1202.   PEEKB(var:integer) :INTEGER
  1203. Returns a byte value (0-255) located at memory address "var" (PEEK is a synonym) -
  1204.  See also : PeekDW PeekW PokeB PokeW PokeDW
  1205. THelpTopic
  1206.   PEEKDW(var:integer) :INTEGER
  1207. Returns a signed integer value (-2147483648 - +2147483647) located at memory address "var" ,
  1208.  See also : PeekB PeekW PokeB PokeW PokeDW
  1209. THelpTopic
  1210.   PEEKW(var:integer) :INTEGER
  1211. Returns a word value (0-65535) located at memory address "var" -
  1212.  See also : PeekDW PeekB PokeB PokeW PokeDW
  1213. THelpTopic
  1214.   PPENAME() :STRING
  1215. Returns the name of the currently executing PPE file minus the path and extension 
  1216.  See also : PPEPath
  1217. THelpTopic
  1218.   PPEPATH() :STRING
  1219. Returns a string with the path (no file name) of the currently executing PPE file 
  1220.  See also : PPEName
  1221. THelpTopic
  1222.   PPLBUFSIZE() :INTEGER
  1223. Returns the number of key presses pending in the KbdStuff buffer. o
  1224.  See also : KbdBufSize  KbdFlush KbdStuff KbdFile KbdString
  1225.            KbdFileUsed MdmFlush KeyFlush KbdFlush
  1226. THelpTopic
  1227.   PSA(var:integer) :BOOLEAN
  1228. Returns TRUE if the feature specified by "var" is enabled, FALSE if the feature specified by "var" is disabled n
  1229.          Valid values for var:   1 = Alias Support Enabled
  1230.                                  2 = Verify Support Enabled
  1231.                                  3 = Address Support Enabled
  1232.                                  4 = Password Support Enabled
  1233.                                  5 = Statistics Support Enabled
  1234.                                  6 = Notes Support Enabled
  1235.  See also : TPAGet
  1236. THelpTopic
  1237.   RANDOM(var:integer) :INTEGER
  1238. Returns a random number between 0 and "var" inclusive 
  1239. THelpTopic
  1240.   READLINE(file:string, line:integer) :STRING
  1241. Read and return line number "line" from file "file" 
  1242. THelpTopic
  1243.   REGAH() :INTEGER
  1244. Returns the value of the AH register after a DoIntr statement +
  1245.  See also : RegAl RegAx
  1246.            DoIntr
  1247. THelpTopic
  1248.   REGAL() :INTEGER
  1249. Returns the value of the AL register after a DoIntr statement +
  1250.  See also : RegAh RegAx
  1251.            DoIntr
  1252. THelpTopic
  1253.   REGAX() :INTEGER
  1254. Returns the value of the AX register after a DoIntr statement +
  1255.  See also : RegAh RegAl
  1256.            DoIntr
  1257. THelpTopic
  1258.   REGBH() :INTEGER
  1259. Returns the value of the BH register after a DoIntr statement +
  1260.  See also : RegBl RegBx
  1261.            DoIntr
  1262. THelpTopic
  1263.   REGBL() :INTEGER
  1264. Returns the value of the BL register after a DoIntr statement +
  1265.  See also : RegBh RegBx
  1266.            DoIntr
  1267. THelpTopic
  1268.   REGBX() :INTEGER
  1269. Returns the value of the BX register after a DoIntr statement +
  1270.  See also : RegBh RegBl
  1271.            DoIntr
  1272. THelpTopic
  1273.   REGCF() :BOOLEAN
  1274. Returns the state of the carry flag after a DoIntr statement $
  1275.  See also : RegF
  1276.            DoIntr
  1277. THelpTopic
  1278.   REGCH() :INTEGER
  1279. Returns the value of the CH register after a DoIntr statement +
  1280.  See also : RegCl RegCx
  1281.            DoIntr
  1282. THelpTopic
  1283.   REGCL() :INTEGER
  1284. Returns the value of the CL register after a DoIntr statement +
  1285.  See also : RegCh RegCx
  1286.            DoIntr
  1287. THelpTopic
  1288.   REGCX() :INTEGER
  1289. Returns the value of the CX register after a DoIntr statement +
  1290.  See also : RegCh RegCl
  1291.            DoIntr
  1292. THelpTopic
  1293.   REGDH() :INTEGER
  1294. Returns the value of the DH register after a DoIntr statement +
  1295.  See also : RegDl RegDx
  1296.            DoIntr
  1297. THelpTopic
  1298.  See also : DoIntr
  1299.   REGDI() :INTEGER
  1300. Returns the value of the DI register after a DoIntr statement 
  1301.  See also : DoIntr
  1302. THelpTopic
  1303.   REGDL() :INTEGER
  1304. Returns the value of the DL register after a DoIntr statement +
  1305.  See also : RegDh RegDx
  1306.            DoIntr
  1307. THelpTopic
  1308.   REGDS() :INTEGER
  1309. Returns the value of the DS register after a DoIntr statement 
  1310.  See also : DoIntr
  1311. THelpTopic
  1312.   REGDX() :INTEGER
  1313. Returns the value of the DX register after a DoIntr statement +
  1314.  See also : RegDh RegDl
  1315.            DoIntr
  1316. THelpTopic
  1317.   REGES() :INTEGER
  1318. Returns the value of the ES register after a DoIntr statement 
  1319.  See also : DoIntr
  1320. THelpTopic
  1321.   REGF() :INTEGER
  1322. Returns the value of the flags register after a DoIntr statement 
  1323. Seea also : RegCf 
  1324.             DoIntr
  1325. THelpTopic
  1326.   REGSI() :INTEGER
  1327. Returns the value of the SI register after a DoIntr statement 
  1328.  See also : DoIntr
  1329. THelpTopic
  1330.   REPLACE(str:bigstr, search:string, replace:string) :BIGSTR
  1331. Returns a string of "str" with all occurences of the first character of "search" replaced by the first character of "replace" 
  1332.  See also : ReplaceStr
  1333. THelpTopic
  1334.   REPLACESTR(str:bigstr, search:string, replace:string) :BIGSTR
  1335. It functions just like the Replace function except that a complete sub-string may be specified for both search and replace q
  1336.  str is the string to work on
  1337.  search is the string to search for
  1338.  replace is the string to replace search with
  1339.  See also : Replace
  1340. THelpTopic
  1341.   RIGHT(str:bigstr, len:integer) :BIGSTR
  1342. Returns the right-most "len" characters of "str" 
  1343.  See also : Left
  1344. THelpTopic
  1345.   RTRIM(str1:bigstr, trim:string) :BIGSTR
  1346. Returns a string of "str1" with the first character of "trim" trimmed from the right 
  1347.  See also : Ltrim
  1348. THelpTopic
  1349.   S2I(str:string, base:integer) :INTEGER
  1350. Returns an integer representing the string "str" converted from base "base" 
  1351.  See also : I2s
  1352. THelpTopic
  1353.   SCRTEXT(col:integer, row:integer, len:integer, code:boolean) :STRING
  1354. Returns a string with the text (and color information in the form of @X codes if "code" is TRUE) from column "col", row "row", and of length "len" 
  1355.  See also : ScrFile
  1356. THelpTopic
  1357.   SEC(var:time) :INTEGER
  1358. Returns the second of the minute (0-59) of "var" 
  1359.  See also : Hour Min
  1360. THelpTopic
  1361.   SHOWSTAT() :BOOLEAN
  1362. Returns TRUE if writing to the display is active, FALSE if writing to the display is disabled 
  1363.  See also : ShowOff ShowOn
  1364. THelpTopic
  1365.   SLPATH() :STRING
  1366. Returns the path, as specified in PCBSetup, to the login security files '
  1367.  See also : HelpPath PPEPath TempPath
  1368. THelpTopic
  1369.   SPACE(len:integer) :BIGSTR
  1370. Returns a string of spaces "len" characters long 
  1371. THelpTopic
  1372.   STRING(var:multitype) :STRING
  1373. Returns "var" converted to a string 
  1374.  See also : I2s
  1375. THelpTopic
  1376.   STRIP(str:bigstr, char:string) :BIGSTR
  1377. Returns a string of "str" with all occurrences of the first character of "char" removed 
  1378.  See also : StripAtx StripStr
  1379. THelpTopic
  1380.   STRIPATX(str:bigstr) :BIGSTR
  1381. Returns a string of "str" with all @X codes removed 
  1382.  See also : Strip StripStr
  1383. THelpTopic
  1384.   STRIPSTR(str:bigstr, search:string) :BIGSTR
  1385. Functions just like the Strip function except that a complete sub-string may be specified for search C
  1386.  str is the string to work on
  1387.  search is the string to search for
  1388.  See also : Strip StripAtx
  1389. THelpTopic
  1390.   SYSOPSEC() :INTEGER
  1391. Returns the SysOp security defined in PCBOARD.DAT 
  1392.  See also : CurSec
  1393. THelpTopic
  1394.   TEMPPATH() :STRING
  1395. Returns the path, as specified in PCBSetup, to the temporary work directory %
  1396.  See also : SlPath HelpPath PPEPath
  1397. THelpTopic
  1398.    TIME() :TIME
  1399. Returns the current time 
  1400.  See also : TimeAP Date
  1401. THelpTopic
  1402.   TIMEAP(var:time) :STRING
  1403. Returns a string representing the time "var" in civilian format (XX:XX:XX AM) 
  1404.  See also : Time
  1405. THelpTopic
  1406.   TOKCOUNT() :INTEGER
  1407. Returns the number of tokens available via the GetToken statement and/or function (
  1408.  See also : Tokenize GetToken TokenStr
  1409. THelpTopic
  1410.   TOKENSTR() :STRING
  1411. Returns a previously tokenized string reconstructed with semi-colons separating the component tokens (
  1412.  See also : Tokenize GetToken TokCount
  1413. THelpTopic
  1414.   TOtype(exp)
  1415. TOBOOLEAN, TOMONEY, TOSTRING, TOBIGSTR, TOINTEGER, TOUNSIGNED, TOREAL, TODREAL, TOFLOAT, TODOUBLE, TODATE, TOEDATE, TOTIME, TOBYTE, TOWORD, TODWORD, TOUBYTE, TOUWORD, TOUDWORD, TOSBYTE, TOSWORD, TOSDWORD, TOSHORT, TOINT, & TOLONG >
  1416. Used to force the result of an expression to a specific type )
  1417.      Usage:  TOtype(exp) (returns type)
  1418.              type is the actual type to force (BIGSTR, BOOLEAN, etc.)
  1419.              exp is an expression of any type
  1420.  See also : S2i I2s String
  1421. THelpTopic
  1422.   TRIM(str:bigstr, char:string) :BIGSTR
  1423. Returns a string of "str" with the first character of "char" trimmed from both ends 
  1424.  See also : Rtrim Ltrim
  1425. THelpTopic
  1426.   UPPER(str:bigstr) :BIGSTR
  1427. Returns a string of "str" with all lowercase characters converted to uppercase characters 
  1428.  See also : Lower Mixed
  1429. THelpTopic
  1430.   UN_CITY() :STRING
  1431. Returns a nodes city from USERNET.XXX after a RdUnet statement %
  1432.  See also : Un_Name Un_Oper Un_Stat
  1433. THelpTopic
  1434.   UN_NAME() :STRING
  1435. Returns a nodes user name from USERNET.XXX after a RdUnet statement %
  1436.  See also : Un_City Un_Oper Un_Stat
  1437. THelpTopic
  1438.   UN_OPER() :STRING
  1439. Returns a nodes operation text from USERNET.XXX after a RdUnet statement %
  1440.  See also : Un_City Un_Name Un_Stat
  1441. THelpTopic
  1442.   UN_STAT() :STRING
  1443. Returns a nodes status from USERNET.XXX after a RdUnet statement %
  1444.  See also : Un_City Un_Name Un_Oper
  1445. THelpTopic
  1446.   U_BDL() :INTEGER
  1447. Returns the current users number of bytes downloaded 
  1448.  See also : U_BdlDay  U_Bul    U_Fdl     U_Ful    U_InConf
  1449.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1450.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1451.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1452. THelpTopic
  1453.   U_BDLDAY() :INTEGER
  1454. Returns the current users number of bytes downloaded today 
  1455.  See also : U_Bdl     U_Bul    U_Fdl     U_Ful    U_InConf
  1456.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1457.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1458.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1459. THelpTopic
  1460.   U_BUL() :INTEGER
  1461. Returns the current users number of bytes uploaded 
  1462.  See also : U_Bdl     U_BdlDay U_Fdl     U_Ful    U_InConf
  1463.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1464.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1465.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1466. THelpTopic
  1467.   U_FDL() :INTEGER
  1468. Returns the current users number of files downloaded 
  1469.  See also : U_Bdl     U_BdlDay U_Bul     U_Ful    U_InConf
  1470.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1471.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1472.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1473. THelpTopic
  1474.   U_FUL() :INTEGER
  1475. Returns the current users number of files uploaded 
  1476.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_InConf
  1477.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1478.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1479.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1480. THelpTopic
  1481.   U_INCONF(record:integer, conf:integer) :BOOLEAN
  1482. Returns TRUE if user record number "record" is registered in conference "conf" 
  1483.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1484.            U_LDate   U_LDir   U_Lmr     U_Logons U_LTime
  1485.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1486.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1487. THelpTopic
  1488.   U_LDATE() :DATE
  1489. Returns the current users last date on the system 
  1490.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1491.            U_InConf  U_LDir   U_Lmr     U_Logons U_LTime
  1492.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1493.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1494. THelpTopic
  1495.   U_LDIR() :DATE
  1496. Returns the current users last directory scan date 
  1497.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1498.            U_InConf  U_LDate  U_Lmr     U_Logons U_LTime
  1499.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1500.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1501. THelpTopic
  1502.   U_LMR(confNum:integer) :INTEGER
  1503. function to return the number of the last message read for the specified conference. 
  1504.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1505.            U_InConf  U_LDate  U_LDir    U_Logons U_LTime
  1506.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1507.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1508. THelpTopic
  1509.   U_LOGONS() :INTEGER
  1510. Returns the current users number of times logged on 
  1511.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1512.            U_InConf  U_LDate  U_LDir    U_Lmr    U_LTime
  1513.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1514.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1515. THelpTopic
  1516.   U_LTIME() :TIME
  1517. Returns the current users last time on the system 
  1518.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1519.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1520.            U_MsgRd   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1521.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1522. THelpTopic
  1523.   U_MSGRD() :INTEGER
  1524. Returns the number of messages the user has read 
  1525.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1526.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1527.            U_LTime   U_MsgWr  U_Name    U_PwdHistU_PwdLc
  1528.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1529. THelpTopic
  1530.   U_MSGWR() :INTEGER
  1531. Returns the number of messages the user has written 
  1532.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1533.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1534.            U_LTime   U_MsgRd  U_Name    U_PwdHistU_PwdLc
  1535.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1536. THelpTopic
  1537.   U_NAME() :STRING
  1538. Returns the current users name 
  1539.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1540.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1541.            U_LTime   U_MsgRd  U_MsgWr   U_PwdHistU_PwdLc
  1542.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1543. THelpTopic
  1544.   U_PWDHIST(hist:integer) :STRING
  1545. Returns the specified password from the password history Valid values for "hist" are 1 through 3 
  1546.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1547.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1548.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdLc
  1549.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1550. THelpTopic
  1551.   U_PWDLC() :DATE
  1552. Returns the date of the last password change 
  1553.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1554.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1555.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1556.            U_PwdTc   U_RecNum U_Stat    U_TimeOn
  1557. THelpTopic
  1558.   U_PWDTC() :INTEGER
  1559. Returns the number of times the password has been changed 
  1560.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1561.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1562.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1563.            U_PwdLc   U_RecNum U_Stat    U_TimeOn
  1564. THelpTopic
  1565.   U_RECNUM(user:string) :INTEGER
  1566. Returns the user record number (0-65535) for user name "user" or -1 if "user" is not registered on this system. 
  1567.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1568.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1569.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1570.            U_PwdLc   U_PwdTc  U_Stat    U_TimeOn
  1571. THelpTopic
  1572.   U_STAT(option:integer) :DATE or :INTEGER
  1573. Returns a statistic about the user that is tracked by PCBoard 5
  1574.          Valid values for "option" are 1 through 15
  1575.             1 - Returns the first date the user called the system
  1576.             2 - Returns the number of SysOp pages the user has requested
  1577.             3 - Returns the number of group chats the user has
  1578.                 participated in
  1579.             4 - Returns the number of comments the user has left
  1580.             5 - Returns the number of 300 bps connects
  1581.             6 - Returns the number of 1200 bps connects
  1582.             7 - Returns the bumber of 2400 bps connects
  1583.             8 - Returns the number of 9600 bps connects
  1584.             9 - Returns the number of 14400 bps connects
  1585.            10 - Returns the number of security violations
  1586.            11 - Returns the number of "not registered in conference"
  1587.                 warnings
  1588.            12 - Returns the number of times the users download limit
  1589.                 has been reached
  1590.            13 - Returns the number of "file not found" warnings
  1591.            14 - Returns the number of password errors the user has had
  1592.            15 - Returns the number of verify errors the user has had
  1593.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1594.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1595.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1596.            U_PwdLc   U_PwdTc  U_RecNum  U_TimeOn
  1597. THelpTopic
  1598.   U_TIMEON() :INTEGER
  1599. Returns the current users time online today in minutes 
  1600.  See also : U_Bdl     U_BdlDay U_Bul     U_Fdl    U_Ful
  1601.            U_InConf  U_LDate  U_LDir    U_Lmr    U_Logons
  1602.            U_LTime   U_MsgRd  U_MsgWr   U_Name   U_PwdHist
  1603.            U_PwdLc   U_PwdTc  U_RecNum  U_Stat
  1604. THelpTopic
  1605.   VALCC(CCnum:string) :BOOLEAN
  1606. Returns TRUE if "CCnum" is a valid credit card number "
  1607.  See also : ValCC InputCC CcType
  1608. THelpTopic
  1609.   VALDATE(date:string) :BOOLEAN
  1610. Returns TRUE if "date" is in a valid date format 
  1611.  See also : ValTime
  1612. THelpTopic
  1613.   VALTIME(time:string) :BOOLEAN
  1614. Returns TRUE if "time" is in a valid time format 
  1615.  See also : ValDate
  1616. THelpTopic
  1617.   VER() :INTEGER
  1618. Returns the version number of PCBoard that is running 
  1619. THelpTopic
  1620.   XOR(var1:integer, var2:integer) :INTEGER
  1621. Returns the bitwise exclusive-or of two integer expressions 
  1622.  See also : Or And Not
  1623. THelpTopic
  1624.   YEAR(var:date) :INTEGER
  1625. Returns the year (1900-2079) of "var" 
  1626.  See also : Month Day Dow
  1627. THelpTopic
  1628.   YESCHAR() :STRING
  1629. Returns the current language yes character 
  1630.  See also : NoChar
  1631. THelpTopic
  1632.   ADJTIME min:integer
  1633. Add or subtract "min" minutes to the users time available this session 
  1634.  See also : EvtTimeAdj
  1635. THelpTopic
  1636.   ANSIPOS col:integer, row:integer
  1637. If ANSI is available, position the cursor in column "col" and in row "row" 
  1638.          Legal ranges:  1 <= col <= 80
  1639.                         1 <= row <= 23 (Because of the status lines)
  1640.                         (1,1) is the top left corner of the screen
  1641. Note : Be aware that the user may have a different number of lines on his screen... if the user has 50 lines for exemple and that you do an ANSIPOS sentence to position the cursor on the 23rd line, the user will have a prompt in the middle of his screen... 
  1642.  See also : GetX GetY
  1643. THelpTopic
  1644.   BACKUP var:integer
  1645. Backup (move the cursor to the left) "var" columns without going past column 1 
  1646.  See also : Forward
  1647. THelpTopic
  1648.   BITCLEAR variable:multitype, bit:integer
  1649. Clears a specified bit from a variable. 
  1650. 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. 
  1651.  See also : BitSet IsBitSet
  1652. THelpTopic
  1653.   BITSET variable:multitype, bit:integer
  1654. Set a specified bit from a variable. 
  1655. 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. 
  1656.  See also : BitClear IsBitSet
  1657. THelpTopic
  1658.   BLT bltnr:integer
  1659. Display bulletin number "bltnr" 
  1660. THelpTopic
  1661.   BROADCAST var1:integer, var2:integer, message:string
  1662. Broadcast message "message" to nodes from "var1" to "var2" inclusive 
  1663. THelpTopic
  1664.   BYE
  1665. Same as having the user type BYE from the command prompt #
  1666.  See also : Goodbye Hangup DtrOff
  1667. THelpTopic
  1668.   CALL ppename
  1669. Load and execute PPE filename specified by "ppename" 
  1670.  See also : Shell
  1671. THelpTopic
  1672.   CDCHKOFF
  1673. Turn off carrier detect checking 
  1674.  See also : CdCheckOn CdOn
  1675. THelpTopic
  1676.   CDCHKON
  1677. Turn on carrier detect checking 
  1678.  See also : CdCheckOff CdOn
  1679. THelpTopic
  1680.   CHAT
  1681. Initiate SysOp chat mode 
  1682.  See also : ChatStat PageStat
  1683. THelpTopic
  1684.   CLOSECAP
  1685. Close the capture file previously opened with OpenCap 
  1686.  See also OpenCap
  1687. THelpTopic
  1688.   CLREOL
  1689. Clear to the end of the line, with the current color if in ANSI mode 
  1690.  See also : Cls
  1691. THelpTopic
  1692.   CLS
  1693. Clear the screen, with the current color if in ANSI mode 
  1694.  See also : ClrEol
  1695. THelpTopic
  1696.   COLOR clr:integer
  1697. Change the current color to "clr" 
  1698.  See also : CurColor DefColor
  1699. THelpTopic
  1700.   CONFFLAG conf:integer, flags:integer
  1701. Turn on the conference "conf" flags specified by "flags" ~
  1702.  See also : ConfSel    ConfSys ConfMw    CurConf   ConfExp CurConf
  1703.            ConfUnFlag Join    ConfAlias LastIn    ConfReg
  1704. THelpTopic
  1705.   CONFUNFLAG conf:integer, flags:integer
  1706. Turn off the conference "conf" flags specified by "flags" z
  1707.  See also : ConfSel  ConfSys ConfMw    CurConf   ConfExp CurConf
  1708.            ConfFlag Join    ConfAlias LastIn    ConfReg
  1709. THelpTopic
  1710.   DEC var:multitype
  1711. Decrement the value of var 
  1712.  See also : Inc
  1713. THelpTopic
  1714.   DELAY dlay:integer
  1715. Pause for "dlay" clock ticks (1 clock tick = 1/18.2 second) 
  1716.  See also : Wait
  1717. THelpTopic
  1718.   DELETE file:string
  1719. Deletes the filename specified by "file" (ERASE is a synonym) .
  1720.  See also : Copy Append Exist FileInf Rename
  1721. THelpTopic
  1722.   DELUSER
  1723. Flags the current user record for deletion 
  1724. THelpTopic
  1725.   DIR arg:string
  1726. Performs a file directory command, passing it "arg" as arguments 
  1727. THelpTopic
  1728.   DISPFILE file:string, flag:integer
  1729. Display file "file" with "flag" alternate file flags X
  1730.         valid flags :   GRAPH
  1731.                         SEC
  1732.                         LANG
  1733.  See also : DispStr
  1734. THelpTopic
  1735.   DISPSTR var:string
  1736. Display file if "var" is "%filename", execute PPE if "var" is "!filename", or display string "var" 
  1737. THelpTopic
  1738.   DISPTEXT promptnr:integer, flagson:integer
  1739. Display PCBTEXT prompt "promptnr" using flags "flagson" 
  1740.          valid flags : NEWLINE
  1741.                        LFBEFORE
  1742.                        LFAFTER
  1743.                        BELL
  1744.                        LOGIT
  1745.                        LOGITLEFT
  1746.  See also : DispFile
  1747. THelpTopic
  1748.   DOINTR intr, ax, bx, cx, dx, si, di, flags, ds, es (all is integer)
  1749. Generate interrupt number "intr" (0-255) with the register values passed as parameters (
  1750. Note : Use DoIntr at your own risks ! 
  1751.  See also : RegAx RegAh RegAl
  1752.            RegBx RegBh RegBl
  1753.            RegCx RegCh RegCl
  1754.            RegDx RegDh RegDl
  1755.            RegDi RegEs RegSi
  1756.            RegDs RegCf RegF
  1757. THelpTopic
  1758.   DTROFF
  1759. Turn off the DTR signal 
  1760. Note : on most modems, lowering DTR will cause modem to hangup... this is a good way if you want to simulate a bad connection, and then hangup without goodbye screens... This is the best way for you, the nice sysop, to free your line quickly... :) &
  1761.  See also : DtrOn Goodbye Bye Hangup
  1762. THelpTopic
  1763.   DTRON
  1764. Turn on the DTR signal 
  1765.  See also : DtrOff
  1766. THelpTopic
  1767.   END
  1768. End PPE execution 
  1769.  See also : End
  1770. If End
  1771. While
  1772. THelpTopic
  1773.   FAPPEND chnl:integer, file:string, access:integer, shrmod:integer
  1774. Use channel "chnl" to open file "file" in append mode with access mode "access" and share mode "shrmod" 
  1775.          valid channels     : 0 - 7 [0 is used for script questionnaires]
  1776.          valid access modes : O_RD, O_WR, O_RW [should use O_RW]
  1777.          valid share modes  : S_DN, S_DR, S_DW, S_DB
  1778.  See also : FOpen FClose FCreate
  1779. THelpTopic
  1780.   FCLOSE chnl:integer
  1781. Close channel "chnl" E
  1782. Accept channel -1 as the ReadLine() function 'channel' and close it +
  1783.  See also : FAppend FClose FCreate FFlush
  1784. THelpTopic
  1785.   FCREATE chnl:integer, file:string, access:integer, shrmod:integer
  1786. Use channel "chnl" to create and open file "file" in access mode "access" and share mode "shrmod" 
  1787.          valid channels     : 0 - 7 [0 is used for script questionnaires]
  1788.          valid access modes : O_RD, O_WR, O_RW [should use O_WR]
  1789.          valid share modes  : S_DN, S_DR, S_DW, S_DB
  1790.  See also : FOpen FClose FAppend
  1791. THelpTopic
  1792.   FGET chnl:integer, var:multitype
  1793. Read a line from channel "chnl" and assign it to "var" '
  1794.  See also : FPut FPutLn FPutPad FRead
  1795. THelpTopic
  1796.   FOPEN chnl:integer, file:string, access:integer, shrmod:integer
  1797. Use channel "chnl" to open file "file" in access mode "access" and share mode "shrmod" 
  1798.          valid channels     : 0 - 7 [0 is used for script questionnaires]
  1799.          valid access modes : O_RD, O_WR, O_RW
  1800.          valid share modes  : S_DN, S_DR, S_DW, S_DB
  1801.  See also : FCreate FClose FAppend FDefIn FDefOut
  1802. THelpTopic
  1803.    FOR ... NEXT
  1804.  Usage :
  1805.  FOR VAR = start:integer TO stop:integer [STEP incstep:integer]
  1806.  NEXT
  1807. FOR - Initializes a loop by assigning "start" to VAR and continuing while VAR <= "stop" (if "incstep" >= 0) or VAR >= "stop" (if "incstep" < 0) (TO is required to separate "start" and "stop". If STEP (optional) is not specified "incstep" defaults to 1) q
  1808. NEXT - Adds "incstep" to VAR, transfers control to the closest FOR statement, and marks the end of the FOR loop (
  1809.  See also : While...EndWhile If...Then
  1810. THelpTopic
  1811.   FORWARD var:integer
  1812. Move the cursor forward (to the right) "var" columns without going past column 80 
  1813.  See also : Backup
  1814. THelpTopic
  1815.   FPUT chnl:integer, str:string[, str:string...]
  1816. Write one or more "str" out to channel "chnl" /
  1817.  See also : FGet FPutLn FPutPad FWrite FWrite
  1818. THelpTopic
  1819.   FPUTLN chnl:integer[, str:string[, str:string...]]
  1820. Write zero or more "str" out to channel "chnl" and terminate with a carriage return/line feed pair ,
  1821.  See also : FGet FPut FPutPad FRead FWrite
  1822. THelpTopic
  1823.   FPUTPAD chnl:integer, str:string, len:integer
  1824. Write out "str", padding or truncating to length "len" as needed, to channel "chnl" +
  1825.  See also : FGet FPut FPutLn FRead FWrite
  1826. THelpTopic
  1827.   FRESHLINE
  1828. If the cursor is not in column 1, do a newline 
  1829.  See also : NewLine NewLines
  1830. THelpTopic
  1831.   FREWIND chnl:integer
  1832. Rewind channel "chnl" after flushing buffers and committing the file to disk. 
  1833.  See also : FSeek
  1834. THelpTopic
  1835.   GETUSER
  1836. Fill the predefined variables (U_...) with current information from the user record 
  1837. THelpTopic
  1838.   GOSUB LABEL
  1839. Transfer control to LABEL, marking the current PPE location for a future Return statement (GO SUB is a synonym) 
  1840.  See also : GoTo
  1841. THelpTopic
  1842.   GOTO LABEL
  1843. Transfer control to LABEL (GO TO is a synonym) 
  1844.  See also : GoSub
  1845. THelpTopic
  1846.   GOODBYE
  1847. Same as having the user type G from the command prompt 
  1848.  See also : Bye DtrOff Hangup
  1849. THelpTopic
  1850.   HANGUP
  1851. Hangup on the user without any notification  
  1852.  See also : Bye Goodbye DtrOff
  1853. THelpTopic
  1854.   IF ... THEN ... ELSE
  1855.   Usage 1:
  1856.   IF (exp:boolean) statement ...
  1857. Evaluate "exp" and, if true, execute statement; otherwise skip to the next statement 
  1858.   Usage 2:
  1859.    IF (exp:boolean) THEN
  1860.    ...
  1861.    ELSEIF (exp2:boolean) THEN
  1862.    ...
  1863.    ELSE
  1864.    ...
  1865.    ENDIF
  1866. 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) 
  1867. 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) _
  1868. ELSE - (optional) Separates the false portion of an IF/ELSEIF statement from the true portion F
  1869. ENDIF - Ends an IF/ELSEIF/ELSE statement block (END IF is a synonym) )
  1870.  See also : While...EndWhile For...Next
  1871. THelpTopic
  1872.   INC var:multitype
  1873. Increment the value of "var" 
  1874.  See also : Dec
  1875. THelpTopic
  1876.   INPUT prompt:string, var:string
  1877. Display "prompt" and get input from user, assigning it to "var" (60 characters maximum) f
  1878.  See also : InputCC   InputDate InputInt  InputMoney InputStr
  1879.            InputText InputTime InputYN
  1880. THelpTopic
  1881.   INPUTCC prompt:string, var:string, color:integer
  1882. Display "prompt" in color "color" and get a credit card formatted string from the user, assigning it to "var" (16 characters maximum, valid characters 0-9) f
  1883.  See also : Input     InputDate InputInt  InputMoney InputStr
  1884.            InputText InputTime InputYN
  1885. THelpTopic
  1886.   INPUTDATE prompt:string, var:string, color:integer
  1887. Display "prompt" in color "color" and get a date formatted string from the user, assigning it to "var" (8 characters maximum, valid characters 0-9 - /) f
  1888.  See also : Input     InputCC   InputInt  InputMoney InputStr
  1889.            InputText InputTime InputYN
  1890. THelpTopic
  1891.   INPUTINT prompt:string, var:string, color:integer
  1892. Display "prompt" in color "color" and get an integer formatted string from the user, assigning it to "var" (11 characters maximum, valid characters 0-9) g
  1893.  See also : Input     InputCC   InputDate  InputMoney InputStr
  1894.            InputText InputTime InputYN
  1895. THelpTopic
  1896.   INPUTMONEY prompt:string, var:string, color:integer
  1897. Display "prompt" in color "color" and get a money formatted string from the user, assigning it to "var" (13 characters maximum, valid characters 0-9 $ .) e
  1898.  See also : Input     InputCC   InputDate  InputInt InputStr
  1899.            InputText InputTime InputYN
  1900. THelpTopic
  1901.   INPUTSTR...
  1902.   Usage :
  1903. INPUTSTR prompt:string, var:string, color:integer, len:integer, valid:string, flags:string 
  1904. Display "prompt" in color "color" and get a string (maximum length "len", valid characters "valid", flags "flags") from the user, assigning it to "var" 
  1905.          valid length           : 1-256
  1906.          valid characters       : any string
  1907.          valid flags            : ECHODOTS
  1908.                                   FIELDLEN
  1909.                                   GUIDE
  1910.                                   UPCASE
  1911.                                   STACKED
  1912.                                   ERASELINE
  1913.                                   NEWLINE
  1914.                                   LFBEFORE
  1915.                                   LFAFTER
  1916.                                   WORDWRAP
  1917.                                   NOCLEAR
  1918.                                   HIGHASCII
  1919.                                   AUTO
  1920.                                   YESNO
  1921.  See also : Input     InputCC    InputDate InputInt InputMoney
  1922.            InputText InputTime  InputYN
  1923. THelpTopic
  1924.   INPUTTEXT prompt:string, var:string, color:integer, len:integer
  1925. Display "prompt" in color "color" and get a string (maximum length "len") from the user, assigning it to "var" h
  1926.  See also : Input     InputCC    InputDate InputInt InputMoney
  1927.            InputStr  InputTime  InputYN
  1928. THelpTopic
  1929.   INPUTTIME prompt:string, var:string, color:integer
  1930. Display "prompt" in color "color" and get a time formatted string from the user, assigning it to "var" (8 characters maximum, valid characters 0-9 :) e
  1931.  See also : Input    InputCC   InputDate  InputInt InputMoney
  1932.            InputStr InputText InputYN
  1933. THelpTopic
  1934.   INPUTYN prompt:string, var:string, color:integer
  1935. Display "prompt" in color "color" and get a yes/no response from the user, assigning it to "var" (1 characters maximum, valid characters determined by language) h
  1936.  See also : Input     InputCC   InputDate InputInt InputMoney
  1937.            InputStr  InputText InputTime
  1938. THelpTopic
  1939.   JOIN conf:integer
  1940. Performs a join conference command, passing it "conf" as arguments 
  1941.  See also : ConfSel ConfSys  ConfMw     CurConf   ConfExp
  1942.            CurConf ConfFlag ConfUnFlag ConfAlias LastIn
  1943.            ConfReg
  1944. THelpTopic
  1945.   KBDCHKOFF
  1946. Turn off keyboard time out checking 
  1947. THelpTopic
  1948.   KBDCHKON
  1949. Turn on keyboard time out checking 
  1950. THelpTopic
  1951.   KBDFILE file:string
  1952. Stuff the keyboard buffer with the contents of file "file" t
  1953.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdString
  1954.            KbdFileUsed MdmFlush   KeyFlush KbdFlush
  1955. THelpTopic
  1956.   KBDSTUFF str:string
  1957. Stuff the keyboard buffer with the contents of "str" s
  1958.  See also : KbdBufSize  PPLBufSize KbdFlush KbdFile KbdString
  1959.            KbdFileUsed MdmFlush   KeyFlush KbdFlush
  1960. THelpTopic
  1961.   LET var:multitype = EXP
  1962. Evaluate expression "EXP", convert and assign to "VAR" .
  1963. 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) 
  1964. THelpTopic
  1965.   LOG str:string, just:boolean
  1966. Write string "str" to the callers log, left justified if "just" is TRUE 
  1967. THelpTopic
  1968.    MESSAGE...
  1969.    Usage :
  1970. MESSAGE conf:integer, to:string, from:string, subject:string, sec:string, msgdate:date, retreceipt:boolean, echo:boolean, file:string 
  1971. Write a message in conference "conf", to user "to" (empty string defaults to current caller), from user "from" (empty string defaults to current caller), subject "subject", security in "sec" (N or R; N is the default), pack out date in "msgdate" (0 for no pack out date), "retreceipt" True if return receipt desired, "echo" TRUE if message should be echoed, and "file" is the filename to use for the message text 
  1972. THelpTopic
  1973.   MORE
  1974. Displays a MORE? prompt 
  1975.  See also : Wait Delay
  1976. THelpTopic
  1977.   MOUSEREG num,x1,y1,x2,y2,fontX,fontY,invert,clear,text
  1978. Set up a RIP mouse region on the remote terminal. $
  1979.        num    = Is the RIP region number
  1980.        x1,y1  = The (X,Y) coordinates of the upper-left of the region
  1981.        x2,y2  = The (X,Y) coordinates of the lower-right of the region
  1982.        fontX  = The width of each character in pixels
  1983.        fontY  = The height of each character in pixels
  1984.        invert = A boolean flag (TRUE to invert the region when clicked)
  1985.        clear  = A boolean flag (TRUE to clear and full screen the text window)
  1986.        text   = Text that the remote terminal should transmit when the region
  1987.                 is clicked
  1988.  See also : GrafMode
  1989. THelpTopic
  1990.   MPRINT str:string[, str:string...]
  1991. Display one or more string expressions on the callers screen only (this statement does not send anything to the BBS screen) 4
  1992.  See also : MPrintLn Print PrintLn SPrint SPrintLn
  1993. THelpTopic
  1994.   MPRINTLN [str:string[, str:string...]]
  1995. 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) 2
  1996.  See also : MPrint Print PrintLn SPrint SPrintLn
  1997. THelpTopic
  1998.   NEWLINE
  1999. Write a newline to the display  
  2000.  See also : NewLines FreshLine
  2001. THelpTopic
  2002.   NEWLINES var
  2003. Write "var" newlines to the display 
  2004.  See also : NewLine FreshLine
  2005. THelpTopic
  2006.   OPENCAP captfile:string, error:boolean
  2007. Open "captfile" and capture all screen output to it. o
  2008. If an error occurs creating or opening "captfile", "error" is set to TRUE, otherwise "error" is set to FALSE. 
  2009.  See also : CloseCap
  2010. THelpTopic
  2011.   OPTEXT str:string
  2012. Writes string "str" into the @OPTEXT@ macro 
  2013. THelpTopic
  2014.   PAGEOFF
  2015. Turn off the SysOp paged indicator (flashing p on status line) 
  2016.  See also : PageOn
  2017. THelpTopic
  2018.   PAGEON
  2019. Turn on the SysOp paged indicator (flashing p on status line) 
  2020.  See also : PageOff
  2021. THelpTopic
  2022.   POKEB addr:integer, val:integer
  2023. Assign the value "val" (0-255) to memory address "addr" (POKE is a synonym) -
  2024.  See also : PeekB PeekDW PeekW PokeW PokeDW
  2025. THelpTopic
  2026.   POKEDW addr:integer, val:integer
  2027. Assign the value "val" (-2147483648 - +2147483647) to memory address "addr" ,
  2028.  See also : PeekB PeekDW PeekW PokeB PokeW
  2029. THelpTopic
  2030.   POKEW addr:integer, val:integer
  2031. Assign the value "val" (0-65535) to memory address "addr" -
  2032.  See also : PeekB PeekDW PeekW PokeB PokeDW
  2033. THelpTopic
  2034.   POP var[,var...]
  2035. Pop values (previously pushed onto the stack) into a list of variables 
  2036.  See also : Push
  2037. THelpTopic
  2038.   PRFOUND & PRFOUNDLN
  2039. These work just like Print and PrintLn but, if the last SearchFind statement resulted in a match, it will automatically highlight found words. 
  2040.  See also : SearchFind
  2041. THelpTopic
  2042.   PRINT str:string[, str:string...]
  2043. Display one or more string expressions 5
  2044.  See also : MPrint MPrintLn PrintLn SPrint SPrintLn
  2045. THelpTopic
  2046.   PRINTLN [str:string[, str:string...]]
  2047. Display zero or more string expressions and follow with a newline 3
  2048.  See also : MPrint MPrintLn Print SPrint SPrintLn
  2049. THelpTopic
  2050.   PROMPTSTR prompt:integer, var:string, len:integer, valid:string, flags:integer
  2051. Display PCBTEXT entry "prompt" and get a string (maximum length "len", valid characters "valid", flags "flags") from the user, assigning it to "var" B
  2052.          valid length     : 1-256
  2053.          valid characters : any string
  2054.          valid flags      : ECHODOTS
  2055.                             FIELDLEN
  2056.                             GUIDE
  2057.                             UPCASE
  2058.                             STACKED
  2059.                             ERASELINE
  2060.                             NEWLINE
  2061.                             LFBEFORE
  2062.                             LFAFTER
  2063.                             WORDWRAP
  2064.                             NOCLEAR
  2065.                             HIGHASCII
  2066.                             AUTO
  2067.                             YESNO
  2068.  See also : DispText
  2069. THelpTopic
  2070.   PUSH var[,var...]
  2071. Push a list of evaluated expressions onto the stack 
  2072.  See also : Pop
  2073. THelpTopic
  2074.   PUTUSER
  2075. Write the information from the predefined variables (U_...) to the user record 
  2076. This statement is only intended to update user information if a successful GetUser or GetAltUser was issued previously.  This was done to ensure that information for the current user wasn't written to another user or vice versa. 
  2077.  See also : GetUser
  2078. THelpTopic
  2079.   QUEST nr:integer
  2080. Do script questionnaire "nr" 
  2081. THelpTopic
  2082.   RDUNET node:integer
  2083. Read information from USERNET.XXX for node "node" "
  2084.  See also : RdUsys WrUnet WrUsys
  2085. THelpTopic
  2086.   RDUSYS
  2087. Reads a USERS.SYS file, if present, and updates the users record "
  2088.  See also : RdUnet WrUnet WrUsys
  2089. THelpTopic
  2090.   RENAME oldname:string, newname:string
  2091. Rename file "oldname" to "newname" .
  2092.  See also : Delete Copy Append Exist FileInf
  2093. THelpTopic
  2094.   RESETDISP
  2095. Reset the display after an user abort 
  2096. THelpTopic
  2097.   RESTSCRN
  2098. Restore the screen from the buffer previously saved with SaveScrn 
  2099.  See also : SaveScrn
  2100. THelpTopic
  2101.   RETURN
  2102. Return to the statement after the last GoSub or, if no GoSub is waiting for a RETURN, End the PPE 
  2103. THelpTopic
  2104.   SAVESCRN
  2105. Save the current screen in a buffer for later restoration with the RestScrn 
  2106.  See also : RestScrn
  2107. THelpTopic
  2108.   SCRFILE lineVar, filenameVar
  2109. Find a file name and line number that is currently on the screen. 
  2110. lineVar     = 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 filenameVar = Will be set to the file name if one is found on screen 
  2111.  See also : ScrText
  2112. THelpTopic
  2113.   SENDMODEM str:string
  2114. Send the text in "str" out to the modem 
  2115. THelpTopic
  2116.   SEARCHINIT criteria, caseSensitive
  2117. Initialize search parameters for a faster BOYER-MOORE search algorithm. 
  2118. criteria      = A string expression with the search criteria in the same format used by PCBoard (ie, "THIS & THAT | BOB") caseSensitive = A boolean flag (TRUE to force a case sensitive search, FALSE otherwise) 5
  2119.  See also : SearchFind PRFound/PRFoundLn SearchStop
  2120. THelpTopic
  2121.   SEARCHFIND bufferExpr, foundVar
  2122. Execute a BOYER-MOORE search on a text buffer using criteria previously defined with a SearchInit statement. x
  2123. bufferExpr = The buffer to search foundVar   = Set to TRUE if bufferExpr contains the search criteria, FALSE otherwise 5
  2124.  See also : SearchInit PRFound/PRFoundLn SearchStop
  2125. THelpTopic
  2126.   SEARCHSTOP
  2127. Clears out previously entered search criteria. It takes no parameters. 5
  2128.  See also : SearchInit SearchFind PRFound/PRFoundLn
  2129. THelpTopic
  2130.   SHELL com:boolean, code:integer, prog:string, arg:string
  2131. Shell (via COMMAND.COM if "com" is TRUE) to program/command "prog" with arguments "arg", saving the return value in "var" j
  2132. NOTE:  If "com" is TRUE, the value assigned to "var" will be the return code of COMMAND.COM, not "prog") 
  2133.  See also : Call
  2134. THelpTopic
  2135.   SHOWOFF
  2136. Turns off display of information to the screen 
  2137.  See also : ShowStat ShowOn
  2138. THelpTopic
  2139.   SHOWON
  2140. Turns on display of information to the screen 
  2141.  See also : ShowStat ShowOff
  2142. THelpTopic
  2143.   SORT sortArry, pointerArray
  2144. Sort the contents of an array into a pointer array. G
  2145. sortArray    = The data to sort (Any type may be used for this array) 
  2146. pointerArray = An integer array which will be used as an array of pointers into sortArray for accessing sortArray in sorted order (This array should be of type INTEGER) U
  2147. Note that sortArray and pointerArray are restricted to one (1) dimensional arrays. R
  2148. The following is an example of displaying an array in unsorted and sorted order: 
  2149.      STRING  s(999) ; Remember that arrays are 0-based, so these statements
  2150.      INTEGER p(999) ; will allocate 1000 elements each
  2151.      ; Do something here to read data into s
  2152.      SORT s,p
  2153.      INTEGER i
  2154.      FOR i = 0 TO 999 ; This loop will display in unsorted order
  2155.        PRINTLN s(i)
  2156.      NEXT
  2157.      FOR i = 0 TO 999 ; This loop will display in sorted order
  2158.        PRINTLN s(p(i))
  2159.      NEXT
  2160. THelpTopic
  2161.    SOUND freq:integer
  2162. Turn on the BBS PC speaker at the frequency (1-65535) specified by "freq" (or turn it off if the frequency is 0) 
  2163. THelpTopic
  2164.   SPRINT str:string[, str:string...]
  2165. Display one or more string expressions on the BBS screen only (this statement does not send anything to the modem) 4
  2166.  See also : MPrintLn MPrint Print PrintLn SPrintLn
  2167. THelpTopic
  2168.   SPRINTLN [str:string[, str:string...]]
  2169. 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) 2
  2170.  See also : MPrintLn MPrint Print PrintLn SPrint
  2171. THelpTopic
  2172.   STARTDISP mode:integer
  2173. Start display monitoring in mode "mode" N
  2174.         valid modes : NC
  2175.                       FNS
  2176.                       FCL
  2177. THelpTopic
  2178.   STOP
  2179. Abort PPE execution without appending answers (channel 0) to the answer file 
  2180.  See also : End
  2181. THelpTopic
  2182.   TOKENIZE str:string
  2183. Tokenize string "string" into individual items separated by semi-colons or spaces (
  2184.  See also : GetToken TokenStr TokCount
  2185. THelpTopic
  2186.   TPAGET keyWord, infoVar
  2187. Get static information from a named TPA in string format. )
  2188. keyword = The keyword of the TPA to use <
  2189. infoVar = The variable into which to store the information f
  2190.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2191.            TPAWrite TPACRead  TPACWrite
  2192. THelpTopic
  2193.   TPAPUT keyWord, infoExpr
  2194. Put static information to a named TPA in string format. *
  2195. keyword  = The keyword of the TPA to use 5
  2196. infoExpr = The expression to write to store the TPA c
  2197.  See also : Psa      TPACGet   TPACPut    TPARead
  2198.            TPAWrite TPACRead  TPACWrite  TPAGet
  2199. THelpTopic
  2200.   TPACGET keyWord, infoVar, confNum
  2201. Get information from a named TPA for a specified conference in string format. )
  2202. keyword = The keyword of the TPA to use <
  2203. infoVar = The variable into which to store the information C
  2204. confNum = The conference number for which to retrieve information c
  2205.  See also : Psa      TPAPut    TPACPut    TPARead
  2206.            TPAWrite TPACRead  TPACWrite  TPAGet
  2207. THelpTopic
  2208.   TPACPUT keyWord, infoExpr, confNum
  2209. Put information to a named TPA for a specified conference in string format. *
  2210. keyword  = The keyword of the TPA to use 5
  2211. infoExpr = The expression to write to store the TPA D
  2212. confNum  = The conference number for which to retrieve information c
  2213.  See also : Psa      TPAPut    TPACGet    TPARead
  2214.            TPAWrite TPACRead  TPACWrite  TPAGet
  2215. THelpTopic
  2216.   TPAREAD keyWord, infoVar
  2217. Get static information from a named TPA. )
  2218. keyword = The keyword of the TPA to use <
  2219. infoVar = The variable into which to store the information c
  2220.  See also : Psa      TPAPut    TPACGet    TPACPut
  2221.            TPAWrite TPACRead  TPACWrite  TPAGet
  2222. THelpTopic
  2223.   TPAWRITE keyWord, infoExpr
  2224. Put static information to a named TPA. *
  2225. keyword  = The keyword of the TPA to use 5
  2226. infoExpr = The expression to write to store the TPA c
  2227.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2228.            TPACRead TPACWrite TPAGet
  2229. THelpTopic
  2230.   TPACREAD keyWord, infoVar, confNum
  2231. Get information from a named TPA for a specified conference. )
  2232. keyword = The keyword of the TPA to use <
  2233. infoVar = The variable into which to store the information C
  2234. confNum = The conference number for which to retrieve information c
  2235.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2236.            TPAWrite TPACWrite TPAGet
  2237. THelpTopic
  2238.   TPACWRITE keyWord, infoExpr, confNum
  2239. Put information to a named TPA for a specified conference. *
  2240. keyword  = The keyword of the TPA to use 5
  2241. infoExpr = The expression to write to store the TPA D
  2242. confNum  = The conference number for which to retrieve information c
  2243.  See also : Psa      TPAPut    TPACGet    TPACPut    TPARead
  2244.            TPAWrite TPACRead  TPAGet
  2245. THelpTopic
  2246.   VARADDR var1:multitype, var2:integer
  2247. Assign the address (segment and offset) of "var1" to "var2" "
  2248.  See also : VarSeg VarOff MkAddr
  2249. THelpTopic
  2250.   VAROFF var1:multitype, var2:integer
  2251. Assign the offset address of "var1" to "var2" #
  2252.  See also : VarSeg VarAddr MkAddr
  2253. THelpTopic
  2254.   VARSEG var1:multitype, var2:integer
  2255. Assign the segment address of "var1" to "var2" "
  2256.  See also : VarOff VarOff MkAddr
  2257. THelpTopic
  2258.   WAIT
  2259. Displays a PRESS ENTER TO CONTINUE? prompt !
  2260.  See also : More Delay Wait
  2261. THelpTopic
  2262.   WAITFOR prompt:string, var:boolean, time:integer
  2263. Wait up to "time" seconds for the string "prompt", 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) 
  2264.  See also : Wait
  2265. THelpTopic    
  2266.    WHILE...
  2267.    Usage 1:
  2268.    WHILE (exp:boolean) statement ...
  2269. While "exp" is true execute statement; when "exp" is false execute following statements 
  2270.    Usage 2:
  2271.    WHILE (exp) DO
  2272.    ...
  2273.    ENDWHILE
  2274. WHILE - While "exp" is true execute statement(s); when "exp" is false transfer control to the first statement following the ENDWHILE statement (requires DO [or THEN] after the expression) z
  2275. ENDWHILE - Transfers control to the closest WHILE statement and marks the end of the WHILE loop (END WHILE is a synonym) !
  2276.  See also : If..Then For...Next
  2277. THelpTopic
  2278.   WRUNET...
  2279.   Usage :
  2280. WRUNET node:integer, nodestat:string, nodeusername:string,newnodecity:string, newoptext:string,broacasttext:string 
  2281. Write information to USERNET.XXX for node "node", where "nodestat" is the new node status, "nodeusername" is the new node user name, "newnodecity" is the new node city, "newoptext" is the new node operation text, and "broadcasttext" is broadcast text "
  2282.  See also : RdUnet RdUsys WrUsys
  2283. THelpTopic
  2284.   WRUSYS
  2285. Writes (creates) a USERS.SYS file which can be used by a SHELLed application "
  2286.  See also : RdUnet RdUsys WrUnet
  2287. THelpTopic
  2288.   BREAK
  2289. Can be used to break out of a WHILE or FOR loop without the use of a GOTO statement 
  2290.  See also : Continue Quit
  2291. THelpTopic
  2292.   QUIT
  2293. Can be used to break out of a WHILE or FOR loop without the use of a GOTO statement (alias for BREAK) 
  2294.  See also : Continue Quit
  2295. THelpTopic
  2296.   CONTINUE
  2297. Can be used to abort the current iteration of a WHILE or FOR loop and resume with the next iteration of the loop 
  2298.  See also : Quit Break Loop
  2299. THelpTopic
  2300.   LOOP
  2301. 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) !
  2302.  See also : Quit Break Continue
  2303. THelpTopic
  2304.   FFLUSH chnl:integer
  2305. flush a specified channels changes to disk 
  2306.  See also : FClose
  2307. THelpTopic
  2308.   FSEEK chnl:integer, byte:integer, position:integer
  2309. Position to any random location within a file A
  2310. bytes is the number of bytes to move (+/-) relative to position 8
  2311. position is the base location to start the seek from : 
  2312.         SEEK_SET (0) for the beginning of the file
  2313.         SEEK_CUR (1) for the current file pointer location
  2314.         SEEK_END (2) for the end of the file
  2315.  See also : FRewind
  2316. THelpTopic
  2317.   FREAD chnl:integer, var:multitype, size:integer
  2318. Read binary data from a file 4
  2319. var is the variable into which data should be read 6
  2320. size is the size of data to read into var (0 - 2048) 
  2321.  See also : FGet
  2322. THelpTopic
  2323.   FWRITE chnl:integer, exp:multitype, size:integer
  2324. Write binary data to a file 6
  2325. exp is the expression whose result should be written *
  2326. size is the size of data to write to var !
  2327.  See also : FPut FPutPad FPutLn
  2328. THelpTopic
  2329.   FDEFIN chnl:integer
  2330. Specify a default input file channel (used to speed up file input) 
  2331.  See also : FOpen
  2332. THelpTopic
  2333.   FDEFOUT chnl:integer
  2334. Specify a default output file channel (used to speed up file output) 
  2335.  See also : FOpen
  2336. THelpTopic
  2337.   FDGET var:multitype
  2338. Default channel input statement: use the exact same arguments as FGet except a channel parameter (the channel specified by FDefIn is assumed) 3
  2339.  See also : FDPut FDPutPad FDPutLn FDRead FDWrite
  2340. THelpTopic
  2341.   FDREAD var:multitype, size:integer
  2342. Default channel input statement: use the exact same arguments as FRead except a channel parameter (the channel specified by FDefIn is assumed) 2
  2343.  See also : FDPut FDPutPad FDPutLn FDGet FDWrite
  2344. THelpTopic
  2345.   FDPUT str:string[, str:string...]
  2346. Default channel output statement: use the exact same arguments as FPut except a channel parameter (the channel specified by FDefOut is assumed) 3
  2347.  See also : FDRead FDPutPad FDPutLn FDGet FDWrite
  2348. THelpTopic
  2349.   FDPUTLN str:string[, str:string...]
  2350. Default channel output statement: use the exact same arguments as FPutLn except a channel parameter (the channel specified by FDefOut is assumed) 1
  2351.  See also : FDRead FDPutPad FDPut FDGet FDWrite
  2352. THelpTopic
  2353.   FDPUTPAD str:string, len:integer
  2354. Default channel output statement: use the exact same arguments as FPutPad except a channel parameter (the channel specified by FDefOut is assumed) 0
  2355.  See also : FDRead FDPutLn FDPut FDGet FDWrite
  2356. THelpTopic
  2357.   FDWRITE exp:multitype, size:integer
  2358. Default channel output statement: use the exact same arguments as FWrite except a channel parameter (the channel specified by FDefOut is assumed) 2
  2359.  See also : FDRead FDPutPad FDPut FDGet FDPutPad
  2360. THelpTopic
  2361.   REDIM
  2362. Dynamically redimension an array at run-time. 
  2363. 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: c
  2364.      STRING s(1,1,1)
  2365.      REDIM s,5,5,5
  2366.      LET s(4,4,4) = "Hello, World!"
  2367.      PRINTLN s(4,4,4)
  2368. If an attempt is made to redimension an array with a different number of dimensions, an error or warning (as appropriate) will be generated. !
  2369.  See also : Compilation
  2370. Options
  2371. THelpTopic
  2372.   APPEND srcfile:string, destfile:string
  2373. Append the contents of one file to another file. 
  2374.      APPEND "SRCFILE","DSTFILE"
  2375.  See also : Delete Copy Exist FileInf Rename
  2376. THelpTopic
  2377.   COPY srcfile:string, destfile:string
  2378. Copy the contents of one file to another file. 
  2379.      COPY "SRCFILE","DSTFILE"
  2380.  See also : Delete Append Exist FileInf Rename
  2381. THelpTopic
  2382.   LASTIN conf:integer
  2383. Set the users last conference in value. 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). v
  2384.  See also : ConfSel  ConfSys ConfMw  CurConf   ConfExp CurConf
  2385.            ConfFlag ConfUnFlag Join ConfAlias ConfReg
  2386. THelpTopic
  2387.   FLAG filepath:string
  2388. Allow flagging files for download directly from a PPE. 
  2389.      FLAG "C:\PATH\FILENAME.ZIP" ; Or whatever file name desired
  2390. 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. 
  2391.  See also : FlagCnt Download
  2392. THelpTopic
  2393.   DOWNLOAD cmd:string
  2394. Downloading files from PPL. 
  2395.      DOWNLOAD "CMD;CMD;CMD"
  2396. 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. 
  2397. 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. 
  2398. 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. 
  2399.  See also : Flag
  2400. THelpTopic
  2401.   FLAGCNT()
  2402. Return the number of files flagged for download. 
  2403.  See also : Flag
  2404. THelpTopic
  2405.   WRUSYSDOOR str:string
  2406. Write a USERS.SYS file with a TPA record for a DOOR application. 
  2407.      WRUSYSDOOR "DOORNAME"
  2408.  See also : WrUsys
  2409. THelpTopic
  2410.   KBDSTRING str:string
  2411. Stuff strings to the keyboard (just like KbdStuff except 'keystrokes' are echoed to the display) r
  2412.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2413.            KbdFileUsed MdmFlush   KeyFlush KbdFlush
  2414. THelpTopic
  2415.   KBDFLUSH
  2416. Flush the local keyboard buffer and any stuffed keystroke buffers. It takes no arguments. s
  2417.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2418.            KbdFileUsed MdmFlush   KbdFlush KbdString
  2419. THelpTopic
  2420.   MDMFLUSH
  2421. Flush the incoming modem buffer.  It takes no arguments. s
  2422.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2423.            KbdFileUsed KeyFlush   KbdFlush KbdString
  2424. THelpTopic
  2425.   KEYFLUSH
  2426. Flush both the local buffers and the incoming modem buffer. It takes no arguments. s
  2427.  See also : KbdBufSize  PPLBufSize KbdFlush KbdStuff KbdFile
  2428.            KbdFileUsed MdmFlush   KbdFlush KbdString
  2429. THelpTopic
  2430.   ALIAS yesno:boolean
  2431. Allow PPE control of whether or not the user is using an alias 
  2432.  See also : PSA(1) UserAlias
  2433.   ALIAS() :BOOLEAN
  2434. Return the users current ALIAS setting (TRUE = alias use on, FALSE = alias use off) 
  2435.  See also : TPAGet
  2436. THelpTopic
  2437.   CONFALIAS()
  2438. Return TRUE if the current conference is configured to allow aliases v
  2439.  See also : ConfSel  ConfSys ConfMw  CurConf   ConfExp CurConf
  2440.            ConfFlag ConfUnFlag Join LastIn    ConfReg
  2441. THelpTopic
  2442.    USERALIAS() :BOOLEAN
  2443. Return TRUE if the current user is allowed to use an alias 
  2444.  See also : Alias
  2445. THelpTopic
  2446.   LANG
  2447. Change the language in use by the current user. 
  2448.      LANG langNum
  2449.  See also : LangExt
  2450. THelpTopic
  2451.   ADJBYTES bytes:integer
  2452. Adjust the users total and daily download X
  2453. To subtract bytes use a negative number for bytes. To add bytes use a positive number. +
  2454.  See also : AdjDBytes AdjTBytes AdjTFiles
  2455. THelpTopic
  2456.   ADJDBYTES bytes:integer
  2457. Adjust the users daily download bytes. X
  2458. To subtract bytes use a negative number for bytes. To add bytes use a positive number. *
  2459.  See also : AdjTBytes AdjTFiles AdjBytes
  2460. THelpTopic
  2461.   ADJTBYTES bytes:integer
  2462. Adjust the users total download bytes. X
  2463. To subtract bytes use a negative number for bytes. To add bytes use a positive number. *
  2464.  See also : AdjDBytes AdjTFiles AdjBytes
  2465. THelpTopic
  2466.   ADJTFILES files:integer
  2467. Adjust the users total download files. X
  2468. To subtract files use a negative number for files. To add files use a positive number. *
  2469.  See also : AdjDBytes AdjTBytes AdjBytes
  2470. THelpTopic
  2471.   PUTALTUSER
  2472. Put user information. It is merely an alias for PutUser and may be used anywhere that PUTUSER would be used. 
  2473.  See also : GetAltUser
  2474. THelpTopic
  2475.   GETALTUSER user:integer
  2476. Get the information for an alternate user. 
  2477. It will fill the user variables with information from the specified user record as well as redirect user statements and functions. 
  2478.      GETALTUSER userRecordNumber
  2479. 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. 
  2480.  See also : PutAltUser
  2481. THelpTopic
  2482.   CURUSER() :INTEGER
  2483. Determine what users information, if any, is available via the user variables.  It takes no arguments and returns one of the following values: 
  2484.      NO_USER (-1) - User variables are currently undefined
  2485.      CUR_USER (0) - User variables are for the current user
  2486.      Other        - The record number of an alternate user for whom user
  2487.                     variables are defined
  2488. THelpTopic
  2489.   Compilation Directives
  2490.  ;$INCLUDE:
  2491. Source files can be included from other source files. This is accomplished with a compiler directive in a comment like this: 
  2492.       ;$INCLUDE:FILESPEC.EXT
  2493. Note that the first character need not be the semi-colon. An apostrophe ['] or asterisk [*] may also be used where appropriate. 
  2494. 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: S
  2495.       FOO.INC
  2496.       -------
  2497.       :subroutine
  2498.       PRINTLN "Hello!"
  2499.       RETURN
  2500.       FOO.PPS
  2501.       -------
  2502.       PRINTLN "Running FOO.PPS"
  2503.       GOSUB subroutine
  2504.       END ' This line is important!
  2505.       *$INCLUDE:FOO.INC
  2506. 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. 
  2507.  ;$USEFUNCS
  2508. Allow you to specifiy that you want to use user-defined functions and  procedures. 
  2509. This makes the code more flexible by allowing you to put your main code (code between Begin and End) anywhere in your program (usefull if you have to incude some user-defined functions with an include directive at the  beginning of your code) 
  2510. THelpTopic
  2511. This word is not a PPL keyword... /
  2512. Press enter to jump to PPL Reference Index... 
  2513. THelpTopic
  2514.   @Xnn Color Codes
  2515. PCBoard defines some macros to change color if user has ANSI capabilities. 
  2516. If user doesn't support ANSI, PCB just skip those codes. It is a good way to colorize your screens and prompt because you don't have to check the ANSI flag, PCB deal with it automatically. 
  2517. Color codes are made of 4 bytes. the first byte is used to enter in macro mode. The second indicates that we want to pass a color code. Next byte is the background color and the last is the foreground color. 
  2518.  BackGround codes :
  2519.  0 - Black
  2520.  1 - Blue
  2521.  2 - Green
  2522.  3 - Cyan
  2523.  4 - Red
  2524.  5 - Magenta
  2525.  6 - Brown
  2526.  7 - LightGray
  2527.  8 - Black
  2528.  9 - Blinking foreground on Blue background
  2529.  A - Blinking foreground on Green background
  2530.  B - Blinking foreground on Cyan background
  2531.  C - Blinking foreground on Red background
  2532.  D - Blinking foreground on Magenta background
  2533.  E - Blinking foreground on Brown background
  2534.  F - Blinking foreground on LightGray background
  2535.  Foreground codes :
  2536.  0 - Black
  2537.  1 - Blue
  2538.  2 - Green
  2539.  3 - Cyan
  2540.  4 - Red
  2541.  5 - Magenta
  2542.  6 - Brown
  2543.  7 - LightGray
  2544.  8 - DarkGray
  2545.  9 - LightBlue
  2546.  A - LightGreen
  2547.  B - LightCyan
  2548.  C - LightRed
  2549.  D - LightMagenta
  2550.  E - Yellow
  2551.  F - White
  2552. THelpTopic
  2553.   GO ...
  2554.   See : Go
  2555. Sub Go
  2556. THelpTopic
  2557.   ... TO
  2558.   See : Go
  2559. To For...To...Next
  2560. THelpTopic
  2561.   PROCEDURE
  2562. [DECLARE] PROCEDURE proc( [TYPE var1 [VAR] ],...) z
  2563. The keyword PROCEDURE is used in conjonction with the keyword DECLARE in the declaration of a user-defined procedure... 
  2564. The optionnal VAR keyword tells PPL to copy the contents of the local variable back into the original variable when the procedure is finished processing. 
  2565. The compiler directive ";$USEFUNCS" may be used in order to allow your main code (code between BEGIN & END) to be located anywhere within your file... 
  2566. Example : 
  2567.  ;$USEFUNCS
  2568.  DECLARE PROCEDURE proc1(INTEGER i, STRING str, VAR INTEGER j)
  2569.  INTEGER int1,int2
  2570.  STRING s1
  2571.  BEGIN
  2572.  int1 = 1
  2573.  int2 = 2
  2574.  s1 = "HELLO"
  2575.  proc1(int1,s1,int2)
  2576.  PRINTLN "int1 =",int1
  2577.  PRINTLN "int2 =",int2
  2578.  PRINTLN "s1 =",s1
  2579.  PROCEDURE proc1(INTEGER i,STRING str, VAR INTEGER j)
  2580.         PRINTLN "I'm in proc1"
  2581.         LET i = 30
  2582.         LET j = 15
  2583.  ENDPROC
  2584.   See also : Function
  2585. THelpTopic
  2586.  FUNCTION
  2587. [DECLARE] FUNCTION func(TYPE var1, ...) TYPE z
  2588. The keyword PROCEDURE is used in conjonction with the keyword FUNCTION in the declaration of a user-defined function... 
  2589. The compiler directive ";$USEFUNCS" may be used in order to allow your main code (code between BEGIN & END) to be located anywhere within your file... r
  2590. The big difference between functions and procedures is that functions return a value. To assign the return value inside a function, simple use the name of the function just like a variable. You do not need to declare this variable, it is done for you. When the function is finished executing the value in the return variable will be made available as the return value. 
  2591. Note that function calls can take place anywhere inside of an expression as well as stand-alone statements. This can be useful in situations when the functions return value is not needed, but the functions side effects are. 
  2592. Example : 
  2593.  ;$USEFUNCS
  2594.  DECLARE FUNCTION Xto_theY(INTEGER x, INTEGER y) INTEGER
  2595.  DECLARE FUNCTION square(INTEGER x) INTEGER
  2596.  FUNCTION Xto_theY(INTEGER x, INTEGER y) INTEGER
  2597.    INTEGER i
  2598.      Xto_theY = x
  2599.      for i = 2 to y
  2600.        Xto_theY = Xto_theY * x
  2601.      next i
  2602.  ENDFUNC
  2603.  FUNCTION square(INTEGER x) INTEGER
  2604.    square = x * x
  2605.  ENDFUNC
  2606.  BEGIN
  2607.       PRINTLN "4 to the 3rd power = ",Xto_theY(4,3)
  2608.       PRINTLN "4 squared = ",square(4)
  2609.   See also : Procedure
  2610. THelpTopic
  2611.   DECLARE
  2612.   See : Function Procedure
  2613. THelpTopic
  2614.   SELECT CASE
  2615.  SELECT CASE var
  2616.         CASE const1 [, const2..const3 [, expr ] ]
  2617.         .
  2618.         .
  2619.         .
  2620.         DEFAULT (or CASE ELSE)
  2621.  END SELECT
  2622. The SELECT CASE construct allows you to organize multiple execution paths into a clean, easy to read format. X
  2623. Each CASE contains one or more expressions delimited by commas. Each CASE expression is compared to the SELECT CASE expression logically. If it is TRUE the body of the CASE is executed. The CASE body can contain as many statements as needed, including function calls. Note that ranges include the boundry values. eg 11..35 includes 11 and 35. 
  2624. The DEFAULT case will be executed when none of the other CASE expressions evaluate to TRUE. For BASIC programmers, the CASE ELSE is also valid instead of DEFAULT. 
  2625. Example : 
  2626.       INTEGER i
  2627.          LET i = 3
  2628.           SELECT CASE (i)
  2629.                 CASE 1
  2630.                        PRINTLN "i = 1"
  2631.                        proc1(i)
  2632.                 CASE 2,6,10
  2633.                        PRINTLN "i is 2,6 or 10"
  2634.                        proc2(i)
  2635.                 CASE 3
  2636.                        PRINTLN "i is 3"
  2637.                 CASE 11..35
  2638.                        PRINTLN "i is between 11 and 35"
  2639.                 CASE 50..60,64,78
  2640.                        PRINTLN "I is between 50 and 60 or 64 or 78
  2641.                 DEFAULT
  2642.                         PRINTLN "i is not a valid value"
  2643.            END SELECT
  2644. THelpTopic
  2645.   DBASE III FUNCTIONS & STATEMENTS
  2646. PPL provide a load of functions & statements to access DBase III files... 
  2647.  STATEMENTS
  2648.  DCREATE    channel,name,exclusive,fieldInfo ; create DBF file
  2649.  DOPEN      channel,name,exclusive           ; open DBF file
  2650.  DCLOSE     channel                          ; close DBF file
  2651.  DSETALIAS  channel,name                     ; set DBF alias
  2652.  DPACK      channel                          ; pack DBF file
  2653.  DLOCK      channel                          ; lock DBF file
  2654.  DLOCKF     channel                          ; lock DBF file (same as DLOCK)
  2655.  DLOCKR     channel,recno                    ; lock a record
  2656.  DLOCKG     channel,recnos,count             ; lock a group of records
  2657.  DUNLOCK    channel                          ; unlock any current locks
  2658.  DNCREATE   channel,name,expression          ; create NDX file
  2659.  DNOPEN     channel,name                     ; open NDX file
  2660.  DNCLOSE    channel,name                     ; close NDX file
  2661.  DNCLOSEALL channel                          ; close all NDX files
  2662.  DNEW       channel                          ; start a new record
  2663.  DADD       channel                          ; add the new record
  2664.  DAPPEND    channel                          ; append a blank record
  2665.  DTOP       channel                          ; go to top record
  2666.  DGO        channel,recno                    ; go to specific record
  2667.  DBOTTOM    channel                          ; go to bottom record
  2668.  DSKIP      channel,number                   ; skip +/- a number of records
  2669.  DBLANK     channel                          ; blank the record
  2670.  DDELETE    channel                          ; delete the record
  2671.  DRECALL    channel                          ; recall the record
  2672.  DTAG       channel,name                     ; select a tag
  2673.  DSEEK      channel,expression               ; string or double
  2674.  DFBLANK    channel,name                     ; blank a named field
  2675.  DGET       channel,name,var                 ; get a value from a named field
  2676.  DPUT       channel,name,expression          ; put a value to a named field
  2677.  DFCOPY     channel,name,channel,name        ; copy a field to a field
  2678.  DCLOSEALL                                   ; close all DBF files
  2679.  FUNCTIONS
  2680.  DRECCOUNT (channel)        (INTEGER)        ; return the number of records
  2681.  DRECNO    (channel)        (INTEGER)        ; return the current record number
  2682.  DBOF      (channel)        (BOOLEAN)        ; return the begin of file status
  2683.  DEOF      (channel)        (BOOLEAN)        ; return the end of file status
  2684.  DDELETED  (channel)        (BOOLEAN)        ; return the deleted flag
  2685.  DCHANGED  (channel)        (BOOLEAN)        ; return the changed flag
  2686.  DFIELDS   (channel)        (INTEGER)        ; return count of fields
  2687.  DNAME     (channel,number) (STRING)         ; return name of numbered field
  2688.  DTYPE     (channel,name)   (STRING)         ; return type of named field
  2689.  DLENGTH   (channel,name)   (INTEGER)        ; return length of named field
  2690.  DDECIMALS (channel,name)   (INTEGER)        ; return decimals of named field
  2691.  DSELECT   (alias)          (INTEGER)        ; returns channel assiciated with alias
  2692.  DSEEK     (channel,expression) (INTEGER)    ; returns error status ( 0|1 )
  2693.                                              ; or seek success (0 = Error
  2694.                                              ; 1 = success, 2 = following record
  2695.                                              ; 3 = end of file )
  2696.  DGETALIAS (channel)        (STRING)                 ; return the current alias
  2697.  DCLOSEALL                  (BOOLEAN) error status   ; close all DBF files
  2698.  DOPEN     (channel,name,exclusive)(BOOLEAN) error   ; open DBF file
  2699.  DCLOSE    (channel)        (BOOLEAN) error status   ; close DBF file
  2700.  DSETALIAS (channel,name)   (BOOLEAN) error status   ; set DBF alias
  2701.  DPACK     (channel)        (BOOLEAN) error status   ; pack DBF file
  2702.  DLOCK     (channel)        (BOOLEAN) error status   ; lock DBF file
  2703.  DLOCKR    (channel,recno)  (BOOLEAN) error status   ; lock a record
  2704.  DUNLOCK   (channel)        (BOOLEAN) error status   ; unlock any current locks
  2705.  DNOPEN    (channel,name)   (BOOLEAN) error status   ; open NDX file
  2706.  DNCLOSE   (channel,name)   (BOOLEAN) error status   ; close NDX file
  2707.  DNCLOSEALL(channel)        (BOOLEAN) error status   ; close all NDX files
  2708.  DNEW      (channel)        (BOOLEAN) error status   ; start a new record
  2709.  DADD      (channel)        (BOOLEAN) error status   ; add the new record
  2710.  DAPPEND   (channel)        (BOOLEAN) error status   ; append a blank record
  2711.  DTOP      (channel)        (BOOLEAN) error status   ; go to top record
  2712.  DGO       (channel,recno)  (BOOLEAN) error status   ; go to specific record
  2713.  DBOTTOM   (channel)        (BOOLEAN) error status   ; go to bottom record
  2714.  DSKIP     (channel,number) (BOOLEAN) error status   ; skip +/- a number of records
  2715.  DBLANK    (channel)        (BOOLEAN) error status   ; blank the record
  2716.  DDELETE   (channel)        (BOOLEAN) error status   ; delete the record
  2717.  DRECALL   (channel)        (BOOLEAN) error status   ; recall the record
  2718.  DTAG      (channel,name)   (BOOLEAN) error status   ; select a tag
  2719.  DFBLANK   (channel,name)   (BOOLEAN) error status   ; blank a named field
  2720.  DGET      (channel,name)   (STRING)                 ; get a value from a named field
  2721.  DPUT      (channel,name,expression)(BOOLEAN) error  ; put a value to a named field
  2722.  DFCOPY    (channel,name,channel,name)(BOOLEAN) error; copy a field to a field
  2723.  DERR      (channel)        (BOOLEAN)        ; return error flag for channel
  2724.  DERRMSG   (errcode)        (STRING)         ; returns last DBase error text.
  2725. CAUTION: DBase functions that return the error status actually return !ERROR. This is to provide a consistent way to express an error in an expression. For example: 
  2726.  if ( DERR (...)) println "Error!"       ;DERR  returns 1 or TRUE on an error.
  2727.  if (!DSEEK(...)) println "Seek failed!" ;DSEEK returns 0 or FALSE on an error.
  2728. NOTE: Where file names are used, file extensions are optional. Any extension you provide will be ignored. DBF and IDX are the default. 
  2729.  channel  :  Any value between 0 and 7
  2730.  name     :  Char string
  2731.  exclusive:  Integer (TRUE || FALSE)
  2732.  fieldinfo:  Character string with the following fields
  2733.              1- Field name
  2734.              2- Field Type
  2735.                  C = Character
  2736.                  N = Numeric
  2737.                  F = Floating Point
  2738.                  D = Date
  2739.                  L = Logical
  2740.                  M = Memo
  2741.              3- Field Length
  2742.              4- Decimal (number of digits to the right of the decimal)
  2743. EXAMPLE: 
  2744.  string finfo(3)
  2745.  let finfo(0) = "First,C,20,0"
  2746.  let finfo(1) = "Last,C,20,0"
  2747.  let finfo(2) = "Phone,C,15,0"
  2748. NOTE: multiple fields require an array of strings. 1 string for each field. @
  2749. expression : Character String with search criteria on a field. 
  2750. EXAMPLE: "
  2751.  string expr
  2752.  let expr = "First"
  2753.  recno,recnos,number,count : integers
  2754. THelpTopic
  2755.   DRIVESPACE ()
  2756. Usage: DRIVESPACE(drivespec) Return Val: Amount of divespace left of drive drivespec. 
  2757. Example: 
  2758.  integer left
  2759.  left = DRIVESPACE("c:\")
  2760.  println "There are ",tostring(left)," bytes on drive C."
  2761. drivespec must include at least a drive letter AND a colon. Backslash is optional. With directory specs it will work also. valid drivespecs are C: C:\ C:\PCB These will all return drivespace left on dirve C s
  2762. *NOTE On LANTASTIC this will return drivespace of the current physical drive even if it is mapped as a directory. 
  2763.   See also : FileInf Delete
  2764. THelpTopic
  2765.   SETLMR
  2766. SETLMR conf#,msg# :
  2767. Set the last read pointers for the specified conference. 
  2768. Example : 
  2769. Integer conf,msg 9
  2770. if(newuser == TRUE) then                  ; If new user 
  2771.         while(conf < HICONFNUM() ) DO     ; set all LMR's to
  2772.                 join conf                 ; HI_MSG - 10
  2773.                 SETLMR conf,HIMSGNUM()-10
  2774.                 INC conf
  2775.         endwhile
  2776. endif 
  2777. If conf# is greater than the number of actual confrences conf# will default to the highest conference number If msg# is greater than the highest message number in that conference, it will default to the highest message number in that conference. This could be used to set a new users mesg pointers to recent messages so they aren't replying to 3 years old messages. A useful feature would be to get the high conference number. 4
  2778.   See also : HiConfNum HiMsgNum ActMsgNum LoMsgNum
  2779. THelpTopic
  2780.   SETENV
  2781. SETENV env_var 
  2782. Set an environment variable 
  2783. Example: 
  2784.  string s
  2785.  let s = "stan=Stan"
  2786.  SETENV s
  2787.  if (GETENV("stan") = "Stan") then
  2788.  Println "Environment variable stan = Stan "
  2789.  endif
  2790. Used to set DOS environment variable. This can be used for PPE's to communicate with other PPE's. The environment variables set within PPL will NOT be available to DOORs.  Environment variables set within PPL will be cleared the next time PCBoard recycles through DOS. !
  2791.  See also : GetEnv, Shell, Call
  2792. THelpTopic
  2793.   FCLOSEALL
  2794. Closes all file channels 
  2795. Example: E
  2796.  fopen 1, "Autoexec.bat"
  2797.  fopen 2, "Config.sys"
  2798.  fcloseall
  2799.   See also : FOpen FClose FCreate FAppend FRewind FNext
  2800. THelpTopic
  2801.   FNEXT()
  2802. Returns an availble file channel. -1 when none are available. 
  2803. Example: 8
  2804.  println "The next available file channel is ",FNEXT()
  2805. FNEXT was created in order to better support code libraries made possible by functions and procedures. File channel numbers can now be determined at runtime. Y
  2806. CAUTION: Until you actually OPEN a file FNEXT will return the same value over and over. @
  2807. chan1 = FNEXT() chan2 = FNEXT()  WRONG! chan1 will equal chan2 )
  2808. another gotcha: FOPEN FNEXT(),blah blah F
  2809. There is no way to determine what channel was used to open the file! -
  2810. Here's an example of how it should be used: #
  2811. chan1 = FNEXT() FOPEN   chan1,... #
  2812. chan2 = FNEXT() FOPEN   chan2,... =
  2813.   See also : FOpen FClose FCreate FAppend FRewind FCloseAll
  2814. THelpTopic
  2815.   HICONFNUM()
  2816. Returns the highest conference number available on the board 
  2817. Example: H
  2818.  integer i
  2819.  println "The highest conference available is ",HICONFNUM()
  2820. If a conference is installed it will be counted, even if it is not being used. 1
  2821.   See also : SetLmr HiMsgNum ActMsgNum LoMsgNum
  2822. THelpTopic
  2823.   OUTBYTES()
  2824. Returns the number of bytes waiting in the modems output buffer Not available in local mode. 
  2825. Example: L
  2826.  integer i
  2827.  println "Bytes waiting in the modem output buffer ",OUTBYTES()
  2828.   See also : InBytes MGetByte SendModem MPrint MPrintLn MdmFlush
  2829. THelpTopic
  2830.   INBYTES()
  2831. Returns number of bytes waiting in the modem input buffer Not available in local mode. 
  2832. Example: @
  2833.  integer i
  2834.  Println "Bytes in modem input buffer = ",INBYTES()
  2835.   See also : OutBytes MGetByte SendModem MPrint MPrintLn MdmFlush
  2836. THelpTopic
  2837.   PCBMAC()
  2838. Returns a BIGSTR containing the expanded text of a PCB MACRO 
  2839. Example: }
  2840.  integer i,j, res
  2841.  j = PCBMAC("@Timelimit@")
  2842.  i = PCBMAC("@Timeused@")
  2843.  res = j-i
  2844.  println "You have ",res, " Minutes left"
  2845.  PCB MACROS not supported:
  2846.  @automore@ @beep@ @clreol@ @cls@ @delay@ @more@ @pause@ @poff@ @pon@ @pos@
  2847.  @qoff@ @qon@ @wait@ @who@ @x@
  2848. THelpTopic
  2849.   CRC32()
  2850. UNSIGNEDTYPE = CRC32(CRC_FILE,"C:\AUTOEXEC,BAT") 3
  2851.              = CRC32(CRC_STR,"Stan is super cool")
  2852. Returns an UNSIGNED value of the CRC of a file or string. 
  2853. Example: O
  2854.  Println "CRC on the file AUTOEXEC.BAT is", CRC32(CRC_FILE,"C:\AUTOEXEC.BAT")
  2855. The constants CRC_FILE and CRC_STR are the same as TRUE and FALSE. They were added to make it easier to see if a file or string was being processed. 
  2856. THelpTopic
  2857.   ACTMSGNUM()
  2858. Returns number of active messages in current conference 
  2859. Example: S
  2860.  integer i
  2861.  println "There are ",ACTMSGNUM()," messages in conference ",CURCONF()
  2862.   See also : Join HiConfNum LoMsgNum HiMsgNum
  2863. THelpTopic
  2864.   STACKLEFT()
  2865. Returns the number of bytes left on the *system* stack. 
  2866. Example: >
  2867.  println "There are ",STACKLEFT()," bytes left on the stack"
  2868.  ;recursive call support
  2869.  function stan(integer i,string str)
  2870.    if(stackleft() > STK_LIMIT) stan(i,"Debra")
  2871.  endfunc
  2872. This function was added to support nested and recursive function calls. Since function calls take a lot of stack space. As of now only about 26 nested or recursive calls can eat up the stack. This lets the programmer know when he/she is running out of stack space as to avoid a runtime error. Both recursion and nested function calls should check this value if more than just a few calls are to be executed. "
  2873.   See also : StackErr StackAbort
  2874. THelpTopic
  2875.   STACKERR()
  2876. Returns a boolean value which indicates a stack error has occured if TRUE. 
  2877. Example: L
  2878.  if (STACKERR()) then
  2879.      println "An error has occured "
  2880.      end
  2881.  endif
  2882. Because of the limited stack space for recursive function calls this function was created. It allows the programmer to determine if a stack error has occured while executing a PPE. This is in addition to the error message when the error occurs. The only way this will be useful is if the PPL programmer has told PPL not to abort on stack errors. PPL will *not* allow system memory to be corrupted when stack space has been exausted. It will disallow any more function calls when there is no system stack space left. *Note nested/recursive procedure calls are limited by heap space, not stack space. #
  2883.   See also : StackLeft StackAbort
  2884. THelpTopic
  2885.   STACKABORT
  2886. STACKABORT TRUE | FALSE 
  2887. Example: #
  2888.  STACKABORT TRUE ;Default is TRUE
  2889. This allows the programmer to tell the runtime module to try its best to continue executing after a stack error has occurred. If it is passed FALSE, it will abort execution after a stack error. If it is passed TRUE the PPE will continue to run. 
  2890. CAUTION! If you continue to execute after a stack error, program execution will be unpredictable. PPL will not allow system memory to be corrupted because of a stack error. !
  2891.   See also : StackLeft StackErr
  2892. THelpTopic
  2893.   DNEXT()
  2894. Returns an available dbase file channel. -1 when none are available. 
  2895. Example: >
  2896.  println "The next available dbase file channel is ",DNEXT()
  2897. DNEXT was created in order to better support code libraries made possible by functions and procedures. File channel numbers can now be determined at runtime. Y
  2898. CAUTION! Until you actually OPEN a file DNEXT will return the same value over and over. @
  2899. chan1 = DNEXT() chan2 = DNEXT()  WRONG! chan1 will equal chan2 #
  2900. another gotcha: FOPEN DNEXT(),... F
  2901. There is no way to determine what channel was used to open the file! -
  2902. Here's an example of how it should be used: #
  2903. chan1 = DNEXT() FOPEN   chan1,... #
  2904. chan2 = DNEXT() FOPEN   chan2,... 
  2905.   See also : DBase
  2906. functions
  2907. THelpTopic
  2908.   TODDATE (DATE date)
  2909. Converts any PPL type to DDATE type. 
  2910. Example: 
  2911.  DATE d1
  2912.  DDATE d2
  2913.  d2 = TODDATE(d1)
  2914. This is an explicit type conversion. Implicit type conversion is also valid as with all other PPL types. *
  2915.   See also : Date DDate
  2916. type MkDate
  2917. THelpTopic
  2918.   FREALTUSER
  2919. Since only one GETALTUSER can be active at one time, FREALTUSER can allow other processes which need to use GETALTUSER (such as the MESSAGE commend) to do so. 
  2920. Example: N
  2921.  string name
  2922.  GETALTUSER 20
  2923.  name = U_NAME()
  2924.  FREALTUSER
  2925.  message 1,name,...
  2926.   See also : GetAltUser GetUser PutAltUser PutUser
  2927. THelpTopic
  2928.   ACCOUNTING
  2929. Several functions and statements have been added to support PCBoard accounting features. Also, many system constants have been added to make using these funtions and statements easier for the PPL programmer. 
  2930. CONSTANTS 
  2931. There are three new functions which return accounting information. Each function will return a value based on a parameter passed to it. Several constants have been added to make accessing these values easier. The following list details these consts and what they are used for. !
  2932. for use with PCBACCOUNT() only! 
  2933.  val  const           Associated value
  2934.  -------------------------------------------------------------------
  2935.   0   NEWBALANCE      Credits Given to a new user account
  2936.   1   CHRG_CALL       Credits charged for a call
  2937.   2   CHRG_TIME       Credits charged for time used (in minutes)
  2938.   3   CHRG_PEAKTIME   Credits charged for peak time used
  2939.   4   CHRG_CHAT       Credits charged for chat session
  2940.   5   CHRG_MSGREAD    Credits charged for reading a message
  2941.   6   CHRG_MSGCAP     Credits charged for capturing a message
  2942.   7   CHRG_MSGWRITE   Credits charged for writing a message
  2943.   8   CHRG_MSGECHOED  Credits charged for writing an echoed message
  2944.   9   CHRG_MSGPRIVATE Credits charged for writing a private message
  2945.  10   CHRG_DOWNFILE   Credits charged for downloading a file
  2946.  11   CHRG_DOWNBYTES  Credits charged for downloading bytes
  2947.  12   PAY_UPFILE      Credits given   for uploading a file
  2948.  13   PAY_UPBYTES     Credits given   for uploading bytes
  2949.  14   WARN_LEVEL      Credit  threshold for low credit warning
  2950. The following are for use with PCBACCSTAT() only! 
  2951.  val    constant     Associated value
  2952.  -------------------------------------------------------------------
  2953.   0      ACC_STAT    Returns status of the "Enable Accounting"
  2954.                      switch in the PWRD file.  0=Accounting
  2955.                      disabled (N), 1=Tracking (T), and
  2956.                      2=Enabled (Y).
  2957.   1      ACC_TIME    The amount of ADDITIONAL units to charge
  2958.                      per minute while in the current
  2959.                      conference.
  2960.   2      ACC_MSGR    The amount to charge in ADDITION for each
  2961.                      message read in the current conference.
  2962.   3      ACC_MSGW    The amount to charge in ADDITION for each
  2963.                      message entered in the current conference.
  2964. The following are for use with ACCOUNT(), ACCOUNT and RECORDUSAGE only! 
  2965.  val constant       description                                example
  2966.  ----------------------------------------------------------------------
  2967.   0  START_BAL       Users starting balance.
  2968.   1  START_SESSION   Users starting balance for this session
  2969.   2  DEB_CALL        Debit for this call
  2970.   3  DEB_TIME        Debit for time on
  2971.   4  DEB_MSGREAD     Debit for reading message
  2972.   5  DEB_MSGCAP      Debit for capturing a message
  2973.   6  DEB_MSGWRITE    Debit for writing a message
  2974.   7  DEB_MSGECHOED   Debit for echoed message
  2975.   8  DEB_MSGPRIVATE  Debit for writing private message
  2976.   9  DEB_DOWNFILE    Debit for downloading a file
  2977.  10  DEB_DOWNBYTES   Debit for downloading bytes
  2978.  11  DEB_CHAT        Debit for chat
  2979.  12  DEB_TPU         Debit for TPU
  2980.  13  DEB_SPECIAL     Debit special
  2981.  14  CRED_UPFILE     Credit for uploading a file
  2982.  15  CRED_UPBYTES    Credit for uploading bytes
  2983.  16  CRED_SPECIAL    Credit special
  2984.  17  SEC_DROP        Security level to drop to at 0 credits
  2985. This group of constants can be used to access or modify user account information using the ACCOUNT() function, ACCOUNT statement and/or RECORDUSAGE. The ACCOUNT() function returns the current value and the ACCOUNT statement is used to modify a value. Record usage also modifies a value with more information stored in a usage file. "
  2986.   See also : Account RecordUsage
  2987. THelpTopic
  2988.   ACCOUNT(INTEGER field)
  2989.   ACCOUNT INTEGER field, INTEGER value
  2990. 1) the ACCOUNT() function V
  2991. Returns amount of credits charged for services corresponding to the field parameter. 
  2992. Example: A
  2993.  println "You have been charged ",ACCOUNT(DEB_CHAT)," for chat"
  2994. field is the field number to access (1-14) or using DEB_ constants c
  2995. See the Accounting section for a list of constants witch can be used with the ACCOUNT() function. 
  2996. The account function is used to retrieve account information from PCBoard. These are the constants which can be used with the ACCOUNT() function. 
  2997. 2) The ACCOUNT Statement 
  2998. field is a value between 0-14. Using system constants is reccomended. value is the amount of credits to add or subtract to field the field 
  2999. Example: 
  3000.  ACCOUNT DEB_CHAT,10
  3001. The ACCOUNT statement is used to modify accounting information for a user. This statement will simply modify a debit value whereas the RECORDUSAGE will do the same thing as well as record information in the accounting file. 
  3002. The valid constants for this statement are the same as those used for the ACCOUNT() Function. See the Accounting section for a list of those consts %
  3003.   See also : Accounting RecordUsage
  3004. THelpTopic
  3005.   RECORDUSAGE ...
  3006. Usage : RECORDUSAGE INTEGER field,STRING desc1,STRING desc2,DWORD unitcost,INTEGER value 
  3007. Example: ;
  3008.  RECORDUSAGE DEB_CHAT,"Debit for chat", "Using PPE",10,10
  3009. field is the field number to access (using DEB_... consts) descr1 is the descripttion of the charge descr2 is a subdescription of the charge unitcost is the cost per unit value is the number of units }
  3010. Recordusage will update debit values in PCBoard as well as record descriptions and other information in an accounting file. 
  3011. Valid values for the field parameter are 2-16. The constants corresponding with these values (DEB_???) could and should be used here. (see the Accounting section for a list of consts) 7
  3012.   See also : Accounting Account PCBAccount PcbAccStat
  3013. THelpTopic
  3014.   PCBACCOUNT(INTEGER field)
  3015. Returns what PCBoard will charge a user for a certain activity. These are values the SysOp assigns in PCBsetup when accounting is configures and enabled. 
  3016. Example: C
  3017.  println "You will be charged ",PCBACCOUNT(CHRG_CHAT)," for chat"
  3018. Valid values for the field paramter are 0-14. Use of the corresponding constants is encouraged. (see the Accounting section) 8
  3019.   See also : Accounting Account RecordUsage PcbAccStat
  3020. THelpTopic
  3021.   PCBACCSTAT(INTEGER field)
  3022. Returns value in status field 
  3023. Example: ;
  3024.  PRINTLN "Mutiplier for credits is ",PCBACCSTAT(ACC_STAT)
  3025. This function can and should be used in conjunction with the ACC_??? constants as the field parameter. Valid values for field are 0-3. (see the Accounting section) 9
  3026.   See also : Accounting Account RecordUsage RecordUsage
  3027. THelpTopic
  3028.   MESSAGE HEADER FIELD ACCESS CONSTANTS
  3029.     Field      Value hex    dec    Field Description
  3030.  -------------------------------------------------------------------
  3031.     HDR_ACTIVE       0x0E   14     Message active flag field
  3032.     HDR_BLOCKS       0x04    4     Number of 128 byte blocks in message
  3033.     HDR_DATE         0x05    5     Date message was written
  3034.     HDR_ECHO         0x0F   15     Echoed message flag
  3035.     HDR_FROM         0x0B   11     Who the message is from
  3036.     HDR_MSGNUM       0x02    2     Message number
  3037.     HDR_MSGREF       0x03    3     Reference message
  3038.     HDR_PWD          0x0D   13     Message password
  3039.     HDR_REPLY        0x0A   10     Message reply flag
  3040.     HDR_RPLYDATE     0x08    8     Reply message date
  3041.     HDR_RPLYTIME     0x09    9     Reply message time
  3042.     HDR_STATUS       0x01    1     Message status
  3043.     HDR_SUBJ         0x0C   12     Message subject
  3044.     HDR_TIME         0x06    6     Message time
  3045.     HDR_TO           0x07    7     Who the message is to.
  3046. These constants are for use with SCANMSGHDR(conf_num,start_msg,field,text) in the FIELD parameter. 
  3047.   See also : ScanMsgHdr
  3048. THelpTopic
  3049.   SCANMSGHDR(conf,start_msg,field,test)
  3050. Returns the first message number in the message base which matches the search criteria. 
  3051. Example: 7
  3052.  integer msgno
  3053.  msgno = SCANMSGHDR(0,1,HDR_TO,"Stan")
  3054. This function can be used to scan PCBoard message bases for certain information. All fields in the standard header can be searched. There are 15 fields in the standard header. Valid values for field are 1-15. See the list of constants related to this function. 0
  3055.   See also : MsgToFile Message
  3056. Header
  3057. Constats
  3058. THelpTopic
  3059.   MSGTOFILE conf,msg_no,filename
  3060. Writes a message into a file. 
  3061. Example: h
  3062.  ;Using SCANMSGHDR to search for a message
  3063.  MSGTOFILE 0,200,"d:\msg1.txt"
  3064.  DISPFILE "D:\msg1.txt",DEFS
  3065. This statement will take the given message and write it to a text file. The file's first 15 lines will contain standard header information. (One field per line) The headers are formatted to make parsing easier. The 16th line will state how many extended headers are present. The following line(s) will contain extended headers. (one per line) Finally, after the extended headers, will be a line containing "Message body:". Everything after that is the body of the message. 3
  3066.   See also : ScanMsgHdr, DispFile, HDR_...
  3067. Consts
  3068. THelpTopic
  3069.   QWKLIMITS field,limit
  3070.   QWKLIMITS(field)
  3071. 1) The QWKLIMITS Statement z
  3072. This statement allows the PPL programmer to modify a users QWK limits. Four fields can be modified with their statement. O
  3073. Important note. You *must* use GET USER AND PUTUSER with these QWK functions. 
  3074. Example: *
  3075.  GETUSER
  3076.  QWKLIMITS MAXMSGS,500
  3077.  PUTUSER
  3078. - Max Messages: Maximum messages allowed in a qwk packet 
  3079.                 * Note: If you specify a number higher than that contained
  3080.                         in PCBSETUP the values in PCBSETUP will be used.
  3081. - Max Messages per Conference: Maximum messages allowed in a qwk packet per conference. 
  3082.                  * Note: If you specify a number higher than that contained
  3083.                          in PCBSETUP the values in PCBSETUP will be used.
  3084. - Personal Attach Limit: Maximum number of bytes in attached files for the user. P
  3085. - Public Attach Limit: Maximum number of bytes in attached files for the user. ?
  3086. Four constants have been defined to identify the FIELD value. 
  3087.  Constant        Value     Field
  3088.  MAXMSGS         0         Max messages per qwk packet
  3089.  CMAXMSGS        1         Max Messages per conference
  3090.  ATTACH_LIM_U    2         Personal attach bytes limit
  3091.  ATTACH_LIM_P    3         Public attach bytes limit
  3092. 2) The QWKLIMITS() function 
  3093. This functions returns the values contained in the users QWK configuration. The same constants used in the QWKLIMITS statements can be used with the field parameter. 
  3094. Example: '
  3095.  GETUSER
  3096.  PRINTLN QWKLIMITS(MAXMSGS)
  3097. THelpIndex
  3098. ] in conjunction with the ACC_???  constants as the field parameter. Valid values for field are 0-3. (see the Accounting section) 
  3099. THelpTopic
  3100.   MESSAGE HEADER FIELD ACCESS CONSTANTS
  3101.     Field      Value hex    dec    Field Description
  3102.  -------------------------------------------------------------------
  3103.     HDR_ACTIVE       0x0E   14     Message active flag field
  3104.     HDR_BLOCKS       0x04    4     Number of 128 byte blocks in message
  3105.     HDR_DATE         0x05    5     Date message was written
  3106.     HDR_ECHO         0x0F   15     Echoed message flag
  3107.     HDR_FROM         0x0B   11     Who the message is from
  3108.     HDR_MSGNUM       0x02    2     Message number
  3109.     HDR_MSGREF       0x03    3     Reference message
  3110.     HDR_PWD          0x0D   13     Message password
  3111.     HDR_REPLY        0x0A   10     Message reply flag
  3112.     HDR_RPLYDATE     0x08    8     Reply message date
  3113.     HDR_RPLYTIME     0x09    9     Reply message time
  3114.     HDR_STATUS       0x01    1     Message status
  3115.     HDR_SUBJ         0x0C   12     Message subject
  3116.     HDR_TIME         0x06    6     Message time
  3117.     HDR_TO           0x07    7     Who the message is to.
  3118. These constants are for use with SCANMSGHDR(conf_num,start_msg,field,text) in the FIELD parameter. 
  3119. THelpTopic
  3120.   SCANMSGHDR(conf,start_msg,field,test)
  3121. Returns the first message number in the message base which matches the search  criteria. 
  3122. Example:  5
  3123. integer msgno msgno = SCANMSGHDR(0,1,HDR_TO,"Stan")     
  3124. This function can be used to scan PCBoard message bases for certain  information. All fields in the standard header can be searched. There are  15 fields in the standard header. Valid values for field are 1-15.  See the list of constants related to this function. 
  3125.   See also : MsgToFile
  3126. THelpTopic
  3127.   MSGTOFILE conf,msg_no,filename
  3128. Writes a message into a file. 
  3129. Example:  e
  3130. ;Using SCANMSGHDR to search for a message MSGTOFILE 0,200,"d:\msg1.txt" DISPFILE "D:\msg1.txt",DEFS 
  3131. This statement will take the given message and write it to a text file.  The file's first 15 lines will contain standard header information.  (One field per line) The headers are formatted to make parsing easier.  The 16th line will state how many extended headers are present. The following line(s) will contain extended headers. (one per line) Finally, after the extended headers, will be a line containing  "Message body:". Everything after that is the body of the message. 3
  3132.   See also : ScanMsgHdr, DispFile, HDR_...
  3133. Consts
  3134. THelpTopic
  3135.   QWKLIMITS field,limit
  3136.   QWKLIMITS(field)
  3137. 1) The QWKLIMITS Statement {
  3138. This statement allows the PPL programmer to modify a users QWK limits.  Four fields can be modified with their statement. O
  3139. Important note. You *must* use GET USER AND PUTUSER with these QWK functions. 
  3140. Example: '
  3141. GETUSER QWKLIMITS MAXMSGS,500 PUTUSER ;
  3142. - Max Messages: Maximum messages allowed in a qwk packet 
  3143.                 * Note: If you specify a number higher than that contained
  3144.                         in PCBSETUP the values in PCBSETUP will be used.
  3145. - Max Messages per Conference: Maximum messages allowed in a qwk packet per conference. 
  3146.                  * Note: If you specify a number higher than that contained
  3147.                          in PCBSETUP the values in PCBSETUP will be used.
  3148. - Personal Attach Limit: Maximum number of bytes in attached files for the user. P
  3149. - Public Attach Limit: Maximum number of bytes in attached files for the user. ?
  3150. Four constants have been defined to identify the FIELD value. #
  3151.  Constant        Value     Field
  3152.  MAXMSGS         0         Max messages per qwk packet
  3153.  CMAXMSGS        1         Max Messages per conference
  3154.  ATTACH_LIM_U    2         Personal attach bytes limit
  3155.  ATTACH_LIM_P    3         Public attach bytes limit
  3156.                                       
  3157. 2) The QWKLIMITS() function '
  3158.                                       
  3159. This functions returns the values contained in the users QWK configuration. The same constants used in the QWKLIMITS statements can be used with the  field parameter. -
  3160. Example: GETUSER PRINTLN QWKLIMITS(MAXMSGS) 
  3161. THelpIndex
  3162.