Wednesday, September 30, 2015

Data Structure arrays are cool, but have some limitations

data structure lookup subarr xfoot

I have given examples of Data Structure arrays in other posts, and while I use them I have found a few frustrating gotchas. Data Structures arrays were introduced in V5R1, back in 2001. In my opinion they are a more mature approach to handling data within a Data Structure than multiple occurrence Data Structures. And it surprised me how few of my colleagues knew about them.

Coding them is simple, I just have to add the DIM keyword on the line that defines the Data Structure with the number of elements I desire:

End of Support for IBM i 6.1

Today, September 30 2015, marks the end of support for IBM i 6.1. It became available March 21 2008 and has been the second longest supported release of the operating system, for 7 years 6 months and 9 days. You can see a list of all the operating system releases with their dates here.

If you are still using 6.1 you need to think about moving to a later release, as further upgrades and PTFs not available for you.

IBM's notification of the end of support for 6.1 can be found here.

This leaves 7.1 and 7.2 as the only supported releases of IBM i.

Wednesday, September 23, 2015

Build Views and Views of Views

sql view of views

Have you ever had one of those "Aha!" moments when, as we say in England, the penny drops when someone says something and you are left thinking: "Why didn't I think of that?" I had one of those moments at the OCEAN user group technical conference during a presentation by Paul Tuohy on embedded SQL in RPG.

I have described before what SQL Views are. If you look at the object attribute it is a "LF", but it is not Logical file. Confused?

Tuesday, September 22, 2015

New TRs coming soon for IBM i ?

ibmi 7.1 tr11 and 7.1 tr11 coming soon

I was surfing through IBM's developerWorks website looking for information about a Technology Refresh, TR, when I noticed that pages for IBM i 7.1 TR11 and 7.2 TR3 are now on that website.

Monday, September 21, 2015

More proof that RPGIII is done

cpf6301 odt

On Friday I was asked if I could help with a compilation error for a RPGIII program. When the source was compiled it produced a CPF6301 message, see below, and the programmer could not understand what it meant or how to fix it.

  Message . . . . : Program PGM1 in library LIB1 is not created as
  CPF6301 received.
  Cause . . . . . : Compile terminated in phase QRGRT at MI instruction 
  number '00000'X with message CPF6301. Text for message is: ERROR IN 

Wednesday, September 16, 2015


lookup %lookup

I am sure most of us RPG developers have thought when a Built In Function, BIF, is introduced to replace an Operation code it would work the same way. Earlier this week I encountered a situation where it did not, where the %LOOKUP BIF can give different results to using the LOOKUP operation code.

The Look Up Operation and BIF are used to find a value in an array. I had a program where I was adding elements to an array and using %LOOKUP to determine the first unused element in the array, which I could then use to determine the number of used elements in the array. The program passed testing and was deployed on to the production IBM i server. When being used in the production environment the program stopped being able to determine where the first unused element was. After plenty of head scratching and debugging the code I finally determined the cause of the problem, the %LOOKUP.

Wednesday, September 9, 2015

Putting the SQL options into the source

sqlrpgle set options commit

For many releases of IBM i we have been able to put keyword in the H-spec/Control options that are the same as the parameters in RPG's compile options, see here. The same is also available in SQL for RPG objects with embedded SQL, SQLRPGLE.

I have given some examples in the past of using the SET OPTION statement in SQL to turn off commitment control. There are a multitude of other options that mirror options in the SQLRPGLE compile commands. I am not going to list all of the options in this post as IBM provides them all on their web site, there is a link at the bottom of this article to the page. I am only going to show what I think are the most useful.

Friday, September 4, 2015

Video: Node js, DB2, and RPG talking at last

This video was produced by COMMON Europe of a presentation given by Aaron Bartell on how Node.js can interface with DB2 and RPG on the IBM i.

Wednesday, September 2, 2015

Having a timeout on screen

dspf time out invite waitrcd maxdev

The germ for this post came from a comment made by Glenn Gundermann on last week's Display screens of results without having to press Enter:

How would you do it for the times you don't want to lock the keyboard? You might want to have a screen being displayed to allow the user to do actions but if they don't, perform an action after a timeout.

After a bit of playing I have a solution that will have a screen time out if someone does not press a key in a certain amount of time. This is just simple example to demonstrate the method I found. In the example the user will be presented with a screen they can either press Enter, F3 to exit, or do nothing. If they do nothing after two seconds the program will proceed and display a second screen.