Skip to content

Blog

gmStudio Release News: Saturday, 05-March-2022

gmBasic is a code transformation tool that reads, interprets, and 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. Most recently, this work includes general improvements needed to produce build-complete C# code for a Construction ERP product. This system is 31 inter-related VB6 project components containing 820K LOC organized into 1,125 code files and supported by 46 external COM libraries. This distribution, Version 40.25, includes several enhancements:

  • Improves handling the default member operator, ’!’
  • Improves handling inferring implicit references to default members
  • Improves handling of logic using ControlArrays
  • Improves handling recognizing references to unqualified global enumeration entries
  • Improves handling numeric literals using exponential notation
  • Improves handling of numeric values using hexadecimal notation in IDL to IDF
  • Improves parsing ASP attribute values containing complex VBScript logic
  • Improves migration of a local method to a custom call pattern
  • Improves migration of VBP information to AssemblyInfo content

gmStudio: Upgrade Solution Development Environment

Section titled “gmStudio: Upgrade Solution Development Environment”

Powered by gmBasic, gmStudio is a development environment for analyzing code and developing 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 logic that maintains the Workspace runtime folder
  • Improves performance of .NET Build Log Report and the associated listing in the UI
  • Improves IDL/IDF handling of const = Infinity
  • Improves spawning a process without console logging
  • Improves ScriptRule command to allow script variables in the id attribute

gmAPI: a .NET API for Developing Advanced Upgrade Solutions

Section titled “gmAPI: a .NET API for Developing Advanced Upgrade Solutions”

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

gmMetrics: Advanced Metrics Reporting tool

Section titled “gmMetrics: Advanced Metrics Reporting tool”

gmMetrics is a tool for reporting the content of system models generated by gmBasic. This includes Symbol Tables, References Reports, Definitions Reports, and Model Audits. gmMetrics is a console application written in C# using gmAPI. We maintain and enhance gmMetrics to keep it in sync with the model schema and to produce new reports.

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. See also additions and changes in gmStudio Extensions Repository.

  • Adds MSCAL.ocx.WinForms.Refactor.xml
  • Improves GM.MSCAL.OCX.xml
  • Improves mscomctl.ocx.WinForms.Transform.gmsl
  • Improves scrrun.dll.Transform.gmsl
  • Improves StubControlBaseClass.Rules.xml
  • Improves StubControlBaseClass.xml
  • Improves wpfSubsystem.gmsl

gmRTL is a sample runtime library that contains classes allowing for more readable translations. gmRTL namespace and class structure conventions will replace the legacy RTL conventions in the next gmStudio release. The old conventions (MigrationSupport, MigrationSupportUI, etc.) will be deprecated, but still available as custom migration options. Learn more about gmRTL here.

  • Improves gmRTL.GUI.ControlHelper.GetDrawStyle/SetDrawStyle.style

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

gmStudio Release News: Tuesday, 11-May-2021

gmBasic is a code transformation tool that reads, interprets, and 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. Most recently, this work includes the general improvements needed to produce build-complete C# code for a Metal Plating ERP system. This system is a single executable: 280K LOC organized into 135 code files supported by 28 COM libraries. This release also includes significant improvements to ASP processing. This distribution, Version 40.05, includes several enhancements:

  • Adds support for using OEM or ANSI File API to support international codepages
  • Adds support for user-defined NoWarn settings, Registry type=“ProjectSetting” source=“NoWarn”
  • Improves arrays declared with const dimensions
  • Improves ToolTip operations performed outside of declaring form
  • Improves integer to datetime conversion done in designer code
  • Improves late-bound ControlArray.LBound and ControlArray.Count
  • Improves comment-only VBScript tags in ASP
  • Improves handling same-named include files in ASP
  • Improves AfterBuild setting for ASP

gmStudio: Upgrade Solution Development Environment

Section titled “gmStudio: Upgrade Solution Development Environment”

Powered by gmBasic, gmStudio is a development environment for analyzing code and developing 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:

  • Adds support for setting the OEM/ANSI File API used by gmBasic
  • Adds support for setting the character encoding (using chcp) used when running batch tasks
  • Improves Solution Generator to use Platform=AnyCPU
  • Improves handling of file IO standardizing on UTF-8
  • Corrects exception when applying task filter to large projects (e.g. 5000+ ASP pages)

gmAPI: a .NET API for Developing Advanced Upgrade Solutions

Section titled “gmAPI: a .NET API for Developing Advanced Upgrade Solutions”

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

  • Improves support for using a custom metalanguage vb7lang.vbi during gmAPI startup

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. See also additions and changes in gmStudio Extensions Repository.

  • Improves Batch Command script for ASP deployments in sample userCmd.std.cmd
  • Improves preset for Translation Audit in sample CodeScanList.txt
  • Improves rules for ADODB migration

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

VB6/COM Still declining in popularity

