Unlock Your RPG Applications to Enable Modern Online Experiences

By Dan Magid

What programming languages or frameworks do you think of when you hear web development? Probably JavaScript; maybe PHP or Python. But RPG? Not likely.

Nonetheless, for those who rely on longstanding IBM i systems to support their mission-critical operations, accessing current RPG applications is a necessity for powering fully functional, modern mobile applications. Of course, you might ask how a 60-year-old programming language could possibly handle the demands of modern online interactions.

RPG wasn’t originally built to power the web, but believe it or not, it may just be your fastest, most cost-effective option. With technological advances, it’s not always about what something was decades ago, but rather what it can do for you today.

In fact, RPG-based applications are being repurposed in ways their original developers could not have imagined, with amazing results. There is a significant amount of domain knowledge about the unique way your company does business built into your RPG applications. With the rise of the API economy, developers need that functionality for web, mobile and other applications. While RPG itself was not built with the web in mind, evolutionary technology has turned RPG into a web powerhouse, enabling the creation of web and mobile UIs—and even completely reengineered workflows—using the capabilities of existing RPG applications. And, RPG programs can call APIs from virtually any other application. Now, RPG code from 40 years ago underpins some of the most innovative applications you’ll see for call center and customer self-service applications, for example.

But why go this route when you could replace your old applications with pre-packaged or custom alternatives? The answer is that building upon what you already have—your venerable RPG applications— is faster, lower risk and significantly less expensive than replacing an entire system. Remember that those applications often have decades of business rules that must be replicated by any new system you buy or build from scratch, and that the TCO of your IBM i is on average about 1/3 of the most popular web and mobile platforms.* By keeping the back-end RPG application in place and using APIs or modern UIs, businesses can deliver renewed value from their current investments while still offering the kinds of features and experiences employees and customers need.


* Quark + Lepton, 2017 Study

Guest Blogger

Daniel Magid is Managing Director of Rocket Software’s Application Lifecycle Management & DevOps lab, and is a recognized authority on helping leading organizations achieve compliance through ALM solutions and DevOps best practices. He has written a variety of articles for leading IT publications and is a regular speaker at technology conferences.

Completely Free ILEditor and IBM Technology Refresh Recap

Today I’ll look at a powerful open source (and completely free!) IDE for ILE programs (CL, C/C++, Cobol or RPG) named ILEditor that is being actively developed by Liam Allan who is one of the brightest minds in the industry. In fact, last week Allan added a new GUI interface to the editor that makes it feel much more professional, while keeping it easy to use. I’ll also give you a quick overview of the announcement IBM made last week about updates to IBM i 7.2 and 7.3.

The IBM Announcement

On February 13th, just in time for Valentine’s Day (because IBM wants to be my valentine!), IBM announced new Technology Refreshes. These include support for POWER9 processors, which look incredible – but, alas, I’m not a hardware guy. They also include updates to Integrated Web Services (IWS), Access Client Solutions (ACS), RPG and more.
Here are links to the official announcements:

IBM i 7.2 Technology Refresh 8 (TR8)

IBM i 7.3 Technology Refresh 4 (TR4)

You should also check out Steve Will’s blog post.

My Thoughts

The most exciting part of this announcement for me is the introduction of the new DATA-INTO opcode in RPG. Here’s the sample code that IBM provided in the announcement:

DATA-INTO myDs %DATA(‘myfile.json’ : ‘doc=file’) %PARSER(‘MYLIB/MYJSONPARS’);

It appears that this will work similarly to Open Access, where the RPG compiler will examine your data structure and other variables that it has all the details for and work together with a back-end handler that will map it into a structured format. Open Access refers to the back-end program as a “handler”, whereas DATA-INTO seems to call it a “parser”, but the general idea is the same.

As someone who has written multiple open source tools to help RPG developers work with XML and JSON documents, this looks great! One of the biggest challenges I face with these open source projects is that they don’t know the details of the calling program’s variables, so they can’t ever be as easy to use as a tool like XML-INTO. For example, the YAJL tools that I provide to help people read JSON documents require much more code than the XML-INTO opcode, because XML-INTO can read the layout of a data structure and map data into it, whereas with YAJL you must map this data yourself. However, DATA-INTO looks like it will solve this problem, so that once I’ve had time to write a DATA-INTO parser, you’ll be able to use YAJL the same way as XML-INTO.

Unfortunately, as I write this, the PTFs are not yet available, so I haven’t been able to try it. I’m very excited, however, and plan to blog about it as soon as I’ve had a chance to try it out!

What is ILEditor?

ILEditor (pronounced “I-L-Editor”) came from the mind of Liam Allan, who is one of the best and the brightest of the 2018 IBM Champions. I have the privilege of working with Liam at Profound Logic Software, and I can tell you that his enthusiasm for computer technology and IBM i programming know no bounds. In fact, one day last week after work, Liam sent me a text message about his new changes to ILEditor, sounding very excited. When I factored in the time zone difference, I realized it was 1:00 a.m. where he lives!

For many years, one of the most common laments in the IBM i programming community has been about the cost and performance of RDi. Please don’t misunderstand me. I love RDi, and I use it every day. I believe RDi is the best IDE for IBM i development that’s available today. That said, sometimes we need something else for various reasons. Some shops can’t get approval for the cost of RDi. Others might want something that uses fewer resources or something they can install anywhere without needing additional RDi licenses. Whatever the reason, ILEditor is very promising alternative! I wouldn’t be surprised if it eventually is able to compete with RDi.

