home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Pier Shareware 6
/
The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso
/
005
/
pobtop01.zip
/
POBTOP.PPE
(
.txt
)
< prev
Wrap
PCBoard Programming Language Executable
|
1994-09-15
|
17KB
|
882 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
DWord DWORD001
DWord DWORD002
DWord TDWORD003(50)
DWord DWORD004
DWord TDWORD005(50)
DWord TDWORD006(50)
DWord TDWORD007(50)
DWord TDWORD008(100)
DWord TDWORD009(100)
DWord TDWORD010(100)
DWord TDWORD011(50)
DWord TDWORD012(50)
DWord TDWORD013(50)
DWord TDWORD014(50)
DWord TDWORD015(50)
DWord TDWORD016(50)
DWord TDWORD017(50)
DWord TDWORD018(50)
DWord TDWORD019(1)
DWord TDWORD020(1)
DWord TDWORD021(1)
DWord TDWORD022(1)
DWord TDWORD023(1)
DWord TDWORD024(1)
DWord TDWORD025(1)
Date DATE001
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
Int INT001
Int INT002
Int INT003
Int INT004
BigStr BIGSTR001
Double DOUBLE001
Double DOUBLE002
Double DOUBLE003
Double DOUBLE004
Double DOUBLE005
Double DOUBLE006
Double DOUBLE007
;------------------------------------------------------------------------------
DOUBLE002 = DOUBLE002 / DOUBLE002
STRING007 = PPEPath() + "graph\updat"
STRING002 = PPEPath() + "pobtop.cfg"
STRING005 = PPEPath() + "pobtop.exc"
STRING018 = ReadLine(STRING002, 13)
STRING001 = "@X08BULLETIN created via POBTOP.PPE v0.01 - POB(@X0Ac@X08)1994 - German PCBoard Distributor"
DispStr STRING018
If (OnLocal()) Goto LABEL001
CdChkOff
DtrOff
Delay 9
DtrOn
:LABEL001
FreshLine
PrintLn ""
PrintLn ""
PrintLn " @X08┌─────────────────────────────────@X0FPOBTop [PPE3] v0.01ß @X08POB(@X0Ac@X08)1994─┐"
PrintLn "@X08 │ This PPE3 is only for PCBoard 15.2, compiled with PPLC 3.01 │"
PrintLn " │ This PPE3 is *FREEWARE* from the GERMAN PCBoard Distributor │"
PrintLn "@X08 │ Call our <*-POB-SUPPORT-BBS-*> in Germany to order PCboard │"
PrintLn " │ FIDONODE-ADDR. 2:2480/5678 (ZYXEL19200) * 2:2480/567 (ISDN) │"
PrintLn "@X08 │ 10 Lines 14400 - 64000 cps (Modem & ISDN) │"
PrintLn " │ Ringdown 14400 - 28800 V34 USR +49-(0)8807-91881 │"
PrintLn " │ ISDN ELSA CAPI 64000 X75 +49-(0)8807-93337 │"
PrintLn " │ ISDN Blaster 64000 X75/V110 +49-(0)8807-93338 │"
PrintLn " └─────────────────────────────────────────────────────────────────┘"
PrintLn ""
INTEGER001 = ReadLine(STRING002, 1)
STRING017 = ReadLine(STRING002, 12)
BOOLEAN002 = 1
BOOLEAN003 = 1
BOOLEAN004 = 1
BOOLEAN005 = 1
BOOLEAN006 = 1
INT002 = 1
If (TokCount() <> 0) Then
While (1) Do
STRING003 = GetToken()
If (STRING003 == "") Break
If (Left(STRING003, 1) == "/") Then
STRING003 = Mid(STRING003, 2, Len(STRING003) - 1)
If (STRING003 == "NOBUL") Then
BOOLEAN002 = 0
Goto LABEL002
Endif
If (STRING003 == "NOFUL") Then
BOOLEAN003 = 0
Goto LABEL002
Endif
If (STRING003 == "NOBDL") Then
BOOLEAN004 = 0
Goto LABEL002
Endif
If (STRING003 == "NOFDL") Then
BOOLEAN005 = 0
Goto LABEL002
Endif
If (STRING003 == "NOCALLS") Then
BOOLEAN006 = 0
Goto LABEL002
Endif
Goto LABEL023
:LABEL002
Continue
Endif
For INTEGER002 = 1 To Len(STRING003)
STRING004 = Mid(STRING003, INTEGER002, 1)
If ((STRING004 < "0") || (STRING004 > "9")) Goto LABEL023
Next
INT002 = ToInteger(STRING003)
EndWhile
Endif
STRING008 = PPEPath() + "lastrun"
If (Exist(STRING008)) Then
DATE001 = ToDate(ReadLine(STRING008, 1))
FClose -1
If (ToInteger(DATE001) + INT002 <= ToInteger(Date())) Then
FCreate 1, STRING008, 1, 0
FPutLn 1, Date()
FClose 1
Else
End
Endif
Else
FCreate 1, STRING008, 1, 3
FPutLn 1, Date()
FClose 1
Endif
If (INTEGER001 > 50) Then
PrintLn "Sorry, but you can enter a maximum of 50 top top down/uploaders"
End
Endif
INTEGER008 = 100
Redim TDWORD019, INTEGER008
Redim TDWORD022, INTEGER008
Redim TDWORD020, INTEGER008
Redim TDWORD021, INTEGER008
Redim TDWORD023, INTEGER008
Redim TDWORD024, INTEGER008
Redim TDWORD025, INTEGER008
BOOLEAN001 = 1
DWORD001 = INTEGER001
FreshLine
FreshLine
Print "@X08POB @X07Reading User exclusion file"
FOpen 1, STRING005, 0, 0
FRead 1, BIGSTR001, 2048
If (Ferr(1)) Goto LABEL003
FreshLine
Print "@X0DExclusion string exhausted, no additions possible"
:LABEL003
FClose 1
FreshLine
Print "@X08POB @X07sorting Users "
INTEGER006 = GetX()
INTEGER007 = GetY()
BOOLEAN007 = 1
INTEGER009 = 0
DWORD004 = 1
While (1) Do
For INTEGER003 = 1 To INTEGER008
:LABEL004
GetAltUser DWORD004
If (CurUser() == -1) Then
For INTEGER002 = INTEGER003 To INTEGER008
TDWORD019(INTEGER002) = 0
TDWORD022(INTEGER002) = 0
TDWORD023(INTEGER002) = 0
TDWORD024(INTEGER002) = 0
TDWORD025(INTEGER002) = 0
TDWORD020(INTEGER002) = 0
Next
Break
Endif
If (InStr(BIGSTR001, """" + Upper(U_Name()) + """")) Then
Inc DWORD004
Goto LABEL004
Endif
TDWORD019(INTEGER003) = U_Bul()
DOUBLE003 = DOUBLE003 + TDWORD019(INTEGER003)
TDWORD022(INTEGER003) = U_Ful()
DOUBLE004 = DOUBLE004 + TDWORD022(INTEGER003)
TDWORD023(INTEGER003) = U_Logons()
DOUBLE007 = DOUBLE007 + TDWORD023(INTEGER003)
TDWORD020(INTEGER003) = DWORD004
TDWORD024(INTEGER003) = U_Bdl()
DOUBLE005 = DOUBLE005 + TDWORD024(INTEGER003)
TDWORD025(INTEGER003) = U_Fdl()
DOUBLE006 = DOUBLE006 + TDWORD025(INTEGER003)
AnsiPos INTEGER006, INTEGER007
Print "@X08POB [@X0F", String(DWORD004), "@X08]"
Inc DWORD004
Next
If (BOOLEAN002) Then
Gosub LABEL005
AnsiPos INTEGER006, INTEGER007
Print "[@X07MERGING No: 1@X08]"
If (!BOOLEAN007) Gosub LABEL012
Endif
If (BOOLEAN003) Then
Gosub LABEL009
AnsiPos INTEGER006, INTEGER007
Print "@X08[@X07MERGING No: 2@X08]"
If (!BOOLEAN007) Gosub LABEL013
Endif
If (BOOLEAN006) Then
Gosub LABEL010
AnsiPos INTEGER006, INTEGER007
Print "@X08[@X07MERGING No: 3@X08]"
If (!BOOLEAN007) Gosub LABEL014
Endif
If (BOOLEAN004) Then
Gosub LABEL006
AnsiPos INTEGER006, INTEGER007
Print "@X08[@X07MERGING No: 4@X08]"
If (!BOOLEAN007) Gosub LABEL011
Endif
If (BOOLEAN005) Then
Gosub LABEL007
AnsiPos INTEGER006, INTEGER007
Print "@X08[@X07MERGING No: 5@X08]"
If (!BOOLEAN007) Gosub LABEL008
Endif
BOOLEAN007 = 0
AnsiPos INTEGER006, INTEGER007
Print " "
If (CurUser() == -1) Break
EndWhile
StartDisp 2
FreshLine
PrintLn "@X08POB @X07Create Bulletins"
INTEGER006 = GetX()
INTEGER007 = GetY()
If (BOOLEAN002) Then
PrintLn "@X08POB [@X07Top Uploaders @X09BYTES@X08] "
Gosub LABEL015
Endif
If (BOOLEAN003) Then
PrintLn "@X08POB [@X07Top Uploaders @X09FILES@X08] "
Gosub LABEL016
Endif
If (BOOLEAN004) Then
PrintLn "@X08POB [@X07Top Downloaders @X09BYTES@X08]"
Gosub LABEL017
Endif
If (BOOLEAN005) Then
PrintLn "@X08POB [@X07Top Downloaders @X09FILES@X08]"
Gosub LABEL018
Endif
If (BOOLEAN006) Then
PrintLn "@X08POB [@X07Top Callers@X08]"
Gosub LABEL019
Endif
PrintLn "@X08POB [@X07Ready!@X08]"
PrintLn "─────────────────────────────────────────────────────────────POB(@X0Ac@X08)1994──────"
Log "Bulletins created with POBTOP.PPE - POB(c)1994", 0
Delay 9
End
:LABEL005
Sort TDWORD019, TDWORD021
INTEGER005 = 1
For INTEGER004 = INTEGER008 To INTEGER008 - DWORD001 + 1 Step -1
If (BOOLEAN007) Then
TDWORD006(INTEGER005) = TDWORD019(TDWORD021(INTEGER004))
TDWORD007(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
Else
TDWORD003(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
TDWORD005(INTEGER005) = TDWORD019(TDWORD021(INTEGER004))
Endif
Inc INTEGER005
Next
Return
:LABEL006
Sort TDWORD024, TDWORD021
INTEGER005 = 1
For INTEGER004 = INTEGER008 To INTEGER008 - DWORD001 + 1 Step -1
If (BOOLEAN007) Then
TDWORD015(INTEGER005) = TDWORD024(TDWORD021(INTEGER004))
TDWORD016(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
Else
TDWORD003(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
TDWORD005(INTEGER005) = TDWORD024(TDWORD021(INTEGER004))
Endif
Inc INTEGER005
Next
Return
:LABEL007
Sort TDWORD025, TDWORD021
INTEGER005 = 1
For INTEGER004 = INTEGER008 To INTEGER008 - DWORD001 + 1 Step -1
If (BOOLEAN007) Then
TDWORD017(INTEGER005) = TDWORD025(TDWORD021(INTEGER004))
TDWORD018(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
Else
TDWORD003(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
TDWORD005(INTEGER005) = TDWORD025(TDWORD021(INTEGER004))
Endif
Inc INTEGER005
Next
Return
:LABEL008
For INTEGER004 = 1 To INTEGER001
TDWORD008(INTEGER004) = TDWORD005(INTEGER004)
TDWORD009(INTEGER004) = TDWORD003(INTEGER004)
Next
For INTEGER004 = INTEGER001 + 1 To INTEGER001 + INTEGER001
TDWORD008(INTEGER004) = TDWORD017(INTEGER004 - INTEGER001)
TDWORD009(INTEGER004) = TDWORD018(INTEGER004 - INTEGER001)
Next
Sort TDWORD008, TDWORD010
INTEGER005 = 1
For INTEGER004 = 100 To 100 - DWORD001 + 1 Step -1
TDWORD017(INTEGER005) = TDWORD008(TDWORD010(INTEGER004))
TDWORD018(INTEGER005) = TDWORD009(TDWORD010(INTEGER004))
Inc INTEGER005
Next
Return
:LABEL009
Sort TDWORD022, TDWORD021
INTEGER005 = 1
For INTEGER004 = INTEGER008 To INTEGER008 - DWORD001 + 1 Step -1
If (BOOLEAN007) Then
TDWORD011(INTEGER005) = TDWORD022(TDWORD021(INTEGER004))
TDWORD012(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
Else
TDWORD003(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
TDWORD005(INTEGER005) = TDWORD022(TDWORD021(INTEGER004))
Endif
Inc INTEGER005
Next
Return
:LABEL010
Sort TDWORD023, TDWORD021
INTEGER005 = 1
For INTEGER004 = INTEGER008 To INTEGER008 - DWORD001 + 1 Step -1
If (BOOLEAN007) Then
TDWORD013(INTEGER005) = TDWORD023(TDWORD021(INTEGER004))
TDWORD014(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
Else
TDWORD003(INTEGER005) = TDWORD020(TDWORD021(INTEGER004))
TDWORD005(INTEGER005) = TDWORD023(TDWORD021(INTEGER004))
Endif
Inc INTEGER005
Next
Return
:LABEL011
For INTEGER004 = 1 To INTEGER001
TDWORD008(INTEGER004) = TDWORD005(INTEGER004)
TDWORD009(INTEGER004) = TDWORD003(INTEGER004)
Next
For INTEGER004 = INTEGER001 + 1 To INTEGER001 + INTEGER001
TDWORD008(INTEGER004) = TDWORD015(INTEGER004 - INTEGER001)
TDWORD009(INTEGER004) = TDWORD016(INTEGER004 - INTEGER001)
Next
Sort TDWORD008, TDWORD010
INTEGER005 = 1
For INTEGER004 = 100 To 100 - DWORD001 + 1 Step -1
TDWORD015(INTEGER005) = TDWORD008(TDWORD010(INTEGER004))
TDWORD016(INTEGER005) = TDWORD009(TDWORD010(INTEGER004))
Inc INTEGER005
Next
Return
:LABEL012
For INTEGER004 = 1 To INTEGER001
TDWORD008(INTEGER004) = TDWORD005(INTEGER004)
TDWORD009(INTEGER004) = TDWORD003(INTEGER004)
Next
For INTEGER004 = INTEGER001 + 1 To INTEGER001 + INTEGER001
TDWORD008(INTEGER004) = TDWORD006(INTEGER004 - INTEGER001)
TDWORD009(INTEGER004) = TDWORD007(INTEGER004 - INTEGER001)
Next
Sort TDWORD008, TDWORD010
INTEGER005 = 1
For INTEGER004 = 100 To 100 - DWORD001 + 1 Step -1
TDWORD006(INTEGER005) = TDWORD008(TDWORD010(INTEGER004))
TDWORD007(INTEGER005) = TDWORD009(TDWORD010(INTEGER004))
Inc INTEGER005
Next
Return
:LABEL013
For INTEGER004 = 1 To INTEGER001
TDWORD008(INTEGER004) = TDWORD005(INTEGER004)
TDWORD009(INTEGER004) = TDWORD003(INTEGER004)
Next
For INTEGER004 = INTEGER001 + 1 To INTEGER001 + INTEGER001
TDWORD008(INTEGER004) = TDWORD011(INTEGER004 - INTEGER001)
TDWORD009(INTEGER004) = TDWORD012(INTEGER004 - INTEGER001)
Next
Sort TDWORD008, TDWORD010
INTEGER005 = 1
For INTEGER004 = 100 To 100 - DWORD001 + 1 Step -1
TDWORD011(INTEGER005) = TDWORD008(TDWORD010(INTEGER004))
TDWORD012(INTEGER005) = TDWORD009(TDWORD010(INTEGER004))
Inc INTEGER005
Next
Return
:LABEL014
For INTEGER004 = 1 To INTEGER001
TDWORD008(INTEGER004) = TDWORD005(INTEGER004)
TDWORD009(INTEGER004) = TDWORD003(INTEGER004)
Next
For INTEGER004 = INTEGER001 + 1 To INTEGER001 + INTEGER001
TDWORD008(INTEGER004) = TDWORD013(INTEGER004 - INTEGER001)
TDWORD009(INTEGER004) = TDWORD014(INTEGER004 - INTEGER001)
Next
Sort TDWORD008, TDWORD010
INTEGER005 = 1
For INTEGER004 = 100 To 100 - DWORD001 + 1 Step -1
TDWORD013(INTEGER005) = TDWORD008(TDWORD010(INTEGER004))
TDWORD014(INTEGER005) = TDWORD009(TDWORD010(INTEGER004))
Inc INTEGER005
Next
Return
:LABEL015
Tokenize ReadLine(STRING002, 2)
STRING012 = GetToken()
DOUBLE002 = GetToken()
STRING013 = ""
For INTEGER002 = 1 To ToInteger(DOUBLE002)
STRING013 = STRING013 + STRING012
Next
DOUBLE002 = DOUBLE002 / DOUBLE002
FOpen 1, PPEPath() + "graph\bupTOP", 2, 0
FCreate 2, PPEPath() + "BYTEUP", 1, 2
While (1) Do
FGet 1, STRING009
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
STRING009 = ReadLine(STRING002, 3)
For INTEGER004 = 1 To INTEGER001
STRING010 = STRING009
If (TDWORD006(INTEGER004) == 0) Break
GetAltUser TDWORD007(INTEGER004)
Gosub LABEL020
DOUBLE001 = ToDouble((ToDWord(U_Bul()) / ToDouble(DOUBLE003)) * STRING017)
STRING010 = ReplaceStr(STRING010, "%PERCENT%", FmtReal(DOUBLE001, 5, 2))
DWORD002 = DOUBLE001 * DOUBLE002 + DOUBLE001 * DOUBLE002
STRING011 = Left(STRING013, DWORD002) + STRING012
STRING010 = ReplaceStr(STRING010, "%RATING%", STRING011)
FPutLn 2, STRING010
Next
FOpen 1, PPEPath() + "graph\bupbot", 2, 0
While (1) Do
FGet 1, STRING009
If (InStr(STRING009, "T%")) Then
Gosub LABEL024
Endif
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
FPutLn 2, STRING001
FClose 2
Return
:LABEL016
Tokenize ReadLine(STRING002, 4)
STRING012 = GetToken()
DOUBLE002 = GetToken()
STRING013 = ""
For INTEGER002 = 1 To ToInteger(DOUBLE002)
STRING013 = STRING013 + STRING012
Next
DOUBLE002 = DOUBLE002 / DOUBLE002
FOpen 1, PPEPath() + "graph\fupTOP", 2, 0
FCreate 2, PPEPath() + "FILEUP", 1, 2
While (1) Do
FGet 1, STRING009
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
STRING009 = ReadLine(STRING002, 5)
For INTEGER004 = 1 To INTEGER001
STRING010 = STRING009
If (TDWORD011(INTEGER004) == 0) Break
GetAltUser TDWORD012(INTEGER004)
Gosub LABEL020
DOUBLE001 = ToDouble((ToDWord(U_Ful()) / ToDouble(DOUBLE004)) * STRING017)
STRING010 = ReplaceStr(STRING010, "%PERCENT%", FmtReal(DOUBLE001, 5, 2))
DWORD002 = ToInteger(DOUBLE001 * DOUBLE002 + DOUBLE001 * DOUBLE002)
STRING011 = Left(STRING013, DWORD002) + STRING012
STRING010 = ReplaceStr(STRING010, "%RATING%", STRING011)
FPutLn 2, STRING010
Next
FOpen 1, PPEPath() + "graph\fupbot", 2, 0
While (1) Do
FGet 1, STRING009
If (InStr(STRING009, "T%")) Then
Gosub LABEL024
Endif
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
FPutLn 2, STRING001
FClose 2
Return
:LABEL017
Tokenize ReadLine(STRING002, 6)
STRING012 = GetToken()
DOUBLE002 = GetToken()
STRING013 = ""
For INTEGER002 = 1 To ToInteger(DOUBLE002)
STRING013 = STRING013 + STRING012
Next
DOUBLE002 = DOUBLE002 / DOUBLE002
FOpen 1, PPEPath() + "graph\bdlTOP", 2, 0
FCreate 2, PPEPath() + "BYTEDOWN", 1, 2
While (1) Do
FGet 1, STRING009
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
STRING009 = ReadLine(STRING002, 7)
For INTEGER004 = 1 To INTEGER001
STRING010 = STRING009
If (TDWORD015(INTEGER004) == 0) Break
GetAltUser TDWORD016(INTEGER004)
Gosub LABEL020
DOUBLE001 = ToDouble((ToDWord(U_Bdl()) / ToDouble(DOUBLE005)) * STRING017)
STRING010 = ReplaceStr(STRING010, "%PERCENT%", FmtReal(DOUBLE001, 5, 2))
DWORD002 = ToInteger(DOUBLE001 * DOUBLE002 + DOUBLE001 * DOUBLE002)
STRING011 = Left(STRING013, DWORD002) + STRING012
STRING010 = ReplaceStr(STRING010, "%RATING%", STRING011)
FPutLn 2, STRING010
Next
FOpen 1, PPEPath() + "graph\bdlbot", 2, 0
While (1) Do
FGet 1, STRING009
If (InStr(STRING009, "T%")) Then
Gosub LABEL024
Endif
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
FPutLn 2, STRING001
FClose 2
Return
:LABEL018
Tokenize ReadLine(STRING002, 8)
STRING012 = GetToken()
DOUBLE002 = GetToken()
STRING013 = ""
For INTEGER002 = 1 To ToInteger(DOUBLE002)
STRING013 = STRING013 + STRING012
Next
DOUBLE002 = DOUBLE002 / DOUBLE002
FOpen 1, PPEPath() + "graph\fdlTOP", 2, 0
FCreate 2, PPEPath() + "FILEDOWN", 1, 2
While (1) Do
FGet 1, STRING009
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
STRING009 = ReadLine(STRING002, 9)
For INTEGER004 = 1 To INTEGER001
STRING010 = STRING009
If (TDWORD017(INTEGER004) == 0) Break
GetAltUser TDWORD018(INTEGER004)
Gosub LABEL020
DOUBLE001 = ToDouble((ToDWord(U_Fdl()) / ToDouble(DOUBLE006)) * STRING017)
STRING010 = ReplaceStr(STRING010, "%PERCENT%", FmtReal(DOUBLE001, 5, 2))
DWORD002 = ToInteger(DOUBLE001 * DOUBLE002 + DOUBLE001 * DOUBLE002)
STRING011 = Left(STRING013, DWORD002) + STRING012
STRING010 = ReplaceStr(STRING010, "%RATING%", STRING011)
FPutLn 2, STRING010
Next
FOpen 1, PPEPath() + "graph\fdlbot", 2, 0
While (1) Do
FGet 1, STRING009
If (InStr(STRING009, "T%")) Then
Gosub LABEL024
Endif
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
FPutLn 2, STRING001
FClose 2
Return
:LABEL019
Tokenize ReadLine(STRING002, 10)
STRING012 = GetToken()
DOUBLE002 = GetToken()
STRING013 = ""
For INTEGER002 = 1 To ToInteger(DOUBLE002)
STRING013 = STRING013 + STRING012
Next
DOUBLE002 = DOUBLE002 / DOUBLE002
FOpen 1, PPEPath() + "graph\calTOP", 2, 0
FCreate 2, PPEPath() + "CALLERS", 1, 2
While (1) Do
FGet 1, STRING009
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
STRING009 = ReadLine(STRING002, 11)
For INTEGER004 = 1 To INTEGER001
STRING010 = STRING009
If (TDWORD013(INTEGER004) == 0) Break
GetAltUser TDWORD014(INTEGER004)
Gosub LABEL020
DOUBLE001 = ToDouble((ToDWord(U_Logons()) / ToDouble(DOUBLE007)) * STRING017)
STRING010 = ReplaceStr(STRING010, "%PERCENT%", FmtReal(DOUBLE001, 5, 2))
DWORD002 = ToInteger(DOUBLE001 * DOUBLE002 + DOUBLE001 * DOUBLE002)
STRING011 = Left(STRING013, DWORD002) + STRING012
STRING010 = ReplaceStr(STRING010, "%RATING%", STRING011)
FPutLn 2, STRING010
Next
FOpen 1, PPEPath() + "graph\calbot", 2, 0
While (1) Do
FGet 1, STRING009
If (InStr(STRING009, "T%")) Then
Gosub LABEL024
Endif
If (Ferr(1)) Break
FPutLn 2, STRING009
EndWhile
FClose 1
FPutLn 2, STRING001
FClose 2
Return
:LABEL020
INT001 = InStr(STRING010, "%NR")
If (INT001) Then
STRING015 = "%NR"
STRING016 = String(INTEGER004)
Gosub LABEL021
Endif
INT001 = InStr(STRING010, "%NAME")
If (INT001) Then
STRING015 = "%NAME"
STRING016 = Mixed(U_Name())
Gosub LABEL021
Endif
INT001 = InStr(STRING010, "%CALLS")
If (INT001) Then
STRING015 = "%CALLS"
STRING016 = ToDWord(U_Logons())
Gosub LABEL021
Endif
INT001 = InStr(STRING010, "%BUL")
If (INT001) Then
STRING015 = "%BUL"
STRING016 = ToDWord(U_Bul()) / ToDWord(1024)
Gosub LABEL021
Endif
INT001 = InStr(STRING010, "%FUL")
If (INT001) Then
STRING015 = "%FUL"
STRING016 = ToDWord(U_Ful())
Gosub LABEL021
Endif
INT001 = InStr(STRING010, "%BDL")
If (INT001) Then
STRING015 = "%BDL"
STRING016 = ToDWord(U_Bdl()) / ToDWord(1024)
Gosub LABEL021
Endif
INT001 = InStr(STRING010, "%FDL")
If (INT001) Then
STRING015 = "%FDL"
STRING016 = ToDWord(U_Fdl())
Gosub LABEL021
Endif
Return
:LABEL021
INT004 = Len(STRING015)
STRING014 = Mid(STRING010, INT001 + INT004, 1)
Select Case (STRING014)
Case "%"
STRING010 = ReplaceStr(STRING010, STRING015 + "%", STRING016)
Case ":"
INT003 = INT004 + 1
STRING006 = ""
STRING014 = Mid(STRING010, INT001 + INT003, 1)
While ((STRING014 >= "0") && (STRING014 <= "9")) Do
STRING006 = STRING006 + STRING014
Inc INT003
STRING014 = Mid(STRING010, INT001 + INT003, 1)
EndWhile
If (STRING014 == "R") Then
STRING010 = ReplaceStr(STRING010, STRING015 + ":" + String(STRING006) + "R%", Right(STRING016, STRING006))
Goto LABEL022
Endif
Case "%"
STRING010 = ReplaceStr(STRING010, STRING015 + ":" + String(STRING006) + "%", Left(STRING016, STRING006))
End Select
:LABEL022
Return
:LABEL023
PrintLn "Incorrect command parameter (" + STRING003 + ") given, usage is:"
PrintLn " TOP [NR] [/NOBUL] [/NOFUL] [/NOBDL] [/NOFDL] [/NOCALLS]"
PrintLn " NR : Days in between each bulletin(s) generation (default = 1)"
PrintLn " NOBUL : Do not generate top bytes uploaded bulletin"
PrintLn " NOFUL : Do not generate top files uploaded bulletin"
PrintLn " NOBDL : Do not generate top bytes downloaded bulletin"
PrintLn " NOFDL : Do not generate top files downloaded bulletin"
PrintLn " NOCALLS: Do not generate top callers bulletin"
Wait
End
:LABEL024
STRING009 = ReplaceStr(STRING009, "%BULT%", FmtReal(DOUBLE003 / ToDouble(1024), 0, 0))
STRING009 = ReplaceStr(STRING009, "%FULT%", FmtReal(DOUBLE004, 0, 0))
STRING009 = ReplaceStr(STRING009, "%BDLT%", FmtReal(DOUBLE005 / ToDouble(1024), 0, 0))
STRING009 = ReplaceStr(STRING009, "%FDLT%", FmtReal(DOUBLE006, 0, 0))
STRING009 = ReplaceStr(STRING009, "%CALLST%", FmtReal(DOUBLE007, 0, 0))
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 4 End
; 1 Wait
; 173 Goto
; 275 Let
; 10 Print
; 30 PrintLn
; 114 If
; 7 FCreate
; 11 FOpen
; 19 FClose
; 10 FGet
; 22 FPutLn
; 1 StartDisp
; 1 Log
; 32 Gosub
; 18 Return
; 1 DtrOn
; 1 DtrOff
; 1 CdChkOff
; 2 Delay
; 13 Inc
; 5 Tokenize
; 1 DispStr
; 7 AnsiPos
; 6 FreshLine
; 1 FRead
; 7 Redim
; 6 GetAltUser
; 10 Sort
;
;
; ■ Functions used :
;
; 33 -
; 15 *
; 15 /
; 124 +
; 31 -
; 18 ==
; 1 <>
; 34 <
; 35 <=
; 2 >
; 67 >=
; 96 !
; 67 &&
; 34 ||
; 4 Len(
; 1 Upper()
; 5 Mid()
; 7 Left()
; 1 Right()
; 11 Ferr()
; 13 InStr()
; 3 Date()
; 2 U_Name()
; 3 U_Logons()
; 3 U_Ful()
; 3 U_Fdl()
; 3 U_Bdl()
; 3 U_Bul()
; 4 String()
; 19 PPEPath()
; 14 ReadLine()
; 1 OnLocal()
; 11 GetToken()
; 1 Exist()
; 2 GetX()
; 2 GetY()
; 1 TokCount()
; 18 ReplaceStr()
; 1 ToDate()
; 12 ToDouble()
; 17 ToInteger()
; 12 ToDWord()
; 1 Mixed()
; 2 CurUser()
; 10 FmtReal()
;
;------------------------------------------------------------------------------
;
; Analysis flags : RB
;
; R - Read user ■ 5
; User records are read, this may signify that someone wants to get
; various informations about a user (for example his password), but
; this may also be normal for a program accessing user records (for
; example a User Editor)
; ■ Search for : GETALTUSER
;
; B - Brute hangup ■ 1
; Program hangup without notification. This may be a good way to
; disconnect a user, but if used randomly, may be very nasty
; ■ Search for : HANGUP, DTROFF
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 33 For/Next
; 13 While/EndWhile
; 40 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------