Benefit from the Ispirer top-notch migration services and robust automated solutions. Foster migration, and optimize the cost and performance of your IT infrastructure by converting your PowerBuilder application to C# with Ispirer.
Migrate PowerBuilder to C#
NGLFly Wizard offers a range of opportunities for automated PowerBuilder to C# conversion with minimum manual corrections:
- Free assessment Metrics tool to analyze your database and estimate migration complexity
- Assistance in NGLFly configuration
- Automated migration of the entire application, including project files, business logic, GUI and database API
- Prompt customization of the tool to maximize automation rate
- Expert support during the entire project
Check all the features by requesting a free trial of NGLFly Wizard.
It is valid for 30 days.
Free trial
Turnkey PowerBuilder to C# migration service provided by Ispirer professionals includes:
- Migration of the entire application, including project files, business logic, GUI and database API
- Team of experts skilled in PowerBuilder and C#
- Tailored migration roadmap from assessment through migration and testing to cutover
- Smart automation with Ispirer Toolkit
- Assistance in deployment and integration, performance optimization, new feature development
Drop us a line and we’ll discuss and estimate your PowerBuilder to C# project.
Request a quote
NGLFly Wizard for Automated App Conversion
NGLFly Wizard is a tool for automated application conversion. This solution makes it possible to translate code from one programming language to another automatically, while preserving the initial functionality of an application. Based on an intelligent proprietary algorithm, the tool analyzes the syntax, semantics, mapping data types, control structures, function calls, and even code structures that do not have equivalents in a target technology. Based on the analysis, nGLFly Wizard applies all the relevant conversion rules from its knowledge base core and translates the source code to the target technology.
NGLFly supports both legacy and most popular programming languages, such as COBOL, Delphi, Informix 4GL, Powerbuilder, C#, Java, Python, JavaScript, and others. To ensure a smooth translation process, our support experts are available to assist with tool configuration or resolve any issues in a timely manner.
High quality code conversion.
Expert system with 20.000+ conversion rules and 100.000+ automation tests.
Flexibility
Nimble configuration with 300+ parameters and options for effective application code conversion.
Free smart assessment
Free assessment Metrics for migration scope and complexity evaluation.
Comprehensive migration analysis
Intuitive and instructive reports for cost-effective post-migration polishing.
PowerBuilder to C# Conversion Demo
Check out how Ispirer Toolkit automatically converts PowerBuilder application.
Drop us a line, if you have any business inquiries or questions regarding your PowerBuilder conversion project. Ispirer experts will demonstrate our solutions and answer any questions you may have!
Contact usTurnkey Migration Service
The entire conversion process can be divided into several stages:
- Preparation. During the preparation stage, the focus lies on planning and preparing applications and infrastructure for migration to a new environment or platform. This involves assessing their current state to gauge compatibility with the target environment and defining the migration strategy, timeline, and required resources. Additionally, identifying potential risks and challenges associated with the migration process and devising mitigation strategies are integral parts of this stage.
- Assessment. During the assessment phase, the team conducts a thorough analysis of the source code to accurately estimate the migration timeframe and cost. As a first step, we apply Metrics - a set of Ispirer’s proprietary assessment tools tailored to different programming languages. These metrics automatically analyze the source application, gathering essential information and generating a comprehensive report. This report combined with the insights gathered during the expert review of the source code serves as the basis for estimating the delivery time and cost of the migration project.
- Automated conversion with Ispirer Toolkit. Considering the inherent characteristics of the original technology, Ispirer Toolkit can provide varying default levels of automated code conversion. Importantly, Ispirer experts can iteratively customize the tools to meet the specific properties and patterns of the source code and thus increase the level of automated conversion.
- Post-conversion refinement. Often an application may contain code segments that are impossible or ineffective to migrate automatically. In such a case, our team of Ispirer experts leverages their extensive knowledge and expertise to meticulously execute the manual migration of the remaining code. Moreover, this stage involves fine-tuning the application to improve its performance in the new environment. This may include optimizing resource allocation, tuning database configurations, and addressing any performance bottlenecks.
- Functional testing. Functional testing ensures that the migrated application behaves as expected and meets the functional requirements in the new environment. The Ispirer experts run hundreds of tests to ensure that the converted application is reliable and meets user requirements, business objectives, and industry standards.
Why choose conversion over developing a new app?
Same functionality, new application
Migration does not require labor-intensive development of new functionality from scratch. Your application will be converted to a new technology while maintaining the original functionality
Architecture preserved or modified
By default, automated conversion implies preserving the initial architecture which is easier to maintain. It is also possible to transform the app architecture, for example, from desktop to the web and thus improve accessibility and scalability
Legacy System Transformation
Migrating legacy systems to modern architectures or platforms can future-proof your application, making it easier to maintain, update, and extend in the long term
The speed of conversion
Migrating an application is much faster than creating a new one from scratch. Automated migration with Ispirer Toolkit minimizes manual effort and may speed up the delivery by 2-3 times
Performance and Scalability
Through conversion, you can optimize the application's architecture and infrastructure, improving scalability and performance without the need to rebuild everything
No need for documentation
To perform the conversion, we go by your source code. There is no need to have detailed documentation in place to start the conversion as is the case with development
Looking for PowerBuilder to C# Conversion Services?
Drop us a line and we’ll estimate your project for free!
Request a quoteConversion Samples of PowerBuilder to C# WPF
PowerBuilder programs consist of Workspaces (starting from PB 8.0 and higher, these are .pbw files). Conceptually, they are similar to Solution. These are text files consisting of paths to the Target files (.pbt files) that correspond to the concept of Project. The Target files are in text format, and each contains paths to the PowerBuilder libraries (.pbl files that store source code files in binary format). Typically a library with the same name as the Target file has a .sra entry point file.
To convert a PowerBuilder application, you need to extract all source files from the appropriate Workspace libraries (or Target, if PB version is less than 8). You can download Ispirer PowerBuilder Metrics to get a statistical report on PB sources, as well as extract source files from PowerBuilder libraries using Workspace, or a set of Target files, or a set of particular PB libraries (.pbl files) that need to be converted.
Once the source code is extracted, for each PowerBuilder library file, a corresponding folder named library will be created with all the source code extracted. The folders will contain source files with the following file extensions:
- .SRD - DataWindow source files
- .SRW - Window source files
- .SRM - Menu source files
- .SRU - Custom user object source files
- .SRS - Structure source files
- .SRP - Data pipeline source files
- .SRF - Function source files
- .SRQ - Query source files
- .SRA - Application source files
Now you can use Ispirer nGLFly Wizard to convert it to your chosen target technology.
Basic source type conversion by extension:
- .SRD - converted to 3 files in a folder named datawindow_object_name_srd. The files are named datawindow_object_name_srdView.xaml and datawindow_object_name_srdView.xaml.cs – the UI and code of the DataWindow object and file datawindow_object_name_srdViewModel.cs with view model of the DataWindow object.
- .SRW - converted to 3 files in a folder named window_object_name_srw. The files are named window_object_name_srwView.xaml and window_object_name_srwView.xaml.cs – the UI and code of the Window object and file window_object_name_srwViewModel.cs with view model of the Window object.
- .SRM - converted to 3 files in a folder named menu_object_name_srm. The files are named menu_object_name_srmView.xaml and menu_object_name_srmView.xaml.cs – the UI and code of the Menu object and file menu_object_name_srmViewModel.cs with view model of the Menu object.
- .SRU - converted to 1 file named user_object_name_sru.cs for nonvisualobject and to 3 files in folder named user_object_name_sru. The files are named user_object_name_sruView.xaml and user_object_name_sruView.xaml.cs – the UI and code of the User object and file user_object_name_sruViewModel.cs with view model of the User object.
- .SRS - converted to 1 file named structure_object_name_srs.cs. The file contains a class with variable declarations from the PowerBuilder structure.
- .SRP - not used for conversion.
- .SRF - converted to 1 file named function_object_name_srf.cs. The file has a public static partial class AppGlobalFunctions with a converted function.
- .SRQ - not used for conversion.
- .SRA - converted to 1 file named application_object_name_sra.cs. The contents of this file are used to copy into the project's entry point file in the same way as in the conversion sample.
After the conversion, you need to create a WPF application desktop project in Visual Studio and add the converted files from the results folder to it. There is the Ispirer framework for converting PowerBuilder to C# WPF (IspirerFramework) in the results folder. It contains 4 or more projects that should be added to the solution and used in the main project with the conversion results as references. The events are converted to the corresponding events of the target technology. Note: this is a special framework provided by Ispirer. It extends the target technology to enable specific source code features.
Variables declarations conversion:
PowerBuilderC#
long var1
long var2[]
string var3
datetime var4
boolean var5
decimal var6
integer var7
any var8
int? var1 = 0;
UnboundedArray
< int? > var2
= new UnboundedArray
< int? >(); string var3 = string.Empty;
DateTime
? var4
= new DateTime
(1900,
1,
1); bool? var5 = false;
decimal? var6 = null;
int? var7 = 0;
object var8
= new object();
Function conversion:
PowerBuilderC#
public function string sample_function();
return "end"
//do logic
end function
public string sample_function()
{
return "end";
//do logic
}
Subroutine conversion:
PowerBuilderC#
protected subroutine sample_sub (string v_app);
v_app = ""
//do logic
end subroutine
public void sample_sub(string v_app)
{
v_app = "";
//do logic
}
If statement conversion:
PowerBuilderC#
integer i
if true then i = 1 else i = 2
if true then
i = 3
end if
int? i = 0;
if (true)
{
i = 1;
}
else
{
i = 2;
}
if (true)
{
i = 3;
}
For statement conversion:
PowerBuilderC#
For lv_count = 1 to 10
lb_units[lv_count].Visible = TRUE
Next
for (lv_count = 1; lv_count <= 10; lv_count ++)
{
lb_units[lv_count - 1].Visibility = Visibility.Visible;
}
While statement conversion:
PowerBuilderC#
IDX = 0
do while true
if IDX = 10 then exit
IDX = IDX + 1
loop
idx = 0;
while (true)
{
if (idx == 10)
{
break;
}
idx = idx + 1;
}
Try catch statement conversion:
PowerBuilderC#
try
IDX = 1 / 0
catch (Exception ex )
IDX = 100
FINALLY
IDX = IDX * 2
end try
try
{
idx = 1 / 0;
}
catch (Exception ex)
{
idx = 100;
}
finally
{
idx = idx * 2;
}
Try choose statement conversion:
PowerBuilderC#
integer some_id
boolean cond
CHOOSE CASE some_id
Case IS < 0
cond = False
CASE 0 TO 2
cond = True
some_id = 200
Case IS > 0
cond = True
CASE ELSE
cond = False
some_id = 0
END CHOOSE
int? some_id = 0;
bool? cond = false;
if (some_id < 0)
{
cond = false;
}
else if (some_id >= 0 && some_id <= 2)
{
cond = true;
some_id = 200;
}
else if (some_id > 0)
{
cond = true;
}
else
{
cond = false;
some_id = 0;
}
Inline query conversion:
PowerBuilderC#
global type s_2 from structure
long field_1
end type
s_2 param1[]
INSERT INTO TAB1
(
COL1 , COL2
)
VALUES
(
:param1[1].field_1,
:param1[2].field_1
);
public class s_2
{
public int? field_1 = 0;
}
UnboundedArray
< s_2
> param1
= new UnboundedArray
< s_2
>(); var dbCmd_
= new SACommand
(); dbCmd_.CommandText = "INSERT INTO TAB1 " +
" ( " +
" COL1 , COL2 " +
" ) " +
" VALUES " +
" ( " +
" :field_1, " +
" :field_1 " +
" )";
dbCmd_.Parameters.AddWithValue("field_1", param1[0].field_1 ?? (object) DBNull.Value);
dbCmd_.Parameters.AddWithValue("field_1", param1[1].field_1 ?? (object) DBNull.Value);
dbCmd_.CommandType = CommandType.Text;
AppGlobalVariables.sqlca.ExecuteNonQuery(dbCmd_);
CURSOR conversion:
PowerBuilderC#
String v_uname[]
Long v_unum[]
Int v_count = 1
DECLARE c_unit CURSOR FOR
SELECT U_NAME, U_NUM
FROM UNT
WHERE A_NUM = 10;
OPEN c_unit;
FETCH c_unit INTO :v_uname[v_count],:v_unum[v_count];
v_count ++
Do While SQLCA.SQLCode = 0
FETCH c_unit INTO :v_uname[v_count],:v_unum[v_count];
v_count ++
Loop
CLOSE c_unit;
UnboundedArray
< string > v_uname
= new UnboundedArray
< string >(); UnboundedArray
< int? > v_unum
= new UnboundedArray
< int? >(); int? v_count = 1;
var dbCmd_c_unit
= new SACommand
(); dbCmd_c_unit.CommandText = "SELECT U_NAME, U_NUM " +
" FROM UNT " +
" WHERE A_NUM = 10";
dbCmd_c_unit.CommandType = CommandType.Text;
var c_unit = sqlca.ExecuteReader(dbCmd_c_unit);
if (c_unit.Read())
{
v_uname[v_count] = c_unit?.GetString(0);
v_unum[v_count] = c_unit?.GetInt32(1);
}
else
{
sqlca.SqlCode = 100;
}
v_count ++;
while (sqlca.SqlCode == 0)
{
if (c_unit.Read())
{
v_uname[v_count] = c_unit?.GetString(0);
v_unum[v_count] = c_unit?.GetInt32(1);
}
else
{
sqlca.SqlCode = 100;
}
v_count ++;
}
c_unit.Close();
c_unit.Dispose();
Download Sample Code
You have just examined only a piece of the PowerBuilder to C# conversion sample. You can download the entire application migration sample for free by filling out the form. Once you get the code sample, you will be able to:
See for yourself that Ispirer Toolkit can automatically convert not only a single piece of code, but an entire application. Most likely, complex code will require customization of the toolkit, but our experts can add new conversion rules within 3-5 business days. As a result, using Ispirer Toolkit you will get readable and maintainable code of manual conversion quality in the shortest time possible.
Snatch a totally free opportunity to see the high efficiency of Ispirer Toolkit!
Accelerating our customers’ application modernization journey
The customer received a modernized application in C#, which is a feature-for-feature equivalent to the original Delphi application. Thus getting the ability to easily maintain and enhance the newly migrated code.
The company develops state-of-the-art automation systems for operation, disposition, monitoring and control for all industries. The customer needed to reanimate their software by moving from Delphi to C#.
Our customer ia a healthcare organization dedicated to improve funding and clinical performance of hospitals and healthcare systems. The company's requirement was to get the application on the new C# .NET platform.
Why Migrate with Ispirer
Seasoned team
Ensuring high security and performance standards is what we do best, thanks to our impressive experience in building reliable and scalable solutions.
Technology expertise
Having 20+ years of experience our team has gained a wide pool of expertise in various programming languages from the rarest to the most popular ones.
Top-notch data security
We comply with ISO 27001 security management requirements with comprehensive policies and processes, advanced security technology, and skilled professionals.
What Our Customers Say
"Beckman Coulter provided as much of the information as we could but there was a lot of functionality that we did not know. This is where Ispirer talents became apparent as they forensically reengineered functionality."
"We are now successfully running live on the new system, with the updated PB apps. I want to express my thanks to Ispirer team. You made this project a success!!! I was happy to work with you and would highly recommend Ispirer!"
"Because of Ispirer and MnMTK, our team was able to devote its time to build the infrastructure for new Java programs instead of spending time on converting code. The produced Java code met all our maintainability, readability and performance requirements."
"This approach was very successful avoiding any confusion at the first stage, and achieved high conversion rate in the end. The project was completed successfully, they say they couldn't make it without MnMTK 2017 and excellent extension support from lspirer."
"At the onset of the engagement the Ispirer MnMTK was expanded to meet the specific requirements of our migration prior to being delivered for our use. Once this phase of the project was complete we were provided with the expanded toolkit."
"We have found the Ispirer team to be knowledgeable and responsive and we have found the tooling to be flexible enough to be easily adapted to our coding conventions."