Why Not Orion? Or SEU?

The concept of Orion is a great. It’s web-based, meaning that you don’t have to install it and it’s available wherever you go. Unfortunately, it’s not really a full IDE – at least not yet! I hope IBM is working to improve it. It does not know how to compile native ILE programs or show compile errors. Its interface is designed around the Git version control software, which makes it tricky to use unless you happen to store your code in Git. And quite frankly, it’s also a little bit buggy. I hope to see improvements in these areas, but right now it’s not a real option.

The most popular alternative to RDi today is SEU. In fact, historically this was the primary way that code was written for IBM i. So, you may think it’s still a good choice. However, I don’t think it’s viable today for two reasons:

  1. The green-screen nature makes it cumbersome to use. This is no problem for a veteran programmer, because they’re used to it. But for IT departments to survive, they need to bring in younger talent. Younger talent is almost always put off by SEU. I even know students who gave up the platform entirely because they thought SEU seemed so antiquated, and they wanted no part of it.
  2. SEU hasn’t received any updates since January 2008. That means all features added to RPG in the past 10 years – which includes three major releases of the operating system –will show as syntax errors in SEU.

About ILEditor

ILEditor is open source, runs on Windows and was released as open source under the GNU GPL 3.0 license. That means it is free and can be used for both private and commercial use. If you like, you can even download the source code and make your own changes. It can read source from source members or IFS files. In addition to editing the source, it can compile programs, show you the errors in your programs, work with system objects and display spooled files. It even has an Outline View (like RDi does) that will show you the variables and routines in your program.

The main web site for ILEditor is: worksofbarry.com/ileditor/.

If you want to see the source code, you’ll find the Github project here.

You do not need to install any software on your IBM i to use ILEditor. Instead, the Windows program uses the standard FTP server that is provided with the IBM i operating system to get object and source information and to run compile commands. An FTPES (FTP over SSL) option is provided if a more secure connection is desired.

Connecting for the First Time

When you start ILEditor, it will present you with a box where you can select the host to connect to. Naturally, the first time you run it there will be no hosts defined, so the box will be empty. You can click “New Host” to define one.

Once you have a host defined, it will be visible as an icon, and double-clicking the icon will begin the connection.

When you set up a new system, there are five fields you must supply, as shown in the screenshot below:

Alias name = You can set this to whatever you wish. ILEditor will display this name when asking you the host to connect to, so pick something that is easy to remember.

Host name / IP address = the DNS name or IP address of the IBM i to connect to.

Username = Your IBM i user profile name.

Password = Your IBM i password – you can leave this blank if you want it to ask you every time you connect.

Use FTPES = This stands for FTP over Explicit SSL. Check this box if your IBM i FTP server has been configured to allow SSL and you’d like the additional security of using an encrypted connection.

The Main IDE Display

Once you’ve connected, you’ll be presented with a screen that shows the “Toolbox” on the left and a welcome screen containing getting started information and developer news, as shown in the screenshot below.

Any of the panels in ILEditor, including these two, can dragged to different places on the display or closed by clicking the “X” button in the corner of the panel. There is also an icon of a pin that you can click to toggle whether a panel is always open or whether it is hidden when you’re not using it. If you look carefully on the right edge of the window, you’ll see a bar titled “Outline View”. This is an example of a hidden panel. If you click on the panel title, the panel will open. If you click the pin, it will stay open. You can adjust the size of any panel by dragging its border.

When you open source code, it will be placed in tabs in the center of the display (just as the welcome screen is initially.) These can also be resized or moved with the mouse. This makes the UI very flexible and simple to rearrange to best fit your needs.

The Toolbox

Perhaps the best place to start is with the toolbox.  Here’s what that panel looks like:

Most of the options in this panel are self-explanatory. I will not explain them all but will point out a few interesting things that I discovered when using ILEditor:

  • The “Library List” is primarily used when compiling a program. This is the library list to find file definitions and other dependencies that your program will need.
  • The “Compile Settings” lets you customize your compile commands. Perhaps you have a custom command you use when compiling. Or perhaps you use the regular IBM commands but want to change some of the options used. In either case, you’ll want to look at the Compile Settings.
  • As you might expect, “Connection Settings” has the host name, whether to use FTPES and other settings that are needed to connect to the host. In addition to that, there are some other useful options hidden away in the connection settings:
    • On the IFS tab, you’ll find a place to configure where your IFS source code is stored and which library it should be compiled into.
    • On the Editor tab, there is a setting to enable the “Outline View”. You’ll want to make sure this is checked, otherwise you’ll be missing out on this feature.
    • On the ILEditor tab, there’s a setting called “Use Dark Mode”. This will change the colors when it displays your source code to use a black background (as opposed to the default white background), which many people, myself included, find easier on the eyes.
  • When you change something in the “Connection Settings” (including the options described above), you will need to disconnect from the server and reconnect so that the new settings take effect.

Opening Source Code from a Member List

ILEditor allows you to open source code from either an IFS file or a traditional source member. You can use the Member Browser or IFS Browser options in the toolbox to browse your IBM i to find the source you wish to open and open it.

