John Welch's MultiParse

Purpose of MultiParse:

MultiParse has two purposes: (1) to break a large app into dll, and (2) to document a solution.

MultiParse helps to simplify the process of breaking a large app into smaller apps for use in a multi-dll solution. Note well that the method used here may not be optimum for you, but it is optimum for the procedures! What I mean by that is that you may want to use the results created by MultiParse and further refine your dlls into an arrangement that is workable for you. MultiParse is only following the procedure dependencies and organizing them into hierarchies that _can_ be used to build a multi-dll solution. It does not "know" which of your procedures are source, utility, browse, and etc. So keep that in mind when viewing the results.

MultiParse documents a solution by reading in the TXA(s) and presenting a window that shows the following information:

- Procedure name
- App name
- Module in App
- Prototype
- Procedure description
- Type of procedure
- Category name
- Level (EG: Data dll is level 1)
- Global procedure (Yes/No)
- Orphan (Yes/No)
- Date and time procedure was last modified
- A list of procedures that call this procedure. Clicking on a procedure in this list makes the clicked on procedure now active in the main procedure browse.
- A list of procedures called by this procedure. Clicking on a procedure in this list makes the clicked on procedure now active in the main procedure browse.

Having the above information makes it easy to navigate your multi-dll app because you know where to find the procedures you are looking for. Also, double clicking on a procedure name in the main browse copies that procedure name to the clipboard so you can easily paste it into the search box in the app to locate the procedure instantly.

MultiParse can store more than one solution. It can also batch import multiple TXA files for each saved solution. This makes the saving of different versions viable. It can write out new TXA files that now include a Category name that shows what app the procedure comes from – great for knowing immediately what app to open to edit an external procedure.

As always, see the History section for a full list of fixes and enhancements.

Download version 0.7.5a (Mar, 21 2013)

History:

- Mar 21, 2013 ------------------------------
- Added report to allow a more easy comparison of one version to another.
- Added multiple select of TXA files. Note: Make sure that the TXAs are sorted in the order they would be compile in before selecting them because they will be automatically numbered in the order they are read in.
- Added button to the configuration browse to delete all the app files and the procedure files, but leave the solution header.
- Added button to the configuration browse to delete all procedure files and reload them from the current TXAs.

Mar 3, 2013 ------------------------------
- Fix: MultiParse was looping through all procedures in all solutions to calculate the Levels of DLL.
- Fix: Global procedures are now assigned to the highest level (the global level)
- Fix: The Frame procedure is now assigned a level. Unless there are other procedures in the Frame module, it will be the only procedure at Level 1.

 Feb 28, 2013 ------------------------------
- Change: TXAs are now written back into the same folder as they were read from. They are still prepended with the syllable "New_."
- Change: Reduced verbiage on "Write Categories to TXA" screen. Screen now closes automatically.
- Fix: Writing categories was not inserting "CATEGORY" for procedures not found in the ModName table. I removed the need for the table in this function.
- Change: Removed the ModName table. This means that Categories cannot be renamed at this time.
- Feature: Added the Category name to the configuration. Upon import each app will receive the Category name assigned in the configuration of Solution header. The number will come from the compile order number in the child records. The compile order number is used in an algorithm to get the Level number as such: Level = NumberOfApps - ImportOrder + 1. To change a category name a solution must be reimported and then written out.
- Fix: Increased the number of possible procedures in a Solution to 999 from 99.
- Fix: Increased the Category length to 60 characters.
- Fix: Import was truncating prototypes with '' in the prototype.
- Fix: Changed Procedure Browse from file load to page load.

Feb 20, 2013 ------------------------------
- Alert: This build will require deletion of your prior database or simply create a new install if you want to keep your old database. The point is that the database could not be upgraded without significant work.
- Feature: Added batch import capabiltiy. Now you can import an entire solution jsut to document it. File->Configuration now requires a header for the solution. The headers child records are each .txa you will import. Number them in the order they would be compiled in.
- Feature: Added multiple solutions. Now you can import and use more than one solution. The only limit will be the limit of the Topspeed database.


 Feb 17, 2013 ------------------------------
- Feature: Added a browse to show the calling procedures
- Feature: Added functionality to click on a procedure name in the Called or Calling browse list to select that procedure in the main Procedure browse.
- Feature: Added functionality to double-left-click on main procedure row to save procedure name into clipboard.
- Feature: Added a field for the app name to the main procedure list.
- Feature: You can now use the program to simply document your app or multi apps. To do this:

1. "Process" --> "1) Empty Last Process Results" (Note: This will delete any work you have saved in the database so you may want to copy the tps file to a backup location.)
2. For each app, export a txa
3. Set that txa under "File" --> "Configuration"
4. Import the txas using the two commands "Process" -->"Import Procedures" and then "Read in the Calling Tree."
Note that I like to set the category of each procedure in each app as "Level" followed by a number. Each app has a number such as FTM_02. Thus, the Categories in FTM_02.app are all "Level02." The import process will place the numeric portion of the category into a field labeled "Level" and this helps me keep straight what app the procedure is in. Also note that I have now added a field for the app name to the procedure list and that will do the same job.

- Fix: Typos: "Catagory" changed to "Category"

Sept 03, 2012 ------------------------------

- Removed unneeded MEMORY driver and added dlls and exe to the zip file.