<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for RPG and Programming</title>
	<atom:link href="http://www.rpgandprogramming.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rpgandprogramming.com</link>
	<description>Not Role Playing Games, but the RPG programming language and the craft of programming.</description>
	<pubDate>Sat, 11 Sep 2010 02:04:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>Comment on Time Marches On by Buck</title>
		<link>http://www.rpgandprogramming.com/2010/08/time-marches-on/#comment-653</link>
		<dc:creator>Buck</dc:creator>
		<pubDate>Tue, 24 Aug 2010 15:40:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=236#comment-653</guid>
		<description>I don't ever translate fixed to /free.  Fixed RPG is a separate language, with its own nuances.  /free RPG is a separate language, with its own nuances.  Simply re-formatting it as /free doesn't magically transform the fixed form nuances into /free form nuances.  MOVE is one of those op-codes that is so overloaded that it can be very difficult to understand unless you are intimately familiar with the fields involved.  Is MOVE CHAR5 CHAR7 intentionally leaving those two bytes intact, or did the original programmer mean MOVE(P)?  Not easy enough to automate, that's for sure, no matter what toolkit is involved.

It's interesting that you don't use service programs.  Yes, they do add another layer of complexity but for me at least, the calculus falls in favour.  I probably need to take a step back.  I like functions.  Rather than code CALL GTOJ PARM PARM, I like to see eval julian = gtoj(mmddyy)  I use functions because I think in functions, so the mapping makes personal sense to me.  

The chances that I'm going to use this function only once are vanishingly small, so I tend to put utility functions like this into a service program.  I've adopted a single signature rather than trying to keep multiple signatures and that has made my life a lot simpler.

I don't generally use functions vs CALL in order to tweak performance.  In our line of work, the only way tweaking calcs will buy you performance is when you've already tweaked the I/O.  I can recall one or two times in 32 years where I had to optimise calculations.  All the rest of my optimisation efforts go into reducing I/O.  Makes sense, right?  How many million calculations can the CPU do while it waits for the platter to spin around to the right sector?

I like functions because I think that way, and 10 characters just aren't enough to name a function properly.  I respect that other people have a different opinion, which is one reason I like reading your adventures.  Another view is always a good thing to have.

