SAL Migration First Steps

The following steps describe a basic migration of a Gupta/Centura/OpenText Application to a Web Application based on Wisej.NET.

General Approach

Migrating your Gupta/Centura/OpenText application to a Wisej.NET web application can be achieved by utilizing our porting tool Ice Porter and our powerful support library PPJ Framework. The SQLWindows Application Language (SAL) is converted to C# or VB.NET, turning the existing legacy client/server application into a native browser-based solution.

File in the qrp format, that were developed using ReportBuilder, can be migrated and reused in widely used reporting frameworks such as SAP Crystal Reports, Microsoft's Reporting Services, combit List & Label, or Stimulsoft.

Professional services and turn-key migration solutions are available from the makers of Wisej.NET and a number of international partners. Get in touch! We have the knowledge, tools, and libraries to support you in the porting process.

Porting SAL applications

Project Structure

All ported applications will be organized in a well defined project structure.

Functions

SAL and SQL functions are fully supported, while some of them are renamed for consistency. Depending on the porting settings function calls can be transfored to a more object oriented style:

For example:

SalStrLeftX(strName, 5, strName)

May have been ported to:

strName = strName.Left(5);

All Visual Toolchest and most of the XSal2 functions are fully supported, too.

Data Types

All PPJ framework basic types support automatic casting to their equivalent .NET types allowing for a very smooth integration with .NET libraries.

For example:

string name = strName;

Is the same as:

string name = (string)strName;
string name = strName.ToString();
string name = strName.Value;

Dynamic arrays are kind of special in Gupta but are also fully supported.

SalContext for hWnd* variables

hWndForm and hWndItem are widely used in SAL applications and are converted with using a SalContext construct to handle all the different usages.

SqlContext for Binding

Similar to the SalContext, the SqlContext is used to support bind variables at runtime.

LINQ Support

Once ported to the PPJ, Arrays and TableWindows can be queried easily using LINQ.

SalCompileAndEvaluate

SalCompileAndEvaluate uses the interpreter to evaluate expressions. These are parsed in C# by default but Custom Parsers are also supported.

Special considerations

SAL applications usually contain a couple of "special" constructs that mostly stem from SAL being an interpreted language. Ice Porter and the PPJ framework offer great support in migrating these concepts to the .NET world.

You might want to pay special attention to these features and tasks. All of them are described in full details in our PPJ documentation.

  • Unqualified references. Can be problematic in the original application already, need to be reviewed and fixed eventually.

  • When SQLError. Can be managed in 2 ways depending on your personal preferences.

  • Late Bind Calls. Are handled by additional virtual functions.

  • Multiple Inheritance. In general not available in .NET but isfully covered by IP and the PPJ framework.

Porting QRP reports

Gupta reports can be migrated to 4 different reporting engines:

Last updated