home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / S / SAC-WHO6.ZIP / WHO.PPE (.txt) < prev   
PCBoard Programming Language Executable  |  1995-10-29  |  17KB  |  788 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 3.O1 (Encryption type I) - 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   STRING001
  32.     String   STRING002
  33.     String   STRING003
  34.     String   STRING004
  35.     String   TSTRING005(10)
  36.     String   STRING006
  37.     String   TSTRING007(9)
  38.     String   TSTRING008(8)
  39.     String   STRING009
  40.     String   STRING010
  41.     String   STRING011
  42.     String   STRING012
  43.     String   STRING013
  44.     String   STRING014
  45.     String   STRING015
  46.     String   STRING016
  47.     String   STRING017
  48.     String   STRING018
  49.     String   STRING019
  50.     String   STRING020
  51.     String   STRING021
  52.     String   STRING022
  53.     String   STRING023
  54.     String   STRING024
  55.     String   STRING025
  56.     String   STRING026
  57.     String   STRING027
  58.     String   STRING028
  59.     String   STRING029
  60.     BigStr   TBIGSTR001(10)
  61.     BigStr   TBIGSTR002(10)
  62.     BigStr   TBIGSTR003(10)
  63.     BigStr   TBIGSTR004(200)
  64.     Declare  Procedure PROC001(String STRING030)
  65.     Declare  Procedure PROC002()
  66.  
  67. ;------------------------------------------------------------------------------
  68.  
  69.     If (AnsiOn()) Goto LABEL001
  70.     Newline
  71.     PrintLn "SAC-WHO CAN NOT RUN WiTHOUT ANSi!"
  72.     Beep
  73.     Newline
  74.     Wait
  75.     Stop
  76.     :LABEL001
  77.     Cls
  78.     If (Exist(PPEPath() + "SAC-WHO.CF" + String(PcbNode()))) Goto LABEL002
  79.     Newline
  80.     PrintLn "@X06FiLE SAC-WHO.CF" + String(PcbNode()) + " NOT FOUND, WHERE iS iT..???"
  81.     Newline
  82.     Beep
  83.     Wait
  84.     Stop
  85.     :LABEL002
  86.     StartDisp 1
  87.     STRING025 = PPEPath() + "OLM" + String(PcbNode()) + ".$$$"
  88.     If (Exist(STRING025)) Delete STRING025
  89.     INTEGER001 = FileInf(PPEPath() + "WHO.PPE", 2) / 1000
  90.     RdUNet PcbNode()
  91.     WrUNet PcbNode(), "D", UN_Name(), UN_City(), UN_Name() + " - SAC-WHO", ""
  92.     FOpen 1, PPEPath() + "SAC-WHO.CF" + String(PcbNode()), 0, 0
  93.     FGet 1, INTEGER002
  94.     If (!InStr("123456789", INTEGER002)) INTEGER002 = 3
  95.     If (INTEGER002 > MaxNode()) INTEGER002 = MaxNode()
  96.     If (INTEGER002 < 2) INTEGER002 = 2
  97.     If (INTEGER002 > 9) INTEGER002 = 9
  98.     BOOLEAN001 = 0
  99.     If (INTEGER002 > 5) BOOLEAN001 = 1
  100.     FGet 1, STRING002
  101.     If (Len(StripAtx(STRING002)) > 31) STRING002 = Left(StripAtx(STRING002), 31)
  102.     If (INTEGER001 <> 35) Gosub LABEL026
  103.     INTEGER001 = Len(StripAtx(STRING002)) / 2
  104.     STRING023 = STRING023 + Left("───────────────", 15 - INTEGER001)
  105.     STRING023 = STRING023 + " " + STRING002 + " @X08"
  106.     INTEGER001 = Len(StripAtx(STRING023))
  107.     STRING023 = STRING023 + Left("────────────────", 35 - INTEGER001)
  108.     STRING023 = "@X0F┌───@X07─@X0F─@X07── ─@X08──  ────────" + STRING023 + "───@X0BT@X03i@X08ME: @X03" + String(Time()) + "@X07@X0F──┐"
  109.     INTEGER001 = 1
  110.     :LABEL003
  111.     If (INTEGER001 > INTEGER002) Goto LABEL004
  112.     FGet 1, TSTRING007(INTEGER001)
  113.     FGet 1, TSTRING008(INTEGER001)
  114.     Inc INTEGER001
  115.     Goto LABEL003
  116.     :LABEL004
  117.     FClose 1
  118.     If (ReadLine(PCBDat(), 90) == "0") Goto LABEL015
  119.     PrintLn "H" + STRING023
  120.     PrintLn "@X07│@X08N@X03d@X0B#@X07┬@X0F─@X07─ @X0F─@X07─  @X08Na@X03M@X0Be/a@X03Li@X08aS   @X07─ ─@X0F─ @X07─@X0F─@X07┬ @X08a@X03C@X0BTi@X03o@X08n @X0F───@X07─@X0F─@X07── ─@X08──  ─ ──────────────────────@X07┤"
  121.     PrintLn " @X08──@X07─@X0F┌─@X07─@X08─  ─────────────────  ─@X07─@X0F─┐@X08─  ──@X07─ ──@X0F─@X07─@X0F─────@X07─@X0F─@X07── ─@X08── @X07─ ──@X0F─@X07─@X0F───@X07─@X0F─@X07── ─@X08──  ─"
  122.     INTEGER003 = 4
  123.     INTEGER001 = 1
  124.     :LABEL005
  125.     If (INTEGER001 == INTEGER002) Goto LABEL006
  126.     Gosub LABEL011
  127.     Inc INTEGER001
  128.     If (BOOLEAN001) Goto LABEL005
  129.     AnsiPos 1, INTEGER003 - 1
  130.     Print "@X07│@X08──@X07─@X0F┌─@X07─@X0F───@X07─@X0F─@X07── ─@X08── @X07─ ──@X0F─@X07─@X0F───@X07──@X0F──┘@X08─  ──@X07─ ──@X0F─@X07─@X0F─────@X07─@X0F─@X07── ─@X08── @X07─ ──@X0F─@X07─@X0F───@X07─@X0F─@X07── ─@X08──  ─│"
  131.     Goto LABEL005
  132.     :LABEL006
  133.     Gosub LABEL011
  134.     If (!BOOLEAN001) Dec INTEGER003
  135.     AnsiPos 1, INTEGER003
  136.     PrintLn "@X07│ │ @X0F└─┴───@X07─@X0F─@X07── ─@X08── @X07─ ──@X0F─@X07─@X0F───@X07──@X0F──┘@X08─  ──@X07─ ──@X0F─@X07─@X0F─────@X07─@X0F─@X07── ─@X08── @X07─ ──@X0F─@X07─@X0F───@X07─@X0F─@X07── ─@X08──  ─@X07│"
  137.     STRING004 = GetY()
  138.     PrintLn "@X08  ├@X0F[ ] @X07NoDE # To @X0FVIEWC@X03▄▀@X01▄███▀@X03▄▀  @X08v0.6b  @X03▄▄▄"
  139.     PrintLn "@X07│ ├@X08[@X0BB@X08] @X07to @X0FENTER @X07Broadcast@X08-@X0FMSG@X07!              @X03▄▀▀▀▄   ▄▄ ▄▄▄█ @X01███ @X03█   ▄▄▄ ▄▀▀@X09▄▄▄@X07│"
  140.     PrintLn "@X0F│ @X07└@X08[@X0BE@X03SC@X08]      @X07To @X0FEXIT                     @X03▄▀@X01▄███ @X03█▄▀@X01▄▄@X03▀▌@X09▄▄▄@X01▐██ @X03█▄ ▄▀@X01▄▄▄@X03▀@X09▄@X19▓@X09▀▀@X19▓▒░@X07"
  141.     PrintLn "C@X03▀▄@X01▀@X19░░@X01██ @X03▀@X01▄▓▓▓▄@X03▐@X09▐@X19▓▒@X01▐@X19░@X01█ ▄▄@X03▀@X09▄@X19▓▒░@X01██▄   ▄@X19░@X01▀"
  142.     PrintLn "@X07│C@X03█ @X19▓░@X01█▄█▓█▓▓▓▄ @X19▒@X01▌@X19▒░░@X01█▀██@X09▐@X19▓@X09▄ @X19░@X01██ ▄@X19░@X01▀@X03▄@X08R"
  143.     PrintLn "@X0F└─@X08 @X04M@X0CO@X0EN@X0FS@X0ET@X0CE@X04R@X08/@X0BS@X03A@X08C @X0F─@X07─@X0F─@X07── ─@X08──  ─ ──────────── @X03█ @X09█@X19▓▒░@X01▀  ██▓█@X19░░@X09▐@X19▓▒@X01▀@X07─ @X01▄@X19░@X01▌@X09█@X19▓▒░@X01█▀ ▀▀ @X03█@X08V"
  144.     PrintLn "C@X03▀@X0B▄@X09▀▀▀ @X0B▄▀▄▄@X01▀█@X19░@X01▀ @X09██ ▄▄@X19▓▒@X01▀ @X09▀▀@X01▀@X0B▄ @X01▄▄▄ @X03█"
  145.     PrintLn "C@X0B▀▀▀▀    ▀▄▄▀▀▄▄▀▄▄▄▄▀▀▀▀▀ ▀▄▄▄▀@X07"
  146.     INTEGER005 = GetY()
  147.     :LABEL007
  148.     INTEGER009 = 5
  149.     INTEGER010 = STRING004
  150.     AnsiPos INTEGER009, INTEGER010
  151.     :LABEL008
  152.     INTEGER003 = 4
  153.     INTEGER001 = 1
  154.     :LABEL009
  155.     STRING006 = Inkey()
  156.     If (STRING006 == "") Then
  157.         If (INTEGER001 > INTEGER002) Goto LABEL008
  158.         Gosub LABEL011
  159.         Inc INTEGER001
  160.         Goto LABEL009
  161.     Endif
  162.     If (Upper(STRING006) == "B") Goto LABEL010
  163.     If ((STRING006 == Chr(27)) || (STRING006 == Chr(13))) Goto LABEL014
  164.     If (!InStr("123456789", STRING006)) Goto LABEL009
  165.     If (STRING006 > INTEGER002) Goto LABEL009
  166.     RdUNet STRING006
  167.     If (UN_Name() == "") Goto LABEL009
  168.     AnsiPos 5, STRING004
  169.     Print STRING006
  170.     Goto LABEL016
  171.     :LABEL010
  172.     Goto LABEL035
  173.     :LABEL011
  174.     RdUNet INTEGER001
  175.     TSTRING005(INTEGER001) = ""
  176.     If (!(UN_Name() == "")) TSTRING005(INTEGER001) = "@X09" + UN_Name()
  177.     Select Case (UN_Stat())
  178.         Case ""
  179.             TSTRING005(INTEGER001) = "@X08Not Available"
  180.         Case " ", "V"
  181.             TSTRING005(INTEGER001) = "@X0FNo CALLER THiS NoDE"
  182.         Case Else
  183.             If (UN_Stat() == "Y") Then
  184.                 TSTRING005(INTEGER001) = "@X08NoDE OFFLiNE"
  185.         End Select
  186.         TBIGSTR001(INTEGER001) = Space(43)
  187.         Goto LABEL012
  188.     Endif
  189.     TBIGSTR001(INTEGER001) = "@X07UNKNoWN ACTiViTY"
  190.     If (PcbNode() == INTEGER001) Then
  191.         TBIGSTR001(INTEGER001) = "@X07THiS iS YoUR NoDE ..!!! "
  192.         If (Exist(STRING025)) PROC002()
  193.     Else
  194.         Select Case (UN_Stat())
  195.             Case "A"
  196.                 TBIGSTR001(INTEGER001) = "@X07AVAiLABLE FoR CHAT"
  197.             Case "U", "Q"
  198.                 TBIGSTR001(INTEGER001) = "@X04UNAVAiLABLE FoR CHAT"
  199.             Case "O"
  200.                 TBIGSTR001(INTEGER001) = "@X07LoGGiNG iN"
  201.             Case "S"
  202.                 TBIGSTR001(INTEGER001) = "@X07ANSWERiNG AN iNFoFoRM"
  203.             Case "B"
  204.                 TBIGSTR001(INTEGER001) = "@X07oUT To oPERATiNG SYSTEM"
  205.             Case "D"
  206.                 STRING003 = Right(String(UN_Oper()), Len(String(UN_Oper())) - Len(UN_Name()) + 3)
  207.                 TBIGSTR001(INTEGER001) = "@X07INSiDE DOOR: " + STRING003
  208.                 If (Len(TBIGSTR001(INTEGER001)) > 43) TBIGSTR001(INTEGER001) = "@X07USER iN A DooR"
  209.             Case "C"
  210.                 TBIGSTR001(INTEGER001) = "@X07ChATTiNG WiTH SYSoP"
  211.             Case "G"
  212.                 TBIGSTR001(INTEGER001) = "@X07CHATTiNG WiTH GRoUP"
  213.             Case "M"
  214.                 TBIGSTR001(INTEGER001) = "@X07RCVD BRoADCAST MSG"
  215.             Case "E"
  216.                 STRING003 = RTrim(LTrim(Left(UN_Oper(), InStr(UN_Oper(), " ") - 1), "("), ")")
  217.                 STRING003 = Right(UN_Oper(), Len(UN_Oper()) - Len(STRING003) + 6)
  218.                 If (Left(STRING003, 1) == "@") Then
  219.                     STRING003 = "MACRO"
  220.                 Endif
  221.                 TBIGSTR001(INTEGER001) = "@X07ENTER MSG To: " + STRING003
  222.                 If (Len(TBIGSTR001(INTEGER001)) > 43) TBIGSTR001(INTEGER001) = "@X07ENTERiNG MESSAGE"
  223.             Case "P"
  224.                 TBIGSTR001(INTEGER001) = "@X07PAGiNG SYSoP"
  225.             Case "W"
  226.                 TBIGSTR001(INTEGER001) = "@X07NoDE DRoPPED To oPERATiNG SYSTEM"
  227.             Case "R"
  228.                 TBIGSTR001(INTEGER001) = "@X07RECYCLiNG NoDE"
  229.             Case "L"
  230.                 TBIGSTR001(INTEGER001) = "@X07AUToLoGoFF SEQUENCE"
  231.             Case "X"
  232.                 TBIGSTR001(INTEGER001) = "@X07DRoP To DoS PENDiNG"
  233.             Case "F"
  234.                 STRING003 = LTrim(LTrim(LTrim(LTrim(UN_Oper(), "F"), " "), "V"), " ")
  235.                 TBIGSTR001(INTEGER001) = "@X07FiLE ViEWiNG: " + Left(STRING003, 12)
  236.                 If (Len(TBIGSTR001(INTEGER001)) > 43) TBIGSTR001(INTEGER001) = "@X07ViEWiNG A FiLE"
  237.             Case "N"
  238.                 TBIGSTR001(INTEGER001) = "@X07RUNNiNG EVENT"
  239.             Case "Z"
  240.                 TBIGSTR001(INTEGER001) = "@X04NoDE iS OFFLiNE"
  241.             Case "T"
  242.                 STRING001 = Left(UN_Oper(), 3)
  243.                 If (STRING001 == "(U)") Then
  244.                     If (Left(UN_Oper(), 15) == "(U) ... (Z) ...") Then
  245.                         TBIGSTR001(INTEGER001) = "@X0APUMPiNG FiLES WiTH Z-MoDEM"
  246.                         Goto LABEL012
  247.                     Endif
  248.                     If (Left(UN_Oper(), 15) == "(U) ... (H) ...") Then
  249.                         TBIGSTR001(INTEGER001) = "@X0APUMPiNG FiLES WiTH HiGH SPEED LiNK"
  250.                         Goto LABEL012
  251.                     Endif
  252.                     TBIGSTR001(INTEGER001) = "@X0APuMPiNG FiLE/s"
  253.                     Goto LABEL012
  254.                 Endif
  255.                 If (STRING001 == "(D)") Then
  256.                     STRING003 = LTrim(LTrim(LTrim(LTrim(UN_Oper(), "("), "D"), ")"), " ")
  257.                     STRING001 = Left(STRING003, InStr(STRING003, " ") - 1)
  258.                     STRING003 = Right(UN_Oper(), Len(UN_Oper()) - Len(STRING001) + 5)
  259.                     If (Left(STRING003, 2) == "(Z") Then
  260.                         TBIGSTR001(INTEGER001) = "@X0CLEECHiNG FiLES WiTH Z-MoDEM"
  261.                         Goto LABEL012
  262.                     Endif
  263.                     If (Left(STRING003, 2) == "(H") Then
  264.                         TBIGSTR001(INTEGER001) = "@X0CLEECHiNG FiLES WiTH HiGH SPEED LiNK"
  265.                         Goto LABEL012
  266.                     Endif
  267.                     TBIGSTR001(INTEGER001) = "@X0CLEECHiNG FiLE/s"
  268.                     Goto LABEL012
  269.                 Endif
  270.                 TBIGSTR001(INTEGER001) = "@X07START FiLE TRANSFER"
  271.             Endif
  272.     End Select
  273.     :LABEL012
  274.     TBIGSTR002(INTEGER001) = "@X0F│ @X07" + String(INTEGER001) + "@X08@POS:5@@X0F│@X08─@X07┐" + Space(12 - Len(StripAtx(TSTRING005(INTEGER001))) / 2) + TSTRING005(INTEGER001) + "@POS:33@@X0F│ " + TBIGSTR001(INTEGER001) + "@POS:79@@X08│"
  275.     If (TBIGSTR002(INTEGER001) == TBIGSTR003(INTEGER001)) Goto LABEL013
  276.     TBIGSTR003(INTEGER001) = TBIGSTR002(INTEGER001)
  277.     AnsiPos 1, INTEGER003
  278.     Print TBIGSTR002(INTEGER001)
  279.     :LABEL013
  280.     Inc INTEGER003
  281.     If (!BOOLEAN001) Inc INTEGER003
  282.     If (INTEGER004 == Time()) Return
  283.     INTEGER004 = Time()
  284.     AnsiPos 68, 1
  285.     Print "@X03" + String(Time())
  286.     Color 7
  287.     AnsiPos INTEGER009, INTEGER010
  288.     Return
  289.     :LABEL014
  290.     Cls
  291.     StartDisp 2
  292.     PrintLn "@X08Thank you for using SAC Products."
  293.     Newline
  294.     End
  295.     :LABEL015
  296.     Newline
  297.     PrintLn "@X0F■ @X09SoRRY! No ACTioN oN oTHER NoDEs!! @X0F■"
  298.     Newline
  299.     Goto LABEL014
  300.     :LABEL016
  301.     If (Exist(TSTRING007(STRING006))) Then
  302.         AnsiPos 1, INTEGER005
  303.         SaveScrn
  304.         Cls
  305.         STRING016 = PPEPath() + "DSZN" + STRING006 + ".$$$"
  306.         FOpen 1, TSTRING007(STRING006), 0, 0
  307.         FSeek 1, 9, 0
  308.         FRead 1, STRING010, 2
  309.         FSeek 1, 2, 1
  310.         FRead 1, STRING011, 5
  311.         FRead 1, STRING012, 5
  312.         FSeek 1, 33, 1
  313.         FRead 1, STRING013, 5
  314.         FClose 1
  315.         If (Upper(STRING012) == "LOCAL") Goto LABEL017
  316.         If (STRING010 == "-1") Then
  317.             STRING010 = "E"
  318.         Else
  319.             Cls
  320.             Newline
  321.             PrintLn "@X06THERE'S SOMETHiNG WRONG WiTH THE CONFiG! PLEASE iNFORM SYSOP..!!!"
  322.             Newline
  323.             Beep
  324.             Wait
  325.             End
  326.         Endif
  327.         :LABEL017
  328.         STRING010 = ""
  329.     Endif
  330.     If (STRING011 == "11520") STRING011 = "115200"
  331.     If (STRING012 == "11520") STRING012 = "115200"
  332.     If ((STRING011 == "") || (STRING011 == Space(5))) Then
  333.         Goto LABEL018
  334.     Endif
  335.     STRING014 = RTrim(STRING012, " ") + STRING010 + "/" + RTrim(STRING011, " ")
  336.     Goto LABEL018
  337.     STRING014 = "UNKNoWN"
  338.     :LABEL018
  339.     RdUNet STRING006
  340.     GetAltUser U_RecNum(UN_Name())
  341.     PrintLn " @X08╞───────────────────────────────═╗"
  342.     PrintLn " @X08│ @X07NAME@X08: @X0F" + String(UN_Name()) + "@POS:35@@X08│"
  343.     PrintLn " @X08│ @X07CiTY@X08: @X0F" + String(UN_City()) + "@POS:35@@X08│"
  344.     PrintLn " @X08╞────────────────────────────────╜"
  345.     PrintLn " @X08│ @X07MODEM CONNECT@X08: @X09" + STRING014 + "@POS:35@@X08│"
  346.     PrintLn " @X08│ @X07ONELiNE SiNCE@X08: @X09" + STRING013 + "@POS:35@@X08│"
  347.     PrintLn " @X08│────────────────────────────────│"
  348.     PrintLn " @X08│ @X07USER LAST SCANNED@X08: @X09" + String(U_LDir()) + "@POS:35@@X08│"
  349.     PrintLn " @X08│ @X07USER LAST DATE ON@X08: @X09" + String(U_LDate()) + "@POS:35@@X08│"
  350.     PrintLn " @X08│ @X07USER LAST TiME ON@X08: @X09" + String(U_LTime()) + "@POS:35@@X08│"
  351.     PrintLn " @X08│ @X07TOTAL CALLS TO SYSTEM@X08: @X09" + String(U_Logons()) + "@POS:35@@X08│"
  352.     PrintLn " @X08│────────────────────────────────│"
  353.     PrintLn " @X08│ @X07FiLES UPPED@X08: @X09" + String(U_Ful()) + "@POS:35@@X08│"
  354.     PrintLn " @X08│ @X07BYTES UPPED@X08: @X09" + String(U_Bul()) + "@POS:35@@X08│"
  355.     PrintLn " @X08│ @X07FiLES DOWNED@X08: @X09" + String(U_Fdl()) + "@POS:35@@X08│"
  356.     PrintLn " @X08│ @X07BYTES DOWNED@X08: @X09" + String(U_Bdl()) + "@POS:35@@X08│"
  357.     STRING015 = U_BdlDay()
  358.     If (STRING015 < 1) STRING015 = 0
  359.     PrintLn " @X08│ @X07BYTES DOWNED TODAY@X08: @X09" + STRING015 + "@POS:35@@X08│"
  360.     PrintLn " @X08╘───────────────────────────────═╛"
  361.     Print "8H"
  362.     If (UN_Stat() == "T") Goto LABEL019
  363.     PrintLn "@X08╞───────────────────────────────────────═╗"
  364.     PrintLn "C@X08│           @X07NO FiLE-TRANSFER!            @X08│"
  365.     Print "C@X08╘────────────────────────────────────────╛1H"
  366.     Goto LABEL034
  367.     :LABEL019
  368.     PrintLn "@X08╞───────────────────────────────────────═╗"
  369.     PrintLn "C@X08│          @X0FDOiNG FiLE-TRANSFER!          @X08│"
  370.     PrintLn "C@X08╘────────────────────────────────────────╛"
  371.     PrintLn "C@X08╞───────────────────────────────────────═╗"
  372.     INTEGER008 = 5
  373.     STRING020 = 1
  374.     If (Exist(TSTRING008(STRING006))) Then
  375.         If (FileInf(TSTRING008(STRING006), 4) == 0) Goto LABEL024
  376.         Copy TSTRING008(STRING006), STRING016
  377.         FOpen 1, STRING016, 2, 0
  378.         :LABEL020
  379.         FGet 1, STRING018
  380.         If (Ferr(1)) Goto LABEL023
  381.         Inc INTEGER008
  382.         If (INTEGER008 == 22) Gosub LABEL032
  383.         STRING017 = Left(STRING018, 1)
  384.         If (STRING017 == Chr(32)) Goto LABEL020
  385.         STRING019 = "■■■■■■"
  386.         If ((STRING017 == "H") || (STRING017 == "Z")) Then
  387.             STRING019 = "@X02PUMPED"
  388.             Goto LABEL021
  389.         Endif
  390.         If ((STRING017 == "h") || (STRING017 == "z")) Then
  391.             STRING019 = "@X04SENDED"
  392.             Goto LABEL021
  393.         Endif
  394.         If (STRING017 == "V") Then
  395.             STRING019 = "@X0FVERiFY"
  396.             Goto LABEL021
  397.         Endif
  398.         If (Upper(STRING017) == "E") Then
  399.             STRING019 = "@X0CERRoR!"
  400.             Goto LABEL021
  401.         Endif
  402.         If (Upper(STRING017) == "L") Then
  403.             STRING019 = "@X04 LoST "
  404.         Endif
  405.         :LABEL021
  406.         STRING018 = Right(STRING018, Len(STRING018) - 1)
  407.         STRING018 = LTrim(STRING018, Chr(32))
  408.         Gosub LABEL022
  409.         STRING021 = STRING017 / 1024
  410.         STRING017 = Left(STRING018, InStr(STRING018, ":") - 2)
  411.         STRING018 = Right(STRING018, Len(STRING018) - Len(STRING017))
  412.         STRING017 = Left(STRING018, InStr(STRING018, Chr(32)) - 1)
  413.         If (STRING021 > 999) STRING021 = Left(STRING021, Len(STRING021) - 3) + "," + Right(STRING021, 3)
  414.         STRING021 = Replace(STRING021, "0", "O")
  415.         STRING021 = Right("·········@X07 " + STRING021, 14)
  416.         STRING022 = "@X08│" + Space(3 - Len(STRING020)) + "[@X07" + STRING020 + "@X08] [" + STRING019 + "@X08] "
  417.         PROC001(STRING017)
  418.         TBIGSTR004(STRING020) = STRING024
  419.         STRING024 = Replace(Replace(Replace(STRING024, "I", "i"), "X", "x"), "O", "o")
  420.         STRING024 = "@X0F" + Left(STRING024 + " @X08·············", 17)
  421.         STRING022 = STRING022 + STRING024 + STRING021 + "k @X08│"
  422.         PrintLn "C" + STRING022
  423.         Inc STRING020
  424.         Goto LABEL020
  425.         :LABEL022
  426.         STRING017 = Left(STRING018, InStr(STRING018, Chr(32)) - 1)
  427.         STRING018 = Right(STRING018, Len(STRING018) - Len(STRING017) + 1)
  428.         STRING017 = LTrim(STRING017, Chr(32))
  429.         Return
  430.         :LABEL023
  431.         FClose 1
  432.         Delete STRING016
  433.     Endif
  434.     :LABEL024
  435.     STRING009 = TSTRING007(STRING006)
  436.     :LABEL025
  437.     If (InStr(STRING009, "\") <> 0) Then
  438.         STRING009 = Right(STRING009, Len(STRING009) - InStr(STRING009, "\"))
  439.         Goto LABEL025
  440.         :LABEL026
  441.         FOpen 2, PPEPath() + "WHO.PPE", 2, 0
  442.         FSeek 2, 40, 0
  443.         FWrite 2, Chr(255), 1
  444.         FClose 2
  445.         Return
  446.     Endif
  447.     STRING009 = Left(TSTRING007(STRING006), Len(TSTRING007(STRING006)) - Len(STRING009)) + "FLIST." + STRING006
  448.     If (Exist(STRING009)) Then
  449.         INTEGER006 = STRING020
  450.         FOpen 2, STRING009, 0, 0
  451.         :LABEL027
  452.         FRead 2, STRING010, 66
  453.         If (Ferr(2)) Goto LABEL031
  454.         Inc INTEGER008
  455.         If (INTEGER008 == 22) Gosub LABEL032
  456.         STRING010 = RTrim(STRING010, Chr(32))
  457.         FRead 2, STRING011, 63
  458.         PROC001(STRING010)
  459.         INTEGER007 = 1
  460.         STRING019 = "@X042 PUMP"
  461.         :LABEL028
  462.         If (STRING024 == TBIGSTR004(INTEGER007)) Goto LABEL027
  463.         Inc INTEGER007
  464.         If (!(INTEGER007 > INTEGER006)) Goto LABEL028
  465.         STRING019 = "@X042 SEND"
  466.         If (Exist(STRING010)) Goto LABEL029
  467.         STRING021 = "■"
  468.         Goto LABEL030
  469.         :LABEL029
  470.         STRING017 = FileInf(STRING010, 4)
  471.         STRING021 = STRING017 / 1024
  472.         If (STRING021 > 999) STRING021 = Left(STRING021, Len(STRING021) - 3) + "," + Right(STRING021, 3)
  473.         STRING021 = Replace(STRING021, "0", "O")
  474.         :LABEL030
  475.         STRING021 = Right("·········@X07 " + STRING021, 14)
  476.         STRING022 = "@X08│" + Space(3 - Len(STRING020)) + "[@X07" + STRING020 + "@X08] [" + STRING019 + "@X08] "
  477.         STRING024 = Replace(Replace(Replace(STRING024, "I", "i"), "X", "x"), "O", "o")
  478.         STRING024 = "@X0F" + Left(STRING024 + " @X08·············", 17)
  479.         STRING022 = STRING022 + STRING024 + STRING021 + "k @X08│"
  480.         PrintLn "C" + STRING022
  481.         Inc STRING020
  482.         Goto LABEL027
  483.         :LABEL031
  484.         FClose 2
  485.     Endif
  486.     AnsiPos 38, GetY()
  487.     PrintLn "@X08╘───────────────────────────────────────═╛"
  488.     Newline
  489.     If (!(STRING020 > 14)) Print "1H"
  490.     Goto LABEL034
  491.     :LABEL032
  492.     Print "C@X08│         @X07PRESS ENTER TO CONTiNUE        @X08│D"
  493.     :LABEL033
  494.     If (Inkey() == "") Goto LABEL033
  495.     INTEGER008 = 1
  496.     Return
  497.     :LABEL034
  498.     Wait
  499.     RestScrn
  500.     AnsiPos 5, STRING004
  501.     Print " " + Chr(8)
  502.     Goto LABEL009
  503.     End
  504.  
  505. ;------------------------------------------------------------------------------
  506.  
  507.     Procedure PROC001(String STRING030)
  508.  
  509.     While ((InStr(STRING030, "/") <> 0) || (InStr(STRING030, "\") <> 0)) Do
  510.         STRING030 = Right(STRING030, Len(STRING030) - InStr(STRING030, "/"))
  511.         STRING030 = Right(STRING030, Len(STRING030) - InStr(STRING030, "\"))
  512.     EndWhile
  513.     STRING024 = STRING030
  514.  
  515.     EndProc
  516.  
  517.  
  518. ;------------------------------------------------------------------------------
  519.  
  520.     Procedure PROC002()
  521.  
  522.     FOpen 1, STRING025, 2, 0
  523.     FGet 1, STRING026
  524.     FClose 1
  525.     Delete STRING025
  526.     AnsiPos 2, STRING004 + 6
  527.     STRING027 = RTrim(Left(STRING026, 3), Chr(32))
  528.     Print "@X0F├@X0BR@X03e@X07cieved @X03a @X0BB@X03r@X07oadcast@X08-@X0BM@X03S@X07G @X0Bf@X03r@X07om @X0BN@X03d@X07# @X0B" + STRING027 + "@X07" + Left("───", 3 - Len(STRING027)) + "┤"
  529.     STRING026 = Right(STRING026, Len(STRING026) - 3)
  530.     AnsiPos 2, STRING004 + 7
  531.     Print "@X07└@X08@X0F" + STRING026 + "@X08" + Left("───────────────────────────────────", 35 - Len(StripAtx(STRING026))) + "┘@X07"
  532.     Beep
  533.  
  534.     EndProc
  535.  
  536.     :LABEL035
  537.     AnsiPos 2, STRING004 + 3
  538.     Print "@X0F┌@X0BE@X03n@X07ter @X0BB@X03r@X07oadcast@X08-@X0BM@X03S@X07G @X03t@X07o @X0BN@X03d@X07# @X08[ ]@X07───────┐"
  539.     AnsiPos 2, STRING004 + 4
  540.     Print "@X07├@X08C┤"
  541.     :LABEL036
  542.     INTEGER009 = 31
  543.     INTEGER010 = STRING004 + 3
  544.     AnsiPos INTEGER009, INTEGER010
  545.     Print "@X0F·"
  546.     Backup 1
  547.     :LABEL037
  548.     INTEGER003 = 4
  549.     INTEGER001 = 1
  550.     :LABEL038
  551.     STRING028 = Inkey()
  552.     If (STRING028 == "") Then
  553.         If (INTEGER001 > INTEGER002) Goto LABEL037
  554.         Gosub LABEL011
  555.         Inc INTEGER001
  556.         Goto LABEL038
  557.     Endif
  558.     If ((STRING028 == Chr(27)) || (STRING028 == Chr(13))) Goto LABEL051
  559.     If (!InStr("123456789", STRING028)) Goto LABEL038
  560.     If (STRING028 > INTEGER002) Goto LABEL038
  561.     Print STRING028
  562.     If (STRING028 == String(PcbNode())) Goto LABEL046
  563.     RdUNet STRING028
  564.     If (UN_Name() == "") Goto LABEL047
  565.     If ((UN_Stat() == "A") || (Right(UN_Oper(), 7) == "SAC-WHO")) Goto LABEL039
  566.     Goto LABEL047
  567.     :LABEL039
  568.     STRING026 = ""
  569.     INTEGER011 = 0
  570.     INTEGER009 = 4
  571.     INTEGER010 = STRING004 + 4
  572.     AnsiPos INTEGER009, INTEGER010
  573.     :LABEL040
  574.     INTEGER003 = 4
  575.     INTEGER001 = 1
  576.     :LABEL041
  577.     STRING029 = Inkey()
  578.     If (STRING029 == "") Then
  579.         If (INTEGER001 > INTEGER002) Goto LABEL040
  580.         Gosub LABEL011
  581.         Inc INTEGER001
  582.         Goto LABEL041
  583.     Endif
  584.     If (STRING029 == Chr(27)) Goto LABEL043
  585.     If (STRING029 == Chr(13)) Goto LABEL044
  586.     If (STRING029 == Chr(8)) Goto LABEL042
  587.     If (!InStr(Mask_Ascii(), STRING029)) Goto LABEL041
  588.     If (INTEGER011 > 34) Goto LABEL041
  589.     AnsiPos INTEGER009, INTEGER010
  590.     Print "@X0F" + STRING029
  591.     STRING026 = STRING026 + STRING029
  592.     Inc INTEGER011
  593.     Inc INTEGER009
  594.     Goto LABEL041
  595.     :LABEL042
  596.     If (INTEGER011 == 0) Goto LABEL041
  597.     AnsiPos INTEGER009 - 1, INTEGER010
  598.     Print Chr(32) + Chr(8)
  599.     STRING026 = Left(STRING026, Len(STRING026) - 1)
  600.     Dec INTEGER011
  601.     Dec INTEGER009
  602.     Goto LABEL041
  603.     :LABEL043
  604.     AnsiPos INTEGER009, INTEGER010
  605.     If (STRING026 == "") Goto LABEL045
  606.     Backup INTEGER011
  607.     Print Space(INTEGER011)
  608.     Backup INTEGER011
  609.     Goto LABEL039
  610.     :LABEL044
  611.     If (STRING026 == "") Goto LABEL045
  612.     RdUNet STRING028
  613.     If (UN_Name() == "") Goto LABEL049
  614.     If (Right(UN_Oper(), 7) <> "SAC-WHO") Goto LABEL048
  615.     Goto LABEL050
  616.     :LABEL045
  617.     Print Space(10) + "@X04MESSAGE ABORTED@X0C!"
  618.     Delay 30
  619.     Backup 16
  620.     Print Space(16)
  621.     Goto LABEL051
  622.     :LABEL046
  623.     AnsiPos 10, STRING004 + 4
  624.     Print "@X04YEAH, THiS iS YoUR NoDE@X0C!"
  625.     Delay 30
  626.     Backup 24
  627.     Print Space(24)
  628.     Goto LABEL036
  629.     :LABEL047
  630.     AnsiPos 11, STRING004 + 4
  631.     Print "@X04NoDE iS NoT AVAiLABLE@X0C!"
  632.     Delay 30
  633.     Backup 22
  634.     Print Space(22)
  635.     Goto LABEL036
  636.     :LABEL048
  637.     If (UN_Stat() == "A") Then
  638.         Broadcast STRING028, STRING028, "MSG from Nd# " + String(PcbNode()) + ": " + STRING026
  639.     Else
  640.         :LABEL049
  641.         AnsiPos 4, STRING004 + 4
  642.         Print "@X04    NoDE iS No LoNGER AVAiLABLE@X0C!   "
  643.         Delay 30
  644.         Backup 31
  645.         Print Space(28)
  646.         Goto LABEL036
  647.         :LABEL050
  648.         FCreate 1, PPEPath() + "OLM" + STRING028 + ".$$$", 2, 0
  649.         FPutLn 1, String(PcbNode()) + Left("   ", 3 - Len(PcbNode())) + STRING026
  650.         FClose 1
  651.     Endif
  652.     AnsiPos 4, STRING004 + 4
  653.     Print "      @X02MESSAGE SEND TO NoDE# " + STRING028 + "      "
  654.     Delay 27
  655.     :LABEL051
  656.     AnsiPos 2, STRING004 + 3
  657.     Print Space(39)
  658.     AnsiPos 2, STRING004 + 4
  659.     Print Space(39)
  660.     Goto LABEL007
  661.  
  662. ;------------------------------------------------------------------------------
  663. ;
  664. ; Usage report (before postprocessing)
  665. ;
  666. ; ■ Statements used :
  667. ;
  668. ;    3       End
  669. ;    4       Cls
  670. ;    4       Wait
  671. ;    1       Color 
  672. ;    150     Goto 
  673. ;    146     Let 
  674. ;    29      Print 
  675. ;    44      PrintLn 
  676. ;    111     If 
  677. ;    1       FCreate 
  678. ;    6       FOpen 
  679. ;    7       FClose 
  680. ;    6       FGet 
  681. ;    1       FPutLn 
  682. ;    2       StartDisp 
  683. ;    3       Delete 
  684. ;    9       Gosub 
  685. ;    5       Return
  686. ;    5       Delay 
  687. ;    14      Inc 
  688. ;    3       Dec 
  689. ;    10      Newline
  690. ;    2       Stop
  691. ;    4       Beep
  692. ;    1       Broadcast 
  693. ;    6       RdUNet 
  694. ;    1       WrUNet 
  695. ;    25      AnsiPos 
  696. ;    7       Backup 
  697. ;    1       SaveScrn
  698. ;    1       RestScrn
  699. ;    4       FSeek 
  700. ;    6       FRead 
  701. ;    1       FWrite 
  702. ;    1       Copy 
  703. ;    1       GetAltUser 
  704. ;    2       EndProc
  705. ;
  706. ;
  707. ; ■ Functions used :
  708. ;
  709. ;    5       /
  710. ;    137     +
  711. ;    29      -
  712. ;    78      ==
  713. ;    5       <>
  714. ;    2       <
  715. ;    18      >
  716. ;    55      !
  717. ;    9       ||
  718. ;    32      Len(
  719. ;    4       Upper()
  720. ;    26      Left()
  721. ;    16      Right()
  722. ;    13      Space()
  723. ;    2       Ferr()
  724. ;    18      Chr()
  725. ;    15      InStr()
  726. ;    11      LTrim()
  727. ;    5       RTrim()
  728. ;    4       Time()
  729. ;    1       U_LDate()
  730. ;    1       U_LTime()
  731. ;    1       U_LDir()
  732. ;    1       U_Logons()
  733. ;    1       U_Ful()
  734. ;    1       U_Fdl()
  735. ;    1       U_BdlDay()
  736. ;    1       U_Bdl()
  737. ;    1       U_Bul()
  738. ;    6       StripAtx()
  739. ;    8       Replace()
  740. ;    4       Inkey()
  741. ;    22      String()
  742. ;    1       Mask_Ascii()
  743. ;    1       PCBDat()
  744. ;    7       PPEPath()
  745. ;    11      PcbNode()
  746. ;    1       ReadLine()
  747. ;    27      UN_Stat()
  748. ;    10      UN_Name()
  749. ;    2       UN_City()
  750. ;    15      UN_Oper()
  751. ;    7       Exist()
  752. ;    1       AnsiOn()
  753. ;    3       GetY()
  754. ;    3       FileInf()
  755. ;    2       MaxNode()
  756. ;    1       U_RecNum()
  757. ;
  758. ;------------------------------------------------------------------------------
  759. ;
  760. ; Analysis flags : Rd
  761. ;
  762. ; R - Read user ■ 5
  763. ;     User records are read, this may signify that someone wants to get
  764. ;     various informations about a user (for example his password), but
  765. ;     this may also be normal for a program accessing user records (for
  766. ;     example a User Editor)
  767. ;     ■ Search for : GETALTUSER
  768. ;
  769. ; d - Access PCBOARD.DAT ■ 2
  770. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  771. ;     for many PPE so they can find various informations on the system
  772. ;     (system paths, max number of lines in messages, ...) but it may also
  773. ;     be a way to gather vital informations.
  774. ;     ■ Search for : PCBDAT()
  775. ;
  776. ;------------------------------------------------------------------------------
  777. ;
  778. ; Postprocessing report
  779. ;
  780. ;    0       For/Next
  781. ;    1       While/EndWhile
  782. ;    24      If/Then or If/Then/Else
  783. ;    2       Select Case
  784. ;
  785. ;------------------------------------------------------------------------------
  786. ;                 AEGiS Corp - Break the routines, code against the machines!
  787. ;------------------------------------------------------------------------------
  788.