.com Solutions Inc. - Logo  
services header buttons
.
FmPro Migration bullet item 7b FmPro Upgrade bullet item 7b FmPro Development
.
.
.
. .

 


..

. .

...

.

FmPro Migrator - The Universal Migration Tool for Visual FoxPro

The AI Accelerated version of FmPro Migrator Platinum Edition 11.28 - Adds a new Code Conversion Workbench Training feature which trains the machine learning models to improve the converted code for all programming languages.

FmPro Migrator Custom Development Edition has been enhanced with support for using AI models running on your local computer using the Ollama software package. The use of locally running models is designed to support secure computing environments where the computer may be "air gapped" - unable to access the internet for security reasons.

Visual FoxPro to C# Conversion with the VFP Code Conversion Workbench

The VFP Code Conversion Workbench enables developers to manage the automated conversion of hundreds of PRG files and form code within an entire VFP project in a single window. Individual procedure/functions can be selected by name for single-click submission to the selected AI provider and machine learning model. Output files are saved automatically as the results are received into a folder of converted scripts. Completed scripts can be further processed by GitHub Copilot X and Visual Studio IntelliCode to complete the integration into the new project. The VFP Code Conversion Workbench supports conversions into the top 50 most popular programming languages as found in the TIOBE index. Machine learning prompts are generated automatically, but the prompt text and source code fields are fully editable. Part of the secret sauce of this tool includes the system prompts and setup parameters which are built into the workbench software.

 

Code Conversion Workbench - VFP to C# Training Records

Code Conversion Workbench Model Training Records

Code Conversion Workbench Training - LLM Training Feature

Top 10 Features - VFP Code Conversion Workbench

black bulletConverts PRG/Form code to 50+ programming languages.
black bulletUp to 500,000 daily AI Tokens included.
black bulletEfficient workflow manages importing, processing, naming and saving of all scripts.
black bulletTo-Do list checklist shows project status at a glance.
black bulletFinely tuned system messages and properties are built in and sent automatically.
black bulletProcedure/Function splitting sends manageable sized chunks of code for processing.
black bulletFlexible GUI provides full control of AI model, source text, prompt text and output filename.
black bulletCustomize the conversion process by adding model training records for your unique code base.
black bulletIncluded with the AI Accelerated version of FmPro Migrator Platinum Edition.
black bulletFoxPro 2.6 to Visual FoxPro code conversion with form creation code generated too.

Top 10 Features - FmPro Migrator

black bulletIncluded with FmPro Migrator Platinum Edition, keeps your Visual FoxPro migration project affordable.
black bulletQuickly and economically test 5 different development environments - including for IOS and Android.
black bulletAutomated conversion of Visual FoxPro Forms/Reports to multiple development tools.
black bulletPrepares VFP9 projects for further conversion into 64-bit server apps using FmPro Migrator Server App Builder.
black bulletData bound fields and grid controls are converted into equivalent SQL database data bound controls.
black bulletPersistent Visual FoxPro relations are converted into SQL database relationships (if needed).
black bulletCustom ComboBox lists are de-duped and centrally located as Value Lists.
black bulletTransfer data from locally stored DBF files into 9 SQL databases.
black bulletConverts pageframe form controls into Tab Controls including embedded objects.
black bulletSaves many hours of manual work converting each Form/Report.

For more info please send email or call.

Visual FoxPro Conversion window

 

Description

The Visual FoxPro Migration Service built into FmPro Migrator Platinum Edition provides an economical fixed-price migration or conversion service for Visual FoxPro projects. This service converts forms, reports, functions, procedures, persistent relations, and DBF data file conversion within a predefined budget. A wide range of target development environments are supported, including:.NET 4 Visual Studio 2010, Microsoft Access, FileMaker Pro, PHP, and LiveCode. All 6 conversion options are included for one fixed price.

Scale-up & Transition Visual FoxPro to a Cloud Hosted Web Application

Scale up desktop applications well beyond the capacity of DBF files, save money on recurring license billing, and own all of the source code for your application, so you can customize or resell it at any time. Competing systems can cost thousands of dollars annually, and provide no access to the underlying source code. You can think of the PHP Conversion process as a way to improve and optimize performance by building a scalable web application infrastructure from your Visual FoxPro database application.


FmPro Migrator Visual FoxPro Migration Options Diagram

Visual FoxPro to Multiple Development Environtments

hline image

The features and benefits of using the automated Visual FoxPro Migration Service include:

black bulletMultiple Conversion Options - Not sure which development environment you want to use? FmPro Migrator makes it possible for Visual FoxPro developers to quickly convert Visual FoxPro projects into 5 different development environments (including:.NET 4 Visual Studio 2010, Microsoft Access, FileMaker Pro, PHP, and LiveCode). All 5 conversion options are included for one fixed price.