The Member Browser opens as a blank panel with two text fields at the top. At first, I wasn’t sure exactly what these were for as there wasn’t any explanation. I guessed that this was where you specified the library (on the left) and the source physical file (on the right) that you wanted to browse. Iit turned out that I was correct. If you type the library and filename and click the magnifying glass, it will show you all the members in that file.

I have a lot of source members that I keep in my personal library, and I often get impatient waiting for the member list to load in RDi. I was pleasantly surprised to see that the member browser in ILEditor loads considerably faster.

There is also a “hidden” feature where you can press Ctrl-P to search the list of recent members that you listed in the member browser. Just press Ctrl-P and start typing, and it’ll show the members that match the search string. This was a very convenient way to find members.

Once you’ve found the member (in either the regular member browser or the “search recent” dialog), you can double-click on the member name to open it.

Create or Open a Member Without Browsing

In the upper-left of the ILEditor window, there is a File menu that works like the file menus found in most other Windows programs. You can click File/New to create a new member or IFS file or File/Open to open an existing member or IFS file when you know the name and therefore don’t need to browse for it.

The File Menu also offers keyboard shortcuts to save time. You can press Ctrl-O for Open, or Ctrl-N for New to bypass the menu.

One thing that I found a little unusual is that you must specify the source type when you open an existing member. I expected this when creating a new member, since the system doesn’t know what it is. But when opening an existing member, I expected it to default to the source type of the member so that you don’t have to specify it every time. I discovered that if you do not specify the type, it will default to plain text. I spoke to Liam about this, and he assured me that this is something he plans to improve in the future. Thankfully, this is not the case when using the member browser. It only happens when opening the member directly.

Working with IFS Files

The IFS Browser can be used to browse the IFS on your IBM i and find the source code that you’d like to open. It will begin browsing the IFS in the directory that you’ve specified in the IFS tab in your connection settings. Any subdirectories found beneath that starting directory can be expanded as well to see the files inside of it.

Like the member browser, double-clicking on an IFS file will open it in the editor.

The File menu also has options for creating a new IFS file or opening an existing IFS file when you know the exact path name. In that case, you do have to type the entire IFS path. There is no option to browse folders as you’d find in the open dialogs of other Windows software. That didn’t seem like a problem to me. If I wanted to see the folders, I’d use the IFS browser instead.

The Source Editor

I found the editor to be very intuitive, since it works the same as you’d expect from a PC file editor. It provides syntax highlighting and an outline view that make the source code very easy to read. In the screenshot below, I’m using “dark mode”, so you’ll see that my source code has a black background.


Syntax highlighting worked very nicely in free format RPG, CL and C/C++ code, including code that used the embedded SQL preprocessor.

Unfortunately, it did not work in fixed format RPG code. Liam tells me that fixed format RPG is especially difficult to implement because he codes ILEditor’s syntax highlighting using regular expressions, and regular expressions are difficult to make work for position-dependent source. However, he assured me that he does plan to support fixed format RPG code and is working on solving this problem.

I noticed that I could still type fixed format code and make changes to it, and aside from the source not being colored correctly, it worked fine.

The Outline View was a pleasant surprise, because I wasn’t really expecting an editor other than RDi to have one. It does not have as many features as the RDi outline view, but it worked very nicely for what I needed it for. I was also pleasantly surprised that the Outline View worked with CL code.

Compiling Programs

The compile option can be run by using the Compile menu at the top of the screen, the compile icon (shown in the picture below) or by pressing Ctrl-Shift-C.

I discovered that the compile option does not ask for any parameters. Instead, it uses the options that you specified in your connection and compile settings options in the toolbar. So if you want to change one of the default compiler options, you need to change them in the compile settings each time.

There are advantages and disadvantages to this approach. The advantage is that it’s very quick and easy to compile a program. When you’re developing software, you often have to compile it many times, and it’s very nice to be able to skip the dialog and just have it compile. The disadvantage is when you want to do something different in a one-off situation. You have to go into the compile settings to change it, so that’s a little bit of extra work. However, I find that I don’t need to do that very often, so this wasn’t a big deal to me.

When an error occurs during the compile, an error listing will open showing you what went wrong, very similar to what you’d find in RDi. Like RDi, you can click on the error and it will position the editor to the exact line of code where the error was found.

One thing that surprised me about the compile and the error message dialog was that it is considerably faster than RDi. That seems strange to me, since both tools are connecting to the IBM i and running the same IBM compiler for RPG. However, I found that depending on the size of the member, the ILEditor compile was 10-20 seconds faster than the RDi one.

RPG Fixed Format to Free Format Converter

One feature of ILEditor that simply did not work well was the RPG converter. Some of the fixed format code in my program would convert, but other things (including things that should’ve converted easily) did not. Code that spanned multiple lines did not convert at all.

In my opinion, the converter needs a lot of work before it will be useful. I pointed this out to Liam, and he told me that he agrees and has a complete rewrite of the converter on his to-do list.

Other Features

I’d like to mention some of the other features of ILEditor that I did not have time to try out before writing this article. Since I didn’t have time, I can’t review them and give my opinion – but, I wanted to mention them. That way, if you’re looking for these features, you can give them a try yourself and see what you think.

  • Source Diff = compares two sources (members or IFS files) and highlights what is different about them.
  • Spooled File Viewer = Lets you view spooled files that are in an output queue
  • SQL Generator = Generates SQL DDL code from an existing database object
  • Offline mode = lets you download source from the IBM i to store on your PC and work on it while you are not connected (for example, when traveling on a plane or train without good internet access), uploading the results later.

