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