HA4i gains new features using Let’s ‘C’ technology

We have previously posted about how to connect to a remote web server from your IBM i using both secure and non-secure sockets as part of a series of open source snippets (Let’s ‘C’) we have been working on. The main purpose of the Let’s ‘C’ series is to show how you can use ‘ILEC’ to develop useful tools and utilities for the IBM i, we hope this will spread the word that IBM i is not just about RPG (not knocking RPG but one of the concerns is people with RPG skills are dwindling) but that other more mainstream languages such as ‘C’ can be very successful in creating applications on the IBM i. Obviously ‘C’ is not the only language IBM i supports but my thoughts are if we can get ‘C’ programmers onto the IBM i in the native environment (not PASE but ‘C’ can be used extensively there as well) to develop code which can co-operate with existing ILERPG code without having to rewrite the whole application we are winning. Its a start small and grow opportunity not a rip and replace so we are not advocating replacing all of the RPG code you have.

The recent Blog posts about connecting to a web server were part of a technology test to see how we can improve the management overhead for our applications, we have posted the code to GitHub for those who want to try download it. One of the problems we were trying to solve is around the update and PTF processes we have for our products, we need to be able to show the users what the latest PTF and Update levels are. This is currently carried out via a number of emails and notification processes and nothing in the application collects it all in one place. So we have built a process that keeps the relevant data on our website, from there it can be downloaded to the customer system on request and they can see when new updates or PTF’s are available. The first part was to update the existing management processes so that when we create a PTF or Update the information is automatically sent to the web server, we also pushed up the maintenance information as well (all securely of course).

Once we had all of the data in place we then built a process to pull that information down to the system, this is where the code we developed for secure socket communications came in handy. The code we used is pretty much the same as published logically, but with a lot more verification and error handling added to allow user notification when connectivity to our remote system is not possible. We also created a number of PHP scripts that are called to extract the data from the databases and sent back to the IBM i. Once we have the data we populate the screens for display to the user. We worried about the performance initially but when we started testing we could see the response times were very good.

Another part of the process was to allow the information returned to be used to download the PTF or Update directly from our site ready for it to be installed by the user (we may automate the actual install as well at some later stage). This was carried out using the FTP command provided with OS with some code to build the download scripts etc. Recent changes to our website removed the ability to download PTF’s etc because we wanted to remove any issues related to GDPR (we needed to store user information to allow them to connect and download the objects) so we needed to come up with a better solution. The previous process also involved downloading a zip file to the users PC which then had to be unzipped and the contained save files copied out to the systems before the update could be applied, now you get the save files on the system and in the correct library from a single option.

This is what the new maintenance display looks like when you are current on maintenance.

Maintenance in date

Maintenance in date

You can see from the screen that we have PTF 1HA7201 installed and the current update is HA4I000000, the latest available are 1HA7201 and HA4i070918. Because the system is
current on maintenance we provide the ability to download the PTF or Update. If the PTF or Update are already installed you will simply get a message stating that and no downloads will occur. In this instance you can see that we need to install update HA4I070918 to bring everything up to date, so taking option 1 will download the update package onto the system where the update can be processed. If this had been a PTF then once the download had been completed you could run the LODPTF/APYPTF to update the application.


The above screen shows the maintenance has expired which means the GET options have been removed, but you can still see the latest update information available.

This change is a big improvement for the systems management processes both internally to Shield and to the customer operations staff which reduces the overhead required to manage HA4i updates plus it shows how some of the technology we have been showing via the Let’s ‘C’ series can actually be used in an application.

If you are a HA4i user the next update will contain the relevant objects that provide this functionality, until that ships and gets installed I am afraid its still going to require FTP’ing zip files etc to install updates and PTF’s.

If you have a HA solution in place already and like what you see let us know, we are still running our free replacement offer which allows you to replace your existing HA solution with HA4i for FREE (just pay the maintenance for 3 years). REMEMBER JT4i also provides the ability to track jobs through their life cycle so used in conjunction with a HA solution it can provide the ability to recover jobs on the remote system when a failure occurs on production.

If you would like to check out the secure sockets code on GitHub and fork your own copy, it can be found here.

Still thinking about where to take the Let’s ‘C’ series next so may be a while before we add more code, if you have any ideas let us know and we will see what we can do. If ‘C’ is not your thing but you would like help in developing similar solutions call us and have a discussion, you might be surprised just how much you can do on IBM i…

Chris…