My Conclusion

I was extremely impressed by ILEditor. RDi has more features, such as debugging, refactoring and screen/report design, but I was surprised at just how many features ILEditor has, considering it was written by one man in his free time and costing nothing. I was pleasantly surprised by the performance of ILEditor, which was consistently faster than RDi while using far less memory.

Unfortunately, the lack of syntax highlighting for fixed format RPG will be a problem for many RPG developers, and I sincerely hope that does not discourage them from at least trying ILEditor.

If a lot of people try it, and some of them donate money or give their time to help with development, this tool could easily become a serious competitor to RDi.

A Powerful Way to Run Unix and Open Source Tools from a Program

Perhaps the biggest area of growth in IBM i programming over the past several years has been the Open Source languages. There are thousands of utilities, mostly designed for Unix, that you can run in the QShell and PASE environments, and these have become very popular on IBM i! However, running these tools from your RPG and CL programs can be tricky. This post will introduce you to a free utility called UNIXCMD that makes it much easier.

Why is it Tricky?

It’s tricky because there’s a difference in the way IBM i and Unix systems run programs. When a program is called on Unix, a new “process” is created, this is very much like a new job on IBM i, except that it is created each time a program is called. This gives the calling program a choice, it can either stop and wait for the called program to finish, or it can continue and run simultaneously with the program it called. In a way, this is similar to submitting a batch job on i, but it’s different in that both programs can interact with the user’s display.

There are two common ways of running Unix programs, PASE via the QP2SHELL API and QShell via the STRQSH (or it’s alias QSH) CL command.

The QP2SHELL API runs a PASE program directly in the current job, which will cause problems if the job expects to be able to run simultaneously with the caller. Programs that use multiple threads, in particular, can have strange problems that are very hard to troubleshoot. The fix is to spawn a child job to run QP2SHELL so that it’s not in the same job as the caller. To enable input and output, you need to connect pipes to that child job. This is a lot of work, and often more than a programmer bargained for. (In fact, my description is somewhat oversimplified, to keep this brief!)

The STRQSH CL command solves this by always spawning its own child job and connecting pipes to it. It does all of this for you. The problem with this is that you are limited in how you can interact with the input and output streams. For a program to work with them, the only real option is to read and write from temporary files. This works, but it cumbersome, you have to create the file, clear it, redirect the I/O, and can only read the output once the whole process has finished.

Scott’s Solution

My solution is to create tools that do the work of submitting the child job for you, and connecting the pipes to a simple interface that is easy to use from your program. For a CL program, I’ve provided simple commands that open, read, write and close the connection, allowing you to read and write in a natural way. In RPG, I’ve used the Open Access interface so that you can open the connection with RPG’s native file interface, and read and write using the standard open, read, write and close opcodes.

The RPG Interface

Let’s take a look at RPG first. My initial examples use the newer “all-free” approach to writing RPG, but if you’re unable to use newer RPG, don’t fret – see the section titled “Older RPG Code”, below.
This example switches to the /QIBM directory in the IFS, lists the files in that directory, and prints them to the spool:

Notice the HANDLER keyword on the DCL-F statement. This tells RPG to access this file through the Open Access interface. When you run any of RPG’s file opcodes against this file, it will (under the covers) call routines in the UNIXCMDOA program, that allows my tool to take control and handle all of the work for you.

The command to run is provided in the second parameter to the HANDLER keyword. Since I’m setting that command in calculations in my program, I do not open the file until the command variable is set. For that reason, the file is declared with the USROPN keyword, and I open it explicitly with the OPEN opcode.

Unix utilities allow you to run multiple commands on a single line if you separate them with a semicolon. In this example, the cd command is used to switch to the /QIBM directory, and then the ls command is run afterwards to get the output.

To get the output from the Unix ls (list directory) command, I simply use the READ opcode. Since this is a program-described file (there are never any defined fields in a Unix input or output stream) I am using RPG’s feature that lets me read program-described data into a data structure.

When I’m done, I use the CLOSE opcode to shut down the Unix process. One thing that surprises people who are new to UNIXCMD is that any errors that occur in the background Unix program will be reported on the CLOSE opcode rather than the OPEN, READ or WRITE. This is because the Unix program has the opportunity to write error messages, and will not report that it has failed until the program has ended. Catching errors can be done easily with RPG’s MONITOR and ON-ERROR opcodes.

By default, the UNIXCMD utility runs your program using the QShell interface. If you prefer to run the PASE interface and avoid the QShell environment, you can do that by prefixing the command string with “pase:”, as shown in the next example.

The examples so far have only read output from a Unix command. In the next example, I’d like to demonstrate sending data both ways. In this case, I’m calling a PHP script that calls a web service to Geocode and address. In other words, I pass an address as input, and the script returns the latitude and longitude coordinates where that address can be found. To do that, I’ve written a PHP script that receives the address from it’s “standard input” (that is, the pipe that is connected to its input stream) and write the coordinates to standard output. (If you’re interested in the PHP code, it is included in the downloadable examples on my web site.) To call it from RPG, I can simply write my data to it, and then use the READ opcode to get the results.