I just had a customer ask me about the future of COM support on Windows. Here is how I responded



Someone mentioned they had heard the VB6 runtime will not be supported beyond Windows10 (2025?). I could not find any official word on that. But I know there is no support statement for VB6 on Windows 11 — but that is not an official Windows release yet, so…

One thing: COM is a typically 32-bit technology and special steps are needed to work on 64-bit. On 64bit, which is what most Windows installations are running any more, COM must run in a 32-bit emulation. Maybe you have noticed VB6 COM references need to be to files in the SysWOW64 folder, not the System32 folder…

Bottom line, VB6 and COM may be officially supported by Microsoft, but they are not mainstream anymore. As time goes on, you are more likely to run into difficult issues with them; you will find yourself in troubled waters, in a boat by yourself without a paddle… And more importantly, all VB6 programmers will eventually leave the labor pool. Organizations still running VB6 will have no one to go to for help when they have technical problems. Organizations may choose to bear that risk and continue to put out VB6/COM compatibility fires as they come up, or they can upgrade their systems and join the much larger community of .NET/C# developers on a vital, well-supported platform.

To give you an idea about the level of interest in VB6 vs C# here are some relevant metrics:


Google Search (June 2021)

Search StringResults
”VB6 Programming”14,500
”C# Programming”2,270,000
”VB.NET Programming”175,000

GitHub (Jan 2022)

Search String (based on file extension)Results
VBP https://github.com/search?q=extension%3Avbp&type=Code260,579
CSPROJ https://github.com/search?q=extension%3Acsproj&type=Code7,223,451
VBPROJ https://github.com/search?q=extension%3Avbproj&type=Code185,686


Here are some details on VB6 support from Microsoft.
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/visual-basic-6-support-policy


Support Statement for Visual Basic 6.0

Visual Basic 6.0 Support Policy

http://docs.microsoft.com

gmStudio Release News: Wednesday, 01-Dec-2021

gmBasic is a code transformation tool that reads, interprets, and 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. Most recently, this work includes a number of improvements providing special features that are helpful for real-world system modernization projects. This distribution, Version 40.18, includes several enhancements:

  • Completes the transition to gmRTL conventions for the runtime support framework
  • Adds support for migrating project metadata from VBPs (Title, Description, etc.) to attributes in AssemblyInfo files
  • Adds support for property status=“Out+static” to author static readonly properties
  • Adds support for PreEdit_VBS and PostEdit_VBS operations for translations requiring the VBScript to JavaScript feature
  • Adds support for triggering a using/Imports statement for namespaces containing extension methods
  • Improves migration of Mid function when used on Left-Hand side of an assignment
  • Improves migration of CheckBoxConstants Enumeration
  • Improves migration of PropertyBag.Contents property
  • Improves migration of code using ActiveControl property
  • Improves migration of optional arguments with DeleteSetting function
  • Improves migration of optional arguments with Format function
  • Improves migration of properties having both Let and Set routines
  • Improves migration of large JPG images from FRX files to RESX files
  • Improves migration of same-named #includes and Pages in a folder
  • Improves migration of functions using GoSub statements
  • Improves migration of On Error Goto to try/catch
  • Improves migration of VB.Shape operations to use a gmRTL.GUI.ShapeControl class
  • Improves migration of VB.App operations to use gmRTL.Core.App class
  • Improves migration of comments longer than 512 characters

gmStudio: Upgrade Solution Development Environment

Section titled “gmStudio: Upgrade Solution Development Environment”

Powered by gmBasic, gmStudio is a development environment for analyzing code and developing 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:

  • Adds support for Side-By-Side Viewer when migrating ASP with client-side VBScript to ASP with client-side JavaScript
  • Adds feature to AutoSelect the Standard Assessment reports at the click of a button
  • Adds gmSharedFile.exe to the installation allowing the new approach to shared files consolidation
  • Improves ScriptRule transformation and logging conventions
  • Improves documentation and usage of the ScriptRule/Foreach feature
  • Corrects the Search/Replace feature to allow successive runs without content duplication

gmAPI: a .NET API for Developing Advanced Upgrade Solutions

Section titled “gmAPI: a .NET API for Developing Advanced Upgrade Solutions”

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

  • Adds properties to the Project class allowing access to VBP metadata (Title, Description, etc.)

gmMetrics: Advanced Metrics Reporting tool

Section titled “gmMetrics: Advanced Metrics Reporting tool”

gmMetrics is a tool for reporting the content of system models generated by gmBasic. This includes Symbol Tables, References Reports, Definitions Reports, and Model Audits. gmMetrics is a console application written in C# using gmAPI. We maintain and enhance gmMetrics to keep it in sync with the model schema and to produce new reports.

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. See also additions and changes in gmStudio Extensions Repository.

  • Upgrades the gmStudio Extension files to use gmRTL conventions

