home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.wwiv.com
/
ftp.wwiv.com.zip
/
ftp.wwiv.com
/
pub
/
BBS
/
MAVO15ZA.ZIP
/
MAVOTE.PPE
(
.txt
)
< prev
Wrap
PCBoard Programming Language Executable
|
1995-01-08
|
12KB
|
568 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 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Real REAL001
String STRING002
String TSTRING003(15)
String STRING004
String STRING005
String STRING006
String STRING007
;------------------------------------------------------------------------------
If (Psa(6) == 0) Then
PrintLn "Enable your Notes PSA in the PCB Setup!"
End
Endif
GetUser
For INTEGER011 = 0 To 4
If (Left(U_Notes(INTEGER011), 2) == "MV") Then
INTEGER016 = INTEGER011
Goto LABEL001
Endif
Next
INTEGER010 = 0
For INTEGER011 = 0 To 4
If (U_Notes(INTEGER011) == 0) Then
INTEGER010 = INTEGER011
Endif
Next
If (INTEGER010 == 0) Then
PrintLn "@X0CYour account does not have any Notes PSA available!!"
Else
U_Notes(INTEGER010) = "MV00000000000000000000000000000000000000000"
INTEGER016 = INTEGER010
:LABEL001
FOpen 1, PPEPath() + "mavote.cfg", 0, 0
FGet 1, INTEGER005
FGet 1, INTEGER006
FGet 1, INTEGER007
FClose 1
If (Exist(PPEPath() + "mavote.bin") == 0) Then
PrintLn PPEPath() + "MAVOTE.BIN not found! Creating new MAVOTE.BIN......"
FOpen 1, PPEPath() + "mavote.bin", 2, 0
STRING007 = ""
INTEGER013 = 0
For INTEGER011 = 1 To 20
FWrite 1, STRING007, 60
For INTEGER012 = 1 To 10
FWrite 1, STRING007, 40
FWrite 1, INTEGER013, 5
Next
Next
FClose 1
Endif
If (Exist(PPEPath() + "mavote.dat") == 1) Then
PrintLn PPEPath() + "MAVOTE.DAT found! Converting......."
FOpen 1, PPEPath() + "mavote.bin", 2, 0
FOpen 2, PPEPath() + "mavote.dat", 0, 0
FGet 2, INTEGER015
If (INTEGER015 <> 0) Then
For INTEGER002 = 1 To INTEGER015
FGet 2, STRING007
FWrite 1, STRING007, 60
For INTEGER003 = 1 To 15
FGet 2, STRING007
FGet 2, INTEGER013
If (INTEGER003 < 11) Then
FWrite 1, STRING007, 40
FWrite 1, INTEGER013, 5
Endif
Next
Next
Endif
FClose 2
FClose 1
Rename PPEPath() + "MAVOTE.DAT", PPEPath() + "MAVOTE.OLD"
PrintLn PPEPath() + "MAVOTE.DAT renamed to " + PPEPath() + "MAVOTE.OLD."
Endif
FOpen 1, PPEPath() + "mavote.bin", 2, 0
STRING005 = "MV"
For INTEGER011 = 1 To 20
FSeek 1, 510 * INTEGER011 - 510, 0
FRead 1, STRING007, 60
If (STRING007 == "") Then
STRING005 = STRING005 + "00"
Endif
If (STRING007 <> "") Then
STRING005 = STRING005 + Mid(U_Notes(INTEGER016), 1 + INTEGER011 * 2, 2)
Endif
Next
U_Notes(INTEGER016) = STRING005
:LABEL002
INTEGER001 = 0
Print "@CLS@"
PrintLn " @X0AMoon Angel Vote PPE @X0Ev1.4Z @X0Awritten by @X0BRyan Yu @X0Afor @X0BMoon Angel Productions"
PrintLn
INTEGER012 = 0
For INTEGER011 = 1 To 20
FSeek 1, 510 * INTEGER011 - 510, 0
FRead 1, STRING007, 60
If (STRING007 <> "") Then
If (ToInt(Mid(U_Notes(INTEGER016), 1 + INTEGER011 * 2, 2)) <> 0) Then
PrintLn " @X02VQ @X09#" + String(INTEGER011) + ":@X03" + STRING007
Endif
If (ToInt(Mid(U_Notes(INTEGER016), 1 + INTEGER011 * 2, 2)) == 0) Then
PrintLn " @X0C* @X0AVQ @X0E#" + String(INTEGER011) + ":@X0B" + STRING007
INTEGER012 = 1
Endif
Endif
Next
PrintLn
If (INTEGER012 == 1) Then
PrintLn " @X0C* @X0A- You have not voted on that question!"
Endif
INTEGER012 = 0
If (U_Sec > INTEGER005) Then
Print " @X09[@X0BA@X09]dd a new voting question "
INTEGER012 = 1
Endif
If (U_Sec > INTEGER006) Then
Print " @X09[@X0BR@X09]emove a voting question "
If (INTEGER012 == 1) Then
PrintLn
Endif
INTEGER012 = 1
Endif
If (U_Sec > INTEGER007) Then
Print " @X09[@X0BE@X09]dit a voting question "
If (INTEGER012 == 1) Then
PrintLn
Endif
INTEGER012 = 1
Endif
Print " @X09[@X0B#@X09]Vote/See results for question #"
If (INTEGER012 == 1) Then
PrintLn
Endif
PrintLn
PrintLn " @X03Or press [@X0AENTER@X03] to return to the BBS"
PrintLn
STRING002 = ""
InputText "@X09[@X0BTime Left:@X0E@TIMELEFT@ @X0BMin.@X09] @X0AVote Command", STRING002, 11, 2
STRING002 = Lower(STRING002)
If (STRING002 == "") Then
Goto LABEL015
Else
Select Case (Left(STRING002, 1))
Case "a"
If (U_Sec > INTEGER005) Then
Goto LABEL004
Endif
Case "r"
If (U_Sec > INTEGER006) Then
Goto LABEL009
Endif
Case "e"
Case INTEGER007
Goto LABEL003
Endif
End Select
INTEGER014 = ToInt(STRING002)
Goto LABEL010
Gosub LABEL016
Goto LABEL002
:LABEL003
PrintLn
InputText " Which voting question would you like to edit?", INTEGER014, 11, 2
PrintLn
If ((INTEGER014 > 20) || (INTEGER014 < 1)) Then
Gosub LABEL016
Goto LABEL002
Endif
INTEGER004 = INTEGER014
FSeek 1, 510 * INTEGER004 - 510, 0
FRead 1, STRING004, 60
For INTEGER011 = 1 To 10
FRead 1, TSTRING003(INTEGER011), 40
FRead 1, INTEGER013, 5
Next
INTEGER001 = 1
Goto LABEL005
:LABEL004
PrintLn
INTEGER010 = 0
For INTEGER011 = 1 To 20
FSeek 1, 510 * INTEGER011 - 510, 0
FRead 1, STRING007, 60
If (STRING007 == "") Then
If (INTEGER010 == 0) Then
INTEGER010 = INTEGER011
Endif
If (INTEGER010 > INTEGER011) Then
INTEGER010 = INTEGER011
Endif
Endif
Next
If (INTEGER010 > 0) Then
INTEGER004 = INTEGER010
INTEGER001 = 0
Else
PrintLn "@X0CMA Vote has reached its limit of 20 voting questions!@X07"
Goto LABEL002
Endif
:LABEL005
PrintLn "@X0BEnter your question at the prompt below, you are limited to @X0960 characters@X0B."
If (INTEGER001 == 0) Then
STRING004 = ""
Endif
InputText "Question", STRING004, 11, 60
If (STRING004 == "") Then
Goto LABEL002
Endif
PrintLn
PrintLn "@X0ANow enter the possible answers for this question."
PrintLn "@X0AEach possible answer may be up to @X0B40 characters @X0Ain length"
PrintLn "@X0Aand you may have up to @X0B10 possible answers@X0A."
PrintLn "@X0APress [@X0FENTER@X0A] alone to finish entering possible answers."
If (INTEGER001 == 0) Then
For INTEGER011 = 1 To 10
TSTRING003(INTEGER011) = ""
Next
Endif
INTEGER011 = 1
:LABEL006
PrintLn
PrintLn "@X0AEntering data for Possible Answer @X0E#" + String(INTEGER011)
InputText "Answer #" + String(INTEGER011), TSTRING003(INTEGER011), 11, 25
If (TSTRING003(INTEGER011) == "") Then
Goto LABEL007
Endif
If (Len(TSTRING003(INTEGER011)) > 40) Then
PrintLn
PrintLn "Maximum answer length is 40 characters!"
PrintLn
Goto LABEL006
Endif
INTEGER011 = INTEGER011 + 1
Goto LABEL006
:LABEL007
PrintLn "@X0AQuestion is:"
PrintLn "@X0B" + STRING004
PrintLn "@X0AAnswers are:"
For INTEGER011 = 1 To 10
If (TSTRING003(INTEGER011) <> "") Then
PrintLn "@X0B#" + String(INTEGER011) + ":@X0E" + TSTRING003(INTEGER011)
Endif
Next
STRING002 = "Y"
InputYN "Keep this question", STRING002, 11
If (STRING002 == "Y") Then
Goto LABEL008
Endif
Goto LABEL002
:LABEL008
FSeek 1, 510 * INTEGER004 - 510, 0
FWrite 1, STRING004, 60
INTEGER013 = 0
For INTEGER011 = 1 To 10
FWrite 1, TSTRING003(INTEGER011), 40
If (INTEGER001 == 0) Then
FWrite 1, INTEGER013, 5
Endif
If (INTEGER001 == 1) Then
FRead 1, INTEGER013, 5
Endif
Next
Goto LABEL002
:LABEL009
PrintLn
InputText "Remove which voting question", INTEGER013, 11, 2
If ((INTEGER013 > 20) || (INTEGER013 < 1)) Then
Gosub LABEL016
Goto LABEL002
Endif
FSeek 1, 510 * INTEGER013 - 510, 0
FRead 1, STRING007, 60
If (STRING007 == "") Then
Gosub LABEL016
Goto LABEL002
Endif
PrintLn
PrintLn "@X0ADeleting the following question:"
PrintLn "@X0E" + STRING007
PrintLn
STRING002 = "y"
InputYN "Are you sure", STRING002, 11
STRING002 = Lower(STRING002)
If (STRING002 == "y") Then
STRING007 = ""
FSeek 1, 510 * INTEGER013 - 510, 0
FWrite 1, STRING007, 60
Goto LABEL002
Endif
Goto LABEL002
Goto LABEL015
:LABEL010
If ((INTEGER014 > 20) || (INTEGER014 < 1)) Then
Gosub LABEL016
Goto LABEL002
Endif
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING007, 60
If (STRING007 == "") Then
Gosub LABEL016
Goto LABEL002
Endif
INTEGER017 = Mid(U_Notes(INTEGER016), 1 + INTEGER014 * 2, 2)
INTEGER017 = ToInt(INTEGER017)
If (INTEGER017 <> 0) Then
Goto LABEL014
Endif
INTEGER008 = 0
:LABEL011
PrintLn "@CLS@"
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING004, 60
PrintLn STRING004
PrintLn
PrintLn "@X0APossible Votes:"
For INTEGER011 = 1 To 10
FRead 1, STRING007, 40
FRead 1, INTEGER013, 5
If (STRING007 <> "") Then
PrintLn "@X0B#" + String(INTEGER011) + " : @X0A" + STRING007
Endif
Next
PrintLn
INTEGER012 = 0
InputText "What is your vote", INTEGER012, 11, 2
If (INTEGER012 == 0) Then
Goto LABEL002
Endif
PrintLn
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING007, 60
If (STRING007 == "") Then
Gosub LABEL016
Goto LABEL002
Endif
If (INTEGER008 > 0) Then
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING007, 60
For INTEGER011 = 1 To INTEGER008
FRead 1, STRING007, 40
FRead 1, INTEGER013, 5
Next
INTEGER013 = INTEGER013 - 1
FSeek 1, -45, 1
FWrite 1, STRING007, 40
FWrite 1, INTEGER013, 5
Endif
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING007, 60
For INTEGER011 = 1 To INTEGER012
FRead 1, STRING007, 40
FRead 1, INTEGER013, 5
Next
FSeek 1, -45, 1
INTEGER013 = INTEGER013 + 1
FWrite 1, STRING007, 40
FWrite 1, INTEGER013, 5
STRING007 = String(INTEGER012)
If (INTEGER012 <= 9) Then
STRING007 = "0" + STRING007
Endif
STRING005 = "MV"
If (INTEGER014 == 1) Then
Goto LABEL012
Endif
For INTEGER011 = 1 To INTEGER014 - 1
STRING006 = Mid(U_Notes(INTEGER016), 1 + INTEGER011 * 2, 2)
STRING005 = STRING005 + STRING006
Next
:LABEL012
STRING005 = STRING005 + STRING007
If (INTEGER014 == 20) Then
Goto LABEL013
Endif
For INTEGER011 = INTEGER014 + 1 To 20
STRING006 = Mid(U_Notes(INTEGER016), 1 + INTEGER011 * 2, 2)
STRING005 = STRING005 + STRING006
Next
:LABEL013
U_Notes(INTEGER016) = STRING005
:LABEL014
PrintLn "@CLS@"
PrintLn "@X0AVotes status for voting question:"
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING007, 60
PrintLn "@X0E" + STRING007
PrintLn
INTEGER009 = 0
For INTEGER011 = 1 To 10
FRead 1, STRING007, 40
FRead 1, INTEGER013, 5
INTEGER009 = INTEGER009 + INTEGER013
Next
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING007, 60
For INTEGER011 = 1 To 10
FRead 1, STRING007, 40
FRead 1, INTEGER013, 5
If (STRING007 == "") Then
Break
Endif
REAL001 = (ToReal(INTEGER013) / ToReal(INTEGER009)) * 100
INTEGER002 = REAL001
If (INTEGER011 >= 10) Then
Print "@X0A#" + String(INTEGER011) + " : "
Endif
If (INTEGER011 < 10) Then
Print "@X0A#" + String(INTEGER011) + " : "
Endif
Print " @X0B" + STRING007
INTEGER003 = 40
If (INTEGER002 < 10) Then
INTEGER003 = 41
Endif
If (INTEGER002 > 99) Then
INTEGER003 = 39
Endif
Forward INTEGER003 - Len(String(STRING007))
PrintLn "@X0E%", INTEGER002, " @X0A/ @X0B" + String(INTEGER013) + "@X0A votes."
Next
STRING007 = Mid(U_Notes(INTEGER016), 1 + INTEGER014 * 2, 2)
INTEGER012 = ToInt(STRING007)
PrintLn
FSeek 1, 510 * INTEGER014 - 510, 0
FRead 1, STRING007, 60
For INTEGER011 = 1 To INTEGER012
FRead 1, STRING007, 40
FRead 1, INTEGER013, 5
Next
PrintLn "@X09Your vote was for @X0B#" + String(INTEGER012) + " : @X0A" + STRING007
PrintLn
STRING002 = ""
InputText "@X0A[@X0EC@X0A]hange your vote or @X0D[@X0FENTER@X0D] @X0Ato return to main menu", STRING002, 11, 1
STRING002 = Upper(STRING002)
If (STRING002 == "C") Then
INTEGER008 = INTEGER012
Goto LABEL011
Endif
Goto LABEL002
Endif
:LABEL015
FClose 1
FClose 2
PutUser
End
:LABEL016
PrintLn
PrintLn
PrintLn "@X0CSorry, but that option does not exist!@X07"
PrintLn
PrintLn "@MORE@"
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 2 End
; 139 Goto
; 106 Let
; 8 Print
; 61 PrintLn
; 81 If
; 5 FOpen
; 6 FClose
; 7 FGet
; 1 GetUser
; 1 PutUser
; 2 InputYN
; 7 Gosub
; 1 Return
; 7 InputText
; 1 Forward
; 1 Rename
; 17 FSeek
; 28 FRead
; 14 FWrite
;
;
; ■ Functions used :
;
; 2 -
; 23 *
; 1 /
; 79 +
; 19 -
; 34 ==
; 7 <>
; 27 <
; 22 <=
; 14 >
; 43 >=
; 81 !
; 42 &&
; 24 ||
; 2 Len(
; 2 Lower()
; 1 Upper()
; 7 Mid()
; 4 Left()
; 12 String()
; 13 PPEPath()
; 2 Exist()
; 1 Psa()
; 2 ToReal()
; 5 ToInt()
;
;------------------------------------------------------------------------------
;
; Analysis flags : W
;
; W - Write user ■ 5
; Program writes a user record. Although this may be normal for a
; User Editor, it may also be a way to modify an account level.
; ■ Search for : PUTUSER
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 21 For/Next
; 0 While/EndWhile
; 56 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------