The first thing you’ll notice in this statement is that it sets the Unix PATH variable. This is done because many people don’t have the PHP command in their PATH. PATH is very much like a library list, except that it is a list of IFS directories that the Unix environment uses to find a command. The PATH statement adds the directory where we’ve placed the php-cli command (CLI stands for “command line interface”) so that QShell can find it.

Another important thing to note is that data sent as input through the pipe is not automatically converted from EBCDIC to ASCII or Unicode. To solve that problem, I added a call to the QShell iconv utility, which can translate between different CCSIDs. In this case, will convert between 0 (a special value that means “this job’s CCSID”) and iso-8859-1 which is CCSID 819 and is a flavor of ASCII.

A Note About Input and Output

UNIXCMD assumes that you will write all the data that is sent as input to the Unix command first, before the first time you read its output. When you read the Unix output, it will shut down the Unix input stream to signal the Unix program that no more data is coming. This works well in most applications.

However, if you would prefer that it not close the stream, this can be made with a very simple code change to the UNIXCMD utility. If this would be useful to you, please e-mail me at commonblog@scottklement.com and I’ll be glad to show you how to change it.

Older RPG Code

Sadly, not everyone has a current version of RPG. To help those people, I’ve provided a way of using UNIXCMD that’s compatible with even the oldest versions of RPG IV using the SPECIAL file interface. Here is the last example rewritten to use that approach.

Notice that the command is passed to the SPECIAL file through the PLIST. The second parameter in the PLIST is not shown in this example, but you can add a 1 character second parameter and set it to P if you want to run in the PASE environment. If you do not pass this parameter (or set it to a Q) it will run QShell instead. Here is an excerpt of code that does that:

Since the SPECIAL file approach does not require Open Access, it will work all the way back to V5R3.

Using the UNIXCMD Tool from CL

Since the CL programming language does not support Open Access, there is no way to use the standard IBM supplied SNDF or RCVF opcodes that you are used to using for a normal file. Instead, I have created my own CL commands named OPNPIPE, SNDPIPE, RCVPIPE and CLOPIPE that handle the open, send, receive and close functions, respectively. The OPNPIPE command accepts the command to run, and lets you designate whether it is PASE or QShell. Aside from these differences, the UNIXCMD utility works the same from CL as it does from RPG.

Here’s an example of listing files (like the first RPG example) using the CL interface:

Get the UNIXCMD Utility

UNIXCMD is an open source tool that is available at no charge. You can download it, the examples given in this article, and a few more examples from my web site at the following link:


IBM i and the API Economy

By Dan Magid

The API economy is a new frontier for companies seeking to get the most out of their data. With the right API, you can transform rigid workflows into the intuitive web-based and mobile experiences that today’s users demand, using modern programming languages to access real-time transactional data. This way, users can harness the value of information from the transactional systems that fuel their businesses without unnecessary time, cost, and risk.

According to Coleman Parkes Research, 88% of all businesses employ APIs. But our internal research shows that only 38% of IBM i users are enjoying the benefits of the API economy. Perhaps this disparity is due to the lack of API expertise among IBM i shops, where most developers use RPG and COBOL vs. modern tools like Node.js or GO, or the time and resource constraints that are common among IBM i shops.

However, the fact is that APIs are the most effective way for IBM i shops to expose real-time transactional data for access by modern web, mobile and IoT applications, so bridging the knowledge gap between modern application development and the languages that power your critical IBM i applications should be a top priority. But it must be done without hurting productivity, blowing the IT budget or risking catastrophic application errors.

These goals—building and deploying APIs without negatively affecting organizational performance—may appear to be contradictory, but they don’t have to be. How do you do it? I recommend a two-pronged approach:

  • Look for tools to build APIs directly from the host-based application that run your business—but without needing to modify the codebase that runs your business
  • Ensure that your API functionality is easily tested against any other host-based application changes that occur, vastly reducing the resources required to ensure that APIs continue to work in a world of ever-changing user and IT requirements

Following this approach will enable you to not only extend the value of your IBM i platform, but also unlock the value of your applications to a world of new uses. And without the need to modify source code, it will also help you bridge the knowledge gap between your IBM i applications the web and mobile applications that need their functionality.

I’ll finish with the results of a recent study by Quark and Lepton, which showed that the IBM i platform typically costs about one-third as much budget to operate over a three-year period compared to Oracle/Linux or SQL Server/Windows platforms. IBM i is by far the most cost-effective, and with the right API approach, it can serve you effectively for years to come.

Guest Blogger

Daniel Magid is Managing Director of Rocket Software’s Application Lifecycle Management & DevOps lab, and is a recognized authority on helping leading organizations achieve compliance through ALM solutions and DevOps best practices. He has written a variety of articles for leading IT publications and is a regular speaker at technology conferences.

The Python Programming Language

Python is a powerful, interpreted, open-source language available for most operating systems, including IBM i. It has many uses and has a very easy to learn syntax. Many packages are available to add capabilities not included in the Python core. Python is a great language to use for general purpose programming of all sorts.

Open Source - Python





Python Language Details

Python structure uses white space instead of brackets. This makes the code more readable than in similar languages such as Perl. The syntax is logical and easy to follow, even for beginners, and typing is dynamic. Even with this simple syntax, the language also has great flexibility and powerful capabilities. Object-oriented programming is possible but not required, as it is in other languages like Java or Ruby.

Web Development

