Designed to Help You Run Your Business More Efficiently.     
Home  |  About AIMS  |  Contact Us  

  • Clients

  • FAQs

  • Programs

  • Tips

  • Fees

AIMS App Analyzer

Download version 1.49 (updated 2016-04-17)
The installation/update routine will install the program to your A5v5 through A5v12 program files.

Register the AIMS App Analyzer
One registration is used for all versions of A5 from version 5 on.

ABOUT THE AIMS App Analyzer:

The AIMS App Analyzer is an Alpha Five addin created by AIMS DataCom to make it easier for developers to check an application before sending it to a customer or, especially, to review it prior to making changes or updates. Using this can greatly improve the accuracy of updates because you no longer need to rely strictly on your memory to find every place that a form, script, index, etc. is referenced. The App Analyzer creates a list showing where all layouts, scripts, functions, indexes, saved operations, table names, index names, or other user specified text is referenced in an application. Any layout, script, function, etc. that is not located will be marked as Not Found.

The list can be very useful for determining where changes need to be made when updating an application and as a final review before releasing changes. It can also be used as an aid for cleaning up unused layouts, scripts, etc. The list is presented in WordPad and can be either used on-screen (typical) or sent to the printer. Since it would be very difficult to use one list with everything on it, the lists are broken down into more usable groups - Forms, Browses, Tables, Scripts, Appends, Updates, etc. Click here so see a sample output file.


