home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Beijing Paradise BBS Backup
/
PARADISE.ISO
/
software
/
BBSDOORW
/
NEWS100.ZIP
/
NEWS.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1993-08-18
|
4KB
|
256 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 1.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
String STRING001
String STRING002
String TSTRING003(17)
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
;------------------------------------------------------------------------------
If (CurSec() >= SysopSec()) Then
Gosub LABEL006
If ((STRING006 == STRING004) && (CurSec() < 110)) Then
KbdStuff "NEWS" + Chr(13)
ElseIf (STRING004 <> "") Then
If (TokCount() > 0) Then
STRING002 = Upper(GetToken())
If ((STRING002 <> "D") && (STRING002 <> "U")) Then
KbdStuff TokenStr()
STRING002 = ""
Endif
Goto LABEL001
Endif
STRING002 = ""
:LABEL001
If (STRING002 == "") Then
STRING001 = "(@TIMELEFT@ min left), (U)pdate, (D)isplay (Enter=D)"
InputStr STRING001, STRING002, 14, 1, "DdUu", 128 + 64
STRING002 = Upper(STRING002)
Endif
If ((STRING002 == "D") || (STRING002 == "")) Then
KbdStuff "NEWS" + Chr(13)
Goto LABEL002
Endif
If (STRING002 == "U") Then
Gosub LABEL003
Endif
Endif
:LABEL002
Else
KbdStuff "NEWS" + Chr(13)
Endif
End
:LABEL003
RdUNet PcbNode()
STRING008 = UN_Oper()
WrUNet PcbNode(), UN_Stat(), UN_Name(), UN_City(), "Editing Conference News", ""
PrintLn
PrintLn "@X0CNews files can be up to 18 lines of 72 characters each."
PrintLn "Enter /Q to finish entering news."
PrintLn
INTEGER002 = 0
INTEGER001 = 18
Gosub LABEL005
STRING002 = "L"
STRING001 = "(@TIMELEFT@ min left), (A)bort, (C)ontinue, (L)ist, (S)ave, (Enter=S)"
While (STRING002 == "L") Do
InputStr STRING001, STRING002, 14, 1, "AaCcLlSs", 128 + 64
STRING002 = Upper(STRING002)
If ((STRING002 == "S") || (STRING002 == "")) Then
Delete STRING004
FCreate 1, STRING004, 1, 3
FPutLn 1, "@X00@X0B▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄@X0F"
FPut 1, "@X03█@X3E"
STRING005 = ReadLine(STRING007, 1 + CurConf() * 33)
If (CurConf() == 0) Then
STRING005 = STRING005 + " News"
Goto LABEL004
Endif
STRING005 = STRING005 + " Conference News"
:LABEL004
STRING009 = (70 - Len(STRING005)) / 2
STRING010 = (70 - Len(STRING005)) % 2
FPut 1, Space(STRING009), STRING005, Space(STRING009), Space(STRING010)
FPutLn 1, "@X03█@X0F"
FPutLn 1, "@X01▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀@XFF"
Dec INTEGER001
For INTEGER003 = 0 To INTEGER001
FPutLn 1, TSTRING003(INTEGER003)
Next
FPutLn 1, TSTRING003(INTEGER001 + 1), "@X", Right("00" + String(DefColor()), 2)
FClose 1
PrintLn STRING005, " updated."
Continue
Endif
If (STRING002 == "C") Then
INTEGER002 = INTEGER001
INTEGER001 = 18
Gosub LABEL005
STRING002 = "L"
Continue
Endif
If (STRING002 == "D") Then
TSTRING003(INTEGER002) = ""
Continue
Endif
If (STRING002 == "L") Then
INTEGER002 = ""
For INTEGER003 = 0 To INTEGER001
PrintLn Right(" " + String(INTEGER003 + 1), 2), ": ", TSTRING003(INTEGER003)
Next
PrintLn
Endif
EndWhile
WrUNet PcbNode(), UN_Stat(), UN_Name(), UN_City(), STRING008, ""
Return
:LABEL005
While (INTEGER002 < 18) Do
InputStr Left("Ln #" + String(INTEGER002 + 1) + " ", 6), TSTRING003(INTEGER002), 14, 72, Mask_Ascii(), 512 + 64
If (Upper(TSTRING003(INTEGER002)) == "/Q") Then
TSTRING003(INTEGER002) = ""
INTEGER001 = INTEGER002 - 1
INTEGER002 = 18
Continue
Endif
If (Upper(TSTRING003(INTEGER002)) == "/D") Then
TSTRING003(INTEGER002) = ""
If (INTEGER002 > 0) Then
Dec INTEGER002
TSTRING003(INTEGER002) = ""
Endif
Continue
Endif
Inc INTEGER002
EndWhile
Return
:LABEL006
STRING007 = ReadLine(PCBDat(), 31)
STRING006 = ReadLine(STRING007, 13)
INTEGER003 = CurConf()
If (INTEGER003 > 0) Then
STRING004 = ReadLine(STRING007, 13 + INTEGER003 * 33)
Else
STRING004 = STRING006
Endif
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 1 End
; 36 Goto
; 35 Let
; 7 PrintLn
; 21 If
; 1 FCreate
; 1 FClose
; 2 FPut
; 5 FPutLn
; 1 Delete
; 3 InputStr
; 4 Gosub
; 3 Return
; 1 Inc
; 2 Dec
; 4 KbdStuff
; 1 RdUNet
; 2 WrUNet
;
;
; ■ Functions used :
;
; 2 *
; 1 /
; 1 %
; 19 +
; 3 -
; 14 ==
; 3 <>
; 4 <
; 2 <=
; 3 >
; 5 >=
; 21 !
; 6 &&
; 4 ||
; 2 Len(
; 5 Upper()
; 1 Left()
; 2 Right()
; 3 Space()
; 3 Chr()
; 3 String()
; 1 Mask_Ascii()
; 3 CurConf()
; 1 PCBDat()
; 3 PcbNode()
; 4 ReadLine()
; 1 SysopSec()
; 2 UN_Stat()
; 2 UN_Name()
; 2 UN_City()
; 1 UN_Oper()
; 2 CurSec()
; 1 GetToken()
; 1 TokenStr()
; 1 DefColor()
; 1 TokCount()
;
;------------------------------------------------------------------------------
;
; Analysis flags : ds
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
; s - Sysop level access ■ 5
; Program is reading the sysop access level, this may be normal
; but still it is very suspect. It is the best way to give a user
; all priviledges. Check!
; ■ Search for : SYSOPSEC()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 2 For/Next
; 2 While/EndWhile
; 17 If/Then or If/Then/Else
; 0 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------