Blog

gmBasic: Upgrade Engine Update

gmBasic is a powerful code processor that reads, interprets, and rewrites VB6/ASP/COM systems as .NET (C# or VB.NET). We are always improving gmBasic so that it is more robust and flexible and it produces cleaner, more correct results. This distribution, Version 30.55, includes several enhancements:

  • Improves the general ability to produce accurate build-complete .NET (C# and VB.NET) systems from VB6 systems (most recently including enhancements needed to upgrade a large shipping logistics application with 1 VBP referencing 283 code files containing 880K LOC and 39 third party-COM components)
  • Adds Refactor/OverGeneric statement to create generic overloads for byref parameters that must take multiple types of arguments
  • Adds new Fix attributes for matching multi-line patterns: MatchBlock and MatchTillLast
  • Improves generated Forms designer code
  • Adds parameter@types attribute to the InterfaceDefine feature to direct interfaces generated from specified types
  • Improves upgrading difficult cases of On Error Goto and On Error Resume
  • Improves GoSub refactoring to allow more GoSubs within a method
  • Improves handling of reference to COM Constants
  • Improves handling of calls to the Array function with no arguments
  • Improves translations of Third-Party Controls on Forms and UserControls
  • Improves handling of naming conflicts between undeclared application symbols and VB6/COM global symbols
  • Improves handling of naming conflicts between control names and VB6 keywords
  • Adds DataStore API methods to the GM Scripting Language (gmSL)

gmStudio: Upgrade Solution Development Environment Update

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it easier to use. This distribution includes several enhancements:

  • Improves the Visual Studio integration by allowing you to launch with a new VS Solution or with a .NET project file
  • Improves the Visual Studio integration by opening the existing session if already running
  • Improves the VB6 IDE integration by opening the existing session if already running
  • Improves Upgrade Wizard by allowing user to skip metrics reporting operations
  • Improves launching Side-By-Side Viewer for build errors in MDIForms
  • Corrects project creation using Windows Shell Integration

Sample Upgrade Rules Update

gmStudio ships with a collection of sample upgrade rules that can be used to add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. The sample rules were updated to reflect the latest product improvements and conventions.

Sample Upgrade Solutions Update

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. The sample upgrade solutions were updated to reflect the latest product improvements and conventions.

gmBasic: Upgrade Engine Update

gmBasic is a powerful code processor that reads, interprets, and rewrites VB6/ASP/COM systems as .NET (C# or VB.NET). We are always improving gmBasic so that it is more robust and flexible and it produces cleaner, more correct results. This distribution, Version 30.52, includes several enhancements:

  • Improves the general ability to produce accurate build-complete .NET (C# and VB.NET) systems from VB6 systems (most recently including enhancements needed to upgrade a large Energy Trading System composed of 177 VBPs referencing 2,724 code files (1.6M LOC) and 90 third party-COM components)
  • Adds support for different code file encoding schemes <Select CharSet="ASCII|UTF8|Shift_JIS"/>; default is ASCII
  • Improves VB.NET support for upgrading for each loop over control array elements
  • Improves VB.NET support for parameters declared to take Generic collection of control (i.e. VB6 Control Array)
  • Improves migration of Startup Form to use a Starup class with a Main function that runs and instance of the form
  • Improves custom migration certain cases of COM Property Get
  • Improves build order report to allow for references to .RLL files

gmStudio: Upgrade Solution Development Environment Update

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it easier to use. This distribution includes several enhancements:

  • Improves the Search feature by adding support for reading search terms from a file using /filepath
  • Improves Source References report to use library description from IDL file if it is not available from the registry
  • Improves .NET Build Log report to more accurately report source lines
  • Improves Metrics Summary Report to report Reference Type and Name in COM References section

Sample Upgrade Rules Update

gmStudio ships with a collection of sample upgrade rules that can be used to add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. The sample rules were updated to reflect the latest product improvements and conventions.

Sample Upgrade Solutions Update

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. The sample upgrade solutions were updated to reflect the latest product improvements and conventions.

New gmStudio Case Studies and Testimonials

A recent customer allowed us to publish a brief description of their VB6/COM upgrade project and their testimonial of success with gmStudio.  Learn how a small team successfully completed a very large, ambitious VB6/COM upgrade effort with the help of gmStudio. Read the article 

gmBasic: Upgrade Engine Update

gmBasic is a powerful code processor that reads, interprets, and rewrites VB6/ASP/COM systems as .NET (C# or VB.NET). We are always improving gmBasic so that it is more robust and flexible and it produces cleaner, more correct results. This distribution, Version 30.49, includes several enhancements:

General Improvements

  • Improves the general ability to produce build-complete .NET code from very large, very complex VB6 systems (most recently including enhancements needed to upgrade a Chiropractic Patient Management application composed of 60 inter-related VBPs referencing 1,079 unique files containing over 780K unique LOC and 84 third party COM components)
  • Improves handling member name clashes in COM APIs
  • Improves inferring the rank of variant arrays
  • Improves handling mismatch between enum parameter type and enum arguments
  • Improves using weakly-typed values in a context expecting a Color value
  • Improves handling classes named "Main" that conflict with the reserved method name "Main"
  • Improves handling the "value" parameter of property setters
  • Improves initialization of 2D arrays
  • Improves conversions applied for mixed-type assignments
  • Corrects metalanguage declaration of MidB to return String
  • Improves default C# coding style to use more of lightweight object-oriented patterns (previously required Subsytem=loc)

ASP Improvements

  • Improves statement boundary detection in complex cases of server code integrated with markup
  • Improves upgrading VBScript classes in ASP codes to code classes
  • Improves upgrading #include statements in render functions
  • Improves use of extension methods in upgraded ASP code
  • Improves upgrading cross-linked VBScript classes. In ASP, cross-linking occurs when code in #include files or VBScript classes references symbols from other #includes, pages, or classes.

gmStudio: Upgrade Solution Development Environment Update

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it easier to use. This distribution includes several enhancements:

  • Adds support for opening Side-by-Side viewer from member search results
  • Adds support for opening Side-by-Side viewer from GUI designer search results
  • Adds support for opening Side-by-Side viewer for code classes generated from VBScript classes
  • Improves Reset job status behavior to also clear reference status and delete IDF cache files

Sample Upgrade Rules Update

gmStudio ships with a collection of sample upgrade rules that can be used to add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. The sample rules were updated to reflect the latest product improvements and conventions.

Sample Upgrade Solutions Update

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. The sample upgrade solutions were updated to reflect the latest product improvements and conventions.

gmBasic: Upgrade Engine Update

gmBasic is a powerful code processor that reads, interprets, and rewrites VB6/ASP/COM systems as .NET (C# or VB.NET). We are always improving gmBasic so that it is more robust and flexible and it produces cleaner, more correct results. This distribution, Version 30.46, includes several enhancements:

  • Improves the general ability to produce build-complete .NET code from very large, very complex VB6 systems (most recently including enhancements needed to upgrade a Comprehensive Tax Preparation of 19 inter-related VBPs referencing 993 unique files containing over 1.4M unique LOC and 42 third party COM components)
  • Adds support for UserDocument
  • Improves handling name clashes with other application identifiers or .NET reserved words
  • Improves preserving comments in enums, user-defined types, and select-case statements
  • Adds logic to report a warning when a Refactor/FixType is not found
  • Improves inferring and propagating the rank of array parameters and variables
  • Increases the number of possible branches in a Select/Case to 1024
  • Improves handling COM descriptions containing same-named interfaces
  • Removes automatic conversion of a Function to a Subroutine when the Function does not set any return value
  • Improves handling Implements and interfaces
  • Improves refactoring GoSub into separate functions
  • Improves handling the CVar function
  • Improves handling recursive functions
  • Improves reporting translation diagnostics when TraceChanges=on
  • Improves readability of complex late calls
  • Improves maintaining the consistency of inferred types for a property let/get
  • Improves handling of variant variables/parameters used both as array and scalar
  • Improves logic to insert temporary variables used within Do-While loops
  • Improves project with non-standard file naming conventions

gmStudio: Upgrade Solution Development Environment Update

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it easier to use. This distribution includes several enhancements:

  • Adds Support for UserDocuments and Designers on Source Structure Report
  • Improves Support for custom ActiveX Designers
  • Corrects updating Reference Status in the project tracking reports
  • Improves use of user-preferred editor rather than shell-open
  • Adds support opening containing file from a full-file search at a specific line
  • Simplifies default editor conventions
  • Adds the ability to open Side-by-Side viewer from Build Log listing

Sample Upgrade Rules Update

gmStudio ships with a collection of sample upgrade rules that can be used to add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. The sample rules were updated to reflect the latest product improvements and conventions.

Sample Upgrade Solutions Update

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. The sample upgrade solutions were updated to reflect the latest product improvements and conventions. 

New gmStudio Case Studies and Testimonials

A handful of recent customers allowed us to publish brief descriptions of their VB6/COM upgrade projects and their testimonials of success with gmStudio. Learn how small teams successfully completed large, ambitious VB6/COM upgrade efforts with the help of gmStudio. Read the case studies 

Adding WPF Support for VB.NET

The gmStudio distribution includes a sample demonstrating an upgrade of VB6 forms to WPF. This sample was originally implemented for C# only. In this release, we added a WPF sample for VB.NET and published a blog article to describe how we did it.

gmBasic: Upgrade Engine Update

gmBasic is a powerful code processor that reads, interprets, and rewrites VB6/ASP/COM systems as .NET (C# or VB.NET). We are always improving gmBasic so that it is more robust and flexible and it produces cleaner, more correct results. This distribution, Version 30.44, includes several enhancements:

  • Improves the general, right out-of-the-box, ability to produce build-complete .NET code from very large, very complex VB6 systems (most recently including enhancements needed to upgrade a Comprehensive Tax Preparation of 19 inter-related VBPs referencing 993 unique files containing over 1.4M unique LOC and 42 third party COM components)
  • Improves rewriting complex GoSub blocks as separate functions
  • Improves handling undeclared variables
  • Improves rewriting complex conditional expressions that mix booleans and enums
  • Improves relocating local Const variables when needed to initialize local Static arrays
  • Improves rewriting Select/Case statements
  • Improves rewriting designer code enum properties initialized with an undefined numeric values
  • Improves rewriting IIf with incompatible true/false result types
  • Improves determining if a control or its default property is needed when referenced from outside the host form
  • Improves rewriting large numeric literal expressions to prevent compile-time overflow
  • Improves identifying collection properties and migrating complex references to collection element
  • Improves rewriting binary operations involving decimal and DateTime quantities
  • Improves rewriting logic for control arrays as logic using SortedList
  • Improves handling files that had internal naming collision
  • Improves rewriting the Unload control statement
  • Improves rewriting references to the Index property of control arrays.
  • Improves propagating custom interface events to Implementing classes
  • Improves rewriting very large numeric consts that were specified as string literals
  • Improves inferring and propagating the rank and marshalling of array parameters
  • Improves placement of temporary variables created in nested code blocks
  • Improves type inference for collections of collections
  • Improves rewriting Friend interface members as public
  • Improves rewriting parameterized properties

gmStudio: Upgrade Solution Development Environment Update

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it easier to use. This distribution includes several enhancements:

  • Adds support for Side-by-Side Code Viewer with ASP upgrade projects
  • Adds support for creating new gmStudio projects from the command line interface
  • Improves default results folder naming conventions to use a simpler, more natural form
  • Improves Close Project behavior
  • Improves error handling and reporting for Meta-Language and Translation processes
  • Adds Double-Click to Edit User-Files on the Configuration form
  • Improves Edit Project Name behavior on the Configuration form
  • Improves the Search Reporting for XML files in the User and System folder by reporting fully qualified location of matches.
  • Improves default Search List/Reporting layout when their orientation changes
  • Improves Visual Studio Solution Generator to set stable project GUIDs based on upgrade project task names
  • Corrects Task order displayed on the Upgrade Wizard to reflect build order and processing order
  • Corrects new projects to suppress upgrading Collections/Dictionaries to strongly-typed Generic collections

Sample Upgrade Rules Update

gmStudio ships with a collection of sample upgrade rules that can be used to add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. The latest distribution of sample rules files includes several improvements:

  • Adds scripts showing how VB6 forms may be upgraded to WPF/XAML for VB.NET. Formerly this was only available for C#

Sample Upgrade Solutions Update

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. The samples were updated to reflect the latest product improvements and conventions.

  • Adds a sample demonstrating VB6 forms to WPF/XAML for VB.NET. Formerly this was only available for C#

Abstract
The gmStudio distribution includes a sample demonstrating an upgrade of VB6 forms to WPF.  This sample was originally implemented for C#.  The purpose of this article is to describe how we added a WPF sample for VB.NET and provide insights into advanced customization.  The work required changes to the following metalanguage files:

  • enumerations.xml
  • vbcontrols.xml
  • locSubsystem.gmsl
  • wpfSubsystem.gmsl
  • vb7lang.xml
  • VBASIC.xml

Background
A Subsystem is a collection of related upgrade rules that provide a specific upgrade feature.  The current WPF/C# sample uses subsystem=wpf and subsystem=loc (light-weight object oriented C# coding style).  The two subsystems are activated by adding two commands to the translation script:

<Select SubSystem="wpf"/>
<Select SubSystem2="loc"/>

Generally speaking, the WPF/VB.NET sample will be analogous to the WPF/C# sample. However, the problems are in the details: I initially find the WPF subsystem contains several C#-specific patterns in vbcontrols.xml; for example there are a int and double casts as well as a few other C# patterns relating to data binding; for example:

 

vbcontrols.xml
 <pattern id="Top.Set" >
 <wpf narg="2" code="Canvas.SetTop(%2d,(double)(%1d))\c" />
 <all narg="2" code="%2d.Top = %1d\c" />
 </pattern> 

 

What is needed here is a VB.NET form for some WPF operations. This is analogous to the situation with SubSystem=loc/lob where some patterns need both a VB.NET and a C# form.  For WPF we will need a pair of subsystems, wpf/wpb, for C#/VB.NET respectively. The new subsystem is added to enumerations.xml:

<MetaLanguage>
<Enumeration id="Dialects" >
...
 <Entry id="wpf" migName="LNG_WPF" value="9" />
 <Entry id="loc" migName="LNG_LOC" value="10" />
 <Entry id="lob" migName="LNG_LOB" value="11" />
 <Entry id="wpb" migName="LNG_WPB" value="12" /> <------ added
 </Enumeration>

 

Returning to vbcontrols.xml, I can add wpb versions of the dailect-specific wpf patterns, for example:

vbcontrols.xml
 <pattern id="Top.Set" >
 <wpb narg="2" code="Canvas.SetTop(%2d,%1d)\c" /> <------ added
 <wpf narg="2" code="Canvas.SetTop(%2d,(double)(%1d))\c" />
 <all narg="2" code="%2d.Top = %1d\c" />
 </pattern>
I find another dialect-specific WPF pattern in VBASIC.XML.   This pattern specifies the operation needed to start WPF application.  A VB.NET version is added:

 

VBASIC.XML
 <pattern id="WPO">
 <subcode id="SetCanvas">
 <wpf narg="3" code="%2d.%3d = %1d\c"/>
 <all narg="3" code="Canvas.Set%3d(%2d, %1d)\c"/>
 </subcode>
 <subcode id="RunProject" >
 <wpb narg="4" code="Dim app As New %4d.App : app.Run(%1d)\c" /> <------------ added 
 <all narg="4" code="new %4d.App().Run(%1d)\c" />
 </subcode>
 </pattern> 

In order to activate the new wpb subsystem, I need to modify the CompilerInfo handlers to include wbp in the Subsystem stack for Dialect=vbn. The CompilerInfo handlers are gmSL routines that are called by the tool when it begins processing the Compile command in a translation script. There is a CompilerInfo handler for Subsystem=loc and I will add one for SubSystem=wpf.   The change must be made to load the subsystems in the correct order of precedence based on the selected .NET language dialect. 

CompilerInfo Event Handlers
locSubsystem.gmsl
int locCompilerInfo(int dummy1, int dummy2)
{   
   if(Select.Dialect == Dialects.vbn)
   {
      if (Select.SubSystem == Dialects.wpb)
      {
         Select.Subsystem = Dialects.wpb;
         Select.Subsystem2 = Dialects.wpf;
         Select.Subsystem3 = Dialects.lob;
         Select.Subsystem4 = Dialects.loc;
      }
      else
      {
         Select.Subsystem = Dialects.lob;
         Select.Subsystem2 = Dialects.loc;
      }
   }
   else
   {
      if (Select.SubSystem == Dialects.wpf)
      {
         Select.Subsystem  = Dialects.wpf;
         Select.Subsystem2 = Dialects.loc;
      }
   }
   return 0;
}

wpfSubsystem.gmsl
int wpfCompilerInfo(int dummy1, int dummy2)
{
   if(Select.Dialect == Dialects.vbn)
   {
         Select.Subsystem = Dialects.wpb;
         Select.Subsystem2 = Dialects.wpf;
         Select.Subsystem3 = Dialects.lob;
         Select.Subsystem4 = Dialects.loc;
   }
   else
   {
         Select.Subsystem = Dialects.wpf;
         Select.Subsystem2 = Dialects.loc;
   }
   return 0;
}

There are several places in authortext.gmsl testing for the presence of a subsystems. For these more complex multi-subsystem scenarios, they may also need to check SubSystem2, Subsystem3, etc. authortext.xml must also be modified to allow for this. A utility function, hasSubSystem, will be used to help make these tests in a consistent way.

authortext.gmsl
int hasSubSystem(int theSubSystem)
{
 if (Select.SubSystem ==theSubSystem) return 1;
 if (Select.SubSystem2==theSubSystem) return 2;
 if (Select.SubSystem3==theSubSystem) return 3;
 if (Select.SubSystem4==theSubSystem) return 4;
 if (Select.SubSystem5==theSubSystem) return 5;
 return 0;
} 

Several other simple changes relating to default assembly references and Imports statements were needed to support WPF for VBN.   These are done by modifying in authortext.gmsl. 

A critical part of supporting the WPF upgrade relates to authoring XAML from the VB6 forms and declaring the WPF Application class.  This work is done in the wpfSubSystem.gmsl script.  This gmSL script contains various upgrade event handlers and supportig routines that are called by gmBasic at the appropriate times during the authoring process.   Support for VB.NET was added by making the code in wpfSubSystem.gmsl dialect-specific: adding logic to author either C# or VB.NET code depending on the dialect setting.

Next, I add an entry to VB7Lang.xml so that both the wpf SubSystem and the new wpb SubSystem will invoke the upgrade event handlers implemented in  WPFSubsystem.gmsl:

VB7Lang.xml
<gmSL NameSpace="gmSL" class="WPFSubSystem" Source="%UserFolder%\WPFSubsystem.gmsl" /> 
<gmSL NameSpace="gmSL" class="WPBSubSystem" Source="%UserFolder%\WPFSubsystem.gmsl" /> <-------------- added 
I need to recompile the Metalanguage using the modified files. This creates a binary metalanguage file that can be used during the translation process.
  
With these changes, the WPF feature may be activated by adding one line to a translation script:

 

<Select SubSystem="wpf"/> 

 

The above now works for both Dialect=csh and Dialect=vbn.  Note: the WPF upgrade subsystem is a limited implementation: it supports most VB6 intrinsic controls and the COM TabControl (TabDlg).  Additional VB6/COM controls and other features may be added by modifying the appropriate language scripts and COM description files.  Contact us if you have any questions.


New gmStudio Testimonials

A number of our recent customers allowed us to publish brief descriptions of their VB6/COM upgrade projects and their testimonials of success with gmStudio.  Learn how small teams successfully completed large, ambitious VB6/COM upgrade efforts with the help of gmStudio. 

Given a number of technology trends, legacy modernization is still a critical priority -- now, more than ever.

First, the official end-of-support for Visual Basic classic (VB6) was in April 2008 -- almost 9 years ago. It has also been almost 20 years since the last major release of VB6. As a result, the number of skilled developers who are available and willing to work with VB6 is critically low. This represents a growing business risk for organizations maintaining systems in VB6. The same type of risks exist for organizations maintaining web sites with ASP classic.

Second, there have been many recent changes for Windows Operating Systems:

  • End of Windows XP Extended Support: April 2014
  • End of Windows Server 2008 Mainstream Support: January 2015
  • Start of Availability of Windows 10: July 2015
  • Start of Availability of Windows Server 2016: October 2016

Third, Microsoft has made huge investments in .NET. Since 2000, Microsoft has published many significant releases of the .NET languages, frameworks, and tools. In addition, Microsoft and others have made great investments in open source. .NET has been well-received by product vendors, developers, and other experts. It enjoys outstanding support from the open source community with compilers, IDEs, frameworks, and other tools enabling .NET development for platforms other than Windows. Going into 2017, we find .NET is a powerful, mature development platform backed by a global community of IT professionals.

Fourth, the last decade brought important advancements in how we build software: improved development operations tools and techniques, powerful new frameworks and design patterns, and exciting new areas for application features. These new tools, new methodologies, work well with .NET. When they are combined with strategic business vision, they make a strong case for modernizing VB6/ASP legacy systems and adopting .NET.

For organizations still running on 20-year-old, unsupported technologies, 2017 may be the year to plan and implement a successful upgrade! We have the upgrade technology and the necessary expertise in this area to assist you. Please give us a call or email -- we will be very happy to hear from you.

gmBasic: Upgrade Engine

gmBasic is a powerful code processor that reads, interprets, and rewrites VB6/ASP/COM systems as .NET (C# or VB.NET). We are always improving gmBasic so that it is more robust and flexible and it produces cleaner, more correct results. This distribution, Version 30.43, includes several enhancements:

  • Improves the general ability to produce build-complete .NET code from very large, very complex VB6 systems (most recently including enhancements needed to upgrade a Comprehensive Accounting System of 38 inter-related VBPs re ferencing 1,149 unique files containing over 1.8M unique LOC).
  • Improves ByRef to ByVal optimization rules
  • Improves precision of division involving fixed-point quantities.
  • Improves handling of international Character sets in source code and upgrade configuration files
  • Improves handling With blocks using instance of a user-defined type (C#)
  • Improves handling of IsNull/Null operations with default properties
  • Improves handling of power-of-ten numeric constants to use the 'E' notation (e.g., 1.0E3)
  • Improves handling of optional parameters that use private symbols as default values by using overloading

gmStudio: Upgrade Solution Development Environment

Powered by gmBasic, gmStudio is a development environment for creating high-performance, custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it easier to use. This distribution includes several enhancements:

  • Adds a FileName attribute in the ScriptRule commands
  • Adds support for copying selected text to the clipboard from the Side-by-Side code review form
  • Adds support for authoring '%' character from Search Reporting template (useful for generating refactoring commands from search results)
  • Improves copying task list data using CTRL-C (names) and Shift-CTRL-C (details)
  • Adds option to add a User Command Script to each task when adding tasks to a gmStudio project file
  • Improves Search Reporting options: unique, template, detail, none
  • Improves ProgID Report by removing deprecated CLSID field
  • Corrects issue with FileExists test when file path is null
  • Corrects issue with starting application with the /folder command line switch

Sample Upgrade Rules

gmStudio ships with a collection of sample upgrade rules that can be used to add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. The latest distribution of sample rules files includes several improvements: 

  • Standardizes sample COM replacement rulesso that the internal library id is same as default COM library id. This simplifies activating COM replacement rules files in your upgrade solution
  • Simplifies MigrationSupport namespace conventions to streamline the supporting code if needed
  • Updates standard script templates by moving configuration folder specifications to top of script
  • Updates comments in sample standard script templates standard script templates file

Sample Upgrade Solutions

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. The samples were updated to reflect the latest product improvements and conventions

gmBasic: Upgrade Engine

gmBasic is a powerful code processor that reads, interprets, and rewrites VB6/ASP/COM systems as .NET (C# or VB.NET). We are always improving gmBasic so that it is more robust and flexible and produces cleaner, more correct results. This distribution, Version 30.40, includes several enhancements:

  • Improves general ability to produce build-complete .NET code from very large, very complex VB6 systems (most recently including enhancements needed to upgrade a Comprehensive Accounting System of 38 inter-related VBPs referencing 1,149 unique files containing over 1.8M unique LOC).   
  • Improves client-side VBScript to JavaScript transformation when also using Subsystem=loc
  • Corrects handling of <header> tag in ASP
  • Improves handling large COM libraries with classes implementing more than 100 interfaces (e.g. ESRI GIS)
  • Improves rewriting Select Case as C# switch statement rather if/else
  • Improves restructuring code using both GoSub with GoTo labels into separate functions
  • Improves recognizing operations in late bound property Get/Let property operations
  • Improves upgrading Popup menu
  • Improves handling If Then Else when there is no operation after Then
  • Increases the use of cleaner, early bound syntax for symbols having an inferred type
  • Increases the limits of the Build Order Tool to allow up to 1,024 VBPs

gmStudio: Upgrade Development Environment

Powered by gmBasic, gmStudio is a development environment for creating custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it more helpful and easier to use. This distribution includes several enhancements:

  • Adds support for a Wizard-Only license for a new "Great Migrations Upgrade Wizard" offering.
  • Improves licensing so that IDF generation is allowed after the Trial License is expired
  • Improves logic to setup Global Stubs script
  • Adds Search Terms Presets to the Search feature 
  • Adds Search Reports Presets to the Search feature
  • Improves .NET Build Log Report to more accurately reflect .NET project path
  • Improves Translation Log Report for missing references

Sample Upgrade Rules

gmStudio ships with a collection of sample upgrade rules that add custom features to your upgrade solution. These XML documents and gmSL scripts are distributed as source that you may modify to fit your unique requirements. This distribution of the latest set of sample rules files includes several improvements:

  • Improves the default Search Terms file adding presets
  • Improves the default Search Report Templates file adding presets

Sample Upgrade Solutions

Great Migrations publishes a number of sample VB6/ASP upgrade solutions to illustrate the capabilities of gmStudio. All of the samples were updated to reflect the latest product improvements and conventions. 

gmBasic: Upgrade Engine

gmBasic is a programming language processor that reads, interprets, and rewrites VB6/ASP/COM as .NET code (C# or VB.NET). We are always improving gmBasic so that it is more flexible and produces cleaner, more correct .NET code. This distribution, Version 30.37, of the upgrade engine and metalanguage files includes several enhancements:

  • Improves automatically producing build-complete C# code from very large, very complex systems (most recently a Retail Auto Parts Distribution Management System comprised of 80 VBPs and 1.5M LOC).
  • Corrects missing VB6 Form Menu when the form has no other controls
  • Improves propagation of Refactor/Rename in in COM description files generated from source code
  • Increases the number of subclasses that can be members of a coclass in a COM description file
  • Corrects duplicated interface members in generated stub framework
  • Improves Naming Conventions for temporary non-LValue arguments needed to pass by ref
  • Improves correctness of Global Build Process Workflow
  • Improves upgrading Is Operator to use .Equals() or equality operator as appropriate
  • Removes built-in support for MigrationSupportUI
  • Removes built-in support for DevEnv=VS2005 and DevEnv=VS2008

gmStudio: Upgrade Development Environment

Powered by gmBasic, gmStudio is a development environment for building custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it more helpful and easier to use. This distribution contains the latest build of gmStudio, which includes several enhancements:

  • Improves initial value of Task Description field to contain VBP Name or Description if available
  • Adds an item for displaying the Side-By-Side viewer from the Source Metrics context menu
  • Adds Regular Expression Conditions to the ScriptRules processor
  • Adds PreAnalyse and PostAnalyze insertion points for the ScriptRules processor
  • Improves Source Reference Report/Search
  • Improve searching and reporting Multi-Unit Scripts (e.g. ASP site scripts) with SrcType=XML
  • Improves accuracy of Target Code Scan
  • Improves CTLR-C and Shift-CTLR-C for copying Task Information to the Clipboard

Sample Upgrade Rules

gmStudio ships with a collection of sample upgrade rules that add custom upgrade features to your upgrade solution -- such as custom COM replacement and diagnostic instrumentation. These XML documents and gmSL scripts are distributed as open source and you may modify them to fit your unique requirements. This distribution of the latest set of sample rules files includes several improvements:

  • Improves the default Custom Scripting Transformation script (ScriptRules.xml)

Sample Upgrade Solutions

Great Migrations publishes a number of VB6/ASP upgrade solution samples to illustrate the capabilities of gmStudio. All of the samples were updated to reflect the latest product improvements and conventions. All samples now target VS2013 although you may easily modify them to target VS2010 or VS2015.

  • Removes MigrationSupportUI=off

gmBasic: Upgrade Engine

gmBasic is a programming language processor that reads, interprets, and rewrites VB6/ASP/COM as .NET code (C# or VB.NET). We are always improving gmBasic so that it is more flexible and produces cleaner, more correct .NET code. This distribution, Version 30.32, of the upgrade engine and metalanguage files includes several enhancements:

  • Improvements to be able to produce build-complete C# code from very large and very complex systems (most recently a VB6 Shipping/Cargo Simulation System comprised of 22 VBPs and 1M LOC).
  • Adds Interfaces.dll extension to help upgrade dynamic parameters to Custom Interfaces
  • Improves Array to Array assignments
  • Improves upgrading goSub code to separate functions
  • Improves upgrading Error Handling
  • Improves support for the COM Stub Framework generation process
  • Adds gmSL Character functions IsLowerCase, IsUpperCase, and Length

gmStudio: Upgrade Development Environment

gmStudio is a development environment for building custom VB6/ASP/COM to .NET upgrade solutions. We are always adding functionality to gmStudio and also making it more helpful and easier to use. This distribution contains the latest build of gmStudio, which includes several enhancements:

  • Improves support for running in 32bit environments
  • Improves stability of running gmStudio as a Visual Studio Extension
  • Improves support and documentation for the COM Stub Framework generation process
  • Improves support and documentation for the ScriptRule feature
  • Adds match order to search results on the Side-by-Side Viewer
  • Improves Template Search Reporting by making template place-holders case-insensitive
  • Improves the Visual Studio Solution Report by using a "GenerateSolution.txt" file to file to specify which projects to include in the solution
  • Improves cancelling long running batch process cancelling the process tree, not just the parent process
  • Corrects multi-line target code search
  • Corrects Side-by-Side Viewer when selected search record is from a .NET Designer file
  • Improves the GUI Scan Report to a record fully-qualified control name for each property setting
  • Improves the Translation Log Report to record additional warning messages
  • Contains various minor UI improvements

Sample Upgrade Rules

gmStudio ships with a collection of sample upgrade rules that add custom upgrade features to your upgrade solution -- such as custom COM replacement and diagnostic instrumentation. These XML documents and gmSL scripts are distributed as open source and you may modify them to fit your unique requirements. This distribution of the latest set of sample rules files includes several improvements:

  • Adds StubControlBaseClass.xml to assist the upgrade of Stub Framework controls by deriving from WinForms Controls
  • Improves the COM upgrade for Internet Controls (ieframe.dll/shdocvw.dll/msinet.ocx)
  • Improves the COM upgrade for MS Calendar Control (MSCAL.OCX)
  • Improves the COM upgrade for MS Common Controls 2 (MSCOMCT2.OCX)
  • Improves the COM upgrade for MS FlexGrid Control (MSFLXGRD.OCX)
  • Improves the COM upgrade for MS WinSock Control (MSWINSCK.OCX)
  • Improves the COM upgrade for MS XML API (MSXML6.dll)
  • Improves the COM upgrade for Resize Kit (ResizeKit.ocx)
  • Improves the COM upgrade for Rich Text Control (richtx32.ocx)
  • Improves the COM upgrade for UI Rad Text Controls (uiRAD.ocx)
  • Improves the COM upgrade for RegEx API (vbscript.dll/3)
  • Improves the Global Stub Framework Generation script (GlobalStubs.xml)
  • Improves the Custom Scripting Transformation script (ScriptRules.xml)

gmBasic: Upgrade Engine

gmBasic is a programming language processor that reads, interprets, and rewrites VB6/ASP/COM as .NET code (C# or VB.NET). We are always improving gmBasic so that it is more flexible and produces cleaner, more correct .NET code.
This distribution contains Version 30.29 of the upgrade engine and metalanguage files which includes several enhancements:

  • Improves correctness of Date with Numeric calculations and comparisons in upgraded codes
  • Improves upgrading goSub to separate functions
  • Improves handling of Interfaces and Implements for complex object models
  • Improves readability of translations by suppressing some conversions and namespace references
  • Improves handling of stdole.Font
  • Improves upgrading nested On Error GoTo blocks to try-catch
  • Improve handling of static local variables

gmStudio: Upgrade Development Environment

gmStudio is a development environment for building custom VB6/ASP/COM to .NET upgrade solutions. We are always improving gmStudio so that it is more helpful and easier to use. This distribution contains the latest build of gmStudio which includes several enhancements:

  • Adds a new Side-by-Side File Viewer that may be launched from the Search results list. This only works source and target results in VB6 projects right now. Other types of search results and ASP projects will be added in a future release.
  • Corrects an issue with ASP Reference Report when a page has no COM dependencies

Sample Upgrade Solutions

Great Migrations publishes a number of VB6/ASP upgrade solution samples to illustrate the capabilities of gmStudio. All of the samples were updated to reflect the latest product improvements and conventions. All samples now target VS2013 although you may easily modify them to target VS2010 or VS2015.

New Upgrade Effort Estimation Model

We have developed a new model for computing the effort of a large modernization project.  Please contact us if you are interested in learning more.  https://www.greatmigrations.com/about/contact.aspx

gmBasic: Upgrade Engine

gmBasic is a programming language processor that reads, interprets, and rewrites VB6/ASP/COM as .NET code (C# or VB.NET). We are always improving gmBasic so that it is more flexible and produces cleaner, more correct .NET code. This distribution contains Version 30.28 of the upgrade engine and metalanguage files which includes several enhancements:

  • Improves upgrading Friend scope modifier to internal for C# and Friend for VB.NET
  • Improves upgrading goSub to separate functions
  • Improves recognizing complex expressions of collections with default properties containing collections
  • Improves inferring rank of multi-dimensional arrays from usage
  • Improves handling of Const Double with computed values
  • Improves upgrading nested On Error Goto blocks to try-catch
  • Improve handling of static local variables

gmStudio: Upgrade Development Environment

gmStudio is a development environment for building custom VB6/ASP/COM to .NET upgrade solutions. We are always improving gmStudio so that it is more helpful and easier to use. This distribution contains the latest build of gmStudio which includes several enhancements:

  • Adds VS2015 support choosing Framework v4.6.1 by default
  • Improves the Generate Visual Studio Solution function to support VS2010 and higher
  • Adds Float/Dock Window and Alternate Panel Layout behavior to Search TabPage
  • Improves COM References Report to identify COM type libraries that wrap interop assemblies
  • Improves License Request to allow non-Project-Specific request option
  • Improves Source References Report to indicate if a reference is to an .NET interop assembly
  • Corrects issues with Wizard settings and project results not saving
  • Corrects problem with exceeding license limit on Project Setup Form

Sample Upgrade Solutions

Great Migrations publishes a number of VB6/ASP upgrade solution samples to illustrate the capabilities of gmStudio. All of the samples were updated to reflect the latest product improvements and conventions. All samples now target VS2013 although you may easily modify them to target VS2010 or VS2015.

gmBasic: Upgrade Engine

gmBasic is a programming language processor that reads, interprets, and rewrites VB6/ASP/COM as .NET code (C# or VB.NET). We are always improving gmBasic so that it is more flexible and produces cleaner, more correct .NET code. This distribution contains Version 30.25 of the upgrade engine and metalanguage files which includes several enhancements:

  • Improves automated refactoring of GoSub into separate function calls
  • Improves handling of Const Double with computed values
  • Improves processing very complex expressions using nested collections
  • Improves gmSL handling of complex solutions requiring multiple SubSystems such as LOC+WPF
  • Continues development of the VMS COBOL/DCL to C# feature. Please contact us to learn more.

gmStudio: Upgrade Development Environment

gmStudio is a development environment for building custom VB6/ASP/COM to .NET upgrade solutions. We are always improving gmStudio so that it is more helpful and easier to use. This distribution contains the latest build of gmStudio which includes several enhancements:

  • Corrects a problem with Trial License blocking code generation for small projects
  • Improves Upgrade Project Wizard output folder selection
  • Improves Translation Log Report to include additional type of warnings

Sample Upgrade Solutions

Great Migrations publishes a number of VB6/ASP upgrade solution samples to illustrate the capabilities of gmStudio. All of the samples were updated to reflect the latest product improvements and conventions. All samples now target VS2013 although you may easily modify them to target VS2010 or VS2015.