home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / S / SCAN_300.ZIP / SCAN.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-07-18  |  4KB  |  275 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 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  TBOOLEAN001(1000)
  20.     Integer  INTEGER001
  21.     Integer  INTEGER002
  22.     Integer  INTEGER003
  23.     Integer  TINTEGER004(1000)
  24.     String   STRING001
  25.     String   STRING002
  26.     String   STRING003
  27.     String   STRING004
  28.     String   STRING005
  29.     String   STRING006
  30.     String   STRING007
  31.     String   STRING008
  32.     String   STRING009
  33.     String   STRING010
  34.  
  35. ;------------------------------------------------------------------------------
  36.  
  37.     GetUser
  38.     RdUNet PcbNode()
  39.     WrUNet PcbNode(), UN_Stat(), UN_Name(), UN_City(), "SCANS FOR NEW FiLES", ""
  40.     If (Exist(PPEPath() + "USERDATA\USERPATH")) Goto LABEL001
  41.     FCreate 1, "DATA.BAT", 2, 0
  42.     FPutLn 1, "@ECHO OFF"
  43.     FPutLn 1, "MD " + PPEPath() + "USERDATA"
  44.     FPutLn 1, "REM > " + PPEPath() + "USERDATA\USERPATH"
  45.     FClose 1
  46.     SaveScrn
  47.     Shell 1, STRING005, "DATA.BAT", 0
  48.     RestScrn
  49.     Delete "DATA.BAT"
  50.     :LABEL001
  51.     INTEGER003 = CurConf()
  52.     STRING006 = PPEPath() + "\USERDATA\"
  53.     INTEGER001 = ReadLine(PCBDat(), 108)
  54.     FClose -1
  55.     For INTEGER002 = 1 To Len(U_Name())
  56.         STRING010 = STRING010 + Asc(Mid(Mixed(U_Name()), INTEGER002, 1)) / 4
  57.     Next
  58.     STRING008 = Strip(U_Name(), " ")
  59.     STRING008 = Strip(STRING008, ".")
  60.     If (Len(U_Name()) < 14) STRING007 = STRING008 + "." + STRING010
  61.     If (STRING007 <> "") Goto LABEL002
  62.     STRING007 = Mid(STRING008, 1, 1)
  63.     STRING007 = STRING007 + Mid(STRING008, 3, 1)
  64.     STRING007 = STRING007 + Mid(STRING008, 5, 1)
  65.     STRING007 = STRING007 + Mid(STRING008, 7, 1)
  66.     STRING007 = STRING007 + Mid(STRING008, 9, 1)
  67.     STRING007 = STRING007 + Mid(STRING008, 11, 1)
  68.     STRING007 = STRING007 + Mid(STRING008, 13, 1)
  69.     STRING007 = STRING007 + Mid(STRING008, 15, 1)
  70.     STRING007 = STRING007 + "." + STRING010
  71.     :LABEL002
  72.     If (Exist(PPEPath() + "SCANDAT" + LangExt())) Goto LABEL004
  73.     If (Exist(PPEPath() + "SCANDAT")) Goto LABEL003
  74.     SPrintLn 
  75.     SPrintLn "NO 'SCANDAT' FiLE WAS FOUND ! CREATE ONE BEFORE STARTiNG AGAiN !"
  76.     SPrintLn "READ THE DOCUMENTS FOR FURTHER INFORMATiON !"
  77.     Goto LABEL012
  78.     :LABEL003
  79.     FOpen 2, PPEPath() + "SCANDAT", 0, 0
  80.     :LABEL004
  81.     If (Exist(PPEPath() + "SCANDAT" + LangExt())) FOpen 2, PPEPath() + "SCANDAT" + LangExt() , 0, 0
  82.     FGet 2, STRING001
  83.     FGet 2, STRING002
  84.     FClose 2
  85.     If (Exist(STRING006 + STRING007)) Goto LABEL005
  86.     Call PPEPath() + "SELECT.PPE"
  87.     :LABEL005
  88.     FOpen 2, STRING006 + STRING007, 0, 0
  89.     For INTEGER002 = 0 To INTEGER001
  90.         FGet 2, TINTEGER004(INTEGER002)
  91.         FGet 2, TBOOLEAN001(TINTEGER004(INTEGER002))
  92.     Next
  93.     FClose 2
  94.     Newline
  95.     :LABEL006
  96.     Print "@POFF@", STRING001
  97.     :LABEL007
  98.     STRING005 = Inkey()
  99.     If ((((STRING005 == Chr(13)) || (STRING005 == Chr(10))) || (STRING005 == Chr(32))) || (Upper(STRING005) == YesChar())) Then
  100.         Backup 80
  101.         ClrEol
  102.     Else
  103.         If (((STRING005 == Chr(27)) || (Upper(STRING005) == NoChar())) || (Upper(STRING005) == "Q")) Then
  104.             Backup 80
  105.             ClrEol
  106.             Goto LABEL012
  107.         Endif
  108.         If (Upper(STRING005) == "S") Then
  109.             Backup 80
  110.             ClrEol
  111.             Call PPEPath() + "SELECT.PPE"
  112.             FOpen 2, STRING006 + STRING007, 0, 0
  113.             For INTEGER002 = 0 To INTEGER001
  114.                 FGet 2, TINTEGER004(INTEGER002)
  115.                 FGet 2, TBOOLEAN001(TINTEGER004(INTEGER002))
  116.             Next
  117.             FClose 2
  118.             Goto LABEL006
  119.         Endif
  120.         Goto LABEL007
  121.     Endif
  122.     :LABEL008
  123.     STRING004 = Mid(U_LDate(), 1, 2) + Mid(U_LDate(), 4, 2) + Mid(U_LDate(), 7, 2)
  124.     PromptStr 72, STRING004, 6, Mask_Num(), 2 + 4 + 1024
  125.     If (ValDate(STRING004) == 0) Then
  126.         Backup 80
  127.         ClrEol
  128.         Goto LABEL008
  129.     Endif
  130.     STRING009 = STRING004
  131.     Backup 80
  132.     ClrEol
  133.     For INTEGER002 = 0 To INTEGER001
  134.         If (TBOOLEAN001(TINTEGER004(INTEGER002)) == 1) Then
  135.             STRING003 = "N " + STRING009 + " U"
  136.             Join INTEGER002
  137.             Newline
  138.             Dir STRING003
  139.             Newline
  140.             If (INTEGER002 <> INTEGER001) Then
  141.                 Print STRING002
  142.                 :LABEL009
  143.                 STRING005 = Inkey()
  144.                 If (STRING005 <> "") Goto LABEL010
  145.                 Goto LABEL009
  146.                 :LABEL010
  147.                 If (Upper(STRING005) == NoChar()) Then
  148.                     Backup 80
  149.                     ClrEol
  150.                     Goto LABEL012
  151.                 Endif
  152.                 If (Upper(STRING005) == YesChar()) Goto LABEL011
  153.                 If (Upper(STRING005) == Chr(32)) Goto LABEL011
  154.                 If (Upper(STRING005) == Chr(13)) Goto LABEL011
  155.                 If (Upper(STRING005) == Chr(10)) Goto LABEL011
  156.                 Goto LABEL009
  157.                 :LABEL011
  158.                 Backup 80
  159.                 ClrEol
  160.             Endif
  161.         Endif
  162.     Next
  163.     :LABEL012
  164.     Join INTEGER003
  165.     If (STRING004 <> "") Log "DiAMONDS `SCAN 3.00' FiNiSHED AT " + Mid(Time(), 1, 5) + "", 0
  166.     End
  167.  
  168. ;------------------------------------------------------------------------------
  169. ;
  170. ; Usage report (before postprocessing)
  171. ;
  172. ; ■ Statements used :
  173. ;
  174. ;    1       End
  175. ;    7       ClrEol
  176. ;    35      Goto 
  177. ;    29      Let 
  178. ;    2       Print 
  179. ;    24      If 
  180. ;    1       FCreate 
  181. ;    4       FOpen 
  182. ;    5       FClose 
  183. ;    6       FGet 
  184. ;    3       FPutLn 
  185. ;    1       GetUser
  186. ;    1       Delete 
  187. ;    1       Log 
  188. ;    1       PromptStr 
  189. ;    3       Newline
  190. ;    1       Shell 
  191. ;    2       Call 
  192. ;    2       Join 
  193. ;    1       Dir 
  194. ;    1       RdUNet 
  195. ;    1       WrUNet 
  196. ;    7       Backup 
  197. ;    1       SaveScrn
  198. ;    1       RestScrn
  199. ;    3       SPrintLn 
  200. ;
  201. ;
  202. ; ■ Functions used :
  203. ;
  204. ;    1       -
  205. ;    1       /
  206. ;    43      +
  207. ;    15      ==
  208. ;    4       <>
  209. ;    5       <
  210. ;    4       <=
  211. ;    8       >=
  212. ;    15      !
  213. ;    8       &&
  214. ;    9       ||
  215. ;    3       Len(
  216. ;    9       Upper()
  217. ;    13      Mid()
  218. ;    7       Chr()
  219. ;    1       Asc()
  220. ;    1       Time()
  221. ;    5       U_Name()
  222. ;    3       U_LDate()
  223. ;    2       NoChar()
  224. ;    2       YesChar()
  225. ;    2       Strip()
  226. ;    2       Inkey()
  227. ;    1       Mask_Num()
  228. ;    1       CurConf()
  229. ;    1       PCBDat()
  230. ;    11      PPEPath()
  231. ;    1       ValDate()
  232. ;    2       PcbNode()
  233. ;    1       ReadLine()
  234. ;    1       UN_Stat()
  235. ;    1       UN_Name()
  236. ;    1       UN_City()
  237. ;    5       Exist()
  238. ;    3       LangExt()
  239. ;    1       Mixed()
  240. ;
  241. ;------------------------------------------------------------------------------
  242. ;
  243. ; Analysis flags : SCd
  244. ;
  245. ; S - Shell to DOS ■ 5
  246. ;     This may be normal if the PPE need to execute an external command,
  247. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  248. ;     or usefull (sorting, maintenance,...). Check!
  249. ;     ■ Search for : SHELL
  250. ;
  251. ; C - Call child PPE ■ 3
  252. ;     This is usually normal, but may be a tricky way to launch some
  253. ;     sysop-only commands.
  254. ;     ■ Search for : CALL
  255. ;
  256. ; d - Access PCBOARD.DAT ■ 2
  257. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  258. ;     for many PPE so they can find various informations on the system
  259. ;     (system paths, max number of lines in messages, ...) but it may also
  260. ;     be a way to gather vital informations.
  261. ;     ■ Search for : PCBDAT()
  262. ;
  263. ;------------------------------------------------------------------------------
  264. ;
  265. ; Postprocessing report
  266. ;
  267. ;    4       For/Next
  268. ;    0       While/EndWhile
  269. ;    7       If/Then or If/Then/Else
  270. ;    0       Select Case
  271. ;
  272. ;------------------------------------------------------------------------------
  273. ;                 AEGiS Corp - Break the routines, code against the machines!
  274. ;------------------------------------------------------------------------------
  275.