
                         StrongBS v3.03 (8th Dec 2009)
                          Mohsen Alshayef 1993-2009

                          email: malshayef@gmail.com



                             StrongBS Limitations
                             



1. DATA statements inside PROCedures and FUNCtions:
   ================================================
   
   If your program contains DATA lines then these should be either at
   the end of the program, at the end of the main code or between
   procedures/function definitions. You should not have DATA lines
   *inside* procedure or function definitions.
   
   When removing *unused* procedures or functions, StrongBS *does not*
   check to see if DATA lines exist inside the procedure or function to
   be removed and hence if the rest of the program reads from such DATA
   the program will fail.
   
   Remember: BASIC allows DATA lines to be anywhere in the program even
   inside procedures that are never used.
   
   Well, I know this limitation doesn't apply to you as you don't do
   such things with your DATA line :-)
   
2. EVALuating real variables and functions:
   ========================================
   
   If your program EVALuates functions then you should *Lock* all
   those function names using the 'SBSMake' file, so that these functions
   don't get renamed.
   
   If your program EVALuates 'Real' variables then you should *Lock*
   those real variables that get evaluated from being renamed by the
   'Rename real variable' option.
   
   StrongBS should cope with 'integer' variables and will try a search
   for these inside all 'quoted' strings and will automatically lock them.

   
3. Locked variables should not be too short:
   =========================================
   
   Yes. Any locked variable should at least be 3 character long. The
   reason is that StrongBS when generating new shorter variable names
   it does not (yet) check to see if the new name is the same as a
   locked variable. StrongBS uses one or two characters for new
   variable names.

   So, you shouldn't ask StrongBS to lock the variable 'd%' or 'x'
   as although it will do that it doesn't prevent it from using
   similar names for other replacement variables.
   
   I never had the time to fix this as it seldom causes a problem.
   

4. REMarks inside DATA lines:
   ==========================
   
   You don't do this sort of thing, do you?
   
   StrongBS doesn't remmove REMarks inside DATA lines. This is because
   the 'REM' keyword inside a DATA line is not tokenised and hence
   StrongBS can't find it.
   
   Well, it is easy to fix, but never bothered because I only saw one
   program that did this :-)
   
   
5. Variables inside DATA lines:
   ============================
   
   Well, this is a bit tricky. Ok, if these variables are integer variables
   then this would normally be no problem as StrongBS will normally rename
   integers inside DATA lines when the option 'Rename vars inside DATA lines'
   is selected. With this option selected, real variables and strings
   variables inside data lines will also be renamed provided they
   exist in the rest of the program. The Acorn 'Patience' and 'Puzzle'
   applications are example programs that have variables inside DATA lines.

   In order for them to be renamed, real and string variables inside DATA
   lines should not be inside quoted strings.
   
   
   
   