<?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: Monitoring message CPF3390</title>
	<atom:link href="http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/feed/" rel="self" type="application/rss+xml" />
	<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/</link>
	<description></description>
	<lastBuildDate>Wed, 19 Jun 2013 19:19:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97403</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Tue, 04 Oct 2011 23:26:16 +0000</pubDate>
		<guid isPermaLink="false">#comment-97403</guid>
		<description><![CDATA[It helps when those asking the original questions show their code and are also willing to clarify when asked. Many problems need a dialog from both sides to work towards a solution. If there is willingness for a dialog, it&#039;s easier to stay with the question until it&#039;s solved. If there are no responses or the responses come days or weeks later, it eventually gets forgotten and lost.

You&#039;re welcome.

Tom]]></description>
		<content:encoded><![CDATA[<p>It helps when those asking the original questions show their code and are also willing to clarify when asked. Many problems need a dialog from both sides to work towards a solution. If there is willingness for a dialog, it&#8217;s easier to stay with the question until it&#8217;s solved. If there are no responses or the responses come days or weeks later, it eventually gets forgotten and lost.</p>
<p>You&#8217;re welcome.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: putzgrilla</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97340</link>
		<dc:creator>putzgrilla</dc:creator>
		<pubDate>Tue, 04 Oct 2011 02:31:30 +0000</pubDate>
		<guid isPermaLink="false">#comment-97340</guid>
		<description><![CDATA[&lt;pre&gt;
BINGO !

Thanks TOM, 

Now it´s works ! You are the Best, the Great, the Maximum !!!

Thanks for all too.

&lt;/pre&gt;]]></description>
		<content:encoded><![CDATA[<pre>
BINGO !

Thanks TOM, 

Now it´s works ! You are the Best, the Great, the Maximum !!!

Thanks for all too.

</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97339</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Tue, 04 Oct 2011 02:03:31 +0000</pubDate>
		<guid isPermaLink="false">#comment-97339</guid>
		<description><![CDATA[&lt;pre&gt; IF         COND(&amp;MSGID = ‘CPF3390′) THEN(GOTO +
              CMDLBL(STARTPRT))&lt;/pre&gt;

Start by changing this statement to:&lt;pre&gt;ChkMsg: IF         COND(&amp;MSGID = ‘ ′) THEN( return )&lt;/pre&gt;
When your message handler finds that there is no message ID returned from the RCVMSG command, then your program is done and it can RETURN.

But if your program does get a non-blank message ID, it needs to see if it is CPF3390. Now it can make that test:&lt;pre&gt; IF         COND(&amp;MSGID = ‘CPF3390′) THEN(GOTO +
              CMDLBL(STARTPRT))&lt;/pre&gt;
Right after that IF statement, you need to decide what to do about the message that you received. It&#039;s not CPF3390 and it wasn&#039;t a blank message ID. So what will you do about it? Well, mostly you are probably just going to skip it. That&#039;s a perfectly valid thing to do.

But if you skip it, you can&#039;t RETURN yet. You haven&#039;t received a blank message ID yet, so you haven&#039;t run out of messages. There are still other messages on the queue that you need to look at. To do that, you need to run RCVMSG again.

But you can&#039;t use the same one that you used before. The first RCVMSG had a message mark that was passed in by the system. You can&#039;t use the same message mark because you already received that message. You need to run a RCVMSG command that will get the message after the one that you just got:&lt;pre&gt;NextMsg: Qsys/rcvmsg     msgq( &amp;MsgQLib/&amp;MsgQ )              +
                  msgtype( *NEXT )                  +
                  msgkey( &amp;MsgMrk )                 +
                  wait( &amp;MsgWait )                  +
                  rmv( *NO )                        +
                  keyvar( &amp;NxtKey )                 +
                  msg( &amp;MsgTxt )                    +
                  msgdta( &amp;MsgDta )                 +
                  msgid( &amp;MsgId )                   +
                  sender( &amp;MsgSnd )                 +
                  senderfmt( *SHORT )               +
                  rtntype( &amp;MsgRtnTyp )
        chgvar     &amp;MsgMrk     &amp;NxtKey 
        goto  ChkMsg&lt;/pre&gt;
This RCVMSG says to get the msgtype( *NEXT ) message from the queue, i.e., the next one after msgkey( &amp;MsgMrk ). And after you get it, you&#039;ll set &amp;MsgMrk to the message key of this next message and go back up to check this next message. You need to replace the message mark in order to keep moving forward through the message queue.

Now, down at STARTPRT is where you will do your work:&lt;pre&gt;STARTPRT:  chgvar  &amp;JOBDEV  %sst( &amp;MsgDta  1 10)
        STRPRTWTR  DEV(&amp;JOBDEV)
        goto  NextMsg&lt;/pre&gt;
You extract the device from the message data, use the device to start your printer writer, then go back up to see if any more messages are on the message queue.

This program runs in a small loop looking at each message until there are no more messages to receive. When it runs out of messages, that&#039;s when it returns. After it returns, it won&#039;t do anything until a new message arrives on the queue. Then it will get called again and it&#039;ll start over.

If it runs out of messages, it RETURNS.
If it gets CPF3390, it starts the writer and then loops to get the next message.
If it gets any message other than CPF3390, it falls through and loops to get the next message.

But the logic is getting a little messy. See if you can put these statements into your existing program and post the changed version. There are a couple minor details that you will probably want to add, and they will make a lot more sense if the whole program is available.

Tom]]></description>
		<content:encoded><![CDATA[<pre> IF         COND(&amp;MSGID = ‘CPF3390′) THEN(GOTO +
              CMDLBL(STARTPRT))</pre>
<p>Start by changing this statement to:
<pre>ChkMsg: IF         COND(&amp;MSGID = ‘ ′) THEN( return )</pre>
<p>When your message handler finds that there is no message ID returned from the RCVMSG command, then your program is done and it can RETURN.</p>
<p>But if your program does get a non-blank message ID, it needs to see if it is CPF3390. Now it can make that test:
<pre> IF         COND(&amp;MSGID = ‘CPF3390′) THEN(GOTO +
              CMDLBL(STARTPRT))</pre>
<p>Right after that IF statement, you need to decide what to do about the message that you received. It&#8217;s not CPF3390 and it wasn&#8217;t a blank message ID. So what will you do about it? Well, mostly you are probably just going to skip it. That&#8217;s a perfectly valid thing to do.</p>
<p>But if you skip it, you can&#8217;t RETURN yet. You haven&#8217;t received a blank message ID yet, so you haven&#8217;t run out of messages. There are still other messages on the queue that you need to look at. To do that, you need to run RCVMSG again.</p>
<p>But you can&#8217;t use the same one that you used before. The first RCVMSG had a message mark that was passed in by the system. You can&#8217;t use the same message mark because you already received that message. You need to run a RCVMSG command that will get the message after the one that you just got:
<pre>NextMsg: Qsys/rcvmsg     msgq( &amp;MsgQLib/&amp;MsgQ )              +
                  msgtype( *NEXT )                  +
                  msgkey( &amp;MsgMrk )                 +
                  wait( &amp;MsgWait )                  +
                  rmv( *NO )                        +
                  keyvar( &amp;NxtKey )                 +
                  msg( &amp;MsgTxt )                    +
                  msgdta( &amp;MsgDta )                 +
                  msgid( &amp;MsgId )                   +
                  sender( &amp;MsgSnd )                 +
                  senderfmt( *SHORT )               +
                  rtntype( &amp;MsgRtnTyp )
        chgvar     &amp;MsgMrk     &amp;NxtKey 
        goto  ChkMsg</pre>
<p>This RCVMSG says to get the msgtype( *NEXT ) message from the queue, i.e., the next one after msgkey( &amp;MsgMrk ). And after you get it, you&#8217;ll set &amp;MsgMrk to the message key of this next message and go back up to check this next message. You need to replace the message mark in order to keep moving forward through the message queue.</p>
<p>Now, down at STARTPRT is where you will do your work:
<pre>STARTPRT:  chgvar  &amp;JOBDEV  %sst( &amp;MsgDta  1 10)
        STRPRTWTR  DEV(&amp;JOBDEV)
        goto  NextMsg</pre>
<p>You extract the device from the message data, use the device to start your printer writer, then go back up to see if any more messages are on the message queue.</p>
<p>This program runs in a small loop looking at each message until there are no more messages to receive. When it runs out of messages, that&#8217;s when it returns. After it returns, it won&#8217;t do anything until a new message arrives on the queue. Then it will get called again and it&#8217;ll start over.</p>
<p>If it runs out of messages, it RETURNS.<br />
If it gets CPF3390, it starts the writer and then loops to get the next message.<br />
If it gets any message other than CPF3390, it falls through and loops to get the next message.</p>
<p>But the logic is getting a little messy. See if you can put these statements into your existing program and post the changed version. There are a couple minor details that you will probably want to add, and they will make a lot more sense if the whole program is available.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: putzgrilla</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97338</link>
		<dc:creator>putzgrilla</dc:creator>
		<pubDate>Mon, 03 Oct 2011 23:59:17 +0000</pubDate>
		<guid isPermaLink="false">#comment-97338</guid>
		<description><![CDATA[&lt;pre&gt;
Ok, TOM

I have many printers, printer1,printer2,printer3...

When I receive the messae CPF3390 I need to know what printer was received that message. I do not know how to treat it in the CL program.

When I receive the message CPF3390 I start the printer, my CL will only be waiting for this message, the others will be discarded.

The printers has a queue called QUSRSYS / CHK_PRT.&lt;/pre&gt;]]></description>
		<content:encoded><![CDATA[<pre>
Ok, TOM

I have many printers, printer1,printer2,printer3...

When I receive the messae CPF3390 I need to know what printer was received that message. I do not know how to treat it in the CL program.

When I receive the message CPF3390 I start the printer, my CL will only be waiting for this message, the others will be discarded.

The printers has a queue called QUSRSYS / CHK_PRT.</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97331</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Mon, 03 Oct 2011 22:26:27 +0000</pubDate>
		<guid isPermaLink="false">#comment-97331</guid>
		<description><![CDATA[&lt;pre&gt; IF         COND(&amp;MSGID = ‘CPF3390′) THEN(GOTO +
              CMDLBL(STARTPRT))                    

STARTPRT:   STRPRTWTR  DEV(PRT_1)&lt;/pre&gt;

A specific problem with that is that there is no ELSE statement after the IF statement. If it doesn&#039;t GOTO STARTPRT, then it will fall through to STARTPRT. No matter what, when this program receives any message, it&#039;s going to run through STARTPRT.

If there is a problem that happens when the program runs or if the program doesn&#039;t run at all, we need to know what happens. If we don&#039;t know what the problem is, we don&#039;t know how to answer.

Tom]]></description>
		<content:encoded><![CDATA[<pre> IF         COND(&amp;MSGID = ‘CPF3390′) THEN(GOTO +
              CMDLBL(STARTPRT))                    

STARTPRT:   STRPRTWTR  DEV(PRT_1)</pre>
<p>A specific problem with that is that there is no ELSE statement after the IF statement. If it doesn&#8217;t GOTO STARTPRT, then it will fall through to STARTPRT. No matter what, when this program receives any message, it&#8217;s going to run through STARTPRT.</p>
<p>If there is a problem that happens when the program runs or if the program doesn&#8217;t run at all, we need to know what happens. If we don&#8217;t know what the problem is, we don&#8217;t know how to answer.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: putzgrilla</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97324</link>
		<dc:creator>putzgrilla</dc:creator>
		<pubDate>Mon, 03 Oct 2011 19:55:33 +0000</pubDate>
		<guid isPermaLink="false">#comment-97324</guid>
		<description><![CDATA[&lt;pre&gt;
Thanks Wood, but my version is V5R3, I don´t know cause this CL not works.

 IF         COND(&amp;MSGID = &#039;CPF3390&#039;) THEN(GOTO +   
              CMDLBL(STARTPRT))                    

STARTPRT:   STRPRTWTR  DEV(PRT_1)                            
            MONMSG     MSGID(CPF3310 CPA3387)                   
            STRPRTWTR  DEV(PRT_2)                            
            MONMSG     MSGID(CPF3310 CPA3387)                   
            STRPRTWTR  DEV(PRT_3)                           
            MONMSG     MSGID(CPF3310 CPA3387)&lt;/pre&gt;]]></description>
		<content:encoded><![CDATA[<pre>
Thanks Wood, but my version is V5R3, I don´t know cause this CL not works.

 IF         COND(&amp;MSGID = 'CPF3390') THEN(GOTO +   
              CMDLBL(STARTPRT))                    

STARTPRT:   STRPRTWTR  DEV(PRT_1)                            
            MONMSG     MSGID(CPF3310 CPA3387)                   
            STRPRTWTR  DEV(PRT_2)                            
            MONMSG     MSGID(CPF3310 CPA3387)                   
            STRPRTWTR  DEV(PRT_3)                           
            MONMSG     MSGID(CPF3310 CPA3387)</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: woodengineer</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97320</link>
		<dc:creator>woodengineer</dc:creator>
		<pubDate>Mon, 03 Oct 2011 17:01:08 +0000</pubDate>
		<guid isPermaLink="false">#comment-97320</guid>
		<description><![CDATA[Check out the STRWCH command.  We use it to handle a similar situation in our shop.

Bruce Vining published a good article about STRWCH and included a sample program.  Wish I could remember where it is.

Here is the first part of the help text:
The Start Watch (STRWCH) command starts the watch for event           
function, which notifies the user by calling a user specified         
program when the specified event (a message, a LIC log entry or PAL   
entry) occurs. PAL stands for Product Activity Log which shows        
errors that have occurred (such as in disk and tape units,            
communications, and work stations).]]></description>
		<content:encoded><![CDATA[<p>Check out the STRWCH command.  We use it to handle a similar situation in our shop.</p>
<p>Bruce Vining published a good article about STRWCH and included a sample program.  Wish I could remember where it is.</p>
<p>Here is the first part of the help text:<br />
The Start Watch (STRWCH) command starts the watch for event<br />
function, which notifies the user by calling a user specified<br />
program when the specified event (a message, a LIC log entry or PAL<br />
entry) occurs. PAL stands for Product Activity Log which shows<br />
errors that have occurred (such as in disk and tape units,<br />
communications, and work stations).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: putzgrilla</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97280</link>
		<dc:creator>putzgrilla</dc:creator>
		<pubDate>Sat, 01 Oct 2011 00:10:15 +0000</pubDate>
		<guid isPermaLink="false">#comment-97280</guid>
		<description><![CDATA[&lt;pre&gt;
Thanks for the help, I really wanted to monitor every time I received the message CPF3390  I execute the command STRPRTWTR with the name of the device that was in status * END&lt;/pre&gt;]]></description>
		<content:encoded><![CDATA[<pre>
Thanks for the help, I really wanted to monitor every time I received the message CPF3390  I execute the command STRPRTWTR with the name of the device that was in status * END</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: tomliotta</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97274</link>
		<dc:creator>tomliotta</dc:creator>
		<pubDate>Fri, 30 Sep 2011 22:54:19 +0000</pubDate>
		<guid isPermaLink="false">#comment-97274</guid>
		<description><![CDATA[&lt;pre&gt;            PGM        PARM(&amp;JOBNUM &amp;JOBNAME &amp;JOBDEV)  &lt;/pre&gt;
Is this the PGM statement from program TEST/PRT_GET? If so, where did you see that those should be the parameters? I suspect that they came from looking at the CPF3390 message description.

A &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frbam6%2Fbhprg.htm&quot;&gt;break-handling program&lt;/a&gt; receives three parameters.
&lt;ul&gt;
	&lt;li&gt;The first parameter is *CHAR (10). It will contain the name of the message queue that break-handler was attached to. A break-handler program can be attached to many different message queues, so it needs to know which message queue has the message that needs to be handled.&lt;/li&gt;&lt;li&gt;The second parameter is also *CHAR (10). It is the library of the message queue.&lt;/li&gt;&lt;li&gt;The third parameter is *CHAR (4). It will contain the &quot;message mark&quot; of the message that caused the break. When the break-handling program has all three parameters, it can use RCVMSG to receive a copy of the message that it needs to handle.&lt;/li&gt;
&lt;/ul&gt;

But you have the parameters named &amp;JOBNUM, &amp;JOBNAME and &amp;JOBDEV. The values that will be in those parameters won&#039;t be job number, job name and device.

As you can see in the joblog message, you put a value into &amp;JOBDEV that resulted in DEV(X&#039;000015E0000000000000&#039;). The first four bytes came from the message mark that the system passed into your program -- X&#039;000015E0&#039;. The remaining six bytes came from whatever was in memory after that, possibly random values.

If you need the device name, you need to receive the message that caused the break by using the message mark. Something like this:&lt;pre&gt;
Qsys/rcvmsg     msgq( &amp;MsgQLib/&amp;MsgQ )              +
                  msgkey( &amp;MsgMrk )                 +
                  wait( &amp;MsgWait )                  +
                  rmv( *NO )                        +
                  msg( &amp;MsgTxt )                    +
                  msglen( &amp;MSGLEN )                 +
                  msgdta( &amp;MsgDta )                 +
                  msgdtalen( &amp;MSGDTALEN )           +
                  msgid( &amp;MsgId )                   +
                  sender( &amp;MsgSnd )                 +
                  senderfmt( *SHORT )               +
                  msgf( &amp;MSGF )                     +
                  msgflib( &amp;MSGFLIB )               +
                  rtntype( &amp;MsgRtnTyp )&lt;/pre&gt;
You probably don&#039;t need to receive all of those parameters, but you should familiarize yourself with each of them. If you will be writing message handling programs, you&#039;re going to use them eventually if not in this program.

After receiving the message, you would test &amp;MsgId to see if it was a &#039;CPF3390&#039; message. If it was, you could probably get the device name from the &amp;MsgDta by taking the substring %SST(&amp;MSGDTA  1 10).

You can tell that those are the likely positions by looking at the message description for CPF3390. It shows three fields. The first field is *CHAR (10), and the message text shows that it is used as the &#039;job name&#039; portion of the qualified job name. You could also simply have your test program dump the &amp;MsgDta field so you could study it to figure out where the pieces are.

There may be more to it that you will want to do. You need to decide if you want to remove the message from the queue when you receive it or after you are done with or if you&#039;re going to leave it on the queue. If you don&#039;t remove it, you need to decide what your program might do when it starts the next time and runs across the message again. And you need to decide what to do when a second message shows up on the message queue when you break-handling program is already busy handling a message. And what will you do with messages that aren&#039;t CPF3390?

But first things first -- get your parameters defined appropriately and get the device name from the message data. And remove those four CHGVAR statements at the beginning that put values into your &amp;MSGDTA and &amp;MSGID variables. Let the RCVMSG command do that work.

Tom]]></description>
		<content:encoded><![CDATA[<pre>            PGM        PARM(&amp;JOBNUM &amp;JOBNAME &amp;JOBDEV)  </pre>
<p>Is this the PGM statement from program TEST/PRT_GET? If so, where did you see that those should be the parameters? I suspect that they came from looking at the CPF3390 message description.</p>
<p>A <a href="http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frbam6%2Fbhprg.htm">break-handling program</a> receives three parameters.</p>
<ul>
<li>The first parameter is *CHAR (10). It will contain the name of the message queue that break-handler was attached to. A break-handler program can be attached to many different message queues, so it needs to know which message queue has the message that needs to be handled.</li>
<li>The second parameter is also *CHAR (10). It is the library of the message queue.</li>
<li>The third parameter is *CHAR (4). It will contain the &#8220;message mark&#8221; of the message that caused the break. When the break-handling program has all three parameters, it can use RCVMSG to receive a copy of the message that it needs to handle.</li>
</ul>
<p>But you have the parameters named &amp;JOBNUM, &amp;JOBNAME and &amp;JOBDEV. The values that will be in those parameters won&#8217;t be job number, job name and device.</p>
<p>As you can see in the joblog message, you put a value into &amp;JOBDEV that resulted in DEV(X&#8217;000015E0000000000000&#8242;). The first four bytes came from the message mark that the system passed into your program &#8212; X&#8217;000015E0&#8242;. The remaining six bytes came from whatever was in memory after that, possibly random values.</p>
<p>If you need the device name, you need to receive the message that caused the break by using the message mark. Something like this:
<pre>
Qsys/rcvmsg     msgq( &amp;MsgQLib/&amp;MsgQ )              +
                  msgkey( &amp;MsgMrk )                 +
                  wait( &amp;MsgWait )                  +
                  rmv( *NO )                        +
                  msg( &amp;MsgTxt )                    +
                  msglen( &amp;MSGLEN )                 +
                  msgdta( &amp;MsgDta )                 +
                  msgdtalen( &amp;MSGDTALEN )           +
                  msgid( &amp;MsgId )                   +
                  sender( &amp;MsgSnd )                 +
                  senderfmt( *SHORT )               +
                  msgf( &amp;MSGF )                     +
                  msgflib( &amp;MSGFLIB )               +
                  rtntype( &amp;MsgRtnTyp )</pre>
<p>You probably don&#8217;t need to receive all of those parameters, but you should familiarize yourself with each of them. If you will be writing message handling programs, you&#8217;re going to use them eventually if not in this program.</p>
<p>After receiving the message, you would test &amp;MsgId to see if it was a &#8216;CPF3390&#8242; message. If it was, you could probably get the device name from the &amp;MsgDta by taking the substring %SST(&amp;MSGDTA  1 10).</p>
<p>You can tell that those are the likely positions by looking at the message description for CPF3390. It shows three fields. The first field is *CHAR (10), and the message text shows that it is used as the &#8216;job name&#8217; portion of the qualified job name. You could also simply have your test program dump the &amp;MsgDta field so you could study it to figure out where the pieces are.</p>
<p>There may be more to it that you will want to do. You need to decide if you want to remove the message from the queue when you receive it or after you are done with or if you&#8217;re going to leave it on the queue. If you don&#8217;t remove it, you need to decide what your program might do when it starts the next time and runs across the message again. And you need to decide what to do when a second message shows up on the message queue when you break-handling program is already busy handling a message. And what will you do with messages that aren&#8217;t CPF3390?</p>
<p>But first things first &#8212; get your parameters defined appropriately and get the device name from the message data. And remove those four CHGVAR statements at the beginning that put values into your &amp;MSGDTA and &amp;MSGID variables. Let the RCVMSG command do that work.</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: putzgrilla</title>
		<link>http://itknowledgeexchange.techtarget.com/itanswers/monitoring-message-cpf3390/#comment-97265</link>
		<dc:creator>putzgrilla</dc:creator>
		<pubDate>Fri, 30 Sep 2011 19:18:52 +0000</pubDate>
		<guid isPermaLink="false">#comment-97265</guid>
		<description><![CDATA[Hi Dave, thanks for your help.

I don´t  know, the parameters was passed after the job received the new message CPF3390.

When I receive the new message CPF3390 I nedd to get the name of device printer to start a command STRPRTWTR]]></description>
		<content:encoded><![CDATA[<p>Hi Dave, thanks for your help.</p>
<p>I don´t  know, the parameters was passed after the job received the new message CPF3390.</p>
<p>When I receive the new message CPF3390 I nedd to get the name of device printer to start a command STRPRTWTR</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 3/8 queries in 0.036 seconds using memcached
Object Caching 395/396 objects using memcached

Served from: itknowledgeexchange.techtarget.com @ 2013-06-19 22:38:01 -->