<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rui Miguel Feio &#187; JCL</title>
	<atom:link href="http://www.ruifeio.com/category/mainframe/jcl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ruifeio.com</link>
	<description>Sharing knowledge with the world</description>
	<lastBuildDate>Sat, 24 Dec 2011 15:42:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Most Common JCL Error Codes</title>
		<link>http://www.ruifeio.com/2011/12/03/most-common-jcl-error-codes/</link>
		<comments>http://www.ruifeio.com/2011/12/03/most-common-jcl-error-codes/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 18:53:36 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[MVS]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=736</guid>
		<description><![CDATA[S001 An I/O error ocurred. Check reason code for exact cause. Examples are trying to read beyond End of File, trying to write to an input file or a file length error. S002 Invalid I/O record, eg attempting to write a record that is longer than the maximum record length. S004 Error occured during OPEN. [...]]]></description>
			<content:encoded><![CDATA[<div align="Left">
<table width="567" border="0" cellpadding="0">
<tbody>
<tr>
<td width="133">S001</td>
<td width="428">An I/O error ocurred. Check reason code for exact cause. Examples are trying to read beyond End of File, trying to write to an input file or a file length error.</td>
</tr>
<tr>
<td width="133">S002</td>
<td width="428">Invalid I/O record, eg attempting to write a record that is longer than the maximum record length.</td>
</tr>
<tr>
<td width="133">S004</td>
<td width="428">Error occured during OPEN. Eg Invalid DCB.</td>
</tr>
<tr>
<td width="133">S013</td>
<td width="428">Error OPENing a dataset, eg PDS member does not exist, record length in program doesn’t match dataset’s record length.</td>
</tr>
<tr>
<td width="133">S0C1</td>
<td width="428">Operation Exception. Check for subscript errors, missing DD card, file not opened.</td>
</tr>
<tr>
<td width="133">S0C4</td>
<td width="428">Protection Exception/Storage Violation. Trying to access storage not available to the program. Can be caused by a subscripting error or reading/writing a file that isn’t open.</td>
</tr>
<tr>
<td width="133">S0C7</td>
<td width="428">Program Check Exception &#8211; Data. Check for spaces in a packed decimal or numeric field. Check to see if record layouts or file layouts have been changed.</td>
</tr>
<tr>
<td width="133">Sx22</td>
<td width="428">Job has been cancelled. The value of x will vary depending on the way the job was cancelled. S222 means job was cancelled by a user or operator without a dump. If a TSO session times out you will probably get an S522 abend code.</td>
</tr>
<tr>
<td width="133">S806</td>
<td width="428">Unable Link or Load. The job was unable to find the specified load module. Check that the job is looking at the correct Load Libraries, specify a STEPLIB if required.</td>
</tr>
<tr>
<td width="133">S80A</td>
<td width="428">Not enough Virtual Sorage to satisfy a GETMAIN or FREEMAIN request.</td>
</tr>
<tr>
<td width="133">S822</td>
<td width="428">Unable to obtain to obtain enough space to satisfy a REGION= request May need to change REGION statement in the JCL..</td>
</tr>
<tr>
<td width="133">S878</td>
<td width="428">Not enough storage available to satisfy a GETMAIN or FREEMAIN request.. Job was anable to allocate an area of memory of the correct size. Try Specifying or amending the ‘REGION=’ JCL statement.</td>
</tr>
<tr>
<td width="133">S913</td>
<td width="428">You are trying to access a dataset which you are not authorized to use.</td>
</tr>
<tr>
<td width="133">Sx37</td>
<td width="428">Unable to allocate enough storage for a dataset. You might need to increase the amount of primary and secondary space to be allocated for a dataset in the ‘SPACE=’ parameter, or you may have to move the dataset to a different DASD devive which has enought space to store the dataset. ‘x’ will vary, likely Abends are SB37, SD37 or SE37.</td>
</tr>
<tr>
<td width="133">U1020</td>
<td width="428">I/O Logic error. Typical reasons are; trying to write to a file opened as input; Rewrite without a previous read. See the message IGZ020I for details of the exact reason.</td>
</tr>
<tr>
<td width="133">U1035</td>
<td width="428">Inavlid OPEN/CLOSE. Check there is a DD statement for the file. See the message IGZ035I for more detailed information.</td>
</tr>
<tr>
<td width="133"></td>
<td width="428"></td>
</tr>
<tr>
<td width="49">001</td>
<td width="521">I/O ERROR</td>
</tr>
<tr>
<td width="49">002</td>
<td width="521">I/O INVALID RECORD</td>
</tr>
<tr>
<td width="49">004</td>
<td width="521">OPEN ERROR</td>
</tr>
<tr>
<td width="49">008</td>
<td width="521">I/O SYNAD ERROR</td>
</tr>
<tr>
<td width="49">013</td>
<td width="521">OPEN ERROR</td>
</tr>
<tr>
<td width="49">028</td>
<td width="521">PAGING I/O ERROR</td>
</tr>
<tr>
<td width="49">0CX</td>
<td width="521">PROGRAM CHECK EXCEPTIONS:</p>
<table width="100%" border="0" cellpadding="0">
<tbody>
<tr>
<td width="20%">0C1</td>
<td width="80%">OPERATION</td>
</tr>
<tr>
<td width="20%">0C4</td>
<td width="80%">PROTECTION / ADDRESSING</td>
</tr>
<tr>
<td width="20%">0C5</td>
<td width="80%">ADDRESSING</td>
</tr>
</tbody>
</table>
<p>&nbsp;</td>
</tr>
<tr>
<td width="49">706</td>
<td width="521">NON-EXECUTABLE PROGRAM</td>
</tr>
<tr>
<td width="49">804</td>
<td width="521">INSUFFICIENT VIRTUAL STORAGE</td>
</tr>
<tr>
<td width="49">806</td>
<td width="521">UNABLE TO LOAD (LINK ETC) PROGRAM</td>
</tr>
<tr>
<td width="49">80A</td>
<td width="521">INSUFFICIENT VIRTUAL STORAGE</td>
</tr>
<tr>
<td width="49">878</td>
<td width="521">INSUFFICIENT VIRTUAL STORAGE</td>
</tr>
<tr>
<td width="49">737</td>
<td width="521">I/O ERROR</td>
</tr>
<tr>
<td width="49">A14</td>
<td width="521">I/O ERROR</td>
</tr>
<tr>
<td width="49">B37</td>
<td width="521">The system allocated all the primary and secondary space it could, but it still could not write the output.</td>
</tr>
<tr>
<td width="49">D37</td>
<td width="521">Primary disk space was exceeded and no secondary space has been specified, or it has been exhausted.</td>
</tr>
<tr>
<td width="49">E37</td>
<td width="521">This often occurs when you try to add members to a PDS, and you get E37 ABEND. It occurs because the PDS Directory require more space for its members, than it was initially alloted.</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/12/03/most-common-jcl-error-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Types of JCL Statements</title>
		<link>http://www.ruifeio.com/2011/06/30/types-of-jcl-statements/</link>
		<comments>http://www.ruifeio.com/2011/06/30/types-of-jcl-statements/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 21:40:55 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=710</guid>
		<description><![CDATA[JOB &#8211; Identifies the beginning of a job. The JOB statement informs the operating system of the start of a job, gives the necessary accounting information, and supplies run parameters. Each job must begin with a single JOB statement &#160; EXEC &#8211; Indicates what work is to be done. EXEC (execute) statement is used to identify the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>JOB</strong> &#8211; Identifies the beginning of a job. The JOB statement informs the operating system of the start of a job, gives the necessary accounting information, and supplies run parameters. Each job must begin with a single JOB statement</p>
<p>&nbsp;</p>
<p><strong>EXEC</strong> &#8211; Indicates what work is to be done. EXEC (execute) statement is used to identify the application program, cataloged procedures or in-stream procedure that the job is to execute and to tell the system how to process the job.</p>
<p>&nbsp;</p>
<p><strong>DD</strong> &#8211; (Data Definition) Identifies what resources are needed and where to find them. A DD statement must be included after the EXEC statement for each data set used in the step. The system ensures that the requested I/O devices can be allocated to the job before execution is allowed to begin.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/06/30/types-of-jcl-statements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create a History Data Set from Log Data Recorded on the Logrec Log Stream</title>
		<link>http://www.ruifeio.com/2011/02/21/create-a-history-data-set-from-log-data-recorded-on-the-logrec-log-stream/</link>
		<comments>http://www.ruifeio.com/2011/02/21/create-a-history-data-set-from-log-data-recorded-on-the-logrec-log-stream/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:07:44 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[MVS]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=660</guid>
		<description><![CDATA[The following JCL creates a history data set from log data recorded on the Logrec log stream //LOGRECHS JOB,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&#38;SYSUID //EREPDALY EXEC  PGM=IFCEREP1,PARM=('HIST,ACC=Y,SYSUM') //ACCIN    DD DSN=SYS1.SYSPLEX.LOGREC, //            SUBSYS=(LOGR,IFBSEXIT,,'DEVICESTATS,LASTRUN'), //            DCB=(RECFM=VB,BLKSIZE=4000) //ACCDEV   DD DSN=MVS.LOGREC.LGSTREAM.HISTORY, //            DISP=(NEW,CATLG), //            DCB=(RECFM=VB,BLKSIZE=4000), //            UNIT=SYSDA,SPACE=(CYL,(25,5)) //SERLOG   DD DUMMY //DIRECTWK DD UNIT=SYSDA,SPACE=(CYL,15,,CONTIG) //TOURIST  DD SYSOUT=A,DCB=BLKSIZE=133 //EREPPT   DD SYSOUT=A,DCB=BLKSIZE=133 //SYSABEND DD SYSOUT=A //SYSIN    DD [...]]]></description>
			<content:encoded><![CDATA[<p>The following JCL creates a history data set from log data recorded on the Logrec log stream</p>
<p><code>//LOGRECHS JOB,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//EREPDALY EXEC  PGM=IFCEREP1,PARM=('HIST,ACC=Y,SYSUM')<br />
//ACCIN    DD DSN=SYS1.SYSPLEX.LOGREC,<br />
//            SUBSYS=(LOGR,IFBSEXIT,,'DEVICESTATS,LASTRUN'),<br />
//            DCB=(RECFM=VB,BLKSIZE=4000)<br />
//ACCDEV   DD DSN=MVS.LOGREC.LGSTREAM.HISTORY,<br />
//            DISP=(NEW,CATLG),<br />
//            DCB=(RECFM=VB,BLKSIZE=4000),<br />
//            UNIT=SYSDA,SPACE=(CYL,(25,5))<br />
//SERLOG   DD DUMMY<br />
//DIRECTWK DD UNIT=SYSDA,SPACE=(CYL,15,,CONTIG)<br />
//TOURIST  DD SYSOUT=A,DCB=BLKSIZE=133<br />
//EREPPT   DD SYSOUT=A,DCB=BLKSIZE=133<br />
//SYSABEND DD SYSOUT=A<br />
//SYSIN    DD DUMMY<br />
/*</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/02/21/create-a-history-data-set-from-log-data-recorded-on-the-logrec-log-stream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>List the Information from the Logrec Data Set</title>
		<link>http://www.ruifeio.com/2011/02/08/list-the-information-from-the-logrec-data-set/</link>
		<comments>http://www.ruifeio.com/2011/02/08/list-the-information-from-the-logrec-data-set/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 20:56:11 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[MVS]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=647</guid>
		<description><![CDATA[Next are a few examples of Jobs to list information from the Logrec Data Set: 1. Detail Edit Report This job generates detail edits and summaries of all software and operational records: //EREPRPT1 JOB,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&#38;SYSUID //REPORT1   EXEC  PGM=IFCEREP1,PARM='CARD' //ACCIN     DD  DSN=MVS.LOGREC.HISTORY,DISP=SHR //DIRECTWK  DD  UNIT=SYSDA, //              SPACE=(CYL,5,,CONTIG) //EREPPT    DD  SYSOUT=A,DCB=BLKSIZE=133 //TOURIST   DD  SYSOUT=A,DCB=BLKSIZE=133 //SYSIN     DD  * PRINT=PS [...]]]></description>
			<content:encoded><![CDATA[<p>Next are a few examples of Jobs to list information from the Logrec Data Set:</p>
<p><strong>1. Detail Edit Report</strong></p>
<p>This job generates detail edits and summaries of all software and operational records:</p>
<p><code>//EREPRPT1 JOB,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//REPORT1   EXEC  PGM=IFCEREP1,PARM='CARD'<br />
//ACCIN     DD  DSN=MVS.LOGREC.HISTORY,DISP=SHR<br />
//DIRECTWK  DD  UNIT=SYSDA,<br />
//              SPACE=(CYL,5,,CONTIG)<br />
//EREPPT    DD  SYSOUT=A,DCB=BLKSIZE=133<br />
//TOURIST   DD  SYSOUT=A,DCB=BLKSIZE=133<br />
//SYSIN     DD  *<br />
PRINT=PS<br />
TYPE=SIE<br />
HIST<br />
ACC=N<br />
ENDPARM<br />
/*</code></p>
<p><strong>2. Event History Report</strong></p>
<p>The following is a two-step job. The first step prints an event history report for all Logrec data set records. The second step formats each software, IPL, and EOD record individually.</p>
<p>This Job can be a very useful tool to the problem solver because it prints the records in the same sequence they were recorded and therefore shows an interaction between hardware error records and software error records.</p>
<p><code>//EREPRPT2 JOB,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//* -------------------------------<br />
//* - STEP 1 ----------------------<br />
//* -------------------------------<br />
//*<br />
//EREPA EXEC PGM=IFCEREP1,PARM='EVENT=Y,ACC=N',REGION=256K<br />
//SERLOG DD DSN=SYS1.LOGREC,DISP=SHR<br />
//TOURIST DD SYSOUT=A<br />
//EREPPT DD SYSOUT=A,DCB=BLKSIZE=133<br />
//SYSIN  DD DUMMY<br />
//*<br />
//* -------------------------------<br />
//* - STEP 2 ----------------------<br />
//* -------------------------------<br />
//*<br />
//EREPB EXEC PGM=IFCEREP1,PARM='TYPE=SIE,PRINT=PS,ACC=N',<br />
//   REGION=256K<br />
//SERLOG DD DSN=SYS1.LOGREC,DISP=SHR<br />
//TOURIST DD SYSOUT=A<br />
//EREPPT DD SYSOUT=A,DCB=BLKSIZE=133<br />
//SYSIN  DD DUMMY<br />
/*</code></p>
<p><strong>3. Detail Summary Report</strong></p>
<p>This job generates detail summaries of all I/O errors:</p>
<p><code>//EREPRPT3 JOB,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//REPORT3  EXEC  PGM=IFCEREP1,PARM='CARD'<br />
//ACCIN    DD DSN=MVS.LOGREC.HISTORY,DISP=(OLD,PASS)<br />
//DIRECTWK DD UNIT=3390,<br />
//            SPACE=(CYL,5,,CONTIG)<br />
//EREPPT   DD SYSOUT=A,DCB=BLKSIZE=133<br />
//TOURIST  DD SYSOUT=A,DCB=BLKSIZE=133<br />
//SYSIN    DD  *<br />
PRINT=SU<br />
TYPE=DOTH<br />
DEV=(N34XX,N3704,N3705,N3720,N3725,N3745)<br />
HIST<br />
ACC=N<br />
ENDPARM</code></p>
<p>For more information regarding the parameters and control statements used in these jobs check the following links:</p>
<ul>
<li>EREP      Report Parameters</li>
<li>EREP      Selection Parameters</li>
<li>EREP      Processing Parameters</li>
<li>EREP      Control Statements</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/02/08/list-the-information-from-the-logrec-data-set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create a History Data Set from the Logrec Data Set</title>
		<link>http://www.ruifeio.com/2011/02/03/create-a-history-data-set-from-the-logrec-data-set/</link>
		<comments>http://www.ruifeio.com/2011/02/03/create-a-history-data-set-from-the-logrec-data-set/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 18:32:29 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[MVS]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=641</guid>
		<description><![CDATA[By creating a history file and then running all the reports against that file, the Systems Programmer ensures that all of the reports are using the same set of records. //LOGRECHS JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&#38;SYSUID //*------------------------------------------------------------------ //* COPIES SYS1.LOGREC TO HISTORY FILE MVS.LOGREC.HISTORY //*------------------------------------------------------------------ //HISTORY EXEC PGM=IFCEREP1,REGION=1024K, // PARM='ACC,ZERO=N' //SERLOG DD DISP=(OLD,KEEP),DSN=SYS1.LOGREC //ACCDEV DD DISP=(NEW,PASS),DSN=MVS.LOGREC.HISTORY, // UNIT=3390,SPACE=(CYL,(2,2)), [...]]]></description>
			<content:encoded><![CDATA[<p>By creating a history file and then running all the reports against that file, the Systems Programmer ensures that all of the reports are using the same set of records.</p>
<p><code>//LOGRECHS JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//*------------------------------------------------------------------<br />
//* COPIES SYS1.LOGREC TO HISTORY FILE MVS.LOGREC.HISTORY<br />
//*------------------------------------------------------------------<br />
//HISTORY EXEC PGM=IFCEREP1,REGION=1024K,<br />
//            PARM='ACC,ZERO=N'<br />
//SERLOG   DD DISP=(OLD,KEEP),DSN=SYS1.LOGREC<br />
//ACCDEV   DD DISP=(NEW,PASS),DSN=MVS.LOGREC.HISTORY,<br />
//          UNIT=3390,SPACE=(CYL,(2,2)),<br />
//          DCB=(RECFM=VB,BLKSIZE=6144)<br />
//DIRECTWK DD DISP=(NEW,DELETE),UNIT=3390,SPACE=(CYL,2,,CONTIG)<br />
//EREPPT   DD SYSOUT=A,DCB=BLKSIZE=133<br />
//TOURIST  DD SYSOUT=A,DCB=BLKSIZE=133<br />
//SYSIN    DD DUMMY<br />
/*<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/02/03/create-a-history-data-set-from-the-logrec-data-set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to clear and re-initialize the Logrec Data Set SYS1.LOGREC</title>
		<link>http://www.ruifeio.com/2011/02/03/how-to-clear-and-re-initialize-the-logrec-data-set-sys1-logrec/</link>
		<comments>http://www.ruifeio.com/2011/02/03/how-to-clear-and-re-initialize-the-logrec-data-set-sys1-logrec/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 18:29:03 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[MVS]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=637</guid>
		<description><![CDATA[It’s not uncommon for the SYS1.LOGREC dataset to fill up. Although you should dump the content of the SYS1.LOGREC to DASD or Tape to keep that information for future use (if you need to analyse a problem), you sometimes may simply wish to clear all its content and re-initialize it. The solution is to run [...]]]></description>
			<content:encoded><![CDATA[<p>It’s not uncommon for the SYS1.LOGREC dataset to fill up. Although you should dump the content of the SYS1.LOGREC to DASD or Tape to keep that information for future use (if you need to analyse a problem), you sometimes may simply wish to clear all its content and re-initialize it. The solution is to run IFCDIP00.</p>
<p><code><br />
//IFCDIP00 JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//********************************************************************<br />
//* CLEAR AND INITIALIZE HARDWARE EVENT RECORDER DATASET             *<br />
//********************************************************************<br />
//IFCDIP00 EXEC PGM=IFCDIP00<br />
//SERERDS  DD  DSN=SYS1.LOGREC,DISP=OLD,<br />
//             VOL=SER=MVSRES,<br />
//             UNIT=3390<br />
</code></p>
<p>In this example we will clear and re-initialize the content of SYS1.LOGREC located on volume MVSRES.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/02/03/how-to-clear-and-re-initialize-the-logrec-data-set-sys1-logrec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Defining a Logrec Log Stream</title>
		<link>http://www.ruifeio.com/2011/01/31/defining-a-logrec-log-stream/</link>
		<comments>http://www.ruifeio.com/2011/01/31/defining-a-logrec-log-stream/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 20:59:50 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[MVS]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=634</guid>
		<description><![CDATA[First of all and before defining a Logrec log stream, the Systems Programmer should make sure that the system in question was IPLed with a Logrec data set initialized by IFCDIP00. If this is not the case, you cannot change the Logrec recording medium from LOGSTREAM to DATASET using the SETLOGRC command and therefore you’ll [...]]]></description>
			<content:encoded><![CDATA[<p>First of all and before defining a Logrec log stream, the Systems Programmer should make sure that the system in question was IPLed with a Logrec data set initialized by IFCDIP00. If this is not the case, you cannot change the Logrec recording medium from LOGSTREAM to DATASET using the SETLOGRC command and therefore you’ll have to IPL the system in order to be able to use the Logrec log stream you’ve defined.</p>
<p>To use the Logrec log stream, the Systems Programmer must first set up the system to use system logger functions. IBM recommends that you use a coupling facility log stream for LOGREC so that you can merge data from multiple systems in a sysplex.</p>
<p>On a single system sysplex (monoplex) the system can also use a DASD only log stream (which is single system in scope). However, this is not recommended for a multi-system sysplex because since we can only have one Logrec log stream per sysplex, this would mean that if using a DASD only Logrec log stream, only one system of the sysplex would be able to access it. Therefore for a multi-system sysplex it is advisable to use a LOGSTREAM Logrec log stream.</p>
<p><strong><span style="text-decoration: underline;">JCL:</span></strong></p>
<p><code>// IXCMIAPU JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//DEFINE   EXEC PGM=IXCMIAPU<br />
//SYSPRINT DD   SYSOUT=A<br />
//SYSIN    DD   *<br />
   DATA TYPE (LOGR)<br />
   DEFINE STRUCTURE NAME(LOGRECSTRUCTURE)<br />
   LOGSNUM(1)<br />
   AVGBUFSIZE(4068)<br />
   MAXBUFSIZE(4068)<br />
   DEFINE LOGSTREAM NAME(SYS1.SYSPLEX.LOGREC)<br />
   STRUCTNAME(LOGRECSTRUCTURE)<br />
/*</code></p>
<p>MAXBUFSIZE must be at least 4068 because logrec writes records in one page blocks. Specify SMS storage group, storage, data and management classes such that when one data set is full, another is allocated. Allocate as much space as is allocated for all the logrec data sets on the systems in the sysplex before migrating to a Logrec log stream.</p>
<p>To start using the Logrec log stream either specify LOGREC=LOGSTREAM in the IEASYSxx parmlib member or, after IPLing with LOGREC=dsname, use the SETLOGRC command to change the Logrec recording medium to a Logrec log stream. Bear in mind though that if you IPL the system with LOGREC=LOGSTREAM, you cannot use the SETLOGRC command to change the Logrec recording medium to a Logrec data set.</p>
<p><strong>Important!</strong></p>
<p><strong> </strong></p>
<p>Now you have the Logrec log streams defined and ready, and you have even set up the system to start using them. Are you done with your tasks? The answer is no! You still need to update the EREP jobs that your system uses to start using the Logrec log stream. To do this the Systems Programmer will have to go through the JCL and:</p>
<ul>
<li>Change      the SERLOG DD DSN=SYS1.LOGREC statement associated with a Logrec data set      to an ACCIN DD DSN=SYS1.SYSPLEX.LOGREC statement, with corresponding      SUBSYS parameters, to associate EREP with the logrec log stream.</li>
<li>Identify      the input as a history data set. Leave the output to a history data set as      currently recommended, because all subsequent steps should already use the      history data set as input. (Note: using a Logrec log stream as input for      multiple steps is not recommended because each subsequent step processes      more records than the prior, causing numbers and data in successive      reports not to match).</li>
<li>Subsequent      EREP report steps that normally process history data sets no longer need      to concatenate one history data set per system.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/01/31/defining-a-logrec-log-stream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to define the Logrec Data Set SYS1.LOGREC</title>
		<link>http://www.ruifeio.com/2011/01/31/how-to-define-the-logrec-data-set-sys1-logrec/</link>
		<comments>http://www.ruifeio.com/2011/01/31/how-to-define-the-logrec-data-set-sys1-logrec/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 20:58:07 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[MVS]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=632</guid>
		<description><![CDATA[If you want to define a Logrec Data Set, you must first allocate it and then initialize it. //IFCDIP00 JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&#38;SYSUID //*------------------------------------------------------------------ //*  CREATE A NEW LOGREC DATASET AND INITIALIZE IT //*------------------------------------------------------------------ //IFCDIP00 EXEC PGM=IFCDIP00 //SERERDS  DD  DSN=SYS1.LOGREC,DISP=(,CATLG), //         VOL=SER=MVSRES,UNIT=3390,SPACE=(CYL,3,,CONTIG) /* In this example we create and initialize Logrec Data Set SYS1.LOGREC located on volume [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to define a Logrec Data Set, you must first allocate it and then initialize it.</p>
<p><code>//IFCDIP00 JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X,NOTIFY=&amp;SYSUID<br />
//*------------------------------------------------------------------<br />
//*  CREATE A NEW LOGREC DATASET AND INITIALIZE IT<br />
//*------------------------------------------------------------------<br />
//IFCDIP00 EXEC PGM=IFCDIP00<br />
//SERERDS  DD  DSN=SYS1.LOGREC,DISP=(,CATLG),<br />
//         VOL=SER=MVSRES,UNIT=3390,SPACE=(CYL,3,,CONTIG)<br />
/*</code></p>
<p>In this example we create and initialize Logrec Data Set SYS1.LOGREC located on volume MVSRES.</p>
<p><strong><span style="text-decoration: underline;">Note:</span></strong> the newly allocated Logrec data set will not be used until you initialize it and IPL the system on which it is to be used.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2011/01/31/how-to-define-the-logrec-data-set-sys1-logrec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using IEBCOPY to compress a Data Set</title>
		<link>http://www.ruifeio.com/2010/10/30/using-iebcopy-to-compress-a-data-set/</link>
		<comments>http://www.ruifeio.com/2010/10/30/using-iebcopy-to-compress-a-data-set/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 16:35:43 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=568</guid>
		<description><![CDATA[Here&#8217;s an example of a IEBCOPY job to compress a data set: //COMPRESS JOB (),'RMF',NOTIFY=&#38;SYSUID,CLASS=A,MSGLEVEL=(1,1), // MSGCLASS=X //******************************************* //* //* COMPRESS A DATA SET USING IEBCOPY //* //******************************************* //STEP1 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INPUT DD DSNAME=SYS1.EXAMPLE.FILE,DISP=SHR //OUTPUT DD DSNAME=SYS1.EXAMPLE.FILE,DISP=SHR //SYSIN DD * COPY INDD=INPUT,OUTDD=OUTPUT /* Note that we are using the same dataset for [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an example of a IEBCOPY job to compress a data set:</p>
<p><code style="font-size: 12px;"><br />
//COMPRESS JOB (),'RMF',NOTIFY=&amp;SYSUID,CLASS=A,MSGLEVEL=(1,1),<br />
// MSGCLASS=X<br />
//*******************************************<br />
//*<br />
//* COMPRESS A DATA SET USING IEBCOPY<br />
//*<br />
//*******************************************<br />
//STEP1 EXEC PGM=IEBCOPY<br />
//SYSPRINT DD SYSOUT=*<br />
//INPUT DD DSNAME=SYS1.EXAMPLE.FILE,DISP=SHR<br />
//OUTPUT DD DSNAME=SYS1.EXAMPLE.FILE,DISP=SHR<br />
//SYSIN DD *<br />
COPY INDD=INPUT,OUTDD=OUTPUT<br />
/*</code></p>
<p>Note that we are using the same dataset for INPUT and OUTPUT.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2010/10/30/using-iebcopy-to-compress-a-data-set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JCL most common operands</title>
		<link>http://www.ruifeio.com/2010/09/09/jcl-most-common-operands/</link>
		<comments>http://www.ruifeio.com/2010/09/09/jcl-most-common-operands/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 17:08:45 +0000</pubDate>
		<dc:creator>Rui Miguel Feio</dc:creator>
				<category><![CDATA[JCL]]></category>
		<category><![CDATA[Tech - Mainframe]]></category>

		<guid isPermaLink="false">http://www.ruifeio.com/?p=533</guid>
		<description><![CDATA[1. JOB Statement REGION= Requests specific memory resources to be allocated to the Job NOTIFY= User to be notified at job completion USER= Userid to assume authority to the Job TIME= Limits the amount of time a program can run TYPRUN= Delays or holds the Job from running CLASS= Directs JCL to execute on a [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. </strong><strong>JOB</strong><strong> Statement</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="115" valign="top"><strong>REGION=</strong></td>
<td width="453" valign="top">Requests specific memory resources to be allocated to the Job</td>
</tr>
<tr>
<td width="115" valign="top"><strong>NOTIFY=</strong></td>
<td width="453" valign="top">User to be notified at job completion</td>
</tr>
<tr>
<td width="115" valign="top"><strong>USER=</strong></td>
<td width="453" valign="top">Userid to assume authority to the Job</td>
</tr>
<tr>
<td width="115" valign="top"><strong>TIME=</strong></td>
<td width="453" valign="top">Limits the amount of time a program can run</td>
</tr>
<tr>
<td width="115" valign="top"><strong>TYPRUN=</strong></td>
<td width="453" valign="top">Delays or holds the Job from running</td>
</tr>
<tr>
<td width="115" valign="top"><strong>CLASS=</strong></td>
<td width="453" valign="top">Directs JCL to execute on a particular Input queue</td>
</tr>
<tr>
<td width="115" valign="top"><strong>MSGCLASS=</strong></td>
<td width="453" valign="top">Directs Job output to a particular Output queue</td>
</tr>
<tr>
<td width="115" valign="top"><strong>MSGLEVEL=</strong></td>
<td width="453" valign="top">Controls the number of system messages to be received</td>
</tr>
</tbody>
</table>
<p><strong>2. </strong><strong>EXEC Statement</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="115" valign="top"><strong>PGM=</strong></td>
<td width="453" valign="top">Executable program name</td>
</tr>
<tr>
<td width="115" valign="top"><strong>PROC</strong></td>
<td width="453" valign="top">Procedure name</td>
</tr>
<tr>
<td width="115" valign="top"><strong>PARM=</strong></td>
<td width="453" valign="top">Parameters known by and passed to the program</td>
</tr>
<tr>
<td width="115" valign="top"><strong>COND=</strong></td>
<td width="453" valign="top">Boolean logic for controlling the execution of other EXEC steps in   this job</td>
</tr>
<tr>
<td width="115" valign="top"><strong>TIME=</strong></td>
<td width="453" valign="top">Imposes a time limit</td>
</tr>
</tbody>
</table>
<p><strong>3. </strong><strong>DD Statement</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="115" valign="top"><strong>DSN=</strong></td>
<td width="453" valign="top">Name of the data set</td>
</tr>
<tr>
<td width="115" valign="top"><strong>DISP=</strong></td>
<td width="453" valign="top">Data Set disposition (see below for more information)</td>
</tr>
<tr>
<td width="115" valign="top"><strong>SPACE=</strong></td>
<td width="453" valign="top">Amount of disk storage request for a new data set</td>
</tr>
<tr>
<td width="115" valign="top"><strong>SYSOUT=</strong></td>
<td width="453" valign="top">Defines a print location (and the Output queue or data set)</td>
</tr>
<tr>
<td width="115" valign="top"><strong>VOL</strong><strong>=SER=</strong></td>
<td width="453" valign="top">Volume name, disk name, or tape name</td>
</tr>
<tr>
<td width="115" valign="top"><strong>UNIT</strong><strong>=</strong></td>
<td width="453" valign="top">System disk, tape, special device type, or esoteric</td>
</tr>
<tr>
<td width="115" valign="top"><strong>DEST=</strong></td>
<td width="453" valign="top">Routes Output to a remote destination</td>
</tr>
<tr>
<td width="115" valign="top"><strong>DCB=</strong></td>
<td width="453" valign="top">Data Set Control Block: LRECL, RECFM, BLKSIZE, DSORG</td>
</tr>
<tr>
<td width="115" valign="top"><strong>LABEL=</strong></td>
<td width="453" valign="top">Tape label expected (No Label or Standard Label followed by the Data   Set location)</td>
</tr>
<tr>
<td width="115" valign="top"><strong>DUMMY</strong></td>
<td width="453" valign="top">Results in a NULL Input or throwing away data written to this DD name</td>
</tr>
<tr>
<td width="115" valign="top"><strong>*</strong></td>
<td width="453" valign="top">Input data or control statements follow</td>
</tr>
</tbody>
</table>
<p><strong>DISP parameter</strong></p>
<p>Define as DISP=(<em>status</em>, <em>normal end</em>, <em>abnormal end</em>)</p>
<p><strong><span style="text-decoration: underline;">Status</span></strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="79" valign="top"><strong>NEW</strong><strong> </strong></td>
<td width="489" valign="top">
<ul>
<li>Indicates that a new data set is to be created.</li>
<li>This job has exclusive access to the data   set while it is running.</li>
<li>The data set must not already exist</li>
</ul>
</td>
</tr>
<tr>
<td width="79" valign="top"><strong>OLD</strong></td>
<td width="489" valign="top">This job is to have exclusive access to the data set while it is   running</td>
</tr>
<tr>
<td width="79" valign="top"><strong>SHR</strong></td>
<td width="489" valign="top">Several concurrent jobs can share access to this data set while they   are running</td>
</tr>
<tr>
<td width="79" valign="top"><strong>MOD</strong></td>
<td width="489" valign="top">
<ul>
<li>The current job must have exclusive   access to the data set while it is running</li>
<li>If the current job opens the data set for   output, the output will be appended to the current end of the data set</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><strong><span style="text-decoration: underline;">Normal and Abnormal Ends</span></strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="79" valign="top"><strong>DELETE</strong></td>
<td width="489" valign="top">Delete and uncatalog the data set at the end of   the job step</td>
</tr>
<tr>
<td width="79" valign="top"><strong>KEEP</strong></td>
<td width="489" valign="top">Keep the data set at the end of the job step but   do not catalog</td>
</tr>
<tr>
<td width="79" valign="top"><strong>CATLG</strong></td>
<td width="489" valign="top">Keep the data set at the end of the job step and   catalog it</td>
</tr>
<tr>
<td width="79" valign="top"><strong>UNCATLG</strong></td>
<td width="489" valign="top">Keep the data set but uncatalog it at the end of   the job step</td>
</tr>
<tr>
<td width="79" valign="top"><strong>PASS</strong></td>
<td width="489" valign="top">Allow a later job step to specify a final   disposition</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ruifeio.com/2010/09/09/jcl-most-common-operands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

