Opportunities, Not Problems!
February 7, 2007 Ted Holt
The code accompanying this article is available for download
One of my former bosses would often greet me with the phrase, “We have an opportunity.” I suppose he didn’t like the word problem. A recent problem I faced turned out to be a great opportunity. The utility I developed has turned out to be handy, and I thought you might like to have it in your toolbox.
It all started when a CL program that I had written blew up because the value of a variable was in mixed case (i.e., “Print”) instead of uppercase (“PRINT”). An IF command in a CL program was testing the variable against a fully uppercase PRINT and determining that the two values were not equal. I had not foreseen the possibility that the value might not be all uppercase and did not plan accordingly. (Just call me shortsighted.) Besides, there is no built-in function or command in the CL language to convert a value to uppercase, and had I thought about it, I would not have wanted to write an RPG program just to capitalize one trifling variable.
I wrote a command to convert a character value to all uppercase. I shrewdly and cannily named it UPPERCASE. (Well, not really. I shrewdly and cannily named it something else, but in this article it’s shrewdly and cannily named UPPERCASE). You can find the source code for the UPPERCASE command and the RPG program that it runs (simply named CASE) in the downloadable code that accompanies this article.
Here’s an example of the UPPERCASE command at work in a CL procedure.
dcl &PrintOpt *char 64 dcl &PrintTest *char 64 uppercase value(&PrintOpt) tovar(&PrintTest) if (&PrintTest *eq PRINT) do
Isn’t that nice? The case of the value of the print option is immaterial in the IF condition.