I wanted to add a field to an AS/400 database.

The programs affected by that change needed attention too. After editing their source, I also needed to compile them—to turn the source into a form the system could run.

One extra field. More than one task.

While talking about the days before I knew the file-change command CHGPF, I remembered another source of tedious work. (Laughs.)

My process at the time was to add the field, identify programs using that file, modify the ones that needed changes, and recompile the relevant programs.

The first chore was finding what needed to change.

PDM’s string search command, FNDSTRPDM, was handy. But if the search covered my saved copies, it also picked up earlier versions I had kept with suffixes like SV1 and BKP.

I was looking for candidates to modify. Now I had another job: sorting the saved copies out of the results. Annoying. (Laughs.)

So I wrote SRCHWRD. It searched source members for a string under conditions I specified. I also gave it an option to check whether a compiled object from a matching member existed. I wanted that extra clue when deciding which matches to look at.

Once I knew what to change, I needed to keep a copy of the original. I would copy the source member and append a numbered suffix such as Snn. For a few members, that was easy enough.

But on an AS/400 system that had been running for more than 30 years, who could remember the last number they had used? Look it up, copy the member, give it a name. Repeating that got tedious too.

So I turned the job of saving a copy into a command called SAVSRC.

Of course, I still made the necessary changes. Then came another troublesome job: compiling.

Some of my RPG programs used file overrides to change which files they referred to or how they used them. For those programs, I also had to establish the required settings when compiling. Otherwise, compilation failed.

Quite a few of my programs had rather specialised arrangements.

My own doing, admittedly. (Laughs.)

I had built the mechanism, and now I had to prepare its environment again and again.

Nor did I want to miss a program and encounter a puzzling problem later. Disliking the work was no excuse to skip it.

So I built a project batch-compilation tool.

A friendly gray-haired man in a green shirt organises blank cards beside a monitor with abstract green lines.
AI-generated conceptual illustration of the author's fictional stand-in organising work. Not a portrait, historical scene or actual tool screen.

For each project member, I could register the settings needed for compilation. The tool would execute those settings automatically when compiling.

Instead of recalling the preparation every time, I put the required settings into the tool.

When I wanted to edit one source member, it could open SEU, the source editor, by passing parameters to STRSEU. If compilation produced an error, it would open SEU automatically too.

Sometimes I wanted to work through the project as a batch. Sometimes I wanted to fix just one member. I wanted both within reach.

RPG, RPGLE, CL and CLLE were managed there, along with display-file definitions, DSPF, and command definitions, CMD.

What began as a compilation tool had acquired an entrance to editing—and another entrance for dealing with errors. (Laughs.)

Find what needs changing, save a copy, then compile after the edit. Around the job of adding a single field, I had built several tools to make the work less tedious.

I dislike tedious work enough to spend time building tools to avoid it.

A rather complicated personality, when you put it that way. (Laughs.)

Technical note and references

Technical note: IBM documents applying overrides during compilation to select external data definitions, and using STRSEU to edit source members. These references confirm general platform capabilities; they do not independently verify the implementation or behaviour of my old tool.

Checked November 7, 2026.

WRITTEN BYYoshio Taki

IBM i / AS/400 System Engineer