One use of Python is for back-end web development. Frameworks such as Flask and Django simplify back-end development using built-in components that are popular. Rapid development and prototyping are possible using these frameworks. Python is also good for general scripting, including projects involving crawling the web or scraping information from websites.

Data Science

Python is a great language to use for data science. Useful libraries include NumPy, which adds speedy mathematical capabilities, and SciPy, which adds the ability to manipulate complex data in arrays for linear algebra and other purposes. Several other libraries are useful for doing data science in Python.


Python has a philosophy often referred to as “The Zen of Python“. This philosophy encourages simple, clean code that is easy to read and explain to others. It has several other suggestions for optimizing the use of Python to make it uniform and ideal using best practices.


A simple yet powerful open-source language, Python is a great choice for many projects. Using Python gives you many capabilities out of the box and additional packages to add more. The language is quite readable, and its uses include many technical domains.

Learn Python with COMMON’s Open Source Video Series.



Study Shows IBM i Has Big Cost Advantage Over Alternatives

According to an August 2017 study conducted by Quark + Lepton, an independent research and management consulting firm, IBM i on Power Systems servers provides a substantial TCO (total cost of ownership) advantage over equivalent Windows or Linux platforms.

For the study, which was funded by IBM, Quark + Lepton used three different server/database configurations: an IBM Power Systems server running IBM i Operating System V7.3 with DB2, an x86 server running Windows Server 2016 and SQL Server 2016 and an x86 with Linux and Oracle Database 12c. TCO estimates were based on the costs of hardware acquisition and maintenance, OS and database licenses and support, system and database admin personnel salaries and facilities expenses. Several different use cases were analyzed.

A Big TCO Advantage

The results of the study showed the projected three-year TCO for the three setups to be as follows:

  • Power Systems/IBM i/DB2 – $430,815
  • x86/Windows/SQL Server – $1.18 million
  • x86/Linux/Oracle – $1.27 million

The study concludes that “costs for use of IBM i on Power Systems are lower across the board”. For example, initial hardware and software acquisition costs for the IBM i systems averaged 8% less than the Windows systems, and fully 24 % less than the Linux systems.

Perhaps the most surprising factor in the stark differential between the IBM i solution and the others was in the cost of required support staff. Based on a 300-user scenario, IBM i required 0.3 FTE (full time equivalent) support personnel, compared to 0.5 FTE for the Windows setup and 0.55 FTE for Linux.

But the biggest differential in staff costs arose from the fact that IBM i admins could handle both the OS and the database. Those double-duty IBM i personnel commanded salaries of about $86,000, while Windows and Linux sysadmins were paid $71,564 and $86,843 respectively. However, the Windows and Linux setups also required the support of separate database admins, adding $100,699 (SQL Server) and $103,283 (Oracle) to the personnel costs for those solutions.


In its conclusion the report notes that while the industry is trending toward ever-greater complexity, the simplicity of IBM i makes it by far the most cost-effective platform on which to base an organization’s IT infrastructure.

The Benefits of Certification

There’s still a lot of competition in today’s job market. Even skilled IT professionals will tend to struggle to get jobs today. Getting specialized certifications can make all the difference for people who are looking for a job or trying to succeed in a career.

Career Advancement

Having IT certification can mean the difference between getting the job and staying in the job market for even longer. Some employers will actually narrow down the applicant pool based on who has certification and who doesn’t. Certified individuals will also find it easier to network with people who have similar certifications, which can enhance their career opportunities.

Rising in a company and getting a higher salary often requires people to familiarize themselves with new technologies and acquire new skills. People will usually need to provide some documented evidence that they have such skills and knowledge, and earning new certifications can make that happen.

Career Stability

Employers are more likely to keep certified employees on staff during difficult times. People with high-level certifications have documented skills that other employees won’t have. People who earn new certifications will make themselves more valuable employees.

New certifications allow IT professionals to stay relevant. The technological world changes very quickly. Skills can become obsolete just as rapidly. The people who are progressing further with certifications immediately send the message that they’re able to adapt to this transitory environment. These are the people who will keep their jobs or get new jobs more easily. Certified people know their field and they can network within the field more effectively.

Learn more about COMMON Certification.

2017 Fall Conference Call for Presentations

The Call for Presentations is now open for the COMMON 2017 Fall Conference & Expo, which takes place October 2-4, 2017 at the Hyatt Regency St. Louis at the Arch in St. Louis, Missouri.

This three-day Power Systems educational and networking event will be packed with educational sessions on a variety of topics, including vendor-led sessions, an Expo and numerous networking opportunities. The conference will consist of stand-alone sessions of 75 or 165 minutes in length, lecture and demos and preconference workshops.

The education team is looking for content in every Course of Study. But we are particularly interested in sessions on External Storage, Virtualization, Managing Source Code in the IFS using GIT and general Systems Management courses. We are also looking for intermediate to advanced sessions on Node.js, Python, and Ruby.

The deadline to submit a session for consideration is June 5, 2017. To submit a session, you must first log-on to your Cosmo account.

If this is your first time using COSMO, click on password in “I don’t know my username or password.” For your username, use the email address you have on file with COMMON. Follow the instructions to retrieve your password. (Issues signing on? Call us at 1.312.279.0192.)

Once you are in the system, hover on CALL FOR PRESENTATIONS on any page and then select Submit a New Session. See the screen shot below.

