home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / IAB110A.ZIP / IAB4E.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-01-23  |  25KB  |  1,216 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.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Integer  INTEGER001
  29.     Integer  INTEGER002
  30.     Integer  INTEGER003
  31.     Integer  INTEGER004
  32.     Integer  INTEGER005
  33.     Integer  INTEGER006
  34.     Integer  INTEGER007
  35.     Integer  INTEGER008
  36.     Integer  INTEGER009
  37.     Integer  INTEGER010
  38.     Integer  INTEGER011
  39.     Integer  INTEGER012
  40.     Integer  INTEGER013
  41.     Integer  INTEGER014
  42.     Integer  INTEGER015
  43.     Integer  INTEGER016
  44.     Integer  INTEGER017
  45.     Integer  INTEGER018
  46.     Integer  INTEGER019
  47.     Integer  INTEGER020
  48.     Integer  INTEGER021
  49.     Integer  INTEGER022
  50.     Integer  INTEGER023
  51.     Integer  INTEGER024
  52.     Integer  INTEGER025
  53.     Integer  INTEGER026
  54.     Integer  INTEGER027
  55.     Integer  INTEGER028
  56.     Integer  INTEGER029
  57.     Integer  INTEGER030
  58.     Integer  INTEGER031
  59.     Integer  INTEGER032
  60.     Integer  INTEGER033
  61.     Integer  INTEGER034
  62.     Integer  INTEGER035
  63.     Integer  INTEGER036
  64.     Integer  INTEGER037
  65.     Integer  INTEGER038
  66.     Integer  INTEGER039
  67.     String   STRING001
  68.     String   STRING002
  69.     String   STRING003
  70.     String   STRING004
  71.     String   STRING005
  72.     String   STRING006
  73.     String   STRING007
  74.     String   STRING008
  75.     String   TSTRING009(4)
  76.     String   TSTRING010(100)
  77.     String   TSTRING011(100)
  78.     String   STRING012
  79.     String   STRING013
  80.     String   STRING014
  81.     String   STRING015
  82.     String   STRING016
  83.     String   STRING017
  84.     String   STRING018
  85.     String   STRING019
  86.     String   STRING020
  87.     String   STRING021
  88.     String   STRING022
  89.     String   STRING023
  90.     String   STRING024
  91.     String   STRING025
  92.     String   STRING026
  93.     String   TSTRING027(5)
  94.     String   STRING028
  95.     String   TSTRING029(6)
  96.     String   TSTRING030(5)
  97.     String   TSTRING031(7)
  98.     String   TSTRING032(2)
  99.     String   STRING033
  100.     String   STRING034
  101.     String   TSTRING035(2)
  102.     String   STRING036
  103.     String   STRING037
  104.     String   STRING038
  105.     String   STRING039
  106.     String   STRING040
  107.     String   STRING041
  108.     String   STRING042
  109.     String   STRING043
  110.     String   STRING044
  111.     String   STRING045
  112.     String   STRING046
  113.     String   STRING047
  114.     String   STRING048
  115.     String   STRING049
  116.     String   TSTRING050(5)
  117.     String   TSTRING051(3,5)
  118.  
  119. ;------------------------------------------------------------------------------
  120.  
  121.     STRING046 = Chr(13)
  122.     BOOLEAN009 = 0
  123.     BOOLEAN008 = 0
  124.     BOOLEAN006 = 0
  125.     BOOLEAN001 = 1
  126.     BOOLEAN007 = 0
  127.     BOOLEAN005 = 1
  128.     BOOLEAN004 = 1
  129.     INTEGER028 = 100
  130.     INTEGER018 = 25
  131.     INTEGER019 = 120
  132.     For INTEGER021 = 1 To 4
  133.         TSTRING009(INTEGER021) = "0"
  134.     Next
  135.     STRING040 = "@X0C"
  136.     STRING041 = "@X0E"
  137.     STRING042 = "@X0F"
  138.     STRING043 = "@X07"
  139.     STRING044 = "@X0A"
  140.     STRING045 = "@X09"
  141.     STRING048 = PPEPath() + "$$TEMP.TXT"
  142.     STRING037 = ""
  143.     STRING038 = ""
  144.     STRING039 = ""
  145.     TSTRING035(1) = "Address then Description"
  146.     TSTRING035(0) = "Description then Address"
  147.     STRING026 = "IAB4E v1.1A Beta (01-23-94)"
  148.     STRING033 = "ON"
  149.     STRING034 = "OFF"
  150.     INTEGER009 = 0
  151.     INTEGER014 = 0
  152.     INTEGER015 = 0
  153.     INTEGER008 = 8
  154.     STRING025 = PPEPath() + "IAB.CNF"
  155.     INTEGER020 = 3
  156.     STRING017 = "To (Enter) = 'ALL'"
  157.     STRING018 = "To: (" + STRING044 + "<" + STRING042 + "Enter" + STRING044 + ">" + STRING041 + "=" + STRING042 + "list" + STRING041 + ") "
  158.     STRING019 = "To: (Enter)=abort "
  159.     STRING020 = "Subject (Enter)=abort "
  160.     STRING022 = NoChar()
  161.     TSTRING050(1) = "Error 1: File Not Found"
  162.     TSTRING050(2) = "Error 2: Insufficient Security to open an Address Book"
  163.     TSTRING050(3) = "Error 3: User Datafile Pointer Error - NOTIFY SYSOP"
  164.     TSTRING050(4) = "Error 4: Could not create file"
  165.     TSTRING050(5) = "Error 5: "
  166.     TSTRING031(1) = STRING044 + "MODIFY MENU: "
  167.     TSTRING031(2) = STRING044 + "[" + STRING042 + "A" + STRING044 + "]dd, "
  168.     TSTRING031(3) = STRING044 + "[" + STRING042 + "E" + STRING044 + "]dit, "
  169.     TSTRING031(4) = STRING044 + "[" + STRING042 + "D" + STRING044 + "]elete, "
  170.     TSTRING031(5) = STRING044 + "[" + STRING042 + "S" + STRING044 + "]ort, "
  171.     TSTRING031(6) = STRING044 + "[" + STRING042 + "H" + STRING044 + "]elp, "
  172.     TSTRING031(7) = STRING044 + "[" + STRING042 + "Q" + STRING044 + "]uit "
  173.     TSTRING030(1) = STRING044 + "SETUP MENU: "
  174.     TSTRING030(2) = STRING044 + "[" + STRING042 + "V" + STRING044 + "]iew Mode, "
  175.     TSTRING030(3) = STRING044 + "Turn [" + STRING042 + "A" + STRING044 + "]uto Rec "
  176.     TSTRING030(4) = STRING044 + "[" + STRING042 + "H" + STRING044 + "]elp, "
  177.     TSTRING030(5) = STRING044 + "[" + STRING042 + "Q" + STRING044 + "]uit "
  178.     TSTRING029(1) = STRING041 + "MAIN MENU: "
  179.     TSTRING029(2) = STRING041 + "Choose [" + STRING042 + "#" + STRING041 + "], "
  180.     TSTRING029(3) = STRING041 + "[" + STRING042 + "M" + STRING041 + "]odify, "
  181.     TSTRING029(4) = STRING041 + "[" + STRING042 + "S" + STRING041 + "]etup, "
  182.     TSTRING029(5) = STRING041 + "[" + STRING042 + "H" + STRING041 + "]elp, "
  183.     TSTRING029(6) = STRING041 + "[" + STRING042 + "Q" + STRING041 + "]uit"
  184.     TSTRING032(1) = STRING040 + "[" + STRING042 + "+" + STRING040 + "]"
  185.     TSTRING032(2) = STRING040 + "[" + STRING042 + "-" + STRING040 + "]"
  186.     STRING047 = ";"
  187.     INTEGER025 = 45
  188.     INTEGER026 = 25
  189.     INTEGER027 = 22
  190.     INTEGER030 = 0
  191.     INTEGER032 = 1
  192.     INTEGER031 = 2
  193.     INTEGER033 = 3
  194.     INTEGER034 = 4
  195.     Gosub LABEL032
  196.     STRING014 = TokenStr()
  197.     Tokenize STRING014
  198.     If (TokCount() > 0) Then
  199.         STRING036 = GetToken()
  200.         If ((STRING036 == "MAINT") || (STRING036 == "M")) Goto LABEL047
  201.         If ((STRING036 == "STATUS") || (STRING036 == "S")) Goto LABEL049
  202.         If (Upper(STRING036) == "UUCP") BOOLEAN003 = 1
  203.         Goto LABEL054
  204.     Else
  205.         Goto LABEL001
  206.     Endif
  207.     End
  208.     :LABEL001
  209.     If ((CurConf() == INTEGER005) && (CurSec() >= INTEGER004)) Goto LABEL002
  210.     STRING037 = ""
  211.     Goto LABEL059
  212.     End
  213.     :LABEL002
  214.     Gosub LABEL028
  215.     Gosub LABEL036
  216.     Gosub LABEL040
  217.     Gosub LABEL046
  218.     If (INTEGER009 == 0) Then
  219.         InputStr STRING019, STRING023, 14, INTEGER019, Mask_Ascii(), 128
  220.     Else
  221.         InputStr STRING018, STRING023, 14, INTEGER019, Mask_Ascii(), 128
  222.     Endif
  223.     INTEGER037 = GetX()
  224.     INTEGER038 = GetY()
  225.     If (STRING023 == "") Then
  226.         If (INTEGER009 > 0) Then
  227.             INTEGER035 = GetX()
  228.             INTEGER036 = GetY()
  229.             SaveScrn
  230.             Gosub LABEL057
  231.             Goto LABEL003
  232.         Endif
  233.     Else
  234.         If (BOOLEAN004 && (STRING023 <> "UUCP")) Then
  235.             Gosub LABEL023
  236.             If (BOOLEAN007 == 0) Then
  237.                 Gosub LABEL020
  238.                 If (BOOLEAN001) Then
  239.                     Log STRING026 + " Auto Recorded Entry at " + TimeAp(Time()), 0
  240.                 Endif
  241.             Endif
  242.         Endif
  243.         STRING038 = STRING023 + STRING046
  244.         Goto LABEL053
  245.     Endif
  246.     End
  247.     :LABEL003
  248.     Cls
  249.     DispFile STRING006, 2 + 1 + 4
  250.     Newline
  251.     INTEGER036 = GetY()
  252.     Gosub LABEL008
  253.     Gosub LABEL012
  254.     PrintLn 
  255.     Gosub LABEL014
  256.     InputStr "@CLREOL@" + STRING021, STRING028, 14, 2, Mask_Ascii(), 8 + 256
  257.     INTEGER023 = S2I(STRING028, 10)
  258.     STRING028 = Upper(STRING028)
  259.     If ((INTEGER023 > 0) && (INTEGER023 <= INTEGER009)) Then
  260.         If ((INTEGER029 == INTEGER030) && !BOOLEAN008) Then
  261.             Goto LABEL062
  262.         Else
  263.             Select Case (INTEGER029)
  264.                 Case INTEGER033
  265.                     Gosub LABEL017
  266.                 Case INTEGER034
  267.                     Gosub LABEL018
  268.                 Endif
  269.         End Select
  270.     Else
  271.         If ((INTEGER029 == INTEGER030) && (STRING028 == "M")) Then
  272.             INTEGER029 = INTEGER032
  273.             Gosub LABEL014
  274.         ElseIf ((INTEGER029 == INTEGER032) && (STRING028 == "A")) Then
  275.             Gosub LABEL016
  276.         ElseIf ((INTEGER029 == INTEGER032) && (STRING028 == "E")) Then
  277.             INTEGER029 = INTEGER033
  278.             Gosub LABEL014
  279.         ElseIf ((INTEGER029 == INTEGER032) && (STRING028 == "D")) Then
  280.             INTEGER029 = INTEGER034
  281.             Gosub LABEL014
  282.         ElseIf ((INTEGER029 == INTEGER032) && (STRING028 == "S")) Then
  283.             Gosub LABEL019
  284.         ElseIf ((INTEGER029 == INTEGER030) && (STRING028 == "S")) Then
  285.             INTEGER029 = INTEGER031
  286.             Gosub LABEL014
  287.         ElseIf ((INTEGER029 == INTEGER031) && (STRING028 == "A")) Then
  288.             Gosub LABEL031
  289.         ElseIf ((INTEGER029 == INTEGER031) && (STRING028 == "V")) Then
  290.             Gosub LABEL030
  291.         Else
  292.             Select Case (STRING028)
  293.                 Case "+"
  294.                     Gosub LABEL009
  295.                 Case "-"
  296.                     Gosub LABEL011
  297.                 Case "H"
  298.                     Gosub LABEL043
  299.                 Case "Q"
  300.                     If (INTEGER029 == INTEGER030) Then
  301.                         STRING023 = ""
  302.                         If (BOOLEAN008) Goto LABEL004
  303.                         KbdStuff STRING046 + STRING046
  304.                         RestScrn
  305.                         KbdStuff STRING046
  306.                         Goto LABEL005
  307.                         :LABEL004
  308.                         RestScrn
  309.                         :LABEL005
  310.                         Gosub LABEL058
  311.                         If (U_Expert == 0) KbdStuff "MENU"
  312.                         End
  313.                         Goto LABEL006
  314.                     Endif
  315.                     Gosub LABEL007
  316.                 Endif
  317.             Endif
  318.     End Select
  319.     :LABEL006
  320.     STRING028 = ""
  321.     Goto LABEL003
  322.     :LABEL007
  323.     INTEGER029 = INTEGER030
  324.     Gosub LABEL014
  325.     Return
  326.     :LABEL008
  327.     Gosub LABEL029
  328.     If (INTEGER015 < 2) Then
  329.         INTEGER015 = 1
  330.         INTEGER012 = 1
  331.         If (INTEGER009 < INTEGER011) Then
  332.             INTEGER013 = INTEGER009
  333.         Else
  334.             INTEGER013 = INTEGER011
  335.         Endif
  336.     ElseIf ((INTEGER013 - INTEGER012 + 1 < INTEGER011) && (INTEGER009 == INTEGER013 + 1)) Then
  337.         Inc INTEGER013
  338.     Endif
  339.     Return
  340.     :LABEL009
  341.     If (INTEGER015 < INTEGER014) Then
  342.         INTEGER012 = INTEGER013 + 1
  343.         If (INTEGER013 + INTEGER011 > INTEGER009) Then
  344.             INTEGER013 = INTEGER009
  345.             Goto LABEL010
  346.         Endif
  347.         INTEGER013 = INTEGER013 + INTEGER011
  348.         :LABEL010
  349.         Inc INTEGER015
  350.     Endif
  351.     Return
  352.     :LABEL011
  353.     If (INTEGER015 > 1) Then
  354.         INTEGER012 = INTEGER012 - INTEGER011
  355.         INTEGER013 = INTEGER012 + INTEGER011 - 1
  356.         Dec INTEGER015
  357.     Endif
  358.     Return
  359.     :LABEL012
  360.     If (INTEGER009 == 0) Then
  361.         PrintLn 
  362.         PrintLn "                 Your Internet Address Book is empty"
  363.         PrintLn 
  364.     Else
  365.         INTEGER021 = INTEGER012
  366.         While (INTEGER021 <= INTEGER013) Do
  367.             If (BOOLEAN005) Then
  368.                 PrintLn Space(4 - Len(I2S(INTEGER021, 10))) + STRING040 + I2S(INTEGER021, 10) + STRING042 + "] " + STRING041 + Left(TSTRING010(INTEGER021), INTEGER025) + STRING044 + Left(TSTRING011(INTEGER021), INTEGER026)
  369.             Else
  370.                 PrintLn Space(4 - Len(I2S(INTEGER021, 10))) + STRING040 + I2S(INTEGER021, 10) + STRING042 + "] " + STRING044 + Left(TSTRING011(INTEGER021), INTEGER025) + STRING041 + Left(TSTRING010(INTEGER021), INTEGER026)
  371.             Endif
  372.             Inc INTEGER021
  373.         EndWhile
  374.     Endif
  375.     Return
  376.     :LABEL013
  377.     If ((INTEGER015 < INTEGER014) && (INTEGER015 > 1)) Then
  378.         STRING021 = STRING021 + TSTRING032(1) + "/" + TSTRING032(2) + " Page, "
  379.     ElseIf (INTEGER015 < INTEGER014) Then
  380.         STRING021 = STRING021 + TSTRING032(1) + " Page, "
  381.     ElseIf (INTEGER015 > 1) Then
  382.         STRING021 = STRING021 + TSTRING032(2) + " Page, "
  383.     Endif
  384.     Return
  385.     :LABEL014
  386.     STRING021 = ""
  387.     Select Case (INTEGER029)
  388.         Case INTEGER030
  389.             STRING021 = TSTRING029(1)
  390.             Gosub LABEL013
  391.             For INTEGER021 = 2 To 6
  392.                 If (INTEGER021 == 2) Then
  393.                     If (BOOLEAN008) Goto LABEL015
  394.                     STRING021 = STRING021 + TSTRING029(INTEGER021)
  395.                     :LABEL015
  396.                     Continue
  397.                 Endif
  398.                 STRING021 = STRING021 + TSTRING029(INTEGER021)
  399.             Next
  400.         Case INTEGER031
  401.             STRING021 = TSTRING030(1)
  402.             Gosub LABEL013
  403.             For INTEGER021 = 2 To 5
  404.                 If (INTEGER021 == 3) Then
  405.                     STRING021 = STRING021 + TSTRING030(INTEGER021) + STRING034 + ", "
  406.                     Continue
  407.                 Endif
  408.                 STRING021 = STRING021 + TSTRING030(INTEGER021)
  409.             Next
  410.         Case INTEGER032
  411.             STRING021 = TSTRING031(1)
  412.             Gosub LABEL013
  413.             For INTEGER021 = 2 To 7
  414.                 If ((INTEGER021 > 2) && (INTEGER021 < 6)) Then
  415.                     If (INTEGER009 > 0) Then
  416.                         STRING021 = STRING021 + TSTRING031(INTEGER021)
  417.                     Endif
  418.                     Continue
  419.                 Endif
  420.                 STRING021 = STRING021 + TSTRING031(INTEGER021)
  421.             Next
  422.         Case INTEGER033
  423.             STRING021 = STRING040 + "Which Entry " + STRING042 + "#" + STRING040 + " would you like to edit, [" + STRING042 + "Q" + STRING040 + "]uit "
  424.         Case INTEGER034
  425.             STRING021 = STRING040 + "Which Entry " + STRING042 + "#" + STRING040 + " would you like to delete, [" + STRING042 + "Q" + STRING040 + "]uit "
  426.     End Select
  427.     Return
  428.     :LABEL016
  429.     If (INTEGER009 < INTEGER028) Then
  430.         Inc INTEGER009
  431.         TSTRING010(INTEGER009) = ""
  432.         TSTRING011(INTEGER009) = ""
  433.         InputStr "Email Address: ", TSTRING010(INTEGER009), 14, INTEGER019, Mask_Ascii(), 128
  434.         InputStr "  Description: ", TSTRING011(INTEGER009), 14, 60, Mask_Ascii(), 2 + 4 + 128
  435.         Gosub LABEL022
  436.         If ((!BOOLEAN006 && (INTEGER009 == 20)) && (INTEGER003 <> 1)) Gosub LABEL063
  437.         Gosub LABEL008
  438.     Else
  439.         PrintLn 
  440.         PrintLn "Your Address Book is Full!  Please Delete an Entry First"
  441.         PrintLn 
  442.         Wait
  443.     Endif
  444.     STRING028 = ""
  445.     INTEGER029 = INTEGER032
  446.     Gosub LABEL014
  447.     Return
  448.     :LABEL017
  449.     PrintLn "@X0EEmail Address: "
  450.     If (Len(TSTRING010(INTEGER023)) < 75) Then
  451.         InputStr "", TSTRING010(INTEGER023), 14, 80, Mask_Ascii(), 1024 + 64 + 2 + 4
  452.     Else
  453.         InputStr "", TSTRING010(INTEGER023), 14, INTEGER019, Mask_Ascii(), 1024 + 64
  454.     Endif
  455.     InputStr "  Description: ", TSTRING011(INTEGER023), 14, 60, Mask_Ascii(), 2 + 4 + 128
  456.     Gosub LABEL022
  457.     STRING028 = ""
  458.     INTEGER029 = INTEGER032
  459.     Gosub LABEL014
  460.     Return
  461.     :LABEL018
  462.     InputStr "Delete #" + STRING028 + "...Are you sure", STRING022, 14, 1, "YyNn", 8 + 128
  463.     If (STRING022 == "Y") Then
  464.         If (INTEGER023 == INTEGER009) Then
  465.             Dec INTEGER009
  466.         Endif
  467.         TSTRING010(INTEGER023) = ""
  468.         TSTRING011(INTEGER023) = ""
  469.         Gosub LABEL022
  470.         Gosub LABEL008
  471.     Endif
  472.     STRING028 = ""
  473.     STRING022 = NoChar()
  474.     INTEGER029 = INTEGER032
  475.     Gosub LABEL014
  476.     Return
  477.     :LABEL019
  478.     STRING022 = ""
  479.     While (InStr("AaDdQq", Upper(STRING022)) == 0) Do
  480.         InputStr STRING041 + "Sort By [" + STRING042 + "A" + STRING041 + "]ddress or [" + STRING042 + "D" + STRING041 + "]escription, [" + STRING042 + "Q" + STRING041 + "]uit ", STRING022, 14, 1, "AaDdQq", 8 + 128
  481.         If (STRING022 == "A") Then
  482.             PrintLn 
  483.             Print "Sorting."
  484.             For INTEGER021 = 1 To INTEGER009 - 1
  485.                 For INTEGER022 = INTEGER021 + 1 To INTEGER009
  486.                     If (TSTRING010(INTEGER021) > TSTRING010(INTEGER022)) Then
  487.                         Print "."
  488.                         TSTRING027(1) = TSTRING010(INTEGER021)
  489.                         TSTRING027(2) = TSTRING011(INTEGER021)
  490.                         TSTRING010(INTEGER021) = TSTRING010(INTEGER022)
  491.                         TSTRING011(INTEGER021) = TSTRING011(INTEGER022)
  492.                         TSTRING010(INTEGER022) = TSTRING027(1)
  493.                         TSTRING011(INTEGER022) = TSTRING027(2)
  494.                     Endif
  495.                 Next
  496.             Next
  497.             Continue
  498.         Endif
  499.         If (STRING022 == "D") Then
  500.             PrintLn 
  501.             Print "Sorting."
  502.             For INTEGER021 = 1 To INTEGER009 - 1
  503.                 For INTEGER022 = INTEGER021 + 1 To INTEGER009
  504.                     If (TSTRING011(INTEGER021) > TSTRING011(INTEGER022)) Then
  505.                         Print "."
  506.                         TSTRING027(1) = TSTRING010(INTEGER021)
  507.                         TSTRING027(2) = TSTRING011(INTEGER021)
  508.                         TSTRING010(INTEGER021) = TSTRING010(INTEGER022)
  509.                         TSTRING011(INTEGER021) = TSTRING011(INTEGER022)
  510.                         TSTRING010(INTEGER022) = TSTRING027(1)
  511.                         TSTRING011(INTEGER022) = TSTRING027(2)
  512.                     Endif
  513.                 Next
  514.             Next
  515.         Endif
  516.     EndWhile
  517.     If (Upper(STRING022) <> "Q") Gosub LABEL022
  518.     INTEGER029 = INTEGER032
  519.     STRING028 = ""
  520.     STRING022 = ""
  521.     Return
  522.     :LABEL020
  523.     If (Exist(STRING012)) Then
  524.         FAppend 1, STRING012, 2, 3
  525.         FPutLn 1, Replace(STRING023, STRING047, ".") + STRING047 + Replace("", STRING047, " ")
  526.         FClose 1
  527.     Else
  528.         FCreate 1, STRING012, 2, 3
  529.         FPutLn 1, STRING001
  530.         FPutLn 1, INTEGER003
  531.         FPutLn 1, BOOLEAN004
  532.         FPutLn 1, BOOLEAN005
  533.         For INTEGER021 = 1 To 4
  534.             FPutLn 1, TSTRING009(INTEGER021)
  535.         Next
  536.         FPutLn 1, Replace(STRING023, STRING047, ".") + STRING047 + Replace("", STRING047, " ")
  537.         FClose 1
  538.     Endif
  539.     Return
  540.     :LABEL021
  541.     FCreate 1, STRING012, 2, 3
  542.     FPutLn 1, STRING001
  543.     FPutLn 1, INTEGER003
  544.     FPutLn 1, BOOLEAN004
  545.     FPutLn 1, BOOLEAN005
  546.     For INTEGER021 = 1 To 4
  547.         FPutLn 1, TSTRING009(INTEGER021)
  548.     Next
  549.     FClose 1
  550.     Return
  551.     :LABEL022
  552.     If (Exist(STRING013)) Then
  553.         Delete STRING013
  554.     Endif
  555.     Rename STRING012, STRING013
  556.     FCreate 1, STRING012, 2, 3
  557.     FPutLn 1, STRING001
  558.     FPutLn 1, INTEGER003
  559.     FPutLn 1, BOOLEAN004
  560.     FPutLn 1, BOOLEAN005
  561.     For INTEGER021 = 1 To 4
  562.         FPutLn 1, TSTRING009(INTEGER021)
  563.     Next
  564.     For INTEGER021 = 1 To INTEGER009
  565.         If ((TSTRING010(INTEGER021) <> "") || (TSTRING011(INTEGER021) <> "")) Then
  566.             FPutLn 1, Replace(TSTRING010(INTEGER021), STRING047, ".") + STRING047 + Replace(TSTRING011(INTEGER021), STRING047, " ")
  567.         Endif
  568.     Next
  569.     FClose 1
  570.     If (Exist(STRING013) && !BOOLEAN002) Then
  571.         Delete STRING013
  572.     Endif
  573.     Gosub LABEL040
  574.     Return
  575.     :LABEL023
  576.     BOOLEAN007 = 0
  577.     If (INTEGER009 > 0) Then
  578.         FOpen 1, STRING012, 0, 2
  579.         For INTEGER021 = 1 To INTEGER008
  580.             FGet 1, STRING024
  581.         Next
  582.         :LABEL024
  583.         If (Ferr(1)) Goto LABEL025
  584.         FGet 1, STRING024
  585.         INTEGER024 = InStr(STRING024, STRING047)
  586.         If (INTEGER024 > 0) Then
  587.             STRING024 = Trim(Left(STRING024, INTEGER024 - 1), " ")
  588.         Endif
  589.         If (Upper(STRING024) == Upper(STRING023)) Then
  590.             BOOLEAN007 = 1
  591.             FClose 1
  592.             Return
  593.         Endif
  594.         Goto LABEL024
  595.     Endif
  596.     :LABEL025
  597.     FClose 1
  598.     Return
  599.     INTEGER009 = 0
  600.     FOpen 1, STRING012, 0, 2
  601.     :LABEL026
  602.     If (Ferr(1)) Goto LABEL027
  603.     FGet 1, STRING024
  604.     INTEGER009 = INTEGER009 + 1
  605.     Goto LABEL026
  606.     :LABEL027
  607.     INTEGER009 = INTEGER009 - 1
  608.     INTEGER009 = INTEGER009 - INTEGER008
  609.     FClose 1
  610.     Return
  611.     :LABEL028
  612.     GetUser
  613.     STRING001 = U_Name()
  614.     INTEGER001 = U_PageLen
  615.     INTEGER002 = U_Sec
  616.     INTEGER003 = U_RecNum(STRING001)
  617.     If (INTEGER003 == 1) Gosub LABEL064
  618.     Return
  619.     :LABEL029
  620.     INTEGER011 = 0
  621.     INTEGER011 = INTEGER027 - INTEGER010 - INTEGER020
  622.     If (INTEGER009 <= INTEGER011) Then
  623.         INTEGER014 = 1
  624.     ElseIf (INTEGER009 % INTEGER011 == 0) Then
  625.         INTEGER014 = INTEGER009 / INTEGER011
  626.     Else
  627.         INTEGER014 = INTEGER009 / INTEGER011 + 1
  628.     Endif
  629.     Return
  630.     :LABEL030
  631.     If (BOOLEAN005) Then
  632.         BOOLEAN005 = 0
  633.     Else
  634.         BOOLEAN005 = 1
  635.     Endif
  636.     Gosub LABEL022
  637.     Return
  638.     :LABEL031
  639.     If (BOOLEAN004) Then
  640.         BOOLEAN004 = 0
  641.         STRING033 = "OFF"
  642.         STRING034 = "ON"
  643.     Else
  644.         BOOLEAN004 = 1
  645.         STRING033 = "ON"
  646.         STRING034 = "OFF"
  647.     Endif
  648.     Gosub LABEL022
  649.     PrintLn 
  650.     PrintLn "Auto Record is now " + STRING033
  651.     Wait
  652.     Return
  653.     :LABEL032
  654.     If (Exist(STRING025)) Then
  655.         FOpen 1, STRING025, 0, 2
  656.         FGet 1, STRING002
  657.         FGet 1, STRING003
  658.         FGet 1, STRING004
  659.         FGet 1, STRING005
  660.         FGet 1, STRING006
  661.         FGet 1, STRING007
  662.         FGet 1, INTEGER004
  663.         FGet 1, INTEGER005
  664.         FGet 1, BOOLEAN001
  665.         FGet 1, BOOLEAN002
  666.         FGet 1, INTEGER006
  667.         FGet 1, BOOLEAN003
  668.         FClose 1
  669.     Else
  670.         INTEGER039 = 1
  671.         STRING049 = STRING025
  672.         Goto LABEL045
  673.     Endif
  674.     If (Exist(STRING005)) Goto LABEL033
  675.     INTEGER039 = 1
  676.     STRING049 = STRING005
  677.     Goto LABEL045
  678.     :LABEL033
  679.     If (Exist(STRING006)) Then
  680.         INTEGER010 = 0
  681.         FOpen 1, STRING006, 0, 2
  682.         :LABEL034
  683.         If (Ferr(1)) Goto LABEL035
  684.         FGet 1, STRING024
  685.         INTEGER010 = INTEGER010 + 1
  686.         Goto LABEL034
  687.         :LABEL035
  688.         FClose 1
  689.     Else
  690.         INTEGER039 = 1
  691.         STRING049 = STRING006
  692.         Goto LABEL045
  693.     Endif
  694.     Gosub LABEL046
  695.     If ((INTEGER006 > INTEGER028) && BOOLEAN006) Then
  696.         INTEGER028 = INTEGER006
  697.         Redim TSTRING010, INTEGER028
  698.         Redim TSTRING011, INTEGER028
  699.     Endif
  700.     Gosub LABEL029
  701.     Return
  702.     :LABEL036
  703.     Gosub LABEL037
  704.     While (Len(STRING016) < 6) Do
  705.         STRING016 = "0" + STRING016
  706.     EndWhile
  707.     If (Len(STRING007) == 0) Then
  708.         STRING007 = PPEPath()
  709.     ElseIf (Right(STRING007, 1) <> "\") Then
  710.         STRING007 = STRING007 + "\"
  711.     Endif
  712.     STRING012 = STRING007 + "$U" + STRING016 + ".DAT"
  713.     STRING013 = STRING007 + "$U" + STRING016 + ".BAK"
  714.     Return
  715.     :LABEL037
  716.     INTEGER017 = 0
  717.     STRING016 = ""
  718.     STRING015 = ""
  719.     If (Exist(PPEPath() + "MASTER.IAB")) Then
  720.         FOpen 1, PPEPath() + "MASTER.IAB", 0, 2
  721.         :LABEL038
  722.         If (Ferr(1)) Goto LABEL039
  723.         FGet 1, STRING024
  724.         INTEGER024 = InStr(STRING024, STRING047)
  725.         STRING016 = Trim(Left(STRING024, INTEGER024 - 1), " ")
  726.         STRING015 = Trim(Mid(STRING024, INTEGER024 + 1, Len(STRING024) - INTEGER024), " ")
  727.         If (S2I(STRING016, 10) > INTEGER017) Then
  728.             INTEGER017 = S2I(STRING016, 10)
  729.         Endif
  730.         If (STRING001 == STRING015) Then
  731.             FClose 1
  732.             Return
  733.         Endif
  734.         Goto LABEL038
  735.         :LABEL039
  736.         FClose 1
  737.         Inc INTEGER017
  738.         STRING016 = I2S(INTEGER017, 10)
  739.         If (Exist(PPEPath() + "MASTER.BAK")) Then
  740.             Delete PPEPath() + "MASTER.BAK"
  741.         Endif
  742.         TSTRING027(5) = PPEPath() + "MASTER.IAB " + PPEPath() + "MASTER.BAK"
  743.         Shell 1, INTEGER016, "COPY", TSTRING027(5)
  744.         FAppend 1, PPEPath() + "MASTER.IAB", 2, 3
  745.         FPutLn 1, STRING016 + STRING047 + STRING001
  746.         FClose 1
  747.     Else
  748.         STRING016 = "1"
  749.         INTEGER017 = 1
  750.         FCreate 1, PPEPath() + "MASTER.IAB", 2, 3
  751.         FPutLn 1, STRING016 + STRING047 + STRING001
  752.         FClose 1
  753.     Endif
  754.     Return
  755.     :LABEL040
  756.     If (!Exist(STRING012)) Gosub LABEL021
  757.     If (Exist(STRING012)) Then
  758.         FOpen 1, STRING012, 0, 2
  759.         FGet 1, STRING008
  760.         FGet 1, INTEGER007
  761.         FGet 1, BOOLEAN004
  762.         FGet 1, BOOLEAN005
  763.         For INTEGER021 = 1 To 4
  764.             FGet 1, TSTRING009(INTEGER021)
  765.         Next
  766.         INTEGER009 = 0
  767.         :LABEL041
  768.         If (Ferr(1)) Goto LABEL042
  769.         FGet 1, STRING024
  770.         INTEGER009 = INTEGER009 + 1
  771.         INTEGER024 = InStr(STRING024, STRING047)
  772.         If (INTEGER024 > 0) Then
  773.             TSTRING010(INTEGER009) = Trim(Left(STRING024, INTEGER024 - 1), " ")
  774.             TSTRING011(INTEGER009) = Trim(Mid(STRING024, INTEGER024 + 1, Len(STRING024) - INTEGER024), " ")
  775.         Else
  776.             TSTRING010(INTEGER009) = Trim(STRING024, " ")
  777.         Endif
  778.         Goto LABEL041
  779.         :LABEL042
  780.         INTEGER009 = INTEGER009 - 1
  781.         FClose 1
  782.         If (BOOLEAN004) Then
  783.             STRING033 = "ON"
  784.             STRING034 = "OFF"
  785.         Else
  786.             STRING033 = "OFF"
  787.             STRING034 = "ON"
  788.         Endif
  789.     Else
  790.         INTEGER039 = 4
  791.         STRING049 = STRING012
  792.         Goto LABEL045
  793.     Endif
  794.     If (STRING008 <> STRING001) Then
  795.         INTEGER039 = 3
  796.     Else
  797.         Return
  798.         :LABEL043
  799.         TSTRING051(1, 1) = STRING042 + "Choose " + STRING041 + "[" + STRING042 + "#" + STRING041 + "] Enter the Address entry number to use for this message"
  800.         TSTRING051(1, 2) = STRING041 + "[" + STRING042 + "M" + STRING041 + "]" + STRING042 + "odify" + STRING041 + " = Display a menu with Edit, Add, Delete, and Sort Options"
  801.         TSTRING051(1, 3) = STRING041 + "[" + STRING042 + "S" + STRING041 + "]" + STRING042 + "etup" + STRING041 + "  = Display a menu with View Mode and Auto Record Toggle Options"
  802.         TSTRING051(1, 4) = STRING041 + "[" + STRING042 + "Q" + STRING041 + "]" + STRING042 + "uit" + STRING041 + "   = Close your Address Book and return to the main board"
  803.         TSTRING051(2, 1) = STRING041 + "[" + STRING042 + "A" + STRING041 + "]" + STRING042 + "dd" + STRING041 + " a new entry to your Address Book"
  804.         TSTRING051(2, 2) = STRING041 + "[" + STRING042 + "E" + STRING041 + "]" + STRING042 + "dit" + STRING041 + " an existing Address Book entry"
  805.         TSTRING051(2, 3) = STRING041 + "[" + STRING042 + "D" + STRING041 + "]" + STRING042 + "elete" + STRING041 + " an existing Address Book entry"
  806.         TSTRING051(2, 4) = STRING041 + "[" + STRING042 + "S" + STRING041 + "]" + STRING042 + "ort" + STRING041 + " your entries by Address or Description"
  807.         TSTRING051(2, 5) = STRING041 + "[" + STRING042 + "Q" + STRING041 + "]" + STRING042 + "uit" + STRING041 + " to the Address Book main menu "
  808.         TSTRING051(3, 1) = STRING041 + "[" + STRING042 + "V" + STRING041 + "]" + STRING042 + "iew Mode" + STRING041 + " = Reverse the order of the columns in the list"
  809.         TSTRING051(3, 2) = STRING041 + "[" + STRING042 + "A" + STRING041 + "]" + STRING042 + "uto Record ON/OFF" + STRING041 + " = Toggle automatic entry of addresses"
  810.         TSTRING051(3, 3) = STRING041 + "[" + STRING042 + "Q" + STRING041 + "]" + STRING042 + "uit" + STRING041 + " to the Address Book main menu "
  811.         PrintLn 
  812.         PrintLn 
  813.         Select Case (INTEGER029)
  814.             Case INTEGER030
  815.                 PrintLn STRING040 + "[" + STRING042 + "MAIN MENU HELP" + STRING040 + "]"
  816.                 PrintLn 
  817.                 For INTEGER021 = 1 To 4
  818.                     If (INTEGER021 == 1) Then
  819.                         If (BOOLEAN008) Goto LABEL044
  820.                         PrintLn TSTRING051(1, INTEGER021)
  821.                         :LABEL044
  822.                         Continue
  823.                     Endif
  824.                     PrintLn TSTRING051(1, INTEGER021)
  825.                 Next
  826.             Case INTEGER032
  827.                 PrintLn STRING040 + "[" + STRING042 + "MODIFY MENU HELP" + STRING040 + "]"
  828.                 PrintLn 
  829.                 For INTEGER021 = 1 To 5
  830.                     PrintLn TSTRING051(2, INTEGER021)
  831.                 Next
  832.             Case INTEGER031
  833.                 PrintLn STRING040 + "[" + STRING042 + "SETUP MENU HELP" + STRING040 + "]"
  834.                 PrintLn 
  835.                 For INTEGER021 = 1 To 3
  836.                     PrintLn TSTRING051(3, INTEGER021)
  837.                 Next
  838.         End Select
  839.         Wait
  840.         Return
  841.     Endif
  842.     :LABEL045
  843.     PrintLn 
  844.     Select Case (INTEGER039)
  845.         Case 1
  846.             PrintLn TSTRING050(1) + " ( " + STRING049 + " ) "
  847.         Case 4
  848.             PrintLn TSTRING050(1) + " ( " + STRING049 + " ) "
  849.         Case Else
  850.             PrintLn TSTRING050(INTEGER039)
  851.     End Select
  852.     PrintLn 
  853.     Wait
  854.     End
  855.     :LABEL046
  856.     If (STRING004 <> I2S(Len(STRING003) + 3, 10) + I2S(Asc(STRING003) + 3, 10)) Then
  857.         STRING003 = "UNREGISTERED"
  858.         BOOLEAN001 = 1
  859.         BOOLEAN002 = 1
  860.     Else
  861.         BOOLEAN006 = 1
  862.     Endif
  863.     Return
  864.     :LABEL047
  865.     BOOLEAN008 = 1
  866.     If (CurSec() >= INTEGER004) Then
  867.         Gosub LABEL028
  868.         Gosub LABEL036
  869.         Gosub LABEL040
  870.         Gosub LABEL046
  871.         Gosub LABEL057
  872.         STRING036 = ""
  873.         If (TokCount() == 1) Then
  874.             STRING036 = GetToken()
  875.         Endif
  876.         If (BOOLEAN006 && ((STRING036 == "QUIET") || (STRING036 == "Q"))) Goto LABEL048
  877.         SaveScrn
  878.         Cls
  879.         DispFile STRING005, 2 + 1 + 4
  880.         PrintLn 
  881.         PrintLn Space(7) + STRING042 + "Running " + STRING026 + " registered to [" + STRING040 + STRING003 + STRING042 + "]"
  882.         PrintLn 
  883.         PrintLn 
  884.         Wait
  885.         :LABEL048
  886.         Goto LABEL003
  887.     Else
  888.         PrintLn 
  889.         PrintLn 
  890.         PrintLn STRING040 + "Insufficent security to open Address Book."
  891.         PrintLn 
  892.         Wait
  893.     Endif
  894.     End
  895.     :LABEL049
  896.     If (CurSec() >= INTEGER004) Then
  897.         Gosub LABEL028
  898.         Gosub LABEL036
  899.         Gosub LABEL040
  900.         Gosub LABEL046
  901.         PrintLn 
  902.         PrintLn "@X3B┌────────────────────────────────────────@X30┐@X07"
  903.         PrintLn "@X3B│ @X3E INTERNET ADDRESS BOOK: Status Report  @X30│@X07"
  904.         PrintLn "@X3B└@X30────────────────────────────────────────┘@X07"
  905.         PrintLn 
  906.         PrintLn STRING041 + "Capacity......: " + STRING042 + "You can store up to " + STRING044 + I2S(INTEGER028, 10) + STRING042 + " entries in your address book"
  907.         PrintLn STRING041 + "Entries.......: " + STRING042 + "There are " + STRING040 + I2S(INTEGER009, 10) + STRING042 + " entries in your address book"
  908.         PrintLn STRING041 + "Auto Record...: " + STRING042 + "Auto Record is " + STRING044 + STRING033
  909.         PrintLn STRING041 + "View Mode.....: " + STRING042 + "Display is set to " + TSTRING035(BOOLEAN005)
  910.         PrintLn STRING041 + "Version.......: " + STRING042 + STRING026
  911.         PrintLn STRING041 + "Registration..: " + STRING042 + "IAB is Registered to [" + STRING040 + STRING003 + STRING042 + "]"
  912.         If (INTEGER003 == 1) Then
  913.             PrintLn STRING040 + ">>> ADDITIONAL SYSOP INFORMATION <<<"
  914.             PrintLn STRING041 + "SYSOP Name..........: " + STRING042 + STRING002
  915.             PrintLn STRING041 + "BBS Name............: " + STRING042 + STRING003
  916.             PrintLn STRING041 + "Registration Number.: " + STRING042 + STRING004
  917.             PrintLn STRING041 + "Welcome File/Path...: " + STRING042 + STRING005
  918.             PrintLn STRING041 + "Header File/Path....: " + STRING042 + STRING006
  919.             PrintLn STRING041 + "Data File Pathname..: " + STRING042 + STRING007
  920.             PrintLn STRING041 + "Min Req Sec Level...: " + STRING042 + I2S(INTEGER004, 10)
  921.             PrintLn STRING041 + "Email Conference No.: " + STRING042 + I2S(INTEGER005, 10)
  922.             If (BOOLEAN001) Then
  923.                 PrintLn STRING041 + "Caller Log Writing..: " + STRING042 + "ON"
  924.                 Goto LABEL050
  925.             Endif
  926.             PrintLn STRING041 + "Caller Log Writing..: " + STRING042 + "OFF"
  927.             :LABEL050
  928.             If (BOOLEAN002) Then
  929.                 PrintLn STRING041 + "Keep Backup Files...: " + STRING042 + "ON"
  930.                 Goto LABEL051
  931.             Endif
  932.             PrintLn STRING041 + "Keep Backup Files...: " + STRING042 + "OFF"
  933.             :LABEL051
  934.             If (BOOLEAN003) Then
  935.                 PrintLn STRING041 + "UUCP Mode...........: " + STRING042 + "ON"
  936.                 Goto LABEL052
  937.             Endif
  938.             PrintLn STRING041 + "UUCP Mode...........: " + STRING042 + "OFF"
  939.             :LABEL052
  940.             PrintLn 
  941.         Endif
  942.         PrintLn 
  943.     Else
  944.         PrintLn 
  945.         PrintLn 
  946.         PrintLn STRING040 + "Insufficent security to get Address Book status."
  947.         PrintLn 
  948.     Endif
  949.     Wait
  950.     End
  951.     :LABEL053
  952.     STRING028 = ""
  953.     PrintLn 
  954.     Input STRING020, STRING028
  955.     INTEGER035 = GetX()
  956.     INTEGER036 = GetY()
  957.     Backup INTEGER035 - 1
  958.     ClrEol
  959.     AnsiPos 1, INTEGER036 - 1
  960.     If (STRING028 == "") Then
  961.         STRING039 = STRING046 + STRING046
  962.     Else
  963.         STRING039 = STRING028 + STRING046
  964.     Endif
  965.     AnsiPos 1, INTEGER038
  966.     ClrEol
  967.     Goto LABEL059
  968.     End
  969.     :LABEL054
  970.     If (BOOLEAN003) Goto LABEL055
  971.     STRING037 = STRING036
  972.     INTEGER022 = TokCount()
  973.     If (INTEGER022 > 0) Then
  974.         For INTEGER021 = 1 To INTEGER022
  975.             STRING037 = STRING037 + " " + GetToken()
  976.         Next
  977.     Endif
  978.     Goto LABEL059
  979.     Goto LABEL056
  980.     :LABEL055
  981.     If (Upper(STRING036) <> "UUCP") STRING038 = STRING036
  982.     INTEGER022 = TokCount()
  983.     If (INTEGER022 > 0) Then
  984.         For INTEGER021 = 1 To INTEGER022
  985.             If (STRING038 == "") Then
  986.                 STRING038 = GetToken()
  987.                 Continue
  988.             Endif
  989.             STRING038 = STRING038 + "," + GetToken()
  990.         Next
  991.     Endif
  992.     :LABEL056
  993.     Goto LABEL053
  994.     :LABEL057
  995.     If (BOOLEAN001) Log "Opened " + STRING026 + " at " + TimeAp(Time()) , 0
  996.     Return
  997.     :LABEL058
  998.     If (BOOLEAN001) Log "Closed " + STRING026 + " at " + TimeAp(Time()) , 0
  999.     Return
  1000.     :LABEL059
  1001.     If (BOOLEAN003) Goto LABEL060
  1002.     If (STRING038 == "") Then
  1003.         KbdStuff "E" + STRING046 + STRING037
  1004.     Else
  1005.         KbdStuff "E" + STRING046 + STRING038 + STRING039
  1006.     Endif
  1007.     Goto LABEL061
  1008.     :LABEL060
  1009.     If (STRING038 == "") Then
  1010.         KbdStuff "E" + STRING046 + STRING037
  1011.     Else
  1012.         KbdStuff "E" + STRING046 + "UUCP" + STRING046 + STRING039 + STRING046 + "To: " + STRING038 + STRING046
  1013.     Endif
  1014.     :LABEL061
  1015.     End
  1016.     :LABEL062
  1017.     STRING023 = TSTRING010(INTEGER023)
  1018.     STRING038 = STRING023 + STRING046
  1019.     RestScrn
  1020.     Print STRING023
  1021.     Gosub LABEL058
  1022.     If (!BOOLEAN008) Goto LABEL053
  1023.     End
  1024.     :LABEL063
  1025.     If (Exist(STRING048)) Then
  1026.         Delete STRING048
  1027.     Endif
  1028.     If ((STRING002 <> "") && (Upper(STRING002) <> "MICHAEL WALTER")) Then
  1029.         TSTRING027(1) = STRING002
  1030.         Tokenize TSTRING027(1)
  1031.         If (TokCount() == 2) Then
  1032.             TSTRING027(2) = GetToken()
  1033.             TSTRING027(3) = GetToken()
  1034.         Endif
  1035.     Else
  1036.         TSTRING027(1) = "SYSOP"
  1037.     Endif
  1038.     FOpen 1, STRING048, 1, 3
  1039.     FPutLn 1, "<Message auto-generated by IAB:Internet Address Book>"
  1040.     FPutLn 1, " "
  1041.     If (TSTRING027(1) <> "SYSOP") Then
  1042.         FPutLn 1, "Dear " + TSTRING027(2) + ","
  1043.         FPutLn 1, " "
  1044.     Endif
  1045.     FPutLn 1, "Congratulations!  It looks like you've discovered yet another"
  1046.     FPutLn 1, "useful add-on feature for your users...IAB!"
  1047.     FPutLn 1, " "
  1048.     FPutLn 1, "I have written to you because " + STRING001
  1049.     FPutLn 1, "has just saved entry #20 into Internet Address Book!"
  1050.     FPutLn 1, " "
  1051.     FPutLn 1, " "
  1052.     FPutLn 1, "Here comes the Registration Pitch..."
  1053.     FPutLn 1, "------------------------------------"
  1054.     FPutLn 1, "If you continue to use IAB on your board, please register it."
  1055.     FPutLn 1, "An IAB license to cover all of your BBS nodes is only $15."
  1056.     FPutLn 1, " "
  1057.     FPutLn 1, "Registration details can be found in the REGISTER.FRM file"
  1058.     FPutLn 1, "that came with your original IAB zip file.  You can register"
  1059.     FPutLn 1, "on-line via credit card and instantly receive your registration"
  1060.     FPutLn 1, "number... "
  1061.     FPutLn 1, "            CALL:  Data-Base BBS on 908-735-2180"
  1062.     FPutLn 1, " "
  1063.     FPutLn 1, "     then..., from the main menu prompt, type: IABREG "
  1064.     FPutLn 1, " "
  1065.     FPutLn 1, "Alternatively, you can mail, fax, or e-mail your completed "
  1066.     FPutLn 1, "IAB Registration Form to us (see REGISTER.FRM for details)."
  1067.     FPutLn 1, " "
  1068.     FPutLn 1, "Thank you,"
  1069.     FPutLn 1, " "
  1070.     FPutLn 1, "Michael Walter                       SQLCraft Software"
  1071.     FPutLn 1, "Author - IAB:Internet Address Book   sqlcraft@data-base.com"
  1072.     FPutLn 1, " "
  1073.     FClose 1
  1074.     Message 0, TSTRING027(1), "Michael Walter", "IAB is a hit!", "R", 0, 0, 0, STRING048
  1075.     Return
  1076.     :LABEL064
  1077.     If (Exist(PPEPath() + "BETATEST.IAB")) Goto LABEL065
  1078.     FOpen 1, PPEPath() + "BETATEST.IAB", 1, 3
  1079.     GetUser
  1080.     FPutLn 1, "<Message auto-generated by IAB:Internet Address Book>"
  1081.     FPutLn 1, " "
  1082.     FPutLn 1, "Dear Michael,"
  1083.     FPutLn 1, " "
  1084.     FPutLn 1, "The following system has installed a beta version of IAB"
  1085.     FPutLn 1, "and may need your support:"
  1086.     FPutLn 1, " "
  1087.     FPutLn 1, "  SYSOP Name..........: " + STRING002
  1088.     FPutLn 1, "  City,State..........: " + U_City
  1089.     FPutLn 1, "  Home/Voice Phone....: " + U_HVPhone
  1090.     FPutLn 1, "  Business/Data Phone.: " + U_BDPhone
  1091.     FPutLn 1, "  BBS Name............: " + STRING003
  1092.     FPutLn 1, "  Registration Number.: " + STRING004
  1093.     FPutLn 1, "  Welcome File/Path...: " + STRING005
  1094.     FPutLn 1, "  Header File/Path....: " + STRING006
  1095.     FPutLn 1, "  Data File Pathname..: " + STRING007
  1096.     FPutLn 1, "  Min Req Sec Level...: " + I2S(INTEGER004, 10)
  1097.     FPutLn 1, "  Email Conference No.: " + I2S(INTEGER005, 10)
  1098.     FPutLn 1, " "
  1099.     FClose 1
  1100.     Message INTEGER005, "sqlcraft@data-base.com", STRING002, "IAB Beta Installed", "R", Date(), 0, 1, PPEPath() + "BETATEST.IAB"
  1101.     :LABEL065
  1102.     Return
  1103.  
  1104. ;------------------------------------------------------------------------------
  1105. ;
  1106. ; Usage report (before postprocessing)
  1107. ;
  1108. ; ■ Statements used :
  1109. ;
  1110. ;    10      End
  1111. ;    2       Cls
  1112. ;    2       ClrEol
  1113. ;    7       Wait
  1114. ;    248     Goto 
  1115. ;    282     Let 
  1116. ;    5       Print 
  1117. ;    72      PrintLn 
  1118. ;    148     If 
  1119. ;    2       DispFile 
  1120. ;    1       Input 
  1121. ;    4       FCreate 
  1122. ;    8       FOpen 
  1123. ;    2       FAppend 
  1124. ;    16      FClose 
  1125. ;    23      FGet 
  1126. ;    71      FPutLn 
  1127. ;    2       GetUser
  1128. ;    4       Delete 
  1129. ;    3       Log 
  1130. ;    10      InputStr 
  1131. ;    59      Gosub 
  1132. ;    32      Return
  1133. ;    5       Inc 
  1134. ;    2       Dec 
  1135. ;    1       Newline
  1136. ;    2       Tokenize 
  1137. ;    1       Shell 
  1138. ;    7       KbdStuff 
  1139. ;    2       AnsiPos 
  1140. ;    1       Backup 
  1141. ;    2       Message 
  1142. ;    2       SaveScrn
  1143. ;    3       RestScrn
  1144. ;    1       Rename 
  1145. ;    2       Redim 
  1146. ;
  1147. ;
  1148. ; ■ Functions used :
  1149. ;
  1150. ;    2       /
  1151. ;    1       %
  1152. ;    509     +
  1153. ;    21      -
  1154. ;    69      ==
  1155. ;    12      <>
  1156. ;    29      <
  1157. ;    22      <=
  1158. ;    18      >
  1159. ;    41      >=
  1160. ;    140     !
  1161. ;    59      &&
  1162. ;    23      ||
  1163. ;    8       Len(
  1164. ;    8       Upper()
  1165. ;    2       Mid()
  1166. ;    7       Left()
  1167. ;    1       Right()
  1168. ;    3       Space()
  1169. ;    5       Ferr()
  1170. ;    1       Chr()
  1171. ;    1       Asc()
  1172. ;    4       InStr()
  1173. ;    6       Trim()
  1174. ;    1       Date()
  1175. ;    3       Time()
  1176. ;    1       U_Name()
  1177. ;    3       TimeAp()
  1178. ;    2       NoChar()
  1179. ;    6       Replace()
  1180. ;    8       Mask_Ascii()
  1181. ;    1       CurConf()
  1182. ;    14      PPEPath()
  1183. ;    3       CurSec()
  1184. ;    7       GetToken()
  1185. ;    12      Exist()
  1186. ;    13      I2S()
  1187. ;    3       S2I()
  1188. ;    1       TokenStr()
  1189. ;    3       GetX()
  1190. ;    4       GetY()
  1191. ;    5       TokCount()
  1192. ;    1       U_RecNum()
  1193. ;
  1194. ;------------------------------------------------------------------------------
  1195. ;
  1196. ; Analysis flags : S
  1197. ;
  1198. ; S - Shell to DOS ■ 5
  1199. ;     This may be normal if the PPE need to execute an external command,
  1200. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  1201. ;     or usefull (sorting, maintenance,...). Check!
  1202. ;     ■ Search for : SHELL
  1203. ;
  1204. ;------------------------------------------------------------------------------
  1205. ;
  1206. ; Postprocessing report
  1207. ;
  1208. ;    19      For/Next
  1209. ;    3       While/EndWhile
  1210. ;    84      If/Then or If/Then/Else
  1211. ;    5       Select Case
  1212. ;
  1213. ;------------------------------------------------------------------------------
  1214. ;                 AEGiS Corp - Break the routines, code against the machines!
  1215. ;------------------------------------------------------------------------------
  1216.