black bulletSave Time, Get Up and Running Quickly - It can be a tedious and time consuming process to manually re-create each form/report object into any other development environment. Rather than spending days or even weeks of valuable time manually converting hundreds of forms/reports, Visual FoxPro developers can utilize the Visual FoxPro Migration Service as an economical alternative. FmPro Migrator Developer Edition typically processes each form/report within less than 1 second - much faster than you could perform the task manually!

The ability to efficiently perform Visual FoxPro migrations makes it possible to quickly show prototypes to prospective customers. An automated migration process represents the ultimate in rapid application development, which can't be matched by any other development environment. Being able to show customers a rapid prototype may make the difference in getting approval for a new client project.

The PHP Conversion feature can be used to convert Visual FoxPro applications into PHP web applications. Though the process generally works better using FileMaker Pro as the source database due to the guaranteed data binding information available from the original FileMaker Pro layout objects. It will generally be faster to data bind all FoxPro forms/fields prior to doing a conversion. Alternatively, the FoxPro application could be converted into a FileMaker Pro database, then the Layouts and fields could be data bound - then the FileMaker Pro database would be imported and converted using the PHP Conversion feature.

Code Conversion Workbench Training

The Code Conversion Workbench Training feature enables developers to customize the automated conversion process to match their unique code base.
Do you have specific user-written functions you want to use to replace the original Visual FoxPro functions everywhere in your code base?
Do you prefer to use the VFP Toolkit for .NET functions?

This is where you define the unique features you want performed by the machine learning model with plain English text examples as shown in the screenshot above. This feature works across all models from all vendors and instructs the model exactly how you want the converted code to be written. Add as many training records as you need and enable/disable records as needed while converting your code base.

Code Conversion Workbench Training Results
Example VFP Code C# Converted Script C# Converted Script With Training                        Conversion Notes
inlist()

procedure ValidateOptions_299
if mod.option=249 and mod.num2>96 and inlist(job.option,'ABC','DEF','XYZ')
lcmsg='This option is not available with a value over 8 feet.'
lnret=-1
endif
endproc

public int ValidateOptions_299(Mod mod, Job job)
{
if (mod.option == 249 && mod.num2 > 96 && (job.option == "ABC" || job.option == "DEF" || job.option == "XYZ"))
{
string lcmsg = "This option is not available with a value over 8 feet."; // This variable isn't used. Consider removing or using it appropriately.
return -1;
}
return 0; // Implicitly returning 0 if the condition is false, mirroring VFP's behavior.
}

public class Validator
{
public int ValidateOptions_299(Module mod, Job job)
{
if (mod.option == 249 && mod.num2 > 96 && StartsWithAny(job.option, "ABC", "DEF", "XYZ"))
{
string lcmsg = "This option is not available with a value over 8 feet.";
return -1;
}
return 0; // Or whatever the default successful return value should be
}

public static class StringExtensions
{
public static bool StartsWithAny(this string str, params string[] values)
{
return values.Any(str.StartsWith);
}

public static bool StartsWithAny(this int num, params int[] values)
{
return values.Contains(num);
}
}

}

In order to improve readability and maintainability in the C# code we want to replace the VFP inlist() function with a user written StartsWithAny() class.

Without training, the LLM creates individual comparisons for each option being checked.

Adding the traing record results in the StartsWithAny() class being used within the code. As a bonus - the Google Gemini 1.5-Pro model has written the class for us and implemented method overloading to handle both string and integer comparisons.

empty()

procedure ValidateOptions_299
if !empty(mod.char3) and !'ABC'$upper(mod.char1)
lnret=-1
lcmsg='Either select ABC in the options or do not select an alternate size'
endif
endproc

public static int ValidateOptions_299(dynamic mod)
{
if (!string.IsNullOrEmpty(mod.char3) && !mod.char1.ToUpper().Contains("ABC"))
{
return -1;
}
return 0; 
}

public int ValidateOptions_299(dynamic mod)
{
if (!String.IsNullOrWhiteSpace(mod.char3) && !mod.char1.ToUpper().Contains("ABC"))
{
return -1; // lnret = -1
// lcmsg = 'Either select ABC in the options or do not select an alternate size' - This would likely be handled by displaying a message to the user in the UI.
}
return 0; // Assumed default return value if the condition is not met.
}

Instead of just checking for Null or Empty values, we also want to check for white space. By default, only Null or Empty values are checked.

But by adding the training record the LLM will also check for white space in every place where it finds empty() in the VFP code base.