Call for Presentations

If you are a returning speaker as would like to resubmit a session you have previously submitted, go to My Sessions and click Select next to the session in your session list to edit the status.

You can view and edit any of your submissions up until the June 5, 2017 deadline by visiting My Sessions.

Tips from an Insider – Navigating the Annual Meeting

As a former Board Member, on behalf of COMMON, I want to thank you for choosing to attend the upcoming 2017 Annual Meeting and Exposition at the amazing Loews Sapphire Falls Resort at Universal Orlando. The fact that you are investing in yourself and your future by attending says a lot about you. COMMON is committed to ensuring your return on this investment by providing the best possible conference. Try and make sure you take advantage of everything the conference offers.

I’ve been attending COMMON conferences for what seems like decades, both as an attendee and as a volunteer. Here, I want to share tips that have resulted in great conference experiences.

  1. Dress comfortably for the conference and wear comfortable shoes. Bring a light jacket (or a long-sleeve shirt) as session rooms can be chilly at times. Remember, the typical dress code is business casual for the conference. You will do more walking than you realize, so I can’t stress comfortable shoes enough.
  2. COMMON will provide a backpack at registration that can be used to carry the items you need with you each day. If possible, register on Saturday so you can go back to your room, read everything inside the backpack and then fill it with some of the items below.
  3. Don’t forget your phone charger. You’ll find that your battery is drained by the end of each day. If you have a portable charging unit, they are great as well.
  4. Bring a few breakfast bars with you so you will always have a bite to eat if the day gets a little hectic or if you can’t find a quick lunch.
  5. Go online to www.common.org/sessions and create your session grid before leaving for Orlando. This gives you plenty of time to map out which sessions are interesting to you. I always choose two sessions for each period so I have a primary and a backup session. Then, I can decide the day of the conference which sessions I am going to attend. Sometimes I make my decision by the speaker, by the topic or just what I feel like.
  6. Even if it’s not your first time to the Annual Meeting, stop by the First Timer’s Session on Saturday evening from 6:00 p.m. – 7:30 p.m. Trevor Perry leads this very informative session. You’ll get great nuggets of information to enhance your conference experience. It’s also a great way to start making friends that will explore Universal with you afterwards.
  7. Put your phone on vibrate during sessions so you will not be the person everyone looks at when the phone starts ringing, interrupting the speaker.
  8. Arrive to sessions 7 to 10 minutes early to find a good seat and to settle in before the speaker starts. This is also a great time to start a conversation with others since they are interested in learning about the same subject. You already know you have something in common. Also, once the speaker is prepared, it can be a great time to ask a question.
  9. Bring business cards with you to exchange contact information with your peers and experts. Plus, some vendors have raffles that you can throw your cards into.
  10. Take advantage of the Exposition and learn about the latest products and solutions in the industry. If you want to receive additional information, just have your badge scanned. It’s a quick and easy way to connect with exhibitors.
  11. Before going to the Exposition on Sunday and Monday nights, I like to go back to my room, drop off my backpack and then return to wander the expo. I find it easier to walk the expo without my bag, but the drawback is not having it available to put things into. Another option is to just lighten your bag in your room and then come back down. Perhaps leave your PC or tablet safely secured in the in-room safe.
  12. Try to get a good breakfast before Opening Session on Sunday morning where Jeff Carey, our President, will kick-off the conference promptly at 9:00 a.m. I recommend getting there no later than 8:45 a.m. to get a seat. Make sure you stop at the restroom beforehand as this session goes until 10:30 a.m. Lunch is not provided on Sunday, so those breakfast bars come in handy. Otherwise, you have 45 minutes to get a little something during the midday break. The Welcome Reception starts at 5:00 p.m. in the Exposition on Sunday and will include food and drinks. Come hungry and thirsty. There is enough there for dinner.
  13. On Monday and Tuesday, lunch is served in the Exposition. It’s a good lunch. Arrive early, eat quickly and then spend the remaining time walking the expo. Make a friend or two at your table and ask if they want to walk around the expo. They wanted to ask you the same thing but were too shy.
  14. After the sessions are done each day, don’t just go up to your room and stay there. Take part in the evening events. These are great opportunities to continue your learning by getting one-on-one time with the experts and your peers. It’s amazing how much you can learn by just talking to your fellow attendees. If you are a little shy, don’t worry. Everyone is friendly and just as shy. They want to talk with you just as much as you want to talk with them. Take the first step. Walk up, introduce yourself and tell them what you do. In fact, go to the Exposition on Monday night and meet up with people you saw in your sessions. Take advantage of the many restaurants and bars at Universal’s CityWalk afterwards with your new friends.
  15. Be sure to attend the CEF Closing Reception on Wednesday night. The evening starts with dinner at Jimmy Buffett’s Margaritaville. (Don’t forget to bring your island/beach inspired apparel to wear.) This will be followed by dessert, rides and entertainment in The Wizarding World of Harry Potter – Hogsmeade. Explore Hogsmeade and don’t forget to try some of the butterbeer (don’t worry it is non-alcoholic). We will be able to ride attractions like Harry Potter and the Forbidden Journey, Dragon Challenge and Flight of the Hippogriff without the daytime lines! While in Hogsmeade, don’t forget to stop at Ollivander’s Wand Shop, which will be open for your wizarding needs. Remember, the wand chooses the wizard. You will have a great night relaxing and having fun after four days of learning. It’s a memorable way to end the conference.
  16. The COMMON staff will wear shirts with the COMMON logo on them. If you have a question, they can help you. Just ask. The COMMON Board of Directors will have purple ribbons on their badge holders. Don’t hesitate to tell them what you need to make COMMON more effective for you.
  17. On Wednesday is the Meeting of the Members, held at 12:45 p.m. Get your lunch beforehand and then come listen to what your association is doing for you. This session is all about what COMMON is doing now and where it is going.
  18. Have a piece of paper available to jot down notes regarding things you learned at each session. When you get back to the office, talk with your management to show them what you learned and how it will help the company. This is your ticket to the 2018 Annual Meeting in San Antonio.

