home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / T / THTP150.ZIP / PROTOCOL.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-05-29  |  6KB  |  368 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  BOOLEAN001
  20.     Integer  INTEGER001
  21.     Integer  INTEGER002
  22.     Integer  INTEGER003
  23.     Integer  INTEGER004
  24.     Integer  INTEGER005
  25.     Integer  INTEGER006
  26.     Integer  INTEGER007
  27.     Integer  INTEGER008
  28.     Integer  INTEGER009
  29.     Integer  INTEGER010
  30.     Integer  INTEGER011
  31.     String   TSTRING002(50,7)
  32.     String   TSTRING003(50)
  33.     String   TSTRING004(50)
  34.     String   TSTRING005(50)
  35.     String   TSTRING006(50)
  36.     String   STRING007
  37.     String   STRING008
  38.     String   STRING009
  39.     String   STRING010
  40.     String   STRING011
  41.     String   STRING012
  42.     String   STRING013
  43.     String   STRING014
  44.     String   STRING015
  45.     String   STRING016
  46.     String   STRING017
  47.     String   STRING018
  48.     String   STRING019
  49.     String   STRING020
  50.     String   STRING021
  51.     String   STRING022
  52.     String   STRING023
  53.     String   STRING024
  54.     String   STRING025
  55.     String   STRING026
  56.     String   STRING027
  57.     String   STRING028
  58.     String   STRING029
  59.  
  60. ;------------------------------------------------------------------------------
  61.  
  62.     FDefIn 1
  63.     FOpen 1, PPEPath() + "PROT.CNF", 0, 0
  64.     FDGet STRING014
  65.     FDGet STRING015
  66.     FDGet STRING016
  67.     FDGet STRING017
  68.     FDGet STRING018
  69.     FDGet STRING019
  70.     FDGet STRING020
  71.     FDGet STRING021
  72.     FDGet STRING022
  73.     FDGet STRING023
  74.     FDGet STRING029
  75.     FDGet INTEGER005
  76.     FClose 1
  77.     INTEGER008 = Mid(STRING015, 6, 2) - INTEGER005
  78.     INTEGER009 = (Mid(STRING015, 6, 2) - Mid(STRING014, 6, 2)) / 2
  79.     GetToken STRING012
  80.     If (Exist(ReadLine(PCBDat(), 45))) Goto LABEL001
  81.     Newline
  82.     Print "@X0CError reading PCBPROT.DAT!  Aborting ... @X07"
  83.     Delay 50
  84.     Log "Error reading PCBPROT.DAT!", 0
  85.     FreshLine
  86.     End
  87.     Goto LABEL004
  88.     :LABEL001
  89.     GetUser
  90.     STRING013 = U_Trans
  91.     FOpen 1, ReadLine(PCBDat(), 45), 0, 0
  92.     :LABEL002
  93.     If (Ferr(1)) Goto LABEL003
  94.     FDGet STRING007
  95.     If (Len(STRING007)) Then
  96.         STRING007 = Replace(STRING007, Chr(32), Chr(255))
  97.         Inc INTEGER002
  98.         STRING007 = Replace(STRING007, ",", ";")
  99.         Tokenize STRING007
  100.         While (TokCount() > 0) Do
  101.             Inc INTEGER001
  102.             GetToken TSTRING002(INTEGER002, INTEGER001)
  103.         EndWhile
  104.         TSTRING003(INTEGER002) = TSTRING002(INTEGER002, 1)
  105.         TSTRING005(INTEGER002) = TSTRING002(INTEGER002, 2)
  106.         TSTRING006(INTEGER002) = Replace(TSTRING002(INTEGER002, 4), Chr(255), Chr(32))
  107.         TSTRING004(INTEGER002) = TSTRING002(INTEGER002, 5)
  108.     Endif
  109.     INTEGER001 = 0
  110.     Goto LABEL002
  111.     :LABEL003
  112.     FClose 1
  113.     FOpen 1, PPEPath() + "PROTOCOL.CNF", 0, 0
  114.     FDGet STRING009
  115.     If (Right(STRING009, (1 <> "\"))) STRING009 = STRING009 + "\"
  116.     STRING010 = STRING009 + "PCBS"
  117.     STRING011 = STRING009 + "PCBR"
  118.     FClose 1
  119.     If (Strip(STRING012, Chr(32)) <> "") Then
  120.         STRING012 = Strip(STRING012, Chr(32))
  121.         For INTEGER003 = 1 To INTEGER002
  122.             STRING008 = STRING008 + TSTRING003(INTEGER003)
  123.         Next
  124.         INTEGER004 = InStr(STRING008, STRING012)
  125.         If (STRING012 == "N") Goto LABEL013
  126.         Gosub LABEL011
  127.     Endif
  128.     Gosub LABEL005
  129.     :LABEL004
  130.     End
  131.     :LABEL005
  132.     Newline
  133.     DispFile PPEPath() + "Prot.hdr", 0
  134.     INTEGER007 = GetY() - 1
  135.     For INTEGER003 = 1 To INTEGER002
  136.         If (((TSTRING005(INTEGER003) <> "I") && !Exist(STRING010 + TSTRING003(INTEGER003) + ".BAT")) && !Exist(STRING011 + TSTRING003(INTEGER003) + ".BAT")) BOOLEAN001 = 1
  137.         If (!BOOLEAN001 || (TSTRING003(INTEGER003) == "N")) Then
  138.             STRING008 = STRING008 + TSTRING003(INTEGER003)
  139.             If (TSTRING003(INTEGER003) == U_Trans) Then
  140.                 Inc INTEGER011
  141.                 PrintLn STRING014 + STRING016 + STRING023 + " " + STRING018 + "=> " + STRING019 + "(" + STRING020 + TSTRING003(INTEGER003) + STRING019 + ") " + STRING021 + TSTRING006(INTEGER003) + STRING015 + STRING017 + STRING023 + "@X07"
  142.                 Goto LABEL006
  143.             Endif
  144.             Inc INTEGER011
  145.             PrintLn STRING014 + STRING016 + STRING023 + "    " + STRING019 + "(" + STRING020 + TSTRING003(INTEGER003) + STRING019 + ") " + STRING021 + TSTRING006(INTEGER003) + STRING015 + STRING017 + STRING023 + "@X07"
  146.         Endif
  147.         :LABEL006
  148.         BOOLEAN001 = 0
  149.     Next
  150.     INTEGER006 = GetY() - 2
  151.     DispFile PPEPath() + "Prot.ftr", 0
  152.     AnsiPos INTEGER009, 4
  153.     Print Chr(64) + Chr(88) + Chr(48) + Chr(49) + " " + I2S(29, 36) + I2S(17, 36) + I2S(29, 36) + "-" + I2S(25, 36) + "rot" + Chr(64) + Chr(88) + Chr(48) + Chr(56) + "  v" + Chr(49) + "." + Chr(53) + Chr(48)
  154.     INTEGER010 = INTEGER007
  155.     :LABEL007
  156.     If (FALSE) Goto LABEL008
  157.     AnsiPos INTEGER005, INTEGER010
  158.     STRING024 = RTrim(ScrText(INTEGER005, INTEGER010, INTEGER008, 0), " ")
  159.     STRING027 = Left(STRING024, 3)
  160.     STRING027 = Strip(STRING027, ")")
  161.     STRING027 = Strip(STRING027, "(")
  162.     If (STRING027 == STRING013) Then
  163.         INTEGER006 = INTEGER010 - 1
  164.     Else
  165.         Inc INTEGER010
  166.         Goto LABEL007
  167.     Endif
  168.     :LABEL008
  169.     KbdStuff Chr(32)
  170.     :LABEL009
  171.     If (FALSE) Goto LABEL010
  172.     DefColor
  173.     STRING025 = Upper(Inkey())
  174.     If (STRING025 == Chr(13)) Then
  175.         STRING026 = StripAtx(STRING026)
  176.         DefColor
  177.         Cls
  178.         STRING027 = Left(STRING026, 3)
  179.         STRING027 = Strip(STRING027, ")")
  180.         STRING027 = Strip(STRING027, "(")
  181.     Else
  182.         If (STRING025 == "Q") Then
  183.             AnsiPos 1, 21
  184.             Stop
  185.         Endif
  186.         If ((((STRING025 == Chr(32)) || (STRING025 == "DOWN")) || (STRING025 == "LEFT")) || (STRING025 == "Z")) Then
  187.             Inc INTEGER006
  188.             AnsiPos INTEGER005, INTEGER006 - 1
  189.             Print STRING026
  190.             If (INTEGER006 == INTEGER007 + INTEGER011 + 1) INTEGER006 = INTEGER007 + 1
  191.             AnsiPos INTEGER005, INTEGER006
  192.             STRING026 = ScrText(INTEGER005, INTEGER006, INTEGER008, 1)
  193.             Print STRING029 + RTrim(ScrText(INTEGER005, INTEGER006, INTEGER008, 0), " ")
  194.         Endif
  195.         If (((STRING025 == "UP") || (STRING025 == "A")) || (STRING025 == "RIGHT")) Then
  196.             Dec INTEGER006
  197.             AnsiPos INTEGER005, INTEGER006 + 1
  198.             Print STRING026
  199.             AnsiPos INTEGER005, INTEGER006
  200.             STRING028 = ScrText(INTEGER005, INTEGER006, INTEGER008, 1)
  201.             If (INTEGER006 <> INTEGER007) Print STRING029 + RTrim(ScrText(INTEGER005, INTEGER006, INTEGER008, 0), " ")
  202.             STRING026 = STRING028
  203.             If (INTEGER006 == INTEGER007) Then
  204.                 INTEGER006 = INTEGER007 + INTEGER011
  205.                 STRING028 = ScrText(INTEGER005, INTEGER006, INTEGER008, 1)
  206.                 STRING026 = STRING028
  207.                 AnsiPos INTEGER005, INTEGER006
  208.                 Print STRING029 + RTrim(ScrText(INTEGER005, INTEGER006, INTEGER008, 0), " ")
  209.             Endif
  210.         Endif
  211.         Goto LABEL009
  212.     Endif
  213.     :LABEL010
  214.     If ((STRING027 <> STRING013) || (STRING012 == "THT")) Then
  215.         If (STRING012 == "THT") Then
  216.             FCreate 1, PPEPath() + "PROT" + String(PcbNode()), 1, 0
  217.             FPutLn 1, STRING027
  218.             FClose 1
  219.             Stop
  220.         Endif
  221.         KbdStuff "P;" + STRING027 + Chr(13)
  222.         ShowOn
  223.     Else
  224.         Stop
  225.     Endif
  226.     PromptStr 198, STRING013, 1, STRING008, 2 + 4 + 8 + 128 + 256 + 8192
  227.     If (Len(STRING013) && (STRING013 <> U_Trans)) Then
  228.         STRING012 = Left(STRING013, 1)
  229.         If (STRING012 == "N") Goto LABEL013
  230.         INTEGER004 = InStr(STRING008, STRING012)
  231.         Goto LABEL011
  232.     Else
  233.         Newline
  234.     Endif
  235.     Return
  236.     :LABEL011
  237.     If (((TSTRING005(INTEGER004) <> "I") && !Exist(STRING010 + TSTRING003(INTEGER004) + ".BAT")) && !Exist(STRING011 + TSTRING003(INTEGER004) + ".BAT")) BOOLEAN001 = 1
  238.     If ((STRING012 == TSTRING003(INTEGER004)) && !BOOLEAN001) Then
  239.         If (TSTRING004(INTEGER004) == YesChar()) Then
  240.             If (ErrCorrect()) Goto LABEL012
  241.             Newlines 2
  242.             PrintLn "@X0CProtocol Unavailable - Modem Type Wrong!"
  243.             End
  244.         Endif
  245.         :LABEL012
  246.     Else
  247.         Return
  248.     Endif
  249.     :LABEL013
  250.     If (Strip(STRING012, Chr(32)) <> "") Then
  251.         U_Trans = STRING012
  252.         PutUser
  253.         Log "Default Protocol set to [" + STRING012 + "]", 0
  254.     Endif
  255.     Newline
  256.     PrintLn "@X0ADefault Protocol set to @PRODESC@"
  257.     End
  258.  
  259. ;------------------------------------------------------------------------------
  260. ;
  261. ; Usage report (before postprocessing)
  262. ;
  263. ; ■ Statements used :
  264. ;
  265. ;    4       End
  266. ;    1       Cls
  267. ;    40      Goto 
  268. ;    47      Let 
  269. ;    7       Print 
  270. ;    4       PrintLn 
  271. ;    31      If 
  272. ;    2       DispFile 
  273. ;    1       FCreate 
  274. ;    3       FOpen 
  275. ;    4       FClose 
  276. ;    1       FPutLn 
  277. ;    1       GetUser
  278. ;    1       PutUser
  279. ;    2       DefColor
  280. ;    2       Log 
  281. ;    2       Gosub 
  282. ;    2       Return
  283. ;    1       PromptStr 
  284. ;    1       Delay 
  285. ;    6       Inc 
  286. ;    1       Dec 
  287. ;    4       Newline
  288. ;    1       Newlines 
  289. ;    1       Tokenize 
  290. ;    2       GetToken 
  291. ;    3       Stop
  292. ;    2       KbdStuff 
  293. ;    8       AnsiPos 
  294. ;    1       FreshLine
  295. ;    1       ShowOn
  296. ;    1       FDefIn 
  297. ;    14      FDGet 
  298. ;
  299. ;
  300. ; ■ Functions used :
  301. ;
  302. ;    1       /
  303. ;    89      +
  304. ;    6       -
  305. ;    20      ==
  306. ;    8       <>
  307. ;    2       <
  308. ;    2       <=
  309. ;    1       >
  310. ;    4       >=
  311. ;    30      !
  312. ;    10      &&
  313. ;    9       ||
  314. ;    2       Len(
  315. ;    1       Upper()
  316. ;    3       Mid()
  317. ;    3       Left()
  318. ;    1       Right()
  319. ;    1       Ferr()
  320. ;    22      Chr()
  321. ;    2       InStr()
  322. ;    4       RTrim()
  323. ;    1       YesChar()
  324. ;    1       StripAtx()
  325. ;    3       Replace()
  326. ;    7       Strip()
  327. ;    1       Inkey()
  328. ;    1       String()
  329. ;    2       PCBDat()
  330. ;    5       PPEPath()
  331. ;    1       PcbNode()
  332. ;    2       ReadLine()
  333. ;    5       Exist()
  334. ;    4       I2S()
  335. ;    2       GetY()
  336. ;    1       TokCount()
  337. ;    7       ScrText()
  338. ;    1       ErrCorrect()
  339. ;
  340. ;------------------------------------------------------------------------------
  341. ;
  342. ; Analysis flags : Wd
  343. ;
  344. ; W - Write user ■ 5
  345. ;     Program writes a user record. Although this may be normal for a
  346. ;     User Editor, it may also be a way to modify an account level.
  347. ;     ■ Search for : PUTUSER
  348. ;
  349. ; d - Access PCBOARD.DAT ■ 2
  350. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  351. ;     for many PPE so they can find various informations on the system
  352. ;     (system paths, max number of lines in messages, ...) but it may also
  353. ;     be a way to gather vital informations.
  354. ;     ■ Search for : PCBDAT()
  355. ;
  356. ;------------------------------------------------------------------------------
  357. ;
  358. ; Postprocessing report
  359. ;
  360. ;    2       For/Next
  361. ;    1       While/EndWhile
  362. ;    16      If/Then or If/Then/Else
  363. ;    0       Select Case
  364. ;
  365. ;------------------------------------------------------------------------------
  366. ;                 AEGiS Corp - Break the routines, code against the machines!
  367. ;------------------------------------------------------------------------------
  368.