 




<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Execution of One RPG program based on completion of another RPG Program</title>
	<atom:link href="http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/feed/" rel="self" type="application/rss+xml" />
	<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/</link>
	<description></description>
	<lastBuildDate>Sun, 19 May 2013 03:14:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102782</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Fri, 10 Feb 2012 21:37:54 +0000</pubDate>
		<guid isPermaLink="false">#comment-102782</guid>
		<description><![CDATA[&lt;i&gt;we submit these jobs from an interactive menu screen rather then executing the jobs in batch process.&lt;/i&gt;

A &quot;submitted&quot; job is a batch job. I assume that the statement means that each step is submitted interactively rather than having a complete &#039;process&#039; that controls when or if the next step starts.

A SBMJOB command includes a MSGQ() parameter. When the job completes, either a CPF1241 normal completion or a CPF1240 ended abnormally message will be sent to the message queue that you name on that parameter. The message data for those messages includes the fully-qualified name of the job.

Also, when a SBMJOB command runs, it returns a CPC1221 message to the job that does the submit. That message also contains a fully-qualified job name in its message data.

So, by creating a message queue for this sequence of steps and using its name on the SBMJOB commands, your interactive process can know which jobs are related to which steps, which ones have been submitted, which ones haven&#039;t completed yet, which ones completed normally and which ones ended abnormally.

Depending on exactly how you wanted all of it handled, a pretty robust external control could be set up. (Or a simple one.) Essentially none of the submitted programming would need any changing at all. The interactive menu would be where changes were made.

Tom]]></description>
		<content:encoded><![CDATA[<p><i>we submit these jobs from an interactive menu screen rather then executing the jobs in batch process.</i></p>
<p>A &#8220;submitted&#8221; job is a batch job. I assume that the statement means that each step is submitted interactively rather than having a complete &#8216;process&#8217; that controls when or if the next step starts.</p>
<p>A SBMJOB command includes a MSGQ() parameter. When the job completes, either a CPF1241 normal completion or a CPF1240 ended abnormally message will be sent to the message queue that you name on that parameter. The message data for those messages includes the fully-qualified name of the job.</p>
<p>Also, when a SBMJOB command runs, it returns a CPC1221 message to the job that does the submit. That message also contains a fully-qualified job name in its message data.</p>
<p>So, by creating a message queue for this sequence of steps and using its name on the SBMJOB commands, your interactive process can know which jobs are related to which steps, which ones have been submitted, which ones haven&#8217;t completed yet, which ones completed normally and which ones ended abnormally.</p>
<p>Depending on exactly how you wanted all of it handled, a pretty robust external control could be set up. (Or a simple one.) Essentially none of the submitted programming would need any changing at all. The interactive menu would be where changes were made.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: yorkshireman</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102776</link>
		<dc:creator>yorkshireman</dc:creator>
		<pubDate>Fri, 10 Feb 2012 16:35:47 +0000</pubDate>
		<guid isPermaLink="false">#comment-102776</guid>
		<description><![CDATA[As you are submitting a series of (individual) jobs, rather than a single job comprising the individual processes, you must ensure that your mechanism is able to handle recoveries correctly.
Suppose a job crashes and leaves your data area at status &#039;error&#039; - all jobs for evermore will not start. 

If these are in fact sequential processes, then as others have said, you have more security by controlling the execution and recovery within a single itemp of Control Language Program code (CLP - clue is in the name) 

Incidentally, an excellent choiuce for a return code is 7 bytes - you can retuirn a meesage ID, which gives you an immediate mens of informing the user of, what, 2500 bytes of helpful text, which can also be recorded in the joblog.  

If you wish to apply multiple parallel processes and ensure synchronicity you will need to be more imaginative.  Rather than the existence of a data area, set locks onto an object for the duration of a process.  Following processes check for the object being locked. If so, they wait.   As the lock will dissolve if the locking job fails, recovery/restart is automatic.  You will arange for completion codes to be used to ensure that a failing job doesn&#039;t then allow others to start.  
Naturally, you will be providing some form of audit file which records the start and end and results of each process - by timestamp, and this may form the basis of some control activity, or indeed be the entire control. 


Much simpler to write some trashy JCl that manages the whole thing in one go though.]]></description>
		<content:encoded><![CDATA[<p>As you are submitting a series of (individual) jobs, rather than a single job comprising the individual processes, you must ensure that your mechanism is able to handle recoveries correctly.<br />
Suppose a job crashes and leaves your data area at status &#8216;error&#8217; &#8211; all jobs for evermore will not start. </p>
<p>If these are in fact sequential processes, then as others have said, you have more security by controlling the execution and recovery within a single itemp of Control Language Program code (CLP &#8211; clue is in the name) </p>
<p>Incidentally, an excellent choiuce for a return code is 7 bytes &#8211; you can retuirn a meesage ID, which gives you an immediate mens of informing the user of, what, 2500 bytes of helpful text, which can also be recorded in the joblog.  </p>
<p>If you wish to apply multiple parallel processes and ensure synchronicity you will need to be more imaginative.  Rather than the existence of a data area, set locks onto an object for the duration of a process.  Following processes check for the object being locked. If so, they wait.   As the lock will dissolve if the locking job fails, recovery/restart is automatic.  You will arange for completion codes to be used to ensure that a failing job doesn&#8217;t then allow others to start.<br />
Naturally, you will be providing some form of audit file which records the start and end and results of each process &#8211; by timestamp, and this may form the basis of some control activity, or indeed be the entire control. </p>
<p>Much simpler to write some trashy JCl that manages the whole thing in one go though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: philpl1jb</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102763</link>
		<dc:creator>philpl1jb</dc:creator>
		<pubDate>Fri, 10 Feb 2012 09:06:22 +0000</pubDate>
		<guid isPermaLink="false">#comment-102763</guid>
		<description><![CDATA[Thanks for the feedback.
DATA AREA, excellent choice for the process that you&#039;ve described.
Phil]]></description>
		<content:encoded><![CDATA[<p>Thanks for the feedback.<br />
DATA AREA, excellent choice for the process that you&#8217;ve described.<br />
Phil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cursorposition</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102760</link>
		<dc:creator>cursorposition</dc:creator>
		<pubDate>Fri, 10 Feb 2012 07:08:06 +0000</pubDate>
		<guid isPermaLink="false">#comment-102760</guid>
		<description><![CDATA[Our meaning of successful is to ensure the job completed normally without any error message.  For the information of every one, we submit these jobs from an interactive menu screen rather then executing the jobs in batch process.
I would like to by Charlie&#039;s idea of using DTAARA and verify the status in DTAARA before executing the program.
Any other better alternative is welcome.]]></description>
		<content:encoded><![CDATA[<p>Our meaning of successful is to ensure the job completed normally without any error message.  For the information of every one, we submit these jobs from an interactive menu screen rather then executing the jobs in batch process.<br />
I would like to by Charlie&#8217;s idea of using DTAARA and verify the status in DTAARA before executing the program.<br />
Any other better alternative is welcome.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102759</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Fri, 10 Feb 2012 07:02:28 +0000</pubDate>
		<guid isPermaLink="false">#comment-102759</guid>
		<description><![CDATA[&lt;i&gt;Thanks for all suggestions.&lt;/i&gt;

There are good possibilities that haven&#039;t been mentioned yet. But the most important question from CharlieBrowne hasn&#039;t been answered -- &quot;What is the definition of sucessful?&quot;

When that&#039;s clear, it&#039;ll be much easier to know what to do.

Tom]]></description>
		<content:encoded><![CDATA[<p><i>Thanks for all suggestions.</i></p>
<p>There are good possibilities that haven&#8217;t been mentioned yet. But the most important question from CharlieBrowne hasn&#8217;t been answered &#8212; &#8220;What is the definition of sucessful?&#8221;</p>
<p>When that&#8217;s clear, it&#8217;ll be much easier to know what to do.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cursorposition</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102753</link>
		<dc:creator>cursorposition</dc:creator>
		<pubDate>Fri, 10 Feb 2012 02:56:54 +0000</pubDate>
		<guid isPermaLink="false">#comment-102753</guid>
		<description><![CDATA[Hi All,

Thanks for all suggestions.  I got the idea of what I need to do to achieve this.]]></description>
		<content:encoded><![CDATA[<p>Hi All,</p>
<p>Thanks for all suggestions.  I got the idea of what I need to do to achieve this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: woodengineer</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102733</link>
		<dc:creator>woodengineer</dc:creator>
		<pubDate>Thu, 09 Feb 2012 17:24:19 +0000</pubDate>
		<guid isPermaLink="false">#comment-102733</guid>
		<description><![CDATA[One technique we use in our shop is to call the program with a result parm.  A single character parm is typically big enough.  The program can load the parm with various results which you can check in your CL and determine if the next program should be called.  You could tailor a message to the user based on the value of the returned parm.]]></description>
		<content:encoded><![CDATA[<p>One technique we use in our shop is to call the program with a result parm.  A single character parm is typically big enough.  The program can load the parm with various results which you can check in your CL and determine if the next program should be called.  You could tailor a message to the user based on the value of the returned parm.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: danthedane</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102732</link>
		<dc:creator>danthedane</dc:creator>
		<pubDate>Thu, 09 Feb 2012 17:15:36 +0000</pubDate>
		<guid isPermaLink="false">#comment-102732</guid>
		<description><![CDATA[Look at this old thread which adresses your question:

&quot;CL/400 with restart option&quot;

http://itknowledgeexchange.techtarget.com/itanswers/cl400-with-restart-option/

DanF]]></description>
		<content:encoded><![CDATA[<p>Look at this old thread which adresses your question:</p>
<p>&#8220;CL/400 with restart option&#8221;</p>
<p><a href="http://itknowledgeexchange.techtarget.com/itanswers/cl400-with-restart-option/" rel="nofollow">http://itknowledgeexchange.techtarget.com/itanswers/cl400-with-restart-option/</a></p>
<p>DanF</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: teandy</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102728</link>
		<dc:creator>teandy</dc:creator>
		<pubDate>Thu, 09 Feb 2012 14:46:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-102728</guid>
		<description><![CDATA[As an extra safety precaution, I would submit the jobs to a single threaded jobq.  That way if one job crashes, the others will not run.]]></description>
		<content:encoded><![CDATA[<p>As an extra safety precaution, I would submit the jobs to a single threaded jobq.  That way if one job crashes, the others will not run.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: charliebrowne</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/execution-of-one-rpg-program-based-on-completion-of-another-rpg-program/#comment-102727</link>
		<dc:creator>charliebrowne</dc:creator>
		<pubDate>Thu, 09 Feb 2012 14:20:32 +0000</pubDate>
		<guid isPermaLink="false">#comment-102727</guid>
		<description><![CDATA[What is the definition of sucessful?
Program did not crash?
Or program did not able to perform all reauired functions because of a data issue?

If these programs cannot be put in a single CL because work needs to be done inbetween the jobs, I would create a file or *DTAARA that would be updated when a job completed sucessfully. Each program would check the file to see if it was OK to run.
If they are submitting from a menu, you can check the file when the SBMJOB is about to happen.
Also you should send out a message if one of the jobs fail. It should include the reason for the failure.]]></description>
		<content:encoded><![CDATA[<p>What is the definition of sucessful?<br />
Program did not crash?<br />
Or program did not able to perform all reauired functions because of a data issue?</p>
<p>If these programs cannot be put in a single CL because work needs to be done inbetween the jobs, I would create a file or *DTAARA that would be updated when a job completed sucessfully. Each program would check the file to see if it was OK to run.<br />
If they are submitting from a menu, you can check the file when the SBMJOB is about to happen.<br />
Also you should send out a message if one of the jobs fail. It should include the reason for the failure.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 6/8 queries in 0.018 seconds using memcached
Object Caching 395/396 objects using memcached

Served from: itknowledgeexchange.techtarget.com @ 2013-05-19 17:07:50 -->