gmRTL is a sample runtime library that contains classes allowing for more readable translations. gmRTL namespace and class structure conventions will replace the legacy RTL conventions in the next gmStudio release. The old conventions (MigrationSupport, MigrationSupportUI, etc.) will be deprecated, but still available as custom migration options. Learn more about gmRTL here.

  • Completes the transition to gmRTL conventions for runtime support framework
  • Adds a gmRTL.GUI.ShapeControl control class to emulate VB.Shape
  • Adds a gmRTL.Core.App class to emulate VB.App

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

  • Updates all samples to work with latest conventions and the gmRTL runtime support assembly

gmStudio Release News: Monday, 04-October-2021

gmBasic is a code transformation tool that reads, interprets, and 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. Most recently, this work includes a number of improvements providing special features that are helpful for real-world system modernization projects. This distribution, Version 40.14, includes several enhancements:

  • Improves the stub framework generation feature improving its speed, precision, and flexibility and setting the stage for stubbing out a better organized runtime library framework (gmRTL)
  • Improves support for generating and using a stub framework that uses extension methods in multiple namespaces
  • Improves ASP processing to allow up to 128 #include directives in a single page
  • Improves Select-Case migration to allow up to 2048 Case branches
  • Improves behavior of ComputeConditional=Clean to completely remove inactive code from generated results
  • Improves handling and capacity of local code storage (i.e., the number of operations in a single subroutine or ASP page is limited only by available memory)
  • Improves support for rewriting client-side VBScript to JavaScript in ASP to ASP.NET translations
  • Corrects name collisions in ASP translations for sites having same-named files (e.g. file.asp and file.inc in the same folder)

gmStudio: Upgrade Solution Development Environment

Section titled “gmStudio: Upgrade Solution Development Environment”

Powered by gmBasic, gmStudio is a development environment for analyzing code and developing 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:

  • Adds WorkFolder Script Variable (e.g., …\proj\log)
  • Adds logic to automatically create and use a project-specific UserCmd.cmd file if one is not present when the user tries to edit the file
  • Adds logic to automatically create and use a project specific Search Terms-List/Report-Template file when the user tries to edit the file
  • Adds support for displaying corresponding VBScript (*.vbs) source and JavaScript (*.jvs) translations in the SideBySide viewer
  • Adds support for reporting pre-processed code to a different folder (AuditSource Utility Report)
  • Adds support for restricting gmMetrics Report to the WebProjectFile when reporting an ASP site translation
  • Adds support for setting the Encoding/CharacterSet used by gmStudio
  • Adds the option to display a comparison of System Default and Project-Specific folders
  • Improves readability of Translation Log Report
  • Improves default Visual Studio IDE to use VS2019
  • Improves error checking and reporting for deployment operations
  • Improves license management when operating in Reporting-Only mode
  • Improves the Custom Search folder picker to allow selecting any file path
  • Improves usability of the License Request form
  • Improves usability of the New Project Wizard Options form
  • Improves usability of the User Defaults form (auto set Goto Command Line when selected editor is Notepad++)
  • Improves site script created by the Project Wizard for an ASP upgrade project
  • Corrects problem with SaveAs not opening the newly saved project file

gmAPI: a .NET API for Developing Advanced Upgrade Solutions

Section titled “gmAPI: a .NET API for Developing Advanced Upgrade Solutions”

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

  • Adds the SupportLibraries field to the FileInfo structure indicating the list of SupportLibraries required to support extension methods in that file
  • Improves support for using a custom metalanguage vb7lang.vbi during gmAPI startup
  • Improves the WPFSubSystem utility to allow migrating to gmRTL

gmMetrics: Advanced Metrics Reporting tool

Section titled “gmMetrics: Advanced Metrics Reporting tool”

gmMetrics is a tool for reporting the content of system models generated by gmBasic. This includes Symbol Tables, References Reports, Definitions Reports, and Model Audits. gmMetrics is a console application written in C# using gmAPI. We maintain and enhance gmMetrics to keep it in sync with the model schema and to produce new reports. This distribution includes several enhancements:

  • Adds the AuditSource Utility Report to generate a Pre-Processed version of source codes; e.g., a pre-edited code, or a non-conditional code from a conditional code
  • Improves the Model Audits to report the SupportLibraries field for each file indicating the list of SupportLibraries needed for the extension methods in that file

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. See also additions and changes in gmStudio Extensions Repository.

  • Improves documentation in sample GlobalIncludes.xml script

gmRTL is a sample runtime library that contains classes allowing for more readable translations. gmRTL namespace and class structure conventions will replace the legacy RTL conventions in the next gmStudio release. The old conventions (MigrationSupport, MigrationSupportUI, etc.) will be deprecated, but still available as custom migration options. Learn more about gmRTL here.

  • Adds gmRTL.Core to standard distribution

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