$ procedure ValidateOptions_299
if !empty(mod.char3) and !'ABC'$upper(mod.char1)
lnret=-1
lcmsg='Either select ABC in the options or do not select an alternate size'
endif
endproc
public void ValidateOptions_299()
{
if (!string.IsNullOrEmpty(mod.char3) && !("ABC".ToUpper().Equals(mod.char1, StringComparison.OrdinalIgnoreCase)))
{
return -1;
MessageBox.Show("Either select ABC in the options or do not select an alternate size");
}
}
public void ValidateOptions_299()
{
if (!string.IsNullOrEmpty(modChar3) && !modChar1.ToUpper().Contains("ABC"))
{
lnRet = -1;
lcMsg = "Either select ABC in the options or do not select an alternate size";
}
}

When converting the VFP $ operator, we want to use Contains, which is used by default with most public models. But when using Ollama to run the llama3 (8B) locally we get the output shown here. Therefore using the training record enables the output of the local LLM to match the output of the much more expensive public LLMs.

Also, notice that the IsNullOrWhiteSpace() results shown in the row above weren't generated for this example. This is because that training record wasn't enabled for this row of results. These training records can and should be enabled at once in order to achieve the desired output.

Parenthesis around numeric comparisons procedure ValidateExtra_299
if job.custom='E'
if mod.option=249 and mod.num2>96
lnret=-1
lcmsg='Maximum height is 96"'
endif
if mod.option=248 and mod.num2>48
lnret=-1
lcmsg='Maximum height is 4 feet"'
endif
endif
endproc

public int ValidateExtra_299(Job job, Mod mod)
{
if (job.custom == 'E')
{
if (mod.option == 249 && mod.num2 > 96)
{
return -1; // Implied: Sets lnret = -1 and lcmsg = "Maximum height is 96"""
}

if (mod.option == 248 && mod.num2 > 48)
{
return -1; // Implied: Sets lnret = -1 and lcmsg = "Maximum height is 4 feet"""
}
}

return 0; // Implied: Successful validation (lnret remains at its default value, presumably 0)
}

public int ValidateExtra_299(Job job, Mod mod)
{
int lnret = 0; // Initialize lnret to a default value (assuming 0 means success)
string lcmsg = "";

if (job.custom == 'E')
{
if ((mod.option == 249) && (mod.num2 > 96))
{
lnret = -1;
lcmsg = "Maximum height is 96\"";
}

if ((mod.option == 248) && (mod.num2 > 48))
{
lnret = -1;
lcmsg = "Maximum height is 4 feet\"";
}
}

// In C#, it's common to return a value indicating success/failure
return lnret;
}

Adding training records is also a good way to improve the style and readability of the code beyond just getting the functional aspects correct. In this example we want to improve readability and insure proper precedence by putting each comparison within parenthisis. Without this instruction the LLMs won't generally perform this task automatically.

 

Visual FoxPro Static MetaData Export Process

FmPro Migrator uses a 2 step process to import the metadata from within Visual FoxPro projects. Thru the use of the included VFPExport.exe Utility, Visual FoxPro project metadata is read directly from the VCX, SCX, FRX, DBC, DBF, MNX and PRG files referenced within the .PJX project file. This information is written into a new database file named VFPExport.DBF.

VFPExport Static MetaData Import Process Diagram

hline image

FmPro Migrator Visual FoxPro MetaData Import Processing

FmPro Migrator reads the contents of the VFPExport.DBF file and converts its contents into a standardized XML format which is stored within the FmPro Migrator MigrationProcess.db3 project database. Once the Visual FoxPro metadata has been converted into the standardized XML format, it can then be converted into any of the other database or development environments which are supported by FmPro Migrator.

 

FmPro Migrator Visual FoxPro MetaData Import Processing

 

 

 

Visual FoxPro Code Conversion Videos

 




       
Scalability
Costs
Is LiveCode the Modern Replacement for Visual FoxPro?
 
       
CakePHP Views
 
 




 

 

 

 

 

 

 

 

. .

.

. .
VFP Code Converter - The economical code conversion tool for FoxPro

 

 

Schedule a meeting.

 

Order AI Accelerated

 

Code Conversion Workbench Free Demo

 

Convert Visual FoxPro to C# in 15 Seconds Video

 

 

 

VFP Project Analyzer

The free Visual FoxPro Project Analyzer Utility provides a quick way to assess the complexity and cost of a Visual FoxPro Migration or Conversion project. Click the image to download a copy.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

email link

Home | Products | Services | Downloads | Order | Support | Contact

Legal Notices

.
.   .
.
Home Products Services Downloads Order Support Contact