home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / ASK01_B5.ZIP / PCBASK.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-02-15  |  15KB  |  625 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Integer  INTEGER001
  20.     Integer  INTEGER002
  21.     Integer  INTEGER003
  22.     Integer  INTEGER004
  23.     Integer  INTEGER005
  24.     Integer  INTEGER006
  25.     Integer  INTEGER007
  26.     Integer  INTEGER008
  27.     Integer  INTEGER009
  28.     String   STRING001
  29.     String   STRING002
  30.     String   STRING003
  31.     String   STRING004
  32.     String   STRING005
  33.     String   STRING006
  34.     String   STRING007
  35.     String   STRING008
  36.     String   STRING009
  37.     String   TSTRING010(100)
  38.     String   STRING011
  39.     String   TSTRING012(100)
  40.     String   STRING013
  41.     String   STRING014
  42.     String   STRING015
  43.     String   STRING016
  44.     String   STRING017
  45.     String   STRING018
  46.     String   STRING019
  47.     String   STRING020
  48.     String   STRING021
  49.     String   STRING022
  50.     String   STRING023
  51.     String   STRING024
  52.     String   STRING025
  53.     String   STRING026
  54.     String   STRING027
  55.  
  56. ;------------------------------------------------------------------------------
  57.  
  58.     STRING001 = "0.1 ßeta/5 (Public Beta)"
  59.     INTEGER002 = 34379
  60.     INTEGER003 = 14955
  61.     INTEGER004 = INTEGER002 + 90
  62.     INTEGER006 = 1
  63.     STRING002 = Chr(85) + Chr(78) + Chr(82) + Chr(69) + Chr(71) + Chr(73) + Chr(83) + Chr(84) + Chr(69) + Chr(82) + Chr(69) + Chr(68)
  64.     INTEGER009 = 32
  65.     For INTEGER009 = 32 To 255
  66.         STRING020 = STRING020 + Chr(INTEGER009)
  67.     Next
  68.     INTEGER009 = 1
  69.     INTEGER001 = 0
  70.     STRING024 = Chr(13)
  71.     STRING026 = 256
  72.     STRING027 = DefColor()
  73.     STRING021 = YesChar()
  74.     STRING022 = NoChar()
  75.     STRING023 = STRING021 + STRING022
  76.     Log "*PCBASK* Executed at " + Left(Time(), 5), 0
  77.     PrintLn "@X08PCBASK v" + STRING001
  78.     If (DbgLevel() > 0) Log "*PCBASK* Debug Mode is ON", 0
  79.     GetUser
  80.     STRING025 = GetToken()
  81.     If (INTEGER006 <> 0) Then
  82.         INTEGER007 = FileInf(PPEPath() + PPEName() + ".PPE", 2)
  83.         INTEGER005 = Date()
  84.         If (Len(Trim(STRING002, " ")) <> 12) Goto LABEL004
  85.         If (INTEGER005 > INTEGER004) Goto LABEL005
  86.         If (INTEGER005 + 3 == INTEGER004) Then
  87.             Newline
  88.             PrintLn "@X0CThis copy of PCBASK expires in @X8C3@X0C days!@X07"
  89.             Log "──── This copy of PCBASK expires in 3 days", 1
  90.             Log "──── Call Whitewater Systems - 312-743-4912 to", 1
  91.             Log "──── obtain a newer version", 1
  92.         ElseIf (INTEGER005 == INTEGER004) Then
  93.             Newline
  94.             PrintLn "@X0CThis copy of PCBASK expires after today!@X07"
  95.             Log "──── This copy of PCBASK expires after today!", 1
  96.             Log "──── Call Whitewater Systems - 312-743-4912 to", 1
  97.             Log "──── obtain a newer version", 1
  98.         Endif
  99.         If (INTEGER002 <> 0) Then
  100.             If (INTEGER007 <> INTEGER002) Then
  101.                 Goto LABEL004
  102.             Endif
  103.         Endif
  104.         If (FileInf(PPEPath() + PPEName() + ".PPE", 4) <> INTEGER003) Then
  105.             Goto LABEL004
  106.         Endif
  107.     Else
  108.         If (INTEGER006 == 0) Then
  109.             INTEGER001 = 1
  110.         Endif
  111.     Endif
  112.     Gosub LABEL003
  113.     Gosub LABEL002
  114.     If (INTEGER001 <> 1) Then
  115.         Newline
  116.         PrintLn "@X07[@X0CThis version of PCBASK is " + STRING002 + "@X07]"
  117.         PrintLn "@X07[@X0ACall Whitewater Systems to register - 312-743-4912@X07]"
  118.         Log "(" + STRING002 + " version of PCBASK)", 0
  119.         Delay 20 * 18.2
  120.     Endif
  121.     Newline
  122.     If (Exist(STRING025)) Goto LABEL001
  123.     If (Exist(PPEPath() + Upper(Trim(STRING025, " ")))) Then
  124.         STRING025 = PPEPath() + Upper(Trim(STRING025, " "))
  125.     Else
  126.         Newline
  127.         PrintLn "@X0C" + STRING025 + " not found, please notify Sysop!"
  128.         Newline
  129.         Goto LABEL020
  130.     Endif
  131.     :LABEL001
  132.     FOpen 1, STRING025, 0, 2
  133.     Gosub LABEL007
  134.     Goto LABEL020
  135.     :LABEL002
  136.     STRING003 = ""
  137.     If (Mid(STRING006, 1, 1) == "B") Then
  138.         Newline
  139.         MPrintLn "@X07[@X0CThis version of PCBASK is " + STRING002 + "@X07]"
  140.         MPrintLn "@X07[@X0ACall Whitewater Systems to register - 312-743-4912@X07]"
  141.         Color 10
  142.         SPrintLn "Please register this copy of PCBASK."
  143.         Log "(Please register this copy of PCBASK)", 0
  144.         Delay 5 * 18.2
  145.         STRING003 = Chr(66) + String(Len(STRING005) - 1)
  146.         STRING003 = STRING003 + Chr(57) + String(Len(STRING005) - 9)
  147.         STRING003 = STRING003 + Chr(48) + String(Len(STRING005) - 5)
  148.         STRING003 = STRING003 + Chr(50) + String(Len(STRING004) - 5) + Chr(57)
  149.         If (Trim(STRING005, " ") <> Trim(Mid(ReadLine(PCBDat(), 94), 1, Len(STRING005)), " ")) INTEGER001 = 0
  150.         If (STRING006 <> STRING003) INTEGER001 = 0
  151.         If (Trim(STRING005, " ") == Trim(Mid(ReadLine(PCBDat(), 94), 1, Len(STRING005)), " ")) Then
  152.             If (STRING006 == STRING003) INTEGER001 = 1
  153.         Endif
  154.     Else
  155.         STRING003 = Chr(49) + String(Len(STRING005) - 3)
  156.         STRING003 = STRING003 + Chr(51) + String(Len(STRING005) - 7)
  157.         STRING003 = STRING003 + Chr(54) + String(Len(STRING005) - 3)
  158.         STRING003 = STRING003 + Chr(50) + String(Len(STRING004) - 5) + Chr(53)
  159.         If (Trim(STRING005, " ") <> Trim(Mid(ReadLine(PCBDat(), 94), 1, Len(STRING005)), " ")) INTEGER001 = 0
  160.         If (STRING006 <> STRING003) INTEGER001 = 0
  161.         If (Trim(STRING005, " ") == Trim(Mid(ReadLine(PCBDat(), 94), 1, Len(STRING005)), " ")) Then
  162.             If (STRING006 == STRING003) INTEGER001 = 1
  163.         Endif
  164.     Endif
  165.     Return
  166.     :LABEL003
  167.     If (Exist(PPEPath() + "PCBASK.CFG")) Then
  168.         FOpen 0, PPEPath() + "PCBASK.CFG", 0, 0
  169.         FGet 0, STRING004
  170.         FGet 0, STRING005
  171.         FGet 0, STRING006
  172.         FGet 0, STRING008
  173.         FGet 0, STRING007
  174.         FGet 0, STRING009
  175.         FClose 0
  176.         STRING004 = Upper(Trim(STRING004, " "))
  177.         STRING006 = Upper(Trim(STRING006, " "))
  178.         STRING008 = Upper(Trim(STRING008, " "))
  179.         STRING009 = Upper(Mid(STRING009, 1, 1))
  180.     Else
  181.         Log "Error: PCBASK.CFG Configuration file not found!", 0
  182.         Newlines 2
  183.         PrintLn "@X0CConfiguration file not found! Please Notify Sysop!"
  184.         Newlines 2
  185.         Wait
  186.         Goto LABEL020
  187.     Endif
  188.     Return
  189.     :LABEL004
  190.     Cls
  191.     Beep
  192.     Newlines 2
  193.     PrintLn "@X07[@X0CPCBASK is (c) Copyrighted Software by Whitewater Technologies, Inc.@X07]"
  194.     PrintLn "@X07[@X0FWhitewater Systems - 312-743-4912@X07]"
  195.     Newline
  196.     PrintLn "@X07[@X0CPCBASK's authentic seal has been altered!@X07]"
  197.     PrintLn "@X07[@X07Please call Whitewater Systems and download the newest release@X07]"
  198.     Log "*PCBASK* Seal has been ALTERED", 0
  199.     Newline
  200.     Goto LABEL020
  201.     :LABEL005
  202.     Newline
  203.     PrintLn "@X07[@X0CThis version of PCBASK has expired@X07]"
  204.     PrintLn "@X07[@X07Please tell the Sysop to obtain a newer version@X07]"
  205.     Newline
  206.     Log "──- This copy of PCBASK has EXPIRED!", 1
  207.     Log "──- Call Whitewater Systems to obtain a newer version", 1
  208.     Log "──- Whitewater Systems - 312-743-4912", 1
  209.     Goto LABEL020
  210.     :LABEL006
  211.     PrintLn "@X07[@X0CAn error has been encountered in PCBASK@X07]"
  212.     PrintLn "@X08─────────────────────────────────────────@X07"
  213.     PrintLn "@X07It may have been caused by one of the following:"
  214.     Newline
  215.     PrintLn " @X08■ @X0FImproper format of field(s):"
  216.     PrintLn "    @X08- @X07Prompt length must be less than 80 characters"
  217.     PrintLn "    @X08- @X07A ; must be separating parameters"
  218.     PrintLn "    @X08- @X07A Y/N answer must be used to specify the forcing of a prompt"
  219.     Newlines 2
  220.     PrintLn "@X07The line that has been read contains:"
  221.     PrintLn "@X07[@X0F" + STRING013 + "@X07]"
  222.     Newline
  223.     PrintLn "@X07[@X0CPCBASK is aborting its execution - See the documentation for more help@X07]"
  224.     FPutLn 2, "── Error: Improper format of field(s) - Check configuration"
  225.     FPutLn 2, "── Call Whitewater Systems if you need further assistance."
  226.     FPutLn 2, "── Aborting ..."
  227.     FPutLn 2, ""
  228.     Goto LABEL020
  229.     :LABEL007
  230.     INTEGER008 = 0
  231.     STRING018 = "N"
  232.     If (Exist(PPEPath() + PPEName() + "." + String(PcbNode()))) Delete PPEPath() + PPEName() + "." + String(PcbNode())
  233.     FCreate 2, PPEPath() + PPEName() + "." + String(PcbNode()), 1, 3
  234.     FPutLn 2, "────────────────────────[ PCBASK - Q&A File ]────────────────────────"
  235.     :LABEL008
  236.     If (Ferr(1)) Goto LABEL017
  237.     Gosub LABEL019
  238.     FGet 1, STRING013
  239.     STRING013 = Trim(STRING013, " ")
  240.     If (STRING013 == "") Then
  241.         Newline
  242.     Else
  243.         Select Case (Mid(STRING013, 1, 1))
  244.             Case "%"
  245.                 DispFile Trim(Mid(STRING013, 2, 80), " "), 1 + 2 + 4
  246.             Case ";"
  247.                 FPutLn 2, "C: " + Trim(Mid(StripAtx(STRING013), 2, 200), " ")
  248.                 If (Mid(STRING013, 1, 1) == ":") Then
  249.                     Goto LABEL016
  250.                 Endif
  251.             Case "ANSWERFILE="
  252.                 STRING019 = Trim(Mid(STRING013, 12, 80), " ")
  253.             Case "WRITEMSG="
  254.                 STRING018 = Upper(Mid(STRING013, 10, 1))
  255.             Case "FLAG="
  256.                 If (Exist(Trim(Upper(Mid(STRING013, 6, 80)), " "))) Goto LABEL009
  257.                 FPutLn 2, "-> " + Trim(Upper(Mid(STRING013, 6, 80)), " ") + " not found. (FLAG)"
  258.                 Goto LABEL010
  259.                 :LABEL009
  260.                 Flag Trim(Upper(Mid(STRING013, 6, 80)), " ")
  261.                 FPutLn 2, "-> Flagging " + Trim(Upper(Mid(STRING013, 6, 80)), " ") + " for download."
  262.                 :LABEL010
  263.             Case "DOWNLOAD="
  264.                 Download Trim(Upper(Mid(STRING013, 10, 80)), " ")
  265.                 FPutLn 2, "-> Downloading " + Trim(Upper(Mid(STRING013, 10, 80)), " ") + "."
  266.             Case "KBDSTUFF="
  267.                 KbdStuff Trim(Upper(Mid(STRING013, 10, 1)), " ") + STRING024
  268.             Case "INFO=USER"
  269.                 FPutLn 2, "-> ======= User Information ======="
  270.                 FPutLn 2, "-> User Name    : " + U_Name() + " / Security: " + String(U_Sec)
  271.                 FPutLn 2, "-> Voice Phone  : " + U_HVPhone
  272.                 FPutLn 2, "-> Data Phone   : " + U_BDPhone
  273.                 FPutLn 2, "-> User City    : " + U_City
  274.                 FPutLn 2, "-> User Comment : " + U_Cmnt1
  275.                 FPutLn 2, "-> Sysop Comment: " + U_Cmnt2
  276.                 FPutLn 2, "-> ================================"
  277.             Case "?"
  278.                 Inc INTEGER008
  279.                 Select Case (Upper(Mid(STRING013, 2, 1)))
  280.                     Case "S", "B"
  281.                         If (Mid(STRING013, 3, 1) <> ";") Goto LABEL006
  282.                         STRING017 = Upper(Mid(STRING013, 4, 1))
  283.                         If ((STRING017 <> "Y") && (STRING017 <> "N")) Goto LABEL006
  284.                         STRING014 = Mid(STRING013, 6, 1)
  285.                         If (Mid(STRING013, 7, 1) <> ";") Then
  286.                             STRING014 = STRING014 + Mid(STRING013, 7, 1)
  287.                             STRING011 = Trim(Mid(STRING013, 9, 200), " ")
  288.                         ElseIf (Mid(STRING013, 7, 1) == ";") Then
  289.                             STRING011 = Trim(Mid(STRING013, 8, 200), " ")
  290.                         Endif
  291.                         If (Mid(STRING013, 5 + 1 + Len(STRING014), 1) <> ";") Goto LABEL006
  292.                         TSTRING012(0) = ""
  293.                         Select Case (Upper(Mid(STRING013, 2, 1)))
  294.                             Case "S"
  295.                                 If (STRING017 == "N") Then
  296.                                     InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026
  297.                                 Else
  298.                                     While ((Len(TSTRING012(0)) == 0) && (STRING017 == "Y")) Do
  299.                                         InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026
  300.                                         If (TSTRING012(0) == "") Then
  301.                                             DispText 117, 128 + 256
  302.                                             Newline
  303.                                         Endif
  304.                                     EndWhile
  305.                                 Endif
  306.                             Case "B"
  307.                                 If (STRING017 == "N") Then
  308.                                     InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026 + 2
  309.                                     Goto LABEL011
  310.                                 Endif
  311.                                 While ((Len(TSTRING012(0)) == 0) && (STRING017 == "Y")) Do
  312.                                     InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026 + 2
  313.                                     If (TSTRING012(0) == "") Then
  314.                                         DispText 117, 128 + 256
  315.                                         Newline
  316.                                     Endif
  317.                                 EndWhile
  318.                         End Select
  319.                         :LABEL011
  320.                         FPutLn 2, "Q: " + StripAtx(STRING011) + "?"
  321.                         FPutLn 2, "A: " + TSTRING012(0)
  322.                     Case "D", "E"
  323.                         If (Mid(STRING013, 3, 1) <> ";") Goto LABEL006
  324.                         STRING017 = Upper(Mid(STRING013, 4, 1))
  325.                         If ((STRING017 <> "Y") && (STRING017 <> "N")) Goto LABEL006
  326.                         STRING014 = Mid(STRING013, 6, 1)
  327.                         If (Mid(STRING013, 7, 1) <> ";") Then
  328.                             STRING014 = STRING014 + Mid(STRING013, 7, 1)
  329.                             STRING011 = Trim(Mid(STRING013, 9, 200), " ")
  330.                         ElseIf (Mid(STRING013, 7, 1) == ";") Then
  331.                             STRING011 = Trim(Mid(STRING013, 8, 200), " ")
  332.                         Endif
  333.                         If (Mid(STRING013, 5 + 1 + Len(STRING014), 1) <> ";") Goto LABEL006
  334.                         TSTRING012(0) = ""
  335.                         Select Case (Upper(Mid(STRING013, 2, 1)))
  336.                             Case "D"
  337.                                 If (STRING017 == "N") Then
  338.                                     InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026 + 1
  339.                                 Else
  340.                                     While ((Len(TSTRING012(0)) == 0) && (STRING017 == "Y")) Do
  341.                                         InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026 + 1
  342.                                         If (TSTRING012(0) == "") Then
  343.                                             DispText 117, 128 + 256
  344.                                             Newline
  345.                                         Endif
  346.                                     EndWhile
  347.                                 Endif
  348.                             Case "E"
  349.                                 If (STRING017 == "N") Then
  350.                                     InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026 + 2 + 1
  351.                                     Goto LABEL012
  352.                                 Endif
  353.                                 While ((Len(TSTRING012(0)) == 0) && (STRING017 == "Y")) Do
  354.                                     InputStr STRING011, TSTRING012(0), STRING027, STRING014, STRING020, STRING026 + 2 + 1
  355.                                     If (TSTRING012(0) == "") Then
  356.                                         DispText 117, 128 + 256
  357.                                         Newline
  358.                                     Endif
  359.                                 EndWhile
  360.                         End Select
  361.                         :LABEL012
  362.                         FPutLn 2, "Q: " + StripAtx(STRING011) + "?"
  363.                         FPutLn 2, "A: " + TSTRING012(0)
  364.                     Case "Y", "N"
  365.                         If (Mid(STRING013, 3, 1) <> ";") Goto LABEL006
  366.                         STRING011 = Trim(Mid(STRING013, 4, 200), " ")
  367.                         TSTRING012(0) = ""
  368.                         Select Case (Upper(Mid(STRING013, 2, 1)))
  369.                             Case "Y"
  370.                                 TSTRING012(0) = STRING021
  371.                             Case "N"
  372.                                 TSTRING012(0) = STRING022
  373.                         End Select
  374.                         InputStr STRING011, TSTRING012(0), STRING027, 1, STRING023, STRING026 + 2 + 4
  375.                         If (TSTRING012(0) == "") TSTRING012(0) = "(No answer given)"
  376.                         FPutLn 2, "Q: " + StripAtx(STRING011) + "?"
  377.                         FPutLn 2, "A: " + TSTRING012(0)
  378.                     Case "L", "M"
  379.                         If (Mid(STRING013, 3, 1) <> ";") Goto LABEL006
  380.                         STRING015 = Mid(STRING013, 4, 1)
  381.                         If (Mid(STRING013, 5, 1) <> ";") Then
  382.                             STRING015 = STRING015 + Mid(STRING013, 5, 1)
  383.                             If (Mid(STRING013, 6, 1) <> ";") Goto LABEL006
  384.                         Endif
  385.                         STRING014 = Mid(STRING013, 5 + Len(STRING015), 1)
  386.                         If (Mid(STRING013, 6 + Len(STRING015), 1) <> ";") Then
  387.                             STRING014 = STRING014 + Mid(STRING013, 6 + Len(STRING015), 1)
  388.                             STRING011 = Trim(Mid(STRING013, 8 + Len(STRING015), 200), " ")
  389.                         ElseIf (Mid(STRING013, 6 + Len(STRING015), 1) == ";") Then
  390.                             STRING011 = Trim(Mid(STRING013, 8 + Len(STRING015), 200), " ")
  391.                         Endif
  392.                         INTEGER009 = 0
  393.                         TSTRING012(INTEGER009) = ""
  394.                         FPutLn 2, "Q: " + StripAtx(STRING011)
  395.                         If (Upper(Mid(STRING013, 2, 1)) == "L") Then
  396.                             PrintLn STRING011
  397.                             TSTRING012(INTEGER009) = ""
  398.                             While (Len(TSTRING012(INTEGER009)) == 0) Do
  399.                                 If (STRING015 == INTEGER009) Then
  400.                                     InputStr "@X0F: _", TSTRING012(INTEGER009), STRING027, STRING014, STRING020, STRING026 + 4
  401.                                     Goto LABEL013
  402.                                 Endif
  403.                                 InputStr "@X0F: _", TSTRING012(INTEGER009), STRING027, STRING014, STRING020, STRING026 + 4 + 512
  404.                                 :LABEL013
  405.                                 If (TSTRING012(INTEGER009) == "") Then
  406.                                     DispText 117, 128 + 256
  407.                                     Continue
  408.                                 Endif
  409.                                 FPutLn 2, "A: " + TSTRING012(INTEGER009)
  410.                             EndWhile
  411.                             Inc INTEGER009
  412.                             For INTEGER009 = 1 To STRING015 - 1
  413.                                 TSTRING012(INTEGER009) = ""
  414.                                 If (STRING015 == INTEGER009) Then
  415.                                     InputStr "@X0F: _", TSTRING012(INTEGER009), STRING027, STRING014, STRING020, STRING026 + 4
  416.                                     Goto LABEL014
  417.                                 Endif
  418.                                 InputStr "@X0F: _", TSTRING012(INTEGER009), STRING027, STRING014, STRING020, STRING026 + 4 + 512
  419.                                 :LABEL014
  420.                                 If (Len(TSTRING012(INTEGER009)) == 0) Break
  421.                                 FPutLn 2, "A: " + TSTRING012(INTEGER009)
  422.                             Next
  423.                         Endif
  424.                     Case "O", "P"
  425.                         If (Mid(STRING013, 3, 1) <> ";") Goto LABEL006
  426.                         STRING016 = Mid(STRING013, 4, 1)
  427.                         If (Mid(STRING013, 5, 1) <> ";") Then
  428.                             STRING016 = STRING016 + Mid(STRING013, 5, 1)
  429.                             If (Mid(STRING013, 6, 1) <> ";") Goto LABEL006
  430.                         Endif
  431.                         STRING011 = Trim(Mid(STRING013, 5 + Len(STRING016), 200), " ")
  432.                         FPutLn 2, "Q: " + StripAtx(STRING011)
  433.                         INTEGER009 = 0
  434.                         For INTEGER009 = 0 To 50
  435.                             If (TSTRING010(INTEGER009) <> "") TSTRING010(INTEGER009) = ""
  436.                         Next
  437.                         INTEGER009 = 0
  438.                         For INTEGER009 = 0 To STRING016
  439.                             FGet 1, TSTRING010(INTEGER009)
  440.                             PrintLn TSTRING010(INTEGER009)
  441.                         Next
  442.                         TSTRING012(0) = ""
  443.                         If (Upper(Mid(STRING013, 2, 1)) == "O") Then
  444.                             While (Len(TSTRING012(0)) == 0) Do
  445.                                 InputStr STRING011, TSTRING012(0), STRING027, Len(STRING016), Mask_Num(), STRING026
  446.                                 If ((TSTRING010(TSTRING012(0) - 1) == "") || (TSTRING012(0) == "0")) Then
  447.                                     PrintLn "@X0CInvalid Selection!"
  448.                                     TSTRING012(0) = ""
  449.                                     Continue
  450.                                 Endif
  451.                                 If (TSTRING012(0) == "") Then
  452.                                     DispText 117, 128 + 256
  453.                                     Continue
  454.                                 Endif
  455.                                 Newline
  456.                             EndWhile
  457.                             Goto LABEL015
  458.                         Endif
  459.                         If (Upper(Mid(STRING013, 2, 1)) == "P") Then
  460.                             InputStr STRING011, TSTRING012(0), STRING027, Len(STRING016), Mask_Num(), STRING026
  461.                         Endif
  462.                         :LABEL015
  463.                         FPutLn 2, "A: " + StripAtx(TSTRING010(TSTRING012(0) - 1))
  464.                 End Select
  465.             Case "$"
  466.                 Inc INTEGER008
  467.                 FPutLn 2, "Q: " + StripAtx(STRING011) + "?"
  468.                 FPutLn 2, "A: " + TSTRING012(0)
  469.             Case Else
  470.                 PrintLn STRING013
  471.             Endif
  472.     End Select
  473.     :LABEL016
  474.     Goto LABEL008
  475.     :LABEL017
  476.     FPutLn 2, "─────────────────────────────────────────────────────────────────────"
  477.     FPutLn 2, " Statistics:"
  478.     FPutLn 2, "  ■ Total Number of Questions asked: " + String(INTEGER008)
  479.     FPutLn 2, "─────────────────────────[ End of Q&A File ]─────────────────────────"
  480.     FClose 2
  481.     If (Exist(STRING019)) Goto LABEL018
  482.     FCreate 3, STRING019, 1, 3
  483.     FClose 3
  484.     :LABEL018
  485.     Append PPEPath() + PPEName() + "." + String(PcbNode()), STRING019
  486.     Return
  487.     :LABEL019
  488.     Return
  489.     :LABEL020
  490.     Log "*PCBASK* Ended at " + Left(Time(), 5), 0
  491.     Newline
  492.     Print "@X0ASaving your information ... "
  493.     If (STRING018 <> "N") Then
  494.         If ((STRING009 <> "N") && "R") Then
  495.             Log "*PCBASK* Message type is invalid!", 0
  496.             Log "*PCBASK* Message type will set to (R)", 0
  497.             STRING009 = "R"
  498.         Endif
  499.         Message STRING007, STRING008, "PCBASK [Node " + String(PcbNode()) + "]", "Re: " + U_Name(), STRING009, 0, 0, 0, PPEPath() + PPEName() + "." + String(PcbNode())
  500.         Log "*PCBASK* Saving message with information", 0
  501.     Endif
  502.     If (Exist(PPEPath() + PPEName() + "." + String(PcbNode()))) Delete PPEPath() + PPEName() + "." + String(PcbNode())
  503.     If (Exist(STRING025)) FClose 1
  504.     PrintLn "@X0FDone."
  505.     If (DbgLevel() > 0) DbgLevel 0
  506.     End
  507.  
  508. ;------------------------------------------------------------------------------
  509. ;
  510. ; Usage report (before postprocessing)
  511. ;
  512. ; ■ Statements used :
  513. ;
  514. ;    1       End
  515. ;    1       Cls
  516. ;    1       Wait
  517. ;    1       Color 
  518. ;    147     Goto 
  519. ;    89      Let 
  520. ;    1       Print 
  521. ;    28      PrintLn 
  522. ;    103     If 
  523. ;    1       DispFile 
  524. ;    2       FCreate 
  525. ;    2       FOpen 
  526. ;    4       FClose 
  527. ;    8       FGet 
  528. ;    34      FPutLn 
  529. ;    1       GetUser
  530. ;    2       Delete 
  531. ;    19      Log 
  532. ;    15      InputStr 
  533. ;    4       Gosub 
  534. ;    4       Return
  535. ;    2       Delay 
  536. ;    3       Inc 
  537. ;    20      Newline
  538. ;    4       Newlines 
  539. ;    6       DispText 
  540. ;    1       Beep
  541. ;    1       KbdStuff 
  542. ;    1       Message 
  543. ;    1       SPrintLn 
  544. ;    2       MPrintLn 
  545. ;    1       DbgLevel 
  546. ;    1       Append 
  547. ;    1       Flag 
  548. ;    1       Download 
  549. ;
  550. ;
  551. ; ■ Functions used :
  552. ;
  553. ;    2       *
  554. ;    154     +
  555. ;    12      -
  556. ;    68      ==
  557. ;    31      <>
  558. ;    4       <
  559. ;    4       <=
  560. ;    3       >
  561. ;    8       >=
  562. ;    76      !
  563. ;    15      &&
  564. ;    10      ||
  565. ;    31      Len(
  566. ;    41      Upper()
  567. ;    84      Mid()
  568. ;    2       Left()
  569. ;    1       Ferr()
  570. ;    24      Chr()
  571. ;    33      Trim()
  572. ;    1       Date()
  573. ;    2       Time()
  574. ;    2       U_Name()
  575. ;    1       NoChar()
  576. ;    1       YesChar()
  577. ;    8       StripAtx()
  578. ;    18      String()
  579. ;    2       Mask_Num()
  580. ;    4       PCBDat()
  581. ;    13      PPEPath()
  582. ;    8       PcbNode()
  583. ;    4       ReadLine()
  584. ;    1       GetToken()
  585. ;    8       Exist()
  586. ;    1       DefColor()
  587. ;    2       FileInf()
  588. ;    9       PPEName()
  589. ;    2       DbgLevel()
  590. ;
  591. ;------------------------------------------------------------------------------
  592. ;
  593. ; Analysis flags : Mfd
  594. ;
  595. ; M - Send text to modem only ■ 4
  596. ;     Some informations are sent only to the modem, not to the local
  597. ;     screen, this is a well known way to make stealth backdoors, Check!
  598. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  599. ;
  600. ; f - Flag files for download ■ 3
  601. ;     This may be normal if a PPE needs to send some files, but since
  602. ;     this statement allows flagging of any file on the hard disk, you
  603. ;     have to be carefull. Check!
  604. ;     ■ Search for : FLAG
  605. ;
  606. ; d - Access PCBOARD.DAT ■ 2
  607. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  608. ;     for many PPE so they can find various informations on the system
  609. ;     (system paths, max number of lines in messages, ...) but it may also
  610. ;     be a way to gather vital informations.
  611. ;     ■ Search for : PCBDAT()
  612. ;
  613. ;------------------------------------------------------------------------------
  614. ;
  615. ; Postprocessing report
  616. ;
  617. ;    4       For/Next
  618. ;    6       While/EndWhile
  619. ;    41      If/Then or If/Then/Else
  620. ;    5       Select Case
  621. ;
  622. ;------------------------------------------------------------------------------
  623. ;                 AEGiS Corp - Break the routines, code against the machines!
  624. ;------------------------------------------------------------------------------
  625.