home *** CD-ROM | disk | FTP | other *** search
/ New Horizons Shareware Collection / HORIZONS1.BIN / TOP.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-02-19  |  18KB  |  1,099 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 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Boolean  BOOLEAN010
  29.     Boolean  BOOLEAN011
  30.     Boolean  BOOLEAN012
  31.     Boolean  BOOLEAN013
  32.     Boolean  BOOLEAN014
  33.     Boolean  BOOLEAN015
  34.     Boolean  BOOLEAN016
  35.     Boolean  BOOLEAN017
  36.     Boolean  BOOLEAN018
  37.     Boolean  BOOLEAN019
  38.     Boolean  BOOLEAN020
  39.     Date     DATE001
  40.     Date     DATE002
  41.     Date     DATE003
  42.     Date     DATE004
  43.     Date     DATE005
  44.     Date     DATE006
  45.     Integer  INTEGER001
  46.     Integer  INTEGER002
  47.     Integer  INTEGER003
  48.     Integer  INTEGER004
  49.     Integer  INTEGER005
  50.     Integer  INTEGER006
  51.     Integer  INTEGER007
  52.     Integer  INTEGER008
  53.     Integer  INTEGER009
  54.     Integer  INTEGER010
  55.     Integer  INTEGER011
  56.     Integer  INTEGER012
  57.     Integer  INTEGER013
  58.     Integer  INTEGER014
  59.     Integer  INTEGER015
  60.     Integer  INTEGER016
  61.     Integer  INTEGER017
  62.     Integer  INTEGER018
  63.     Integer  INTEGER019
  64.     Integer  INTEGER020
  65.     Integer  INTEGER021
  66.     Integer  INTEGER022
  67.     Integer  INTEGER023
  68.     Integer  INTEGER024
  69.     Integer  INTEGER025
  70.     Integer  INTEGER026
  71.     Integer  INTEGER029
  72.     Integer  INTEGER030
  73.     Integer  TINTEGER031(25)
  74.     Integer  TINTEGER032(25)
  75.     Integer  INTEGER033
  76.     Integer  INTEGER034
  77.     Integer  INTEGER035
  78.     Integer  INTEGER036
  79.     Integer  INTEGER037
  80.     Integer  INTEGER038
  81.     Integer  INTEGER039
  82.     Integer  INTEGER040
  83.     Real     REAL001
  84.     Real     REAL002
  85.     Real     REAL003
  86.     Real     REAL004
  87.     Real     REAL005
  88.     Real     REAL006
  89.     Real     REAL007
  90.     Real     REAL008
  91.     Real     REAL009
  92.     String   STRING001
  93.     String   STRING002
  94.     String   STRING003
  95.     String   STRING004
  96.     String   STRING005
  97.     String   STRING006
  98.     String   STRING007
  99.     String   STRING008
  100.     String   STRING009
  101.     String   STRING010
  102.     String   STRING011
  103.     String   STRING012
  104.     String   TSTRING013(9)
  105.     String   STRING014
  106.     String   STRING015
  107.     String   STRING016
  108.     String   STRING017
  109.     String   STRING018
  110.     String   STRING019
  111.     String   STRING020
  112.     String   STRING021
  113.     String   STRING022
  114.     String   STRING023
  115.     String   STRING024
  116.     String   STRING025
  117.     String   STRING026
  118.     String   STRING027
  119.     String   TSTRING028(8)
  120.     String   STRING029
  121.     String   STRING030
  122.     String   TSTRING032(25)
  123.     String   TSTRING033(25)
  124.     String   STRING034
  125.     String   STRING036
  126.     String   STRING037
  127.     String   STRING038
  128.     String   STRING045
  129.     String   STRING046
  130.     Int      INT001
  131.     Int      INT002
  132.     Int      INT003
  133.     Int      INT004
  134.     BigStr   TBIGSTR001(8)
  135.     Double   DOUBLE001
  136.     Declare  Function FUNCTION001(String STRING047) Boolean
  137.     Declare  Function FUNCTION002(String STRING035) String
  138.     Declare  Procedure PROC001(String STRING049)
  139.     Declare  Procedure PROC002(Var Date DATE007, Var Date DATE008)
  140.     Declare  Procedure PROC003(String STRING050)
  141.     Declare  Procedure PROC004()
  142.     Declare  Procedure PROC005()
  143.     Declare  Procedure PROC006(String STRING031, Integer INTEGER027, Integer INTEGER028)
  144.     Declare  Procedure PROC007(String STRING039, String STRING040, String STRING041, String STRING042, String STRING043, String STRING044)
  145.     Declare  Procedure PROC008(Integer INTEGER041)
  146.  
  147. ;------------------------------------------------------------------------------
  148.  
  149.     STRING014 = PPEPath() + "last"
  150.     STRING003 = PPEPath() + "weekbul.dat"
  151.     STRING004 = PPEPath() + "weekbdl.dat"
  152.     STRING005 = PPEPath() + "weekful.dat"
  153.     STRING006 = PPEPath() + "weekfdl.dat"
  154.     STRING007 = PPEPath() + "monthbul.dat"
  155.     STRING009 = PPEPath() + "monthbdl.dat"
  156.     STRING008 = PPEPath() + "monthful.dat"
  157.     STRING010 = PPEPath() + "monthfdl.dat"
  158.     STRING015 = PPEPath() + "week.tot"
  159.     STRING016 = PPEPath() + "month.tot"
  160.     STRING012 = PPEPath() + "top.cfg"
  161.     STRING011 = PPEPath() + "top." + String(PcbNode())
  162.     If (!Exist(STRING011)) End
  163.     If (Upper((ReadLine(STRING011, 1) <> U_Name()))) Then
  164.         FClose -1
  165.         Delete STRING011
  166.         End
  167.     Endif
  168.     FClose -1
  169.     FreshLine
  170.     PrintLn "@X08[PWA] @X07BlackCat @X08WMTop PPE v1.00.."
  171.     PrintLn "@X08Reading exclusion file"
  172.     FOpen 1, PPEPath() + "top.exc", 0, 0
  173.     FRead 1, STRING017, 2048
  174.     If (Ferr(1)) Goto LABEL001
  175.     FreshLine
  176.     PrintLn "@X07Exclusion string exhausted, no additions possible"
  177.     :LABEL001
  178.     FClose 1
  179.     If (InStr(STRING017, """" + Upper(U_Name()) + """")) Then
  180.         PrintLn "@X08User found in exclusion list"
  181.         FClose -1
  182.         If (Exist(STRING011)) Delete STRING011
  183.         End
  184.     Endif
  185.     STRING023 = ReadLine(PCBDat(), 29)
  186.     Tokenize ReadLine(STRING012, 1)
  187.     INTEGER008 = GetToken()
  188.     If (GetToken() == "YES") Then
  189.         BOOLEAN001 = 1
  190.     Endif
  191.     INTEGER002 = GetToken()
  192.     If (GetToken() == "YES") Then
  193.         BOOLEAN016 = 1
  194.         INT001 = GetToken()
  195.     Endif
  196.     STRING030 = GetToken()
  197.     Tokenize ReadLine(STRING012, 2)
  198.     INTEGER009 = GetToken()
  199.     If (GetToken() == "YES") Then
  200.         BOOLEAN002 = 1
  201.     Endif
  202.     INTEGER003 = GetToken()
  203.     If (GetToken() == "YES") Then
  204.         BOOLEAN017 = 1
  205.         INT002 = GetToken()
  206.     Endif
  207.     Tokenize ReadLine(STRING012, 3)
  208.     INTEGER004 = ReadLine(STRING012, 12)
  209.     If (GetToken() == "YES") Then
  210.         BOOLEAN003 = 1
  211.     Endif
  212.     If (GetToken() == "YES") Then
  213.         BOOLEAN004 = 1
  214.     Endif
  215.     If (GetToken() == "YES") Then
  216.         BOOLEAN005 = 1
  217.     Endif
  218.     If (GetToken() == "YES") Then
  219.         BOOLEAN006 = 1
  220.     Endif
  221.     If (GetToken() == "YES") Then
  222.         BOOLEAN007 = 1
  223.     Endif
  224.     If (GetToken() == "YES") Then
  225.         BOOLEAN008 = 1
  226.     Endif
  227.     If (GetToken() == "YES") Then
  228.         BOOLEAN009 = 1
  229.     Endif
  230.     If (GetToken() == "YES") Then
  231.         BOOLEAN010 = 1
  232.     Endif
  233.     DATE003 = Date()
  234.     BOOLEAN011 = 0
  235.     STRING002 = PPEPath() + "TOP.DBF"
  236.     If (Exist(STRING014)) Then
  237.         DATE004 = ReadLine(STRING014, 1)
  238.         FClose -1
  239.     Else
  240.         DATE004 = DATE003
  241.         FCreate 1, STRING014, 1, 3
  242.         FPutLn 1, DATE003
  243.         FClose 1
  244.     Endif
  245.     If (DATE004 <> DATE003) Then
  246.         FCreate 1, STRING014, 1, 3
  247.         FPutLn 1, DATE003
  248.         FClose 1
  249.     Endif
  250.     PROC002(DATE001, DATE002)
  251.     If (Exist(STRING002)) Then
  252.         Gosub LABEL004
  253.     Else
  254.         Gosub LABEL005
  255.         BOOLEAN011 = 1
  256.     Endif
  257.     If (FUNCTION001(U_Name())) Goto LABEL002
  258.     PROC001(U_Name())
  259.     Goto LABEL003
  260.     :LABEL002
  261.     PROC003(U_Name())
  262.     :LABEL003
  263.     PROC004()
  264.     PROC005()
  265.     FClose -1
  266.     Delete STRING011
  267.     End
  268.     :LABEL004
  269.     DOpen 0, PPEPath() + "TOP", 0
  270.     DnOpen 0, PPEPath() + "TOP.NDX"
  271.     DTag 0, "top"
  272.     Return
  273.     :LABEL005
  274.     TSTRING013(0) = "name,C,30,0"
  275.     TSTRING013(1) = "date,D,10,0"
  276.     TSTRING013(2) = "bupw,N,10,0"
  277.     TSTRING013(3) = "bupm,N,10,0"
  278.     TSTRING013(4) = "fupw,N,10,0"
  279.     TSTRING013(5) = "fupm,N,10,0"
  280.     TSTRING013(6) = "bdlw,N,10,0"
  281.     TSTRING013(7) = "bdlm,N,10,0"
  282.     TSTRING013(8) = "fdlw,N,10,0"
  283.     TSTRING013(9) = "fdlm,N,10,0"
  284.     DCreate 0, PPEPath() + "TOP", 0, TSTRING013(BOOLEAN000)
  285.     DnCreate 0, PPEPath() + "TOP.NDX", "name"
  286.     DTag 0, "TOP"
  287.     Return
  288.     End
  289.  
  290. ;------------------------------------------------------------------------------
  291.  
  292.     Procedure PROC006(String STRING031, Integer INTEGER027, Integer INTEGER028)
  293.  
  294.     Boolean  BOOLEAN018
  295.     Integer  INTEGER029
  296.     Integer  INTEGER030
  297.     String   TSTRING032(25)
  298.     String   TSTRING033(25)
  299.     String   STRING034
  300.     Integer  TINTEGER031(25)
  301.     Integer  TINTEGER032(25)
  302.  
  303.     If (Exist(STRING031)) Goto LABEL006
  304.     PrintLn "@X08Creating new top data"
  305.     FCreate 1, STRING031, 1, 3
  306.     STRING034 = U_Name()
  307.     FPutLn 1, STRING034
  308.     FPutLn 1, String(INTEGER027)
  309.     FPutLn 1, String(INTEGER028)
  310.     FPutLn 1, U_City
  311.     INTEGER010 = 0
  312.     For INTEGER017 = 1 To INTEGER004 - 1
  313.         FPutLn 1, "NONE"
  314.         FPutLn 1, String(INTEGER010)
  315.         FPutLn 1, String(INTEGER010)
  316.         FPutLn 1, ""
  317.     Next
  318.     FClose 1
  319.     Goto LABEL009
  320.     :LABEL006
  321.     BOOLEAN018 = 0
  322.     INTEGER030 = 0
  323.     FOpen 1, STRING031, 0, 0
  324.     For INTEGER017 = 1 To INTEGER004
  325.         FGet 1, TSTRING032(INTEGER017)
  326.         If (TSTRING032(INTEGER017) == Upper(U_Name())) Then
  327.             INTEGER030 = INTEGER017
  328.         Endif
  329.         FGet 1, STRING024
  330.         TINTEGER031(INTEGER017) = STRING024
  331.         FGet 1, STRING024
  332.         TINTEGER032(INTEGER017) = STRING024
  333.         If (BOOLEAN018) Goto LABEL007
  334.         If (TSTRING032(INTEGER017) == "NONE") Then
  335.             INTEGER029 = INTEGER017
  336.             BOOLEAN018 = 1
  337.         ElseIf (INTEGER027 > TINTEGER031(INTEGER017)) Then
  338.             INTEGER029 = INTEGER017
  339.             BOOLEAN018 = 1
  340.         Endif
  341.         :LABEL007
  342.         FGet 1, TSTRING033(INTEGER017)
  343.     Next
  344.     FClose 1
  345.     If (BOOLEAN018) If !(INTEGER030 > 0) Goto LABEL008
  346.     If (INTEGER030 == INTEGER029) Then
  347.         TSTRING032(INTEGER029) = U_Name()
  348.         TINTEGER031(INTEGER029) = INTEGER027
  349.         TINTEGER032(INTEGER029) = INTEGER028
  350.         TSTRING033(INTEGER029) = U_City
  351.     Else
  352.         For INTEGER018 = INTEGER030 To INTEGER004 - 1
  353.             TSTRING032(INTEGER018) = TSTRING032(INTEGER018 + 1)
  354.             TINTEGER031(INTEGER018) = TINTEGER031(INTEGER018 + 1)
  355.             TINTEGER032(INTEGER018) = TINTEGER032(INTEGER018 + 1)
  356.             TSTRING033(INTEGER018) = TSTRING033(INTEGER018 + 1)
  357.         Next
  358.         If (INTEGER029 > INTEGER030) Dec INTEGER029
  359.         For INTEGER018 = INTEGER004 To INTEGER029 + 1 Step -1
  360.             TSTRING032(INTEGER018) = TSTRING032(INTEGER018 - 1)
  361.             TINTEGER031(INTEGER018) = TINTEGER031(INTEGER018 - 1)
  362.             TINTEGER032(INTEGER018) = TINTEGER032(INTEGER018 - 1)
  363.             TSTRING033(INTEGER018) = TSTRING033(INTEGER018 - 1)
  364.         Next
  365.         TSTRING032(INTEGER029) = U_Name()
  366.         TINTEGER031(INTEGER029) = INTEGER027
  367.         TINTEGER032(INTEGER029) = INTEGER028
  368.         TSTRING033(INTEGER029) = U_City
  369.     Endif
  370.     Goto LABEL009
  371.     :LABEL008
  372.     For INTEGER018 = INTEGER004 To INTEGER029 + 1 Step -1
  373.         TSTRING032(INTEGER018) = TSTRING032(INTEGER018 - 1)
  374.         TINTEGER031(INTEGER018) = TINTEGER031(INTEGER018 - 1)
  375.         TINTEGER032(INTEGER018) = TINTEGER032(INTEGER018 - 1)
  376.         TSTRING033(INTEGER018) = TSTRING033(INTEGER018 - 1)
  377.     Next
  378.     TSTRING032(INTEGER029) = U_Name()
  379.     TINTEGER031(INTEGER029) = INTEGER027
  380.     TINTEGER032(INTEGER029) = INTEGER028
  381.     TSTRING033(INTEGER029) = U_City
  382.     :LABEL009
  383.     If (BOOLEAN018) Then
  384.         FClose -1
  385.         FCreate 1, STRING031, 1, 3
  386.         For INTEGER017 = 1 To INTEGER004
  387.             FPutLn 1, TSTRING032(INTEGER017)
  388.             FPutLn 1, String(TINTEGER031(INTEGER017))
  389.             FPutLn 1, String(TINTEGER032(INTEGER017))
  390.             FPutLn 1, TSTRING033(INTEGER017)
  391.         Next
  392.         FClose 1
  393.     Endif
  394.  
  395.     EndProc
  396.  
  397.  
  398. ;------------------------------------------------------------------------------
  399.  
  400.     Function FUNCTION002(String STRING035) String
  401.  
  402.     String   STRING037
  403.     String   STRING038
  404.     Int      INT003
  405.     Int      INT004
  406.     String   STRING039
  407.  
  408.     If (STRING035 == "") Then
  409.         FUNCTION002 = ""
  410.         Return
  411.     Endif
  412.     STRING037 = STRING035
  413.     If (Len(STRING037) <= 3) Then
  414.         FUNCTION002 = STRING037
  415.     Else
  416.         STRING038 = ""
  417.         INT004 = Len(STRING037) % 3
  418.         If (INT004) STRING038 = Left(STRING037, INT004) + STRING030
  419.         INTEGER007 = Len(STRING037) / 3
  420.         For INT003 = 0 To INTEGER007 - 1
  421.             If (INT003) Then
  422.                 STRING038 = STRING038 + STRING030 + Mid(STRING037, INT003 * 3 + INT004 + 1, 3)
  423.                 Continue
  424.             Endif
  425.             STRING038 = STRING038 + Mid(STRING037, INT003 * 3 + INT004 + 1, 3)
  426.         Next
  427.         FUNCTION002 = STRING038
  428.     Endif
  429.  
  430.     EndFunc
  431.  
  432.  
  433. ;------------------------------------------------------------------------------
  434.  
  435.     Procedure PROC007(String STRING039, String STRING040, String STRING041, String STRING042, String STRING043, String STRING044)
  436.  
  437.     String   STRING045
  438.     String   STRING046
  439.     Date     DATE005
  440.     Integer  INTEGER033
  441.     Integer  INTEGER034
  442.     Boolean  BOOLEAN019
  443.  
  444.     FCreate 1, STRING039, 1, 3
  445.     Select Case (STRING044)
  446.         Case "weeklyu"
  447.             STRING045 = ReadLine(STRING015, 1)
  448.             STRING046 = ReadLine(STRING015, 3)
  449.             DATE005 = DATE001
  450.             INTEGER033 = INTEGER023
  451.             BOOLEAN019 = 1
  452.             INTEGER034 = INT001
  453.         Case "weeklyd"
  454.             STRING045 = ReadLine(STRING015, 2)
  455.             STRING046 = ReadLine(STRING015, 4)
  456.             DATE005 = DATE001
  457.             INTEGER033 = INTEGER023
  458.         Case "monthlyu"
  459.             STRING045 = ReadLine(STRING016, 1)
  460.             STRING046 = ReadLine(STRING016, 3)
  461.             DATE005 = DATE002
  462.             INTEGER033 = INTEGER024
  463.             BOOLEAN019 = 1
  464.             INTEGER034 = INT002
  465.         Case "monthlyd"
  466.             STRING045 = ReadLine(STRING016, 2)
  467.             STRING046 = ReadLine(STRING016, 4)
  468.             DATE005 = DATE002
  469.             INTEGER033 = INTEGER024
  470.     End Select
  471.     FOpen 2, STRING042, 0, 0
  472.     FGet 2, STRING018
  473.     :LABEL010
  474.     If (Ferr(2)) Goto LABEL011
  475.     If (BOOLEAN019) Then
  476.         STRING018 = ReplaceStr(STRING018, "%PERCENT%", String(INTEGER034))
  477.     Endif
  478.     FPutLn 1, STRING018
  479.     FGet 2, STRING018
  480.     Goto LABEL010
  481.     :LABEL011
  482.     FClose 2
  483.     FOpen 2, STRING040, 0, 0
  484.     For INTEGER017 = 1 To INTEGER004
  485.         FGet 2, STRING019
  486.         FGet 2, STRING024
  487.         STRING020 = STRING024
  488.         FGet 2, STRING024
  489.         STRING021 = STRING024
  490.         FGet 2, STRING022
  491.         If (STRING019 == "NONE") Then
  492.             STRING019 = ""
  493.             STRING020 = ""
  494.             STRING021 = ""
  495.         Endif
  496.         STRING018 = STRING041
  497.         STRING018 = ReplaceStr(STRING018, "%NR%", String(INTEGER017))
  498.         STRING018 = ReplaceStr(STRING018, "%NAME%", Mixed(STRING019))
  499.         STRING018 = ReplaceStr(STRING018, "%FIRST%", FUNCTION002(STRING020))
  500.         STRING018 = ReplaceStr(STRING018, "%SECOND%", FUNCTION002(STRING021))
  501.         STRING018 = ReplaceStr(STRING018, "%LOC%", Mixed(STRING022))
  502.         FPutLn 1, STRING018
  503.     Next
  504.     FClose 2
  505.     FOpen 2, STRING043, 0, 0
  506.     FGet 2, STRING018
  507.     STRING045 = FUNCTION002(STRING045)
  508.     STRING046 = FUNCTION002(STRING046)
  509.     :LABEL012
  510.     If (Ferr(2)) Goto LABEL013
  511.     STRING018 = ReplaceStr(STRING018, "%SDATE%", String(Replace(DATE005, "-", "/")))
  512.     STRING018 = ReplaceStr(STRING018, "%EDATE%", String(Replace(DATE003, "-", "/")))
  513.     STRING018 = ReplaceStr(STRING018, "%TFIRST%", STRING045)
  514.     STRING018 = ReplaceStr(STRING018, "%TSECOND%", STRING046)
  515.     STRING018 = ReplaceStr(STRING018, "%DAY%", String(INTEGER033))
  516.     If (BOOLEAN019) Then
  517.         STRING018 = ReplaceStr(STRING018, "%PERCENT%", String(INTEGER034))
  518.     Endif
  519.     FPutLn 1, STRING018
  520.     FGet 2, STRING018
  521.     Goto LABEL012
  522.     :LABEL013
  523.     FClose 2
  524.     FClose 1
  525.  
  526.     EndProc
  527.  
  528.  
  529. ;------------------------------------------------------------------------------
  530.  
  531.     Procedure PROC005()
  532.  
  533.     If (BOOLEAN012 && BOOLEAN003) Then
  534.         PrintLn "@X07Writing weekly uploaders bulletin (bytes)"
  535.         PROC007(PPEPath() + "wbulblt", STRING003, ReadLine(STRING012, 4), PPEPath() + "graph\wbulhdr", PPEPath() + "graph\wbulftr", "weeklyu")
  536.     Endif
  537.     If (BOOLEAN013 && BOOLEAN005) Then
  538.         PrintLn "@X07Writing weekly downloaders bulletin (bytes)"
  539.         PROC007(PPEPath() + "wbdlblt", STRING004, ReadLine(STRING012, 6), PPEPath() + "graph\wbdlhdr", PPEPath() + "graph\wbdlftr", "weeklyd")
  540.     Endif
  541.     If (BOOLEAN014 && BOOLEAN004) Then
  542.         PrintLn "@X07Writing weekly uploaders bulletin (files)"
  543.         PROC007(PPEPath() + "wfulblt", STRING005, ReadLine(STRING012, 5), PPEPath() + "graph\wfulhdr", PPEPath() + "graph\wfulftr", "weeklyu")
  544.     Endif
  545.     If (BOOLEAN015 && BOOLEAN006) Then
  546.         PrintLn "@X07Writing weekly downloaders bulletin (files)"
  547.         PROC007(PPEPath() + "wfdlblt", STRING006, ReadLine(STRING012, 7), PPEPath() + "graph\wfdlhdr", PPEPath() + "graph\wfdlftr", "weeklyd")
  548.     Endif
  549.     If (BOOLEAN012 && BOOLEAN007) Then
  550.         PrintLn "@X07Writing monthly uploaders bulletin (bytes)"
  551.         PROC007(PPEPath() + "mbulblt", STRING007, ReadLine(STRING012, 8), PPEPath() + "graph\mbulhdr", PPEPath() + "graph\mbulftr", "monthlyu")
  552.     Endif
  553.     If (BOOLEAN013 && BOOLEAN009) Then
  554.         PrintLn "@X07Writing monthly downloaders bulletin (bytes)"
  555.         PROC007(PPEPath() + "mbdlblt", STRING009, ReadLine(STRING012, 10), PPEPath() + "graph\mbdlhdr", PPEPath() + "graph\mbdlftr", "monthlyd")
  556.     Endif
  557.     If (BOOLEAN014 && BOOLEAN008) Then
  558.         PrintLn "@X07Writing monthly uploaders bulletin (files)"
  559.         PROC007(PPEPath() + "mfulblt", STRING008, ReadLine(STRING012, 9), PPEPath() + "graph\mfulhdr", PPEPath() + "graph\mfulftr", "monthlyu")
  560.     Endif
  561.     If (BOOLEAN015 && BOOLEAN010) Then
  562.         PrintLn "@X07Writing monthly downloaders bulletin (bytes)"
  563.         PROC007(PPEPath() + "mfdlblt", STRING010, ReadLine(STRING012, 11), PPEPath() + "graph\mfdlhdr", PPEPath() + "graph\mfdlftr", "monthlyd")
  564.     Endif
  565.  
  566.     EndProc
  567.  
  568.  
  569. ;------------------------------------------------------------------------------
  570.  
  571.     Procedure PROC004()
  572.  
  573.     If (BOOLEAN012 && BOOLEAN003) PROC006(STRING003, INTEGER013, INTEGER015)
  574.     If (BOOLEAN013 && BOOLEAN005) PROC006(STRING004, INTEGER014, INTEGER016)
  575.     If (BOOLEAN012 && BOOLEAN007) PROC006(STRING007, INTEGER019, INTEGER021)
  576.     If (BOOLEAN013 && BOOLEAN009) PROC006(STRING009, INTEGER020, INTEGER022)
  577.     If (BOOLEAN014 && BOOLEAN004) PROC006(STRING005, INTEGER015, INTEGER013)
  578.     If (BOOLEAN015 && BOOLEAN006) PROC006(STRING006, INTEGER016, INTEGER014)
  579.     If (BOOLEAN014 && BOOLEAN008) PROC006(STRING008, INTEGER021, INTEGER019)
  580.     If (BOOLEAN015 && BOOLEAN010) PROC006(STRING010, INTEGER022, INTEGER020)
  581.  
  582.     EndProc
  583.  
  584.  
  585. ;------------------------------------------------------------------------------
  586.  
  587.     Function FUNCTION001(String STRING047) Boolean
  588.  
  589.     String   STRING048
  590.     String   STRING049
  591.  
  592.     FreshLine
  593.     If (BOOLEAN011) FUNCTION001 = 0
  594.     If (DSeek(0, STRING047)) Goto LABEL014
  595.     FUNCTION001 = 0
  596.     Return
  597.     :LABEL014
  598.     DGet 0, "name", STRING048
  599.     If (RTrim(STRING048, " ") == STRING047) Then
  600.         PrintLn "@X07User found"
  601.         FUNCTION001 = 1
  602.         Return
  603.     Endif
  604.     PrintLn "@X07User NOT found"
  605.     FUNCTION001 = 0
  606.     Return
  607.  
  608.     EndFunc
  609.  
  610.  
  611. ;------------------------------------------------------------------------------
  612.  
  613.     Procedure PROC001(String STRING049)
  614.  
  615.     PutUser
  616.     GetUser
  617.     INTEGER007 = ReadLine(STRING011, 2)
  618.     INTEGER005 = U_Bul() - INTEGER007
  619.     If (INTEGER005 > 0) BOOLEAN012 = 1
  620.     INTEGER007 = ReadLine(STRING011, 3)
  621.     INTEGER006 = 0
  622.     INTEGER006 = U_Bdl() - INTEGER007
  623.     If (INTEGER006 > 0) BOOLEAN013 = 1
  624.     INTEGER007 = ReadLine(STRING011, 4)
  625.     INTEGER011 = U_Ful() - INTEGER007
  626.     If (INTEGER011 > 0) BOOLEAN014 = 1
  627.     INTEGER007 = ReadLine(STRING011, 5)
  628.     INTEGER012 = U_Fdl() - INTEGER007
  629.     If (INTEGER012 > 0) BOOLEAN015 = 1
  630.     If (((BOOLEAN012 || BOOLEAN013) || BOOLEAN014) || BOOLEAN015) Then
  631.         PrintLn "@X07Adding NEW user to database"
  632.         DNew 0
  633.         DPut 0, "name", STRING049
  634.         DPut 0, "date", DATE003
  635.         DPut 0, "bupw", INTEGER005
  636.         DPut 0, "bdlw", INTEGER006
  637.         DPut 0, "fupw", INTEGER011
  638.         DPut 0, "fdlw", INTEGER012
  639.         DPut 0, "bupm", INTEGER005
  640.         DPut 0, "bdlm", INTEGER006
  641.         DPut 0, "fupm", INTEGER011
  642.         DPut 0, "fdlm", INTEGER012
  643.         DAdd 0
  644.         INTEGER013 = INTEGER005
  645.         INTEGER014 = INTEGER006
  646.         INTEGER015 = INTEGER011
  647.         INTEGER016 = INTEGER012
  648.         INTEGER019 = INTEGER005
  649.         INTEGER020 = INTEGER006
  650.         INTEGER021 = INTEGER011
  651.         INTEGER022 = INTEGER012
  652.         REAL001 = ToReal(INTEGER005) + ReadLine(STRING015, 1)
  653.         REAL002 = ToReal(INTEGER006) + ReadLine(STRING015, 2)
  654.         REAL003 = ToReal(INTEGER011) + ReadLine(STRING015, 3)
  655.         REAL004 = ToReal(INTEGER012) + ReadLine(STRING015, 4)
  656.         REAL005 = ToReal(INTEGER005) + ReadLine(STRING016, 1)
  657.         REAL006 = ToReal(INTEGER006) + ReadLine(STRING016, 2)
  658.         REAL007 = ToReal(INTEGER011) + ReadLine(STRING016, 3)
  659.         REAL008 = ToReal(INTEGER012) + ReadLine(STRING016, 4)
  660.         FClose -1
  661.         FCreate 1, STRING015, 2, 0
  662.         FPutLn 1, REAL001
  663.         FPutLn 1, REAL002
  664.         FPutLn 1, REAL003
  665.         FPutLn 1, REAL004
  666.         FClose 1
  667.         FCreate 1, STRING016, 2, 0
  668.         FPutLn 1, REAL005
  669.         FPutLn 1, REAL006
  670.         FPutLn 1, REAL007
  671.         FPutLn 1, REAL008
  672.         FClose 1
  673.     Endif
  674.  
  675.     EndProc
  676.  
  677.  
  678. ;------------------------------------------------------------------------------
  679.  
  680.     Procedure PROC003(String STRING050)
  681.  
  682.     Date     DATE006
  683.     Integer  INTEGER035
  684.     Integer  INTEGER036
  685.     Integer  INTEGER037
  686.  
  687.     PrintLn "@X07Updating user in database"
  688.     PutUser
  689.     GetUser
  690.     INTEGER007 = ReadLine(STRING011, 2)
  691.     INTEGER005 = U_Bul() - INTEGER007
  692.     If (INTEGER005 > 0) BOOLEAN012 = 1
  693.     INTEGER007 = ReadLine(STRING011, 3)
  694.     INTEGER006 = 0
  695.     INTEGER006 = U_Bdl() - INTEGER007
  696.     If (INTEGER006 > 0) BOOLEAN013 = 1
  697.     INTEGER007 = ReadLine(STRING011, 4)
  698.     INTEGER011 = U_Ful() - INTEGER007
  699.     If (INTEGER011 > 0) BOOLEAN014 = 1
  700.     INTEGER007 = ReadLine(STRING011, 5)
  701.     INTEGER012 = U_Fdl() - INTEGER007
  702.     If (INTEGER012 > 0) BOOLEAN015 = 1
  703.     If (((BOOLEAN012 || BOOLEAN013) || BOOLEAN014) || BOOLEAN015) Then
  704.         DGet 0, "date", DATE006
  705.         DGet 0, "date", STRING018
  706.         INTEGER035 = Left(STRING018, 4)
  707.         INTEGER036 = Mid(STRING018, 5, 2)
  708.         INTEGER037 = Mid(STRING018, 7, 2)
  709.         DATE006 = MkDate(INTEGER035, INTEGER036, INTEGER037)
  710.         If (DATE006 >= DATE001) Then
  711.             DGet 0, "bupw", INTEGER013
  712.             INTEGER013 = INTEGER013 + INTEGER005
  713.             DGet 0, "bdlw", INTEGER014
  714.             INTEGER014 = INTEGER014 + INTEGER006
  715.             DGet 0, "fupw", INTEGER015
  716.             INTEGER015 = INTEGER015 + INTEGER011
  717.             DGet 0, "fdlw", INTEGER016
  718.             INTEGER016 = INTEGER016 + INTEGER012
  719.             Goto LABEL015
  720.         Endif
  721.         INTEGER013 = INTEGER005
  722.         INTEGER014 = INTEGER006
  723.         INTEGER015 = INTEGER011
  724.         INTEGER016 = INTEGER012
  725.         :LABEL015
  726.         If (DATE006 >= DATE002) Then
  727.             DGet 0, "bupm", INTEGER019
  728.             INTEGER019 = INTEGER019 + INTEGER005
  729.             DGet 0, "bdlm", INTEGER020
  730.             INTEGER020 = INTEGER020 + INTEGER006
  731.             DGet 0, "fupm", INTEGER021
  732.             INTEGER021 = INTEGER021 + INTEGER011
  733.             DGet 0, "fdlm", INTEGER022
  734.             INTEGER022 = INTEGER022 + INTEGER012
  735.             Goto LABEL016
  736.         Endif
  737.         INTEGER019 = INTEGER005
  738.         INTEGER020 = INTEGER006
  739.         INTEGER021 = INTEGER011
  740.         INTEGER022 = INTEGER012
  741.         :LABEL016
  742.         DPut 0, "name", STRING050
  743.         DPut 0, "date", DATE003
  744.         DPut 0, "bupw", INTEGER013
  745.         DPut 0, "bdlw", INTEGER014
  746.         DPut 0, "fupw", INTEGER015
  747.         DPut 0, "fdlw", INTEGER016
  748.         DPut 0, "bupm", INTEGER019
  749.         DPut 0, "bdlm", INTEGER020
  750.         DPut 0, "fupm", INTEGER021
  751.         DPut 0, "fdlm", INTEGER022
  752.         REAL001 = ToReal(INTEGER005) + ReadLine(STRING015, 1)
  753.         REAL002 = ToReal(INTEGER006) + ReadLine(STRING015, 2)
  754.         REAL003 = ToReal(INTEGER011) + ReadLine(STRING015, 3)
  755.         REAL004 = ToReal(INTEGER012) + ReadLine(STRING015, 4)
  756.         REAL005 = ToReal(INTEGER005) + ReadLine(STRING016, 1)
  757.         REAL006 = ToReal(INTEGER006) + ReadLine(STRING016, 2)
  758.         REAL007 = ToReal(INTEGER011) + ReadLine(STRING016, 3)
  759.         REAL008 = ToReal(INTEGER012) + ReadLine(STRING016, 4)
  760.         FClose -1
  761.         FCreate 1, STRING015, 2, 0
  762.         FPutLn 1, REAL001
  763.         FPutLn 1, REAL002
  764.         FPutLn 1, REAL003
  765.         FPutLn 1, REAL004
  766.         FClose 1
  767.         FCreate 1, STRING016, 2, 0
  768.         FPutLn 1, REAL005
  769.         FPutLn 1, REAL006
  770.         FPutLn 1, REAL007
  771.         FPutLn 1, REAL008
  772.         FClose 1
  773.     Endif
  774.  
  775.     EndProc
  776.  
  777.  
  778. ;------------------------------------------------------------------------------
  779.  
  780.     Procedure PROC002(Var Date DATE007, Var Date DATE008)
  781.  
  782.     Integer  INTEGER038
  783.     Integer  INTEGER039
  784.     Integer  INTEGER040
  785.  
  786.     INTEGER038 = INTEGER008
  787.     INTEGER040 = Dow(DATE003)
  788.     If (INTEGER040 >= INTEGER038) INTEGER039 = INTEGER040 - INTEGER038
  789.     If (INTEGER040 < INTEGER038) Then
  790.         INTEGER039 = 6 - INTEGER038
  791.         INTEGER039 = INTEGER039 + INTEGER040
  792.     Endif
  793.     DATE007 = ToInteger(DATE003) - INTEGER039
  794.     INTEGER023 = INTEGER039 + 1
  795.     If (DATE004 < DATE007) Then
  796.         If (Exist(PPEPath() + "weekbul.dat")) Then
  797.             If (BOOLEAN016) Then
  798.                 Goto LABEL019
  799.             Endif
  800.         Endif
  801.         :LABEL017
  802.         If (BOOLEAN001 && Exist(PPEPath() + "wbulblt")) Then
  803.             FReAltUser
  804.             Message INTEGER002, "ALL", Upper("SYSOP"), "Top Monthly UPLOADER", "N", 0, 0, 0, PPEPath() + "wbulblt"
  805.         Endif
  806.         PrintLn "@X07Deleting week top data"
  807.         FClose -1
  808.         Delete PPEPath() + "weekbul.dat"
  809.         Delete PPEPath() + "weekbdl.dat"
  810.         Delete PPEPath() + "weekful.dat"
  811.         Delete PPEPath() + "weekfdl.dat"
  812.         Delete STRING015
  813.     Endif
  814.     INTEGER038 = INTEGER009
  815.     INTEGER040 = Day(DATE003)
  816.     If (INTEGER040 >= INTEGER038) INTEGER039 = INTEGER040 - INTEGER038
  817.     If (INTEGER040 < INTEGER038) Then
  818.         INTEGER039 = 31 - INTEGER038
  819.         INTEGER039 = INTEGER039 + INTEGER040
  820.     Endif
  821.     DATE008 = ToInteger(DATE003) - INTEGER039
  822.     INTEGER024 = INTEGER039 + 1
  823.     If (DATE004 < DATE008) Then
  824.         If (Exist(PPEPath() + "monthbul.dat")) Then
  825.             If (BOOLEAN017) Then
  826.                 Goto LABEL023
  827.             Endif
  828.         Endif
  829.         :LABEL018
  830.         If (BOOLEAN002 && Exist(PPEPath() + "mbulblt")) Then
  831.             FReAltUser
  832.             Message INTEGER003, "ALL", Upper("SYSOP"), "Top Monthly UPLOADER", "N", 0, 0, 0, PPEPath() + "mbulblt"
  833.         Endif
  834.         PrintLn "@X07Deleting month top data"
  835.         Delete PPEPath() + "monthbul.dat"
  836.         Delete PPEPath() + "monthbdl.dat"
  837.         Delete PPEPath() + "monthful.dat"
  838.         Delete PPEPath() + "monthfdl.dat"
  839.         Delete STRING016
  840.     Endif
  841.     Return
  842.     :LABEL019
  843.     FOpen 1, PPEPath() + "weekbul.dat", 0, 0
  844.     FGet 1, STRING001
  845.     FGet 1, STRING024
  846.     INTEGER001 = STRING024
  847.     FClose 1
  848.     REAL009 = ToInteger((ToReal(INT001) / 100) * ToReal(INTEGER001))
  849.     FOpen 1, PPEPath() + "weekmsg", 0, 0
  850.     FOpen 2, PPEPath() + "mtmp" + String(PcbNode()), 1, 0
  851.     FGet 1, STRING018
  852.     :LABEL020
  853.     If (Ferr(1)) Goto LABEL021
  854.     STRING018 = ReplaceStr(STRING018, "@PERCENT@", String(INT001))
  855.     STRING018 = ReplaceStr(STRING018, "@TBYTES@", String(INTEGER001))
  856.     STRING018 = ReplaceStr(STRING018, "@ABYTES@", String(REAL009))
  857.     FPutLn 2, STRING018
  858.     FGet 1, STRING018
  859.     Goto LABEL020
  860.     :LABEL021
  861.     FClose 1
  862.     FClose 2
  863.     FReAltUser
  864.     Message INTEGER002, Upper(STRING001), Upper("SYSOP"), "Top Weekly UPLOADER", "N", 0, 0, 0, PPEPath() + "mtmp" + String(PcbNode())
  865.     Delete PPEPath() + "mtmp" + String(PcbNode())
  866.     INTEGER007 = U_RecNum(Upper(STRING001))
  867.     If (INTEGER007 == -1) Then
  868.         PrintLn "ERROR, cannot find user: ", STRING001, " Please inform your sysop!"
  869.     Else
  870.         GetAltUser INTEGER007
  871.         INTEGER010 = U_Bul()
  872.         PROC008(REAL009)
  873.         GetAltUser INTEGER007
  874.         If (U_Bul() == INTEGER010) Then
  875.             PrintLn "BYTES NOT CHANGED!!! USER STILL ONLINE??"
  876.             Goto LABEL022
  877.         Endif
  878.         :LABEL022
  879.         GetUser
  880.     Endif
  881.     Goto LABEL017
  882.     :LABEL023
  883.     FOpen 1, PPEPath() + "monthbul.dat", 0, 0
  884.     FGet 1, STRING001
  885.     FGet 1, STRING024
  886.     INTEGER001 = STRING024
  887.     FClose 1
  888.     REAL009 = ToInteger((ToReal(INT002) / 100) * ToReal(INTEGER001))
  889.     FOpen 1, PPEPath() + "monthmsg", 0, 0
  890.     FOpen 2, PPEPath() + "mtmp" + String(PcbNode()), 1, 0
  891.     FGet 1, STRING018
  892.     :LABEL024
  893.     If (Ferr(1)) Goto LABEL025
  894.     STRING018 = ReplaceStr(STRING018, "@PERCENT@", String(INT002))
  895.     STRING018 = ReplaceStr(STRING018, "@TBYTES@", String(INTEGER001))
  896.     STRING018 = ReplaceStr(STRING018, "@ABYTES@", String(REAL009))
  897.     FPutLn 2, STRING018
  898.     FGet 1, STRING018
  899.     Goto LABEL024
  900.     :LABEL025
  901.     FClose 1
  902.     FClose 2
  903.     FReAltUser
  904.     Message INTEGER003, Upper(STRING001), Upper("SYSOP"), "Top Monthly UPLOADER", "N", 0, 0, 0, PPEPath() + "mtmp" + String(PcbNode())
  905.     Delete PPEPath() + "mtmp" + String(PcbNode())
  906.     INTEGER007 = U_RecNum(Upper(STRING001))
  907.     If (INTEGER007 == -1) Then
  908.         PrintLn "ERROR, cannot find user: ", STRING001, " Please inform your sysop!"
  909.     Else
  910.         GetAltUser INTEGER007
  911.         INTEGER010 = U_Bul()
  912.         PROC008(REAL009)
  913.         GetAltUser INTEGER007
  914.         If (U_Bul() == INTEGER010) Then
  915.             PrintLn "BYTES NOT CHANGED!!! USER STILL ONLINE??"
  916.         Else
  917.             PrintLn "@X07Old uploaded bytes : ", String(INTEGER010)
  918.             PrintLn "@X07New uploaded bytes : ", String(U_Bul())
  919.         Endif
  920.         GetUser
  921.     Endif
  922.     Goto LABEL018
  923.  
  924.     EndProc
  925.  
  926.  
  927. ;------------------------------------------------------------------------------
  928.  
  929.     Procedure PROC008(Integer INTEGER041)
  930.  
  931.     STRING025 = U_Bul() + INTEGER041
  932.     STRING029 = U_Bul() + INTEGER041
  933.     If (STRING029 <> "") Goto LABEL026
  934.     PrintLn "No input"
  935.     End
  936.     :LABEL026
  937.     DOUBLE001 = STRING029
  938.     If (DOUBLE001 < -999999999) DOUBLE001 = -999999999
  939.     If (DOUBLE001 > DOUBLE001) DOUBLE001 = DOUBLE001
  940.     STRING025 = DOUBLE001
  941.     STRING026 = "0"
  942.     If (DOUBLE001 < 0) Then
  943.         STRING026 = "1"
  944.         DOUBLE001 = -DOUBLE001
  945.     Endif
  946.     STRING027 = I2S(DOUBLE001, 2)
  947.     INTEGER025 = Len(STRING027) - 1 + 129
  948.     TBIGSTR001(8) = Chr(INTEGER025)
  949.     STRING027 = Left(Right(STRING027, Len(STRING027) - 1) + "00000000000000000000000000000000000000000000000000000000000000000", 55)
  950.     TSTRING028(7) = STRING026 + Left(STRING027, 7)
  951.     STRING027 = Right(STRING027, Len(STRING027) - 7)
  952.     For INTEGER026 = -6 To -1
  953.         TSTRING028(-INTEGER026) = Left(STRING027, 8)
  954.         STRING027 = Right(STRING027, Len(STRING027) - 8)
  955.     Next
  956.     For INTEGER026 = 1 To 7
  957.         TBIGSTR001(INTEGER026) = Chr(S2I(TSTRING028(INTEGER026), 2))
  958.     Next
  959.     FOpen 4, STRING023, 2, 0
  960.     FSeek 4, (U_RecNum(U_Name()) - 1) * 400 + 216, 0
  961.     For INTEGER026 = 1 To 8
  962.         FWrite 4, TBIGSTR001(INTEGER026), 1
  963.     Next
  964.     FClose 4
  965.  
  966.     EndProc
  967.  
  968.  
  969. ;------------------------------------------------------------------------------
  970. ;
  971. ; Usage report (before postprocessing)
  972. ;
  973. ; ■ Statements used :
  974. ;
  975. ;    6       End
  976. ;    120     Goto 
  977. ;    277     Let 
  978. ;    26      PrintLn 
  979. ;    108     If 
  980. ;    9       FCreate 
  981. ;    12      FOpen 
  982. ;    30      FClose 
  983. ;    20      FGet 
  984. ;    35      FPutLn 
  985. ;    4       GetUser
  986. ;    2       PutUser
  987. ;    15      Delete 
  988. ;    2       Gosub 
  989. ;    7       Return
  990. ;    1       Dec 
  991. ;    3       Tokenize 
  992. ;    3       FreshLine
  993. ;    4       Message 
  994. ;    1       FSeek 
  995. ;    1       FRead 
  996. ;    1       FWrite 
  997. ;    4       GetAltUser 
  998. ;    4       FReAltUser
  999. ;    8       EndProc
  1000. ;    2       EndFunc
  1001. ;    1       DCreate 
  1002. ;    1       DOpen 
  1003. ;    1       DnCreate 
  1004. ;    1       DnOpen 
  1005. ;    1       DNew 
  1006. ;    1       DAdd 
  1007. ;    2       DTag 
  1008. ;    11      DGet 
  1009. ;    20      DPut 
  1010. ;
  1011. ;
  1012. ; ■ Functions used :
  1013. ;
  1014. ;    24      -
  1015. ;    5       *
  1016. ;    3       /
  1017. ;    1       %
  1018. ;    137     +
  1019. ;    33      -
  1020. ;    26      ==
  1021. ;    3       <>
  1022. ;    17      <
  1023. ;    12      <=
  1024. ;    12      >
  1025. ;    26      >=
  1026. ;    83      !
  1027. ;    40      &&
  1028. ;    17      ||
  1029. ;    7       Len(
  1030. ;    11      Upper()
  1031. ;    4       Mid()
  1032. ;    5       Left()
  1033. ;    3       Right()
  1034. ;    5       Ferr()
  1035. ;    2       Chr()
  1036. ;    1       InStr()
  1037. ;    1       RTrim()
  1038. ;    1       Date()
  1039. ;    11      U_Name()
  1040. ;    2       U_Ful()
  1041. ;    2       U_Fdl()
  1042. ;    2       U_Bdl()
  1043. ;    9       U_Bul()
  1044. ;    1       Day()
  1045. ;    1       Dow()
  1046. ;    2       Replace()
  1047. ;    27      String()
  1048. ;    1       PCBDat()
  1049. ;    67      PPEPath()
  1050. ;    7       PcbNode()
  1051. ;    47      ReadLine()
  1052. ;    19      GetToken()
  1053. ;    9       Exist()
  1054. ;    1       I2S()
  1055. ;    1       S2I()
  1056. ;    1       MkDate()
  1057. ;    3       U_RecNum()
  1058. ;    18      ReplaceStr()
  1059. ;    4       ToInteger()
  1060. ;    20      ToReal()
  1061. ;    2       Mixed()
  1062. ;    1       DSeek()
  1063. ;
  1064. ;------------------------------------------------------------------------------
  1065. ;
  1066. ; Analysis flags : WRd
  1067. ;
  1068. ; W - Write user ■ 5
  1069. ;     Program writes a user record. Although this may be normal for a
  1070. ;     User Editor, it may also be a way to modify an account level.
  1071. ;     ■ Search for : PUTUSER
  1072. ;
  1073. ; R - Read user ■ 5
  1074. ;     User records are read, this may signify that someone wants to get
  1075. ;     various informations about a user (for example his password), but
  1076. ;     this may also be normal for a program accessing user records (for
  1077. ;     example a User Editor)
  1078. ;     ■ Search for : GETALTUSER
  1079. ;
  1080. ; d - Access PCBOARD.DAT ■ 2
  1081. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  1082. ;     for many PPE so they can find various informations on the system
  1083. ;     (system paths, max number of lines in messages, ...) but it may also
  1084. ;     be a way to gather vital informations.
  1085. ;     ■ Search for : PCBDAT()
  1086. ;
  1087. ;------------------------------------------------------------------------------
  1088. ;
  1089. ; Postprocessing report
  1090. ;
  1091. ;    11      For/Next
  1092. ;    0       While/EndWhile
  1093. ;    56      If/Then or If/Then/Else
  1094. ;    1       Select Case
  1095. ;
  1096. ;------------------------------------------------------------------------------
  1097. ;                 AEGiS Corp - Break the routines, code against the machines!
  1098. ;------------------------------------------------------------------------------
  1099.