<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2667364103738328244</atom:id><lastBuildDate>Sat, 11 Feb 2012 15:22:29 +0000</lastBuildDate><category>SQTTABLE</category><category>DSN1LOGP</category><category>00C90084</category><category>DSNJU004</category><category>PFSHOW</category><category>IDCAMS</category><category>upgrade</category><category>DFHSTUP</category><category>Toad for DB2</category><category>Job</category><category>TRSMAIN</category><category>HEXLOC</category><category>SQL0270N</category><category>DSN1COPY</category><category>CETR</category><category>Partitionaed Data Set</category><category>sqlcode -970</category><category>PANELID</category><category>SCREENS</category><category>JCPUR</category><category>Abend</category><category>"-2079391743"</category><category>4K</category><category>DB2 V9</category><category>tso</category><category>cursorhold</category><category>Partitioned Database</category><category>Quest Central for DB2</category><category>00E70005</category><category>Visual Explain</category><category>ISRDDN</category><category>Load Plus</category><category>Aux Trace</category><category>DFHTU640</category><category>DBRM</category><category>DB2LOOK</category><category>ispf</category><category>Macro4</category><category>CRESTART</category><category>DB2_ALL</category><category>OPTIMIZE</category><category>NO APPLICABLE ++VER</category><category>Dataset</category><category>Global Zone</category><category>Expression</category><category>IP Address</category><category>MODIFY</category><category>-950</category><category>UNTERSE</category><category>DFHAC2206</category><category>DSNJU003</category><category>REGION</category><category>DSNL032I</category><category>FIRST_DAY</category><category>EXPORT</category><category>SDSF</category><category>sqloopen</category><category>Mainframe</category><category>SQL30081N</category><category>Omegamon</category><category>zparm</category><category>CA</category><category>locale</category><category>REORG</category><category>CICS</category><category>JOBLOG</category><category>Oracle</category><category>IEC146I</category><category>Repair</category><category>Empty</category><category>Package Table</category><category>PRINT</category><category>ICETOOL</category><category>PFL8013E</category><category>Index</category><category>DFHAUXT</category><category>DFHAC2261</category><category>DROP</category><category>SQLCODE</category><category>-741</category><category>SQLCODE 525</category><category>COMP</category><category>Timestamp</category><category>DB2 Connect</category><category>Size</category><category>DB2 UDB</category><category>BACKUP</category><category>SYSIBM</category><category>DB2CMD</category><category>PUT</category><category>VIEW</category><category>DSNJ113E</category><category>SYSLH203</category><category>SQL0290N</category><category>DBD</category><category>-331</category><category>Trace Master</category><category>Maintenance</category><category>JDBC</category><category>IMPORT</category><category>PTF</category><category>AZI6</category><category>INITIALIZE</category><category>RSU</category><category>EDM_SKELETON_POOL</category><category>POS</category><category>FOR SBCS DATA</category><category>SMP/E</category><category>EZMJOBR</category><category>SMP/E RECEIVE</category><category>SQLJ</category><category>gmail</category><category>CFG</category><category>EXEC</category><category>-518</category><category>SMP/E APPLY</category><category>Stored Procedure</category><category>MQ</category><category>SQL0805N</category><category>LOCATIONS</category><category>AEYB</category><category>LUW ID</category><category>Log</category><category>00C900A5</category><category>LUW</category><category>SMP/E ACCEPT</category><category>CONDBAT</category><category>DB2DIAG</category><category>PLT</category><category>Federated Tables</category><category>Federation</category><category>-904</category><category>PDSE</category><category>Task Center</category><category>X PROG</category><category>00D31034</category><category>JCL</category><category>Unload Plus</category><category>JCPU</category><category>CANCEL</category><category>LPAR</category><category>Save Window State</category><category>Mainview</category><category>Fast Load</category><category>INVMPSZ</category><category>UDB</category><category>DB2 LUW</category><category>SMF</category><category>Assembler</category><category>looping</category><category>COBOL</category><category>DB2</category><category>ADRSSU</category><category>00D35601</category><category>00D70024</category><category>Lotus Notes</category><category>DBMS</category><category>FOR BIT DATA</category><category>APF</category><category>-526</category><category>Patch</category><category>BMC</category><category>Computer Associates</category><category>EIBRESP</category><category>PROF</category><category>DBM</category><category>TERSE</category><category>DSQ16950</category><category>DFHPLT</category><category>IFASMFDP</category><category>Unique Index</category><category>SIT</category><category>CPU</category><category>DB2 z/OS</category><category>IBM Data Server Driver</category><category>ENQ</category><category>Function</category><category>PDS</category><category>Platinum</category><category>S04F</category><category>QMF</category><category>SYSLOG</category><category>NULL</category><category>Recovery</category><category>S04E</category><category>Hash Key</category><category>HIDE EXCLUDE</category><category>Fast Unload</category><category>UPPER</category><category>DDL</category><category>DSNDB07</category><category>z/OS</category><category>IPNAMES</category><category>ODBC</category><category>EIBRESP2</category><category>-804</category><title>Aji's Techie Tips</title><description>Mainframe Tips - includes COBOL, JCL, VSAM, DB2, CICS, 3rd party vendor tools (BMC, CA, IBM, Macro4, etc.)</description><link>http://ibm-mainframe-tips.blogspot.com/</link><managingEditor>noreply@blogger.com (Aji)</managingEditor><generator>Blogger</generator><openSearch:totalResults>68</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogspot/nLMW" /><feedburner:info uri="blogspot/nlmw" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-5804987956174276256</guid><pubDate>Sat, 21 Jan 2012 20:38:00 +0000</pubDate><atom:updated>2012-01-21T14:38:22.112-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">Expression</category><category domain="http://www.blogger.com/atom/ns#">DB2 V9</category><category domain="http://www.blogger.com/atom/ns#">Function</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">z/OS</category><category domain="http://www.blogger.com/atom/ns#">UPPER</category><category domain="http://www.blogger.com/atom/ns#">locale</category><category domain="http://www.blogger.com/atom/ns#">Index</category><title>DB2 for zOS Index on Expression</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
DB2 for z/OS version 9 brought in a new feature called "Index on Expression". Yes, you can create indexes on frequently used expressions in your queries. For example, if you often do a SELECT FIRST_NAME WHERE UPPER(LAST_NAME) = 'SMITH', then creating an index on UPPER(LAST_NAME) will be useful.&lt;br /&gt;
&lt;br /&gt;
Until V8, you can create index on just columns, not on expressions/functions etc. So, you would have created an index on LAST_NAME, but DB2 would have ignored it because when you use a function on a column, DB2 ignores index access. But starting in V9, you can create an index on UPPER(LAST_NAME) and DB2 will use this index.&lt;br /&gt;
&lt;br /&gt;
Now, to the tricky part ...&lt;br /&gt;
&lt;br /&gt;
I tried to create an index on UPPER(LAST_NAME), DB2 complained that I need to specify 'locale' name. After reading a little bit about 'locale names', I specified UPPER(LAST_NAME, 'En_US') and DB2 happily created the index. I also ran runstats on the table. However, when I did an explain on the query SELECT FIRST_NAME WHERE UPPER(LAST_NAME) = 'SMITH', DB2 didn't seem to pick up the newly created index. That puzzled me.&lt;br /&gt;
&lt;br /&gt;
After reading a little further, I found that I need to specify the same 'locale' in the query too. After specifying the 'locale', I did an explain and DB2 picked up the index. This is the modified query:&lt;br /&gt;
&lt;br /&gt;
SELECT FIRST_NAME WHERE UPPER(LAST_NAME, 'EN_US') = 'SMITH'&lt;br /&gt;
&lt;br /&gt;
Keywords: DB2, z/OS, Index, Expression, Upper, Locale, function&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-5804987956174276256?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n9V38erp84lyjAiCGdnLs5Bor6Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n9V38erp84lyjAiCGdnLs5Bor6Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n9V38erp84lyjAiCGdnLs5Bor6Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n9V38erp84lyjAiCGdnLs5Bor6Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/cAYwnsf28PQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/cAYwnsf28PQ/db2-for-zos-index-on-expression.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2012/01/db2-for-zos-index-on-expression.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-5168809344053197088</guid><pubDate>Wed, 19 Oct 2011 18:21:00 +0000</pubDate><atom:updated>2011-10-19T13:21:23.005-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Maintenance</category><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">CICS</category><category domain="http://www.blogger.com/atom/ns#">MQ</category><category domain="http://www.blogger.com/atom/ns#">SMP/E</category><category domain="http://www.blogger.com/atom/ns#">PUT</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">Global Zone</category><category domain="http://www.blogger.com/atom/ns#">RSU</category><category domain="http://www.blogger.com/atom/ns#">Patch</category><title>How to find the RSU or PUT level maintenance through SMP/E?</title><description>&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Usually, if you are working on a mainframe issue (DB2 or CICS or MQ or any mainframe stuff), and if you are dealing with a 3rd party vendor, they would ask the maintenance level or patch level or PUT level or RSU level of your system or product. How do you find the RSU/PUT level? &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you install your products through SMP/E, this is how you find this information.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Go to SMP/E panel, and enter SMCSI dataset (global zone data set) and select option 3 and hit enter. &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-5oG4iP1NpAU/Tp8RPlhZ5LI/AAAAAAAAADc/gOKT9dTrO9o/s1600/attachment2" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" rda="true" src="http://3.bp.blogspot.com/-5oG4iP1NpAU/Tp8RPlhZ5LI/AAAAAAAAADc/gOKT9dTrO9o/s400/attachment2" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Select option 3 from this screen and hit enter. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-p6jrovcTf00/Tp8RiwXv5fI/AAAAAAAAADk/n9eRdIkFOuc/s1600/attachment3" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" rda="true" src="http://2.bp.blogspot.com/-p6jrovcTf00/Tp8RiwXv5fI/AAAAAAAAADk/n9eRdIkFOuc/s400/attachment3" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Just hit enter again (no input for ZONE NAME). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Xp5USvHS3-I/Tp8RuHTRxkI/AAAAAAAAADs/MKl9LNiSN-I/s1600/attachment4" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" rda="true" src="http://4.bp.blogspot.com/-Xp5USvHS3-I/Tp8RuHTRxkI/AAAAAAAAADs/MKl9LNiSN-I/s400/attachment4" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Now select the region you are interested in. GLOBAL zone will show all the RSU that has been RECEIVED (it may or may not be APPLYed already). TARGET zone will show all the RSU that has been APPLYed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e.g., this screen shows the last maintenance applied (RSU1103), along with the previous maintenance:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/--ZSYzlemcM8/Tp8R5OMpoSI/AAAAAAAAAD0/rwJSkbXlKTU/s1600/attachment5" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" rda="true" src="http://1.bp.blogspot.com/--ZSYzlemcM8/Tp8R5OMpoSI/AAAAAAAAAD0/rwJSkbXlKTU/s400/attachment5" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-5168809344053197088?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5bkz_4sd9ZSxkFuR-cogb2B7AT4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5bkz_4sd9ZSxkFuR-cogb2B7AT4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5bkz_4sd9ZSxkFuR-cogb2B7AT4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5bkz_4sd9ZSxkFuR-cogb2B7AT4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/cXYw2YJrowM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/cXYw2YJrowM/how-to-find-rsu-or-put-level.html</link><author>noreply@blogger.com (Aji)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-5oG4iP1NpAU/Tp8RPlhZ5LI/AAAAAAAAADc/gOKT9dTrO9o/s72-c/attachment2" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2011/10/how-to-find-rsu-or-put-level.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-9008412739631582522</guid><pubDate>Sun, 28 Aug 2011 00:14:00 +0000</pubDate><atom:updated>2011-08-27T19:14:34.042-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">LPAR</category><category domain="http://www.blogger.com/atom/ns#">Omegamon</category><category domain="http://www.blogger.com/atom/ns#">DB2 V9</category><category domain="http://www.blogger.com/atom/ns#">zparm</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">EDM_SKELETON_POOL</category><category domain="http://www.blogger.com/atom/ns#">upgrade</category><category domain="http://www.blogger.com/atom/ns#">CPU</category><category domain="http://www.blogger.com/atom/ns#">Package Table</category><title>DB2 V9 for z/OS - New ZPARM EDM_SKELETON_POOL</title><description>&lt;span class="Apple-style-span" style="background-color: white; color: #454545; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: sans-serif;"&gt;I'm working on upgrading DB2 for zOS from V8 to V9. I completed upgrading it to V9 CM (Compatibility/Conversion Mode) in one of our PROD subsystems about 2 weeks ago and the next business day was horrible. The performance was bad for the entire subsystem. The LPAR CPU peaked to 98% of the total MIPS capacity.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: navy; font-family: sans-serif;"&gt;The activity rate against the SPT01 tablespace jumped several times and the CICS regions started sucking 20% more CPU. We noticed a few bad queries through Omegamon and we fixed them by either tweaking the stats or putting some new indexes. But that didn't bring down the CPU consumption much. The interesting part was, our zIIP engine started to peak at 100%, which usually stays at 40%. We found one query that had done a bunch of updates and got stuck - it was using a lot of CPU but was not doing any productive work. We cancelled this thread, but it wouldn't go away and the zIIP engine was still at 100%. Many more transactions/threads started to back log because of lack of CPU availability. The cancelled thread didn't die and still was burning CPU. We ended up cycling DB2 with a MODE(FORCE) command. Still, when DB2 came back, it started recovery of the cancelled thread, so we had to force kill it.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span id="yui_3_2_0_5_1314489434462108" style="color: navy; font-family: sans-serif;"&gt;When that thread was at last gone, we looked at the CPU rate, and it was right back at the 98% with the only exception that zIIP processor was at 75% level.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: navy; font-family: sans-serif;"&gt;We opened a Sev 1 PMR with IBM. As usual, they asked for dumps, SMF, RMF records etc. &lt;i&gt;[Rant On] I would have thought IBM provided a solution to try for a problem with such a mature product. But instead they were waiting on us to provide docs. [Rant Off]&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #454545; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: navy; font-family: sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #454545; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: navy; font-family: sans-serif;"&gt;Anyway, we did some more research and found that, in DB2 V9, copies of packages and plans have been moved from below the 2GB bar to above the bar. This is done through a new zparm called EDM_SKELETON_POOL. The&amp;nbsp;default value for this zparm is too low. So we increased it by 20 times. The system is in a much better shape now.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: navy; font-family: sans-serif;"&gt;This is from Omegamon for DB2:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #454545;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="color: navy;"&gt;Package Table (PT) Reqs &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1005483K&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: navy;"&gt;PT Loads &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;80073250&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: navy;"&gt;% of PT Loads from DASD &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7.96%&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #454545; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: navy; font-family: sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #454545; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: navy; font-family: sans-serif;"&gt;The "% of PT Loads from DASD" should be less than 10% for a healthy system. It was about 55% in our system before increasing the value of EDM_SKELETON_POOL. With any other virtual memory, make sure that there is enough physical memory to support this increase.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #454545; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: navy; font-family: sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: navy; font-family: sans-serif;"&gt;After this fix, the CPU looks much better but we are still seeing some runaway transactions or changed accesspath (which are not good in many cases). We're fixing them by rewriting the queries in most cases.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #454545; font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;span style="color: navy; font-family: sans-serif; font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-9008412739631582522?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I1wxwR9vyIExuHE7n7KevFKZ47g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I1wxwR9vyIExuHE7n7KevFKZ47g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I1wxwR9vyIExuHE7n7KevFKZ47g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I1wxwR9vyIExuHE7n7KevFKZ47g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/quY6dAavFJg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/quY6dAavFJg/db2-v9-for-zos-new-zparm.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2011/08/db2-v9-for-zos-new-zparm.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-1492034601470395449</guid><pubDate>Sun, 17 Apr 2011 03:52:00 +0000</pubDate><atom:updated>2011-04-16T22:52:10.841-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">LUW</category><category domain="http://www.blogger.com/atom/ns#">IPNAMES</category><category domain="http://www.blogger.com/atom/ns#">COBOL</category><category domain="http://www.blogger.com/atom/ns#">CFG</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">SQLCODE 525</category><category domain="http://www.blogger.com/atom/ns#">DBM</category><category domain="http://www.blogger.com/atom/ns#">UDB</category><category domain="http://www.blogger.com/atom/ns#">SYSIBM</category><category domain="http://www.blogger.com/atom/ns#">LOCATIONS</category><title>Accessing DB2 LUW table through a COBOL program on mainframe</title><description>If you are planning to write a COBOL program to access data from a table on DB2 LUW, you need to do the right setup first. I've described them here as much as I remember. If you get into any trouble, let me know, we can try to resolve it together. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Things to do on Mainframe DB2&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
Insert row in SYSIBM.LOCATIONS with these values &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;LOCATION - dbname &amp;lt;-- This is the DB2 LUW database name &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;LINKNAME - linkname &amp;lt;-- This is parent of a row in SYSIBM.IPNAMES or SYSIBM.LUNAMES (For this to work it needs to be the name of the DB on the UDB box, because this is how it determines which DB to connect to if that DB2 instance has more than one DB under it.) &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;IBMREQD - N &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;PORT - portnum &amp;lt;-- This is the connection port on the UDB box. To find this on AIX do: "cat /etc/services". The end of the file will have the connection port for the DB2 instance. On NT it will be 50000. &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;TPN - Leave this empty &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Insert row in SYSIBM.IPNAMES &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;LINKNAME - linkname This ties to a row in SYSIBM.LOCATIONS with column LINKNAME set to same &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;SECURITY_OUT - A A means Already verified &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;USERNAMES - &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;IBMREQD - N &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;IPADDR - nn.nn.nn.nn This is the IP address. You can find this by doing a ping command from a TSO command line or from a NT command prompt. (e.g. PING EXPLORER) &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Then the DDF address space must be stopped and restarted to pick up the changes made to the SYSIBM.IPNAMES, SYSIBM.LUNAMES. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Things to do on DB2 LUW&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
You need to update the DataBaseManager configuration which is at the DB2 Instance level. You can display the current settings with this command from a command line on NT or AIX &lt;br /&gt;
&lt;br /&gt;
DB2 GET DBM CFG | more &lt;br /&gt;
&lt;br /&gt;
Part of the output will look like this: &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Database manager authentication (AUTHENTICATION) = SERVER &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Cataloging allowed without authority (CATALOG_NOAUTH) = NO &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Trust all clients (TRUST_ALLCLNTS) = YES &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Trusted client authentication (TRUST_CLNTAUTH) = CLIENT &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
There are 2 parms that must be changed from the default to allow connecting from the host--AUTHENTICATION and TRUST_ALLCLNTS. Use the following commands to change these. The changes don't take effect until the db2 instance is stopped and started, so you may need to coordinate cycling the instance with applications and the server owner(s). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UPDATE DBM CFG USING AUTHENTICATION CLIENT &lt;br /&gt;
UPDATE DBM CFG USING TRUST_ALLCLNTS DRDAONLY &lt;br /&gt;
&lt;br /&gt;
To cycle the DB2 instance use DB2STOP After it stops do a DB2START. Its a good idea to do a DB2 LIST APPLICATIONS beforehand to see if there are any threads. You can use a FORCE command if you need to to kill any threads. &lt;br /&gt;
&lt;br /&gt;
On top of the above things, if you are writing a COBOL program on host and trying to connect to DB2 LUW, these steps must also be followed. &lt;br /&gt;
&lt;br /&gt;
1. BIND PACKAGE (luwdbname.collectionid) OWNER(CHGTMANP) ISOLATION(CS) QUALIFIER(ALIUPDP) MEMBER(programname) DYNAMICRULES(RUN) VALIDATE(BIND) SQLERROR(CONTINUE) ACTION(REPLACE) &lt;br /&gt;
&lt;br /&gt;
2. Make sure the above BIND statement doesn't fail on anything other than -204 (especially look for -551s, because this could lead to -525 at run time) &lt;br /&gt;
&lt;br /&gt;
3. Grant DBADM authority to the userid that is specified in the OWNER parameter of your BIND card &lt;br /&gt;
&lt;br /&gt;
4. Add the new "dabase.collection.*" to PKLIST on the plan that you will use to run your cobol program &lt;br /&gt;
e.g., &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;BIND PLAN(plan name) OWNER(owner) QUALIFIER(qualifier)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NODEFER(PREPARE) VALIDATE(BIND) ISOLATION(CS)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CACHESIZE(1024) CURRENTDATA(NO) DEGREE(1)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLRULES(DB2) ACQUIRE(USE) RELEASE(COMMIT)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXPLAIN(NO) REOPT(NONE) KEEPDYNAMIC(NO)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMMEDWRITE(NO) DBPROTOCOL(DRDA) ENCODING(37)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DISCONNECT(EXPLICIT)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PKLIST(collction1.*,+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collection2.*,+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; database.collection3.*)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENABLE(*)+ &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACTION(REPLACE) RETAIN &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
5. In the COBOL program, make sure the programmers are coding these in the right order: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SET CURRENT PACKAGESET = 'collectionname' &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;CONNECT TO :database-name &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
6. Give EXECUTE access to PUBLIC on the package on LUW for the first time it is bound. This should be done for each new package you create&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-1492034601470395449?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lH8k3X96kNAxYilXj2r3fpdlMwQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lH8k3X96kNAxYilXj2r3fpdlMwQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lH8k3X96kNAxYilXj2r3fpdlMwQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lH8k3X96kNAxYilXj2r3fpdlMwQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/nJTuAH7HJwY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/nJTuAH7HJwY/accessing-db2-luw-table-through-cobol.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2011/04/accessing-db2-luw-table-through-cobol.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-8206897938035198187</guid><pubDate>Sat, 26 Feb 2011 16:42:00 +0000</pubDate><atom:updated>2011-02-26T10:42:46.425-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">DB2 UDB</category><category domain="http://www.blogger.com/atom/ns#">Unique Index</category><category domain="http://www.blogger.com/atom/ns#">SQL0270N</category><category domain="http://www.blogger.com/atom/ns#">Hash Key</category><category domain="http://www.blogger.com/atom/ns#">DB2 LUW</category><category domain="http://www.blogger.com/atom/ns#">Partitioned Database</category><title>DB2 UDB Partitioned Database - Unique Index</title><description>In the absence of the DBA that usually works on DB2 UDB, I tried to create an unique index on a table that is defined on a partitioned database. I realized that it's not very straight forward to do so.&lt;br /&gt;
&lt;br /&gt;
From DB2 manual: "There are performance advantages to creating a table across several database partitions in a partitioned database environment. Creating a table that will be a part of several database partitions is specified when you are creating the table. There is an additional option when creating a table in a partitioned database environment: the distribution key. A distribution key is a key that is part of the definition of a table. It determines the database partition on which each row of data is stored.&lt;br /&gt;
&lt;br /&gt;
You must be careful to select an appropriate distribution key because it cannot be changed later. Furthermore, any unique indexes (and therefore unique or primary keys) must be defined as a superset of the distribution key. That is, if a distribution key is defined, unique keys and primary keys must include all of the same columns as the distribution key (they might have more columns)."&lt;br /&gt;
&lt;br /&gt;
This is where I&amp;nbsp;got totally lost "any unique indexes (and therefore unique or primary keys) must be defined as a superset of the distribution key. That is, if a distribution key is defined, unique keys and primary keys must include all of the same columns as the distribution key (they might have more columns)". I was trying create the unique index on a column which was not the hash key and I was getting an SQL0270N Reason Code 1. After including the hash key along with the other key, it worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-8206897938035198187?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/k_3tPU0EOH21YFt3s7swXOsbC3g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k_3tPU0EOH21YFt3s7swXOsbC3g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/k_3tPU0EOH21YFt3s7swXOsbC3g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k_3tPU0EOH21YFt3s7swXOsbC3g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/MiCyVWegd2g" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/MiCyVWegd2g/db2-udb-partitioned-database-unique.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2011/02/db2-udb-partitioned-database-unique.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-4848875183382183439</guid><pubDate>Wed, 12 Jan 2011 20:52:00 +0000</pubDate><atom:updated>2011-01-12T14:54:49.685-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">4K</category><category domain="http://www.blogger.com/atom/ns#">00C90084</category><category domain="http://www.blogger.com/atom/ns#">DSNDB07</category><category domain="http://www.blogger.com/atom/ns#">00C900A5</category><title>DB2 4K space filled up</title><description>&lt;span style="font-family: inherit;"&gt;It was a Friday night and I got a call around 2 AM from Operations people saying, a lot of applications are spewing some error message in DB2 Master address space. I saw these messages in DB**MSTR, which started about 30 minutes ago and still continuing.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pW69blxmvwo/TS4UEbiqiaI/AAAAAAAAADU/Wn_r5zioYu8/s1600/blog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="174" n4="true" src="http://4.bp.blogspot.com/_pW69blxmvwo/TS4UEbiqiaI/AAAAAAAAADU/Wn_r5zioYu8/s320/blog.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit; font-size: small;"&gt;I looked up both the reason codes 00C900A5 and 00C90084. The DB2 messages and codes guide said "Explanation: The temporary file with the page size shown in NAME is not available. An error was detected either during the opening of the page set or during the formatting of the header and the space map pages of the pageset. &lt;br /&gt;
&lt;br /&gt;
If the reason code appears in a DSNT500I message issued during the -START DATABASE command, the request fails. In either case, the temporary file function does not allocate any temporary file on the page set."&lt;br /&gt;
&lt;br /&gt;
I checked the 4K datasets DB2CAT.DSNDBC.DSNDB07.DSN4Kxx.I0001.A001. We've 6 of them. I checked the extents on these, and they had spanned for only one extent. So the problem must be something else. I decided to stop and start the 4K tablespaces and issued a STOP against these 6 tablespaces. However, they were in STOPP (Stop Pending) status for a long time. That's when I looked in Omegamon for DB2 and found that there were 4 threads that we running for a long time and had consumed millions of getpages, they were sorting large amounts of data, which means they were using up most of the 4K space. I killed these 4 threads and voila, all the 6 tablespaces stopped. I then issued the START command and started them. They came up without any hiccup and all the error messages stopped.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-4848875183382183439?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7fLrP_xfW81QiZJ0HFocAgAfXcM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7fLrP_xfW81QiZJ0HFocAgAfXcM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7fLrP_xfW81QiZJ0HFocAgAfXcM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7fLrP_xfW81QiZJ0HFocAgAfXcM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/6Lf6YQG5hCI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/6Lf6YQG5hCI/db2-4k-space-filled-up.html</link><author>noreply@blogger.com (Aji)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_pW69blxmvwo/TS4UEbiqiaI/AAAAAAAAADU/Wn_r5zioYu8/s72-c/blog.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2011/01/db2-4k-space-filled-up.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-3568379217754087201</guid><pubDate>Fri, 01 Oct 2010 16:43:00 +0000</pubDate><atom:updated>2010-10-01T12:27:24.907-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">-331</category><category domain="http://www.blogger.com/atom/ns#">FOR SBCS DATA</category><category domain="http://www.blogger.com/atom/ns#">FOR BIT DATA</category><category domain="http://www.blogger.com/atom/ns#">SQLCODE</category><title>SQLCODE -331</title><description>Recently I altered a tablespace CCSID from EBCDIC to UNICODE. This tablespace had a PLAN_TABLE in it. After altering the tablespace, I couldn't retrieve certain rows from this PLAN_TABLE. I started getting SQLCODE -331. The message appeared like this:&lt;br /&gt;&lt;br /&gt;"CHARACTER CONVERSION CANNOT BE PERFORMED BECAUSE A STRING, POSITION43 CANNNOT BE CONVERTED FROM 367 TO 37, REASON 12"&lt;br /&gt;&lt;br /&gt;Position 43 refers to column IBM_REQUIRED_DATA in the PLAN_TABLE. As a short term solution, I spaced out the value in this column and it fixed it. However, it kept appearing for different programs/queries. So, I altered the table column attribute for IBM_REQUIRED_DATA from "FOR SBCS DATA" to "FOR BIT DATA". It fixed the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-3568379217754087201?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-Eff8XitxeJLBnD1MZa6xtSS_0A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Eff8XitxeJLBnD1MZa6xtSS_0A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-Eff8XitxeJLBnD1MZa6xtSS_0A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Eff8XitxeJLBnD1MZa6xtSS_0A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/8ff7yUsAsoc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/8ff7yUsAsoc/sqlcode-331.html</link><author>noreply@blogger.com (Aji)</author><thr:total>3</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/10/sqlcode-331.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-6281969472156299251</guid><pubDate>Wed, 08 Sep 2010 01:02:00 +0000</pubDate><atom:updated>2010-09-07T20:05:20.256-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">NO APPLICABLE ++VER</category><category domain="http://www.blogger.com/atom/ns#">SMP/E RECEIVE</category><title>SMP/E error "NO APPLICABLE ++VER"</title><description>I was trying to apply a PTF BPEnnnn on a BMC product called "Snapshot Upgrade Feature". The SMP/E RECEIVE job failed with the message "NO APPLICABLE ++VER". It means that I do not have the correct version of the 'Base Product' on which I was trying to apply the PTF. I checked the technical bulletin that BMC sent me, it mentioned that I should be on Version 5.6 of the product to apply this product. I browsed my SMPPTFIN dataset and searched for the PTF BPEnnnn and found the FMID. It was one version prior to the one mentioned on the technical bulletin. It was clearly my mistake that I didn't read the technical bulletin clearly before doing a SMP/E RECEIVE, but I learnt something new.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-6281969472156299251?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/71SaAhnSM4qHOtz0dhNV25-Urvw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/71SaAhnSM4qHOtz0dhNV25-Urvw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/71SaAhnSM4qHOtz0dhNV25-Urvw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/71SaAhnSM4qHOtz0dhNV25-Urvw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/ovmXqiTGlHs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/ovmXqiTGlHs/smpe-error-no-applicable-ver.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/09/smpe-error-no-applicable-ver.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-553559427104062709</guid><pubDate>Sat, 03 Jul 2010 21:44:00 +0000</pubDate><atom:updated>2010-07-03T16:53:25.127-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">-518</category><category domain="http://www.blogger.com/atom/ns#">DB2 UDB</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">DB2 Connect</category><category domain="http://www.blogger.com/atom/ns#">DB2 LUW</category><category domain="http://www.blogger.com/atom/ns#">SQLCODE</category><title>SQLCODE -518</title><description>&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 16px; "&gt;The reason mentioned in the DB2 manual for SQLCODE -518 is "THE EXECUTE STATEMENT DOES NOT IDENTIFY A VALID PREPARED STATEMENT"&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 16px; "&gt;
&lt;br /&gt;You may get this SQLCODE for many reasons. I don't know them all. For me this is what happened. When I tried to connect to a remote DB2 database (on LUW) from a COBOL program on the mainframe, the CONNECT was successful. However when I tried to run an SQL on that database I got this SQLCODE.
&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 16px; "&gt;After researching for a while, I found that I had an existing SQL statement within EXEC SQL and END-EXEC. That worked good. But when I commented out one of WHERE clause statements (using * at column 7), it gave me this error. I moved the commented statement to the line after END-EXEC and it started working again.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 14px; line-height: 16px; "&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 16px;"&gt;Bottom line is DB2 doesn't like COBOL-like commented code inside EXEC SQL and END-EXEC when you are trying to run the SQL at a remote DB2 database.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-553559427104062709?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C_gstMY8P5K8CQ6s_5JPv059T3k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C_gstMY8P5K8CQ6s_5JPv059T3k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C_gstMY8P5K8CQ6s_5JPv059T3k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C_gstMY8P5K8CQ6s_5JPv059T3k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/h0KPE9uLtbM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/h0KPE9uLtbM/sqlcode-518.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/07/sqlcode-518.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-7137079127327622435</guid><pubDate>Tue, 20 Apr 2010 22:45:00 +0000</pubDate><atom:updated>2010-04-20T17:47:17.533-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">SQLCODE</category><category domain="http://www.blogger.com/atom/ns#">-804</category><title>SQLCODE -804</title><description>SQLCODE -804 means something messed up with the SQLDA. Since SQLDA is internally created by DB2 for static COBOL programs, it is possible for a COBOL subscript to overwrite SQLDA statements which are inserted by DB2 at the end of the Working Storage section.&lt;br /&gt;&lt;br /&gt;If your programmer complains about this sqlcode, have him/her increase the table size (increase the 'TIMES' parameter value) and recompile the program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-7137079127327622435?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AwRCvvEN_41Nn3Tui_FpPIp-7d4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AwRCvvEN_41Nn3Tui_FpPIp-7d4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AwRCvvEN_41Nn3Tui_FpPIp-7d4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AwRCvvEN_41Nn3Tui_FpPIp-7d4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/O1VheBy7df8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/O1VheBy7df8/sqlcode-804.html</link><author>noreply@blogger.com (Aji)</author><thr:total>3</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/04/sqlcode-804.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-8617256754253835601</guid><pubDate>Fri, 16 Apr 2010 16:23:00 +0000</pubDate><atom:updated>2010-04-16T11:27:03.989-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Task Center</category><category domain="http://www.blogger.com/atom/ns#">SQL0290N</category><category domain="http://www.blogger.com/atom/ns#">DB2_ALL</category><category domain="http://www.blogger.com/atom/ns#">DB2 LUW</category><category domain="http://www.blogger.com/atom/ns#">BACKUP</category><category domain="http://www.blogger.com/atom/ns#">DROP</category><title>DB2_ALL to run DB2 command on all partitions</title><description>DB2 LUW is all Greek and French to me. Today I was trying to rename a column name. I issued the DROP command, but I got the message "SQL0290N Table space access is not allowed." I checked the tablespace status, it was in 'backup pending' state. So I issued the BACKUP database tablespace command and the tablespace state showed normal. However, when I reissued the DROP command, I got the same SQL0290N.&lt;br /&gt;&lt;br /&gt;After some research, I found that on a partitioned database, issuing DB2 command from DB2 command line DOES NOT work on ALL partitions. I had to use DB2_ALL utility. However, DB2_ALL doesn't work from DB2 command line.&lt;br /&gt;&lt;br /&gt;So I invoked DB2 Task Center, created a new task and put in the following in the Command Script.&lt;br /&gt;&lt;br /&gt;DB2_ALL "DB2 BACKUP DATABASE database TABLESPACE tablespace ONLINE TOD:\DB2\BACKUP\database COMPRESS"&lt;br /&gt;&lt;br /&gt;Then saved this task, right clicked on it and clicked on Run Now. After it ran, checked the "Show Results" and confirmed that the backup was succesful. After that I reran the DROP and CREATE table command ssuccesfully.&lt;br /&gt;&lt;br /&gt;Phew !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-8617256754253835601?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ez2i5-1qPv-HVAU95R7nriX5Iog/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ez2i5-1qPv-HVAU95R7nriX5Iog/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ez2i5-1qPv-HVAU95R7nriX5Iog/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ez2i5-1qPv-HVAU95R7nriX5Iog/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/Ubp20-Zim5k" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/Ubp20-Zim5k/db2all-to-run-db2-command-on-all.html</link><author>noreply@blogger.com (Aji)</author><thr:total>1</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/04/db2all-to-run-db2-command-on-all.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-4859459723137997441</guid><pubDate>Fri, 05 Mar 2010 19:33:00 +0000</pubDate><atom:updated>2010-03-25T14:06:35.902-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Dataset</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">Empty</category><category domain="http://www.blogger.com/atom/ns#">JCL</category><category domain="http://www.blogger.com/atom/ns#">IDCAMS</category><category domain="http://www.blogger.com/atom/ns#">ICETOOL</category><title>JCL to find if a dataset is empty</title><description>In your batch job, if there is a need to check for empty dataset, you can do it using IDCAMS.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//*-------------------------------------------------------------------*/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//* This JCL is to find if a file is empty or not. If there are no    */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//* records, the return-code will be 4.                               */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//*-------------------------------------------------------------------*/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//STEP01   EXEC PGM=IDCAMS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//SYSPRINT  DD SYSOUT=*&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//IN1       DD DISP=SHR,DSN=your.dataset.name&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;//SYSIN     DD *&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;  PRINT INFILE(IN1) COUNT(001)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have ICETOOL at your site, you can use that as well.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//*-------------------------------------------------------------------*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//* This JCL is to find if a file is empty or not using ICETOOL.      */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//* If there are no records, the return-code will be 12               */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//*-------------------------------------------------------------------*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//STEP01  EXEC PGM=ICETOOL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//TOOLMSG  DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//DFSMSG   DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//IN       DD DISP=SHR,DSN=your.dataset.name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//TOOLIN   DD *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;COUNT FROM(IN) EMPTY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-4859459723137997441?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CCFd-grEIHVJhf2zU1zzI5x02d4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CCFd-grEIHVJhf2zU1zzI5x02d4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CCFd-grEIHVJhf2zU1zzI5x02d4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CCFd-grEIHVJhf2zU1zzI5x02d4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/DdpI7c8JLl4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/DdpI7c8JLl4/jcl-to-find-if-dataset-is-empty.html</link><author>noreply@blogger.com (Aji)</author><thr:total>7</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/03/jcl-to-find-if-dataset-is-empty.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-4403463539852301976</guid><pubDate>Wed, 10 Feb 2010 01:28:00 +0000</pubDate><atom:updated>2010-02-09T19:31:36.559-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gmail</category><title>Gmail Tips</title><description>I know, this post has nothing to do with mainframes, but I just thought I would pass this around in case anyone finds it useful.&lt;br /&gt;&lt;br /&gt;I've started using my gmail id very frequently because of all the good features it offers. However there are a few things that is missing from gmail. One of them is, you cannot sort the emails by Name, Subject, etc. But I found a way to do something to achieve similar results. Being a search giant, google seems to handle emails like another search item.&lt;br /&gt;&lt;br /&gt;To sort on label (folder) "DB2", type label:DB2 in the search field and click on Search Mail&lt;br /&gt;&lt;br /&gt;To sort on label (folder) "DB2" and Subject "DDL Lookup", type label:DB2 subject:DDL Lookup in the search field and click Search Mail&lt;br /&gt;&lt;br /&gt;To get all emails from "Aji", type From:Aji in the search field and click Search Mail&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-4403463539852301976?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4sumDbXSha2DKdKcI0ZXyddVLmc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4sumDbXSha2DKdKcI0ZXyddVLmc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4sumDbXSha2DKdKcI0ZXyddVLmc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4sumDbXSha2DKdKcI0ZXyddVLmc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/vW_Ca72-jVI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/vW_Ca72-jVI/gmail-tips.html</link><author>noreply@blogger.com (Aji)</author><thr:total>1</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/02/gmail-tips.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-557168245857106607</guid><pubDate>Sun, 07 Feb 2010 01:49:00 +0000</pubDate><atom:updated>2010-02-09T19:33:26.789-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">Unique Index</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">NULL</category><category domain="http://www.blogger.com/atom/ns#">Index</category><title>UNIQUE WHERE NOT NULL - Explained</title><description>I always had confusion over the meaning of indexes created with UNIQUE WHERE NOT NULL clause on DB2 for z/OS. The manuals don't seem to do a good job explaining it. I understand it now and here is how it works.&lt;br /&gt;&lt;br /&gt;It means its ok to have multiple rows with null values in columns included in the index, but its not ok to have rows where the combination of the columns included in the index is not unique and all the columns are not null. I tested this on a three column index. I was able to insert rows rows shown below just fine, the only duplicate exception I got was where column a, b, c were the same value for two different rows and none of the 3 columns contained a null value.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  COL1  COL2  COL3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  ----  ----  ----&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   A     B     C&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   A     B     -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   A     B     -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   A     -     -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   A     -     -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   -     -     -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   -     -     -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CREATE UNIQUE WHERE NOT NULL INDEX PRE.IDX1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       ON PRE.TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       (COL1   ASC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       ,COL2   ASC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       ,COL3   ASC)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       USING STOGROUP ASTERISK&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;             PRIQTY 12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;             SECQTY 10800&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;             ERASE NO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       FREEPAGE 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       PCTFREE 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       BUFFERPOOL BP1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       CLOSE YES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       PIECESIZE 2097152  K;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CREATE TABLE PRE.TEST&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       (COL1     CHARACTER(1)   FOR SBCS DATA WITH DEFAULT NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       ,COL2     CHARACTER(1)   FOR SBCS DATA WITH DEFAULT NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       ,COL3     CHARACTER(1)   FOR SBCS DATA WITH DEFAULT NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       IN DB.TS;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-557168245857106607?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AUYKr0bSjnu52I0YAMccr3zoUzA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AUYKr0bSjnu52I0YAMccr3zoUzA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AUYKr0bSjnu52I0YAMccr3zoUzA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AUYKr0bSjnu52I0YAMccr3zoUzA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/-dUmAARG-ys" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/-dUmAARG-ys/unique-where-not-null-explained.html</link><author>noreply@blogger.com (Aji)</author><thr:total>1</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/02/unique-where-not-null-explained.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-1146482394383307933</guid><pubDate>Fri, 22 Jan 2010 16:36:00 +0000</pubDate><atom:updated>2010-01-22T10:53:46.140-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PTF</category><category domain="http://www.blogger.com/atom/ns#">TERSE</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">ADRSSU</category><category domain="http://www.blogger.com/atom/ns#">SMP/E ACCEPT</category><category domain="http://www.blogger.com/atom/ns#">TRSMAIN</category><category domain="http://www.blogger.com/atom/ns#">UNTERSE</category><category domain="http://www.blogger.com/atom/ns#">SMP/E APPLY</category><title>SMP/E Errors</title><description>Well, I've been asked to install Omegamon XE for DB2 PM in our shop. I downloaded the required components from the IBM Shop z website and did a SMP/E RECEIVE. When I started the SMP/E APPLY (with CHECK option), I started getting all kinds of errors. I'm new to SMP/E, so I'll try to document what I find from my experience. It might be useful for those novices who have starting doing SMP/E installs.&lt;br /&gt;&lt;br /&gt;These are the steps I follow when I install a product or apply maintenance(PTF) on an existing product:&lt;br /&gt;&lt;br /&gt;1. If you are applying maintenance on an existing product, use ADRDSSU to backup ALL the datasets related to the product&lt;br /&gt;&lt;br /&gt;2. Download the product CBDBO/PTF from IBM Shop z series website to your PC&lt;br /&gt;&lt;br /&gt;3. FTP the product/PTF to mainframe&lt;br /&gt;&lt;br /&gt;4. If the PTF is in tersed (IBM way of compressing) format, UNTERSE using TRSMAIN program with UNPACK option - if you need a sample job to run TRSMAIN, please put your request in the comment section&lt;br /&gt;&lt;br /&gt;5. For new product installs, allocate SMP/E global zone and target/distribution datasets and all other related SMP/E datasets like SMPLOG, SMPPTS, SMPLTS, SMPMTS etc. Usually when you download the product,you'll get a sample job that allocates these datasets and defines them to the appropriate DD names. Go through the Program Directory to find info on the sample job. You may have to talk to your storage administrator about which volume to use for the new datasets.&lt;br /&gt;&lt;br /&gt;6. Run SMP/E APPLY job with CHECK option (CHECK option ensures that you do not update any datasets. In our shop we usually install new product in the "base" libraries and all PTFs in the "maintenance" libraries. After installing thePTFs in the maintenance libraries, if everything goes well, we copy them to the base libraries. With the CHECK option you can see which datasets will be updated and if you do see any issue with updating a particular dataset, you can change the DDDEF - DD definition - in SMP/E and resubmit the job with CHECK option)&lt;br /&gt;&lt;br /&gt;7. Run SMP/E APPLY job with CHECK option commented.&lt;br /&gt;&lt;br /&gt;8. After a satisfactory testing, run SMP/E ACCEPT with CHECK option (this is in most cases not necessary unless you are going to back out any changes - in my little experience, if I've to backout a PTF, I just RESTORE all the datasets from the ADRSSU backup taken before applying the PTF)&lt;br /&gt;&lt;br /&gt;Thanks for stopping by.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-1146482394383307933?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7b8_Th7dlMYZzi44zrGCTlqRbLI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7b8_Th7dlMYZzi44zrGCTlqRbLI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7b8_Th7dlMYZzi44zrGCTlqRbLI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7b8_Th7dlMYZzi44zrGCTlqRbLI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/gAP-Ghtu0Yk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/gAP-Ghtu0Yk/smpe-errors.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2010/01/smpe-errors.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-1182267995283770615</guid><pubDate>Thu, 10 Dec 2009 01:34:00 +0000</pubDate><atom:updated>2009-12-09T19:38:26.016-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">HEXLOC</category><category domain="http://www.blogger.com/atom/ns#">COBOL</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">Mainview</category><category domain="http://www.blogger.com/atom/ns#">JCPUR</category><category domain="http://www.blogger.com/atom/ns#">EZMJOBR</category><category domain="http://www.blogger.com/atom/ns#">looping</category><title>How to find if a COBOL program is looping, thru Mainview</title><description>If you want to know if a program is looping (on mainframe) and if you have Mainview for MVS, then&lt;br /&gt;1. Go to JCPUR which shows realtime job CPU utilization&lt;br /&gt;2. Place the cursor on the job you are interested in and hit enter&lt;br /&gt;3. It'll take you to EZMJOBR window&lt;br /&gt;4. Under SYSPROG Service, you'll find "MVScope CPU Tracing". Place your cursor there and hit enter&lt;br /&gt;5. Then place your cursor on "Begin CPU Trace" and hit enter. It'll start CPU tracing.&lt;br /&gt;6. Once it finishes, see if it shows any one particular statement. If so, it could mean, the program was in a loop during the trace period.&lt;br /&gt;7. Get the Offset info, go to the compile listing and search for the Offset under HEXLOC (you may not find the exact offset, but the one just before this value is good enough). Get the line number and get the statement that was in loop.&lt;br /&gt;&lt;br /&gt;Simple?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-1182267995283770615?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ls-UEgu4J-NO6WPUEwa3HLnYZ_s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ls-UEgu4J-NO6WPUEwa3HLnYZ_s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ls-UEgu4J-NO6WPUEwa3HLnYZ_s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ls-UEgu4J-NO6WPUEwa3HLnYZ_s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/7fV3eiHPHmQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/7fV3eiHPHmQ/how-to-find-if-cobol-program-is-looping.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/12/how-to-find-if-cobol-program-is-looping.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-942363471735354412</guid><pubDate>Mon, 26 Oct 2009 20:35:00 +0000</pubDate><atom:updated>2009-10-26T15:42:27.551-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2 UDB</category><category domain="http://www.blogger.com/atom/ns#">Quest Central for DB2</category><category domain="http://www.blogger.com/atom/ns#">Toad for DB2</category><category domain="http://www.blogger.com/atom/ns#">EXPORT</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">DB2 Connect</category><category domain="http://www.blogger.com/atom/ns#">IMPORT</category><category domain="http://www.blogger.com/atom/ns#">DB2CMD</category><title>Copy Data from DB2 for z/OS to DB2 for LUW (UDB)</title><description>One of the applications developer in our shop wanted to know if he can copy data from a mainframe DB2 table to DB2 UDB on LUW. Though there are several ways of doing it, this is the one suggested him assuming the table structure in z/OS and LUW are the same.&lt;br /&gt;&lt;br /&gt;1. Some of the tools that can be used to achieve this: Quest Central for DB2, Toad for DB2 or DB2CMD interface&lt;br /&gt;&lt;br /&gt;2. Connect to the mainframe database (CONNECT TO ssid) and issue the EXPORT command "EXPORT TO d:\file_name.ixf OF IXF MESSAGES d:\msg_export.txt SELECT *FROM prefix.table_name"&lt;br /&gt;Note: Don't forget to check the message file before moving onto the next step&lt;br /&gt;&lt;br /&gt;3. Connect to the LUW database and issue the IMPORT command&lt;br /&gt;"IMPORT FROM d:\file_name.ixf OF IXF MESSAGES d:\msg_import.txt INSERT INTO prefix.table_name"&lt;br /&gt;Note: Don't forget to check the message file&lt;br /&gt;&lt;br /&gt;It's that simple. But remember that this works well for relatively smaller tables. For larger tables, you may have to use the LOAD command with proper COMMIT COUNT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-942363471735354412?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IK6AwSBsBMXWEUHjWowsezVkQr8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IK6AwSBsBMXWEUHjWowsezVkQr8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IK6AwSBsBMXWEUHjWowsezVkQr8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IK6AwSBsBMXWEUHjWowsezVkQr8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/k4U-fWfThV4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/k4U-fWfThV4/copy-data-from-db2-for-zos-to-db2-for.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/10/copy-data-from-db2-for-zos-to-db2-for.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-5738743742853558505</guid><pubDate>Tue, 22 Sep 2009 21:18:00 +0000</pubDate><atom:updated>2009-09-22T16:23:24.942-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">DB2 UDB</category><category domain="http://www.blogger.com/atom/ns#">SYSLH203</category><category domain="http://www.blogger.com/atom/ns#">SQL0805N</category><category domain="http://www.blogger.com/atom/ns#">cursorhold</category><title>SQL0805N on DB2 package SYSLH203</title><description>If you get a SQL0805N on package SYSLH203 then an application is holding a large number of statements open. If this is not an application bug you can bind more packages to allow for more statements open at the same time.&lt;br /&gt;&lt;br /&gt;Depending on the type of statement you are executing, DB2 will use a particular package on the server. By default, DB2 creates three packages for each type of package. In this case NULLID.SYSLH2yy is reserved for statements with CURSORHOLD on and isolation level Cursor Stability. The package SYSLH203 means that DB2 is looking for the 4th package (200 is 1st, 201 is 2nd, etc) of this type, but it does not exist. You can create more packages on the server by connecting to the database and issuing the following bind command from the /sqllib/bnd directory:&lt;br /&gt;&lt;br /&gt;db2 bind @db2cli.lst blocking all grant public sqlerror continue CLIPKG 5&lt;br /&gt;&lt;br /&gt;Note: CLIPKG 5 will create 5 large packages, and will give you the package that your application is looking for, as well as one more in this case. This setting only applies to large packages (containing 384 sections). The number of small packages (containing 64 sections) is 3 and cannot be changed.&lt;br /&gt;&lt;br /&gt;To bind more CLI packages do the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Find a machine that has the version and fixpack of DB2 that you want to bind. You can map to the machine you're going to bind on and then:&lt;br /&gt;- Go to the D:\SQLLIB\BND directory in the DB2 Command Line Processor (DB2CMD)&lt;br /&gt;- Look for the *.BND files in the D:\SQLLIB\BND directory&lt;br /&gt;- Connect to the host via DB2 connect statement like: db2 connect to dbalias user userid&lt;br /&gt;- X:\sqllib\bnd&gt;db2 bind @db2cli.lst blocking all grant public sqlerror continue CLIPKG 30 to bind the max of 30 CLI packages. Range is 4 to 30.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-5738743742853558505?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qDqk0oeoFPh58-rSP4-NxUYIIig/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qDqk0oeoFPh58-rSP4-NxUYIIig/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qDqk0oeoFPh58-rSP4-NxUYIIig/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qDqk0oeoFPh58-rSP4-NxUYIIig/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/_panihQacLM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/_panihQacLM/sql0805n-on-db2-package-syslh203.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/09/sql0805n-on-db2-package-syslh203.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-215384304832957922</guid><pubDate>Tue, 15 Sep 2009 16:54:00 +0000</pubDate><atom:updated>2009-09-15T12:05:17.702-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">Repair</category><category domain="http://www.blogger.com/atom/ns#">REORG</category><category domain="http://www.blogger.com/atom/ns#">S04E</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">DBD</category><category domain="http://www.blogger.com/atom/ns#">00E70005</category><title>DB2 CREATE INDEX abended with S04E 00E70005</title><description>There is a couple of news items attached to this post:&lt;br /&gt;1. Today is the first anniversary of this blog&lt;br /&gt;2. This is the 50th post&lt;br /&gt;&lt;br /&gt;Well, now into the actual blog item ...&lt;br /&gt;&lt;br /&gt;My colleague was trying to drop an existing UNIQUE &amp;amp; CLUSTER index and recreate it after adding 3 new columns at the end of the table, with one of the new columns added to the index. However, the DDL failed with S04E reason code 00E70005.&lt;br /&gt;&lt;br /&gt;DB2 messages and codes manual had this info on this reason code: "A relational data system (RDS) subcomponent internal inconsistency was detected". It didn't make any sense. We suspected data issue first, so we REORGed the tablespace, and tried to create the index, but that didn't fix the problem. Next, we tried to repair the DBD using this JCL:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//*===============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//* Start the database in UT mode&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//*===============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//STEP0010   EXEC PGM=IKJEFT01,DYNAMNBR=20&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//STEPLIB    DD DSN=SYS2.DB2x.DSNLOAD,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSTSPRT   DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSPRINT   DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//LISTING    DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSUDUMP   DD DUMMY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSTSIN    DD *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  DSN SYSTEM(DB2x)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  -START DB(database) ACCESS(UT)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  END&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//*===============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//* Run REPAIR utility on the DBD&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//*===============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//STEP020 EXEC PGM=DSNUTILB,PARM='DB2x,utilid'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSPRINT DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSUDUMP DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSIN    DD  *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  REPAIR DBD REBUILD DATABASE database&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//*===============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//* Start the database in RW mode&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//*===============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//STEP0030   EXEC PGM=IKJEFT01,DYNAMNBR=20&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//STEPLIB    DD DSN=SYS2.DB2.DB2x.DSNLOAD,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSTSPRT   DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSPRINT   DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//LISTING    DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSUDUMP   DD DUMMY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;//SYSTSIN    DD *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  DSN SYSTEM(DB2x)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  -START DB(database) ACCESS(RW)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;  END&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;br /&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Even that didn't fix the problem. We were not very keen to open a ticket with IBM, since we wanted to fix the problem fast rather than debugging it. So as a last resort we dropped and recreated the tablespace (off course, we had saved the data). That fixed the problem. We don't know what caused it, but the problem is fixed !! I really hate when I don't know what caused the problem, and the fix is based trial-and-error method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-215384304832957922?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WdIk0q1lYFagurhXWxcRu4NzSQk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WdIk0q1lYFagurhXWxcRu4NzSQk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WdIk0q1lYFagurhXWxcRu4NzSQk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WdIk0q1lYFagurhXWxcRu4NzSQk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/532oM86F6MQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/532oM86F6MQ/db2-create-index-abended-with-s04e.html</link><author>noreply@blogger.com (Aji)</author><thr:total>1</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/09/db2-create-index-abended-with-s04e.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-4333500713563878639</guid><pubDate>Mon, 31 Aug 2009 17:46:00 +0000</pubDate><atom:updated>2009-08-31T12:53:07.965-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">sqlcode -970</category><category domain="http://www.blogger.com/atom/ns#">EXPORT</category><category domain="http://www.blogger.com/atom/ns#">sqloopen</category><category domain="http://www.blogger.com/atom/ns#">DB2DIAG</category><category domain="http://www.blogger.com/atom/ns#">"-2079391743"</category><title>sqloopen -2079391743 sqlcode -970</title><description>I bumped into this error message (sqloopen -2079391743) when I tried to run "EXPORT" utility on a DB2 UDB table on my AIX box. No SQLCODE displayed on the screen. I couldn't find much information on the net, however, when I learnt about the DB2DIAG command, it made life easy. I issued the following command:&lt;br /&gt;&lt;br /&gt;db2diag -rc -2079391743&lt;br /&gt;&lt;br /&gt;and I got exactly what I was looking for:&lt;br /&gt;&lt;br /&gt;Input ZRC string '-2079391743' parsed as 0x840F0001 (-2079391743).&lt;br /&gt;&lt;br /&gt;ZRC value to map: 0x840F0001 (-2079391743)&lt;br /&gt;&lt;br /&gt;V7 Equivalent ZRC value: 0xFFFFC601 (-14847)&lt;br /&gt;&lt;br /&gt;ZRC class : Non-Critical Media Error (Class Index: 4)&lt;br /&gt;&lt;br /&gt;Component: SQLO ; oper system services (Component Index: 15)&lt;br /&gt;&lt;br /&gt;Reason Code: 1 (0x0001)&lt;br /&gt;&lt;br /&gt;Identifer: SQLO_ACCD&lt;br /&gt;Identifer (without component): SQLZ_RC_ACCD&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Description: Access Denied&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Associated information: Sqlcode -970&lt;br /&gt;SQL0970N  The system attempted to write to a read-only file.&lt;br /&gt;        Number of sqlca tokens : 0&lt;br /&gt;        Diaglog message number: 8701&lt;br /&gt;&lt;br /&gt;I changed the datapath in my EXPORT command to a folder in which I had write access and the command ran fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-4333500713563878639?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/plHbA2dwwoZ4pmjLls_WPgmUe0w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/plHbA2dwwoZ4pmjLls_WPgmUe0w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/plHbA2dwwoZ4pmjLls_WPgmUe0w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/plHbA2dwwoZ4pmjLls_WPgmUe0w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/nMneQbzQ_Wg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/nMneQbzQ_Wg/sqloopen-2079391743-sqlcode-970.html</link><author>noreply@blogger.com (Aji)</author><thr:total>1</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/08/sqloopen-2079391743-sqlcode-970.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-4778131943865567431</guid><pubDate>Fri, 14 Aug 2009 02:47:00 +0000</pubDate><atom:updated>2009-08-13T21:54:23.983-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">DB2LOOK</category><category domain="http://www.blogger.com/atom/ns#">DDL</category><title>"DB2LOOK" to extract DDL from DB2 for z/OS</title><description>Many of you may be aware that "db2look" command can be used to extract DDL from DB2 UDB for LUW database. But do you know that you can use this command to extract DDL from a DB2 database for z/OS? Here is how you do it.&lt;br /&gt;&lt;br /&gt;1. Bring up a db2cmd prompt (press Start button on your PC, click Run, type db2cmd and hit enter)&lt;br /&gt;2. Connect to your mainframe DB2 subsystem using the command "db2 connectto SSID user USERID". It'll prompt for the password. Enter the password and hit enter&lt;br /&gt;3. Issue the following command:&lt;br /&gt;db2look -d SSID -i USERID -w PWD -e -a -l -x -p -o FILENAME.TXT&lt;br /&gt;&lt;br /&gt;The options specified extracts the following info:&lt;br /&gt;&lt;br /&gt;-e ==&gt; Extract DDL statements for database objects. DDL for the followingdatabase objects are extracted when using the -e option: Tables, Views, Automatic summary tables (AST), Aliases, Indexes, Triggers, Sequences, User-defined distinct types, Primary key, referential integrity, and check constraints, User-defined structured types, User-defined functions, User-defined methods, User-defined transforms, Wrappers, Servers, User mappings, Nicknames, Type mappings, Function templates, Function mappings, Index specifications, Stored procedures&lt;br /&gt;&lt;br /&gt;-a ==&gt; When this option is specified the output is not limited to the objects created under a particular creator ID. All objects created by all users are considered. For example, if this option is specified with the -e option, DDL statements are extracted for all objects in the database. If this option is specified with the -m option, UPDATE statistics statements are extracted for all user created tables and indexes in the database.&lt;br /&gt;Note: If neither -u nor -a is specified, the environment variable USER isused.&lt;br /&gt;&lt;br /&gt;-l ==&gt; If this option is specified, then the db2look utility will generate DDL for user defined table spaces, database partition groups and bufferpools.&lt;br /&gt;&lt;br /&gt;-x ==&gt; If this option is specified, the db2look utility will generate authorization DDL (GRANT statement, for example).&lt;br /&gt;&lt;br /&gt;More info is available in the DB2 V8 LUW Command Reference: &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsptopic=/com.ibm.db2.udb.doc/core/r0002051.htm" target="_blank"&gt;http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsptopic=/com.ibm.db2.udb.doc/core/r0002051.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-4778131943865567431?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j-3xYrXEuXeVtv5dw7KShMFesiM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j-3xYrXEuXeVtv5dw7KShMFesiM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j-3xYrXEuXeVtv5dw7KShMFesiM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j-3xYrXEuXeVtv5dw7KShMFesiM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/w0WQtVyDyKI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/w0WQtVyDyKI/db2look-to-extract-ddl-from-db2-for-zos.html</link><author>noreply@blogger.com (Aji)</author><thr:total>2</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/08/db2look-to-extract-ddl-from-db2-for-zos.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-3043296638851290034</guid><pubDate>Fri, 31 Jul 2009 21:14:00 +0000</pubDate><atom:updated>2009-08-07T13:14:26.018-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IFASMFDP</category><category domain="http://www.blogger.com/atom/ns#">CICS</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">SMF</category><category domain="http://www.blogger.com/atom/ns#">DFHSTUP</category><category domain="http://www.blogger.com/atom/ns#">SIT</category><title>How to find the number of times a CICS program was used in a day?</title><description>CICS has a very handy tool called "Statistics Utility Program" - DFHSTUP. If you want to know how many times a program was used in a particular day, run this program at the end of the day.&lt;br /&gt;&lt;br /&gt;It prepares and prints reports offline, using the CICS statistics data recorded on the MVS system management facilities (SMF) SYS1.MANx data sets. To enable the CICS statistics domain to record interval statistics on these SMF data sets, you must specify the STATRCD=ON system initialization parameter (SIT). The other statistics record types (unsolicited, requested and end-of-day) are written regardless of the setting of the STATRCD option.&lt;br /&gt;&lt;br /&gt;Note: Use the version of the DFHSTUP program from the same release of CICS as the data that it is to process.&lt;br /&gt;&lt;br /&gt;Sample Job from CICS manual:&lt;br /&gt;&lt;br /&gt;The job shown comprises of two job steps. The job steps are:&lt;br /&gt;&lt;br /&gt;1. Unload the SMF data set (or data sets) containing the CICS statistics that you want to process&lt;br /&gt;2. Run DFHSTUP to sort, format, and print the statistics data. You run the DFHSTUP program in a batch region to process any CICS SMF type 110 statistics records that are present in an unloaded SMF data set, which you can write to either a temporary or a cataloged data set.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//**********************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//*  Step 1: Unload data from the SMF data sets&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//**********************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SMFDUMP  EXEC PGM=IFASMFDP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//INDD1     DD DSN=SYS1.MANx,DISP=SHR,AMP=('BUFSP=65536')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//INDD2     DD DSN=SYS1.MANy,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//OUTDD1    DD DSN=user.SMF.DATA,DISP=(NEW,CATLG),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//             SPACE=(CYL,(50,10)),UNIT=SYSDA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SYSPRINT  DD SYSOUT=A&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SYSIN     DD *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       INDD(INDD1,OPTIONS(DUMP))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       INDD(INDD2,OPTIONS(DUMP))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;       OUTDD(OUTDD1,TYPE(0:255))&lt;br /&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//**********************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//*  Step 2: Sort, format and print the statistics records&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//**********************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//STUP1    EXEC PGM=DFHSTUP,REGION=0M&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//********************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//STEPLIB  DD DSN=CICSTS31.CICS.SDFHLOAD,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//         DD DSN=CICSTS31.CICS.SDFHAUTH,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//DFHSTATS  DD DSN=user.SMF.DATA,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//DFHSTWRK  DD UNIT=SYSDA,SPACE=(CYL,(8,4))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SORTWK01  DD UNIT=SYSDA,SPACE=(CYL,(4))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SORTWK02  DD UNIT=SYSDA,SPACE=(CYL,(4))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SORTWK03  DD UNIT=SYSDA,SPACE=(CYL,(4))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SORTWK04  DD UNIT=SYSDA,SPACE=(CYL,(4))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//DFHPRINT  DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SYSPRINT  DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SYSUDUMP  DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SYSABEND  DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SYSOUT    DD SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;//SYSIN     DD *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SELECT APPLID=(applid1,applid2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;COLLECTION TYPE=ALL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For more information, please refer to DFHSTUP in "CICS Transaction Server for z/OS Information Center"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-3043296638851290034?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h6N9yBldnbqEc3DlwV7U5xw6F08/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h6N9yBldnbqEc3DlwV7U5xw6F08/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h6N9yBldnbqEc3DlwV7U5xw6F08/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h6N9yBldnbqEc3DlwV7U5xw6F08/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/OzsFjmAC1ok" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/OzsFjmAC1ok/how-to-find-number-of-many-times-cics.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/07/how-to-find-number-of-many-times-cics.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-4549315593516067290</guid><pubDate>Sat, 13 Jun 2009 14:57:00 +0000</pubDate><atom:updated>2009-06-13T10:31:13.376-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CICS</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">DFHTU640</category><category domain="http://www.blogger.com/atom/ns#">DFHAUXT</category><category domain="http://www.blogger.com/atom/ns#">CETR</category><category domain="http://www.blogger.com/atom/ns#">Aux Trace</category><title>How to turn on Aux trace in CICS</title><description>The CICS INTERNAL trace stays on always. But it doesn't get externalized, so the trace data may not be available when you need it. When trace data is needed, you can turn on Aux Trace by changing the Auxiliary Trace Status to "Stopped" to "Started" using CETR transaction. The Aux Trace data set has initial value of A which is defined as DFHAUXT in the CICS started task. When A gets filled, it automatically switches to B which is defined as DFHBUXT in the started task. When B gets filled the status changes to STOPPED. You can do a STANDARD trace or a SPECIAL trace (with only the components that you want to trace - Standard usually captures lot more data than required). To set up values for special tracing, press PF4 and set the values under "special" as needed. The component abbreviations are defined in the help screen (press PF1). Once you make the required changes in this screen, press PF5 to define the transaction for which you want Aux trace turned on.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;CETR                CICS Trace Control Facility                   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CICTTOR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Type in your choices.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Item                              Choice       Possible choices&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Internal Trace Status       ===&gt;  STARTED      STArted, STOpped&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Internal Trace Table Size   ===&gt;  400     K    16K - 1048576K&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Auxiliary Trace Status      ===&gt;  STOPPED      STArted, STOpped, Paused&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Auxiliary Trace Dataset     ===&gt;  A            A, B&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Auxiliary Switch Status     ===&gt;  NO           NO, NExt, All&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GTF Trace Status            ===&gt;  STOPPED      STArted, STOpped&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Master System Trace Flag    ===&gt;  OFF          ON, OFf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Master User Trace Flag      ===&gt;  OFF          ON, OFf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;When finished, press ENTER.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PF1=Help    3=Quit    4=Components    5=Ter/Trn    6=JVM    9=Error List&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;From the main CETR screen, press PF4 to get to the Component Trace Options screen where you can set the options for Standard and/or Special trace options.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;CETR                    Component Trace Options                   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CICxxxx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Over-type where required and press ENTER.                         PAGE 1 OF 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Component Standard                           Special&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;--------  --------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  AP      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  BA      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  BM      1                                  1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  BR      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  CP      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DC      1                                  1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DD      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DH      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DM      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DP      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DS      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DU      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  EI      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  EJ      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  EM      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  FC      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  GC      1                                  1-2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PF:  1=Help   3=Quit   7=Back  8=Forward  9=Messages   ENTER=Change&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;From the main CETR screen, press PF1 to get to this Trace Help screen where you can see the meanings of component abbreviations.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;CETR             Help:  CICS Component Trace&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(3) MEANINGS OF COMPONENT ABBREVIATIONS.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;AP . . . Application domain            IE . . . ECI over TCP/IP domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BA . . . Business Application Manager  II . . . IIOP domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BM . . . Basic Mapping Support         IS . . . ISC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BR . . . Bridge                        KC . . . Task Control&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CP . . . CPI-C interface               KE . . . Kernel&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DC . . . Dump compatibility layer      LC . . . Local Catalog domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DD . . . Directory manager             LD . . . Loader domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DH . . . Document Handler domain       LG . . . Log Manager domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DM . . . Domain Manager domain         LM . . . Lock Manager domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DP . . . Debugging Profiles domain     ME . . . Message domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DS . . . Dispatcher domain             MN . . . Monitoring domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DU . . . Dump domain                   NQ . . . Enqueue Manager&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;EI . . . Exec interface                OT . . . Object Transaction domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;EJ . . . Enterprise Java domain        PA . . . Parameter Manager&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;EM . . . Event Manager domain          PC . . . Program control&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FC . . . File control                  PG . . . Program Manager domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GC . . . Global Catalog domain         PI . . . Pipeline Manager domain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;IC . . . Interval control              PT . . . Partner Management&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PF 3=End  7=Back  8=Next  ENTER=End&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;From the main CETR screen, press PF9 to get to this "Transaction and Terminal Trace" screen where you can set the transaction name and/or terminal name that needs to be traced.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;CETR                    Transaction and Terminal Trace            xxx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CICxxxx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Type in your choices.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Item                              Choice       Possible choices&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Transaction ID              ===&gt;               Any valid 4 character ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Transaction Status          ===&gt;               STandard, SPecial, SUppressed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Terminal ID                 ===&gt;               Any valid Terminal ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Netname                     ===&gt;               Any valid Netname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Terminal Status             ===&gt;               STandard, SPecial&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Terminal VTAM Exit Trace    ===&gt;               ON, OFf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Terminal ZCP Trace          ===&gt;               ON, OFf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;VTAM Exit override          ===&gt;  NONE         All, System, None&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;When finished, press ENTER.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PF1=Help      3=Quit      6=Cancel Exits      9=Error List&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To print the trace data use the following job or use IPCS to analyze the trace data.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;//PRINT    EXEC PGM=DFHTU640   &lt;-- Program namechanges depending on the CICS version&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//STEPLIB  DD   DSN=xxx.SDFHLOAD,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//DFHAUXT  DD   DSN=xxx.DFHBUXT,DISP=SHR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//DFHAXPRT DD   SYSOUT=*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//DFHAXPRM DD   *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ABBREV&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//*&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;TASKID=(74082)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;//*TYPETR=(APE160,AP3180)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-4549315593516067290?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i4VJgzauNZR61ii1t_oVGPDCVzM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i4VJgzauNZR61ii1t_oVGPDCVzM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i4VJgzauNZR61ii1t_oVGPDCVzM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i4VJgzauNZR61ii1t_oVGPDCVzM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/9vHGfCrsAuA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/9vHGfCrsAuA/how-to-turn-on-aux-trace-in-cics.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/06/how-to-turn-on-aux-trace-in-cics.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-2375602455981961875</guid><pubDate>Sun, 24 May 2009 23:14:00 +0000</pubDate><atom:updated>2009-05-24T18:18:18.391-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SQLJ</category><category domain="http://www.blogger.com/atom/ns#">DB2</category><category domain="http://www.blogger.com/atom/ns#">ODBC</category><category domain="http://www.blogger.com/atom/ns#">Mainframe</category><category domain="http://www.blogger.com/atom/ns#">SQTTABLE</category><category domain="http://www.blogger.com/atom/ns#">DB2 z/OS</category><category domain="http://www.blogger.com/atom/ns#">JDBC</category><category domain="http://www.blogger.com/atom/ns#">-526</category><category domain="http://www.blogger.com/atom/ns#">SQLCODE</category><category domain="http://www.blogger.com/atom/ns#">SYSIBM</category><category domain="http://www.blogger.com/atom/ns#">IBM Data Server Driver</category><title>SYSIBM.SQT* tables and SQLCODE -526</title><description>This is going to be a small post ...&lt;br /&gt;&lt;br /&gt;If you plan to use the IBM Data Server Driver for JDBC and SQLJ or the DB2 ODBC driver, you must create the SYSIBM.SQT* Tables &amp;amp; SYSIBM.SQL* Stored Procs that provide support for those drivers.&lt;br /&gt;&lt;br /&gt;GRANT ALL access to PUBLIC to these tables. Trying to GRANT individual access like GRANT SELECT won't work (you'll get SQLCODE -526).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-2375602455981961875?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0BiYhcUQ9DEwZyOrS5qP4t0_jaM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0BiYhcUQ9DEwZyOrS5qP4t0_jaM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0BiYhcUQ9DEwZyOrS5qP4t0_jaM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0BiYhcUQ9DEwZyOrS5qP4t0_jaM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/z0pzXNqHc9Y" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/z0pzXNqHc9Y/sysibmsqt-tables-and-sqlcode-526.html</link><author>noreply@blogger.com (Aji)</author><thr:total>0</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/05/sysibmsqt-tables-and-sqlcode-526.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2667364103738328244.post-3515601169917498650</guid><pubDate>Mon, 11 May 2009 23:58:00 +0000</pubDate><atom:updated>2009-05-11T19:08:16.867-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CICS</category><category domain="http://www.blogger.com/atom/ns#">X PROG</category><category domain="http://www.blogger.com/atom/ns#">Trace Master</category><category domain="http://www.blogger.com/atom/ns#">DFHAC2261</category><category domain="http://www.blogger.com/atom/ns#">DFHAC2206</category><category domain="http://www.blogger.com/atom/ns#">AZI6</category><category domain="http://www.blogger.com/atom/ns#">z/OS</category><category domain="http://www.blogger.com/atom/ns#">Macro4</category><category domain="http://www.blogger.com/atom/ns#">AEYB</category><category domain="http://www.blogger.com/atom/ns#">INVMPSZ</category><title>Trace Master - CICS abend AEYB</title><description>My colleague was trying to debug a CICS program in TraceMaster (a Macro4 Prodcut). He got this message:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;DFHAC2206 15:45:50 CICTTOR Transaction xxxx failed with abend AZI6. Updates to local recoverable resources backed out. DFHAC2261 System OPR sentmessage (sese code 0824089E). 'DFHAC2206 15:45:50 CICTOPR Transaction xxxx failed with abend AEYB. Updates to local recoverable resources backedout.'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CICS manual describes the condition for code "AEYB" as "INVMPSZ". This "occurs if the specified map is too wide or too long for the terminal." So I had him change the Screen Size on Trace Master profile from "2" for 24x80 to "3"for 32x80 and SAVEd the profile (this is important, Trace Master doesn'tsave the profile automatically).&lt;br /&gt;&lt;br /&gt;That fixed the problem.&lt;br /&gt;&lt;br /&gt;However, he started getting a "X PROG" after starting the debug session. We looked at the program source code and found what the problem was. Apparently TraceMaster doesn't like FREEKB option. It failed while executing this statement:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;EXEC CICS SEND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;          FREEKB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;          CONTROL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;          CURSOR (EIBCPOSN)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;END-EXEC.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We don't understand why the program is doing this to free the keyboard because the SEND of the map has the FREEKB option on it. This problem got resolved when we bypassed this statement while debugging in TraceMaster. This extra 'SEND CONTROL' command seems to be confusing it. To bypass this command, we set a breakpoint at this statement and then did a GOTO (PF13) to the exit to skip the SEND to get it to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2667364103738328244-3515601169917498650?l=ibm-mainframe-tips.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rYYQPgmeFDwv_Vhx-rtEqhIzBRc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rYYQPgmeFDwv_Vhx-rtEqhIzBRc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rYYQPgmeFDwv_Vhx-rtEqhIzBRc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rYYQPgmeFDwv_Vhx-rtEqhIzBRc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/nLMW/~4/3-lXt86voNQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/nLMW/~3/3-lXt86voNQ/my-colleague-was-trying-to-debug-cics.html</link><author>noreply@blogger.com (Aji)</author><thr:total>5</thr:total><feedburner:origLink>http://ibm-mainframe-tips.blogspot.com/2009/05/my-colleague-was-trying-to-debug-cics.html</feedburner:origLink></item></channel></rss>

