Sunday, May 29, 2016

New KnowledgeCenter

The new IBM's KnowledgeCenter is now online, and after a few minutes of using it I have to say that it is an improvement on the old. It has addressed both of the issues I had with the old version: web site speed and ease of search.

Friday, May 27, 2016

New KnowledgeCenter on Sunday

This morning when I went into IBM's KnowledgeCenter web site a pop up message, below, informing me that a "brand new" version of the site will be "live" on May 29.

Being a curious fellow I copied the URL to a new browser window to see what is coming in the new site (come on IBM this should have been a link, not just text). You don't have to copy that URL as you can just click here to reach the same destination.

The link goes to a blog post by James Roberts where he explains some of the improvements we will see:

Wednesday, May 25, 2016

Debug views finding your favorite

debug views of various compile commands

How many of us have considered the different types of debug views that are available with the create (compile) program and module commands? We may have customized the create commands when installing a new release or, if we are using PDM, created our own customized PDM option for the create command. After that we get lazy, and this includes me, and we just leave the parameters the way they are without bothering to check what the various options do. By doing this we miss out on some very useful features that would make our use of debug easier.

In this post I am just going to cover the following create commands and what the different debug views show:

Monday, May 23, 2016

The different flavors of free format RPG

different types of rpg free format programming

I am sure that I have confused readers with the names I call the different flavors of free format RPG. I thought it would be best to have a post where I describe each flavor, and then refer the reader to this post from others when I need to explain the differences.

Before I start I just want to explain that these are the names I call the different flavors. These might not be (probably definitely not) the names that IBM would call them, but I do call them this.

In my opinion there are three flavors of free format RPG:

Wednesday, May 18, 2016

Moving from Output specs to Printer files

printer files versus rpg output specifications

The end of the usefulness RPG's Output specifications, O-specs, was signaled by IBM when they did not give a free format equivalent when they gave us "free format definition" RPG, IBM i 7.1 TR7 in November 2013. If you start programming in "fully free" RPG, 7.2 TR1 and 7.1 TR11 November 2014, you will find that you cannot easily use non-free format code, such as O-specs. So this is the time to move away from O-specs and embrace printer files.

I am writing this post in response to a couple of people who contacted me asking about the differences in coding printer files, to O-specs, and how to write the RPG to use them. I know that there are tools to convert O-specs to externally described printer files, and I have used a couple myself. But this post is going to assume that this is a "vanilla" configuration of IBM i with none of those tools present.

Monday, May 16, 2016

From IBM: IBM i in the Modern World

I don't think I have seen the amount of publicity from IBM for a new IBM i release as there has been for 7.3 . There have been many blog posts and articles by IBM-ers all trumpeting the advantages and features of the new release.

The latest article I have found is by Alison Butterill, the Offering Manager for the IBM i operating system, extolling the operating system and its new release.

IBM i has developed a tried-and-true reputation to help companies avoid downtime and keep their businesses secure...

Multiple business applications can be run on the same server in the IBM i operating environment, simplifying management and in turn decreasing operational costs. Many IBM i clients have experienced a new low total cost of ownership (TCO) due to this simplification of operations...

Anticipating both client requirements and trends in the industry, IBM i continues to invest in strategies that enhance the database, optimize business analytics and further expand mobile access...

You can read her article here.

Wednesday, May 11, 2016

Soft coding values in SQL statements

I was recently asked was it possible to "soft code" values into SQL statements, i.e. pass different parameters to the same SELECT statement. This is something I do on a regular basis. I looked in this website and could not find an example, therefore, I decided to write this post to show three methods I have used.

All of these examples are in SQLRPGLE programs using fully free RPG, but these examples can be easily changed to be compatible with any of the earlier forms of the RPG language.

Monday, May 9, 2016

Example subfile program using modern RPG

rpg free subfile

Someone asked me if I could recommend an example simple subfile program written in "RPG/free". After a few minutes of Googling most of the examples I found were in RPGIII, a few were in fixed format RPGLE, and a couple had free format Calculations. This was rather disappointing as RPGLE is over 21 years old, free format calculations 14 years old, even free format definitions RPG is in its third year. All of the examples I found looked overly complicated for a beginner, so I decided to create this post showing a simple subfile program written in modern RPG.

The examples in this post are the way I would write a simple subfile program using totally free RPG. I am sure that my examples are not the way all other IBM i developers would write theirs. There are probably as many ways to write a subfile program as there are programmers who write them, each with his or her own coding peccadillos.

Wednesday, May 4, 2016

Global Variables a way to share data in a SQL session

sql create variable

Generations of RPG programmers have been able to store values that could be shared between programs by using the Local Data Area, LDA. Since IBM i 7.1 SQL has had the same functionality being able to share values between programs, procedures, etc within the same SQL session. A SQL session is not the same a job.

The simplest way I can think to describe when a SQL session starts is when the first SQL statement is executed in a program or procedure and ends when the program or procedure ends, or it starts when the STRSQL command is started and ends when I exit. I hope that is clear enough for you, and not confusing as it took me a few minutes to work out what it meant.