<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-4651364288740737757</atom:id><lastBuildDate>Thu, 19 Sep 2024 14:24:12 +0000</lastBuildDate><category>db2</category><category>cobol</category><category>bind</category><category>db2  .cobol</category><category>mainframe</category><category>FTP</category><category>Packages</category><category>Plans</category><category>dbrm</category><category>isolation level</category><category>locking</category><category>package</category><category>plan</category><title>DB2</title><description>If you&#39;re looking for DB2 education, you can&#39;t forget about THIS BLOG. If reading lengthy technical documents online isn&#39;t your cup of tea,then send me mail and i try to resolve your issue ASAP&#xa;&#xa;views,Tips,items of interest on DB2 database management and mainframe systems</description><link>http://db2database.blogspot.com/</link><managingEditor>noreply@blogger.com (Gautam lata)</managingEditor><generator>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-4912170841678311511</guid><pubDate>Sun, 05 Sep 2010 18:28:00 +0000</pubDate><atom:updated>2010-09-05T11:28:55.701-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bind</category><category domain="http://www.blogger.com/atom/ns#">db2</category><category domain="http://www.blogger.com/atom/ns#">isolation level</category><title>Db2 isolation level in bind</title><description>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;isolation&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; level &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;An attribute that defines the degree to which an application process is isolated from other concurrently executing application processes.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;uncommitted&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; read (&lt;/span&gt;&lt;/b&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;UR&lt;/span&gt;&lt;/b&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;An isolation level that allows an application to access uncommitted changes of other transactions.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; The application does not lock other applications out of the row it is reading, unless the other application attempts to drop or alter the table. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;cursor&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; stability (CS) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;An isolation level that locks any row accessed by a transaction of an application while the cursor is positioned on the row.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; The lock remains in effect until the next row is fetched or the transaction is terminated. If any data is changed in a row, the lock is held until the change is committed to the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;read&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; stability (RS) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;An isolation level that locks only the rows that an application retrieves within a transaction.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; Read stability ensures that any qualifying row that is read during a transaction is not changed by other application processes until the transaction is completed, and that any row changed by another application process is not read until the change is committed by that process. Read stability allows more concurrency than repeatable read, and less than cursor stability. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;repeatable&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; read (RR) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;An isolation level that locks all the rows in an application that are referenced within a transaction.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; When a program uses repeatable read protection, rows referenced by the program cannot be changed by other programs until the program ends the current transaction. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;phantom&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; row &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span class=&quot;GramE&quot;&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;A table row that can be read by application processes that are executing with any isolation level except repeatable read.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; When an application process issues the same query multiple times within a single unit of work, additional rows can appear between queries because of the data being inserted and committed by application processes that are running concurrently.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can we better understand by the below table.... &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;width: 100%;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;bottom&quot; width=&quot;56%&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;bottom&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;UR&lt;/span&gt;&lt;/b&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;bottom&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;CS &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;bottom&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;RS &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;bottom&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;RR &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can the   application see uncommitted changes made by other application processes? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can the   application update uncommitted changes made by other application processes? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can the   re-execution of a statement be affected by other application processes? &lt;i&gt;See   phenomenon P3 (phantom) below&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can   &quot;updated&quot; rows be updated by other application processes? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can   &quot;updated&quot; rows be read by other application processes that are   running at an isolation level other than &lt;/span&gt;&lt;/b&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;UR&lt;/span&gt;&lt;/b&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can   &quot;updated&quot; rows be read by other application processes that are   running at the &lt;/span&gt;&lt;/b&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;UR&lt;/span&gt;&lt;/b&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;   isolation level? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can   &quot;accessed&quot; rows be updated by other application processes? &lt;i&gt;See   phenomenon P2 (&lt;span class=&quot;SpellE&quot;&gt;nonrepeatable&lt;/span&gt; read) below&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can   &quot;accessed&quot; rows be read by other application processes? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Yes &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0.75pt; width: 56%;&quot; valign=&quot;top&quot; width=&quot;56%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Can   &quot;current&quot; row be updated or deleted by other application processes?   &lt;i&gt;See phenomenon P1 (dirty-read) below&lt;/i&gt;.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;See Note   below &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;See Note   below &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0.75pt; width: 11%;&quot; valign=&quot;top&quot; width=&quot;11%&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;No &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Examples of Phenomena:&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;&quot; name=&quot;IDX9294&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;IDX9295&quot;&gt;&lt;/a&gt;&lt;a href=&quot;&quot; name=&quot;IDX9296&quot;&gt;&lt;/a&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;P1 &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Dirty Read.&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; Unit of work UW1 modifies a row.   Unit of work UW2 reads that row before UW1 performs a COMMIT. If UW1 then performs   a ROLLBACK, UW2 has read a nonexistent row. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;P2 &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;SpellE&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Nonrepeatable&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; Read.&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; Unit of   work UW1 reads a row. Unit of work UW2 modifies that row and performs a   COMMIT. If UW1 then re-reads the row, it might receive a modified value. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;P3 &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;i&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt;Phantom.&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #333399; font-family: &amp;quot;Trebuchet MS&amp;quot;; font-size: 10pt;&quot;&gt; Unit of work UW1 reads the set of &lt;i&gt;n&lt;/i&gt;   rows that satisfies some search condition. Unit of work UW2 then &lt;span class=&quot;SpellE&quot;&gt;INSERTs&lt;/span&gt; one or more rows that &lt;span class=&quot;GramE&quot;&gt;satisfies&lt;/span&gt;   the search condition. If UW1 then repeats the initial read with the same   search condition, it obtains the original rows plus the inserted rows. &lt;/span&gt;</description><link>http://db2database.blogspot.com/2010/09/db2-isolation-level-in-bind.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-8415866033198804865</guid><pubDate>Mon, 23 Aug 2010 15:24:00 +0000</pubDate><atom:updated>2010-08-23T08:24:52.493-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bind</category><category domain="http://www.blogger.com/atom/ns#">cobol</category><category domain="http://www.blogger.com/atom/ns#">db2  .cobol</category><category domain="http://www.blogger.com/atom/ns#">Packages</category><category domain="http://www.blogger.com/atom/ns#">Plans</category><title>Precompiler+Bind+Plans + DBRMS + Packages + Collections + Versions = Confusion</title><description>&lt;h3&gt;Collection Ideas&lt;/h3&gt;&lt;h3&gt; &lt;span style=&quot;font-size: small;&quot;&gt;said that a &lt;code style=&quot;font-weight: normal;&quot;&gt;COLLECTION&lt;/code&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; is simply a way of grouping &lt;/span&gt;&lt;code style=&quot;font-weight: normal;&quot;&gt;PACKAGE&lt;/code&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;s into meaningful (for you) groups. You could use &lt;/span&gt;&lt;code style=&quot;font-weight: normal;&quot;&gt;COLLECTION&lt;/code&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;s  to separate programs for different application areas, such as payroll  and inventory. Another use might be to separate programs bound with &lt;/span&gt;&lt;code style=&quot;font-weight: normal;&quot;&gt;ISOLATION UR&lt;/code&gt; &lt;span style=&quot;font-weight: normal;&quot;&gt;from programs bound with&lt;/span&gt; &lt;code style=&quot;font-weight: normal;&quot;&gt;ISOLATION CS&lt;/code&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;. &lt;/span&gt;&lt;code style=&quot;font-weight: normal;&quot;&gt;COLLECTION&lt;/code&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;s are simply high-level grouping names to designate that this group of packages share something, anything, in common.&lt;/span&gt;&lt;/span&gt; &lt;/h3&gt;&lt;code&gt;COLLECTION&lt;/code&gt;s enable you to organize your &lt;code&gt;PACKAGE&lt;/code&gt;s into like-kind groups. In DB2&#39;s younger days, with multiple DBRMs being bound into &lt;code&gt;PLAN&lt;/code&gt;s, all the DBRMs in a single &lt;code&gt;PLAN&lt;/code&gt; had to be bound with the same &lt;code&gt;BIND&lt;/code&gt; parameters. However, today you can &lt;code&gt;BIND&lt;/code&gt; each &lt;code&gt;PACKAGE&lt;/code&gt; into a &lt;code&gt;COLLECTION&lt;/code&gt; that has a customized set of &lt;code&gt;BIND&lt;/code&gt; parameters associated with it. An example would be to ISOLATE all programs using REOPT(VARS) in one &lt;code&gt;COLLECTION&lt;/code&gt; and all programs using OPTHINT in another. DEGREE(ANY) is another &lt;code&gt;BIND&lt;/code&gt;  parameter that you may want to be a bit more vigilant in monitoring. An  easy way of keeping an eye on programs (or children) is to put them in a  room together. In other words, &lt;code&gt;BIND&lt;/code&gt; parameters are much more granular today than they were when DB2 was young.&lt;br /&gt;
&lt;br /&gt;
With the advent of &lt;code&gt;BIND&lt;/code&gt; &lt;code&gt;PACKAGE&lt;/code&gt; and the  one-to-one relationship of a program to a package, we were given the  ability to name the high-level qualifier for the tables accessed by the  program. Therefore, the DBRM for one program could be bound into two  different &lt;code&gt;COLLECTION&lt;/code&gt;s. The DBRM for program ABC123 could be bound into a &lt;code&gt;COLLECTION&lt;/code&gt; called &lt;code&gt;colcorp01&lt;/code&gt;, using &lt;code&gt;corp01&lt;/code&gt; as the table high-level qualifier. The same DBRM could be bound into a &lt;code&gt;COLLECTION&lt;/code&gt; called &lt;code&gt;colcorp02&lt;/code&gt;, using &lt;code&gt;corp02&lt;/code&gt; as the high-level qualifier. Or, you could &lt;code&gt;BIND&lt;/code&gt; the same DBRM into &lt;code&gt;colstress&lt;/code&gt; to run it against stress test tables and &lt;code&gt;BIND&lt;/code&gt; it into &lt;code&gt;colstress&lt;/code&gt; to run against regular test tables. Or, you could &lt;code&gt;BIND&lt;/code&gt; a DBRM into a &lt;code&gt;COLLECTION&lt;/code&gt; called &lt;code&gt;colur&lt;/code&gt; to use when you access read-only decision support tables using &lt;code&gt;ISOLATION UR&lt;/code&gt; and into a &lt;code&gt;COLLECTION&lt;/code&gt; called &lt;code&gt;colcs&lt;/code&gt; when you use active production data. There are dozens of examples. Just use your imagination.&lt;br /&gt;
&lt;br /&gt;
So, at runtime, whichever approach you chose, you now have a &lt;code&gt;PACKAGE&lt;/code&gt; with the exact same tattoo/timestamp/consistency-token in two different &lt;code&gt;COLLECTION&lt;/code&gt;s. How do you tell DB2 in which collection to search for Danny? Normally, DB2 would search through all of the &lt;code&gt;COLLECTION&lt;/code&gt;s in the named &lt;code&gt;PLAN&lt;/code&gt;. But, if you want to search only one &lt;code&gt;COLLECTION&lt;/code&gt;, you simply tell DB2 in your program. You can specify which &lt;code&gt;COLLECTION&lt;/code&gt; to search by using an SQL statement called SET CURRENT &lt;code&gt;PACKAGESET&lt;/code&gt;. &lt;code&gt;PACKAGESET&lt;/code&gt; is simply a synonym for &lt;code&gt;COLLECTION&lt;/code&gt;. Therefore, if you set the current &lt;code&gt;PACKAGESET&lt;/code&gt; to &lt;code&gt;colcorp01&lt;/code&gt;, you will access &lt;code&gt;corp01&lt;/code&gt;&#39;s tables. If you set the current &lt;code&gt;PACKAGESET&lt;/code&gt; to &lt;code&gt;colcorp02&lt;/code&gt;, you will access &lt;code&gt;corp02&lt;/code&gt;&#39;s tables. And the beauty of this is that you only have to maintain one program.&lt;br /&gt;
&lt;h3&gt;&amp;nbsp;Versions&lt;/h3&gt;&lt;h3&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Suppose program A is changed and moved back into production. Before  the program was changed it ran in 10 minutes and never bothered anyone.  After the change, all the other programs running at the same time are  experiencing &lt;/span&gt;&lt;code style=&quot;font-weight: normal;&quot;&gt;-911&lt;/code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; timeouts. How do you fall back gracefully and rapidly to the prior version of the program?&lt;/span&gt; &lt;/h3&gt;At precompile time you can specify a &lt;code&gt;VERSION&lt;/code&gt; &lt;code&gt;ID&lt;/code&gt;. If the &lt;code&gt;VERSION&lt;/code&gt; &lt;code&gt;ID&lt;/code&gt; is the same as the current version, &lt;code&gt;BIND&lt;/code&gt; will overlay the &lt;code&gt;PACKAGE&lt;/code&gt; in its &lt;code&gt;COLLECTION&lt;/code&gt;. But, if the &lt;code&gt;VERSION&lt;/code&gt; &lt;code&gt;ID&lt;/code&gt; is different from the current &lt;code&gt;VERSION&lt;/code&gt; &lt;code&gt;ID&lt;/code&gt;, &lt;code&gt;BIND&lt;/code&gt;ing the DBRM will produce a new &lt;code&gt;PACKAGE&lt;/code&gt; that won&#39;t overlay the prior &lt;code&gt;PACKAGE&lt;/code&gt; for the program. You&#39;ll have two &lt;code&gt;PACKAGE&lt;/code&gt;s for the same program in the same &lt;code&gt;COLLECTION&lt;/code&gt;. If you also move the current &lt;code&gt;LOAD&lt;/code&gt; module with its old tattoo timestamp into a different &lt;code&gt;loadlib&lt;/code&gt; &lt;code&gt;(COBOL.BACKUP)&lt;/code&gt;, the compile will not overlay it. Then, when you compile the modified source code, you&#39;ll have a &lt;code&gt;LOAD&lt;/code&gt; module with the new tattoo/timestamp in the current &lt;code&gt;loadlib&lt;/code&gt;. If you execute the new &lt;code&gt;LOAD&lt;/code&gt; module, you&#39;ll find the new &lt;code&gt;PACKAGE&lt;/code&gt;. If the system suffers, you can cancel the job and move the old &lt;code&gt;LOAD&lt;/code&gt; module back into production simply by pointing to &lt;code&gt;COBOL.BACKUP&lt;/code&gt;.&lt;br /&gt;
&lt;h3&gt;Copies&lt;/h3&gt;There are too many other nuances and possibilities to mention; however,  one feature that may be useful is the ability to copy a package from one  collection to another. If the statistics on your table vary greatly  from daytime to evening or beginning of the month to end of the month,  you can &lt;code&gt;BIND&lt;/code&gt; a &lt;code&gt;PACKAGE&lt;/code&gt; in a &lt;code&gt;COLLECTION&lt;/code&gt; called &lt;code&gt;colday&lt;/code&gt; or &lt;code&gt;colbegin&lt;/code&gt; when the statistics in the &lt;code&gt;CATALOG&lt;/code&gt; are representative of your daytime or beginning of the month table. You can then &lt;code&gt;COPY&lt;/code&gt; that &lt;code&gt;PACKAGE&lt;/code&gt; into another &lt;code&gt;COLLECTION&lt;/code&gt; called &lt;code&gt;colnight&lt;/code&gt; or &lt;code&gt;colend&lt;/code&gt; when the statistics in the &lt;code&gt;CATALOG&lt;/code&gt; are representative of your nighttime or end of the month table. &lt;code&gt;COPY&lt;/code&gt; does a RE&lt;code&gt;BIND&lt;/code&gt; and uses the DBRM in the &lt;code&gt;CATALOG&lt;/code&gt;  as its input. Therefore, the tattoo/timestamp doesn&#39;t change. If you  check the time of day or the day of month at the beginning of the  program, you can &lt;code&gt;SET CURRENT PACKAGESET&lt;/code&gt; to the appropriate &lt;code&gt;COLLECTION&lt;/code&gt; for DB2 to search for Danny.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;</description><link>http://db2database.blogspot.com/2010/08/precompilerbindplans-dbrms-packages_23.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-7899720610522102919</guid><pubDate>Thu, 19 Aug 2010 14:01:00 +0000</pubDate><atom:updated>2010-08-19T07:01:16.697-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cobol</category><category domain="http://www.blogger.com/atom/ns#">db2</category><category domain="http://www.blogger.com/atom/ns#">package</category><category domain="http://www.blogger.com/atom/ns#">plan</category><title>Precompiler+Bind+Plans + DBRMS + Packages + Collections + Versions = Confusion</title><description>&lt;h3&gt;Packages and Collections&lt;/h3&gt;&lt;br /&gt;
In V2R3, the DB2 developers solved the seven problems I listed (and many more) by introducing another layer in the program preparation procedure. The precompile step still split the program into tattooed twins, and the treatment of the modified source code stayed the same. But the DBRM could now be bound either into a &lt;code&gt;PLAN&lt;/code&gt; (the old way) or into a &lt;code&gt;PACKAGE&lt;/code&gt;. Although the relationship between a DBRM and a &lt;code&gt;PLAN&lt;/code&gt; was one-to-many, the relationship between a DBRM and a &lt;code&gt;PACKAGE&lt;/code&gt; was always one-to-one. Most of the work of &lt;code&gt;BIND&lt;/code&gt; &lt;code&gt;PLAN&lt;/code&gt; was moved into &lt;code&gt;BIND&lt;/code&gt; &lt;code&gt;PACKAGE&lt;/code&gt;. Therefore, if &lt;code&gt;PGMA&lt;/code&gt; changed, only &lt;code&gt;PACKAGE&lt;/code&gt; A would have to be bound.&lt;br /&gt;
If only one DBRM could be bound into a &lt;code&gt;PACKAGE&lt;/code&gt;, but &lt;code&gt;PGMA&lt;/code&gt; could still &lt;code&gt;CALL&lt;/code&gt; &lt;code&gt;PGMB&lt;/code&gt;, then a structure was needed to gather all of the &lt;code&gt;PACKAGE&lt;/code&gt;s into a searchable list. This structure became a packagelist, rather than a memberlist, bound into a &lt;code&gt;PLAN&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
This tiny change solved many, but not all, of the problems inherent in the &quot;memberlist of DBRMs bound into a &lt;code&gt;PLAN&lt;/code&gt;&quot; technique. To solve a few more problems, IBM introduced the concept of &lt;code&gt;COLLECTION&lt;/code&gt;s. A collection is simply a way of grouping packages into meaningful (for you) groups. You could &lt;code&gt;BIND&lt;/code&gt; all of the packages that must run against Corporation 1&#39;s tables into one &lt;code&gt;COLLECTION&lt;/code&gt; and all of the packages that must run against Corporation 2&#39;s tables into another. Or, you could use &lt;code&gt;COLLECTION&lt;/code&gt;s to separate programs for different application areas, such as payroll and inventory.&lt;br /&gt;
&lt;br /&gt;
Another use might be to separate programs bound with &lt;code&gt;ISOLATION UR&lt;/code&gt; from programs bound with &lt;code&gt;ISOLATION CS&lt;/code&gt;. &lt;code&gt;COLLECTION&lt;/code&gt;s are simply high-level grouping names to designate that this group of packages share something, anything, in common.&lt;br /&gt;
So, now, with the introduction of &lt;code&gt;COLLECTION&lt;/code&gt;s, our &lt;code&gt;BIND&lt;/code&gt; &lt;code&gt;PLAN&lt;/code&gt; process (think search chain) can now include a packagelist of fully qualified package names such as &lt;code&gt;COLLPAYROLL.PGMA&lt;/code&gt;, &lt;code&gt;COLLPAYROLL.PGMB&lt;/code&gt;, and &lt;code&gt;COLLCOMMON.PGMX&lt;/code&gt;. Or, if we choose, we can just substitute an asterisk for the program name and list (&lt;code&gt;COLLPAYROLL.*&lt;/code&gt;, &lt;code&gt;COLLCOMMON.*&lt;/code&gt;). Then any program bound into the &lt;code&gt;COLLECTION&lt;/code&gt; will be accessible by the named PLAN.&lt;br /&gt;
&lt;h3&gt;Where Are Packages and Plans?&lt;/h3&gt;When you &lt;code&gt;BIND&lt;/code&gt; a DBRM into a &lt;code&gt;PLAN&lt;/code&gt;, or &lt;code&gt;BIND&lt;/code&gt; a &lt;code&gt;PACKAGE&lt;/code&gt; into a &lt;code&gt;COLLECTION&lt;/code&gt; and then the &lt;code&gt;COLLECTION&lt;/code&gt;(s) into a &lt;code&gt;PLAN&lt;/code&gt;, the information must be stored somewhere safe inside DB2 until it&#39;s needed at run time. These items (&lt;code&gt;PLAN&lt;/code&gt;s and &lt;code&gt;PACKAGE&lt;/code&gt;s) aren&#39;t stored in the DB2 Catalog. Rather, they&#39;re stored in the DB2 Directory. In fact, you can think of the Directory as the DB2 loadlib for the Danny portion of your program, complete with tattoo.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Run Time&lt;/h3&gt;At run time, the load module starts up and eventually hits a paragraph containing a &lt;code&gt;CALL&lt;/code&gt; to DB2. This &lt;code&gt;CALL&lt;/code&gt; contains information such as a description of the tattoo, the content of your SQL host variables (now populated), the statement number, and so on. The &lt;code&gt;CALL&lt;/code&gt; invokes the COBOL-DB2 interface program, which connects to DB2. And if the run-time code necessary to execute your SQL isn&#39;t currently resident inside DB2 (in the &lt;code&gt;EDMPOOL&lt;/code&gt;), we go to the buffer pool (BP0) assigned to the DB2 Directory and look there. If we don&#39;t find Danny there, we go to VSAM to disk to look in the &lt;code&gt;COLLECTION&lt;/code&gt;s named in the &lt;code&gt;PLAN&lt;/code&gt; for the &lt;code&gt;PACKAGE&lt;/code&gt; with the same name and the same tattoo, also known as the consistency token or timestamp.&lt;br /&gt;
&lt;br /&gt;
And if you don&#39;t find the twin anywhere in DB2 (not that this has ever happened to anyone reading this column), you get a &lt;code&gt;-805&lt;/code&gt; error. If you&#39;re still using the older technique of binding DBRMs directly into &lt;code&gt;PLAN&lt;/code&gt;s via a memberlist, then an unsuccessful search for Danny will result in a &lt;code&gt;-818&lt;/code&gt; error code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: small;&quot;&gt;&lt;b&gt;In my next column, I&#39;ll give you some ideas about the various ways of using the concept of the &lt;code&gt;COLLECTION&lt;/code&gt;. I&#39;ll also write about VERSIONs and how they&#39;re used.&lt;/b&gt;&lt;/span&gt;</description><link>http://db2database.blogspot.com/2010/08/precompilerbindplans-dbrms-packages_19.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-6468094938087297868</guid><pubDate>Sat, 14 Aug 2010 10:02:00 +0000</pubDate><atom:updated>2010-08-14T03:02:00.619-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cobol</category><category domain="http://www.blogger.com/atom/ns#">db2</category><category domain="http://www.blogger.com/atom/ns#">dbrm</category><title>Precompiler+Bind+Plans + DBRMS + Packages + Collections + Versions = Confusion</title><description>&lt;h3&gt;The DBRM (Danny)&lt;/h3&gt;At &lt;code&gt;BIND&lt;/code&gt; time, DB2 created run-time executable instructions for the SQL portion of the program. But where are those instructions, and what are they called now that the term DBRM no longer applies?&lt;br /&gt;
&lt;br /&gt;
The truth is, you have a choice. You can &lt;code&gt;BIND&lt;/code&gt; the instructions for the SQL that was in the DBRM into a &lt;code&gt;PLAN&lt;/code&gt; (the old way), or you can &lt;code&gt;BIND&lt;/code&gt; the instructions into a &lt;code&gt;PACKAGE&lt;/code&gt; (the not-so-old-but-no-longer-new way). The reason for this choice is historical. Back when knights were bold, dragons walked the Earth, and DB2 and some of us were young, DBRMs were bound directly into &lt;code&gt;PLAN&lt;/code&gt;s. In today&#39;s DB2 (since V2R3), there are two ways of doing BINDs. You may continue to &lt;code&gt;BIND&lt;/code&gt; DBRMs into &lt;code&gt;PLAN&lt;/code&gt;s, or you may &lt;code&gt;BIND&lt;/code&gt; DBRMs into &lt;code&gt;PACKAGE&lt;/code&gt;s. With the second option, you keep your &lt;code&gt;PLAN&lt;/code&gt; but use it only as a search chain. This column explains why things changed in V2R3. A future column will explain how things have continued to change in v.7 and v.8.&lt;br /&gt;
&lt;br /&gt;
In the early releases of DB2, the DBRM (SQL originally embedded in our COBOL program but separated at precompile time into a PDS member) was bound into a &lt;code&gt;PLAN&lt;/code&gt; (&lt;code&gt;PLANA&lt;/code&gt;). This method worked just fine as long as the program was a standalone program. You coded the JCL to execute program &lt;code&gt;PGMA&lt;/code&gt; naming the &lt;code&gt;PLAN&lt;/code&gt; &quot;&lt;code&gt;PLANA&lt;/code&gt;,&quot; and at run time the twins found each other. However, things got a bit complicated when &lt;code&gt;PGMA&lt;/code&gt; needed to &lt;code&gt;CALL&lt;/code&gt; &lt;code&gt;PGMB&lt;/code&gt;. Because only one &lt;code&gt;PLAN&lt;/code&gt; could be named in an execute statement, the &lt;code&gt;PLAN&lt;/code&gt; had to contain run-time instructions for both &lt;code&gt;PGMA&lt;/code&gt; and &lt;code&gt;PGMB&lt;/code&gt;. This problem was solved by having the &lt;code&gt;BIND&lt;/code&gt; instruction for &lt;code&gt;PLANA&lt;/code&gt; name a memberlist; the DBRMs for both &lt;code&gt;PGMA&lt;/code&gt; and &lt;code&gt;PGMB&lt;/code&gt; were listed as members. And if &lt;code&gt;PGMB&lt;/code&gt; called &lt;code&gt;PGMC&lt;/code&gt;, then the three would be listed as members. And if &lt;code&gt;C&lt;/code&gt; called &lt;code&gt;D&lt;/code&gt;, which could call &lt;code&gt;E&lt;/code&gt;, &lt;code&gt;F&lt;/code&gt;, &lt;code&gt;G&lt;/code&gt;, or &lt;code&gt;H&lt;/code&gt;, which could call &lt;code&gt;I&lt;/code&gt;, &lt;code&gt;J&lt;/code&gt;, &lt;code&gt;K&lt;/code&gt;, &lt;code&gt;L&lt;/code&gt;, or &lt;code&gt;M&lt;/code&gt;, which could .... Well, you get the idea.&lt;br /&gt;
&lt;code&gt;Memberlists&lt;/code&gt; got longer and longer. What were (and still are, if you cling to the old technique) the drawbacks of having a very long list? &lt;br /&gt;
&lt;ol&gt;&lt;li&gt; Remember that DB2 authorization and SQL syntax are checked at &lt;code&gt;BIND&lt;/code&gt; time. Access path alternatives are also weighed, the least-cost path is chosen (based on current statistics and system resources), and run-time instructions are created for the chosen path. Well, if the &lt;code&gt;PLAN&lt;/code&gt; contains one member, A, this process should be quick. But what if there are 20 or 50 or 500 DBRMs in the memberlist? The &lt;code&gt;BIND&lt;/code&gt; could take hours.&lt;/li&gt;
&lt;li&gt; So, the &lt;code&gt;PLAN&lt;/code&gt;, which took more than a while to &lt;code&gt;BIND&lt;/code&gt;, contains 500 members. What if one of the programs, &lt;code&gt;PGMA&lt;/code&gt;, changes? When the source code changes, the program must be precompiled. And precompile changes the tattoo and creates a new DBRM. That new DBRM must be bound into the &lt;code&gt;PLAN&lt;/code&gt;. When the &lt;code&gt;PLAN&lt;/code&gt; is bound, all 500 DBRMs (not just the modified &lt;code&gt;PGMA&lt;/code&gt;) will be rebound. It could take hours to &lt;code&gt;BIND&lt;/code&gt; a &lt;code&gt;PLAN&lt;/code&gt;, even though 499 of the 500 programs haven&#39;t changed.&lt;/li&gt;
&lt;li&gt; Also, remember that &lt;code&gt;BIND&lt;/code&gt; is an opportunity to reassess and change the access paths for not only the modified program, but also every single program in the memberlist. If one program changes, every program in the list will go through &lt;code&gt;BIND&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt; What if you want to modify &lt;code&gt;PGMB&lt;/code&gt; to call a new program, &lt;code&gt;PGMZ&lt;/code&gt;? You must not only precompile modified &lt;code&gt;B&lt;/code&gt; and new &lt;code&gt;Z&lt;/code&gt;, you also must add new &lt;code&gt;PGMZ&lt;/code&gt; to the memberlist and &lt;code&gt;BIND&lt;/code&gt; the whole list — all 501 DBRMs.&lt;/li&gt;
&lt;li&gt; You want to remove &lt;code&gt;PGMT&lt;/code&gt;? Edit the memberlist and then &lt;code&gt;BIND&lt;/code&gt; the &lt;code&gt;PLAN&lt;/code&gt; again with the remaining 500 members in the list and wait impatiently while DBRMs that haven&#39;t changed go through the &lt;code&gt;BIND&lt;/code&gt; process.&lt;/li&gt;
&lt;li&gt; Okay, modified program A turns your processor over on its back, casters up. You want to fall back to the original version of &lt;code&gt;PGMA&lt;/code&gt;. And exactly how would you do that quickly? If (and it&#39;s a big if) you have the old DBRM with its old tattoo, you could move it into the DBRMlib and &lt;code&gt;BIND&lt;/code&gt; the entire 500-member list (even though only &lt;code&gt;A&lt;/code&gt; had regressed) and replace the new loadlib member &lt;code&gt;A&lt;/code&gt; with the prior loadlib member &lt;code&gt;A&lt;/code&gt;. Or, if you have the old source code for &lt;code&gt;A&lt;/code&gt;, you could precompile it to recreate both the modified source code and the DBRM, and then &lt;code&gt;COMPILE&lt;/code&gt;, &lt;code&gt;LINK&lt;/code&gt;, and &lt;code&gt;BIND&lt;/code&gt;, which would &lt;code&gt;BIND&lt;/code&gt; all 500 DBRMs in the member list.&lt;/li&gt;
&lt;li&gt; Program &lt;code&gt;Q&lt;/code&gt; has to run against two sets of tables, one for Corporation 1 and a second for Corporation 2. The sets of tables have identical names but different high-level qualifiers. You could use synonyms, but they&#39;re unwieldy; binding during a time when a synonym points to the wrong set of tables could cause disaster.&lt;/li&gt;
&lt;/ol&gt;These (and other) quandaries faced many DBAs in the days before V2R3 and the advent of PACKAGEs. what&#39;s is PACKAGE...... chek out next</description><link>http://db2database.blogspot.com/2010/08/precompilerbindplans-dbrms-packages_3812.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-396137448549757565</guid><pubDate>Thu, 12 Aug 2010 09:59:00 +0000</pubDate><atom:updated>2010-08-12T02:59:39.118-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">db2  .cobol</category><title>Modified source+Bind+Plans + DBRMS + Packages + Collections + Versions = Confusion</title><description>till now , we had done a &lt;code&gt;PRECOMPILE&lt;/code&gt; to separate our COBOL program into twins: Arnold (that&#39;s Governor Arnold now) as the modified source code (the SQL commented out and &lt;code&gt;DCLGEN&lt;/code&gt;s now &lt;code&gt;INCLUDE&lt;/code&gt;d) and Danny as the DBRM containing the SQL that used to be in the source code. The COBOL source code (without any SQL) was compiled into run-time executable instructions for the COBOL portion of the program; DBRM Danny (all the SQL that used to be in the source module) went through &lt;code&gt;BIND&lt;/code&gt; to generate run-time instructions for the SQL in our COBOL program.&lt;br /&gt;
&lt;br /&gt;
but some question still running in mind ...like how Arnold, over in the COBOL &lt;code&gt;loadlib&lt;/code&gt;, will find his long-lost twin —&amp;nbsp; exactly what we were binding and where we would put it when we finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
so ...study continue.. &lt;br /&gt;
&lt;h3&gt;The Modified Source Code (Arnold)&lt;/h3&gt;At precompile time, when the SQL was stripped out of our program and moved into the DBRM (Danny) leaving only COBOL in the modified source code, you must have wondered how COBOL Arnold would ever find DB2 SQL Danny; in other words, how the COBOL would ever execute any SQL.&lt;br /&gt;
&lt;br /&gt;
The explanation is simple. All of the executable SQL (and not all SQL is executable — a &lt;code&gt;DECLARE CURSOR&lt;/code&gt; isn&#39;t, for example) in the COBOL program was replaced with a &lt;code&gt;CALL&lt;/code&gt; statement (in our example, a COBOL &lt;code&gt;CALL&lt;/code&gt;). The modified source code, complete with its calls to DB2 SQL Danny, was compiled and &quot;linked&quot; into a &lt;code&gt;LOAD&lt;/code&gt; module. When this &lt;code&gt;LOAD&lt;/code&gt; module is executed and hits a paragraph that once contained SQL (but now contains a &lt;code&gt;CALL&lt;/code&gt; to Danny), there will be run-time executable code that knows how to link to a COBOL-DB2 interface module and connect to DB2, where it will find Danny and the run-time executable code for the SQL statement that previously had been in the paragraph.&lt;br /&gt;
&lt;br /&gt;
Remember that we tattooed the twins? Well, this &lt;code&gt;CALL&lt;/code&gt; contains the information DB2 needs to confirm not only that this &lt;code&gt;LOAD MODULE&lt;/code&gt; is Arnold (complete with requisite tattoo), but also that it&#39;s the exact same Arnold that came out of the exact same precompile step as Danny. The &lt;code&gt;CALL&lt;/code&gt; looks at the &lt;code&gt;PLAN&lt;/code&gt; named in the execute statement of the job control language (JCL) and searches for the Danny out in DB2 with the same tattoo.&lt;br /&gt;
&lt;br /&gt;
next post about&amp;nbsp; most important member of this function called&amp;nbsp;&lt;b&gt; DBRM &lt;/b&gt;</description><link>http://db2database.blogspot.com/2010/08/modified-sourcebindplans-dbrms-packages.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-1422014400558301268</guid><pubDate>Thu, 12 Aug 2010 09:53:00 +0000</pubDate><atom:updated>2010-08-12T02:53:22.097-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bind</category><category domain="http://www.blogger.com/atom/ns#">cobol</category><category domain="http://www.blogger.com/atom/ns#">db2</category><title>Precompiler+Bind+Plans + DBRMS + Packages + Collections + Versions = Confusion</title><description>&lt;h3&gt;ALL ABOUT BIND&lt;/h3&gt;&lt;code&gt;BIND&lt;/code&gt; connects to the DB2 in which the program&#39;s LOAD module will run, reads the DBRM serially, and then performs three tasks.&lt;br /&gt;
The first of the &lt;code&gt;BIND&lt;/code&gt; tasks is an authorization check. DB2 must make sure that the programmer has the &lt;code&gt;BIND&lt;/code&gt; authority &lt;i&gt;and&lt;/i&gt; the SQL authority to perform the requested SQL task (for example, updating the payroll master). When using standard authorization procedures, DB2 won&#39;t let you &lt;code&gt;BIND&lt;/code&gt; a DBRM if you don&#39;t have the authority to execute the SQL that&#39;s in the DBRM. This is why you may have the authorization to &lt;code&gt;BIND&lt;/code&gt; in development (accessing development tables) but don&#39;t have authorization to &lt;code&gt;BIND&lt;/code&gt; in production, where the SQL accesses production tables. The second &lt;code&gt;BIND&lt;/code&gt; task is a bit redundant. &lt;code&gt;BIND&lt;/code&gt;, like precompile, must also check the syntax of the SQL, but the &lt;code&gt;BIND&lt;/code&gt; check is more sophisticated. Instead of using the top, &lt;code&gt;DECLARE TABLE&lt;/code&gt; portion of the &lt;code&gt;DCLGEN&lt;/code&gt;, &lt;code&gt;BIND&lt;/code&gt; uses the DB2 &lt;code&gt;CATALOG&lt;/code&gt; table information to make sure that the column names are valid, that comparisons are numeric-to-numeric, and so on. This second syntax check occurs because you can&#39;t trust the one done by the precompiler because the precompiler check used the &lt;code&gt;DCLGEN&lt;/code&gt;. You could have a &lt;code&gt;DCLGEN&lt;/code&gt; and not have the DB2 table.&lt;br /&gt;
&lt;br /&gt;
The third, and most important, &lt;code&gt;BIND&lt;/code&gt; task is to come up with run-time instructions for the SQL in the DBRM. Each SQL statement is parsed and all of the possible (realistic) methods for retrieving the desired columns and rows from the table are weighed, measured, and evaluated based on possible estimated I/O, CPU, and &lt;code&gt;SORT&lt;/code&gt; overhead. A ton of information is used as input to the &lt;code&gt;BIND&lt;/code&gt; process, not just &lt;code&gt;CATALOG&lt;/code&gt; information put there by running the &lt;code&gt;RUNSTATS&lt;/code&gt; utility. &lt;code&gt;BIND&lt;/code&gt; input includes, for example: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Indexes (what columns are in the indexes?)&lt;/li&gt;
&lt;li&gt; Columns (how long is this column and how much room will it occupy in a &lt;code&gt;SORT&lt;/code&gt; record?)&lt;/li&gt;
&lt;li&gt; System resources (how big are the system resources, buffer pool, and &lt;code&gt;RIDPOOL&lt;/code&gt;?)&lt;/li&gt;
&lt;li&gt; Processors (how big are they and how many engines do they have?)&lt;/li&gt;
&lt;li&gt; DB2 (what release is running?)&lt;/li&gt;
&lt;li&gt; Parameters (what are the values of the &lt;code&gt;BIND&lt;/code&gt; parameters?)&lt;/li&gt;
&lt;/ul&gt;After all that input (and more) is weighed and compared, the cheapest, most costeffective access path is chosen, and the runtime instructions for that one path are created. (Interestingly, DB2 &lt;code&gt;BIND&lt;/code&gt; sometimes generates instructions for more than one path.) This process is called optimization, and it&#39;s repeated for each SQL statement in the DBRM until all access paths are decided and the run-time instructions are created for each. As the optimizer decides on each path, writes are done to DB2.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;BIND&lt;/code&gt; checks to see if you bound with the parameter &lt;code&gt;EXPLAIN(YES);&lt;/code&gt; if so, it writes documentary evidence about the chosen path to the &lt;code&gt;PLAN_TABLE&lt;/code&gt; and to the &lt;code&gt;DSN_STATEMNT_TABLE&lt;/code&gt; for your edification.&lt;br /&gt;
&lt;code&gt;BIND&lt;/code&gt; also writes a lot of information to multiple &lt;code&gt;CATALOG&lt;/code&gt; tables, documenting the fact that the &lt;code&gt;BIND&lt;/code&gt; did occur. In fact, the tattooed DBRM, which is not used at run time, is moved into the &lt;code&gt;CATALOG&lt;/code&gt;. Objects chosen by the optimizer are documented in the &lt;code&gt;CATALOG&lt;/code&gt; in cross-reference tables. And &lt;code&gt;BIND&lt;/code&gt; parameters are recorded in the &lt;code&gt;CATALOG&lt;/code&gt; also.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;WHERE ARE THE INSTRUCTIONS?&lt;/h3&gt;It&#39;s interesting that the actual instructions for the access path are not written to the &lt;code&gt;CATALOG&lt;/code&gt;. You can&#39;t look at information in the DB2 &lt;code&gt;CATALOG&lt;/code&gt; to figure out whether a query will do synchronous or asynchronous reads at run time. You can&#39;t tell if the query will match on three columns of an index or five. The actual run-time instructions aren&#39;t stored in the &lt;code&gt;CATALOG&lt;/code&gt;. They&#39;re definitely not in the DBRM, which is input to the &lt;code&gt;BIND&lt;/code&gt;. So, where are they stored?&lt;br /&gt;
This question is one of the many reasons that this column grew into two parts. Where in the heck are the run-time instructions? Should you ever use the &lt;code&gt;PLAN_TABLE&lt;/code&gt; at run time? Are the run-time instructions in a package, a plan, or a version? All of the above? The infamous &quot;it depends&quot;? Where are the instructions stored while you wait for the LOAD module to run? Like many question come in mind.... so don&#39;t worry ....and &lt;br /&gt;
Stay tuned for answers to these and other questions..........................</description><link>http://db2database.blogspot.com/2010/08/precompilerbindplans-dbrms-packages_12.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-8581666790825669028</guid><pubDate>Wed, 11 Aug 2010 17:07:00 +0000</pubDate><atom:updated>2010-08-11T10:07:07.588-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cobol</category><category domain="http://www.blogger.com/atom/ns#">db2</category><title>Precompiler+Bind+Plans + DBRMS + Packages + Collections + Versions = Confusion</title><description>No matter how long programmers have worked with DB2 for z/OS and OS/390 , they still ask the difference between a plan and a package — and what in the heck a collection is. I planned to write post on this topic so i also remember it...... one by one ....&lt;br /&gt;
&lt;div style=&quot;color: red;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3 style=&quot;color: red;&quot;&gt;THE PRECOMPILER&lt;/h3&gt;The DB2 Precompiler does &lt;i&gt;not&lt;/i&gt; need DB2 to run. It carries out three primary tasks as it reads the program serially, top-to-bottom, looking for DB2 delimiters.&lt;br /&gt;
First, if the delimiters surrounded an &lt;code&gt;INCLUDE&lt;/code&gt; statement, the Precompiler goes to the &lt;code&gt;INCLUDE&lt;/code&gt; library named in the job control language data definition statement and pulls the included &lt;code&gt;MEMBERNAME&lt;/code&gt; into the program. This &lt;i&gt;function&lt;/i&gt; is the same as a COBOL &lt;code&gt;COPY MEMBERNAME&lt;/code&gt;, but the timing is different. COBOL &lt;code&gt;COPYBOOK&lt;/code&gt;s get copied in at &lt;code&gt;COMPILE&lt;/code&gt; time; DB2 &lt;code&gt;INCLUDE&lt;/code&gt;s get copied in at precompile time. The only difference between an SQL &lt;code&gt;INCLUDE&lt;/code&gt; and a COBOL &lt;code&gt;COPY&lt;/code&gt; is timing. The most common item &lt;code&gt;INCLUDE&lt;/code&gt;d in a program was (and is) a &lt;code&gt;DCLGEN&lt;/code&gt;. &lt;code&gt;DCLGEN&lt;/code&gt;s are structures that describe a table. One &lt;code&gt;DCLGEN&lt;/code&gt; is usually included for each table that the program will access at run time. Each &lt;code&gt;DCLGEN&lt;/code&gt; is a two-part structure consisting of a &lt;code&gt;DECLARE TABLE&lt;/code&gt; statement, which describes the table in DB2 SQL language, and a COBOL structure that describes the table using an 01-Level COBOL working storage structure (much like a typical copybook for a VSAM file).&lt;br /&gt;
&lt;br /&gt;
Second, if the delimiters surround an SQL statement, the precompiler does a very basic syntax check to make sure that the column and table names are valid (that they&#39;re spelled correctly and that the columns and the table exist). Many DBAs and programmers think that this validation is done by reading the DB2 CATALOG, but they&#39;re wrong. Remember, the precompiler doesn&#39;t need DB2 or its CATALOG. DB2 might not even be installed on the machine. The DB2 Precompiler uses the top part of the DCLGEN to validate the SQL syntax.&lt;br /&gt;
&lt;br /&gt;
The third, and most important, task performed by the DB2 Precompiler is to split the program into two parts: a COBOL and a DB2 part. All of the SQL that the programmer carefully embedded is stripped out of the program and put into its own partitioned data set (PDS) member, called a DBRM. A single program containing two languages, COBOL and SQL, goes into the DB2 Precompiler and two pieces come out. Twins, but fraternal twins — much like Arnold Schwarzenegger and Danny DeVito. Arnold looks just like his COBOL mother, and Danny looks just like his DB2 father. COBOL Arnold, with all of the SQL commented out, goes down one path in life. SQL Danny, containing only SQL, goes down a different path in life.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
The twins, separated at birth, have a tendency to lose each other. To help the twins find each other later in life (in other words, at run time), the precompiler engraves each with identical tattoos. The tattoo is carried forward with COBOL Arnold, through compile and link edit, into the &lt;code&gt;LOAD&lt;/code&gt; module in the &lt;code&gt;LOAD&lt;/code&gt; library. The tattoo is part of the run-time executable code of the &lt;code&gt;LOAD&lt;/code&gt; module. The same tattoo is carried forward with SQL Danny through &lt;code&gt;BIND&lt;/code&gt;. &lt;code&gt;BIND&lt;/code&gt; is to SQL what &lt;code&gt;COMPILE&lt;/code&gt; is to COBOL. The purpose of COBOL &lt;code&gt;COMPILE&lt;/code&gt; is to come up with run-time code for the COBOL. The purpose of &lt;code&gt;BIND&lt;/code&gt; is to come up with run-time executable code for the SQL.&lt;br /&gt;
&lt;br /&gt;
Both sets of code bear identical tattoos (timestamps or consistency tokens).&lt;br /&gt;
So, the COBOL twin becomes a transportable load module in the COBOL &lt;code&gt;LOADLIB&lt;/code&gt; and the SQL becomes a transportable DBRM in the &lt;code&gt;DBRMLIB&lt;/code&gt;. Just as the COBOL twin had to be compiled, the DBRM twin has to go through &lt;code&gt;BIND&lt;/code&gt; to create the run-time executable code for the DB2 portion of the COBOL program and put that executable code into the &quot;right&quot; DB2 subsystem.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;color: red;&quot;&gt;&amp;nbsp;&lt;/h3&gt;</description><link>http://db2database.blogspot.com/2010/08/precompilerbindplans-dbrms-packages.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-5108836106672450762</guid><pubDate>Mon, 09 Aug 2010 12:22:00 +0000</pubDate><atom:updated>2010-08-09T05:22:45.491-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">FTP</category><category domain="http://www.blogger.com/atom/ns#">mainframe</category><title>Using FTP to Download Files from the IBM Mainframe to a PC</title><description>&lt;span style=&quot;font-family: Arial;&quot;&gt;To download files from your IBM mainframe account to a        PC, you must first make sure&lt;span lang=&quot;en-us&quot;&gt; that the files&lt;/span&gt; are        transferable. Some of your files &lt;span lang=&quot;en-us&quot;&gt;may be &lt;/span&gt;stored on        the IBM mainframe&#39;s minidisk as A0 mode. In order to transfer them, you        must change the mode to A1. The instructions below explain how to check        your files, change them &lt;span lang=&quot;en-us&quot;&gt;all &lt;/span&gt;to A1 mode, and then        transfer them&lt;span lang=&quot;en-us&quot;&gt; to a PC&lt;/span&gt;.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;Preparing Your Files to be Downloaded:&lt;/b&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;1.&lt;/b&gt; Log in to your account on the IBM mainframe.        For instructions on how to log in, refer to:&lt;/span&gt;       &lt;br /&gt;
&lt;blockquote&gt;         &lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;a href=&quot;http://www.temple.edu/cs/ibmmigration/vmqws.html&quot; target=&quot;_blank&quot;&gt;Accessing the IBM Mainframe with a          PC&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          - or -&lt;br /&gt;
&lt;a href=&quot;http://www.temple.edu/cs/ibmmigration/vmtn3270.html&quot; target=&quot;_blank&quot;&gt;Accessing the IBM Mainframe with a        Macintosh&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;2.&lt;/b&gt; Make sure the file you wish to copy is in        your account by typing at the Ready prompt: &lt;b&gt;filelist&lt;/b&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;You will see a list of your files and the minidisk on        which they are stored.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;[&lt;b&gt;Optional:&lt;/b&gt;&amp;nbsp; If you wish to view a file,        type &lt;b&gt;browse&lt;/b&gt; in the CMD column in front of the filename.&amp;nbsp;When        you have finished viewing the file, press &lt;b&gt;F3&lt;/b&gt; to return &lt;span lang=&quot;en-us&quot;&gt;to &lt;/span&gt;the filelist.]&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;3.&lt;/b&gt; Press &lt;b&gt;F3&lt;/b&gt; to return to the Ready        prompt.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;4.&lt;/b&gt; Then to change all your files to A1 mode, at        the Ready prompt type:&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Courier;&quot;&gt;&lt;b&gt;rename * * A0 = = A1&lt;/b&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;5.&lt;/b&gt; Log out of your account by typing        &lt;b&gt;logout&lt;/b&gt; at the Ready prompt.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;Downloading Your Files&lt;/b&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;1.&lt;/b&gt; On the PC, create a folder to store the        files you will download from the IBM mainframe.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;2.&lt;/b&gt; Click on the &lt;b&gt;Start&lt;/b&gt; button and select        &lt;b&gt;Run&lt;/b&gt;.&amp;nbsp; &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;3.&lt;/b&gt; In the Open box, type: &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;ftp vm.temple.edu &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;and press        Enter.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;4.&lt;/b&gt; At the User prompt, enter your IBM mainframe        username and press Enter.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;5.&lt;/b&gt; At the Password prompt, enter your IBM        mainframe password and press Enter.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;i&gt;&lt;b&gt;Note:&lt;/b&gt; Once you access FTP (File Transfer        Protocol), you can type &lt;b&gt;help&lt;/b&gt; at the ftp&amp;gt; prompt to see a list of        FTP commands. For a short description of a command&#39;s function, type        &lt;b&gt;help&lt;/b&gt; and the command such as &lt;b&gt;help&lt;/b&gt; get. &lt;/i&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;6.&lt;/b&gt; At the ftp&amp;gt; prompt, type&lt;span lang=&quot;en-us&quot;&gt;:&lt;/span&gt; &lt;/span&gt;       &lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;lcd &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;i&gt;folder&lt;/i&gt;&lt;/span&gt;&lt;i&gt;        &lt;/i&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;where &lt;b&gt;folder&lt;/b&gt; is the full path of the folder        that will store your IBM mainframe files. For example, if you created a        folder called &lt;i&gt;vmfiles&lt;/i&gt; on the Windows desktop, you would type:        &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;lcd c:\windows\desktop\&lt;/b&gt;&lt;i&gt;vmfiles&lt;/i&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Then press Enter.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;7.&lt;/b&gt; &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;Optional:&lt;/span&gt;&lt;/b&gt; If        you want to see a list of files in the drive you specified, type        &lt;b&gt;dir&lt;/b&gt;.&lt;i&gt; Note that you can scroll up and down to view all the files        in your account.&lt;/i&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;8. &lt;/b&gt;&lt;span lang=&quot;en-us&quot;&gt;If you are not        &lt;/span&gt;downloading a SAS &lt;span lang=&quot;en-us&quot;&gt;transport file&lt;/span&gt;, continue        to the next step. Otherwise, if you are downloading a SAS &lt;span lang=&quot;en-us&quot;&gt;transport file&lt;/span&gt;, type&lt;b&gt; binary&lt;/b&gt;. &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;i&gt;&lt;b&gt;Note:&lt;/b&gt; After you download a file as binary,        you can return to the default setting (ascii text) by typing        &lt;b&gt;ascii&lt;/b&gt;&lt;/i&gt;. &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;9.&lt;/b&gt; &lt;span lang=&quot;en-us&quot;&gt;You can now d&lt;/span&gt;ownload        individual &lt;span lang=&quot;en-us&quot;&gt;files &lt;/span&gt;or groups of files from your IBM        mainframe account to the folder you specified by using one of the        following commands&lt;span lang=&quot;en-us&quot;&gt; below.&lt;/span&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;Downloading a single file:&lt;/b&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;To download a single file, type: &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;get&lt;/b&gt; &lt;i&gt;filename.filetype &lt;/i&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;For example, you might type &lt;b&gt;get&lt;/b&gt;        &lt;i&gt;report.sas&lt;/i&gt; or &lt;b&gt;get&lt;/b&gt; &lt;i&gt;myfile.spss&lt;/i&gt; or &lt;b&gt;get&lt;/b&gt;        &lt;i&gt;all.notebook&lt;/i&gt; depending on the name of your file. Note that there is        a period between the filename and filetype. &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;Downloading multiple files:&lt;/b&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;To download more than one file, use the wildcard (*)        character and the &lt;b&gt;mget&lt;/b&gt; command. The wildcard character tells the        system to transfer any file with the filetype specified in the command.        &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;For example, if you have several files with the        filetype or extension &lt;i&gt;sas&lt;/i&gt;, you can transfer all of them by typing:        &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;mget *&lt;i&gt;.&lt;/i&gt;&lt;/b&gt;&lt;i&gt;sas &lt;/i&gt;&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;i&gt;&lt;b&gt;Note: &lt;/b&gt;The &lt;b&gt;mget&lt;/b&gt; command will prompt        you to confirm the transfer of each file. If you want to turn off        interactive prompting, type &lt;b&gt;prompt &lt;/b&gt;and press Enter before issuing        the &lt;b&gt;mget&lt;/b&gt; command. To return to interactive prompting, just retype        &lt;b&gt;prompt&lt;/b&gt;&lt;/i&gt;.&lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;b&gt;10.&lt;/b&gt; To quit FTP, type &lt;b&gt;quit &lt;/b&gt;and then        press Enter. &lt;/span&gt;       &lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;</description><link>http://db2database.blogspot.com/2010/08/using-ftp-to-download-files-from-ibm.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-6673468711623685408</guid><pubDate>Sun, 08 Aug 2010 17:51:00 +0000</pubDate><atom:updated>2010-08-08T10:53:11.536-07:00</atom:updated><title>SQLCA</title><description>Contents of SQLCA:&lt;br /&gt;
&lt;br /&gt;
01 SQLCA. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05 SQLCAID PIC X(8). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05 SQLCABC PIC S9(9) COMP. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;05 SQLCODE PIC S9(9) COMP. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05 SQLERRM. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 49 SQLERRML PIC S9(4) COMP. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 49 SQLERRMC PIC X(70). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05 SQLERRP PIC X(8). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05 SQLERRD OCCURS 6 TIMES PIC S9(9) COMP. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05 SQLWARN. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN0 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN1 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN2 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10 SQLWARN3 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN4 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN5 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN6 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10 SQLWARN7 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05 SQLEXT. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN8 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARN9 PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLWARNA PIC X(1). &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 SQLSTATE PIC X(5).&lt;br /&gt;
&lt;br /&gt;
The SQLCA is described in the following table, including the field names used in each language, the data type, and a discussion of the purpose of each field.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://draft.blogger.com/&quot; name=&quot;table1&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;SQLCA :- &lt;em&gt;Description&lt;/em&gt;&lt;/h1&gt;&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cols=&quot;5&quot; frame=&quot;void&quot; rules=&quot;none&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;93&quot;&gt;&lt;col width=&quot;87&quot;&gt;&lt;col width=&quot;101&quot;&gt;&lt;col width=&quot;96&quot;&gt;&lt;col width=&quot;479&quot;&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; bgcolor=&quot;#ff0000&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot; width=&quot;93&quot;&gt;&lt;b&gt;COBOL Name&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; bgcolor=&quot;#ff0000&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot; width=&quot;87&quot;&gt;&lt;b&gt;C Name&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; bgcolor=&quot;#ff0000&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot; width=&quot;101&quot;&gt;&lt;b&gt;PL/I Name&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; bgcolor=&quot;#ff0000&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot; width=&quot;96&quot;&gt;&lt;b&gt;Data Type&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; bgcolor=&quot;#ff0000&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot; width=&quot;479&quot;&gt;&lt;b&gt;Purpose &lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLCAID&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlcaid&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLCAID&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(8)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;A character string (SQLCA) that identifies the beginning of the SQLCA.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLCABC&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlcabc&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLCABC&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Specifies the length of the SQLCA. Value is always 136.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLCODE&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlcode&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLCODE&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Contains a return code pertaining to the most recent SQL statement executed. Important values are: 0 Statement executed successfully (may have had warnings). &amp;gt;0 Executed successfully but with an exception condition. &amp;lt;0 An error occurred. 100 End of data reached. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRML&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrml&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRML&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;smallint&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;The length of the SQLERRMC string (0 to 70). If 0, the value of SQLERRMC is not pertinent.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRMC&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrmc&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRMC&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;varchar (70)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;One or more tokens, separated by x&#39;ff&#39;, that are substituted into error messages to provide specific information about an error condition.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRP&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrp&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRP&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(8)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Indicates the product signature in the format pppvvrrm where: &lt;br /&gt;
ppp = XDB &lt;br /&gt;
vv = XDB version number &lt;br /&gt;
rr = XDB release number &lt;br /&gt;
m = Operating system: &lt;br /&gt;
N = NT &lt;br /&gt;
O = OS/2 &lt;br /&gt;
D = DOS &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrd[0]&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Reserved for internal use.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(2)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrd[1]&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(2)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Reserved for internal use.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(3)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrd[2]&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(3)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Number of rows affected by an INSERT, UPDATE or DELETE command.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(4)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrd[3]&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(4)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Not used by XDB.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(5)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrd[4]&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(5)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Contains the position or column of a syntax error for a PREPARE or EXECUTE IMMEDIATE statement.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(6)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlerrd[5]&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLERRD(6)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;integer&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Not used by XDB.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN0&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn0&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN0&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Flag used to signal warning condition.If blank,then all other SQLWARN variables are blank. If value is W, then at least one other SQLWARN has a W.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN1&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn1&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN1&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;If value is W, then at least one column&#39;s value was truncated when stored in a host variable.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN2&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn2&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN2&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;If value is W,then at least one null value was eliminated from the argument of a column function.May not be set to W for a MIN function because its result are not dependent on the elimination of null values. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN3&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn3&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN3&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;If value is W,then the number of columns is larger than the number of host variables.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN4&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn4&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN4&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;If value is W,then a prepared UPDATE or DELETE statement does not contain a WHERE clause.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN5&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn5&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN5&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;If value is W,your program tried to create an index that contains a field that exceeds the maximum length for an index. This use is XDB-specific.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN6&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn6&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN6&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Not used by XDB.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN7&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn7&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN7&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Not used by XDB.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN8&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn8&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN8&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Not used by XDB.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN9&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarn9&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARN9&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Not used by XDB.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARNA&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlwarna&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLWARNA&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(1)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Not used by XDB.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot; height=&quot;16&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLSTATE&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;sqlstate&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;SQLSTATE&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;char(5)&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;border-bottom: #000000 1px solid; border-left: #000000 1px solid; border-right: #000000 1px solid; border-top: #000000 1px solid;&quot;&gt;Contains SQLSTATE value for this error.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red; font-size: large;&quot;&gt;SQL CODES&lt;/span&gt; &lt;/b&gt;&lt;br /&gt;
Successful Execution SQLCODE&lt;br /&gt;
000 SUCCESSFUL EXECUTION&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: red;&quot;&gt;Warning SQLCODES&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
+100 ROW NOT FOUND FOR FETCH, UPDATE OR DELETE, OR THE RESULT OF A QUERY IS AN EMPTY TABLE &lt;br /&gt;
+162 TABLE SPACE database-name, tablespace-name HAS BEEN PLACED IN CHECK PENDING&lt;br /&gt;
+304 A VALUE WITH DATA TYPE data-type1 CANNOT BE ASSIGNED TO A HOST VARIABLE BECAUSE THE VALUE IS NOT WITHIN THE RANGE OF THE HOST VARIABLE IN POSITION position-number WITH DATA TYPE data-type2&lt;br /&gt;
+402 LOCATION location IS UNKNOWN&lt;br /&gt;
+403 THE LOCAL OBJECT REFERENCED BY THE CREATE ALIAS STATEMENT DOES NOT EXIST&lt;br /&gt;
+558 THE WITH GRANT OPTION IS IGNORED BECAUSE GRANT IS TO PUBLIC&lt;br /&gt;
+560 THE WITH GRANT OPTION IS IGNORED FOR UPDATE (COLUMN-LIST)&lt;br /&gt;
+561 THE ALTER AND INDEX PRIVILEGES CANNOT BE GRANTED TO “PUBLIC AT ALL LOCATIONS”&lt;br /&gt;
+625 THE DEFINITION OF TABLE table-name HAS BEEN CHANGED TO INCOMPLETE&lt;br /&gt;
+802 EXCEPTION ERROR exception-type HAS OCCURRED DURING operation-type OPERATION ON data-type DATA, POSITION position-number. &lt;br /&gt;
&lt;br /&gt;
For error code check my next post......</description><link>http://db2database.blogspot.com/2010/08/contents-of-sqlca-01-sqlca.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-8151580560569312891</guid><pubDate>Sun, 08 Aug 2010 14:40:00 +0000</pubDate><atom:updated>2010-08-08T07:40:30.670-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">db2</category><category domain="http://www.blogger.com/atom/ns#">locking</category><title>Locking in DB2</title><description>Locking and concurrency issues can have a significant impact on the performance of a DB2 application. A good understanding of how the various serialization mechanisms work in DB2 will help application developers to take informed design decisions. Happy Reading!&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Locking &amp;amp; Lock Management&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Locking and lock management are a must in any multithread environment that uses a shared, updateable database, so that all users access the same version at any one time. Without proper locking, application processes that update would have to be single-threaded, thereby reducing throughput and increasing response time. Running batch processes concurrently with online processes would be nearly impossible.&lt;br /&gt;
&lt;br /&gt;
Locking is required to allow inter-process concurrency and avoid data integrity problems. Locking is therefore a fundamental and implicit system service provided by a database management system (DBMS). Two or more independent application processes must be prevented from simultaneously accessing and updating specific data occurrences, whether the occurrences be called rows as in DB2, segments as in information management system (IMS), or logical records as for the virtual storage access method (VSAM). &lt;br /&gt;
&lt;br /&gt;
Locking is a partnership between the DBMS which provides concurrency and consistency and the application that drives granularity and locking. Everything that the DBMS can “guarantee”, the application can “undo” with a combination of caching data across commits, failure to check return codes, or inadequate and incorrect restart logic.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Locking Modes&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
DB2 takes locks on table spaces, tables (if table space is segmented), and pages or rows. The three locking modes are:&lt;br /&gt;
&lt;br /&gt;
Share – The lock owner and any concurrent process can read, but not change, the locked DB2 object. Other concurrent processes may acquire Share or Update locks on the DB2 object. Also called S-lock.&lt;br /&gt;
&lt;br /&gt;
Update – The lock owner can read the DB2 object and intends to change it. Concurrent processes may acquire Share locks and read the DB2 object but no other process can acquire an Update lock. Update locks must be promoted to Exclusive locks before DB2 actually changes the DB2 object. Also called U-lock.&lt;br /&gt;
&lt;br /&gt;
Exclusive – Only the lock owner can read or change the locked data, with exceptions like concurrent applications using uncommitted read isolation. Also called X-lock.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Basic reasons for Locking&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Reason 1 - Losing updated data&lt;br /&gt;
&lt;br /&gt;
Without concurrency control, two processes, A and B, might both read the same row from the database, and both calculate new values for one of its columns, based on what they read. If A updates the row with its new value, and then B updates the same row, A&#39;s update is lost.&lt;br /&gt;
&lt;br /&gt;
With locking, if the application uses updatable cursors (i.e., with ‘for update of’ clause), DB2 grants a U-lock to user A. User B requests for U-lock and will wait till user A releases the lock (either commits or rolls back). If updatable cursors are not used, then DB2 grants an S-lock to User A and consequently grants an S-lock to User B. When User A and User B try to update the column value, they get into a deadlock situation. When a deadlock exists, DB2 decides whether User A or User B should be rolled back. &lt;br /&gt;
&lt;br /&gt;
Reason 2 - Reading uncommitted data&lt;br /&gt;
&lt;br /&gt;
Also without concurrency control, process A might update a value in the database, and process B might read that value before it was committed. Then, if A&#39;s value is not later committed, but backed out, B&#39;s calculations are based on uncommitted (and presumably incorrect) data.&lt;br /&gt;
&lt;br /&gt;
With locking, DB2 grants a X-lock to user A. User B tries to get a S-lock and will have to wait till user A commits or rolls back the change.&lt;br /&gt;
&lt;br /&gt;
Reason 3 - Unrepeatable read within a unit of work&lt;br /&gt;
&lt;br /&gt;
User A wants to read the same data twice. It is essential that another user has not updated the data between the two read processes.&lt;br /&gt;
&lt;br /&gt;
Let us look at the following example:&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM EMP&lt;br /&gt;
&lt;br /&gt;
WHERE SALARY &amp;gt;&lt;br /&gt;
&lt;br /&gt;
(SELECT AVG(SALARY) FROM EMP)&lt;br /&gt;
&lt;br /&gt;
This SQL statement reads the EMP (employee) table twice: once to find the average salary and next to find all rows with salary greater than the average. Without any locking between the two read processes, another user can update the EMP table between the two read processes. This update can lead to a wrong result for user A.&lt;br /&gt;
&lt;br /&gt;
With DB2 locking, the following are the options the application developer can choose from depending on the need for concurrency:&lt;br /&gt;
&lt;br /&gt;
1. Use the package or plan isolation level repeatable read (RR), or use the WITH RR clause in the SQL SELECT statement.&lt;br /&gt;
&lt;br /&gt;
2. Lock the table in share or exclusive mode explicitly, although exclusive mode is an overkill in this particular case.&lt;br /&gt;
&lt;br /&gt;
3. Mark the table space Read-only. Option is not recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Effects of Locking&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Lock Suspension&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
An application process is suspended when it requests a lock that is already held by another application process and cannot be shared. The suspended process temporarily stops running. For example, using an application for inventory control, two users attempt to reduce the quantity on hand of the same item at the same time. The two lock requests are queued. The second request in the queue is suspended and waits until the first request releases its lock. Promotion to Update lock to Exclusive lock may cause a suspension if other processes are holding Share locks.&lt;br /&gt;
&lt;br /&gt;
The suspended process resumes running when:&lt;br /&gt;
&lt;br /&gt;
All processes that hold the conflicting lock release it.&lt;br /&gt;
&lt;br /&gt;
The requesting process times out or deadlocks and the process resumes to deal with an error condition.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Timeout&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
An application process is said to time out when it is terminated because it has been suspended for longer than a preset interval. COMMIT and ROLLBACK operations do not time out. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Deadlock&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
A deadlock occurs when two or more application processes each hold locks on resources that the others need and without which they cannot proceed.&lt;br /&gt;
&lt;br /&gt;
Jobs EMPLJCHG and PROJNCHG are two transactions. &lt;br /&gt;
&lt;br /&gt;
1.Job EMPLJCHG requests a lock for page A of table N while holding the lock on page B of table M. The job is suspended, because job PROJNCHG is holding an exclusive lock on page A.&lt;br /&gt;
&lt;br /&gt;
2.Job PROJNCHG requests a lock for page B of table M while holding the lock on page A of table N. The job is suspended, because job EMPLJCHG is holding an exclusive lock on page B. &lt;br /&gt;
&lt;br /&gt;
The situation is a deadlock. DB2 scans for deadlocked processes at regular intervals according to the value set as DEADLOCK TIME during installation. DB2 can roll back the current unit of work for one of the processes or request a process to terminate. That frees the locks and allows the remaining processes to continue. &lt;br /&gt;
&lt;br /&gt;
It is possible for two processes to be running on separate DB2 subsystems, each trying to access a resource at the other location. In that case, neither subsystem can detect that the two processes are in deadlock; the situation is resolved only when one process times out. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Lock sizes&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
For DB2 objects, we have the LOCKSIZE option on the CREATE TABLESPACE and ALTER TABLESPACE statements. The choices are ANY, ROW, PAGE, TABLE, or TABLESPACE, with ANY as the default.&lt;br /&gt;
&lt;br /&gt;
ANY permits DB2 to make the final choice and DB2 favors page locking as a good compromise between high concurrency and high CPU consumption. Most often, DB2 implicitly locks at the page level, but certain SQL DML statements may be such that DB2 has the option to use table or table-space level or even row locking as an alternative.&lt;br /&gt;
&lt;br /&gt;
PAGE is a good design default to allow for interprocess concurrency with read and write intent against a table. &lt;br /&gt;
&lt;br /&gt;
Row locking can be considered to improve concurrency still further (reduce suspensions, timeouts) but it may increase locking cost for sequential update processing and introduce more opportunities for deadlocks.&lt;br /&gt;
&lt;br /&gt;
The TABLE or TABLESPACE option should rarely be used in an online environment that emphasizes shared data. The explicit SQL statement LOCK TABLE is another option available. TABLE or TABLESPACE options could be useful where the data is read-only; a single user or an update process requires exclusive control over the table. Taking one lock on the entire table or table space saves the CPU overhead of locking individual pages as they are accessed. The more pages accessed by the process, the greater the savings. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Duration of Lock&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
The duration of a lock is defined as the length of time a lock is held and varies according to the type of lock. &lt;br /&gt;
&lt;br /&gt;
If a page or row is locked, DB2 acquires the lock only when it is needed (i.e., when individual pages or rows are accessed). When the lock is released depends on whether the data is accessed for read-only or for update and on the isolation level specified, but it is rarely held beyond the next commit point.&lt;br /&gt;
&lt;br /&gt;
Partition, table, and table space locks can be acquired when a plan is first allocated, or you can delay acquiring them until the resource they lock is first used. They can be released at the next commit point or be held until the program terminates. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Effects of Lock&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Effects of locking depend upon the size and duration of the locks. For maximum concurrency, locks on a small amount of data held for a short duration are better than locks on a large amount of data held for a long duration. However, acquiring a lock requires processor time, and holding a lock requires storage; thus, acquiring and holding one table space lock is more economical than acquiring and holding many page locks. So it is essentially a trade-off between performance and concurrency.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Lock Escalation&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Lock escalation is the releasing of all the page or row locks that a process holds on a single table or table space in order to acquire a table or table space lock instead. Lock escalation balances concurrency with performance by using page or row locks while a process accesses relatively few pages or rows, then changing to table space or table locks when the process accesses many.&lt;br /&gt;
&lt;br /&gt;
LOCKMAX is an option on the CREATE TABLESPACE and ALTER TABLESPACE statements. It defines the maximum number of page or row locks an application process can hold simultaneously in the table space. If a program requests more than that number, locks are escalated. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Objects of Lock&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The object of a lock is the resource being locked.&lt;br /&gt;
User data in target tables - A target table is a table that is accessed specifically in an SQL statement, either by name or through a view. Locks on those tables are the most common concern, and the ones over which you have most control.&lt;br /&gt;
&lt;br /&gt;
User data in related tables - Operations subject to referential constraints can require locks on related tables. For example, if you delete from a parent table, DB2 might delete rows from the dependent table as well. In that case, DB2 locks data in the dependent table as well as in the parent table. If the application uses triggers, any triggered SQL statements can cause additional locks to be acquired.&lt;br /&gt;
&lt;br /&gt;
DB2 internal objects – Locks on the following internal tables: Portions of the DB2 catalog, the skeleton cursor table (SKCT) representing an application plan, the skeleton package table (SKPT) representing a package and the database descriptor (DBD) representing a DB2 database.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Indexes and data-only locking&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
DB2 Version 4 introduced a new type of index (type 2 index) that eliminate locks on index pages so that your applications can avoid deadlock and timeout problems on the index. No index page locks are acquired during processing. Instead, DB2 uses a technique called data-only locking to serialize changes. Index page latches are acquired to serialize changes within a page and guarantee that the page is physically consistent. Acquiring page latches ensures that transactions accessing the same index page concurrently do not see the page in a partially changed state.&lt;br /&gt;
&lt;br /&gt;
The data locks can be held for a long duration such as until commit. However, the page latches are only held for a short duration while the transaction is accessing the page. Because the index pages are not locked, hot spot insert scenarios (which involve several transactions trying to insert different entries into the same index page at the same time) do not cause contention problems in the index.&lt;br /&gt;
&lt;br /&gt;
A query that uses index-only access might lock the data page or row, and that lock can contend with other processes that lock the data. However, using lock avoidance techniques can reduce the contention. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Lock Avoidance&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Lock avoidance is a mechanism used under certain circumstances by DB2 to increase concurrency, at the same time avoiding calls to IRLM to request a page or row lock. &lt;br /&gt;
&lt;br /&gt;
In a lock-avoidance situation, DB2 reads a page without first taking an IRLM lock; hence, the page might contain uncommitted data. To prevent retrieval of uncommitted data, DB2 uses a combination of mechanisms:&lt;br /&gt;
&lt;br /&gt;
Page latching controlled by DB2 is a very efficient way to ensure physical consistency of the page, just as locks ensure that data is committed.&lt;br /&gt;
&lt;br /&gt;
Commit Log Sequence Number (CLSN) to check for the committed state at a page level - The page oriented CLSN technique takes advantage of the page log relative byte address (last change RBA) in the header of every page. If the page log relative byte address value of the page is less than the CLSN for the page set, all of the rows in the page are in a committed state and no lock is required to ensure the logical consistency of the data in the page. &lt;br /&gt;
&lt;br /&gt;
Possibly UNCommitted (PUNC) a deeper checking at a row level, done only if the CLSN check fails – Row-oriented PUNC technique checks the PUNC mark that indicates if an individual row in a page is committed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users have no direct control over the use of lock avoidance. Read-only SQL can use lock avoidance techniques to avoid locking. Other lock avoidance or reduction techniques are use of CURRENTDATA(NO), ACQUIRE(USE), RELEASE(DEALLOCATE), isolation, lock size and frequent commits.</description><link>http://db2database.blogspot.com/2010/08/locking-in-db2.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-8891132265729351094</guid><pubDate>Thu, 22 Nov 2007 05:17:00 +0000</pubDate><atom:updated>2007-11-21T21:21:30.926-08:00</atom:updated><title>Tips for Writing High-performance SQL</title><description>&lt;span style=&quot;font-size:130%;&quot;&gt;Tips for Writing High-performance SQL&lt;/span&gt;&lt;br /&gt;These tips apply broadly when writing high-performance stored procedures. Unfortunately, unlike some tips, you can&#39;t simply apply most of them without first considering the nature and schema of the data you&#39;re querying.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Avoid using cursors (as well as other looping structures) as much as possible.&lt;/strong&gt;&lt;br /&gt;Cursors are inefficient, and database engines usually don&#39;t have the best loop implementations in terms of performance.&lt;br /&gt;On the database side, you can usually replace code involving cursors with aggregate SQL statements (SELECT, INSERT, and UPDATE) that use vector tables. All database engines are heavily optimized for aggregate statements, so even if a loop is unavoidable, it is always better to execute a few aggregate statements in a loop with a small number of iterations, than to create a cursor and execute simple statements over a large number of iterations.&lt;br /&gt;Even if initial performance tests, especially with a small amount of data, show cursors to be more efficient than a complex aggregate statement, it is worthwhile to try to optimize the operation by breaking it into smaller portions or using other approaches—unless you can guarantee that the data value will stay small. Cursor approaches will not scale.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Filter data wisely.&lt;br /&gt;&lt;/strong&gt;One alternative to using cursors uses a fall-through approach, filtering and aggregating data in multiple steps via a set of data storages, which could be physical tables, temporary tables, or table variables. It is usually best to include some aggregate filters into aggregate statements to filter out the majority of data in one simple shot whenever necessary, working on smaller amounts of data. Then you can proceed with joining and filtering, making sure to keep the number of join permutations under control at all times.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;It is usually more efficient to execute multiple statements with one condition than a single statement with multiple OR conditions…&lt;/strong&gt;&lt;br /&gt;… when executing UPDATE and DELETE statements against permanent database tables that can be accessed by multiple users simultaneously. This tip is especially important from the scalability point of view; from the performance point of view the difference is usually marginal. The major reason for the tip is the locking of the database records and the lock escalations that occur behind the scenes.&lt;br /&gt;&lt;strong&gt;Make wise distinctions between temp tables and table variables.&lt;br /&gt;&lt;/strong&gt;Table variables are in-memory structures that may work from 2-100 times faster than temp tables. But keep in mind that access to table variables gets slower as the volume of data they contain grows. At some point, table variables will overflow the available memory and that kills the performance. Therefore, use table variables only when their data content is guaranteed not to grow unpredictably; the breaking size is around several thousand records. For larger data volumes, I recommend temp tables with clustered indexes. Interestingly, I&#39;ve found that a temp table with one clustered index is often faster than having multiple simple indexes. In contrast, multiple simple indexes with physical tables are often faster than one clustered index.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Make careful distinctions between hard rules and assumptions.&lt;br /&gt;&lt;/strong&gt;This is more of a business design tip, which applies more to code design than to performance and scalability design in general. In real life however, performance and scalability are generally the first things to suffer from improper design. When rules are implemented as assumptions, they usually cause unnecessary calculations to be performed, affecting performance. However, when assumptions are implemented as rules they tend to cause errors and algorithm failures, which usually requires an urgent redesign. That, in turn, is usually performed with business constraints and results in inefficient final algorithms. That&#39;s because bad design decisions are often corrected in a rush and without sufficient resources—sometimes under pressure from customers whose businesses are usually in a critical stage when problems are uncovered, but must continue operating during the process.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pay attention to join order.&lt;br /&gt;&lt;/strong&gt;Using proper join order sometimes lets the database engine generate hints that execute joins with an optimal amount of records. Most database engines also support hard hints, but in most cases you should avoid using hard hints and let the database engine figure out the best way to do its job on its own.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Be careful when joining complex views…&lt;/strong&gt; &lt;br /&gt;…to other views and database tables in complex SELECT statements. When the database contains a significant amount of data, SQL Server engine tends to recalculate the execution plan of the resulting statement, which often results in an inefficient execution plan and may kill the performance. The most difficult part is that the behavior of SQL Server engine is inconsistent in that respect, and heavily depends on the database size, indexes, foreign keys, and other database structures and constraints. The consistent work-around is to pre-select data from the view into a temp table with the reasonable pre-filters, and then use that temp table in place of the underlying view.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Create indexes on temp tables wisely.&lt;br /&gt;&lt;/strong&gt;As mentioned in an earlier tip, clustered indexes are usually the best in terms of performance for temp tables; however, there is a difference between creating the index before or after inserting data into the temp table. Creating the index before the insert complicates the insert, because the database engine must order the selection. For complex selections such as those mentioned in Tip 7, the extra ordering may overcomplicate the overall statement and drastically degrade the performance. On the other hand, creating the index after the insert forces the database engine to recalculate the execution plan of the stored procedure every time it is called. Therefore, the decision is always a trade-off and you should make it based on the relative costs of the two possibilities.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;In general, try to avoid execution plan recalculation.&lt;/strong&gt;&lt;br /&gt;One common cause of recalculation occurs when the stored procedure contains several paths that depend on values passed in parameters. However, whether avoiding recalculation is possible depends on the complexity of the stored procedure and on other circumstances, such as those described in tip 8. When the engine does recalculate execution, performance always suffers; however, recalculating the execution plan of the caller does not force the execution plan recalculation of the called procedure (or view or function). Therefore, the workaround is to divide one stored procedure into multiple procedures (depending on the passed-in parameters), and then call the children from the parent conditionally. You should perform this subdivision very carefully though, because it can be a maintenance nightmare—but sometimes it seems to be the only way to achieve acceptable database performance and scalability.</description><link>http://db2database.blogspot.com/2007/11/tips-for-writing-high-performance-sql.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-7764438862138106796</guid><pubDate>Wed, 10 Oct 2007 09:39:00 +0000</pubDate><atom:updated>2007-10-10T02:40:09.515-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mainframe</category><title>mainframe tips list</title><description>&lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0739.html&quot;&gt;Wk. 39/2007&lt;/a&gt;:  Submitting jobs for parallel execution&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0737.html&quot;&gt;Wk. 37/2007&lt;/a&gt;:  IBM mainframe abbreviations&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0735.html&quot;&gt;Wk. 35/2007&lt;/a&gt;:  ISPF EDIT command COMP (compare)&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0733.html&quot;&gt;Wk. 33/2007&lt;/a&gt;:  Segmented tablespaces&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0731.html&quot;&gt;Wk. 31/2007&lt;/a&gt;:  A simple calculator&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0727.html&quot;&gt;Wk. 27/2007&lt;/a&gt;:  The difference between correlated and noncorrelated subselects&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0725.html&quot;&gt;Wk. 25/2007&lt;/a&gt;:  Execution of TSO batch programs&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0723.html&quot;&gt;Wk. 23/2007&lt;/a&gt;:  OPTIMIZE FOR n ROWS in SQL statements&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0721.html&quot;&gt;Wk. 21/2007&lt;/a&gt;:  TSO commands in COBOL and PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0719.html&quot;&gt;Wk. 19/2007&lt;/a&gt;:  A trip with FTP&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0717.html&quot;&gt;Wk. 17/2007&lt;/a&gt;:  SQL function VALUE (COALESCE)&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0714.html&quot;&gt;Wk. 14/2007&lt;/a&gt;:  Comparisons in REXX&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0712.html&quot;&gt;Wk. 12/2007&lt;/a&gt;:  Optimizing your OUTER JOINS&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0710.html&quot;&gt;Wk. 10/2007&lt;/a&gt;:  Your own TSO command processor&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0708.html&quot;&gt;Wk. 08/2007&lt;/a&gt;:  Using EXISTS in SQL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0706.html&quot;&gt;Wk. 06/2007&lt;/a&gt;:  More about deleting datasets&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0704.html&quot;&gt;Wk. 04/2007&lt;/a&gt;:  ISPF EDIT commands COPY, CREATE and REPLACE&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0702.html&quot;&gt;Wk. 02/2007&lt;/a&gt;:  Minimising the timeout risk when performing a DB2 INSERT&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0651.html&quot;&gt;Wk. 51/2006&lt;/a&gt;:  Variable DD names in PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0649.html&quot;&gt;Wk. 49/2006&lt;/a&gt;:  Reasonable use of ISPF KEYLIST&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0647.html&quot;&gt;Wk. 47/2006&lt;/a&gt;:  Validation using a DB2 trigger&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0645.html&quot;&gt;Wk. 45/2006&lt;/a&gt;:  Messages from ISPF services&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0643.html&quot;&gt;Wk. 43/2006&lt;/a&gt;:  Correlated subselects for versioning&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0641.html&quot;&gt;Wk. 41/2006&lt;/a&gt;:  Faster EDIT macroes&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0639.html&quot;&gt;Wk. 39/2006&lt;/a&gt;:  Assignment of DCB informations in PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0637.html&quot;&gt;Wk. 37/2006&lt;/a&gt;:  Problems using newcopy in CICS&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0635.html&quot;&gt;Wk. 35/2006&lt;/a&gt;:  Names of DB2 subsystems using data sharing&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0633.html&quot;&gt;Wk. 33/2006&lt;/a&gt;:  Dataset delete&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0631.html&quot;&gt;Wk. 31/2006&lt;/a&gt;:  Reuse of a DB2 image copy&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0627.html&quot;&gt;Wk. 27/2006&lt;/a&gt;:  TRANSMIT and RECEIVE of PO datasets&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0625.html&quot;&gt;Wk. 25/2006&lt;/a&gt;:  Smarter global temporary tables in DB2&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0623.html&quot;&gt;Wk. 23/2006&lt;/a&gt;:  Enlargement of a concatenation with one more dataset&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0621.html&quot;&gt;Wk. 21/2006&lt;/a&gt;:  Avoid SAVE of data in ISPF EDIT&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0619.html&quot;&gt;Wk. 19/2006&lt;/a&gt;:  The LIBDEF function in ISPF&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0617.html&quot;&gt;Wk. 17/2006&lt;/a&gt;:  Calling LOAD modules from REXX&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0615.html&quot;&gt;Wk. 15/2006&lt;/a&gt;:  Spaces in SQL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0613.html&quot;&gt;Wk. 13/2006&lt;/a&gt;:  Record splitting using SORT&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0611.html&quot;&gt;Wk. 11/2006&lt;/a&gt;:  Informations in HSM&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0609.html&quot;&gt;Wk. 09/2006&lt;/a&gt;:  SQL statements with joins, GROUP BY and HAVING&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0607.html&quot;&gt;Wk. 07/2006&lt;/a&gt;:  More SMS compression&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0605.html&quot;&gt;Wk. 05/2006&lt;/a&gt;:  Generic searches in ISPF&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0603.html&quot;&gt;Wk. 03/2006&lt;/a&gt;:  Join of columns with different definitions&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0601.html&quot;&gt;Wk. 01/2006&lt;/a&gt;:  Please help me out of this&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0550.html&quot;&gt;Wk. 50/2005&lt;/a&gt;:  The TRANSLATE function in REXX and PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0548.html&quot;&gt;Wk. 48/2005&lt;/a&gt;:  Calling CICS programs from batch or TSO&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0546.html&quot;&gt;Wk. 46/2005&lt;/a&gt;:  Testing return codes in batch TSO&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0544.html&quot;&gt;Wk. 44/2005&lt;/a&gt;:  -DIS UTIL and DIAGNOSE DISPLAY SYSUTIL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0542.html&quot;&gt;Wk. 42/2005&lt;/a&gt;:  A job step that always gets executed&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0540.html&quot;&gt;Wk. 40/2005&lt;/a&gt;:  Who is using my MQ queue&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0538.html&quot;&gt;Wk. 38/2005&lt;/a&gt;:  Global temporary tables in DB2&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0536.html&quot;&gt;Wk. 36/2005&lt;/a&gt;:  Start BookManager using your own bookshelf&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0534.html&quot;&gt;Wk. 34/2005&lt;/a&gt;:  Dataset copying using ISPF&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0529.html&quot;&gt;Wk. 29/2005&lt;/a&gt;:  IBM mainframe wildcards&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0527.html&quot;&gt;Wk. 27/2005&lt;/a&gt;:  Options SORTKEYS, SORTDEVT and SORTNUM for DB2 LOAD/REORG&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0525.html&quot;&gt;Wk. 25/2005&lt;/a&gt;:  Making your own HSM backup&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0523.html&quot;&gt;Wk. 23/2005&lt;/a&gt;:  Adjusting Dataset List defaults&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0521.html&quot;&gt;Wk. 21/2005&lt;/a&gt;:  The FIND ALL command&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0519.html&quot;&gt;Wk. 19/2005&lt;/a&gt;:  The HSM command TSO HSEND Q ACT&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0517.html&quot;&gt;Wk. 17/2005&lt;/a&gt;:  Making your own enqueue/dequeue mechanism in DB2&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0515.html&quot;&gt;Wk. 15/2005&lt;/a&gt;:  Writing to a local queue on another MQ subsystem&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0512.html&quot;&gt;Wk. 12/2005&lt;/a&gt;:  Optimizing the SELECT list in SQL statements&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0510.html&quot;&gt;Wk. 10/2005&lt;/a&gt;:  Controlling your COBOL modules using DD cards&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0508.html&quot;&gt;Wk. 08/2005&lt;/a&gt;:  Making less MQ remote queue definitions&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0506.html&quot;&gt;Wk. 06/2005&lt;/a&gt;:  Remove leading blanks using PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0504.html&quot;&gt;Wk. 04/2005&lt;/a&gt;:  CICS In-Storage tables&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0502.html&quot;&gt;Wk. 02/2005&lt;/a&gt;:  Making your MQ definitions in batch&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0452.html&quot;&gt;Wk. 52/2004&lt;/a&gt;:  IN lists in SQL statements&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0450.html&quot;&gt;Wk. 50/2004&lt;/a&gt;:  ISPF EDIT command HEX&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0448.html&quot;&gt;Wk. 48/2004&lt;/a&gt;:  Accessing main storage with PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0446.html&quot;&gt;Wk. 46/2004&lt;/a&gt;:  Line commands for ISPF Edit macros&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0444.html&quot;&gt;Wk. 44/2004&lt;/a&gt;:  Object oriented PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0442.html&quot;&gt;Wk. 42/2004&lt;/a&gt;:  SELECT * FROM table&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0440.html&quot;&gt;Wk. 40/2004&lt;/a&gt;:  DISTINCT used with UNION or UNION ALL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0438.html&quot;&gt;Wk. 38/2004&lt;/a&gt;:  Using SYSOUT=* to display dataset contens&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0436.html&quot;&gt;Wk. 36/2004&lt;/a&gt;:  CURRENT SQLID&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0434.html&quot;&gt;Wk. 34/2004&lt;/a&gt;:  Install of CICS definitions without using CEDA&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0432.html&quot;&gt;Wk. 32/2004&lt;/a&gt;:  User friendly BookManager&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0428.html&quot;&gt;Wk. 28/2004&lt;/a&gt;:  Returning bad SQLCODE when SELECTing zero rows&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0426.html&quot;&gt;Wk. 26/2004&lt;/a&gt;:  Dynamic call of programs from PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0424.html&quot;&gt;Wk. 24/2004&lt;/a&gt;:  Fallback of DB2 plans/packages&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0422.html&quot;&gt;Wk. 22/2004&lt;/a&gt;:  The OPC RECOVER function&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0420.html&quot;&gt;Wk. 20/2004&lt;/a&gt;:  WORK datasets for ISPF&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0418.html&quot;&gt;Wk. 18/2004&lt;/a&gt;:  Selfdocumenting REXX programs&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0416.html&quot;&gt;Wk. 16/2004&lt;/a&gt;:  SMS dataset compression&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0414.html&quot;&gt;Wk. 14/2004&lt;/a&gt;:  The DISCARD option on DB2 REORG&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0412.html&quot;&gt;Wk. 12/2004&lt;/a&gt;:  The ISPF EDIT command BNDS&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0410.html&quot;&gt;Wk. 10/2004&lt;/a&gt;:  The TSO command PROFILE&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0408.html&quot;&gt;Wk. 08/2004&lt;/a&gt;:  Dirty reads in SQL statements&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0405.html&quot;&gt;Wk. 05/2004&lt;/a&gt;:  Command SE in SDSF and JCL parameter SCHENV&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0403.html&quot;&gt;Wk. 03/2004&lt;/a&gt;:  Executing DFSORT using the DSN processor&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0352.html&quot;&gt;Wk. 52/2003&lt;/a&gt;:  Deleting all rows in a DB2 table&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0350.html&quot;&gt;Wk. 50/2003&lt;/a&gt;:  Issuing ISPF messages from REXX&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0348.html&quot;&gt;Wk. 48/2003&lt;/a&gt;:  The order of predicates in SQL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0346.html&quot;&gt;Wk. 46/2003&lt;/a&gt;:  Hypertext with ISPF Edit/View&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0344.html&quot;&gt;Wk. 44/2003&lt;/a&gt;:  Deletion of members&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0342.html&quot;&gt;Wk. 42/2003&lt;/a&gt;:  Index-screening in DB2&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0340.html&quot;&gt;Wk. 40/2003&lt;/a&gt;:  Changing data using File-Aid/Batch&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0338.html&quot;&gt;Wk. 38/2003&lt;/a&gt;:  Executing other SQL statements than SELECT using DSNTIAUL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0336.html&quot;&gt;Wk. 36/2003&lt;/a&gt;:  Changing your data using DFSORT&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0334.html&quot;&gt;Wk. 34/2003&lt;/a&gt;:  Speeding up deletion of rows in DB2 tables&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0332.html&quot;&gt;Wk. 32/2003&lt;/a&gt;:  Read any file using PL/1&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0329.html&quot;&gt;Wk. 29/2003&lt;/a&gt;:  Row level locking in DB2&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0327.html&quot;&gt;Wk. 27/2003&lt;/a&gt;:  Trapping of screen output from TSO commands&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0325.html&quot;&gt;Wk. 25/2003&lt;/a&gt;:  Allocation of DB2-spaces&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0323.html&quot;&gt;Wk. 23/2003&lt;/a&gt;:  Using % in front of TSO commands&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0321.html&quot;&gt;Wk. 21/2003&lt;/a&gt;:  Showing the contens of an ISPF-table&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0319.html&quot;&gt;Wk. 19/2003&lt;/a&gt;:  Disabling Abend-Aid in batch&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0316.html&quot;&gt;Wk. 16/2003&lt;/a&gt;:  Optimization of calls to VAG from COBOL programs&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0314.html&quot;&gt;Wk. 14/2003&lt;/a&gt;:  Finding rows in DB2 table with the same key&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0312.html&quot;&gt;Wk. 12/2003&lt;/a&gt;:  Concatenation on DD *&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0310.html&quot;&gt;Wk. 10/2003&lt;/a&gt;:  DB2 trace facilities: DSN-command and CAF&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0308.html&quot;&gt;Wk. 08/2003&lt;/a&gt;:  Asynchronous tasks in CICS: DELAY&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0306.html&quot;&gt;Wk. 06/2003&lt;/a&gt;:  Asynchronous tasks in CICS: START and CANCEL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0304.html&quot;&gt;Wk. 04/2003&lt;/a&gt;:  ISPF EDIT labels .ZF and .ZL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0302.html&quot;&gt;Wk. 02/2003&lt;/a&gt;:  Display Active (DA) in SDSF of many MVS-systems&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0250.html&quot;&gt;Wk. 50/2002&lt;/a&gt;:  Communicate with another CICS from your CICS&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0248.html&quot;&gt;Wk. 48/2002&lt;/a&gt;:  Cheating the DB2-optimizer with an IN-list&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0246.html&quot;&gt;Wk. 46/2002&lt;/a&gt;:  Special validations in ISPF panels&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0244.html&quot;&gt;Wk. 44/2002&lt;/a&gt;:  DB2 CAF interface&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0242.html&quot;&gt;Wk. 42/2002&lt;/a&gt;:  Names for variables in REXX&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0240.html&quot;&gt;Wk. 40/2002&lt;/a&gt;:  Errorhandling in CICS&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0238.html&quot;&gt;Wk. 38/2002&lt;/a&gt;:  DB2 REORG UNLOAD EXTERNAL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0236.html&quot;&gt;Wk. 36/2002&lt;/a&gt;:  Dynamic allocation of REXX-libraries&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0234.html&quot;&gt;Wk. 34/2002&lt;/a&gt;:  Generating ready-to-use SYSIN with DB2&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0232.html&quot;&gt;Wk. 32/2002&lt;/a&gt;:  Using ? in DB2 SQL EXPLAIN statements&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0228.html&quot;&gt;Wk. 28/2002&lt;/a&gt;:  Copying the same line to different places with ISPF EDIT&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0226.html&quot;&gt;Wk. 26/2002&lt;/a&gt;:  ISPF log dataset&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0224.html&quot;&gt;Wk. 24/2002&lt;/a&gt;:  Accessing main storage with COBOL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0222.html&quot;&gt;Wk. 22/2002&lt;/a&gt;:  Restore of HSM backups&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0220.html&quot;&gt;Wk. 20/2002&lt;/a&gt;:  A fast DB2 reorg&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0218.html&quot;&gt;Wk. 18/2002&lt;/a&gt;:  CICS-programs in status REQ&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0216.html&quot;&gt;Wk. 16/2002&lt;/a&gt;:  The ISPF command RETP&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0213.html&quot;&gt;Wk. 13/2002&lt;/a&gt;:  Setting return code to 0 in TSO batch&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0211.html&quot;&gt;Wk. 11/2002&lt;/a&gt;:  GROUP BY on expressions in SQL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0209.html&quot;&gt;Wk. 09/2002&lt;/a&gt;:  Who is using my dataset&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0207.html&quot;&gt;Wk. 07/2002&lt;/a&gt;:  The SQL CASE expression&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0205.html&quot;&gt;Wk. 05/2002&lt;/a&gt;:  Finding informations about COBOL abends&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0203.html&quot;&gt;Wk. 03/2002&lt;/a&gt;:  Browse and Edit of DB2 tables&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0152.html&quot;&gt;Wk. 52/2001&lt;/a&gt;:  Giving other users access to your datasets&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0150.html&quot;&gt;Wk. 50/2001&lt;/a&gt;:  The PROJECT, GROUP and TYPE fields in ISPF&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0148.html&quot;&gt;Wk. 48/2001&lt;/a&gt;:  Making your own bookshelf in BookManager&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0146.html&quot;&gt;Wk. 46/2001&lt;/a&gt;:  An ISPF-command trick&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0144.html&quot;&gt;Wk. 44/2001&lt;/a&gt;:  The table with exactly one row&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0142.html&quot;&gt;Wk. 42/2001&lt;/a&gt;:  Internal tables in REXX&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0140.html&quot;&gt;Wk. 40/2001&lt;/a&gt;:  Establishing the existance of a row using SQL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0138.html&quot;&gt;Wk. 38/2001&lt;/a&gt;:  The MAX-RC column in SDSF&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0136.html&quot;&gt;Wk. 36/2001&lt;/a&gt;:  The CUT-function in the 3270-emulator&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0134.html&quot;&gt;Wk. 34/2001&lt;/a&gt;:  Crossreferences between DB2-tables and programs&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0132.html&quot;&gt;Wk. 32/2001&lt;/a&gt;:  Syncronizing jobs with DISP=OLD&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0128.html&quot;&gt;Wk. 28/2001&lt;/a&gt;:  UNLOAD your DB2-data with DSNTIAUL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0126.html&quot;&gt;Wk. 26/2001&lt;/a&gt;:  LOAD module timestamp&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0124.html&quot;&gt;Wk. 24/2001&lt;/a&gt;:  ISPF tool ISRDDN with enqueues&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0122.html&quot;&gt;Wk. 22/2001&lt;/a&gt;:  Easy copying of datasets&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0120.html&quot;&gt;Wk. 20/2001&lt;/a&gt;:  Finding data inconsistency using SQL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0118.html&quot;&gt;Wk. 18/2001&lt;/a&gt;:  Some useful SDSF commands&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0115.html&quot;&gt;Wk. 15/2001&lt;/a&gt;:  When a dataset runs out of space&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0113.html&quot;&gt;Wk. 13/2001&lt;/a&gt;:  Useful RACF commands&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0111.html&quot;&gt;Wk. 11/2001&lt;/a&gt;:  TSO command HQ&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0109.html&quot;&gt;Wk. 09/2001&lt;/a&gt;:  ISPF View command REPLACE&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0107.html&quot;&gt;Wk. 07/2001&lt;/a&gt;:  Conversion of CHAR and VARCHAR to DECIMAL using SQL&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0105.html&quot;&gt;Wk. 05/2001&lt;/a&gt;:  Use of SPACE parameter with existing datasets&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0103.html&quot;&gt;Wk. 03/2001&lt;/a&gt;:  ISPF Edit line-commands L and F&lt;br /&gt;  &lt;a href=&quot;http://www.mainframesupport.dk/tips/tip0101.html&quot;&gt;Wk. 01/2001&lt;/a&gt;:  ISPF Edit macro ONLY</description><link>http://db2database.blogspot.com/2007/10/mainframe-tips-list.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4651364288740737757.post-4282867719173836256</guid><pubDate>Mon, 08 Oct 2007 11:28:00 +0000</pubDate><atom:updated>2007-10-08T04:42:50.689-07:00</atom:updated><title>what is DB2</title><description>A {relational database} from {IBM}. When running under IBM&#39;s MVS ({Multiple Virtual Storage}) {operating system}, DB2 is implemented on top of {VSAM} and uses its underlying data structures. DB2, later called &quot;DB2 Universal DataBase&quot;, also runs under {windows NT}, {AIX}, {Solaris} and, most recently, {Linux}&lt;br /&gt;&lt;br /&gt;DB2 is a family of relational database management system (RDBMS) products from IBM that serve a number of different operating system platforms. According to IBM, DB2 leads in terms of database market share and performance. Although DB2 products are offered for &lt;a class=&quot;inline&quot; href=&quot;http://searchenterpriselinux.techtarget.com/sDefinition/0,,sid94_gci213253,00.html&quot;&gt;Unix&lt;/a&gt;-based systems and personal computer operating systems, DB2 trails &lt;a class=&quot;inline&quot; href=&quot;http://searchoracle.techtarget.com/sDefinition/0,,sid39_gci214534,00.html&quot;&gt;Oracle&lt;/a&gt;&#39;s database products in UNIX-based systems and Microsoft&#39;s Access in Windows systems.&lt;br /&gt;&lt;br /&gt;In addition to its offerings for the &lt;a class=&quot;inline&quot; href=&quot;http://searchdatacenter.techtarget.com/sDefinition/0,,sid39_gci212516,00.html&quot;&gt;mainframe&lt;/a&gt; &lt;a class=&quot;inline&quot; href=&quot;http://searchdatacenter.techtarget.com/sDefinition/0,,sid9_gci212722,00.html&quot;&gt;OS/390&lt;/a&gt; and &lt;a class=&quot;inline&quot; href=&quot;http://searchdatacenter.techtarget.com/sDefinition/0,,sid39_gci213316,00.html&quot;&gt;VM&lt;/a&gt; operating systems and its mid-range &lt;a class=&quot;inline&quot; href=&quot;http://search400.techtarget.com/sDefinition/0,,sid_gci211599,00.html&quot;&gt;AS/400&lt;/a&gt; systems, IBM offers DB2 products for a cross-&lt;a class=&quot;inline&quot; href=&quot;http://searchservervirtualization.techtarget.com/sDefinition/0,,sid80_gci212797,00.html&quot;&gt;platform&lt;/a&gt; spectrum that includes UNIX-based &lt;a class=&quot;inline&quot; href=&quot;http://searchenterpriselinux.techtarget.com/sDefinition/0,,sid3_gci212482,00.html&quot;&gt;Linux&lt;/a&gt;, &lt;a class=&quot;inline&quot; href=&quot;http://searchdatacenter.techtarget.com/sDefinition/0,,sid41_gci532444,00.html&quot;&gt;HP-UX&lt;/a&gt;, Sun &lt;a class=&quot;inline&quot; href=&quot;http://searchenterpriselinux.techtarget.com/sDefinition/0,,sid87_gci214379,00.html&quot;&gt;Solaris&lt;/a&gt;, and SCO UnixWare; and for its personal computer &lt;a class=&quot;inline&quot; href=&quot;http://searchdatacenter.techtarget.com/definition/0,,sid44_gci212721,00.html&quot;&gt;OS/2&lt;/a&gt; operating system as well as for Microsoft&#39;s &lt;a class=&quot;inline&quot; href=&quot;http://searchwinit.techtarget.com/sDefinition/0,,sid80_gci213367,00.html&quot;&gt;Windows 2000&lt;/a&gt; and earlier systems. DB2 databases can be accessed from any application program by using Microsoft&#39;s Open Database Connectivity (&lt;a class=&quot;inline&quot; href=&quot;http://searchoracle.techtarget.com/sDefinition/0,,sid41_gci214133,00.html&quot;&gt;ODBC&lt;/a&gt;) interface, the Java Database Connectivity (&lt;a class=&quot;inline&quot; href=&quot;http://searchoracle.techtarget.com/sDefinition/0,,sid87_gci214050,00.html&quot;&gt;JDBC&lt;/a&gt;) interface, or a &lt;a class=&quot;inline&quot; href=&quot;http://searchsqlserver.techtarget.com/sDefinition/0,,sid1_gci213865,00.html&quot;&gt;CORBA&lt;/a&gt; interface broker.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On January 30th, 2006, IBM released a no-charge edition of DB2 called &lt;a class=&quot;external text&quot; title=&quot;http://www.ibm.com/developerworks/downloads/im/udbexp/?S_TACT=&quot; href=&quot;http://www.ibm.com/developerworks/downloads/im/udbexp/?S_TACT=105AGY59&amp;amp;S_CMP=WIKIDL&amp;amp;ca=dnl-ibmdb2wiki&quot; rel=&quot;nofollow&quot; s_cmp=&quot;WIKIDL&amp;amp;ca=&quot;&gt;DB2 9 Express-C&lt;/a&gt;. This was an expected response to the recently announced free versions of &lt;a title=&quot;Oracle database&quot; href=&quot;http://en.wikipedia.org/wiki/Oracle_database&quot;&gt;Oracle&lt;/a&gt; 10g and &lt;a title=&quot;Microsoft&quot; href=&quot;http://en.wikipedia.org/wiki/Microsoft&quot;&gt;Microsoft&lt;/a&gt; SQL Server. Express-C will have no limit on number of users or database size. It is deployable on Windows and Linux machines with up to two processors (4 cores in total) and up to 4GB of memory.&lt;br /&gt;&lt;br /&gt;DB2 can be administered from either the command-line or a GUI. The command-line interface requires more knowledge of the product but can be more easily scripted and automated. The GUI is a multi-platform Java client that contains a variety of wizards suitable for novice users. DB2 supports both SQL and XQuery. DB2 has native implementation of XML data storage, where XML data is stored as XML(not as relational data or CLOB data) for faster access using XQuery.</description><link>http://db2database.blogspot.com/2007/10/what-is-db2.html</link><author>noreply@blogger.com (Gautam lata)</author><thr:total>0</thr:total></item></channel></rss>