home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / NEWS100.ZIP / NEWS.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1993-08-18  |  4KB  |  256 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 1.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Integer  INTEGER001
  20.     Integer  INTEGER002
  21.     Integer  INTEGER003
  22.     String   STRING001
  23.     String   STRING002
  24.     String   TSTRING003(17)
  25.     String   STRING004
  26.     String   STRING005
  27.     String   STRING006
  28.     String   STRING007
  29.     String   STRING008
  30.     String   STRING009
  31.     String   STRING010
  32.  
  33. ;------------------------------------------------------------------------------
  34.  
  35.     If (CurSec() >= SysopSec()) Then
  36.         Gosub LABEL006
  37.         If ((STRING006 == STRING004) && (CurSec() < 110)) Then
  38.             KbdStuff "NEWS" + Chr(13)
  39.         ElseIf (STRING004 <> "") Then
  40.             If (TokCount() > 0) Then
  41.                 STRING002 = Upper(GetToken())
  42.                 If ((STRING002 <> "D") && (STRING002 <> "U")) Then
  43.                     KbdStuff TokenStr()
  44.                     STRING002 = ""
  45.                 Endif
  46.                 Goto LABEL001
  47.             Endif
  48.             STRING002 = ""
  49.             :LABEL001
  50.             If (STRING002 == "") Then
  51.                 STRING001 = "(@TIMELEFT@ min left), (U)pdate, (D)isplay (Enter=D)"
  52.                 InputStr STRING001, STRING002, 14, 1, "DdUu", 128 + 64
  53.                 STRING002 = Upper(STRING002)
  54.             Endif
  55.             If ((STRING002 == "D") || (STRING002 == "")) Then
  56.                 KbdStuff "NEWS" + Chr(13)
  57.                 Goto LABEL002
  58.             Endif
  59.             If (STRING002 == "U") Then
  60.                 Gosub LABEL003
  61.             Endif
  62.         Endif
  63.         :LABEL002
  64.     Else
  65.         KbdStuff "NEWS" + Chr(13)
  66.     Endif
  67.     End
  68.     :LABEL003
  69.     RdUNet PcbNode()
  70.     STRING008 = UN_Oper()
  71.     WrUNet PcbNode(), UN_Stat(), UN_Name(), UN_City(), "Editing Conference News", ""
  72.     PrintLn 
  73.     PrintLn "@X0CNews files can be up to 18 lines of 72 characters each."
  74.     PrintLn "Enter /Q to finish entering news."
  75.     PrintLn 
  76.     INTEGER002 = 0
  77.     INTEGER001 = 18
  78.     Gosub LABEL005
  79.     STRING002 = "L"
  80.     STRING001 = "(@TIMELEFT@ min left), (A)bort, (C)ontinue, (L)ist, (S)ave, (Enter=S)"
  81.     While (STRING002 == "L") Do
  82.         InputStr STRING001, STRING002, 14, 1, "AaCcLlSs", 128 + 64
  83.         STRING002 = Upper(STRING002)
  84.         If ((STRING002 == "S") || (STRING002 == "")) Then
  85.             Delete STRING004
  86.             FCreate 1, STRING004, 1, 3
  87.             FPutLn 1, "@X00@X0B▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄@X0F"
  88.             FPut 1, "@X03█@X3E"
  89.             STRING005 = ReadLine(STRING007, 1 + CurConf() * 33)
  90.             If (CurConf() == 0) Then
  91.                 STRING005 = STRING005 + " News"
  92.                 Goto LABEL004
  93.             Endif
  94.             STRING005 = STRING005 + " Conference News"
  95.             :LABEL004
  96.             STRING009 = (70 - Len(STRING005)) / 2
  97.             STRING010 = (70 - Len(STRING005)) % 2
  98.             FPut 1, Space(STRING009), STRING005, Space(STRING009), Space(STRING010)
  99.             FPutLn 1, "@X03█@X0F"
  100.             FPutLn 1, "@X01▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀@XFF"
  101.             Dec INTEGER001
  102.             For INTEGER003 = 0 To INTEGER001
  103.                 FPutLn 1, TSTRING003(INTEGER003)
  104.             Next
  105.             FPutLn 1, TSTRING003(INTEGER001 + 1), "@X", Right("00" + String(DefColor()), 2)
  106.             FClose 1
  107.             PrintLn STRING005, " updated."
  108.             Continue
  109.         Endif
  110.         If (STRING002 == "C") Then
  111.             INTEGER002 = INTEGER001
  112.             INTEGER001 = 18
  113.             Gosub LABEL005
  114.             STRING002 = "L"
  115.             Continue
  116.         Endif
  117.         If (STRING002 == "D") Then
  118.             TSTRING003(INTEGER002) = ""
  119.             Continue
  120.         Endif
  121.         If (STRING002 == "L") Then
  122.             INTEGER002 = ""
  123.             For INTEGER003 = 0 To INTEGER001
  124.                 PrintLn Right(" " + String(INTEGER003 + 1), 2), ": ", TSTRING003(INTEGER003)
  125.             Next
  126.             PrintLn 
  127.         Endif
  128.     EndWhile
  129.     WrUNet PcbNode(), UN_Stat(), UN_Name(), UN_City(), STRING008, ""
  130.     Return
  131.     :LABEL005
  132.     While (INTEGER002 < 18) Do
  133.         InputStr Left("Ln #" + String(INTEGER002 + 1) + " ", 6), TSTRING003(INTEGER002), 14, 72, Mask_Ascii(), 512 + 64
  134.         If (Upper(TSTRING003(INTEGER002)) == "/Q") Then
  135.             TSTRING003(INTEGER002) = ""
  136.             INTEGER001 = INTEGER002 - 1
  137.             INTEGER002 = 18
  138.             Continue
  139.         Endif
  140.         If (Upper(TSTRING003(INTEGER002)) == "/D") Then
  141.             TSTRING003(INTEGER002) = ""
  142.             If (INTEGER002 > 0) Then
  143.                 Dec INTEGER002
  144.                 TSTRING003(INTEGER002) = ""
  145.             Endif
  146.             Continue
  147.         Endif
  148.         Inc INTEGER002
  149.     EndWhile
  150.     Return
  151.     :LABEL006
  152.     STRING007 = ReadLine(PCBDat(), 31)
  153.     STRING006 = ReadLine(STRING007, 13)
  154.     INTEGER003 = CurConf()
  155.     If (INTEGER003 > 0) Then
  156.         STRING004 = ReadLine(STRING007, 13 + INTEGER003 * 33)
  157.     Else
  158.         STRING004 = STRING006
  159.     Endif
  160.     Return
  161.  
  162. ;------------------------------------------------------------------------------
  163. ;
  164. ; Usage report (before postprocessing)
  165. ;
  166. ; ■ Statements used :
  167. ;
  168. ;    1       End
  169. ;    36      Goto 
  170. ;    35      Let 
  171. ;    7       PrintLn 
  172. ;    21      If 
  173. ;    1       FCreate 
  174. ;    1       FClose 
  175. ;    2       FPut 
  176. ;    5       FPutLn 
  177. ;    1       Delete 
  178. ;    3       InputStr 
  179. ;    4       Gosub 
  180. ;    3       Return
  181. ;    1       Inc 
  182. ;    2       Dec 
  183. ;    4       KbdStuff 
  184. ;    1       RdUNet 
  185. ;    2       WrUNet 
  186. ;
  187. ;
  188. ; ■ Functions used :
  189. ;
  190. ;    2       *
  191. ;    1       /
  192. ;    1       %
  193. ;    19      +
  194. ;    3       -
  195. ;    14      ==
  196. ;    3       <>
  197. ;    4       <
  198. ;    2       <=
  199. ;    3       >
  200. ;    5       >=
  201. ;    21      !
  202. ;    6       &&
  203. ;    4       ||
  204. ;    2       Len(
  205. ;    5       Upper()
  206. ;    1       Left()
  207. ;    2       Right()
  208. ;    3       Space()
  209. ;    3       Chr()
  210. ;    3       String()
  211. ;    1       Mask_Ascii()
  212. ;    3       CurConf()
  213. ;    1       PCBDat()
  214. ;    3       PcbNode()
  215. ;    4       ReadLine()
  216. ;    1       SysopSec()
  217. ;    2       UN_Stat()
  218. ;    2       UN_Name()
  219. ;    2       UN_City()
  220. ;    1       UN_Oper()
  221. ;    2       CurSec()
  222. ;    1       GetToken()
  223. ;    1       TokenStr()
  224. ;    1       DefColor()
  225. ;    1       TokCount()
  226. ;
  227. ;------------------------------------------------------------------------------
  228. ;
  229. ; Analysis flags : ds
  230. ;
  231. ; d - Access PCBOARD.DAT ■ 2
  232. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  233. ;     for many PPE so they can find various informations on the system
  234. ;     (system paths, max number of lines in messages, ...) but it may also
  235. ;     be a way to gather vital informations.
  236. ;     ■ Search for : PCBDAT()
  237. ;
  238. ; s - Sysop level access ■ 5
  239. ;     Program is reading the sysop access level, this may be normal
  240. ;     but still it is very suspect. It is the best way to give a user
  241. ;     all priviledges. Check!
  242. ;     ■ Search for : SYSOPSEC()
  243. ;
  244. ;------------------------------------------------------------------------------
  245. ;
  246. ; Postprocessing report
  247. ;
  248. ;    2       For/Next
  249. ;    2       While/EndWhile
  250. ;    17      If/Then or If/Then/Else
  251. ;    0       Select Case
  252. ;
  253. ;------------------------------------------------------------------------------
  254. ;                 AEGiS Corp - Break the routines, code against the machines!
  255. ;------------------------------------------------------------------------------
  256.