Speeding Up Workflow WIth IBM RDi

IBM RDi can help you work faster. But you can’t just start using it and expect to experience huge increases in productivity. You have to know how to get the most out of this tool.

I use the following “tips” every day to increase my productivity.

The Outline View

Using the outline view allows you to navigate source quickly and accurately. Jump to the start of subroutines by clicking on them, or expand them to find all lines of code with an exsr for that subroutine.

Outline View in RDi Continue reading Speeding Up Workflow WIth IBM RDi

IBM RDi Shortcut Of The Day

Imagine you are editing some source in IBM i RDi. You are looking at an exsr statement and you have your cursor positioned on the subroutine name. There are two ways that I know of to jump to the subroutine. The first method involves the following steps:

  1. double click on the subroutine name to select it
  2. copy it with ctrl + v
  3. ctrl + home to get to the top of the source
  4. ctrl + f to open the search box
  5. ctrl + v to paste the subroutine in
  6. escape to close the search box
  7. shift + f4 to repeat find (because there are multiple exsr statements for this subroutine)

That seems like a lot of steps, but they are probably subconscious movements for you by now, after repeated use. If you are anything like me, it takes a matter of seconds to do the above. But what if there are lots of occurrences of the subroutine name (e.g. in comments or multiple exsr statements)? You have to keep pressing F16 until you finally arrive at the subroutine’s begsr. And then of course you risk going past it. Continue reading IBM RDi Shortcut Of The Day


The javascript split method splits a string into an array of substrings. Consider the following code:

var string1 = "blue+++green+++yellow+++fuchsia";
var colours = string1.split("+++");

The result is that colours is an array with elements that contain “blue”, “green”, “yellow” and “fuchsia”.

Wouldn’t it be great if there was a split built in function in RPGLE? Sorry, there isn’t. You will have to write your own.

Or copy mine: Continue reading RPGLE Split

RPGLE SQL Update A Substring

You are coding an rpgle program. Suppose you have a field that is 20 characters long and you want to update position 5 of it using embedded SQL. I know what you want to do. You want to

update yourFile set substr(field1, 5, 1) = ‘1’ where blah

But you can’t. It’s not allowed.

However, there is a shamefaced workaround that will get the job done: Continue reading RPGLE SQL Update A Substring

Commenting Source In RDi

I’m talking about commenting your source with references to projects. Each project we undertake is assigned a 5 digit project reference number. Code changes made for a particular project are commented with this reference. The reference number fits conveniently in positions 1 to 5 or the source, whether coding in fixed format or free.

Does this describe the way you annotate your code changes? If so, read on. Continue reading Commenting Source In RDi

SQLCODE = -507 SQLSTATE = 24501

You have probably specified that your SQL cursor is for read only, and then tried to update a row in your table using that cursor. If so, just replace the “for read only” bit of your cursor declaration with “for update”. It’s a bit like “update or delete without prior read or chain”.

…or it could be that you have defined multiple cursors for the same file, their use conditioned on different criteria, and you haven’t opened the cursor you are trying to update.


The cursor identified in the update or delete statement is not open. The application program attempted to execute an UPDATE or DELETE WHERE CURRENT OF cursor statement at a time when the specified cursor was not open.

Find In IBM RDi

The Find facility in IBM RDi might seem a little strange if you are coming from a green on black SEU background. In SEU you will type in the search term, press F16 and keep pressing F16 until you find the occurrence of the search term that you want.

In RDi, though, you will press ctrl + f to open up the search box and start typing. Matches are found without having to press F16. Imagine that you have found the first occurrence of the search term in RDi and you want to find the next. In SEU, you would press F16, but doing so in RDi causes weirdness. What you should do instead is either click the Next button (next to the Find box), or close down the Find box and then press F16. Continue reading Find In IBM RDi

Service Entry Points – Green On Black

We have a web application written in RPG. We have written RPG programs that construct the HTML, the finished pages get sent to the browser, and when the user performs an action, page variables are sent back to the server (the IBM i). There is a background job running in batch that processes these requests. If this background job is busy when another request arrives, a new background job is spawned. If there is a lot of activity, it’s not uncommon for a few background jobs to be running at the same time, each serving its own requests. Continue reading Service Entry Points – Green On Black