home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / bcon110.zip / FEEDBACK.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-05-02  |  10KB  |  668 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.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Integer  INTEGER001
  25.     Integer  INTEGER002
  26.     Integer  INTEGER003
  27.     Integer  INTEGER004
  28.     Integer  INTEGER005
  29.     Integer  INTEGER006
  30.     Integer  INTEGER007
  31.     Integer  INTEGER008
  32.     Integer  INTEGER009
  33.     Integer  INTEGER010
  34.     Integer  INTEGER011
  35.     Integer  INTEGER012
  36.     Integer  INTEGER013
  37.     Integer  INTEGER014
  38.     Integer  INTEGER015
  39.     Integer  INTEGER016
  40.     Integer  INTEGER017
  41.     Integer  INTEGER018
  42.     Integer  INTEGER019
  43.     Integer  INTEGER020
  44.     Integer  INTEGER021
  45.     Integer  INTEGER022
  46.     Integer  INTEGER023
  47.     Integer  INTEGER024
  48.     String   STRING001
  49.     String   STRING002
  50.     String   STRING003
  51.     String   STRING004
  52.     String   STRING005
  53.     String   STRING006
  54.     String   STRING007
  55.     String   STRING008
  56.     String   STRING009
  57.     String   STRING010
  58.     String   STRING011
  59.     String   STRING012
  60.     String   STRING013
  61.     String   STRING014
  62.     String   STRING015
  63.     String   STRING016
  64.     String   STRING017
  65.     String   STRING018
  66.     String   STRING019
  67.     String   STRING020
  68.     String   STRING021
  69.     String   STRING022
  70.     String   STRING023
  71.     String   STRING024
  72.     String   STRING025
  73.     String   STRING026
  74.     String   STRING027
  75.     String   STRING028
  76.     String   STRING029
  77.     String   STRING030
  78.  
  79. ;------------------------------------------------------------------------------
  80.  
  81.     STRING022 = PPEPath() + "cfg\fbmenus.cfg"
  82.     BOOLEAN003 = 0
  83.     BOOLEAN004 = 0
  84.     BOOLEAN001 = 0
  85.     STRING001 = PPEPath() + "\graph\fbtext"
  86.     If (LangExt() <> "") Then
  87.         If (BOOLEAN001) Then
  88.             PrintLn "Langext = " + LangExt()
  89.             Wait
  90.         Endif
  91.         If (Exist(STRING001 + LangExt())) STRING001 = STRING001 + LangExt()
  92.     Endif
  93.     STRING017 = PPEPath() + "\work\mxlog." + String(PcbNode())
  94.     STRING018 = PPEPath() + "\work\fbtmp." + String(PcbNode())
  95.     STRING002 = PPEPath() + "feedback.cfg"
  96.     BOOLEAN005 = 0
  97.     Tokenize TokenStr()
  98.     If (TokCount() == 2) Then
  99.         If (GetToken() == "LOGON") Then
  100.             BOOLEAN005 = 1
  101.             STRING023 = GetToken()
  102.         Endif
  103.     Endif
  104.     Tokenize ReadLine(STRING002, 2)
  105.     INTEGER002 = GetToken()
  106.     If (Upper(GetToken()) == "YES") Then
  107.         BOOLEAN002 = 1
  108.     Else
  109.         BOOLEAN002 = 0
  110.     Endif
  111.     INTEGER015 = GetToken()
  112.     STRING012 = PPEPath() + "mx.cfg"
  113.     If (BOOLEAN002) Then
  114.         If (LoggedOn()) Goto LABEL001
  115.         If (Exist(STRING012)) Then
  116.             If (Upper(ReadLine(STRING012, 3)) == "YES") Then
  117.                 FAppend 3, STRING017, 1, 0
  118.                 Goto LABEL001
  119.             Endif
  120.             BOOLEAN002 = 0
  121.         Endif
  122.     Endif
  123.     :LABEL001
  124.     If (LoggedOn()) Then
  125.         GetUser
  126.         STRING008 = U_Name()
  127.     Endif
  128.     INTEGER011 = 1
  129.     STRING014 = Chr(13)
  130.     STRING015 = Chr(27)
  131.     STRING016 = Chr(7)
  132.     INTEGER001 = ReadLine(STRING002, 1)
  133.     If (BOOLEAN002) Then
  134.         STRING003 = "Feedback started at " + String(Time())
  135.         Gosub LABEL018
  136.     Endif
  137.     If (AnsiOn()) Goto LABEL002
  138.     If (BOOLEAN002) Then
  139.         STRING003 = "No ansi, exiting feedback at " + String(Time())
  140.         Gosub LABEL018
  141.     Endif
  142.     PrintLn 
  143.     PrintLn "No ansi capability, exiting feedback"
  144.     End
  145.     :LABEL002
  146.     StartDisp 1
  147.     INTEGER011 = 1
  148.     Tokenize ReadLine(STRING022, 1)
  149.     STRING024 = GetToken()
  150.     INTEGER016 = GetToken()
  151.     :LABEL003
  152.     STRING025 = Random(STRING024 - 1) + 1
  153.     Tokenize ReadLine(STRING022, 1 + STRING025)
  154.     INTEGER021 = STRING025
  155.     INTEGER008 = GetToken()
  156.     INTEGER004 = GetToken()
  157.     INTEGER005 = GetToken()
  158.     STRING027 = GetToken()
  159.     STRING020 = GetToken()
  160.     STRING028 = GetToken()
  161.     STRING030 = PPEPath() + "mnutxt\fbmnu"
  162.     If (Exist(STRING030 + String(STRING025) + LangExt())) Then
  163.         STRING030 = PPEPath() + "mnutxt\fbmnu" + String(STRING025) + LangExt()
  164.     ElseIf (Exist(STRING030 + String(STRING025))) Then
  165.         STRING030 = PPEPath() + "mnutxt\fbmnu" + String(STRING025)
  166.     ElseIf (Exist(STRING030 + LangExt())) Then
  167.         STRING030 = PPEPath() + "mnutxt\fbmnu" + LangExt()
  168.     Endif
  169.     If (INTEGER001 == 1) Goto LABEL010
  170.     If (BOOLEAN005) Goto LABEL010
  171.     INTEGER012 = INTEGER001
  172.     :LABEL004
  173.     INTEGER006 = INTEGER004
  174.     INTEGER007 = INTEGER005
  175.     If (BOOLEAN004) Goto LABEL005
  176.     DefColor
  177.     Cls
  178.     DispFile PPEPath() + "graph\feed" + String(INTEGER021), 1 + 4
  179.     :LABEL005
  180.     Color DefColor()
  181.     STRING029 = ReadLine(STRING030, 1)
  182.     INTEGER024 = Len(StripAtx(STRING029)) - 4
  183.     If (INTEGER016 >= INTEGER001) Then
  184.         INTEGER011 = 1
  185.         For INTEGER013 = 1 To INTEGER001
  186.             AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER013 - 1
  187.             STRING006 = Chr(Asc("a") + INTEGER013)
  188.             INTEGER023 = (INTEGER013 - 1) * 2 + 1
  189.             STRING011 = STRING027 + ReadLine(STRING030, INTEGER023 + 1)
  190.             STRING011 = STRING011 + STRING028 + ReadLine(STRING030, INTEGER023 + 2)
  191.             Print ReplaceStr(STRING029, "%SEP%", STRING006), STRING011
  192.         Next
  193.         INTEGER019 = INTEGER011
  194.         INTEGER018 = INTEGER011 + INTEGER001 - 1
  195.     Else
  196.         If (INTEGER011 + INTEGER016 <= INTEGER012) INTEGER017 = INTEGER011 + INTEGER016 - 1
  197.         If (INTEGER011 + INTEGER016 > INTEGER012) INTEGER017 = INTEGER012
  198.         INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
  199.         INTEGER019 = INTEGER011
  200.         INTEGER018 = INTEGER017
  201.         Color DefColor()
  202.         INTEGER014 = INTEGER011 % INTEGER016
  203.         For INTEGER013 = INTEGER011 To INTEGER017
  204.             If (INTEGER014 == 0) INTEGER014 = INTEGER016
  205.             AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER014 - 1
  206.             STRING006 = Chr(Asc("a") + INTEGER014)
  207.             INTEGER023 = (INTEGER013 - 1) * 2 + 1
  208.             STRING011 = STRING027 + ReadLine(STRING030, INTEGER023 + 1)
  209.             STRING011 = STRING011 + STRING028 + ReadLine(STRING030, INTEGER023 + 2)
  210.             Print ReplaceStr(STRING029, "%SEP%", STRING006), STRING011
  211.             Inc INTEGER014
  212.         Next
  213.         If (INTEGER011 + INTEGER016 > INTEGER012) Then
  214.             INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
  215.             INTEGER003 = GetY()
  216.             For INTEGER014 = 1 To INTEGER013 - 1
  217.                 AnsiPos INTEGER006 - INTEGER024, INTEGER003 + INTEGER014
  218.                 Print Space(INTEGER008)
  219.             Next
  220.         Endif
  221.     Endif
  222.     Newline
  223.     BOOLEAN004 = 0
  224.     AnsiPos INTEGER006, INTEGER007
  225.     Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
  226.     :LABEL006
  227.     STRING007 = Inkey()
  228.     If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
  229.     If (((Upper(STRING007) == "A") || (STRING007 == "UP")) || (STRING007 == "LEFT")) Then
  230.         INTEGER014 = INTEGER011 % INTEGER016
  231.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  232.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  233.         Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
  234.         If (INTEGER011 % INTEGER016 == 1) Then
  235.             INTEGER011 = INTEGER011 + INTEGER016 - 1
  236.             If (INTEGER011 > INTEGER012) INTEGER011 = INTEGER012
  237.         Else
  238.             INTEGER011 = INTEGER011 - 1 % INTEGER016
  239.         Endif
  240.         INTEGER014 = INTEGER011 % INTEGER016
  241.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  242.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  243.         Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
  244.         Goto LABEL006
  245.     ElseIf (((Upper(STRING007) == "Z") || (STRING007 == "DOWN")) || (STRING007 == "RIGHT")) Then
  246.         INTEGER014 = INTEGER011 % INTEGER016
  247.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  248.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  249.         Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
  250.         If (INTEGER011 % INTEGER016 == 0) Then
  251.             INTEGER011 = INTEGER011 - INTEGER016 - 1
  252.         ElseIf (INTEGER011 == INTEGER012) Then
  253.             INTEGER011 = INTEGER019
  254.         Else
  255.             INTEGER011 = INTEGER011 + 1
  256.         Endif
  257.         INTEGER014 = INTEGER011 % INTEGER016
  258.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  259.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  260.         Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
  261.         Goto LABEL006
  262.     Else
  263.         Select Case (STRING007)
  264.             Case STRING014
  265.                 If (STRING007 <> STRING014) INTEGER011 = STRING007
  266.                 INTEGER013 = INTEGER011
  267.                 Gosub LABEL010
  268.                 INTEGER011 = INTEGER019
  269.                 Goto LABEL003
  270.             Case "HOME"
  271.                 INTEGER014 = INTEGER011 % INTEGER016
  272.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  273.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  274.                 Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
  275.                 INTEGER011 = INTEGER019
  276.                 INTEGER014 = INTEGER011 % INTEGER016
  277.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  278.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  279.                 Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
  280.                 Goto LABEL006
  281.             Case "END"
  282.                 INTEGER014 = INTEGER011 % INTEGER016
  283.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  284.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  285.                 Print ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1)
  286.                 INTEGER011 = INTEGER018
  287.                 INTEGER014 = INTEGER011 % INTEGER016
  288.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  289.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  290.                 Print STRING020, StripAtx(ReadLine(STRING030, (INTEGER011 - 1) * 2 + 1 + 1))
  291.                 Goto LABEL006
  292.             Case "?"
  293.                 DefColor
  294.                 INTEGER009 = GetX()
  295.                 INTEGER010 = GetY()
  296.                 AnsiPos 1, 23
  297.                 SaveScrn
  298.                 Cls
  299.                 DispFile PPEPath() + "graph\fbhlp", 1 + 4
  300.                 Wait
  301.                 RestScrn
  302.                 AnsiPos INTEGER009, INTEGER010
  303.                 Goto LABEL006
  304.             Case ">", "CTRL PGDN"
  305.                 If (INTEGER018 + INTEGER016 <= INTEGER012) Then
  306.                     INTEGER011 = INTEGER018 + 1
  307.                     BOOLEAN004 = 1
  308.                     Goto LABEL004
  309.                 Else
  310.                     If (INTEGER018 <> INTEGER012) Then
  311.                         INTEGER011 = INTEGER018 + 1
  312.                         BOOLEAN004 = 1
  313.                         Goto LABEL004
  314.                     Endif
  315.                     MPrint STRING016
  316.                     Goto LABEL006
  317.                 Endif
  318.             Case "<", "CTRL PGUP"
  319.                 If (INTEGER019 - INTEGER016 >= 1) Then
  320.                     INTEGER011 = INTEGER019 - INTEGER016
  321.                     BOOLEAN004 = 1
  322.                     Goto LABEL004
  323.                 Else
  324.                     MPrint STRING016
  325.                     Goto LABEL006
  326.                 Endif
  327.             Case "Q", STRING015
  328.                 DefColor
  329.                 Cls
  330.                 If (BOOLEAN002) Then
  331.                     STRING003 = "Exiting feedback " + String(Time())
  332.                     Gosub LABEL018
  333.                 Endif
  334.                 End
  335.             Case Else
  336.                 If ((STRING007 >= "b") && (STRING007 <= STRING006)) Then
  337.                     INTEGER011 = INTEGER019 + Asc(STRING007) - Asc("b")
  338.                     INTEGER013 = INTEGER011
  339.                     Gosub LABEL010
  340.                     INTEGER011 = INTEGER019
  341.                     Goto LABEL003
  342.                 Endif
  343.                 If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
  344.                 If (STRING007 == "■") Then
  345.                     :LABEL007
  346.                     STRING007 = Inkey()
  347.                     If (STRING007 == "") Goto LABEL007
  348.                     If (STRING007 <> "e") Goto LABEL006
  349.                     :LABEL008
  350.                     STRING007 = Inkey()
  351.                     If (STRING007 == "") Goto LABEL008
  352.                     If (STRING007 <> "l") Goto LABEL006
  353.                     GetAltUser 1
  354.                     STRING004 = ReadLine(PCBDat(), 2)
  355.                     Tokenize U_Name()
  356.                     If (TokCount() > 1) Then
  357.                         PrintLn 
  358.                         KbdStuff U_Name() + STRING014
  359.                         Goto LABEL009
  360.                     Endif
  361.                     KbdStuff U_Name() + STRING014 + STRING014
  362.                     :LABEL009
  363.                     KbdStuff U_Pwd + STRING014
  364.                     End
  365.                 Endif
  366.                 Goto LABEL006
  367.             Endif
  368.     End Select
  369.     End
  370.     :LABEL010
  371.     DefColor
  372.     Cls
  373.     INTEGER022 = STRING024 + 2
  374.     INTEGER020 = ReadLine(STRING022, STRING024 + 1 + 1)
  375.     If (BOOLEAN005) Then
  376.         STRING010 = StripAtx(ReadLine(STRING002, 4))
  377.         STRING008 = STRING023
  378.         STRING005 = ReadLine(STRING001, 2)
  379.     Else
  380.         STRING026 = Random(INTEGER020 - 1) + 1
  381.         Tokenize ReadLine(STRING022, STRING024 + 1 + STRING026 + 1)
  382.         DispFile PPEPath() + "graph\fbinfo" + String(STRING026), 1 + 4
  383.         If (INTEGER001 == 1) Then
  384.             STRING010 = StripAtx(ReadLine(STRING002, 4))
  385.             AnsiPos GetToken(), GetToken()
  386.             Print GetToken() + Upper(STRING010)
  387.         Else
  388.             STRING010 = StripAtx(ReadLine(STRING002, INTEGER011 - 1 + 4))
  389.             AnsiPos GetToken(), GetToken()
  390.             Print GetToken() + Upper(STRING010)
  391.         Endif
  392.         If (BOOLEAN002) Then
  393.             STRING003 = "Sysop (" + Upper(STRING010) + ") selected for feedback"
  394.             Gosub LABEL018
  395.         Endif
  396.         If (LoggedOn()) Goto LABEL011
  397.         STRING007 = ""
  398.         AnsiPos GetToken(), GetToken()
  399.         InputText GetToken() + "_", STRING007, 3, 70
  400.         If (STRING007 == "") Then
  401.             If (BOOLEAN002) Then
  402.                 STRING003 = "No user name given in feedback"
  403.                 Gosub LABEL018
  404.             Endif
  405.             Return
  406.         Endif
  407.         If (BOOLEAN002) Then
  408.             STRING003 = "Handle (" + Upper(STRING007) + ") entered for feedback"
  409.             Gosub LABEL018
  410.         Endif
  411.         STRING008 = STRING007
  412.         Goto LABEL012
  413.         :LABEL011
  414.         AnsiPos GetToken(), GetToken()
  415.         Print GetToken() + Upper(STRING008)
  416.         If (BOOLEAN002) Then
  417.             STRING003 = "Handle (" + Upper(STRING008) + ") used"
  418.             Gosub LABEL018
  419.         Endif
  420.         :LABEL012
  421.         STRING007 = ""
  422.         AnsiPos GetToken(), GetToken()
  423.         InputText GetToken() + "_", STRING007, 3, 60
  424.         If (STRING007 == "") Then
  425.             If (BOOLEAN002) Then
  426.                 STRING003 = "No feedback subject given"
  427.                 Gosub LABEL018
  428.             Endif
  429.             Return
  430.         Endif
  431.         STRING005 = STRING007
  432.         If (BOOLEAN002) Then
  433.             STRING003 = "Feedback subject (" + Upper(STRING005) + ") entered"
  434.             Gosub LABEL018
  435.         Endif
  436.         :LABEL013
  437.         FCreate 1, STRING018, 1, 0
  438.     Endif
  439.     :LABEL014
  440.     DefColor
  441.     Cls
  442.     STRING025 = Random(ReadLine(STRING022, INTEGER022 + INTEGER020 + 1) - 1) + 1
  443.     Tokenize ReadLine(STRING022, INTEGER022 + INTEGER020 + 1 + STRING025)
  444.     DispFile PPEPath() + "graph\fbhdr" + String(STRING025), 1 + 4
  445.     AnsiPos GetToken(), GetToken()
  446.     Print GetToken() + String(INTEGER015)
  447.     AnsiPos GetToken(), GetToken()
  448.     Print GetToken() + String(STRING010)
  449.     AnsiPos GetToken(), GetToken()
  450.     Print GetToken() + String(STRING008)
  451.     AnsiPos GetToken(), GetToken()
  452.     Print GetToken() + String(STRING005)
  453.     INTEGER013 = 0
  454.     STRING009 = ReadLine(STRING001, 9)
  455.     AnsiPos GetToken(), GetToken()
  456.     STRING021 = GetToken()
  457.     If (BOOLEAN003) Then
  458.         STRING013 = ""
  459.         While (1) Do
  460.             FGet 1, STRING013
  461.             If (Ferr(1)) Break
  462.             PrintLn STRING009, STRING013
  463.             Inc INTEGER013
  464.         EndWhile
  465.         BOOLEAN003 = 0
  466.     Endif
  467.     While (1) Do
  468.         If (INTEGER013 >= INTEGER015) Break
  469.         STRING019 = ""
  470.         InputStr STRING021 + STRING009 + "_", STRING019, 15, 75, Mask_Ascii(), 2 + 512
  471.         If (Upper(STRING019) == "/S") Then
  472.             Break
  473.             AnsiPos 1, GetY()
  474.             ClrEol
  475.         Else
  476.             Newline
  477.             FPutLn 1, STRING019
  478.             AnsiPos 1, GetY()
  479.             ClrEol
  480.         Endif
  481.         Inc INTEGER013
  482.     EndWhile
  483.     FClose 1
  484.     :LABEL015
  485.     Newline
  486.     STRING007 = "S"
  487.     If (BOOLEAN005) Then
  488.         InputStr ReadLine(STRING001, 1), STRING007, 1, 1, "SsTtCc", 2
  489.     Else
  490.         InputStr ReadLine(STRING001, 10), STRING007, 1, 1, "AaSsTtCc", 2
  491.     Endif
  492.     Select Case (Upper(STRING007))
  493.         Case "A"
  494.             Goto LABEL017
  495.         Case "T"
  496.             Goto LABEL013
  497.         Case "S"
  498.             Goto LABEL016
  499.         Case "C"
  500.             FOpen 1, STRING018, 2, 0
  501.             BOOLEAN003 = 1
  502.             Goto LABEL014
  503.         Case Else
  504.             Goto LABEL015
  505.     End Select
  506.     :LABEL016
  507.     Message INTEGER002, Upper(STRING010), Upper(STRING008), ReadLine(STRING001, 11) + STRING005, "R", 0, 0, 0, STRING018
  508.     If (BOOLEAN002) Then
  509.         STRING003 = "feedback for sysop (" + Upper(STRING010) + ") entered and saved"
  510.         Gosub LABEL018
  511.     Endif
  512.     Delete STRING018
  513.     If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
  514.         FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
  515.         FPut 1, "YES"
  516.         FClose 1
  517.     Endif
  518.     Return
  519.     :LABEL017
  520.     If (BOOLEAN002) Then
  521.         STRING003 = "Feedback aborted"
  522.         Gosub LABEL018
  523.     Endif
  524.     Delete STRING018
  525.     If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
  526.         FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
  527.         FPut 1, "NO"
  528.         FClose 1
  529.     Endif
  530.     Return
  531.     :LABEL018
  532.     If (LoggedOn()) Goto LABEL019
  533.     FPutLn 3, "    " + STRING003
  534.     Return
  535.     :LABEL019
  536.     Log STRING003, 0
  537.     Return
  538.  
  539. ;------------------------------------------------------------------------------
  540. ;
  541. ; Usage report (before postprocessing)
  542. ;
  543. ; ■ Statements used :
  544. ;
  545. ;    4       End
  546. ;    5       Cls
  547. ;    2       ClrEol
  548. ;    2       Wait
  549. ;    2       Color 
  550. ;    127     Goto 
  551. ;    145     Let 
  552. ;    19      Print 
  553. ;    7       PrintLn 
  554. ;    92      If 
  555. ;    4       DispFile 
  556. ;    1       FCreate 
  557. ;    3       FOpen 
  558. ;    1       FAppend 
  559. ;    3       FClose 
  560. ;    1       FGet 
  561. ;    2       FPut 
  562. ;    2       FPutLn 
  563. ;    1       StartDisp 
  564. ;    1       GetUser
  565. ;    5       DefColor
  566. ;    2       Delete 
  567. ;    1       Log 
  568. ;    3       InputStr 
  569. ;    13      Gosub 
  570. ;    6       Return
  571. ;    3       Inc 
  572. ;    3       Newline
  573. ;    7       Tokenize 
  574. ;    2       InputText 
  575. ;    3       KbdStuff 
  576. ;    26      AnsiPos 
  577. ;    1       Message 
  578. ;    1       SaveScrn
  579. ;    1       RestScrn
  580. ;    2       MPrint 
  581. ;    1       GetAltUser 
  582. ;
  583. ;
  584. ; ■ Functions used :
  585. ;
  586. ;    11      *
  587. ;    12      %
  588. ;    148     +
  589. ;    42      -
  590. ;    44      ==
  591. ;    7       <>
  592. ;    3       <
  593. ;    6       <=
  594. ;    4       >
  595. ;    10      >=
  596. ;    66      !
  597. ;    7       &&
  598. ;    10      ||
  599. ;    1       Len(
  600. ;    20      Upper()
  601. ;    1       Space()
  602. ;    1       Ferr()
  603. ;    5       Chr()
  604. ;    4       Asc()
  605. ;    3       Random()
  606. ;    3       Time()
  607. ;    4       U_Name()
  608. ;    9       StripAtx()
  609. ;    3       Inkey()
  610. ;    20      String()
  611. ;    1       Mask_Ascii()
  612. ;    1       PCBDat()
  613. ;    18      PPEPath()
  614. ;    6       PcbNode()
  615. ;    32      ReadLine()
  616. ;    43      GetToken()
  617. ;    7       Exist()
  618. ;    1       TokenStr()
  619. ;    8       LangExt()
  620. ;    1       AnsiOn()
  621. ;    1       GetX()
  622. ;    4       GetY()
  623. ;    2       DefColor()
  624. ;    4       LoggedOn()
  625. ;    2       TokCount()
  626. ;    2       ReplaceStr()
  627. ;
  628. ;------------------------------------------------------------------------------
  629. ;
  630. ; Analysis flags : RMdH
  631. ;
  632. ; R - Read user ■ 5
  633. ;     User records are read, this may signify that someone wants to get
  634. ;     various informations about a user (for example his password), but
  635. ;     this may also be normal for a program accessing user records (for
  636. ;     example a User Editor)
  637. ;     ■ Search for : GETALTUSER
  638. ;
  639. ; M - Send text to modem only ■ 4
  640. ;     Some informations are sent only to the modem, not to the local
  641. ;     screen, this is a well known way to make stealth backdoors, Check!
  642. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  643. ;
  644. ; d - Access PCBOARD.DAT ■ 2
  645. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  646. ;     for many PPE so they can find various informations on the system
  647. ;     (system paths, max number of lines in messages, ...) but it may also
  648. ;     be a way to gather vital informations.
  649. ;     ■ Search for : PCBDAT()
  650. ;
  651. ; H - Read Password or Password History ■ 5
  652. ;     Program is reading the user's password or last password history
  653. ;     This may be ok for a password manager, but it is very suspect. Check!
  654. ;     ■ Search for : U_PWDHIST, U_PWD
  655. ;
  656. ;------------------------------------------------------------------------------
  657. ;
  658. ; Postprocessing report
  659. ;
  660. ;    3       For/Next
  661. ;    2       While/EndWhile
  662. ;    45      If/Then or If/Then/Else
  663. ;    2       Select Case
  664. ;
  665. ;------------------------------------------------------------------------------
  666. ;                 AEGiS Corp - Break the routines, code against the machines!
  667. ;------------------------------------------------------------------------------
  668.