There are other methods for running searches on A5 scripts but the AIMS App Analyzer has at least 4 major advantages:
  • The A5 built-in search routines will search all the global scripts and functions IF they are not password protected (all global scripts/functions are password protected in my generic apps) but the AIMS App Analyzer searches all of these plus every script in every event of every layout and table plus all of the expressions in every field rule plus every calculated field in every table and layout plus every filter and order expression plus more - basically, every script and expression in the whole application.
  • Using the A5 built-in routines, you can search for any layout name, script name, etc. (after you type in the name and with the restriction noted above) but the AIMS App Analyzer will search for every layout, script, and function name with one action. Even on a very large application this will only take about 2-3 minutes. It would take you longer than this just to type in all the names - plus you would have to remember or lookup up the exact spelling of each name.
  • With the A5 built-in routines, the search has to be re-run every time you want to find a specific name. With the AIMS App Analyzer the results of the search are stored in a text file which can be immediately re-opened by the App Analyzer without re-running the search. (Yes, the search will need to be updated occasionally but there can often be a day or two of development before an update is necessary and you can always go to lunch or take a break while the update is running. Also, many updates only require updating the global scripts and functions and this occurs very quickly - you won't have time for a break.)
  • If your A5 app crashes for any reason, the AIMS App Analyzer search will not be lost. In fact, it won't even close down unless you shut it down or your whole computer shuts down.

AIMS App Analyzer
A5 Documenter
Creates a 'documentation' table containing every expression, calc field, etc. in the database. Yes. Yes.
Can run general searches on any text entered by the user. Yes.
See next item.
Automatically runs searches to find every reference to every form, report, browse, letter, label, operation, tablename, script, or function in the database. Yes.
This is what the AIMS App Analyzer was designed to do. One single operation can automatically find and list where every layout, script, function, and operation is referenced.
Each name must be typed separately. Searching is not the main purpose of the A5 Documenter.
Creates a separate list of every form, report, browse, letter, label, operation, tablename, script, or function in the database that is "Not Referenced". Yes.
This feature makes database "cleanup" much easier.
To create this list with A5 Doc it would be necessary to run a separate search for each layout, script, and function name.
Creates documentation reports of table structures, field rules, layout info, etc. No.
The A5 Documentor already did this.
This is what the A5 Documenter was designed to do.
Each text search finds every reference to that text. Yes.
The search routine loops through every record in the 'documentation' table and stores every hit in a .txt file.
The latest version now includes this feature.
Search results open in a separate window that is not affected by application crashes and is not in the way, or accidentally closed, while working on a layout or script in the application. Yes.
Results open in WordPad.
Results are in a resizeable A5 window that closes if A5 crashes or if, as I've often done, you accidentally close it while 'getting things out of your way' when editing.
Search results are saved and can be re-opened without taking the time to re-run the search. Yes.
The results of every search are saved in a .txt file and the Analyzer will prompt you to re-open the existing file. If the 'documentation' table was updated after the last search file was created, the program automatically suggests that you rebuild the search file.
If you close the result dialog - inadvertently or on purpose - the Find will have to be re-run. Of course, you are only finding one phrase at a time so it's not a huge deal.
Searches are defined to improve accuracy where possible. Yes.
Some of the standard searches have built-in checks that improve the accuracy of the search.

In addition, comment lines are excluded by default (with an option to include them) and the 'General Text Search' has an option for limiting the search to 'whole words only'.
The search only finds the exact text that you type in.
Clicking an item in the search results list takes you directly to that item. No.
The search results are in a text file. This was done because it was too common for me to accidentally close the results list in A5 Doc and have to start over.

This feature will be added as an option in the future if there is enough demand.
Double clicking an item in the results list will open that script directly.

Comments from users:

- Thanks Cal... i appreciate your efforts & LOVE the analyzer. It has saved me MANY hours of tedious work.
- Thanks for keeping up this fine peace of software!


To install the App Analyzer, simply run the installation routine. This installs the addin to the Addins_Installed folder of your A5 program and adds the necessary files to your A5 Control_Panel_Addins folder so you can access the routine from any tab on the control panel. If you have multiple versions of A5, the one installation will install the addin to every full version of A5 on your computer.


To start the App Analyzer, right click in the white area of any A5 control panel and click the Addins choice at the bottom of the list. The AIMS App Analyzer will appear as one of the addin choices.

USING THE AIMS App Analyzer:

The first step in using the App Analyzer is to make a "documentation" run. This searches the complete application to find all scripts, functions, and expressions then copies them into a "documentation" table. (This is similar to, but not quite the same as, the information created by Bill Parker's A5Doc program.) This is usually the most time-consuming part of the process and can take anywhere from less than a minute for a very simple application to 10-15 minutes on an application with something like 300 global scripts and 200 layouts. Actual time will depend mostly on the number of layouts because each layout must be opened by the Analyzer to check for event scripts, calculated fields, etc.

The second step is to actually run the searches for the various scripts, layouts, etc. Doing this is simply a matter of selecting the list you want to create from the choices on the AIMS App Analyzer dialog boxes (screen shot below). As soon as the search is finished, it will be opened on-screen in WordPad. If the list has already been created since the last "documentation" update, the program will just open the existing list rather than rebuilding it again.

NOTE:  If your layouts are password protected, you will have to type in the password as each layout is opened. (Here's where a keyboard macro comes in real handy!) If your global scripts, and/or functions, are password protected (applies to xbasic only?), the password will only have to be entered once as long as all password protected scripts use the same password. Password Recommendation:  For maximum security, do not use the same password for global scripts as the one used for other events, layouts, etc. The password for global scripts is much more secure than the other passwords.


The unregistered version is limited to 40 lines of output. This will give you an idea of the capabilities but severely restricts its usefulness.


Shows Layout Errors

Running the App Analyzer will help locate errors on forms because the 'documentation' run will open each form in design mode and Alph shows a message when any errors are found. This is generally much faster than opening each one yourself! When an error message is displayed, the layout name will appear in the status bar at the lower left corner of your screen. (Of course, the status bar must be turned on in order to see it.)

Shows Duplicate Names

Duplicate names can cause program errors because A5 will try to open/run the first one it finds even though the programmer may have intended to use the second 'copy'. Form names and Saved Operation names can be duplicated by using the same name in a different table or set. Scripts can be duplicated if there is an attached library file. The App Analyzer will show duplicate layout, script, and saved operation names whenever it runs a search to locate usage of those names.

There is no check for duplicate index names because (a) indexes are only listed one table at a time and A5 does not allow duplicate index names in one table, and (b) using the same index name for two different tables will not cause any program errors.

Naming Issues

After using the App Analyzer for awhile you will begin to understand the need for a good naming convention so your searches will be more precise. Searches for layout names like Rep, Show, About, Users, Input, Menu, etc. usually result in more invalid hits than valid hits. Your searches will be much more accurate if you follow these primary rules:
  1. Always use at least 2 words in every object name because it makes them more unique.
  2. Never use spaces in object names - use underscores instead because it makes them more unique.

  3. (I hope you're beginning to notice a unique pattern here.)
Example:  'User_List' instead of 'Users'

In addition, making names of fields, indexes, and variables unique will also improve the search accuracy. This means that a field and an index or variable should not have the same name. One easy way to accomplish this is to end all field names with 'f', all indexes with an underscore, and matching variable names with a 'v'. Using this method, the same basic name can be used for fields, indexes, and variables while still keeping them unique. For example, the index for the 'Last_Namef' field would be 'Last_Name_' and 'Last_Namev' would be used for a matching variable name.
Of course, this system isn't perfect and some duplication is inevitable but using this system or something like it will significantly improve the accuracy of your searches and result in a time savings when debugging or cleaning up an application.

Please note that these naming recommendations are to improve search accuracy and have nothing to do with what is allowed in A5.

For more information and an explanation of the reasoning behind my naming recommendations, see my A5 Naming Recommendations paper.

Screen shot of search dialogs:

View the sample output file.


1.49 - 2016-04-17
  • Bug fix - when running in v12 it would show a "View_crlf() not found" error.
1.48 - 2016-01-07
  • Bug fixes - in the "Remove All Output Files" and "Check for Unlisted Tables" functions.
1.47 - 2015-12-02
  • Added the check for tables not listed in the A5 Control Panel.
1.46 - 2015-05-15
  • Added checks for 3 additional properties in browses - menus, toolbars, and companion form.
1.45 - 2015-03-25
  • Added routine to determine if text is in a trailing comment. Previously the "ignore text in comments" option only ignored text in full comment lines.
  • Improved appearance of message boxes.
  • 1.44 - 2014-09-14
    • The "List What" choice will now default to the last one used
    • Fixed another A5v12 issue. This one should not affect new installations. It should only affect certain updates.
    • Changed global variable names so they would be less likely to match a variable name used in someone's application.
    1.43 - 2014-08-21
    • Fixed to run correctly in A5v12 which is now Alpha Anywhere instead of Alpha Five.
    1.42 - 2014-04-11
    • Added a button on the main dialog for starting AIMS_Check_4_close().
    • Updated to use waitdialog when checking forms so other things can be done while this runs.
    1.41 - 2014-01-24
    • Removed the field rule option for v11 and up - it always runs the old, faster method now in v11 and up. The slower method is only required in v10.
    1.40 - 2013-01-29
    • Made the new method for checking field rules optional for v11 and up.
    1.39 - 2012-10-16
    • Updated install file to install to A5v12 - 2012-11-02.
    • Improved the speed and printout for "Find unremmed Debug and Developer Messages."
    1.38 - 2012-09-18
    • The General Text Search now saves the last settings as the default and keeps a list of the last 30 search words/phrases.
    1.37 - 2012-09-09
    • Fixed crash that occurred when no database properties had ever been set.
    1.36 - 2012-07-24
    • Added routine to find Debug() lines that have not been remmed out.
    1.35 - 2011-08-25
    • Fixed an issue with documenting old menu bars and toolbars that were created in v5 and haven't been updated.
    1.34 - 2011-05-17
    • Fixed an issue with a new routine that caused errors in A5v5.
    1.33 - 2011-02-11
    • Added AIMS_Check_4_Close() as a listed option for the user. This function will check all scripts for a command and look for a matching .close() command.
    1.32 (2011-02-03)
    • Converted all internal scripts to functions as recommended by Alpha for A5v10.
    • Added action to show "No References Found" for all layouts, scripts, and functions at once instead of doing each type separately.
    1.31 (2011-01-27)
    • Modified field rules documentation routine. Previous routine would crash when run in A5v10 on some databases if there were tables with a large number of fields. This new routine appears to solve the problem completely.
    • Added routine that will make updates easier in the future. No more need to manually delete some files to force A5 to see the update.
    • Added some field and embedded browse events when checking forms.
    • Fixed some potential problems with loading large custom Menus and/or Toolbars.
    • Install file updated to install to A5v10 (and 11).
    • Interim versions never released for full distribution.
    1.24 (22-Nov-08)
    • Fixed some installation issues caused by the variation in file locations in the different versions of A5.
    1.23 (14-Jun-08)
    • Added ability to work with user defined Menus and Toolbars. Identifies where they are used and searches them for script, function, operation, and layout names.
    1.22 (12-Mar-07)
    • Numerous changes to get it working correctly in A5v8. (versions 1.18 - 1.21 were development updates that were never released.)
    1.17 (03-Mar-07)
    • Minor modifications to the code to make it work correctly in A5v8.
    1.16 (03-Feb-07)
    • Fixed error when duplicate operation names occurred at the end of the Operations list.
    1.15 (13-Jul-06)
    • The names of companion browses, companion forms, and query forms are now documented. In some cases these forms/browses were previously listed as "not referenced".
    1.14 (12-Mar-06)
    • Added the ability to list the Run on Load form and to show forms defined in table lookups (field rules) as the "Form Layout to Edit Records" or the "Browse Layout to Display". Previously, a form or browse that was only used in one of these places and nowhere else was listed as "No References Found".
    1.13 (23-Dec-05)
    • Fixed an error introduced in version 1.11 that caused an error when building new form documentation.
    1.12 (06-Dec-05)
    • Modified 'wait' dialog when searching for layout names. Now, in A5v6 and later, the user can do other things while the search is running because the newer {waitdialog} will not cause the system to change focus. (This does not affect the initial documentation run which still changes focus every time a new layout is opened in design mode.)
    1.11 (23-Nov-05)
    • Tables and sets used only for storing layouts but not referenced in scripts are now shown in the Table/Set Usage list with the matching layout name. These tables/sets were previously listed as "not referenced".
    1.10 (11-Jun-05)
    • Added the ability to run text searches to find where fields are used on forms. This is faster than running the standard "Fields Used" search because the standard method searches for all fields in all tables.
    1.09 (13-Feb-05)
    • Fixed problem with General Text Search working only when the Cancel button is pressed.
    1.08 (23-Jan-05)
    • Removed "sticky window" feature that was not working correctly in A5v6. It was causing the App Analyzer window to move up and to the right each time it was opened. The window would disappear off the screen after two uses if not relocated before closing the app.
    1.07 (04-Nov-04)
    • Fixed error that occurred when the last 2 forms (alphabetically) both had the same name. (For this to happen, each form must be saved in a different table or set. This is not a good thing to do because a call to "" will not necessarily know which form to open.)
    • Fixed an error that occurred when attempting to list fields. It was looking for the output file before the file existed. (It already existed when the app was being developed.)
    1.06 (26-Oct-04)
    • New option added to list only lines that show "No References Found"
    1.05 (18-Oct-04)
    • The 'whole words only' option for plain text searches has been fixed so that it no longer shows text that ends in a number such as "test2" when searching for just "test".
    • Modified the installation file so that only one file will now install to both A5v5 and/or A5v6.
    1.04 (09-Oct-04)
    • Added the ability to automatically search for field name references. Fields can be listed by field name or as a list of all objects on a layout. The "layout" version only shows the name of field objects and related fields on each layout. The "by name" version shows either all references to that field name; only layout objects referencing that field name; or only scripts, functions, and expressions that reference that field name. The last method is most common and is the fastest.
    • Added the ability to find text (typically function or field names) in color and font equations on layout objects.
    1.03 (23-Sep-04)
    • Fixed a logic error that truncated the list of objects when a form had an embedded browse.
    1.02 (13-Sep-04)
    • Fixed a "function not recognized" error that prevented the viewing of output lists. This error was created in update 1.01.
    • Fixed an error that caused the Analyzer to crash in situations where the tables were listed as objects. (Modifying and re-saving the form would also resolve this in most cases.)
    1.01 (11-Sep-04)
    • Added ability to document use of sub-forms.

    AIMS DataCom, Inc. - Custom Database Applications
    This site created and maintained by Cal Locklin,, using 1st Page 2000.   Last update:  10-May-2008
    This site may be freely linked to but not duplicated in any fashion without prior written consent.