RPG to Node.js Conversion Example

About This Space

RPG Application that allows you to work with Insurance Claims converted to Node.js to run in the cloud, using any database


Last updated on December 14, 2019

Forked from: /alex/rpg-to-node.js-conversion-example/

Public Permissions:   View   Open/Fork   Run   Comment  

Converting RPG IV program to run on NodeRun

This space is a proof of concept to show how an RPG IV program can be easily converted to Node.js code and pointed to a new database server that is not DB2.
No changes are made to the program code beyond running the automatic conversion to Node.js.
The original RPG source code is provided in the claim03r.txt file for reference.

Before screen shots Before

Conversion By Profound Logic

This entire process can be implemented by our services team for a specific customer project and can be applied to any system that can run Node.js. Contact the Profound Logic Services team for more information.

Manual Conversion

For a smaller project or proof of concept the conversion can be completed manually and the steps involved are provided below.

This example started with a program that already had a rich display screen which had been converted from a green screen and then enhanced with some additional features.
However, the original green screen display file could have been used instead. A copy of the converted original green screen is provided in file claim01d.json for reference.

Convert Display

Convert the display file to Rich display using the converter in Profound UI designer then save as .json file

The Profound UI designer includes a conversion option that provides a one-step method of creating a rich display from an existing DDS file.

Designer Conversion

Convert RPG code

Convert RPG code to node using Profound.js Converter command PJSCONVERT

The Profound.js converter is an automated process that accurately converts your RPG code into Node.js code that will run in the Profound.js framework.
The converter has options to help clean up code, modularize code, and even create web service stubs for all subroutines and procedures int he original code.
For this example we selected to remove dead code but otherwise keep the same single program structure.

PJS Converter

Copy both the .json file and .js file to a new NodeRun space

Upload Files

Database

Duplicate Database Table An automated process would use a DB Migration tool to make this easier but for one or two tables for a POC you can do it manually.

  • Use Manage DB2 for i in ACS to generate SQL
  • removed DB2 specific parts from create table command and ran in NodeRun
  • export data and generate an insert script to run in NodeRun

This blog post has more information about doing this manually
Using Your IBM i Tables with NodeRun

Running the create script in NodeRun

Create Script

Db Override Modules

Create Db customize modules In an automated process these modules would be programmatically generated based on the table definitions.

  • When manually creating your own POC you can use claimsp.js and claims2l.js as examples.
  • Both modules use the single table claimsp. claims2l is no longer needed
  • You can override any of the db record elvel access commands and can even add your own custom methods.
    For example we could add a GetClaim() method to pull all the data for a specific claim.

Rich Display Enhancement changes

This example started with an RPG prorgam that was using a Profound UI Rich Display that was enhanced with File Upload and Image widgets.

Because these widgets interact with the file system there are a couple adjustments needed to move them to another system.

  • Create a folder for images under the public folder

Create Script

  • Change the Target Directory for the File Upload widget and the Image Source script for the Iamge widget to /public/images

Create Script

Create Script

  • Add a puiuplexit.js file The puiuplexit.js file is an exit module that is required to give the file upload widget permission to upload files.
    You can write your own code to verify the type, size, and directory before allowing an upload.

Be the first to comment:      

Comments

Write Preview Markdown: bold italic code link
Post

Filters:

Popular Recent

This app consumes a web service and display the information in a grid

865

0

0

This workspace shows you how to add custom widgets to your project

804

0

0

A simple dashboard example that uses responsive design

803

0

0

A Hello World app with both dynamic output and input fields

825

0

0

RPG Application that allows you to work with Insurance Claims converted to Node.js to run in the cloud, using any database

843

0

0