; ***************************************************************** ; * * ; * PPE-Script V 1.90 (06-01-95) * ; * * ; * Written in PPL 3.10 for PCBoard 15.21 * ; * * ; * Designed By: Gary Meeker * ; * * ; * Began development: 06-23-93 * ; * * ; ***************************************************************** PPE-Script is a control file driven PPE for use a LOGON/LOGOFF/NEWASK script or for any of the Script Questionnaires. It could also be attached as a command or possibly any other place you can use a .PPE file. (let us know if you come up with a different useful place to run it from.) When used as a LOGON/LOGOFF/NEWASK questionnaire, you should copy PPE-SCR.PPE to LOGON.PPE/LOGOFF.PPE/NEWASK.PPE as it is not possible to have a command line argument to specify the Configuration file to be used. When no command line argument is present then the path\name of the .PPE is used with .CNF as the file extension. A Configuration file is mandatory and you must have one for each script you want to run (but not sub-scripts). Below is an example of the program used as the New Reg Quest. having been renamed to NEWASK.PPE and NEWASK.CNF resides in the same directory as the PPE. File Locations NewUser/Logon/Logoff Questionnaires Name/Loc of New Reg Questionnaire : C:\PCB\PPE\NEWASK.PPE Name/Loc of Answers to New Reg. : C:\PCB\MAIN\NEWREG Name/Loc of Logon Script Quest. : C:\PCB\PPE\LOGON Name/Loc of Logon Script Answers : Name/Loc of Logoff Script Quest. : C:\PCB\PPE\LOGOFF Name/Loc of Logoff Script Answers : NOTE: You must also set the following to YES or it will not work!: Configuration Options System Control Use NEWASK+Standard Questions : Y Config File Format ------------------ There are 16 lines in the configuration file (see example file). 1: Sysop Name This is the information shown as registration name. 2: Board Name This is the information shown as registration board and should be entered the same as it appears on line 94 of your PCBOARD.DAT file. 3: Registration Number (or blank) If registered, place your number here to remove the delay on unregistered versions. 4: Welcome Screen to be displayed (Filename) The Drive:\Path\FileName of the file to be displayed prior to the User being asked if they wish to answer the script. 5: Max Attempts; Min Sec Level; Max Sec Level; Refused Level ;Exp Level; Exp Days; Adjustment to Total Files; Adjustment to Total Bytes; Adjustment to Daily Download Bytes; Adjustment to Time for Today; Conference List;Expired Conference List This line contains 12 parts: Max Attempts: The number of times the user will be allowed to fail to answer a question. If left blank the default will be 3. Min Sec level, Max Sec Level: If the Users level is outside this range they will be shown the text on line 8 and the script will be halted. (This counts as two parts). Refused Level: This is the level given to the User if they choose not to answer the script. Leave blank if you do not wish to change the level. Exp Level: This is the exp level given to the User if they choose not to answer the script. Leave blank if you do not wish to change the level. Exp Days: This is the number of days till expiration given to the User if they choose not to answer the script. Leave blank if you do not wish to change the level. Adjustment to Total Files: This is an adjustment to the Total files the User has downloaded if they choose not to answer the script and may be a negative value. If set to 'X' the value will be zeroed. Adjustment to Total Bytes: This is an adjustment to the Total bytes the User has downloaded if they choose not to answer the script and may be a negative value. If set to 'X' the value will be zeroed. Adjustment to Daily Download Bytes: This is an adjustment to the number of bytes the user has download today if they choose not to answer the script and may be a negative value. If set to 'X' the value will be zeroed. Adjustment to Time for Today: This is an adjustment to Today's time limit if they choose not to answer the script and may be a negative value. Conference List: This is a list of conferences to register the User in and may include ranges. (ie. 1-10,15,17,20-39) Expired Conference List: This is a list of conferences to register the User in when they expire and may include ranges. (ie. 1-10,15,17,20-39) 6: Age Source; Sex Source; Position; SexAnswers This line contains 4 parts: Age/Sex Source: 0 = None (Have to ask Question to get it) 1 = User Comment Field (Max Characters = 30) 2 = Sysop Comment Field (Max Characters = 30) 3 = Verify PSA Field (Max Characters = 25) 4 = Notes 1 PSA Field (Max Characters = 60) 5 = Notes 2 PSA Field (Max Characters = 60) 6 = Notes 3 PSA Field (Max Characters = 60) 7 = Notes 4 PSA Field (Max Characters = 60) 8 = Notes 5 PSA Field (Max Characters = 60) 9 = Addr 1 PSA Field (Max Characters = 50) 10 = Addr 2 PSA Field (Max Characters = 50) 11 = Addr 3 PSA Field (Max Characters = 25) 12 = Addr 4 PSA Field (Max Characters = 10) 13 = Addr 5 PSA Field (Max Characters = 10) 14 = Addr 5 PSA Field (Max Characters = 15) 15 = User Name Field (Yeah, it's here but not much use) 16 = Alias Field (Max Characters = 25) 17 = Password Field (Max Characters = 12) 18 = City & State Field (Max Characters = 24) 19 = Business/Data Phone Number Field (Max Characters = 13) 20 = Home/Voice Phone Number Field (Max Characters = 13) Position: Character within string at which Sex is stored (The Date of Birth must be at position 1 to obtain the age, so no position is needed.) SexAnswers: The Answers allowed for Sex, if left blank the default of 'MF' is used. This allows for multi-language support. The purpose of this information is to obtain the Users Age and Sex, which of course makes the assumption that you have already obtained the information from the User and placed somewhere in the Users record. So the above allows you to inform PPE-SCRipt just where you put it. If you don't plan to put any questions into your script that will be making decisions based on the Users age or Sex then you can just leave all this blank. Also if you obtain the information in the script itself by asking the User for the information, then this portion of the .CNF file can be left blank. 7: Log changes to CALLERS file; Write Questions to Answer file; Write "Q: " & "A: " to Answer File; Write Skipped questions to the Answer file; Question Color; Answer Color; Jump Backwards; Write Questions to Message file; Write Skipped questions to the Message file This line contains 9 parts: Log changes to CALLERS file: 1 for Yes, 0 for No. If set to YES then changes to Security Level or Conference Registrations will be logged to the CALLERx file. Write Questions to Answer file: 1 for Yes, 0 for No. If set to YES the questions will be written to the Answer file. Write "Q: " & "A: " to Answer File: 1 for Yes, 0 for No. If set to YES the questions and answers will be preceded by this text. Write Skipped Questions to Answer file: 1 for Yes, 0 for No. If set to YES then Questions (if Write Questions to Answer file is Yes) and an answer of '[N/A]' will be written to the Answer file to maintain a consistent length for every questionnaire (especially useful if not writing the questions to the file). Question Color: The Color to use for the questions. If left blank the default color will be used. The value may be given in decimal or or using PCBoards #Xnn codes. Answer Color: The Color to use for the answers. If left blank the default color will be used. The value may be given in decimal or or using PCBoards #Xnn codes. Jump Backwards: 1 for Yes, 0 for No. If set to Yes then the search for labels will begin at the start of the file allowing jumping backwards, otherwise the search will start at the next line (allowing the same label name to be reused if you want). Write Questions to Message file: 1 for Yes, 0 for No. If set to YES the questions will be written to the Message file if it is being used. If left blank then it will default to the same as Write Questions to Answer file. Write Skipped Questions to Message file: 1 for Yes, 0 for No. If set to YES then Questions (if Write Questions to Message file is Yes) and an answer of '[N/A]' will be written to the Message file to maintain a consistent length for every questionnaire (especially useful if not writing the questions to the file). If left blank then it will default to the same as Write Skipped Questions to Answer file. 8: Use 'Min='; Use '==--' display; Issue NewLine; 'Min=' Color; '=' Guide Color; '-' Guide Color This line contains 6 parts: Use 'Min=': 1 for Yes, 0 for No. If set to YES the minimum size will be displayed to the user. Use '==--' display: 1 for Yes, 0 for No. If set to YES the guide will be displayed showing minimum size as '=' and '-' as field length. Issue NewLine: 1 for Yes, 0 for No. If set to YES then a NEWLINE will be issued after each question (an extra blank line like PCBoard). 'Min=' Color: The Color to use for the 'Min=' text. If left blank the default color will be used. '=' Guide Color: The Color to use for the '=' guide. If left blank the '-' Guide Color: The Color to use for the '-' guide. If left blank the default color will be used. 9: Text to display if not allowed to answer Script due to security level (%Filename allowed) If the security range of the User is outside the range defined in line 4, then this text will be displayed. You may use PCBoard's %filespec to display a file here. 10: Prompt to ask for continuing This is the prompt to display to the User asking if they want to answer the script. If left blank, they will be forced to answer the script. 11: Text to display after completing Script (%Filename allowed) This text will be displayed to the User after completing the script. You may use PCBoard's %filespec to display a file here. 12: Path for Script Files This is the Drive:\Path\ spec for the location of the Script files. If left blank then the path of the PPE will be used. 13: Beginning Script File This is the FILENAME.EXT of the starting script. (no path) 14: Answer file (if not installed as NEWASK/LOGON/LOGOFF or a Script) This is the FILENAME.EXT of the answer file. If this is used as a NEWASK/LOGON/LOGOFF or a Script then this line should be blank and the default file will be used as setup under PCBSETUP. 15: Message file; Message Header This line contains 2 parts: This is the FILENAME.EXT of the message file. If this is not blank then the file will be opened and the Questions and Answers will be written to this file as well as the normal answer file to allow sending the file as a message to the Sysop. The file will be deleted at the end of the script. Message Header controls whether the Users complete registration information will also be written to the message file. 16: Caller ID Information Search;Private;Outside;CallerIDLogFile;HexFormat This line contains 5 parts: Search Text: This is the text to search for in order to find the phone number, ie. Supra: "NMBR = " ZyXEL: "NUMBER: " You may also directly place the numeric value of the position of the number in this field. Note: do not include the quotes ("). They are shown only for clarity. To include a space at the end of the search string as shown, use ALT-255 in place of a space. Private: This is the character that indicates a Private Number. usually P (will default to P if left blank) Outside: This is the character that indicates a Long Distance Number. usually O (will default to O if left blank) Caller ID Log File: This is the FILENAME.EXT of the Caller ID Log file. If this is not blank it will be used to append the Caller ID data when using the Caller ID Test command. HexFormat: This is a flag to indicate the phone number is in Hex and needs to be converted (such as in Canada) Any lines that you do not need can be left completely blank but the line must exist even if left blank (as a space holder of sorts). The exception being that if the last lines of the .CNF file are all blank you can just leave them out and PPE-SCRipt will treat them as blank lines anyways. The same goes for the ';' at the end of any line. You can leave them off of the end of any line, ie. 3;20;200; ; ; ; ; ; ; ; ; is the same as 3;20;200;;;;;;;;; which is the same as 3;20;200 The only reason they are included in the examples is to serve as space holders so you can see the number of fields each option has, which makes it easier to edit a file later. Script.Dat Format ----------------- The SCRIPT.DAT control file is the key to the operation of PPE-Script and contains as many lines as you desire. There are 21 basic types of lines in the format as described below. The first character of the line defines the type of line. The first 20 types are single line entries. If the User is to be given a new level after answering the script then you must use at least one of the 'Register User' entries (probably as the last line). Branching from one script file to another is possible up to five levels deep and the script will be returned to when the file branched to is done. 1) Comment Logging Line used in .DAT file: >Comment Text The Text following the '>' will be written to the Answer file but not displayed to the User. 2) Comment Logging & Display Line used in .DAT file: &Comment Text The Text following the '&' will be written to the Answer file and displayed to the User. 3) Comment Display Line used in .DAT file: #Comment Text The Text following the '#' will be displayed to the User but not written to the Answer file. 4) Caller File Logging Line used in .DAT file: @Log Text The Text following the '@' will be written to the Caller Log file but not written to the Answer file or displayed to the User. 5) File Display Line used in .DAT file: %Drive:\Path\FileName.ext The file is displayed via DISPFILE so if you do not include an extension PCBoard will display a Security Level/Graphics/Language appropriately. 6) Register User Line used in .DAT file: (contains 11 fields) R; ;50;40;365; ; ; ; ;Conference List;Expired Conference List | | | | | | | | | ^--- as described below | | | | | | | | ^--- as described below | | | | | | | ^--- Adjustment to Time for Today | | | | | | ^--- Adjustment to Daily Download Bytes ('X' to Zero) | | | | | ^--- Adjustment to Total Bytes Downloaded ('X' to Zero) | | | | ^--- Adjustment to Total Files Downloaded ('X' to Zero) | | | ^--- Days till expired to assign | | ^--- Expired Level to assign | ^--- Security Level to assign ^--- Register if: Blank: Always 1: Last answer was TRUE (YES, Male, or within range) 2: Last answer was FALSE (NO, Female or NOT within range) 3: No failed answers (User refused to answer a question) 4: Last Answer was TRUE & No Failed Answers 5: Last Answer was FALSE & No Failed Answers 10: Always, unless Register already executed 11: Last answer was TRUE and Register not executed already 12: Last answer was FALSE and Register not executed already 13: No failed answers and Register not executed already 14: Last Answer was TRUE & No Failed Answers and Not Register 15: Last Answer was FALSE & No Failed Answers and Not Register The Conference List entries are the conferences to register the User in and may include ranges. (ie. 1-10,15,17,20-39) Note: The last 'R' command line encountered is the one that will take effect. you need to be careful to design your scripts to branch over any other 'R' commands once you have execute one of them. This can be confusing when branching to a different script where you issue an 'R' command if you also issue a 'R' command upon return to the original script. However, issuing the 'R' command is usually the last thing you will do in a script so you can use the 'B' command to END the script (and any previous levels without returning to the previous level) at that point, ie. R;3;35;20;365;;;;;; B;;;;[END]; This can also now be overcome by selections 10-15 which prevent a second execution of the Register (or Indirect Register) command (provided the first Register command met the criteria and actually did the registration). Also, you can now place a '+' or '-' in front of the security value to inform PPEScript you are raising or lowering the level and it will not adjust the value if the current level is higher or lower already. ie. R;3;+35;+20;365;;;;;; This will set the Users Security Level to 35 only if it lower than that already and set the Expired Level to 20 only if it is lower. This is especially useful when testing a script as the Sysop so your level does not get dropped. 7) Indirect Register User Line used in .DAT file: (contains 3 (or 12) fields) I; ;filename.ext;(default information, 9 fields) | ^--- File to read for the above registration information ^--- Register if: 128,Blank: Always 129,1: Last answer was TRUE (YES, Male, or within range) 130,2: Last answer was FALSE (NO, Female or NOT within range) 131,3: No failed answers (User refused to answer a question) 132,4: Last Answer was TRUE & No Failed Answers 133,5: Last Answer was FALSE & No Failed Answers 139,10: Always, unless Register already executed 140,11: Last answer was TRUE and Register not executed already 141,12: Last answer was FALSE and Register not executed already 142,13: No failed answers and Register not executed already 143,14: Last Answer was TRUE & No Failed Answers and Not Register 144,15: Last Answer was FALSE & No Failed Answers and Not Register In Indirect registration, the filename specified is read to obtain the registration information. The information takes the same format as in Register User starting with the 'Security Level to assign' field. You may also include default information after the filename to be used in the event that the line read is blank. When using 128-131 then PPE-Script will read the line number from the file based on the last numeric answer. This is useful for menu selections or errorlevels returned by external programs. 8) Message Line used in .DAT file: (contains 9 fields) M;0;SYSOP; ;NEW USER;R;0;0;0;FileName | | | | | | | | ^--- Filename to use for the message text | | | | | | | ^--- TRUE if message should be echoed | | | | | | ^--- TRUE if return receipt desired | | | | | ^--- Pack out date (0 for no pack out date) | | | | ^--- Security (N or R; N is the default) | | | ^--- Subject | | ^--- From user (empty string defaults to current caller) | ^--- To user (empty string defaults to current caller) ^--- Conference Number Allows sending message to User or to Sysop (or anyone else). If the filename is blank and you specified a message file in the .CNF file, you can send the Users answers to the Sysop. 9) Join Conference Line used in .DAT file: J;12 ^--- The conference to place the User in. This will place the User in a specific conference (via LASTIN). 10) Branch to New Script (will return to this Script) Line used in .DAT file: (contains 5 fields) B;4;5;9;NEXT.DAT;DENIED.DAT | | | | ^--- Script to run if Test is FALSE | | | | (NO, Female or NOT within range) | | | ^--- Script to run if Test is TRUE | | | (YES, Male, or within range) | | ^--- Maximum (if type 2, 4, 5 or 6 else ignored) | ^--- Minimum (if type 2, 4, 5 or 6 else ignored) ^--- Type of Test: Blank: Always true 1: Last Question 2: Age Range (use Minimum/Maximum) 3: Sex 4: Security Level (use Minimum/Maximum) 5: Times On the System (use Minimum/Maximum) 6: Last Question from Numeric Question (use Minimum/Maximum) 11) CALL another .PPE Line used in .DAT file: (contains 5 fields) C;4;5;9;NEXT.PPE;Command Line | | | | ^--- Command line for program | | | ^--- PPE to call if Test is TRUE | | | (YES, Male, or within range) | | ^--- Maximum (if type 2, 4, 5 or 6 else ignored) | ^--- Minimum (if type 2, 4, 5 or 6 else ignored) ^--- Type of Test: Blank: Always true 1, 129: Last Question 2, 130: Age Range (use Minimum/Maximum) 3, 131: Sex 4, 132: Security Level (use Minimum/Maximum) 5, 133: Times On the System (use Minimum/Maximum) 6, 134: Last Question from Numeric Question (use Minimum/Maximum) Note: Two values are shown for each of the selections above. The first set (1 - 6), indicates the Call is made if the test is True. the second (129 - 134) indicates the Call is made if the test is False (or in the case of Sex if the User is Female). ie: C;132;5;9;NEXT.PPE;Command Line | ^--- Command line for program ^--- PPE to call if Test is FALSE (NO, Female, or NOT within range) The PPE will be called if the Users security level is less than 5 or greater than 9, just the opposite of the first example given. 12) SHELL to external program Line used in .DAT file: (contains 5 fields) S;4;5;9;NEXT.EXE;Command Line | | | | ^--- Command line for program | | | ^--- Program to execute if Test is TRUE | | | (YES, Male, or within range) | | ^--- Maximum (if type 2, 4, 5 or 6 else ignored) | ^--- Minimum (if type 2, 4, 5 or 6 else ignored) ^--- Type of Test: Blank: Always true 1, 129: Last Question 2, 130: Age Range (use Minimum/Maximum) 3, 131: Sex 4, 132: Security Level (use Minimum/Maximum) 5, 133: Times On the System (use Minimum/Maximum) 6, 134: Last Question from Numeric Question (use Minimum/Maximum) Note: Two values are shown for each of the selections above. The first set (1 - 6), indicates the Shell is made if the test is True. the second (129 - 134) indicates the Shell is made if the test is False (or in the case of Sex if the User is Female). The full Drive:\Path of the .EXE will be required if it is not in the current directory. Selling is not done via COMMAND.COM in order to return the error code of the program executed. The error code returned by the program will be stuffed into the Last Question Numeric Answer variable to be acted upon by further Branch, Call & Shell commands. WRUSYS is executed before SHELLing and RDUSYS is executed after return to PPE-Script allowing the executed program to modify USERS.SYS or PCBOARD.SYS and have the changes accepted. 13) Execute PCBoard Command Line used in .DAT file: (contains 5 fields) E;4;5;9;1;Command Line | | | ^--- Command line for program | | | ^--- Search CMD.LST (FALSE = No, TRUE = Yes) | | ^--- Maximum (if type 2, 4, 5 or 6 else ignored) | ^--- Minimum (if type 2, 4, 5 or 6 else ignored) ^--- Type of Test: Blank: Always true 1, 129: Last Question 2, 130: Age Range (use Minimum/Maximum) 3, 131: Sex 4, 132: Security Level (use Minimum/Maximum) 5, 133: Times On the System (use Minimum/Maximum) 6, 134: Last Question from Numeric Question (use Minimum/Maximum) 14) Write to Users File Line used in .DAT file: (contains 5 fields) W;2;01;20;NEXT.DAT;DENIED.DAT | | | | ^--- Script to run if Test is FALSE | | | | (NO, Female or NOT within range) | | | ^--- Script to run if Test is TRUE | | | (YES, Male, or within range) | | ^--- Number of characters to write | ^--- Position to start writing ^--- Write to: Blank: Ignored 1: User Comment Field (Max Characters = 30) 2: Sysop Comment Field (Max Characters = 30) 3: Verification Field (Max Characters = 25) 4: Notes 1 PSA Field (Max Characters = 60) 5: Notes 2 PSA Field (Max Characters = 60) 6: Notes 3 PSA Field (Max Characters = 60) 7: Notes 4 PSA Field (Max Characters = 60) 8: Notes 5 PSA Field (Max Characters = 60) 9: Addr 0 PSA Field (Max Characters = 50) 10: Addr 1 PSA Field (Max Characters = 50) 11: Addr 2 PSA Field (Max Characters = 25) 12: Addr 3 PSA Field (Max Characters = 10) 13: Addr 4 PSA Field (Max Characters = 10) 14: Addr 5 PSA Field (Max Characters = 15) 15: (No, User Name Field is not available!) 16: Alias Field (Max Characters = 25) 17: Password Field (Max Characters = 12) 18: City & State Field (Max Characters = 24) 19: Business/Data Phone Number Field (Max Characters = 13) 20: Home/Voice Phone Number Field (Max Characters = 13) This is used to write the Last Answer into the Users record at the selected field. Data already in the field will remain and only the portion specified will be overwritten. This allows combining several answers into a single field. NOTE: If you wish to write the result of a question that will branch to another script or uses [SKIP], [STOP], etc. then you should not use the fields in the question to perform the branching but instead use the fields provided in the 'W' command itself. Example: ?Are you the SYSOP of a BBS? (y/N) Y;1;;;N;;;[SKIP] W;2;3;1;; In this case, if the User answers No, then nothing will be written to the Users file because the 'W' command will be skipped. Only if the User answers Yes will anything be written to the Users file. ?Are you the SYSOP of a BBS? (y/N) Y;1;;;N;;; W;2;3;1;;[SKIP] By moving the script data to the 'W' command line, the Users answer will be written to the Users file no matter what they answer and the script will then branch according to the last question (the 'W' command does not change the result of the last answer in any way.) 15) Set Default Answer Line used in .DAT file: (contains 3 fields) D;2;01;20 | | ^--- Number of characters to read | ^--- Position to start reading ^--- Read From: Blank: Ignored 1: User Comment Field (Max Characters = 30) 2: Sysop Comment Field (Max Characters = 30) 3: Verification Field (Max Characters = 25) 4: Notes 1 PSA Field (Max Characters = 60) 5: Notes 2 PSA Field (Max Characters = 60) 6: Notes 3 PSA Field (Max Characters = 60) 7: Notes 4 PSA Field (Max Characters = 60) 8: Notes 5 PSA Field (Max Characters = 60) 9: Addr 0 PSA Field (Max Characters = 50) 10: Addr 1 PSA Field (Max Characters = 50) 11: Addr 2 PSA Field (Max Characters = 25) 12: Addr 3 PSA Field (Max Characters = 10) 13: Addr 4 PSA Field (Max Characters = 10) 14: Addr 5 PSA Field (Max Characters = 15) 15: User Name Field (Max Characters = 25) 16: Alias Field (Max Characters = 25) 17: Password Field (Max Characters = 12) 18: City & State Field (Max Characters = 24) 19: Business/Data Phone Number Field (Max Characters = 13) 20: Home/Voice Phone Number Field (Max Characters = 13) This is used to read a Default Answer from the Users record at the selected field. D;2;3;1 ?Are you the SYSOP of a BBS? (y/n) Y;1;;;;;; W;2;3;1;;[SKIP] This will read the data from the Users file to be used as the default to the question. This allows using PPE-Script to maintain data in the Users file allowing the User to change previously set data. NOTE: Default Answers specified in the .DAT will be ignored when using this feature (only on the question involved). 16) Test User Field Line used in .DAT file: (contains 4 fields) T;1;SPECIAL.LST;NEXT.DAT;DENIED.DAT | | | ^--- Script to run if Match not found | | ^--- Script to run if Match is found | ^--- The list of words to check field for ^--- Field to Test: Blank: Ignored 1: User Comment Field (Max Characters = 30) 2: Sysop Comment Field (Max Characters = 30) 3: Verification Field (Max Characters = 25) 4: Note(1) Field (Max Characters = 60) 5: Note(2) Field (Max Characters = 60) 6: Note(3) Field (Max Characters = 60) 7: Note(4) Field (Max Characters = 60) 8: Note(5) Field (Max Characters = 60) 9: Addr(0) Field (Max Characters = 50) 10: Addr(1) Field (Max Characters = 50) 11: Addr(2) Field (Max Characters = 25) 12: Addr(3) Field (Max Characters = 10) 13: Addr(4) Field (Max Characters = 10) 14: Addr(5) Field (Max Characters = 15) 15: User Name Field (Max Characters = 25) 16: Alias Field (Max Characters = 25) 17: Password Field (Max Characters = 12) 18: City/State Field (Max Characters = 24) 19: Business/Data Phone Number Field (Max Characters = 13) 20: Home/Voice Phone Number Field (Max Characters = 13) Note: Test User Field clears the Default Answer so don't use it right after using Set Default Answer or you'll just clear the default out. 17) Stop Skipping Questions Line used in .DAT file: $ The single character '$' is all that is needed. If a portion of the .DAT file is being skipped, this will stop the skipping and the rest of the .DAT file will continue processing again. 18) Label Line used in .DAT file: :LabelName This allows skipping a portion of the .DAT file, and stop at a specific label. This will stop the skipping and the rest of the .DAT file will continue processing again if the LabelName specified matches the text issued in the special ScriptName Example: ?Are you the SYSOP of a BBS? (y/N) Y;1;;;N;;;[SKIP] ?BBS Software - Brand and version? T;4;60;;;PCB.LST;;[NOT_PCB] #So, you're running PCBoard you say. :NOT_PCB #Thanks for being a Sysop $ #That's all! Answering No will skip to the '$' ignoring the label. Answering Yes will result in asking the second question and the skipping the comment if the answer does not match the data in the PCB.LST file. 19) Pause log file Line used in .DAT file: P;1 ^--- 0: Continue 1: Pause This allows asking questions that do not get written to the log file (neither do the answers). 20) Caller ID Testing Line used in .DAT file: (contains 6 fields) !;0;ListFile;PrivScript;LDScript;YesScript;NoScript | | | | | ^--- Script to run if not in list | | | | ^--- Script to run if in list | | | ^--- Script to run if Outside Area | | ^--- Script to run if CID Blocked | ^--- List of phone numbers to check ^---0: Log Caller ID if not in list 1: Log Caller ID if in list 2: Don't Log Caller ID at all This allows checking the Caller ID information (provided you have a modem capable of supplying it to PCBoard) If a Valid Caller ID is found the LastAnswer will be TRUE, if not or the call is Outside the Area or Blocked then LastAnswer will be FALSE. The List File could be a list of numbers to be blocked or a list of numbers to be given special access. This list must contain numbers formatted as AAA-EEE-NNNN to match the Caller ID information. This is expected to be followed by a Registration command line but fell free to use it anyway you see fit. 21) Questions (requires a second line) The first Line starts with a '?' and any Text following the '?' is the Question to ask. The Second Line controls the type of question and contains 5 to 8 parts: Note: Although the second line may begin with the same letter code as some of the commands above but they can be recognized as being different by the fact that must follow the '?' command line (thus the term 'second line') Part 1: This is the type of input to accept. The testing is done character by character. Control and drawing characters are filtered out in any type. The following types are accepted: Code Input Type Validation Characters Accepted ---- ---------------- ----------- --------------------------- T Text .LST file Everything " " to "~" and 128 to 255 Tx Controlled Text .LST file x = Control Type(s) E = Everything ASCII " " to "~" A = Alpha A-Z & a-z N = Numeric 0-9 S = Space " " M = Money 0-9, ".", "$" . = Punctuation ".", ",", ";", ":" P = Phone 0-9,-,+,(,),[,],Space + = Sign "+", "-" ^ = literal (next character) P Phone Numbers Min Length 0-9,-,+,(,),[,] S Sex Min Length Single Character (M,F,Space) D Date VALDATE 0-9,-,/ B BirthDate VALDATE 0-9,-,/ C Credit Card VALCC 0-9,SPACE,- N Numeric Min/Max 0-9 Y Yes/No None Single Character (Y or N) A Age None 0-9 V Verification Min Length ASCII Part 2: This is the MINIMUM length of an answer to accept. On BirthDate Questions: Minimum Age On Numeric Questions: Minimum Answer Part 3: This is the MAXIMUM length of the answer. The overall maximum length is set at 60 characters, to conform to PCBoard Script questionnaires. If you select a length greater than 60, it will be set to 60. On Yes/No, Sex, Date, Phone Number or Age Questions: Ignored On BirthDate Questions: Maximum Age On Numeric Questions: Maximum Answer Part 4: On Text or Numeric Questions: InputFlags 0001h = echo dots instead of user input 0002h = displays parenthesis to show input field width if ANSI enabled. When not selected or in NON-ANSI mode, parenthesis are placed around the '==--' display field on the line above. 0004h = displays parenthesis above current line if FIELDLEN used and ANSI not enabled, this is overridden when Use '==--' display is enabled to eliminate the duplicate effort. 0008h = force user input to upper case 0010h = allow semi-colons and spaces in addition to valid character set passed 0020h = erase the current line when user presses enter 0040h = send a line feed after user presses enter 0080h = send an extra line feed before prompt display 0100h = send an extra line feed after user presses enter 0200h = if user hits end of line, save the text at the end of the line for future use 0400h = don't clear field at first keypress regardless of ANSI 0800h = ? 1000h = allow high ascii characters, regardless of current valid character set, if disable high ascii filter set to yes 2000h = Automatically press enter after 10 seconds of no user input 4000h = Only allow international yes/no responses Default = 0046h On Date or BirthDate: If non-blank then No Answer is required On Yes/No, Sex, Credit Card, Phone Number or Age Questions: Ignored Part 5: A default answer (if any) Part 6: On Text Questions: The .LST file to examine On Birthdate Questions: The sex required to run the script On Sex Questions: The answers allowed for Question All other Questions: Ignored Part 7: On Text Questions: The Script to run if text in .LST file in answer On Yes/No Questions: The Script to run if the answer is YES On Birthdate Questions: The Script to run if within Age Limits On Sex Questions: The Script to run if Male On Numeric Questions: The Script to run if within Numeric Range On Date, Phone Number or Credit Card Questions: Ignored On Age Questions: The Script to run if Age matches BirthDate On Verification Questions: Script to run if verification matches Part 8: On Text Questions: The Script to run if text in .LST file NOT in answer On Yes/No Questions: The Script to run if the answer is NO On Birthdate Questions: The Script to run if NOT within Age Limits On Sex Questions: The Script to run if Female On Numeric Questions: The Script to run if NOT within Numeric Range On Date, Phone Number or Credit Card Questions: Ignored On Age Questions: The Script to run if Age does not match BirthDate On Verification Questions: Script to run if verification fails Example Lines used in .DAT file: 21a) Text ?What is your Computer system? T;3;40; ; ;JOBS.LST;HIRING.DAT; | | | | | | | ^--- The Script to run if a word | | | | | | | match is NOT found | | | | | | ^--- The Script to run if a word match is found | | | | | ^--- The list of words to check answer for | | | | ^--- Default Answer | | | ^--- Default(46h) input flags | | ^--- Maximum Length (60 if blank) | ^--- Minimum Length (0 if blank) ^--- Type of input testing (None - any ASCII Character) 21b) Text (restricted characters) ?What is your occupation? TAS;5;40; ; ;JOBS.LST;HIRING.DAT; | | | | | | | ^--- The Script to run if a word | | | | | | | match is NOT found | | | | | | ^--- The Script to run if a word match is found | | | | | ^--- The list of words to check answer for | | | | ^--- Default Answer | | | ^--- Default(46h) input flags | | ^--- Maximum Length (60 if blank) | ^--- Minimum Length (0 if blank) ^--- Type of input testing (Alpha A-Z, a-z and SPACE only) ?What is the Disk Storage capacity on your System TASN;2;20;004Eh;20 Megs | | | | ^--- Default Answer | | | ^--- Default(46h) input flags + Force Uppercase | | ^--- Maximum Length (60 if blank) | ^--- Minimum Length (0 if blank) ^--- Type of input testing (Alpha A-Z, a-z, 0-9 and SPACE only) 21c) Credit Card ?Enter Credit Card Number C;1; ; ; | | | | ^--- Default Answer | | | ^--- N/A | | ^--- N/A | ^--- Minimum Length (0 if blank) ^--- Type of input testing (Alpha A-Z, a-z and SPACE only) 21d) Date ?Enter the date you started computing (mm/dd/yy) D; ; ; ; | | | | ^--- Default Answer | | | ^--- If Non-Blank then No Answer required | | ^--- N/A | ^--- N/A ^--- Type of input testing (Alpha A-Z, a-z and SPACE only) 21e) BirthDate ?What is your birth date (mm/dd/yy) B;21; ; ; ; ;ADULT.DAT;KID.DAT | | | | | | | ^--- Script to run if NOT within Age range | | | | | | ^--- Script to run if within Age range | | | | | ^--- Sex required to run either Script | | | | ^--- Default Answer | | | ^--- If Non-Blank then No Answer required | | ^--- Maximum Age Limit (255 if blank) | ^--- Minimum Age Limit (0 if blank) ^--- Type of input testing The answer given here will be used to calculate the Users age and will supersede any information pulled from the Users file from the data in the .CNF file regarding AgeSource. 21f) Numeric ?Enter a number from 1 to 9 N;1;9; ; ; ;SMART.DAT;STUPID.DAT | | | | | | | ^--- Script to run if NOT within range | | | | | | ^--- Script to run if within range | | | | | ^--- If Blank Answer must be in range, else anything allowed | | | | ^--- No Default Answer | | | ^--- N/A | | ^--- Maximum | ^--- Minimum ^--- Type of input testing 21g) Phone Numbers ?What is the number of your BBS P;1; ; ; | | | | ^--- Default Answer | | | ^--- Default(46h) input flags | | ^--- N/A | ^--- Minimum Length (0 if blank) ^--- Type of input testing 21h) Yes/No ?Are you a Sysop Y;1; ; ; ; ;SYSOP.DAT;USER.DAT | | | | | | | ^--- Script to run if No | | | | | | ^--- Script to run if Yes | | | | | ^--- Responses available (Blank = YESCHAR()+NOCHAR()) | | | | ^--- Default Answer | | | ^--- N/A | | ^--- N/A | ^--- Minimum Length (0 if blank) ^--- Type of input testing 21i) Sex ?What is your gender (m/f) S;1; ; ; ; ;MALE.DAT;FEMALE.DAT | | | | | | | ^--- Script to run if Female | | | | | | ^--- Script to run if Male | | | | | ^--- Responses available (Blank = Default from Config) | | | | ^--- Default Answer | | | ^--- Default(46h) input flags | | ^--- N/A | ^--- Minimum Length (0 if blank) ^--- Type of input testing The answer given here will be used for the Users sex and will supersede any information pulled from the Users file from the data in the .CNF file regarding SexSource 21j) Age ?What is your age A;1; ; ; ; ;MATCHED.DAT;LIED.DAT | | | | | | | ^--- Script to run if BirthDate age is different | | | | | | ^--- Script to run BirthDate age matches | | | | | ^--- If Non-Blank then No Answer required | | | | ^--- Default Answer | | | ^--- N/A | | ^--- N/A | ^--- Minimum Length (0 if blank) ^--- Type of input testing The answer given here will be used for the Users age and will supersede any information pulled from the Users file from the data in the .CNF file regarding AgeSource. 21k) Verification ? V;1; ; ; ; ;MATCHED.DAT;LIED.DAT | | | | | | | ^--- Script to run if verification fails | | | | | | ^--- Script to run if verification matches | | | | | ^--- If Non-Blank then No Answer required | | | | ^--- Default Answer | | | ^--- Default(46h) input flags | | ^--- Maximum Length (25 if blank) | ^--- Minimum Length (0 if blank) ^--- Type of input testing If Question is blank then PCBTEXT entry #707 is used. Special Script File Name Actions: "[STOP]" : Stop the current Script and return to previous level "[END]" : Stop the current Script and all previous levels "[SKIP]" : Skip any remaining Questions/Comments/DisplayFiles Write "N/A" as answers for any questions, write Questions if enabled (can be stopped before the end of the file by a "$" Stop Skipping to allow skipping a section) All 'Branch to new script' and 'Register User' lines will also be skipped. Only the current level will be skipped. If the end of the script is reached and processing returns to a previous level, Skipping will stop. The example file NEWASK.DAT that I use on my BBS shows 3 examples of using [SKIP] to skip sections of the questionnaire. "[SKIPALL]" : Same as SKIP but does not stop skipping when returning to a previous level, but can still be stopped by a '$' line. "[xxx]" : Same as SKIP but will Stop Skipping only at the Label that matches the text between the '[' & ']'. (Note: xxx represents whatever text you wish to use, noting also that STOP, END, SKIP & SKIPALL are reserved.) Note: If Jump Backwards is to YES in .CNF file, then the search for the label will start at the beginning of the file. When using a list file of matching words, the data listed on a line is checked for in the answer. If the data appears anywhere in the answer, then it is considered a match. If a line begins with an "*" then the remaining data on the line must exactly match the answer given to be considered a match. In all cases the match is case-insensitive. I've only had one other suggestion as to features (which was just added into version 1.20), so either no one is using the program or it fits the needs without any changes. If there is something that should be added, please let me know. I am planning on writing an editor to create/modify the .DAT files, as I know they can get complicated. This program is released as TRUSTWARE. If you use it, I trust you to send a donation of $5.00 to me. You can call up and get the registration number to remove the delay at anytime whether you have sent a donation or not. To register this program call: SHARP Technical Support Line BBS (404) 962-1788 and use the REG command to obtain your registration number. You need to sign on under your real name which MUST also be used on line 1 of the configuration file. You will also be asked to give the name of your board which MUST be entered exactly as it will appear on line 2 your configuration file(s). Send your $5.00 donation to: Gary Meeker 725-C Old Norcross Road Lawrenceville, GA 30245