Ted Holt
Ted Holt is the senior technical editor at The Four Hundred and editor of the former Four Hundred Guru newsletter at Guild Companies. Holt is Senior Software Developer with Profound Logic, a maker of application development tools for the IBM i platform, and contributes to the development of new and existing products with a team that includes fellow IBM i luminaries Scott Klement and Brian May. In addition to developing products, Holt supports Profound Logic with customer training and technical documentation.
-
Use Your PDM Options with RSE
August 4, 2004 Hey, Ted
Like many other iSeries programmers and operations people, I have for years created PDM options to improve my work life. I was delighted to learn that the WebSphere Development Studio client, which I now use for program development, includes a counterpart to PDM options. In WDSc, they’re known as user actions. Here’s an illustration.
One of my common tasks is creating a backup copy of a source physical file member before making any modifications to it. I usually rename the member, then copy it to a new member of the original name. In this way, the backup member keeps the
-
Control Break Programs, Version 2
July 28, 2004 Hey, Ted
Ken Orr taught me this one. Assuming an input file called SALES that contains the daily sales of all stores sorted by store number, department number, and, finally, sales person number. The file also contains item number and sales amounts.
This example shows where to print headers and footers of a report (excluding page headers and page footers), where to accumulate totals, and where to reset totals. The basic structure is a set of nested loops.
EVAL CompanyTotal = 0 EXCPT REPORTHEADER READ SALES DOW not %eof(SALES) EXCEPT STOREHDR EVAL StoreTotal = 0 EVAL oldStoreNum = StoreNum DOW not %eof(SALES)
-
Adding New Parameters to RPG Programs
July 21, 2004 Hey, Ted
We have an RPG IV program that accepts one parameter. We need to add two more parameters. Our problem is that this program is called from several menus and many programs. Unless you have some trick up your sleeve, adding the new parameters will involve a lot of work outside of regular hours. Can you help?
–Bo
This is not a difficult situation to handle, Bo. There’s no trick to it, and this is a fundamental technique that everybody should know.
As long as you do not reference a parameter that is not passed to the program, the RPG program
-
Using Member Filters in Remote Systems Explorer
July 14, 2004 Hey, Ted
Thanks for publishing my filtering tip in Four Hundred Guru. I hope it helps people who are learning to use the LPEX editor. WebSphere Development Studio client’s Remote Systems view includes yet more filtering capabilities that put PDM to shame.
You can press F17 from one of the WRKxxxPDM screens to get a panel that allows you to subset the list of libraries, objects, or members. You can key a simple name or a generic name, with a leading asterisk, a trailing asterisk, or both, to restrict the list of names. RSE includes a similar option, with
-
Eliminate Unnecessary Access Paths
June 30, 2004 Hey, Ted
One could make the case that computing is of two types: CPU- and I/O-intensive. An example of the former is the generation of graphics for a movie. An example of the latter is information technology. This means that iSeries shops looking to improve performance should concentrate on reducing the amount of I/O that must take place.
Think about what happens when a record is added to, deleted from, or changed in a physical file. The database manager must examine every access path built over the file and adjust any that are affected by changes to the file. The more access
-
Updating Through an SQL Cursor
June 23, 2004 Hey, Ted
Thanks for the many SQL tips you and others provide in Four Hundred Guru. The more I learn about SQL, the more I like it. Maybe you can explain something I have yet to figure out. I have learned how to change a set of records in one fell swoop with the UPDATE command. What I have not learned how to do is to update a single record that was read through a cursor.
–Matt
SQL provides a special phrase, CURRENT OF, which you place in the WHERE clause. The words CURRENT OF, followed by the cursor name, refer
-
Effective Messaging, IBM’s Way
June 16, 2004 Hey, Ted
There is a major problem with using global Monitor Message (MONMSG) commands. If no one reads the job logs, the problem goes unnoticed and will not get fixed. Let me give you an example.
We had a standard date-handling program that had a global monitor message. During Y2K conversion, I removed the global MONMSG command, because I don’t believe in them. Guess what? We found a bug in this program that had gone unnoticed for years! Luckily there was no damage, because the buggy code was rarely executed.
My opinion of global monitor messages is that you should not
-
Query/400 and Multiple Detail Lines
June 2, 2004 Hey, Ted
Help! I need to add more fields to the detail line in Query/400, but the line is already full. Do I have to get another query tool?
–Jack
I’d recommend it. There are some good non-IBM query products on the market that have strong formatting abilities. But you can get through this crisis while you’re evaluating them.
Go ahead and select the additional fields on the “select and sequence fields” display. Select the fields in order by line and position. That is, select all of the fields that go on the first line, from left to right. Then select all
-
Calculate Ages with Query/400
May 26, 2004 Hey, Ted
I love to read Four Hundred Guru. It always contains great ideas and techniques!
We need to calculate an age using Query/400. The database file that we are using has an eight-digit zoned-decimal birthdate field, in the format YYYYMMDD. Can you help?
–Greg
You need to convert the zoned decimal field to a date field. Then you will be able to subtract it from the system date to get a date duration. A date duration is an eight-digit field representing years, months, and days. For more information about date durations, see my answer to Helen’s question.
The following
-
A Solution to the Numeric Parameter Problem
May 19, 2004 Hey, Ted
A common gripe I hear over and over again in midrange circles concerns the way numeric parameters of a CL CALL command are passed from the command line and from the CMD and RQSDTA parameters of the Submit Job (SBMJOB) command. I found a way around this problem.
A brief explanation of the problem seems in order. When a CALL command is executed within a CL program, variable parameters are passed as they are defined, but literals are passed with default formats.
- Character literals that are less than 32 characters are padded with blanks to a length of 32 characters.