home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0200 - 0209 / ibm0200-0209 / ibm0200.tar / ibm0200 / GNSCHAT.ZIP / LINECHAT.PPE (.txt) < prev    next >
Encoding:
PCBoard Programming Language Executable  |  1994-05-30  |  5.6 KB  |  427 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.     Integer  INTEGER001
  20.     Integer  INTEGER002
  21.     Integer  INTEGER003
  22.     Integer  INTEGER004
  23.     Integer  INTEGER005
  24.     Integer  INTEGER006
  25.     Integer  INTEGER007
  26.     Integer  INTEGER008
  27.     Integer  INTEGER009
  28.     Integer  INTEGER010
  29.     Integer  INTEGER011
  30.     Integer  INTEGER012
  31.     Integer  INTEGER013
  32.     String   STRING001
  33.     String   STRING002
  34.     String   STRING003
  35.     String   STRING004
  36.     String   STRING005
  37.     String   STRING006
  38.     String   STRING007
  39.     String   STRING008
  40.     String   STRING009
  41.     String   STRING010
  42.     String   STRING011
  43.     String   STRING012
  44.     String   STRING013
  45.     String   STRING014
  46.     String   STRING015
  47.     String   STRING016
  48.  
  49. ;------------------------------------------------------------------------------
  50.  
  51.     FOpen 1, PPEPath() + "LINECHAT.CNF", 0, 0
  52.     FGet 1, STRING001
  53.     FGet 1, STRING002
  54.     FGet 1, STRING003
  55.     FGet 1, STRING004
  56.     FGet 1, STRING005
  57.     FGet 1, STRING006
  58.     FGet 1, INTEGER007
  59.     FClose 1
  60.     SaveScrn
  61.     If (Exist(PPEPath() + STRING004)) DispFile PPEPath() + STRING004, 1
  62.     Delay INTEGER007
  63.     INTEGER005 = 1
  64.     :LABEL001
  65.     If (Mid(STRING001, INTEGER005, 1) == ";") Goto LABEL002
  66.     STRING010 = STRING010 + Mid(STRING001, INTEGER005, 1)
  67.     Inc INTEGER005
  68.     Goto LABEL001
  69.     :LABEL002
  70.     Inc INTEGER005
  71.     INTEGER001 = STRING010
  72.     STRING010 = ""
  73.     :LABEL003
  74.     If (Mid(STRING001, INTEGER005, 1) == ";") Goto LABEL004
  75.     STRING010 = STRING010 + Mid(STRING001, INTEGER005, 1)
  76.     Inc INTEGER005
  77.     Goto LABEL003
  78.     :LABEL004
  79.     Inc INTEGER005
  80.     INTEGER002 = STRING010
  81.     STRING010 = ""
  82.     :LABEL005
  83.     If (Mid(STRING001, INTEGER005, 1) == ";") Goto LABEL006
  84.     STRING010 = STRING010 + Mid(STRING001, INTEGER005, 1)
  85.     Inc INTEGER005
  86.     Goto LABEL005
  87.     :LABEL006
  88.     Inc INTEGER005
  89.     INTEGER003 = STRING010
  90.     STRING010 = ""
  91.     :LABEL007
  92.     If (INTEGER005 > Len(STRING001)) Goto LABEL008
  93.     STRING010 = STRING010 + Mid(STRING001, INTEGER005, 1)
  94.     Inc INTEGER005
  95.     Goto LABEL007
  96.     :LABEL008
  97.     Inc INTEGER005
  98.     INTEGER004 = STRING010
  99.     STRING010 = ""
  100.     STRING008 = ""
  101.     For INTEGER006 = 0 To INTEGER003 - INTEGER001
  102.         STRING008 = STRING008 + " "
  103.     Next
  104.     If (Exist(PPEPath() + STRING005)) DispFile PPEPath() + STRING005, 1
  105.     AnsiPos INTEGER001, INTEGER002
  106.     INTEGER008 = INTEGER001
  107.     INTEGER009 = INTEGER002
  108.     :LABEL009
  109.     STRING011 = MInkey()
  110.     STRING012 = KInkey()
  111.     If ((STRING011 == "") && (STRING012 == "")) Goto LABEL009
  112.     If (((Len(STRING012) == 1) || (STRING012 == Chr(27))) || (STRING012 == Chr(13))) Then
  113.         STRING007 = STRING002
  114.         STRING013 = "SYSOP"
  115.         Gosub LABEL010
  116.     Endif
  117.     If (((Len(STRING011) == 1) || (STRING011 == Chr(27))) || (STRING011 == Chr(13))) Then
  118.         STRING007 = STRING003
  119.         STRING013 = "USER"
  120.         Gosub LABEL010
  121.     Endif
  122.     Goto LABEL009
  123.     :LABEL010
  124.     If (STRING013 == "SYSOP") Then
  125.         If (STRING012 == Chr(9)) Return
  126.         If (STRING012 == Chr(7)) Return
  127.         If (STRING012 == Chr(27)) Goto LABEL029
  128.         If (STRING012 == Chr(13)) Then
  129.             STRING009 = ScrText(INTEGER001, INTEGER009, INTEGER003 - INTEGER001 + 1, 0)
  130.             If (Upper(Mid(STRING009, 1, 3)) == "/Q ") Goto LABEL029
  131.             If (Upper(Mid(STRING009, 1, 6)) == "/PAGE ") Print "@BEEP@"
  132.             If (Upper(Mid(STRING009, 1, 5)) == "/BYE ") Goto LABEL030
  133.             INTEGER008 = INTEGER001
  134.             Inc INTEGER009
  135.             If (INTEGER009 > INTEGER004) Then
  136.                 STRING014 = ScrText(INTEGER001, INTEGER004, INTEGER003 - INTEGER001 + 1, 1)
  137.                 INTEGER010 = INTEGER001
  138.                 INTEGER011 = INTEGER002
  139.                 AnsiPos INTEGER010, INTEGER011
  140.                 Print STRING002
  141.                 :LABEL011
  142.                 If (INTEGER011 > INTEGER004) Goto LABEL012
  143.                 Print STRING008
  144.                 Inc INTEGER011
  145.                 AnsiPos INTEGER010, INTEGER011
  146.                 Goto LABEL011
  147.                 :LABEL012
  148.                 AnsiPos INTEGER001, INTEGER002
  149.                 Print STRING014
  150.                 INTEGER009 = INTEGER002 + 1
  151.             Endif
  152.             AnsiPos INTEGER008, INTEGER009
  153.             Return
  154.         Endif
  155.         If (STRING012 == Chr(8)) Then
  156.             Dec INTEGER008
  157.             If (INTEGER008 < INTEGER001) INTEGER008 = INTEGER001
  158.             AnsiPos INTEGER008, INTEGER009
  159.             Print STRING002 + " " + Chr(8)
  160.             Return
  161.         Endif
  162.         AnsiPos INTEGER008, INTEGER009
  163.         Print STRING002 + STRING012
  164.         Inc INTEGER008
  165.         If (INTEGER008 > INTEGER003) Then
  166.             STRING015 = ""
  167.             STRING016 = ""
  168.             STRING009 = ScrText(INTEGER001, INTEGER009, INTEGER003 - INTEGER001 + 1, 0)
  169.             If (Mid(STRING009, Len(STRING009), 1) == " ") INTEGER008 = INTEGER001
  170.             If (Mid(STRING009, Len(STRING009), 1) == " ") Goto LABEL017
  171.             INTEGER012 = Len(STRING009)
  172.             INTEGER013 = 1
  173.             :LABEL013
  174.             If (STRING015 == " ") Goto LABEL014
  175.             STRING015 = Mid(STRING009, INTEGER012, 1)
  176.             If (!(STRING015 == " ")) STRING016 = STRING016 + STRING015
  177.             Dec INTEGER012
  178.             Goto LABEL013
  179.             :LABEL014
  180.             INTEGER013 = Len(STRING016)
  181.             If (INTEGER013 == INTEGER003 - INTEGER001 + 1) Then
  182.                 INTEGER008 = INTEGER001
  183.                 Goto LABEL017
  184.             Endif
  185.             AnsiPos INTEGER003 - INTEGER013, INTEGER009
  186.             For INTEGER006 = INTEGER003 - INTEGER013 To INTEGER003
  187.                 Print " "
  188.             Next
  189.             If (INTEGER009 == INTEGER004) Then
  190.                 STRING014 = ScrText(INTEGER001, INTEGER004, INTEGER003 - INTEGER001 + 1, 1)
  191.                 INTEGER010 = INTEGER001
  192.                 INTEGER011 = INTEGER002
  193.                 AnsiPos INTEGER010, INTEGER011
  194.                 Print STRING002
  195.                 :LABEL015
  196.                 If (INTEGER011 > INTEGER004) Goto LABEL016
  197.                 Print STRING008
  198.                 Inc INTEGER011
  199.                 AnsiPos INTEGER010, INTEGER011
  200.                 Goto LABEL015
  201.                 :LABEL016
  202.                 AnsiPos INTEGER001, INTEGER002
  203.                 Print STRING014
  204.                 INTEGER009 = INTEGER002
  205.             Endif
  206.             AnsiPos INTEGER001, INTEGER009 + 1
  207.             INTEGER013 = Len(STRING016)
  208.             While (INTEGER013 > 0) Do
  209.                 Print Mid(STRING016, INTEGER013, 1)
  210.                 Dec INTEGER013
  211.             EndWhile
  212.             INTEGER008 = INTEGER001 + Len(STRING016)
  213.             :LABEL017
  214.             Inc INTEGER009
  215.             If (INTEGER009 > INTEGER004) Then
  216.                 STRING014 = ScrText(INTEGER001, INTEGER004, INTEGER003 - INTEGER001 + 1, 1)
  217.                 INTEGER010 = INTEGER001
  218.                 INTEGER011 = INTEGER002
  219.                 AnsiPos INTEGER010, INTEGER011
  220.                 Print STRING002
  221.                 :LABEL018
  222.                 If (INTEGER011 > INTEGER004) Goto LABEL019
  223.                 Print STRING008
  224.                 Inc INTEGER011
  225.                 AnsiPos INTEGER010, INTEGER011
  226.                 Goto LABEL018
  227.                 :LABEL019
  228.                 AnsiPos INTEGER001, INTEGER002
  229.                 Print STRING014
  230.                 INTEGER009 = INTEGER002 + 1
  231.             Endif
  232.             AnsiPos INTEGER008, INTEGER009
  233.         Endif
  234.     Endif
  235.     If (STRING013 == "USER") Then
  236.         If (STRING011 == Chr(9)) Return
  237.         If (STRING011 == Chr(7)) Return
  238.         If (STRING011 == Chr(27)) Goto LABEL029
  239.         If (STRING011 == Chr(13)) Then
  240.             STRING009 = ScrText(INTEGER001, INTEGER009, INTEGER003 - INTEGER001 + 1, 0)
  241.             If (Upper(Mid(STRING009, 1, 3)) == "/Q ") Goto LABEL029
  242.             If (Upper(Mid(STRING009, 1, 6)) == "/PAGE ") Print "@BEEP@"
  243.             If (Upper(Mid(STRING009, 1, 5)) == "/BYE ") Goto LABEL030
  244.             INTEGER008 = INTEGER001
  245.             Inc INTEGER009
  246.             If (INTEGER009 > INTEGER004) Then
  247.                 STRING014 = ScrText(INTEGER001, INTEGER004, INTEGER003 - INTEGER001 + 1, 1)
  248.                 INTEGER010 = INTEGER001
  249.                 INTEGER011 = INTEGER002
  250.                 AnsiPos INTEGER010, INTEGER011
  251.                 Print STRING003
  252.                 :LABEL020
  253.                 If (INTEGER011 > INTEGER004) Goto LABEL021
  254.                 Print STRING008
  255.                 Inc INTEGER011
  256.                 AnsiPos INTEGER010, INTEGER011
  257.                 Goto LABEL020
  258.                 :LABEL021
  259.                 AnsiPos INTEGER001, INTEGER002
  260.                 Print STRING014
  261.                 INTEGER009 = INTEGER002 + 1
  262.             Endif
  263.             AnsiPos INTEGER008, INTEGER009
  264.             Return
  265.         Endif
  266.         If (STRING011 == Chr(8)) Then
  267.             Dec INTEGER008
  268.             If (INTEGER008 < INTEGER001) INTEGER008 = INTEGER001
  269.             AnsiPos INTEGER008, INTEGER009
  270.             Print STRING003 + " " + Chr(8)
  271.             Return
  272.         Endif
  273.         AnsiPos INTEGER008, INTEGER009
  274.         Print STRING003 + STRING011
  275.         Inc INTEGER008
  276.         If (INTEGER008 > INTEGER003) Then
  277.             STRING015 = ""
  278.             STRING016 = ""
  279.             STRING009 = ScrText(INTEGER001, INTEGER009, INTEGER003 - INTEGER001 + 1, 0)
  280.             If (Mid(STRING009, Len(STRING009), 1) == " ") INTEGER008 = INTEGER001
  281.             If (Mid(STRING009, Len(STRING009), 1) == " ") Goto LABEL026
  282.             INTEGER012 = Len(STRING009)
  283.             INTEGER013 = 1
  284.             :LABEL022
  285.             If (STRING015 == " ") Goto LABEL023
  286.             STRING015 = Mid(STRING009, INTEGER012, 1)
  287.             If (!(STRING015 == " ")) STRING016 = STRING016 + STRING015
  288.             Dec INTEGER012
  289.             Goto LABEL022
  290.             :LABEL023
  291.             INTEGER013 = Len(STRING016)
  292.             If (INTEGER013 == INTEGER003 - INTEGER001 + 1) Then
  293.                 INTEGER008 = INTEGER001
  294.                 Goto LABEL026
  295.             Endif
  296.             AnsiPos INTEGER003 - INTEGER013, INTEGER009
  297.             For INTEGER006 = INTEGER003 - INTEGER013 To INTEGER003
  298.                 Print " "
  299.             Next
  300.             If (INTEGER009 == INTEGER004) Then
  301.                 STRING014 = ScrText(INTEGER001, INTEGER004, INTEGER003 - INTEGER001 + 1, 1)
  302.                 INTEGER010 = INTEGER001
  303.                 INTEGER011 = INTEGER002
  304.                 AnsiPos INTEGER010, INTEGER011
  305.                 Print STRING003
  306.                 :LABEL024
  307.                 If (INTEGER011 > INTEGER004) Goto LABEL025
  308.                 Print STRING008
  309.                 Inc INTEGER011
  310.                 AnsiPos INTEGER010, INTEGER011
  311.                 Goto LABEL024
  312.                 :LABEL025
  313.                 AnsiPos INTEGER001, INTEGER002
  314.                 Print STRING014
  315.                 INTEGER009 = INTEGER002
  316.             Endif
  317.             AnsiPos INTEGER001, INTEGER009 + 1
  318.             INTEGER013 = Len(STRING016)
  319.             While (INTEGER013 > 0) Do
  320.                 Print Mid(STRING016, INTEGER013, 1)
  321.                 Dec INTEGER013
  322.             EndWhile
  323.             INTEGER008 = INTEGER001 + Len(STRING016)
  324.             :LABEL026
  325.             Inc INTEGER009
  326.             If (INTEGER009 > INTEGER004) Then
  327.                 STRING014 = ScrText(INTEGER001, INTEGER004, INTEGER003 - INTEGER001 + 1, 1)
  328.                 INTEGER010 = INTEGER001
  329.                 INTEGER011 = INTEGER002
  330.                 AnsiPos INTEGER010, INTEGER011
  331.                 Print STRING003
  332.                 :LABEL027
  333.                 If (INTEGER011 > INTEGER004) Goto LABEL028
  334.                 Print STRING008
  335.                 Inc INTEGER011
  336.                 AnsiPos INTEGER010, INTEGER011
  337.                 Goto LABEL027
  338.                 :LABEL028
  339.                 AnsiPos INTEGER001, INTEGER002
  340.                 Print STRING014
  341.                 INTEGER009 = INTEGER002 + 1
  342.             Endif
  343.             AnsiPos INTEGER008, INTEGER009
  344.         Endif
  345.     Endif
  346.     Return
  347.     :LABEL029
  348.     If (Exist(PPEPath() + STRING006)) DispFile PPEPath() + STRING006, 1
  349.     Delay INTEGER007
  350.     RestScrn
  351.     End
  352.     :LABEL030
  353.     Cls
  354.     Hangup
  355.     End
  356.  
  357. ;------------------------------------------------------------------------------
  358. ;
  359. ; Usage report (before postprocessing)
  360. ;
  361. ; ■ Statements used :
  362. ;
  363. ;    2       End
  364. ;    1       Cls
  365. ;    64      Goto 
  366. ;    83      Let 
  367. ;    28      Print 
  368. ;    59      If 
  369. ;    3       DispFile 
  370. ;    1       FOpen 
  371. ;    1       FClose 
  372. ;    7       FGet 
  373. ;    1       Hangup
  374. ;    2       Gosub 
  375. ;    9       Return
  376. ;    2       Delay 
  377. ;    20      Inc 
  378. ;    6       Dec 
  379. ;    31      AnsiPos 
  380. ;    1       SaveScrn
  381. ;    1       RestScrn
  382. ;
  383. ;
  384. ; ■ Functions used :
  385. ;
  386. ;    43      +
  387. ;    18      -
  388. ;    41      ==
  389. ;    5       <
  390. ;    3       <=
  391. ;    15      >
  392. ;    6       >=
  393. ;    39      !
  394. ;    7       &&
  395. ;    7       ||
  396. ;    15      Len(
  397. ;    6       Upper()
  398. ;    21      Mid()
  399. ;    16      Chr()
  400. ;    7       PPEPath()
  401. ;    3       Exist()
  402. ;    1       KInkey()
  403. ;    1       MInkey()
  404. ;    10      ScrText()
  405. ;
  406. ;------------------------------------------------------------------------------
  407. ;
  408. ; Analysis flags : B
  409. ;
  410. ; B - Brute hangup ■ 1
  411. ;     Program hangup without notification. This may be a good way to
  412. ;     disconnect a user, but if used randomly, may be very nasty
  413. ;     ■ Search for : HANGUP, DTROFF
  414. ;
  415. ;------------------------------------------------------------------------------
  416. ;
  417. ; Postprocessing report
  418. ;
  419. ;    3       For/Next
  420. ;    2       While/EndWhile
  421. ;    18      If/Then or If/Then/Else
  422. ;    0       Select Case
  423. ;
  424. ;------------------------------------------------------------------------------
  425. ;                 AEGiS Corp - Break the routines, code against the machines!
  426. ;------------------------------------------------------------------------------
  427.