Monday, June 29, 2026

Migrate While Active Redbook

Migrate While Active, MWA, is one of the more exciting features recently introduced for IBM Power hardware and the IBM i operating system. It is tool that helps me to move IBM i workloads to new servers, data centers, or the cloud with near-zero downtime.

Basically MWA is performed in three steps:

  1. Background Copy: A copy of the partition is made, while the source partition is fully online and active.
  2. Data Sync: It constantly synchronizes all data changes from the live system to the copy.
  3. Cutover: Once both match, I make the switch to the new partition.

This results in almost no interruption in service.

Thursday, June 25, 2026

IBM Bob Premium Package for i released

Today the first significant update for IBM Bob, the AI-development tool for IBM i has been released.

It is called IBM Bob Premium Package for i

You can read the announcement, that gives you all the details on the new features, here.

There is also an Overview page, that includes the link to download it, here.

You do have to be using IBM Bob 2.0.0 to use IBM Bob Premium Package for i.

After the first paragraph in the Overview document is a button to "Copy Markdown". I strongly recommend you do. I clicked the button and then pasted what was copied into Notepad. The markdown contains all kinds of useful information to successfully install the new version.

Within markdown are some paths to further documentation. As paths do not include the domain I have for your convenience done so below:

Wednesday, June 24, 2026

Calculating the number of seconds for a time

I have to admit this was a strange request. Interfacing data to another application is no big deal, but the way it wanted its date and time data formatted was. It wanted a character date, in *MDY format with the date separator characters, character time, with dots as the separator character, and an integer of the number of seconds that the time represented.

I could calculate the seconds as:

TotalSeconds = (Hours x 3600) + (Minutes x 60) + Seconds

Fortunately I stumbled across a SQL scalar function that would do this for me: MIDNIGHT_SECONDS. This returns the number of seconds that the time represents. Which is exactly what I am looking for.

I can demonstrate this with the following SQL statement:

Monday, June 22, 2026

Another anniversary for IBM i and IBM Power

Yesterday, Sunday June 21 2026, was the 38th anniversary of when the ancestor of the IBM Power and IBM i, AS/400, was first announced. Excitement was high as the advancements made to create AS/400 were ground breaking, many other maufactures spent years developing the equivalent technologies into their hardware and software.

Over the past 38 years a lot has changed, the AS/400 evolved through different forms, and names, before becoming the IBM Power server back in 2008.

Does this mean that the "AS/400" is old and outdated? The Power servers can run several different operating system, including IBM i. With the modern IBM i operating system we can emulate the AS/400, and this advanced operating system can do so much more than the AS/400, and its operating system OS/400, ever could.

I think I did a good job describing this history for the 35th anniversary. If you are interested in learning more what AS/400 was, and what it has become, read the story here.

Happy birthday IBM Power and IBM i! May you have many more!

Wednesday, June 17, 2026

Program to alert when jobs' CPU percentage becomes too high

I was asked if there was a way to alert if a job exceeded a certain threshold of CPU percentage. The IBM i operating system collects data through Collection Services. Navigator for i and Performance Data Investigator, PDI, can be used to analyze CPU heavy jobs, but this is all historical data there is no real time alerting.

There are various tools from ISV that can do this. For this website I always write about solutions using just what comes in the IBM i operating system, with no third party software.

This problem allows me to use one of my favorite Db2 for i table function, ACTIVE_JOB_INFO. This table function allows me to retrieve information about all of the active jobs on my partition.

Wednesday, June 10, 2026

RPGPGM.COM becomes a teenager

Another year milestone has been reached as I celebrate the 13th birthday of RPGPGM.COM. It has been an incredible personal journey since I have published that first post in 2013. Your feedback and encouragement have made all the effort I have spent worthwhile.

What has happened to me in the past twelve months?

Wednesday, June 3, 2026

Determining the Ordinal date with SQL

A friend asked me if there was a simple way to calculate the "Julian" date when retrieving dates from a DDL table or DDS file with a date type field.

Before I continue I need to describe the difference between the Julian and the Ordinal dates. While we all call a date in YYYYDDD a "Julian" date, that is not correct. The Julian date is a count of days since January 1, 4713 BCE. I found this helpful link describing why it is this date. The correct name for the YYYYDDD date is the Ordinal date, which is recognized by the ISO 8601 standard.

Db2 for i includes a Julian day scalar function. The statement below show me using it with the date June 1, 2026:

01  VALUES JULIAN_DAY('2026-06-01')

The result is: