ASNA Visual RPG for .NET : Benefits and Features

Visual RPG Benefits and Features

AVR integrates tightly with Visual Studio

AVR is a first-class citizen in Visual Studio

ASNA Visual RPG for .NET Framework (AVR) snaps into Microsoft's Visual Studio where it uses such native Visual Studio facilities as:

  • source level debugger
  • user interface designers
  • source code editor (with Intellisense)
  • control model
  • deployment tools
  • unit testing framework

With AVR, you can build Windows applications, browser-based apps (intended for the Internet or your internal network), Windows services, Web services (using Windows Communication Foundation) and console apps--all in RPG!

AVR supercharged RPG syntax

AVR provides a supercharged RPG syntax that can be thought of as a blend of the best of RPG with the best of CL. AVR's syntax is, like CL, keyword-driven and indentable (much of AVR's syntax is also similar to ILE RPG's free-format RPG syntax). Field names can be as long as needed and many of the idioms have additional properties. For example, in the code snippet below, the Cust variable represents a disk file and it has an IsEof property (line 7 below) which is a Boolean value indicating if the file is at end-of-file.

You can write very modern, indicator-free RPG with AVR. However, if you insist, AVR is very backwards compatible with virtually all traditional RPG idioms and conventions, including RPG's built-in functions.

BegSr LoadGrid
    DclFld Row Type(*Integer4) 
    Do  FromVal(1) ToVal(GRID_SIZE) Index(Row) 
        Read Cust  
        If Cust.IsEof 

        Write CustMem             

    gridviewCust.DataSource = CustMem.GetFileData()

For example, lines 5 and 6 from above could be written like this using an indicator:

Read Cust EOF(*IN55) 
If *IN55=*ON

or like this using a built-in function:

Read Cust
If %EOF(Cust)

AVR's syntax is very easy for RPG programmers to get comfortable with.

High fidelity with the .NET Framework and VB.NET/C#

AVR provides a high level of fidelity with the .NET Framework. You can create classes with AVR that implement the same behaviors and member accessibility as VB.NET and C#. AVR's compiler was written by the ASNA R&D team and directly produces Microsoft Intermediate Language output--as shown below. 

Because of AVR's high-level of .NET Framework fidelity, AVR assemblies are consumable by VB.NET and C# (and most other .NET languages) and any VB or C# assemblies are also consumable by AVR. For example, this means that your AVR team could build rich business-specific class libraries (accessing IBM i data for example), that are consumable by your VB.NET or C# programming teams, abstracting IBM i vagaries away from them. This fidelity also implies that most products that primarily target VB.NET or C# are also usable by AVR. For example, there is a rich third-party UI control (providing sophisticated UI elements such as powerful datagrids) and these controls work fine with AVR.

Superb database connectivity


AVR connects to an underlying database platform with ASNA DataGate. DataGate is available for three platforms:

  • DataGate for IBM i (DGi). DGi installs as a single library on the IBM i and is ASNA's host server that connects AVR to the IBM i's database. On the i, DataGate provides read/write record-level access to physical and logical files, a IBM i program call (implemented with CALL/PARM) that obeys the pass-by-reference semantics for passed arguments, and easy access to data areas. DGi obeys all IBM i-imposed security and authority rules and performs very well.
  • DataGate for SQL Server (DGSS). DGSS installs on a Windows database server and connects AVR to Microsoft SQL Server. DGSS translates, on the fly, AVR's RPG record-level access idioms to the underlying SQL needed.
  • DataGate for Windows Servers and Desktops (DGW). DGW installs on Windows servers or desktops and provides its own "local" database on that PC or server. The ASNA local database provides a semantically similar database to the IBM i's database, but implemented on the PC.

An AVR program can connect to any of these three DB platforms without any coding changes!