Thanks for sharing and thanks for this latest.  Always something to think about here.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t ever translate fixed to /free.  Fixed RPG is a separate language, with its own nuances.  /free RPG is a separate language, with its own nuances.  Simply re-formatting it as /free doesn&#8217;t magically transform the fixed form nuances into /free form nuances.  MOVE is one of those op-codes that is so overloaded that it can be very difficult to understand unless you are intimately familiar with the fields involved.  Is MOVE CHAR5 CHAR7 intentionally leaving those two bytes intact, or did the original programmer mean MOVE(P)?  Not easy enough to automate, that&#8217;s for sure, no matter what toolkit is involved.</p>
<p>It&#8217;s interesting that you don&#8217;t use service programs.  Yes, they do add another layer of complexity but for me at least, the calculus falls in favour.  I probably need to take a step back.  I like functions.  Rather than code CALL GTOJ PARM PARM, I like to see eval julian = gtoj(mmddyy)  I use functions because I think in functions, so the mapping makes personal sense to me.  </p>
<p>The chances that I&#8217;m going to use this function only once are vanishingly small, so I tend to put utility functions like this into a service program.  I&#8217;ve adopted a single signature rather than trying to keep multiple signatures and that has made my life a lot simpler.</p>
<p>I don&#8217;t generally use functions vs CALL in order to tweak performance.  In our line of work, the only way tweaking calcs will buy you performance is when you&#8217;ve already tweaked the I/O.  I can recall one or two times in 32 years where I had to optimise calculations.  All the rest of my optimisation efforts go into reducing I/O.  Makes sense, right?  How many million calculations can the CPU do while it waits for the platter to spin around to the right sector?</p>
<p>I like functions because I think that way, and 10 characters just aren&#8217;t enough to name a function properly.  I respect that other people have a different opinion, which is one reason I like reading your adventures.  Another view is always a good thing to have.</p>
<p>Thanks for sharing and thanks for this latest.  Always something to think about here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on But They Loved Her by Larry Holder</title>
		<link>http://www.rpgandprogramming.com/2008/05/but-they-loved-her/#comment-651</link>
		<dc:creator>Larry Holder</dc:creator>
		<pubDate>Tue, 27 Jul 2010 14:47:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=7#comment-651</guid>
		<description>Probably the bad programming was initially hidden by a small set of test data.  Which is why whenever possible I test on a full production set, real or cloned to a test system.  No reduction, no fudging.  I remember once in BASIC having to rewrite to use a shell-mezner (sp?) sort, as the classic bubble sort would have taken forever to complete on the full set of production data.</description>
		<content:encoded><![CDATA[<p>Probably the bad programming was initially hidden by a small set of test data.  Which is why whenever possible I test on a full production set, real or cloned to a test system.  No reduction, no fudging.  I remember once in BASIC having to rewrite to use a shell-mezner (sp?) sort, as the classic bubble sort would have taken forever to complete on the full set of production data.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on You don&#8217;t write compilers in COBOL by Larry Holder</title>
		<link>http://www.rpgandprogramming.com/2008/06/you-dont-write-compilers-in-cobol/#comment-650</link>
		<dc:creator>Larry Holder</dc:creator>
		<pubDate>Tue, 27 Jul 2010 14:34:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=10#comment-650</guid>
		<description>Long live COBOL (and RPG).  I wrote tons of COBOL / CICS during my early years with Wal-Mart DP in the early 80's (in what I call the "fun years").  Followed by more of the same here at UT Martin (before they switched to an Oracle-based application and the kludge they call PL/SQL).  COBOL will never die.  As far as functions, if I needed one, I wrote it in Assembler and called it (long live Assembler!) from COBOL.  I look at C and Java stuff and think, what a mess.  Those who dismiss COBOL or think it is dead or dying are quite misinformed.  And for doing what they are meant to do, COBOL and RPG are classic workhorses.  Ever seen a report written in C?  What a joke.  Long live COBOL!  Long live RPG!</description>
		<content:encoded><![CDATA[<p>Long live COBOL (and RPG).  I wrote tons of COBOL / CICS during my early years with Wal-Mart DP in the early 80&#8217;s (in what I call the &#8220;fun years&#8221;).  Followed by more of the same here at UT Martin (before they switched to an Oracle-based application and the kludge they call PL/SQL).  COBOL will never die.  As far as functions, if I needed one, I wrote it in Assembler and called it (long live Assembler!) from COBOL.  I look at C and Java stuff and think, what a mess.  Those who dismiss COBOL or think it is dead or dying are quite misinformed.  And for doing what they are meant to do, COBOL and RPG are classic workhorses.  Ever seen a report written in C?  What a joke.  Long live COBOL!  Long live RPG!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Bugged by the Debugger- and Larger Issues by Buck</title>
		<link>http://www.rpgandprogramming.com/2010/05/bugged-by-the-debugger-and-larger-issues/#comment-637</link>
		<dc:creator>Buck</dc:creator>
		<pubDate>Tue, 01 Jun 2010 15:50:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=227#comment-637</guid>
		<description>I'm not sure there ever was a single person who knew EVERYTHING about RPG, much less RPG II, RPG III, RPG/400 or ILE RPG.  Any suitably complex language/operating system combination has subtleties that are only revealed through experience.

That's one reason I keep adding to the Midrange wiki (http://wiki.midrange.com) - it can be pretty hard to find answers to questions like this.  The manual might document it, but finding the answer isn't always simple.  In this particular case, your instinct was correct: the H-specification keyword DEBUG is what you are after.  I tend to use DEBUG(*YES) which is equivalent to DEBUG(*INPUT: *DUMP)  That will show you unreferenced field contents.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure there ever was a single person who knew EVERYTHING about RPG, much less RPG II, RPG III, RPG/400 or ILE RPG.  Any suitably complex language/operating system combination has subtleties that are only revealed through experience.</p>
<p>That&#8217;s one reason I keep adding to the Midrange wiki (http://wiki.midrange.com) - it can be pretty hard to find answers to questions like this.  The manual might document it, but finding the answer isn&#8217;t always simple.  In this particular case, your instinct was correct: the H-specification keyword DEBUG is what you are after.  I tend to use DEBUG(*YES) which is equivalent to DEBUG(*INPUT: *DUMP)  That will show you unreferenced field contents.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Bugged by the Debugger- and Larger Issues by Curtis Barron</title>
		<link>http://www.rpgandprogramming.com/2010/05/bugged-by-the-debugger-and-larger-issues/#comment-635</link>
		<dc:creator>Curtis Barron</dc:creator>
		<pubDate>Tue, 01 Jun 2010 13:26:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=227#comment-635</guid>
		<description>Ralf,

Thanks for your comment. Actually, the optimization level is the default, *NONE, which makes all of this even more puzzling. I'm still grappling with the concept that the debugger even needs to be optimized. It sure couldn't be for speed.</description>
		<content:encoded><![CDATA[<p>Ralf,</p>
<p>Thanks for your comment. Actually, the optimization level is the default, *NONE, which makes all of this even more puzzling. I&#8217;m still grappling with the concept that the debugger even needs to be optimized. It sure couldn&#8217;t be for speed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Bugged by the Debugger- and Larger Issues by Ralf M Petter</title>
		<link>http://www.rpgandprogramming.com/2010/05/bugged-by-the-debugger-and-larger-issues/#comment-634</link>
		<dc:creator>Ralf M Petter</dc:creator>
		<pubDate>Tue, 01 Jun 2010 11:46:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=227#comment-634</guid>
		<description>What is the optimization level of this programm. For debugging it is best to compile with optimization level *none. On other optimization levels variable content may be inacurate.</description>
		<content:encoded><![CDATA[<p>What is the optimization level of this programm. For debugging it is best to compile with optimization level *none. On other optimization levels variable content may be inacurate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Who&#8217;s the Best Programmer Around? Not Me by Curtis Barron</title>
		<link>http://www.rpgandprogramming.com/2010/04/whos-the-best-programmer-around-not-me/#comment-625</link>
		<dc:creator>Curtis Barron</dc:creator>
		<pubDate>Tue, 04 May 2010 02:59:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=214#comment-625</guid>
		<description>I appreciate your interest, Bill. No, I would go totally bonkers if I had to write in RPGII or RPGIII again. But I am not one who is constantly hunting for the latest API to use. And, if you have followed my blog, you will notice that, while I am not against the use of freeform RPG (at least so the newbies won't be scared off), I am distinctly underwhelmed by the supposed advantages of it. I am pragmatic about what techniques I choose to learn.</description>
		<content:encoded><![CDATA[<p>I appreciate your interest, Bill. No, I would go totally bonkers if I had to write in RPGII or RPGIII again. But I am not one who is constantly hunting for the latest API to use. And, if you have followed my blog, you will notice that, while I am not against the use of freeform RPG (at least so the newbies won&#8217;t be scared off), I am distinctly underwhelmed by the supposed advantages of it. I am pragmatic about what techniques I choose to learn.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Who&#8217;s the Best Programmer Around? Not Me by Bill</title>
		<link>http://www.rpgandprogramming.com/2010/04/whos-the-best-programmer-around-not-me/#comment-618</link>
		<dc:creator>Bill</dc:creator>
		<pubDate>Fri, 23 Apr 2010 16:50:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=214#comment-618</guid>
		<description>I have to disagree with you both. 
While you are an older programmer, having learned your craft by years of experience, don't belittle that, or yourself! 
And you can learn new techniques... Having attempted a Cozzi web test and failed means nothing... you still learn by trial....
As for new kids these days: they may be taught the new techniques, the
better ideas and skills, with new RPGIV programming -- that doesn't mean they are yet programmers. They need the test of experience.
You sell yourself too short. Yes, your work doesn't call on using these new procedures very often -- I am confident that you can learn them, apply them, and have them working correctly. 
I would suggest you try more new coding APIs and applications in RPGIV.</description>
		<content:encoded><![CDATA[<p>I have to disagree with you both.<br />
While you are an older programmer, having learned your craft by years of experience, don&#8217;t belittle that, or yourself!<br />
And you can learn new techniques&#8230; Having attempted a Cozzi web test and failed means nothing&#8230; you still learn by trial&#8230;.<br />
As for new kids these days: they may be taught the new techniques, the<br />
better ideas and skills, with new RPGIV programming &#8212; that doesn&#8217;t mean they are yet programmers. They need the test of experience.<br />
You sell yourself too short. Yes, your work doesn&#8217;t call on using these new procedures very often &#8212; I am confident that you can learn them, apply them, and have them working correctly.<br />
I would suggest you try more new coding APIs and applications in RPGIV.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Who&#8217;s the Best Programmer Around? Not Me by Buck</title>
		<link>http://www.rpgandprogramming.com/2010/04/whos-the-best-programmer-around-not-me/#comment-603</link>
		<dc:creator>Buck</dc:creator>
		<pubDate>Tue, 13 Apr 2010 14:42:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=214#comment-603</guid>
		<description>Couldn't agree with you more.  

I estimate that I could teach a newcomer to the platform 90% of what it took me 30 years to learn in about 1 year.  That's using directed, intentional learning rather than the osmosis method that I 'used.'</description>
		<content:encoded><![CDATA[<p>Couldn&#8217;t agree with you more.  </p>
<p>I estimate that I could teach a newcomer to the platform 90% of what it took me 30 years to learn in about 1 year.  That&#8217;s using directed, intentional learning rather than the osmosis method that I &#8216;used.&#8217;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Adventure in Modernization by Buck</title>
		<link>http://www.rpgandprogramming.com/2010/01/adventure-in-modernization/#comment-597</link>
		<dc:creator>Buck</dc:creator>
		<pubDate>Tue, 02 Feb 2010 16:26:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.rpgandprogramming.com/?p=208#comment-597</guid>
		<description>Brian's comment about hiding complexity with a subprocedure reflects one of the major breakthroughs in my own personal development as a programmer.  I tend to naturally think in terms of functions rather than in code, so the idea of taking a complicated bit of code and converting it to a function / subprocedure was one of those AHA! moments for me.

Not everyone will see it that way, of course, but I thought I'd throw that out there :-)</description>
		<content:encoded><![CDATA[<p>Brian&#8217;s comment about hiding complexity with a subprocedure reflects one of the major breakthroughs in my own personal development as a programmer.  I tend to naturally think in terms of functions rather than in code, so the idea of taking a complicated bit of code and converting it to a function / subprocedure was one of those AHA! moments for me.</p>
<p>Not everyone will see it that way, of course, but I thought I&#8217;d throw that out there <img src='http://www.rpgandprogramming.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
</channel>
</rss>
