Blog

gmBasic: Upgrade Engine

gmBasic is a code transformation tool that rewrites VB6/ASP/COM systems to one of the .NET languages (C# or VB.NET). Based on feedback from our clients and migration projects in the field, we are continuously improving gmBasic so as to help users more easily produce cleaner and more correct results. This distribution, Version 30.80, includes several enhancements:

  • Improves handling statement continuation
  • Improves handling missing code files
  • Improves handling assigning a string quantity to a Font property
  • Improves several details in VB.NET translations

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 continuously adding functionality to gmStudio and making it easier to use. This distribution includes several enhancements:

  • Improves reporting user-defined type and class references in the Analytics References Report
  • Improves handling file references for sub-modules within COM libraries
  • Improve status reporting for VB6 Build test
  • Improves Startup Splash Screen to display a unique build ID

gmslAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmslAPI also includes classes to facilitate the integration and management of complex upgrade rules in gmStudio. This API was updated to reflect the latest product improvements and conventions.

  • Improves coverage and detail in the Reference and Definitions reporting APIs

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 sample rules were updated to reflect the latest product improvements and conventions.

  • Improves WPF Migration to handle Startup with Main function rather than a startup Form
  • Improves sample script for automating gmStudio from the command line

Sample Upgrade Solutions

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.

It's been 20 years

Happy New Year! 2019 is here and it is almost 20 years since the last major release of Visual Basic classic (VB6). Companies have been implementing business functionality as VB6 (or ASP classic) code for over two decades. And while these legacy applications are essential to business, their dependence on VB6/ASP/COM is a serious risk for the users of these applications. Recent trends in computing and shifts in the developer community make VB6/ASP modernization an urgent priority -- more than ever before. This email presents a business case for upgrading VB6/ASP/COM systems to .NET and describes how Great Migrations can help.

Technology Trends

Our expectations for computing have changed dramatically since the turn of the century:

  • Several Major Windows OS changes: XP, Vista, Windows 7, Windows 8, Windows 10
  • Critical focus on cyber security and privacy
  • Profound advances in web application design and browser technology
  • Ubiquitous internet: IoT, web-connected applications, web services, mobile and smart devices
  • New cloud computing and virtualization platforms: Azure, AWS, Docker
  • Improvements in user experience: Voice, Touch, Gestures, Vision
  • Changes in deployment: Automatic Windows Update, Roaming Realtime Personalization, Installations from App Stores, SaaS
  • Cutting-edge computing: Machine Learning, Hive Computing, Robotics, and Augmented Reality

The Windows platform continues to diverge from its 32-bit roots and, in the process, it becomes less compatible with VB6 and COM. January 2020 will bring the End of Windows 7 Support. We already have people telling us that their VB6/ASP applications no longer work reliably and fail to meet expectations for security and usability. Those problems will increase as more people upgrade to the latest Windows OS and find that their out-dated applications do not even install let alone function correctly.

Meanwhile, Windows development for .NET continues to evolve. The .NET community is growing and creating commercial and Open Source compilers, frameworks, applications, and development tools. .NET development is now possible on multiple platforms: Android, iPhone, Linux and MacOS -- besides Windows.

Finally, we continue to enjoy great advancements in the ways teams build software: improved DevOps and Collaboration, Continuous Integration, automated testing, integrated application monitoring, and sophisticated design patterns. Optimized for.NET, these advances cannot be fully utilized on the VB6/ASP/COM platform.

This is progress, but technology for technology's sake does not pay the bills. Reliable, accurate functionality for your users is what matters most. As long as your functionality remains locked up in out-dated technology, it will be difficult to maintain service levels, let alone deliver the promises of contemporary computing.


The Case of the Disappearing VB6 Programmer

VB6 was designed and optimized for COM and Windows XP. It was very popular in the 1990s, but it started to fall out of favor in 2002 when Microsoft released .NET. The official end-of-support for VB6 was over 10 years ago, in April 2008.

Developers generally prefer to work with well-supported, marketable technologies. Finding people who are both willing and able to work with VB6/ASP is getting harder and it's only a matter of time before VB6/ASP development activities fail due to lack of resources. If you have VB6/ASP experts working for you, it may be a good idea to begin your modernization efforts now, while those folks are available to help. You may also consider using gmStudio to help you "cash-in" your legacy codes and get the job done faster with less cost, risk and disruption.

At its peak, there were over three million developers writing VB6 code. Maybe you were one of them; I was. Today, most working Windows developers never used VB6 and those who did have gone on to learn .NET. VB6 as a mainstream development tool is history, and the same can be said about ASP Classic for web development. As shown in the schematic, the assumed diminishing size of the VB6 community may not be far off from the actual attrition.

Estimated Numbers of Willing and Able VB6 Developers over time

A Major Advancement in VB6/ASP/COM Transformation Technology -- Upgrading VB6 Forms to WPF

gmBasic is a powerful code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems for .NET -- as either C# or VB.NET code. gmBasic is extremely fast and accurate, but its most powerful feature is flexibility arising from an open COM type system, a modifiable VB6/ASP metalanguage, and customizable upgrade scripts.

In 2018, GM made another major breakthrough: gmAPI, a .NET API for automating the gmBasic engine and accessing the semantic models produced by our linguistic compilation technology. Development teams may now use the Visual Studio IDE to integrate gmBasic translation technology with .NET platform features and create sophisticated upgrade solutions that do deep refactoring like upgrading VB6 Forms to WPF and restructuring logic with custom COM API replacements.

gmStudio users have already used the gmAPI to implement very large, multi-feature upgrade solutions. See for example this case study about a large VB6/Forms to C#/WPF upgrade.

gmStudio Components

 

This is a copy of the Annual News Letter for 2019

gmBasic: Upgrade Engine

gmBasic is a powerful code transformation tool that reads, interprets, and rewrites VB6/ASP/COM systems for .NET (using C# or VB.NET). We are always improving gmBasic and the core upgrade rule set to make them more robust and flexible so that they produce cleaner, more correct results. This distribution, Version 30.78, includes several enhancements:

  • Improves handling of TabIndex on Labels and Frames to more closely match VB6 Tab Order behavior in WinForms
  • Improves migration of File System ListBox controls to WinForms
  • Adds support for setting Library.ImplicitByRef and Library.AssemblyName in Migrate commands
  • Improves handling of name clash between a class and an enclosed User-Defined-Type
  • Adds support for renaming a User-Defined Types by accepting the migName attribute in the Interface Description Files

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 making it easier to use. This distribution includes several enhancements:

  • Improves Splash Screen at startup

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmSLAPI also includes classes to facilitate integrating with gmStudio and managing complex upgrade rules. The API was updated to reflect the latest product improvements and conventions.

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 sample rules were updated to reflect the latest product improvements and conventions.

Sample Upgrade Solutions

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.

  • Corrects handling of File System ListBox controls in ScanTool Sample
  • Improves handling of TabIndex on Labels and Frames to more closely match VB6 Tab Order behavior in WinForms

gmBasic: Upgrade Engine

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

  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from VB6 code. Most recently, these enhancements were brought to bear on the upgrade of a Property Management application implemented in 44 VBPs referencing 2,520 code files containing 1.9M LOC and 44 third-party-COM components
  • Improves handling of type indicator characters used in variable references
  • Improves handling VB.Data Control and VB.OLE Control
  • Improves handling name collisions between global methods and user-defined types
  • Improves handling handling alternate statement separator in declarations using Global keyword
  • Adds detailed diagnostic logging for Type Interference using <Select TraceChanges="on"/>

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 making it easier to use. This distribution includes several enhancements:

  • Improves performance of New Project Wizard
  • Improves various aspects of UI such as list sorting, tooltips, labels, etc
  • Adds option to skip build when running New Project Wizard
  • Adds option to ignore missing COM references when running New Project Wizard
  • Improves integrated .NET build to allow for different versions of VS2017
  • Adds a Splash Screen when starting in GUI mode
  • Improves diagnostic logging at startup feature
  • Improves console logging when running in batch mode
  • Improves syntax highlighting for C# in Side-by-Side viewer
  • Improves performance of running analytics reports
  • Improves file/string hashing to use FIPS compliant algorithm   (used for GUID generation and duplicate file / method detection)
  • Improves handling of international character sets by standardizing on UTF-8 encoding
  • Improves performance of Longest Lines report
  • Improves handling of special characters when searching contents of Side-by-Side form
  • Improves handling very large files during Target Code Scan
  • Improves COM description file generator to suppress "numbered duplicate" interfaces
  • Improves performance of task filtering operations
  • Add support for XML declaration element in translation script and gmProj files
  • Improves Author Fix/FileFilter to allow for partial filepath; e.g., just the filename
  • Improves license checking and operation while in Reporting Only mode
  • Corrects problem with adding files to a new ASP project

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmSLAPI also includes classes to facilitate integrating with gmStudio and managing complex upgrade rules. The API was updated to reflect the latest product improvements and conventions.

  • Modifies sample Program to use gmslAPI.Common.DefaultStartUpFile rather than hard coded startup

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 sample rules were updated to reflect the latest product improvements and conventions.

  • Improves support for Scripting (scrrun.dll) Migration
  • Improves sample batch code in RunGmStudio.cmd

Sample Upgrade Solutions

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.

  • Improves sample batch regression test scripts

gmBasic: Upgrade Engine

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

  • Improves the general ability to produce accurate, build-complete .NET (C# and VB.NET) systems from VB6 code (most recently making enhancements needed to upgrade a massive ERP application with 1,366 VBPs referencing 11,739 code files containing 6.1M LOC and 65 third-party-COM components)
  • Improves handling COM file references in VBP files
  • Improves handling identifiers containing international characters
  • Improves handling VB6 App.LogPath and App.LogMode

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 making it easier to use. This distribution includes several enhancements:

  • Improves flexibility of deployment by allowing the user to specify .NET project file and folder naming conventions as part of each gmStudio project's settings
  • Improves resolution of Translation Script location for EXE tasks
  • Improves passing command line arguments for EXE tasks
  • Improves whole file search when matches are found at start of line
  • Improves project re-location logic to allow moving from one drive to another
  • Improves reporting of Warning and Note messages in the Translation Log Report
  • Improves support for MSBuild and VS2017
  • Improves ScriptRule feature so Compile\Refactor commands are automatically placed after Compile\Fix commands
  • Improves error handling when Authoring COM Interface Descriptions from a TypeLibs.lst file
  • Improves handling of international characters in script and log files
  • Corrects problem with saving user defaults changes
  • Corrects SyntaxHighlighter to color comments before strings
  • Improves efficiency of running metrics reports from New Project Wizard
  • Improves New Project Wizard to include Metrics details in Project Review results

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmSLAPI also includes classes to facilitate integrating with gmStudio and managing complex upgrade rules. The API was updated to reflect the latest product improvements and conventions.

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 sample rules were updated to reflect the latest product improvements and conventions.

  • Improves Tab Dialog Control (TabDlg32.ocx) Migration
  • Improves support for Scripting (scrrun.dll) Migration

Sample Upgrade Solutions

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.

Overview

Upgrading a real-world VB6 application typically requires replacing COM APIs with .NET APIs. gmStudio uses and open, extensible COM type system to facilitate automating these types of COM upgrades. The COM type system used by the upgrade process is declared in a set of files called Interface Description Files (IDFs). IDFs are XML text files that declare all of the elements of an API: the enumerations, classes, structs, etc. IDFs are detailed dow the level of individual method arguments. An standard set of IDFs are generated for you by gmStudio from the COM binaries used by your application. The IDF generation process usually works completely automatically, but in some cases it is necessary to manually locate and generate IDFs for atypical COM type libraries.

Standard IDFs are designed to direct the translation to use either a stub framework exposing the original COM API or an interop wrapper around the COM binary. The default is to let the gmStudio generate the stub framework and referecne it in the translated application code. This state of translation: referencing a stub framework is an initial step to facilitate building and verifying the standard translations. Once this step is completed, the IDFs may be modified to direct the translator to replace the COM APIs with some other API. The replacement techniques require modifying the IDF to change how its elements are referenced in translated code.

There are two ways to modify IDFs:

  • Modify the IDF XML files directly, or
  • Modify the IDF information with refactoring commands

This document describes how to use the second approach.  See this article for a discussion of COM Replacements by modifying IDFs directly.  

Mig.IDF Files

A Mig.IDF file is an XML text file that contains refactoring commands associated with a given IDF. Using Mig.IDF files provides a more deliberate, and arguably superior approach to organizing COM migration rules for each API. Compared to COM replacements done by modifying IDFs directly, using Mig.IDF files can be easier to create and easier to see what is being migrated because the rules are more clearly identified and explicit. Note also that Mig files are applied to the generated IDF, so re-generating the IDF will not disturb the associated Mig.IDF file.

An Example: MSComCtlLib.ProgressBar to a WinForms.ProgressBar

Let's say you want to migrate MSComCtlLib.ProgressBar to a WinForms.ProgressBar. This is a pretty easy migration as the WinForms control is very similar to the COM control.   

First you create a Mig.IDF file for the MSComCtl.ocx API taht contains progress bar. This file must be named "Mig." followed by the name of the COM IDF containing the class/control that you want to migrate in this case, the name is Mig.MSComCtl.ocx.xml. An initial version of this file is shown below.

<RefactorLibrary>
<Refactor id="[MSComCtl.ocx]">
<Migrate location="DoNotDeclare" migName="System.Windows.Forms" />
<Migrate id="IProgressBar.Min" migName="Minimum" />
<Migrate id="IProgressBar.Max" migName="Maximum" />
<Migrate id="IProgressBar.Appearance" migStatus="mustCorrect" />
<migClass id="NetControl.ProgressBar" migName="System.Windows.Forms.ProgressBar" parent="ProgressBar">
<property id="Location" value="(Left,Top)" nPram="2" migPattern="new System.Drawing.Point(%1d, %2d)" />
<property id="Name" type="string" value="SYM.name" />
<property id="Size" value="(Width,Height)" nPram="2" migPattern="new System.Drawing.Size(%1d, %2d)" />
<property id="TabIndex" type="Integer" value="TabIndex" default="0" />
<!-- NOT MAPPED for designer Appearance = System.Windows.Forms.AppearanceConstants.cc3D; -->
</migClass>
</Refactor>
</RefactorLibrary>

 

The Mig.IDF file should be placed in "user" folder in the project work space along with the other upgrade scripts, code, and documentation you are developing for your upgrade solution.

For this example, I placed the mig file in the usr\idf\3pc folder in my project workspace.

Next, you activate the Mig.IDF by taking advantage of gmStudio's folder conventions. For example, the following ScriptRule sets the primary configuration folder to usr\idf\3pc then loads the IDF. The tool will search for the IDF and load it then search for the Mig.IDF file and apply the refactoring commands.

<ScriptRule id="MSComCtlLib">
<Option>
<Select Target="..\usr\idf\3pc"/>
<reference id="MSComCtl.ocx" />
</Option>
</ScriptRule>

Finally, this ScriptRule may integrated into the main translation script template using a <ScriptRule> command:

<gmBasic>
<Storage Action="Create" Identifier="%JobId%" />
<select Target="%UserFolder%" />
<Select Local="%IdfFromCodeFolder%" />
<Select System="%IdfFromIdlFolder%" />
...
<ScriptRule id="MSComCtlLib" /> 

<Compile Project="%SrcPath%" />
<Analyse />
<Output Status="New" Filename="%BndPath%" />
<Author />
<Storage Action="Close" />
</gmBasic>

When translator processes any VBP code that references this API, it will do so according to the modified IDF rules.

Basic Processor V30.76(07/18/18) System Build(07/18/18 5:26:53)
...
Loading reference:[MSComCtl.ocx] \gmClients\Client\poc\proj\idf\FromIdl\MSComCtl.ocx.xml
Loading reference:[Mig.MSComCtl.ocx] \gmClients\Client\poc\proj\usr\idf\3pc\Mig.MSComCtl.ocx.xml
...

gmBasic: Upgrade Engine

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

  • Improves the general ability to produce accurate, build-complete .NET code systems from VB6 code (most recently making enhancements needed to upgrade a large insurance application with 26 inter-related VBPs referencing 592 code files containing 575K LOC and 34 third-party-COM components)
  • Improves accuracy and readability of certain complex conditional expressions
  • Improves default C# coding style to use lightweight object-oriented coding conventions (formerly, this required the "SubSystem=loc" option)
  • Improves default VB.NET coding style to favor using VB.NET run-time support rather than extension methods
  • Improves handling identifiers containing international characters

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 making it easier to use. This distribution includes several enhancements:

  • Adds flexibility of deployment by allowing the user to specify .NET project file and folder naming conventions as part of each gmStudio project's settings
  • Adds options for project task name conventions to better support different types of legacy project naming conventions
  • Adds support for setting CodePage in the .NET project file
  • Adds support for setting .NET Project Type GUIDs needed for WPF upgrades
  • Improves conventions for StartUpObject conventions for WPF upgrades
  • Improves handling of MigrationSupport stub classes in integrated translations
  • Improves handling of international characters in all Search Reporting functions
  • Adds stable-but-unique Project GUID generation for all .NET projects
  • Improves gmStudio About Box Reporting
  • Corrects screen layout issues when running Windows with Text Size greater than 100%
  • Improves Analytics Reports and model Audits to use gmMetrics, a gmSLAPI application
  • Improves default handling of Last Message field to avoid spurious differences between versions of gmProj files
  • Adds support for interpreting foreign language build logs
  • Adds support for using the %ProjFolder% token in Solution File Generator project list
  • Improves log content for Solution File Generator
  • Improves reporting of #INFO messages in Translation Log Reports
  • Adds sort indicators to ListView column headers
  • Improves integration with upgrade tasks using a gmslAPI executable
  • Improves Configuration Form User files listing to include sub-folders
  • Adds support for Form-to-XAML in the Side-by-Side Viewer for WPF upgrades
  • Adds option to skip running translations in Upgrade Wizard thus running only the metrics reports
  • Improves handling of very large (>64MB) log files (e.g., when using diagnostics)

gmSLAPI: a .NET API for Developing Advanced Upgrade Solutions

Powered by gmBasic, gmslAPI is a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our unique linguistic compilation technology. gmSLAPI also includes classes to facilitate integrating with gmStudio and managing complex upgrade rules.

  • Improves organization of gmslAPI classes with namespaces
  • Improves handling conditions on nested rules in ScriptRules.xml
  • Improves ScriptRules logger to use the LogMessage API

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 sample rules were updated to reflect the latest product improvements and conventions.

  • Improves standard ScriptRules.xml template
  • Improves standard translation templates to assume new C# dialect rather than the deprecated "SubSystem=loc" option
  • Improves Analytics Reports and Audits Reports script templates to use gmMetrics
  • Changes default handling of Line to migrate to MigrationSupport.Line rather than Label
  • Removes SubSystem=loc; The loc conventions are now the default for translation to C#
  • Removes SubSystem=lob; VB.NET bias is now the default for translation to VB.NET
  • Improves migration of VB6 File System Listbox controls to facilitate stub framework integration

Sample Upgrade Solutions

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.

  • Samples updated to reflect changes to SubSystem changes
  • Samples updated to reflect changes to MigrationSupport.UI
  • Improves packaging of "All Samples" content

Announcing gmslAPI: a .NET API for Upgrade Development

Great Migrations is pleased to announce a major break through in software re-engineering: a .NET API for automating the gmBasic upgrade engine and accessing the semantic models produced by our linguistic compilation technology.

Our goal for this API is to provide the most powerful development platform for building advanced upgrade solutions. The API integrates the features of the Great Migrations Programming Language (gmPL) with Great Migrations Scripting Language (gmSL). The XML-based gmPL has been used for upgrade scripts as well as meta-language and COM interface description files. The C-like gmSL API has been used extensively for dynamic code templates, deep code analysis, and advanced transformations. gmPL and gmSL provide access to an extensive collection of gmBasic commands, events, and operations, but they lack key features of modern development platforms such as interactive debugging and intellisense. The new .NET-based gmslAPI addresses these limitations and provides greater access to the full power of the gmBasic translation engine. Of course, developers building upgrade solutions using gmslAPI can also use other .NET language and framework features allowing more sophisticated upgrade solutions integrating a wider array of information.

The API includes special purposes classes to help you integrate API-based EXE upgrade tasks with gmStudio and customize their behavior. EXE upgrades tasks can be used in gmStudio using procedures very similar to those for gmPL script tasks. The main difference is the EXE tasks are implemented in C# (or VB.NET) using Visual Studio while gmPL script tasks are implemented in XML using your favorite code editor. We have already developed a C# version of the WPF transformation logic using this API and also used it with C# to implement several very large multi-feature upgrade solutions. And early preview of API documentation is here and additional documentation and samples will be published soon. Please Contact us directly if you are interested in discussing how this technology can help 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 to make it more robust and flexible and so that it produces cleaner, more correct results. This distribution, Version 30.68, includes several enhancements:

  • Adds a .NET API for accessing the gmBasic operations and semantic information models
  • Improves handling of nested collections and dictionaries
  • Improves separation of declarations and executable code into codebehind and markup for ASP using alternate statement separator
  • Improves upgrading properties with optional arguments to a method

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 making it easier to use. This distribution includes several enhancements:

  • Improves ScriptRules file handling by allowing ScriptRule elements to be conditional.
  • Adds support for gmslAPI and upgrade tasks using a custom EXE rather than gmBasic
  • Improves Filter to Selection using both the Source Name and Task Tag
  • Improves Search Reports allow for XML files that are not in an expected GM meta-data format.
  • Improves Support for handling text files with different EOL conventions
  • Improves Library Description value reported in the Source References Report
  • Adds support for %ProjectFolder% parameter in Visual Studio Solution Generator project List
  • Improves IDF path reported in the Source Reference Report for ASP include references
  • Improves default ASP Site Upgrade Projects generated by Project Wizard; setting job type to MULTI, not CUSTOM

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 sample rules were updated to reflect the latest product improvements and conventions.

  • Improves scrrun.dll.xml sample
  • Improves default ScriptRules.xml file and documentation

Sample Upgrade Solutions

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 ASP/COM upgrade project and their testimonial of success with gmStudio.  Learn how a small team accelerated their ASP site 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 to make it more robust and flexible and so that it produces cleaner, more correct results. This distribution, Version 30.63, includes several enhancements:

  • Prevents authoring duplicate members in COM stub classes when a coclass implements same-named members for multiple interfaces
  • Improves accuracy of Reference Report for explicit calls to user-defined event handlers
  • Improves upgrading the Select Case Statement
  • Begins work on a .NET API for developing custom VB6/ASP/COM upgrade solutions

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 making it easier to use. This distribution includes several enhancements:

  • Adds support for using VS2017 IDE and the latest MSBuild
  • Adds support for setting .NET Framework Version using a registry command; for example:
    <Registry type="VSConfiguration" source="FrameworkVersion" target="v4.0.0" />
  • Improves Task Filter performance
  • Adds Filter to Selection operation to the task list context menu
  • Improves Global Stubs Report to create a build script for compiling a COM Stub Framework
  • Adds Copy to Search operation to copy selected text to the Search Panel
  • Improves .NET Code Scan when searching for multiple pattern strings
  • Improves support for recognizing Custom Translation scripts
  • Improves accuracy of late-bound dependencies reported in the Source References Report
  • Improves gmStudio Installer to meet all Windows 10 Desktop Product Certification Requirements
  • Adds Support for UI Color Themes even if they are not installed with Visual Studio
  • Improves accuracy of containing member reported in Source Scan Report
  • Improves handling of comments when searching User files or Custom 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.

  • Improves GlobalStubs.xml Script used to generate a COM stub framework
  • Improves GlobalStubs.cmd Script used to build a COM stub framework
  • Improves the Search Reporting templates

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.

  • Adds another WPF upgrade sample for the Calculator application (both C# and VB.NET)

Special Announcement: new FORTRAN-to-C# tool

gmFortran, our world-class FORTRAN-to-C Translator, is being enhanced to support FORTRAN-to-C#. Our development efforts have already produced a tool that can translate the GSA FORTRAN Compiler Validation Suite to functionally equivalent C#. Please contact us if you are interested in participating in the beta-test.

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 to make it more robust and flexible and so that it produces cleaner, more correct results. This distribution, Version 30.60, includes several enhancements:

  • Improves translating ASP render functions containing markup with in-line if-then blocks
  • Removes reference to VisualBasic.PowerPacks assembly when using a stub framework strategy
  • Adds support for DoEvents called as a function returning integer
  • Corrects issue with analysing references to module constants
  • Corrects several patterns relating to UserControl methods
  • Allows referencing MigrationSupport assembly when using local stub framework strategy

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 making it easier to use. This distribution includes several enhancements:

  • Improves ASP Translation scripts generated by the New Project Wizard
  • Accelerates default ASP project setup by limiting the source scan to .asp, .asa, and .inc files.
  • Adds sorting to source file list in the New Project Wizard
  • Corrects screen layout problems when running Windows with text size greater then 100%
  • Improves Search Template Reporting by using '^' rather than '\' as escape character
  • Adds Find-Count Reporting for XML file search results
  • Improves Search-Replacement facility by allowing replacing multi-line regex patterns
  • Improves Project Summary Report to use case-insensitive tabulation for COM reference summary
  • Improves performance of Search Template Reporting
  • Adds user-defined events to Source Members Report
  • Corrects reporting the parent of enum entries in the IDF Search Report
  • Adds whole-word, case-insenstive, and regex options when searching code listings in the Side-by-Side Form
  • Adds support for opening Definitions Report at specific record from Search Results list

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.

  • Improves web site deployments and functional testing logic in the default User Command Script template
  • Improves the GlobalIncludes Script template
  • Improves the Search Reporting Script template
  • Improves usability of MSWord Interop upgrade rules file
  • Improves search pattern samples in the default Code Scan Terms file

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 to make it more robust and flexible and so that it produces cleaner, more correct results. This distribution, Version 30.57, includes several enhancements:

  • Improves handling name clashes between undeclared symbols and global class names
  • Improves handling name clashes between global constants and global class names
  • Improves processing string constants that contain the conditional compilation character, '#'
  • Improves C# code review by authoring TODOs for partially-upgraded GoTo Error and Resume statements

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 making it easier to use. This distribution includes several enhancements:

  • Adds Multi-Threaded Search (applies to .NET Code, Configuration, Model and Custom files)
  • Modifies Default TypeLib Search Paths to check both \Windows\SysWOW64 and \Windows\System32
  • Improves Reporting .NET Code Analysis records in .NET Build Report
  • Adds Reload File Context Menu for SearchTerms/ReportTemplate
  • Improves the documentation for using Template-based Reports for Search results
  • Improves the New Project Wizard setup for ASP sites
  • Improves the New Project Wizard Completion Reporting
  • Improves the New Project Wizard Error Handling
  • Improves the New Project Wizard Session Log Report
  • Includes other minor bug fixes and improvements

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.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 Replace attributes for matching patterns: MatchBlock='on' and MatchTillLast='on'
  • 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.