Remember, these are just a few of my own personal tips on how to get the most out of your investment and have a kick-ass conference. The goal is for you to learn new things, expand your horizon, meet new people and have fun.

Thank you, and I look forward to seeing you in Orlando. Safe travels.

Pete Massiello

About the Author

Pete Massiello

Pete Massiello

Pete has been working with the AS/400, iSeries, IBM i since 1989, focusing on systems management and technical support. He has held numerous technical positions through out his career. Pete is the President of iTech Solutions Group, an IBM Premier Business Partner delivering solutions and services to IBM i shops throughout the world. He is a member of IBM’s certification test writing team, an IBM Certified Systems Expert with certifications in IBM i Design, Administration, LPAR, Virtualization, Implementation, and HMC management. Pete has a BS in Computer Science from Hofstra University, and an MBA from the University of New Haven. He was President of COMMON from 2010 to 2012, and again in 2014. He is a COMMON Hall of Fame speaker and a frequent speaker at user groups all over the world. In 2011, IBM established the Champions award for Power Systems. Pete was one of the first recipients. Recently, Pete was re-nominated as a Power Systems Champion in 2016.

Spreading the MAGIC of IBM i

MAGICOne of the newest Power Systems/IBM i users’ groups is the Mid-Atlantic Group of IBM i Collaborators – or MAGIC for short. Serving Virginia Beach and the Chesapeake Bay area, MAGIC brings education and networking to this community. To learn more about MAGIC, visit www.magic-ug.org.

Thank you to Laura Hamway for answering a few questions regarding the group.

Why do Power Systems and IBM i users need MAGIC now?

MAGIC and all user groups are needed to help assist the user base with the latest offerings in the IBM i world. Currently many users are not aware of technologies available on the i. For example, open source, PHP etc. Even the advancements in RPG, utilizing RDi. These developments play a significant role in staying current. Also, user groups are great for networking. The knowledge you can learn from your peers is tremendous, and these groups bring people together to share what they have done and what issues/challenges they may face.

What gives MAGIC it’s “magic”?

MAGIC is made up of very enthusiastic IBM i users, and they want to see the platform succeed and expand. We want to educate and bring more IBM i users together. Additionally, we want to share with everyone what a great platform this is and that the IBM i can do everything other platforms can do.

What are the most important IT issues facing MAGIC members?

Currently staffing is a huge concern for IBM i shops. The user group provides a place to learn new techniques on the IBM i, and in return, this opens up the talent pool. Taking advantage of PHP, .Net and other technologies means these IBM i shops do not need to only look for RPG talent. For individuals currently on the IBM i, this means you do not have to just work in RPG. You have an opportunity to learn and utilize other great technologies and enhance your skill level.

MAGIC covers a wide geographic area. How will the organization bring its members together?

Most meetings will be online with several satellite locations. All meetings will utilize webcam. The use of the webcam will make the meetings more personable. Attendees agree that watching a presenter while they are speaking is more engaging then just watching a screen and hearing a voice. We also utilize a webcam at the satellite locations so the presenters can see how the audience is reacting and if people have questions. This method has proven to be more interactive. With this methodology, we can reach a wider audience. If you are able to attend one of the satellite meetings – that is great. You get to network with your fellow IBM i peers. If you cannot make it to a satellite location, then you can participate online. Our focus is to get the most information out to all that want to participate.

Can you share a fun or inspiring story from one of your first events?

MAGIC ConferenceOur first annual event was in Virginia Beach, a two-day conference. The challenge was getting the word out. We were new and didn’t have a name yet, but we knew there were users that would benefit. Usually Virginia Beach is beautiful with fall weather temperatures in the 70s. We thought…what a great place to come for a conference, a small beach town. A hotel right on the beach! We confirmed Charlie Guarino as a speaker at the conference. He was excited to stay in the area with the beach and sunshine. Mike Larsen even extended his trip through the weekend to take in all the sites of Virginia Beach. Well, then Hurricane Matthew decided to threaten the area. The weather was horrible! It was windy with rain the entire time. Charlie luckily got out after the conference. I think Lee Paul was stuck due to weather, and Mike got to spend the weekend in a flooded hotel! It was a conference to remember!

Besides the weather, with some cancelling due to the storm, we had a great turn out. The event was a success, and the users were fired up about all the possibilities on the i. They couldn’t wait to start a new user group. During the conference, we had a competition to see who could come up with the name for the group. Tom Rainey suggested MAGIC – Mid-Atlantic Group of IBM i Collaborators.

MAGIC is holding a Modernization Seminar on March 30, 2017. Click here to learn more.