home *** CD-ROM | disk | FTP | other *** search
/ New Horizons Shareware Collection / HORIZONS1.BIN / SPELL.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-11-01  |  16KB  |  1,015 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Date     DATE001
  25.     Integer  INTEGER001
  26.     Integer  INTEGER002
  27.     Integer  INTEGER003
  28.     Integer  INTEGER004
  29.     Integer  INTEGER005
  30.     Integer  INTEGER006
  31.     Integer  INTEGER007
  32.     Integer  INTEGER008
  33.     Integer  INTEGER009
  34.     Integer  INTEGER013
  35.     Integer  INTEGER014
  36.     Integer  INTEGER016
  37.     Integer  INTEGER017
  38.     Integer  INTEGER018
  39.     Integer  INTEGER021
  40.     Integer  INTEGER025
  41.     Integer  INTEGER026
  42.     Integer  INTEGER027
  43.     Integer  INTEGER028
  44.     Integer  INTEGER029
  45.     String   STRING001
  46.     String   STRING002
  47.     String   STRING003
  48.     String   STRING004
  49.     String   STRING005
  50.     String   STRING006
  51.     String   STRING007
  52.     String   STRING008
  53.     String   STRING009
  54.     String   TSTRING010(8)
  55.     String   STRING011
  56.     String   STRING012
  57.     String   STRING013
  58.     String   STRING014
  59.     String   STRING015
  60.     String   STRING016
  61.     String   STRING017
  62.     String   STRING020
  63.     String   STRING021
  64.     String   STRING022
  65.     String   STRING023
  66.     String   STRING025
  67.     String   STRING027
  68.     String   STRING031
  69.     String   STRING032
  70.     String   STRING033
  71.     String   STRING034
  72.     String   STRING035
  73.     String   STRING036
  74.     String   STRING038
  75.     String   STRING040
  76.     String   STRING041
  77.     String   STRING042
  78.     String   STRING043
  79.     String   STRING044
  80.     String   STRING046
  81.     Int      INT001
  82.     Int      INT002
  83.     Declare  Function FUNCTION001(String STRING024) String
  84.     Declare  Function FUNCTION002(String STRING026) String
  85.     Declare  Function FUNCTION003() Integer
  86.     Declare  Function FUNCTION004() Integer
  87.     Declare  Function FUNCTION005() Integer
  88.     Declare  Function FUNCTION006(String STRING018, String STRING019) String
  89.     Declare  Procedure PROC001()
  90.     Declare  Procedure PROC002()
  91.     Declare  Procedure PROC003()
  92.     Declare  Procedure PROC004()
  93.     Declare  Procedure PROC005()
  94.     Declare  Procedure PROC006(Integer INTEGER020)
  95.     Declare  Procedure PROC007()
  96.     Declare  Procedure PROC008(Integer INTEGER019)
  97.     Declare  Procedure PROC009(Integer INTEGER015)
  98.     Declare  Procedure PROC010(Var Integer INTEGER010, Var Integer INTEGER011, Var Integer INTEGER012, Var String STRING028, String STRING029, Var String STRING030)
  99.     Declare  Procedure PROC011(Integer INTEGER023, Integer INTEGER024, String STRING039)
  100.     Declare  Procedure PROC012(String STRING037)
  101.     Declare  Procedure PROC013()
  102.     Declare  Procedure PROC014()
  103.     Declare  Procedure PROC016(String STRING045)
  104.  
  105. ;------------------------------------------------------------------------------
  106.  
  107.     STRING001 = "PCB Spell v1.11"
  108.     STRING002 = "Copyright (c) 1994, Brandon M. Bachman, All Rights Reserved."
  109.     INTEGER005 = 2
  110.     STRING007 = PPEPath() + "TEMP." + String(PcbNode())
  111.     STRING008 = PPEPath() + "MSG." + String(PcbNode())
  112.     STRING009 = PPEPath() + "NEWMSG." + String(PcbNode())
  113.     INTEGER003 = 2
  114.     STRING003 = "@X0CAuthor (Brandon M. Bachman)"
  115.     STRING004 = "[30 Day Evaluation]"
  116.     INTEGER001 = 100
  117.     STRING005 = "@X0CEVALUATION"
  118.     STRING006 = "10-21-95"
  119.     INTEGER009 = 1
  120.     INTEGER008 = 1
  121.     INTEGER007 = 1
  122.     STRING016 = ""
  123.     BOOLEAN001 = 1
  124.     BOOLEAN002 = 0
  125.     BOOLEAN003 = 0
  126.     PROC014()
  127.     PROC001()
  128.     INTEGER006 = FUNCTION003()
  129.     PROC006(INTEGER006)
  130.     PROC005()
  131.     PROC007()
  132.     PROC009(INTEGER008)
  133.     INTEGER004 = FUNCTION004()
  134.     INTEGER002 = FUNCTION005()
  135.     FGet INTEGER002, STRING016
  136.     While (1) Do
  137.         If ((BOOLEAN002 <> 1) && (BOOLEAN003 <> 1)) Then
  138.             PROC010(INTEGER008, INTEGER009, INTEGER007, STRING014, STRING015, STRING016)
  139.         Endif
  140.         BOOLEAN003 = 0
  141.         AnsiPos 31, 23
  142.         Print " "
  143.         AnsiPos 31, 23
  144.         InputStr "_", STRING013, 10, 1, "12345678QENASRI", 8
  145.         STRING015 = ""
  146.         If (STRING013 == "1") Then
  147.             If (BOOLEAN002 <> 1) Then
  148.                 STRING015 = FUNCTION006(TSTRING010(1), STRING014)
  149.             Endif
  150.             Continue
  151.         Endif
  152.         If (STRING013 == "2") Then
  153.             If (BOOLEAN002 <> 1) Then
  154.                 STRING015 = FUNCTION006(TSTRING010(2), STRING014)
  155.             Endif
  156.             Continue
  157.         Endif
  158.         If (STRING013 == "3") Then
  159.             If (BOOLEAN002 <> 1) Then
  160.                 STRING015 = FUNCTION006(TSTRING010(3), STRING014)
  161.             Endif
  162.             Continue
  163.         Endif
  164.         If (STRING013 == "4") Then
  165.             If (BOOLEAN002 <> 1) Then
  166.                 STRING015 = FUNCTION006(TSTRING010(4), STRING014)
  167.             Endif
  168.             Continue
  169.         Endif
  170.         If (STRING013 == "5") Then
  171.             If (BOOLEAN002 <> 1) Then
  172.                 STRING015 = FUNCTION006(TSTRING010(5), STRING014)
  173.             Endif
  174.             Continue
  175.         Endif
  176.         If (STRING013 == "6") Then
  177.             If (BOOLEAN002 <> 1) Then
  178.                 STRING015 = FUNCTION006(TSTRING010(6), STRING014)
  179.             Endif
  180.             Continue
  181.         Endif
  182.         If (STRING013 == "7") Then
  183.             If (BOOLEAN002 <> 1) Then
  184.                 STRING015 = FUNCTION006(TSTRING010(7), STRING014)
  185.             Endif
  186.             Continue
  187.         Endif
  188.         If (STRING013 == "8") Then
  189.             If (BOOLEAN002 <> 1) Then
  190.                 STRING015 = FUNCTION006(TSTRING010(8), STRING014)
  191.             Endif
  192.             Continue
  193.         Endif
  194.         If (STRING013 == "E") Then
  195.             If (BOOLEAN002 <> 1) Then
  196.                 AnsiPos 3, 15
  197.                 InputStr "_", STRING015, 15, 79 - Len(STRING016) + Len(STRING014), Mask_Ascii(), 1024
  198.             Endif
  199.             Continue
  200.         Endif
  201.         If (STRING013 == "N") Then
  202.             Continue
  203.         Endif
  204.         If (STRING013 == "A") Then
  205.             If (BOOLEAN002 <> 1) Then
  206.                 PROC012(STRING014)
  207.             Endif
  208.             Continue
  209.         Endif
  210.         If (STRING013 == "S") Then
  211.             PROC011(INTEGER008, INTEGER007, STRING016)
  212.             PROC013()
  213.             KbdStuff "K " + String(INTEGER006)
  214.             End
  215.             Continue
  216.         Endif
  217.         If (STRING013 == "Q") Then
  218.             PROC016("")
  219.             AnsiPos 3, 15
  220.             InputStr "Quit (Abort Changes) - Are you sure", STRING017, 11, 1, "YNyn", 4
  221.             If (Upper(STRING017) == "Y") Then
  222.                 PROC013()
  223.                 Cls
  224.                 End
  225.                 Goto LABEL001
  226.             Endif
  227.             BOOLEAN003 = 1
  228.             PROC016(STRING014)
  229.             :LABEL001
  230.             Continue
  231.         Endif
  232.         If (STRING013 == "R") Then
  233.             SaveScrn
  234.             RestScrn
  235.             BOOLEAN003 = 1
  236.             Continue
  237.         Endif
  238.         If (STRING013 == "I") Then
  239.             SaveScrn
  240.             PROC002()
  241.             RestScrn
  242.             BOOLEAN003 = 1
  243.             Continue
  244.         Endif
  245.     EndWhile
  246.     End
  247.  
  248. ;------------------------------------------------------------------------------
  249.  
  250.     Function FUNCTION006(String STRING018, String STRING019) String
  251.  
  252.     Int      INT001
  253.     String   STRING021
  254.     String   STRING022
  255.     String   STRING023
  256.     String   STRING024
  257.  
  258.     INT001 = 1
  259.     STRING021 = Mid(Lower(STRING018), INT001, 1)
  260.     STRING022 = Mid(STRING019, INT001, 1)
  261.     If (STRING019 == Upper(STRING019)) Then
  262.         FUNCTION006 = Upper(STRING018)
  263.         Return
  264.     Endif
  265.     If (STRING019 == Lower(STRING019)) Then
  266.         FUNCTION006 = Lower(STRING018)
  267.         Return
  268.     Endif
  269.     While ((STRING021 <> " ") && (STRING022 <> " ")) Do
  270.         If (Asc(STRING021) <> Asc(STRING022)) Then
  271.             If (Asc("[") > Asc(STRING022)) Then
  272.                 STRING021 = Chr(Asc(STRING021) - Asc("a") + Asc("A"))
  273.             Endif
  274.         Endif
  275.         STRING023 = STRING023 + STRING021
  276.         Inc INT001
  277.         STRING021 = Mid(STRING018, INT001, 1)
  278.         STRING022 = Mid(STRING019, INT001, 1)
  279.     EndWhile
  280.     If (Len(STRING023) <> Len(STRING018)) Then
  281.         STRING023 = STRING023 + Mid(STRING018, INT001, Len(STRING018) - INT001)
  282.     Endif
  283.     FUNCTION006 = STRING023
  284.  
  285.     EndFunc
  286.  
  287.  
  288. ;------------------------------------------------------------------------------
  289.  
  290.     Function FUNCTION001(String STRING024) String
  291.  
  292.     String   STRING026
  293.  
  294.     STRING024 = RTrim(STRING024, "?")
  295.     STRING024 = RTrim(STRING024, ".")
  296.     STRING024 = RTrim(STRING024, "-")
  297.     STRING024 = RTrim(STRING024, "!")
  298.     STRING024 = RTrim(STRING024, "$")
  299.     STRING024 = RTrim(STRING024, String(Chr(34)))
  300.     STRING024 = RTrim(STRING024, "*")
  301.     STRING024 = RTrim(STRING024, ":")
  302.     STRING024 = RTrim(STRING024, "(")
  303.     STRING024 = RTrim(STRING024, ")")
  304.     STRING024 = RTrim(STRING024, ",")
  305.     STRING024 = RTrim(STRING024, "+")
  306.     STRING024 = RTrim(STRING024, "=")
  307.     STRING024 = RTrim(STRING024, ">")
  308.     STRING024 = RTrim(STRING024, "@X00")
  309.     STRING024 = RTrim(STRING024, "@XFF")
  310.     FUNCTION001 = STRING024
  311.  
  312.     EndFunc
  313.  
  314.  
  315. ;------------------------------------------------------------------------------
  316.  
  317.     Function FUNCTION002(String STRING026) String
  318.  
  319.     Integer  INTEGER010
  320.  
  321.     STRING026 = LTrim(STRING026, "?")
  322.     STRING026 = LTrim(STRING026, ".")
  323.     STRING026 = LTrim(STRING026, "-")
  324.     STRING026 = LTrim(STRING026, "!")
  325.     STRING026 = LTrim(STRING026, "^")
  326.     STRING026 = LTrim(STRING026, "$")
  327.     STRING026 = LTrim(STRING026, String(Chr(34)))
  328.     STRING026 = LTrim(STRING026, "*")
  329.     STRING026 = LTrim(STRING026, ":")
  330.     STRING026 = LTrim(STRING026, "(")
  331.     STRING026 = LTrim(STRING026, ")")
  332.     STRING026 = LTrim(STRING026, ",")
  333.     STRING026 = LTrim(STRING026, "+")
  334.     STRING026 = LTrim(STRING026, "=")
  335.     STRING026 = LTrim(STRING026, ">")
  336.     STRING026 = LTrim(STRING026, "@X00")
  337.     STRING026 = LTrim(STRING026, "@XFF")
  338.     FUNCTION002 = STRING026
  339.  
  340.     EndFunc
  341.  
  342.  
  343. ;------------------------------------------------------------------------------
  344.  
  345.     Procedure PROC010(Var Integer INTEGER010, Var Integer INTEGER011, Var Integer INTEGER012, Var String STRING028, String STRING029, Var String STRING030)
  346.  
  347.     String   STRING031
  348.     String   STRING032
  349.     Integer  INTEGER013
  350.     Integer  INTEGER014
  351.  
  352.     If (STRING029 <> "") Then
  353.         STRING029 = RTrim(STRING029, " ")
  354.         STRING030 = Mid(STRING030, 1, INTEGER012 - 1) + ReplaceStr(Mid(STRING030, INTEGER012, Len(STRING028)), STRING028, STRING029) + Mid(STRING030, INTEGER012 + Len(STRING028), Len(STRING030) + Len(STRING028) - INTEGER012)
  355.         STRING030 = Mid(STRING030, 1, 79)
  356.         AnsiPos 0, INTEGER011 + 2
  357.         Print STRING030
  358.         STRING030 = RTrim(STRING030, " ")
  359.         STRING028 = STRING029
  360.         INTEGER012 = INTEGER012 + Len(STRING029)
  361.         STRING029 = ""
  362.         STRING028 = ""
  363.     Endif
  364.     If (STRING028 <> "") Then
  365.         AnsiPos INTEGER012, INTEGER011 + 2
  366.         Print "@X07" + STRING028 + "@X07"
  367.         INTEGER012 = INTEGER012 + Len(STRING028)
  368.     Endif
  369.     :LABEL002
  370.     If (Ferr(INTEGER002)) Goto LABEL003
  371.     While ((Mid(STRING030, INTEGER012, 1) == " ") && (INTEGER012 < Len(STRING030))) Do
  372.         Inc INTEGER012
  373.     EndWhile
  374.     While (INTEGER012 < Len(STRING030)) Do
  375.         STRING031 = Mid(STRING030, INTEGER012, 255)
  376.         STRING031 = ReplaceStr(STRING031, " ", Chr(0))
  377.         STRING028 = FUNCTION002(STRING031)
  378.         INTEGER012 = Len(STRING031) - Len(STRING028) + INTEGER012
  379.         STRING028 = FUNCTION001(STRING028)
  380.         If (Len(STRING028) > 0) Then
  381.             AnsiPos INTEGER012, INTEGER011 + 2
  382.             Print "@X1F" + STRING028 + "@X07"
  383.             DTop INTEGER005
  384.             DTag INTEGER005, STRING012
  385.             DSeek INTEGER005, RTrim(LTrim(Lower(STRING028), " "), " ")
  386.             DGet INTEGER005, STRING012, STRING032
  387.             If (RTrim(LTrim(Lower(STRING028), " "), " ") <> RTrim(LTrim(STRING032, " "), " ")) Then
  388.                 For INTEGER014 = 1 To 8
  389.                     AnsiPos 58, 14 + INTEGER014
  390.                     Print "                    "
  391.                 Next
  392.                 If (DRecNo(INTEGER005) <> 1) Then
  393.                     DSkip INTEGER005, -4
  394.                     For INTEGER014 = 1 To 8
  395.                         DGet INTEGER005, STRING012, STRING032
  396.                         DSkip INTEGER005, 1
  397.                         AnsiPos 58, 14 + INTEGER014
  398.                         Print STRING032
  399.                         TSTRING010(INTEGER014) = STRING032
  400.                     Next
  401.                 Endif
  402.                 PROC016(STRING028)
  403.                 Return
  404.             Endif
  405.             AnsiPos INTEGER012, INTEGER011 + 2
  406.             Print "@X07" + STRING028 + "@X07"
  407.         Endif
  408.         INTEGER012 = INTEGER012 + Len(STRING028) + 1
  409.         While ((Mid(STRING030, INTEGER012, 1) == " ") && (INTEGER012 < Len(STRING030))) Do
  410.             Inc INTEGER012
  411.         EndWhile
  412.     EndWhile
  413.     INTEGER013 = 0
  414.     Inc INTEGER010
  415.     FPutLn INTEGER004, STRING030
  416.     FSeek INTEGER002, 0, 0
  417.     While (INTEGER013 < INTEGER010) Do
  418.         FGet INTEGER002, STRING030
  419.         Inc INTEGER013
  420.     EndWhile
  421.     INTEGER012 = 1
  422.     If (INTEGER011 > 10) Then
  423.         INTEGER011 = 1
  424.         PROC009(INTEGER010)
  425.     Else
  426.         Inc INTEGER011
  427.     Endif
  428.     Goto LABEL002
  429.     :LABEL003
  430.     PROC016("@X0ESpell check completed!")
  431.     BOOLEAN002 = 1
  432.     STRING028 = ""
  433.  
  434.     EndProc
  435.  
  436.  
  437. ;------------------------------------------------------------------------------
  438.  
  439.     Procedure PROC009(Integer INTEGER015)
  440.  
  441.     Integer  INTEGER016
  442.  
  443.     For INTEGER016 = 1 To 11
  444.         AnsiPos 1, 2 + INTEGER016
  445.         ClrEol
  446.     Next
  447.     For INTEGER016 = INTEGER015 To INTEGER015 + 10
  448.         AnsiPos 1, 3 + INTEGER016 - INTEGER015
  449.         Print ReadLine(STRING007, INTEGER016)
  450.     Next
  451.  
  452.     EndProc
  453.  
  454.  
  455. ;------------------------------------------------------------------------------
  456.  
  457.     Procedure PROC007()
  458.  
  459.     String   STRING033
  460.     Integer  INTEGER017
  461.     Integer  INTEGER018
  462.  
  463.     INTEGER017 = FNext()
  464.     FCreate INTEGER017, STRING007, 1, 0
  465.     If (Ferr(INTEGER017)) Then
  466.         PrintLn 
  467.         PrintLn "@X0CError creating " + STRING007 + ".  Please notify sysop."
  468.         PROC013()
  469.         End
  470.     Endif
  471.     INTEGER018 = FNext()
  472.     FOpen INTEGER018, STRING008, 0, 2
  473.     If (Ferr(INTEGER018)) Then
  474.         PrintLn 
  475.         PrintLn "@X0CError reading from the file " + STRING008 + ".  Please notify sysop."
  476.         PROC013()
  477.         End
  478.     Endif
  479.     FGet INTEGER018, STRING033
  480.     While (STRING033 <> "Message Body:") Do
  481.         FGet INTEGER018, STRING033
  482.     EndWhile
  483.     While (!Ferr(INTEGER017) && !Ferr(INTEGER018)) Do
  484.         FGet INTEGER018, STRING033
  485.         FPutLn INTEGER017, StripAtx(STRING033)
  486.     EndWhile
  487.     FClose INTEGER018
  488.     FClose INTEGER017
  489.  
  490.     EndProc
  491.  
  492.  
  493. ;------------------------------------------------------------------------------
  494.  
  495.     Procedure PROC003()
  496.  
  497.     OpText STRING001
  498.     PrintLn "@CLS@@POFF@@X0F @X1F@OPTEXT:77C@@POS:80@@X07"
  499.     OpText STRING002
  500.     PrintLn "@X0F @X1F@X17@OPTEXT:77C@@POS:80@@X07"
  501.  
  502.     EndProc
  503.  
  504.  
  505. ;------------------------------------------------------------------------------
  506.  
  507.     Procedure PROC005()
  508.  
  509.     Cls
  510.     PROC003()
  511.     Newlines 11
  512.     PrintLn "@X0F @X07┌──────────────────────────────────────────────────┐┌────────────────────────┐"
  513.     PrintLn "@X07 │@X0FReplacement Text                                  @X07││@X0F1@X07)                      │"
  514.     PrintLn "@X07 └──────────────────────────────────────────────────┘│@X0F2@X07)                      │"
  515.     PrintLn "@X07 @X0E#@X06) @X07Replace text with word.      @X0ES@X06) @X07Save text & quit │@X0F3@X07)                      │"
  516.     PrintLn "@X07 @X0EA@X06) @X07Add word to dictionary.      @X0EI@X06) @X07Program Info     │@X0F4@X07)                      │"
  517.     PrintLn "@X07 @X0EN@X06) @X07Next problem, skip.          @X0ER@X06) @X07Refresh Screen   │@X0F5@X07)                      │"
  518.     PrintLn "@X07 @X0EE@X06) @X07Edit text above.                                 │@X0F6@X07)                      │"
  519.     PrintLn "@X07 @X0EQ@X06) @X07Quit (abort changes).                            │@X0F7@X07)                      │"
  520.     PrintLn "@X07                                                     │@X0F8@X07)                      │"
  521.     Print "@X07 @X0APlease enter your selection ( )                     @X07└────────────────────────┘"
  522.  
  523.     EndProc
  524.  
  525.  
  526. ;------------------------------------------------------------------------------
  527.  
  528.     Procedure PROC008(Integer INTEGER019)
  529.  
  530.     PrintLn 
  531.     PrintLn " @X0CMessage #@X0F" + String(INTEGER019) + "@X0C does not exist!"
  532.     PROC013()
  533.     End
  534.  
  535.     EndProc
  536.  
  537.  
  538. ;------------------------------------------------------------------------------
  539.  
  540.     Procedure PROC006(Integer INTEGER020)
  541.  
  542.     String   STRING034
  543.     String   STRING035
  544.  
  545.     Delete STRING008
  546.     MsgToFile CurConf(), INTEGER020, STRING008
  547.     If (FileInf(STRING008, 1) == 1) Then
  548.         FOpen INTEGER003, STRING008, 0, 2
  549.         If (Ferr(INTEGER003)) Then
  550.             PROC008(INTEGER020)
  551.         Endif
  552.     Else
  553.         PROC008(INTEGER020)
  554.     Endif
  555.     FClose INTEGER003
  556.     STRING034 = ReplaceStr(ReadLine(STRING008, 9), "From:", "")
  557.     STRING034 = LTrim(RTrim(STRING034, " "), " ")
  558.     STRING035 = " " + ReadLine(PPEPath() + "spell.cfg", 3)
  559.     If (((STRING034 <> U_Name()) && (U_RecNum(U_Name()) <> 1)) && (InStr(STRING035, " " + String(CurSec())) == 0)) Then
  560.         PrintLn 
  561.         PrintLn "@X0CMessage #@X0F" + String(INTEGER020) + "@X0C is not from you."
  562.         PrintLn "chkstr " + STRING035 + " security >>" + String(CurSec()) + "<<"
  563.         End
  564.     Endif
  565.  
  566.     EndProc
  567.  
  568.  
  569. ;------------------------------------------------------------------------------
  570.  
  571.     Function FUNCTION003() Integer
  572.  
  573.     String   STRING036
  574.     Integer  INTEGER022
  575.  
  576.     STRING036 = TokenStr()
  577.     Tokenize STRING036
  578.     If (TokCount() < 1) Then
  579.         PROC004()
  580.         PROC013()
  581.         End
  582.     Endif
  583.     FUNCTION003 = ToInteger(GetToken())
  584.  
  585.     EndFunc
  586.  
  587.  
  588. ;------------------------------------------------------------------------------
  589.  
  590.     Procedure PROC001()
  591.  
  592.     Integer  INTEGER022
  593.  
  594.     INTEGER022 = 3
  595.     PrintLn 
  596.     PROC003()
  597.     If ((Upper(STRING004) <> Upper(String(PCBMac("@BOARDNAME@")))) && (Upper(STRING005) <> Upper("@X0CEVALUATION"))) Then
  598.         Newline
  599.         PrintLn " @X0EThis copy of PCB Spell has been registered to:"
  600.         PrintLn 
  601.         PrintLn " @X07" + STRING004
  602.         PrintLn " @X07" + STRING003
  603.         PrintLn 
  604.         PrintLn " @X0EHowever this copy is running on the system:"
  605.         PrintLn 
  606.         PrintLn " @X07" + String(PCBMac("@BOARDNAME@"))
  607.         PrintLn 
  608.         PrintLn " @X0FIf you need to update your registration, please contact the author."
  609.         PrintLn " @X0FYou can contact the author at (801) 359-1820 or bbachman@eng.utah.edu"
  610.         PrintLn 
  611.         Wait
  612.         End
  613.     Endif
  614.     If (Upper(STRING004) <> Upper(String(PCBMac("@BOARDNAME@")))) Then
  615.         PrintLn 
  616.         OpText "*** 30 Day Evaluation Copy ***"
  617.         PrintLn "@X0C@OPTEXT:80C@"
  618.         Delay ((2 * INTEGER022) * 182) / 10
  619.         Log "PCB Spell - 30 Day Evaluation", 0
  620.     Else
  621.         Log "PCB Spell - Thank you for your registration!", 0
  622.     Endif
  623.     If ((Upper(STRING004) == Upper(String(PCBMac("@BOARDNAME@")))) && (INTEGER001 < String(PcbNode()))) Then
  624.         PrintLn 
  625.         PrintLn " @X0CAlthough this copy of PCB Spell is registered.  It is only registered"
  626.         PrintLn " @X0Cfor @X0F" + String(INTEGER001) + "@X0C nodes.  You are calling on node @X0F" + String(PCBMac("@NODE@")) + "@X0C which is higher than the"
  627.         PrintLn " @X0Cnumber registerd for.   Please encourage your sysop to upgrade his"
  628.         PrintLn " @X0Cregistration."
  629.         PrintLn 
  630.         Log "PCB Spell is registered for " + String(INTEGER001) + " nodes.  Please upgrade.", 0
  631.         Delay ((3 * INTEGER022) * 182) / 10
  632.         Wait
  633.         End
  634.     Endif
  635.  
  636.     EndProc
  637.  
  638.  
  639. ;------------------------------------------------------------------------------
  640.  
  641.     Procedure PROC002()
  642.  
  643.     Cls
  644.     PROC003()
  645.     Newline
  646.     PrintLn " @X0ERegistered to:"
  647.     PrintLn 
  648.     PrintLn "     @X07Name: @X0F" + STRING003
  649.     If (Upper(STRING004) <> Upper(String(PCBMac("@BOARDNAME@")))) Then
  650.         PrintLn "      @X07BBS: @X0C[30 Day Evaluation Copy]"
  651.     Else
  652.         PrintLn "      @X07BBS: @X0F" + STRING004
  653.     Endif
  654.     PrintLn " @X07Serial #: @X0F" + STRING005
  655.     PrintLn "    @X07Nodes: @X0F" + String(INTEGER001)
  656.     PrintLn "     @X07Date: @X0F" + String(STRING006)
  657.     Newlines 2
  658.     PrintLn " @X0EPCB Spell was written by Brandon M. Bachman.  You may reach the author at:"
  659.     PrintLn 
  660.     PrintLn " @X0BBrandon M. Bachman        @X09The Light House BBS          @X0BRIME -> LIGHTHOUSE"
  661.     PrintLn " @X0B270 E. 5th Ave. #7        @X09Support (1) Conference       @X0Bbbachman@eng.utah.edu"
  662.     PrintLn " @X0BSLC UT  84103             @X09(801) 359-1820"
  663.     Newlines 2
  664.     Wait
  665.  
  666.     EndProc
  667.  
  668.  
  669. ;------------------------------------------------------------------------------
  670.  
  671.     Procedure PROC004()
  672.  
  673.     PrintLn 
  674.     PrintLn " @X0FUSAGE: @X0ESPELL #"
  675.     PrintLn 
  676.     PrintLn " @X07Where @X0E#@X07 is the message number you would like to spell check."
  677.     Newlines 2
  678.     Wait
  679.  
  680.     EndProc
  681.  
  682.  
  683. ;------------------------------------------------------------------------------
  684.  
  685.     Procedure PROC012(String STRING037)
  686.  
  687.     String   STRING038
  688.  
  689.     STRING038 = " " + ReadLine(PPEPath() + "spell.cfg", 4)
  690.     If (InStr(STRING038, " " + String(CurSec())) <> 0) Then
  691.         DNew INTEGER005
  692.         DPut INTEGER005, STRING012, Lower(STRING037)
  693.         DAdd INTEGER005
  694.     Else
  695.         PROC016("@X0CSorry, you are not allowed to add words.")
  696.         Delay 27
  697.     Endif
  698.  
  699.     EndProc
  700.  
  701.  
  702. ;------------------------------------------------------------------------------
  703.  
  704.     Procedure PROC013()
  705.  
  706.     DClose INTEGER005
  707.     FCloseAll
  708.     If (FileInf(STRING007, 1) == 1) Then
  709.         Delete STRING007
  710.     Endif
  711.     If (FileInf(STRING008, 1) == 1) Then
  712.         Delete STRING008
  713.     Endif
  714.     If (FileInf(STRING009, 1) == 1) Then
  715.         Delete STRING009
  716.     Endif
  717.  
  718.     EndProc
  719.  
  720.  
  721. ;------------------------------------------------------------------------------
  722.  
  723.     Procedure PROC011(Integer INTEGER023, Integer INTEGER024, String STRING039)
  724.  
  725.     String   STRING040
  726.     String   STRING041
  727.     String   STRING042
  728.     String   STRING043
  729.     String   STRING044
  730.     Int      INT002
  731.     Boolean  BOOLEAN004
  732.     Date     DATE001
  733.  
  734.     If (BOOLEAN002 <> 1) Then
  735.         FPutLn INTEGER004, STRING039
  736.         INT002 = 0
  737.         FSeek INTEGER002, 0, 0
  738.         While (INT002 < INTEGER023) Do
  739.             FGet INTEGER002, STRING039
  740.             Inc INT002
  741.         EndWhile
  742.         :LABEL004
  743.         If (Ferr(INTEGER002)) Goto LABEL005
  744.         FGet INTEGER002, STRING039
  745.         FPutLn INTEGER004, STRING039
  746.         Goto LABEL004
  747.     Endif
  748.     :LABEL005
  749.     FClose STRING009
  750.     DATE001 = 0
  751.     STRING044 = ReadLine(STRING008, 7)
  752.     STRING040 = Right(STRING044, Len(STRING044) - 18)
  753.     STRING044 = ReadLine(STRING008, 9)
  754.     STRING041 = Right(STRING044, Len(STRING044) - 18)
  755.     STRING044 = ReadLine(STRING008, 10)
  756.     STRING042 = Right(STRING044, Len(STRING044) - 18)
  757.     STRING044 = ReadLine(STRING008, 13)
  758.     STRING044 = Right(STRING044, Len(STRING044) - 18)
  759.     If (STRING044 <> "") Then
  760.         BOOLEAN004 = 1
  761.     Else
  762.         BOOLEAN004 = 0
  763.     Endif
  764.     STRING044 = ReadLine(STRING008, 1)
  765.     STRING043 = Right(STRING044, Len(STRING044) - 18)
  766.     If ((STRING043 <> "*") && (STRING043 <> "+")) Then
  767.         STRING043 = "N"
  768.     Else
  769.         STRING043 = "R"
  770.     Endif
  771.     Message CurConf(), STRING040, STRING041, STRING042, STRING043, DATE001, 0, BOOLEAN004, STRING009
  772.     Cls
  773.     PrintLn 
  774.     PrintLn "@X0A Message saved: " + String(RTrim(PCBMac("@INCONF@"), " ")) + " # " + String(PCBMac("@HIGHMSGNUM@"))
  775.     Log "PCB Spell used to spell check a message.", 0
  776.  
  777.     EndProc
  778.  
  779.  
  780. ;------------------------------------------------------------------------------
  781.  
  782.     Procedure PROC016(String STRING045)
  783.  
  784.     AnsiPos 3, 15
  785.     Print Space(50)
  786.     AnsiPos 3, 15
  787.     Print STRING045
  788.  
  789.     EndProc
  790.  
  791.  
  792. ;------------------------------------------------------------------------------
  793.  
  794.     Procedure PROC014()
  795.  
  796.     String   STRING046
  797.     Integer  INTEGER025
  798.     Boolean  BOOLEAN005
  799.  
  800.     INTEGER025 = 1
  801.     STRING011 = ReadLine(PPEPath() + "spell.cfg", 1)
  802.     STRING012 = ReadLine(PPEPath() + "spell.cfg", 2)
  803.     If (LangExt() <> "") Then
  804.         STRING046 = ReadLine(PPEPath() + "language.cfg", INTEGER025)
  805.         While (STRING046 <> "") Do
  806.             Tokenize STRING046
  807.             If (InStr(Upper(GetToken()), LangExt()) <> 0) Then
  808.                 STRING011 = GetToken()
  809.                 STRING012 = GetToken()
  810.                 Break
  811.             Endif
  812.             Inc INTEGER025
  813.             STRING046 = ReadLine(PPEPath() + "language.cfg", INTEGER025)
  814.         EndWhile
  815.     Endif
  816.     BOOLEAN005 = 0
  817.     If (FileInf(PPEPath() + STRING011 + ".DBF", 1) == 1) Then
  818.         DOpen INTEGER005, PPEPath() + STRING011, 0
  819.     Else
  820.         BOOLEAN005 = 1
  821.     Endif
  822.     If (FileInf(PPEPath() + STRING012 + ".NDX", 1) == 1) Then
  823.         DnOpen INTEGER005, PPEPath() + STRING012
  824.     Else
  825.         BOOLEAN005 = 1
  826.     Endif
  827.     If (DErr(INTEGER005) || (BOOLEAN005 == 1)) Then
  828.         PROC003()
  829.         PrintLn 
  830.         PrintLn "@X0C Error opening the spell dictionary and index.  The Sysop will want"
  831.         PrintLn "@X0C to check both the SPELL.CFG file and the LANGUAGE.CFG file to make"
  832.         PrintLn "@X0C sure they are setup correctly for the @X07" + LangExt() + "@X0C language."
  833.         PrintLn 
  834.         PrintLn "@X07 The files involved are: @X0F" + PPEPath() + STRING011 + ".DBF"
  835.         PrintLn "@X07                         @X0F" + PPEPath() + STRING012 + ".NDX"
  836.         PrintLn 
  837.         PrintLn "@X0C PCB Spell is setup to use different dictionaries depending on the"
  838.         PrintLn "@X0C language you are currently using online.  Please inform the sysop."
  839.         Log "PCB Spell - Error with setup of dictionary for " + LangExt(), 0
  840.         Log "PCB Spell - Sysop, check your settings in LANGUAGE.CFG.", 0
  841.         PrintLn 
  842.         PROC013()
  843.         Wait
  844.         End
  845.     Endif
  846.  
  847.     EndProc
  848.  
  849.  
  850. ;------------------------------------------------------------------------------
  851.  
  852.     Function FUNCTION004() Integer
  853.  
  854.     Integer  INTEGER027
  855.     Integer  INTEGER028
  856.  
  857.     INTEGER027 = FNext()
  858.     FCreate INTEGER027, STRING009, 1, 2
  859.     If (Ferr(INTEGER027)) Then
  860.         FUNCTION004 = -1
  861.         Cls
  862.         PrintLn 
  863.         PrintLn " @X0CError reading the file " + STRING009 + "."
  864.         Log "PCB Spell - Error reading the file " + STRING009 + ".", 0
  865.         PROC013()
  866.         End
  867.     Else
  868.         FUNCTION004 = INTEGER027
  869.     Endif
  870.  
  871.     EndFunc
  872.  
  873.  
  874. ;------------------------------------------------------------------------------
  875.  
  876.     Function FUNCTION005() Integer
  877.  
  878.     Integer  INTEGER029
  879.  
  880.     INTEGER029 = FNext()
  881.     FOpen INTEGER029, STRING007, 0, 2
  882.     If (Ferr(INTEGER029)) Then
  883.         Cls
  884.         PrintLn 
  885.         PrintLn " @X0CError reading the file " + STRING007 + "."
  886.         Log "PCB Spell - Error reading the file " + STRING007 + ".", 0
  887.         PROC013()
  888.         End
  889.     Else
  890.         FUNCTION005 = INTEGER029
  891.     Endif
  892.  
  893.     EndFunc
  894.  
  895.  
  896. ;------------------------------------------------------------------------------
  897. ;
  898. ; Usage report (before postprocessing)
  899. ;
  900. ; ■ Statements used :
  901. ;
  902. ;    13      End
  903. ;    6       Cls
  904. ;    1       ClrEol
  905. ;    5       Wait
  906. ;    123     Goto 
  907. ;    150     Let 
  908. ;    11      Print 
  909. ;    75      PrintLn 
  910. ;    78      If 
  911. ;    2       FCreate 
  912. ;    3       FOpen 
  913. ;    4       FClose 
  914. ;    7       FGet 
  915. ;    4       FPutLn 
  916. ;    4       Delete 
  917. ;    8       Log 
  918. ;    3       InputStr 
  919. ;    3       Return
  920. ;    3       Delay 
  921. ;    8       Inc 
  922. ;    2       Newline
  923. ;    4       Newlines 
  924. ;    2       Tokenize 
  925. ;    1       KbdStuff 
  926. ;    3       OpText 
  927. ;    14      AnsiPos 
  928. ;    1       Message 
  929. ;    2       SaveScrn
  930. ;    2       RestScrn
  931. ;    2       FSeek 
  932. ;    1       FCloseAll
  933. ;    15      EndProc
  934. ;    6       EndFunc
  935. ;    1       DOpen 
  936. ;    1       DClose 
  937. ;    1       DnOpen 
  938. ;    1       DNew 
  939. ;    1       DAdd 
  940. ;    1       DTop 
  941. ;    2       DSkip 
  942. ;    1       DTag 
  943. ;    1       DSeek 
  944. ;    2       DGet 
  945. ;    1       DPut 
  946. ;    1       MsgToFile 
  947. ;
  948. ;
  949. ; ■ Functions used :
  950. ;
  951. ;    2       -
  952. ;    4       *
  953. ;    2       /
  954. ;    102     +
  955. ;    12      -
  956. ;    29      ==
  957. ;    35      <>
  958. ;    11      <
  959. ;    4       <=
  960. ;    3       >
  961. ;    8       >=
  962. ;    80      !
  963. ;    18      &&
  964. ;    5       ||
  965. ;    23      Len(
  966. ;    6       Lower()
  967. ;    14      Upper()
  968. ;    12      Mid()
  969. ;    5       Right()
  970. ;    1       Space()
  971. ;    9       Ferr()
  972. ;    4       Chr()
  973. ;    7       Asc()
  974. ;    3       InStr()
  975. ;    21      LTrim()
  976. ;    23      RTrim()
  977. ;    2       U_Name()
  978. ;    1       StripAtx()
  979. ;    24      String()
  980. ;    1       Mask_Ascii()
  981. ;    2       CurConf()
  982. ;    15      PPEPath()
  983. ;    4       PcbNode()
  984. ;    13      ReadLine()
  985. ;    3       CurSec()
  986. ;    4       GetToken()
  987. ;    1       TokenStr()
  988. ;    4       LangExt()
  989. ;    6       FileInf()
  990. ;    1       TokCount()
  991. ;    1       U_RecNum()
  992. ;    3       ReplaceStr()
  993. ;    1       ToInteger()
  994. ;    8       PCBMac()
  995. ;    1       DErr()
  996. ;    1       DRecNo()
  997. ;    4       FNext()
  998. ;
  999. ;------------------------------------------------------------------------------
  1000. ;
  1001. ; Analysis flags : No flag
  1002. ;
  1003. ;------------------------------------------------------------------------------
  1004. ;
  1005. ; Postprocessing report
  1006. ;
  1007. ;    4       For/Next
  1008. ;    10      While/EndWhile
  1009. ;    62      If/Then or If/Then/Else
  1010. ;    0       Select Case
  1011. ;
  1012. ;------------------------------------------------------------------------------
  1013. ;                 AEGiS Corp - Break the routines, code against the machines!
  1014. ;------------------------------------------------------------------------------
  1015.