DEFINE DATASET command: Difference between revisions

From m204wiki
Jump to navigation Jump to search
m (minor cleanup)
 
(22 intermediate revisions by 4 users not shown)
Line 4: Line 4:
<dd>System administrator
<dd>System administrator
<dt>Function
<dt>Function
<dd>Specifies characteristics of a <var class="product">Model&nbsp;204</var> data set or file, or a non-<var class="product">Model&nbsp;204</var> file such as a VSAM file or a basic sequential file
<dd>Specifies characteristics of a <var class="product">Model&nbsp;204</var> data set or file, or a non-<var class="product">Model&nbsp;204</var> file such as a [[Accessing_BSAM_and_VSAM_files#VSAM_I.2FO_processing|VSAM]] file or a [[Accessing_BSAM_and_VSAM_files#Sequential_I.2FO_processing|basic sequential file]]
</dl>
</dl>
==Syntax==
==Syntax==
<p class="syntax">DEFINE DATASET <i>name</i> [LIKE <i>other-name</i>] WITH SCOPE=SYSTEM <span class="term">options</span>
<p class="syntax">DEFINE DATASET <span class="term">name</span> [LIKE <span class="term">other-name</span>] WITH SCOPE=SYSTEM <span class="term">options</span>
</p>
</p>
<p>Where <span class="term">options</span> are one or more of the following:</p>
<p>
Where <var class="term">options</var> are one or more of the following:</p>
<p class="syntax"> [ALX | MXIG | CONTIG] [APPEND | <u>NOAPPEND</u>]  
<p class="syntax"> [ALX | MXIG | CONTIG] [APPEND | <u>NOAPPEND</u>]  
  [BLKSIZE=<span class="term">n</span>] [<b>BL</b>OC<b>K</b> | <b>TR</b>AC<b>K</b> | <b>CYL</b>INDER] [BUFNO=<i>n</i>]
  [BLKSIZE=<span class="term">n</span>] [<b>BL</b>OC<b>K</b> | <b>TR</b>AC<b>K</b> | <b>CYL</b>INDER] [BUFNO=<i>n</i>]
  [<u>CATALOG</u> | NOCATALOG]  
  [<u>CATALOG</u> | NOCATALOG]  
  [CLOSE={EOJ | <u>NOUSERS</u>}] [DATALEN=n] [DCLASS]  
  [CLOSE={EOJ | <u>NOUSERS</u>}] [DATALEN=n] [DCLASS]  
  [DDNAME=<i>name</i> | FILENAME=<i>name</i>] [DEFER] [DENSITY=n]  
  [DDNAME=<span class="term">name</span> | FILENAME=<span class="term">name</span>] [DEFER] [DENSITY=<span class="term">n</span>]  
  [DIRECTORY=n] [<b>DSN</b>AME=name] [EATTR] [GDGRECNT] [GEN]  
  [DIRECTORY=<span class="term">n</span>] [<b>DSN</b>AME=<span class="term">name</span>] [EATTR] [GDGRECNT] [GEN] [IMAGINE]
  [LABEL=<i>label</i>] [LARGE] [LRECL=<i>n</i>] [MCLASS] [MEMBER=member-name]  
  [LABEL=<span class="term">label</span>] [LARGE] [LRECL=<span class="term">n</span>] [MCLASS] [MEMBER=<span class="term">member-name</span>]  
  [MEMORY] [NCP=<i>n</i>] [NEW | OLD | COND] [PASSWORD=<i>password</i>]  
[MEMORY] [NCP=<span class="term">n</span>] [NEW | OLD | COND] [PASSWORD=<span class="term">password</span>]  
  [PAGES=<i>n</i>] [PDS] [PDSE] [POSITION=n] [PRIMARY=n]  
  [PAGES=<span class="term">n</span>] [PDS] [PDSE] [POSITION=<span class="term">n</span>] [PRIMARY=<span class="term">n</span>]  
  [RECFM=format] [RELEASE | NORELEASE] [RETENTION=<i>n</i>]  
  [RECFM=<span class="term">format</span>] [RELEASE | NORELEASE] [RETENTION=<span class="term">n</span>]  
  [RETRYALLOC=<i>n</i>] [RETRYTIME=<i>n</i>] [ROUND]  
  [RETRYALLOC=<span class="term">n</span>] [RETRYTIME=<span class="term">n</span>] [ROUND]  
  [SAM | VSAM | DAM] [SCLASS] [<b>SEC</b>ONDARY=<i>n</i>]  
  [SAM | VSAM | DAM] [SCLASS] [<b>SEC</b>ONDARY=<span class="term">n</span>]  
  [<u>SEQUENTIAL</u> | KEYED | KEYED SEQUENTIAL | DIRECT  
  [<u>SEQUENTIAL</u> | KEYED | KEYED SEQUENTIAL | DIRECT | SAM | VSAM | DAM]  
| SAM | VSAM | DAM]  
  [<u>SHARE</u> | EXCLUSIVE] [SMSLIKE=<span class="term">dsn</span>] [STRINGS=<span class="term">n</span>]  
  [<u>SHARE</u> | EXCLUSIVE] [SMSLIKE=<i>dsn</i>] [STRINGS=<i>n</i>]  
  [<u>TIOT</u>| [XTIOT DIRECT OLD]] [UNIT=<span class="term">unit</span>]  
  [<u>TIOT</u>| [XTIOT DIRECT OLD]] [UNIT=<i>unit</i>]  
  [VOLMAX=<span class="term">n</span>] [VOLSEQ=<span class="term">n</span>] [VOLUME=<span class="term">volume</span>]
  [VOLMAX=n] [VOLSEQ=<i>n</i>] [VOLUME=<i>volume</i>]
</p>
</p>
   
   
Line 88: Line 89:
<td>Specifies the length of the data portion of the records in a sequential data set. The values of the LRECL and BLKSIZE options are affected if you specify this option. The range of acceptable values is 0 to 32767.
<td>Specifies the length of the data portion of the records in a sequential data set. The values of the LRECL and BLKSIZE options are affected if you specify this option. The range of acceptable values is 0 to 32767.
<p>
<p>
This option applies only to sequential data sets such as USE data sets and does not apply to <var class="product">Model&nbsp;204</var> files. DATALEN is ignored during allocation time but overrides the LRECL option at open time if values for both LRECL and DATALEN are specified. Refer to the discussion of sequential data set open processing in the <var class="book">Rocket Model&nbsp;204 System Manager's Guide</var>. </p>
This option applies only to sequential data sets such as USE data sets and does not apply to <var class="product">Model&nbsp;204</var> files. DATALEN is ignored during allocation time but overrides the LRECL option at open time if values for both LRECL and DATALEN are specified. Refer to the discussion of sequential data set open processing in [[Accessing BSAM and VSAM files#Sequential I/O processing|Sequential I/O processing]]. </p>
</td> </tr>
</td> </tr>
   
   
Line 109: Line 110:
<td>Specifies the density with which a tape data set is written.
<td>Specifies the density with which a tape data set is written.
<p>
<p>
If the DENSITY option is not specified, the highest density that the tape drive can support is used for output. This option is ignored for input, where <var class="product">Model&nbsp;204</var> automatically determines the density (bpi) at which the tape it is reading was written. Acceptable values are 800, 1600, and 6250. This option applies only to dynamic allocation of tape data sets, which is valid only under z/OS.</p>
If the <var>DENSITY</var> option is not specified, the highest density that the tape drive can support is used for output. This option is ignored for input, where <var class="product">Model&nbsp;204</var> automatically determines the density (bpi) at which the tape it is reading was written. Acceptable values are 800, 1600, and 6250. This option applies only to dynamic allocation of tape data sets, which is valid only under z/OS.</p>
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>DIRECTORY</var></th>  
<tr> <th><var>DIRECTORY</var></th>  
<td>Specifies the number of PDS directory blocks on a new allocation. The NEW parameter is required.
<td>Specifies the number of PDS directory blocks on a new allocation. The <var>NEW</var> parameter is required.
</td> </tr>
</td> </tr>
   
   
Line 121: Line 122:
   
   
<tr> <th><var>EATTR</var></th>  
<tr> <th><var>EATTR</var></th>  
<td>(Only z/OS.) Enables a data set to be allocated on an EAV (Extended Address Volumes) volume, which contains more than 64K cylinders. You can allocate and use <var class="product">Model&nbsp;204</var> database files and checkpoint, CCAJRNL, CCAJLOG, and USE data sets on EAV volumes above the 64K cylinder boundary. Both IOS Branch Entry (XMEMOPT=2) and EXCP I/O drivers can handle database files on EAV.
<td>(Only z/OS.) Enables a data set to be allocated on an EAV (Extended Address Volumes) volume, which contains more than 64K cylinders. You can allocate and use <var class="product">Model&nbsp;204</var> database files and checkpoint, CCAJRNL, CCAJLOG, and USE data sets on EAV volumes above the 64K cylinder boundary. Both IOS Branch Entry (<code>XMEMOPT=2</code>) and EXCP I/O drivers can handle database files on EAV.
<p>
<p>
The EATTR option is effective only in z/OS version 1.12 and later; in all other environments it is ignored with no error message. </p>
The <var>EATTR</var> option is effective only in z/OS version 1.12 and later; in all other environments it is ignored with no error message. </p>
<p class="note"><b>Note:</b> Server data sets are not supported when allocated above the 64K cylinder boundary. An attempt to open any server data set allocated above 64K cylinders results in issuing [[M204.2917|error message 2917]], which identifies the server data set name, and run termination. </p>
<p class="note"><b>Note:</b> Server data sets are not supported when allocated above the 64K cylinder boundary. An attempt to open any server data set allocated above 64K cylinders results in issuing error message M204.2917 (which identifies the server data set name) and run termination. </p>
</td> </tr>
</td> </tr>


<tr> <th><var>GDGRECNT</var></th>  
<tr> <th><var>GDGRECNT</var></th>  
<td>(Only z/OS.) Available in Model 204 V7.5. Causes Model 204 to check the catalog information for the latest relative GDG generation number whenever allocating a GDG data set. This checking ensures that the data set is allocated with the latest generation number, taking into account GDG data set allocations or deletions by all jobs in the current environment.
<td>(Only z/OS.) Available as of Model 204 V7.5. Causes Model 204 to check the catalog information for the latest relative GDG generation number whenever allocating a GDG data set. This checking ensures that the data set is allocated with the latest generation number, taking into account GDG data set allocations or deletions by all jobs in the current environment.
<p>
<p>
By default, Model 204 checks the catalog information for the latest relative GDG generation number only when allocating the first GDG data set. The job then determines subsequent GDG generation numbers based only on its own allocations and deletions of the data set. If it deletes the GDG data set, the job might later reuse the same GDG generation number.</p>
By default, Model 204 checks the catalog information for the latest relative GDG generation number only when allocating the first GDG data set. The job then determines subsequent GDG generation numbers based only on its own allocations and deletions of the data set. If it deletes the GDG data set, the job might later reuse the same GDG generation number.</p>
Line 136: Line 137:
<ul>
<ul>
<li>Allocations done by one job.  
<li>Allocations done by one job.  
<ul><li>If Model 204 defines and allocates a GDG member with GEN=+1, then subsequent attempts to allocate a GDG member with GEN=+1 and without the OLD parameter will result in an error message indicating that the data set has already been allocated.</li>  
<ul><li>If Model 204 defines and allocates a GDG member with <code>GEN=+1</code>, then subsequent attempts to allocate a GDG member with <code>GEN=+1</code> and without the <var>OLD</var> parameter will result in an error message indicating that the data set has already been allocated.</li>  


<li>If the GDGRECNT parameter is used in this case, then the next available GDG member will be allocated.</li>
<li>If the <var>GDGRECNT</var> parameter is used in this case, then the next available GDG member will be allocated.</li>
</ul></li>
</ul></li>


<li>Allocations done by multiple jobs. The following is a chronological sequence of events:
<li>Allocations done by multiple jobs. The following is a chronological sequence of events:
<ol>
<ol>
<li>Model 204 defines and allocates a GDG member with GEN=+1. The allocated member has generation number G0001V00.</li>
<li>Model 204 defines and allocates a GDG member with <code>GEN=+1</code>. The allocated member has generation number G0001V00.</li>
 
<li>Model 204 frees the member.</li>
<li>Model 204 frees the member.</li>
<li>Another job or TSO allocates a GDG member with GEN=+1. The allocated member has generation number G0002V00.</li>
 
<li>Another job or TSO deletes the member with generation number G0001V00.</li>
<li>Another job or TSO allocates a GDG member with <code>GEN=+1</code>. The allocated member has generation number <code>G0002V00</code>.</li>
<li>Model 204 defines and allocates a GDG member with GEN=+1. Without the GDGRECNT parameter, the allocated member has generation number G0001V00. With the GDGRECNT parameter, the allocated member has generation number G0003V00.</li>
 
<li>Another job or TSO deletes the member with generation number <code>G0001V00</code>.</li>
 
<li>Model 204 defines and allocates a GDG member with <code>GEN=+1</code>. Without the <var>GDGRECNT</var> parameter, the allocated member has generation number <code>G0001V00</code>. With the <var>GDGRECNT</var> parameter, the allocated member has generation number <code>G0003V00</code>.</li>
</ol></li>
</ol></li>
</ul>
</ul>


<p class="note"><b>Note:</b> GDGRECNT is not allowed with the OLD option.</p>
<p class="note"><b>Note:</b> <var>GDGRECNT</var> is not allowed with the <var>OLD</var> option.</p>
</td> </tr>
</td> </tr>


Line 157: Line 162:
<td>(Only z/OS.) Indicates a Generation Data Group (GDG) member.</td> </tr>
<td>(Only z/OS.) Indicates a Generation Data Group (GDG) member.</td> </tr>
   
   
<tr id="IMAGINE"> <th><var>IMAGINE</var></th>
<td>Indicates that the data for the file is actually in an <var>Imagine</var> and accessed via an <var>Imagine</var> broker connected to an [[JANUS_DEFINE#Syntax|Imagine Transparency port]]. This option is only available in <var class="product">Model 204</var> Version 8.0 and later.</td> </tr>
<tr> <th><var>LABEL</var></th>  
<tr> <th><var>LABEL</var></th>  
<td>(Only z/OS.) Describes the label associated with a data set. The default is standard labels. Acceptable values that can be specified are as follows:   
<td>(Only z/OS.) Describes the label associated with a data set. The default is standard labels. Acceptable values that can be specified are as follows:   
<ul>
<ul>
<li>AL - American National Standard label.</li>
<li>AL &ndash; American National Standard label.</li>
<li>AUL - American National Standard label and an American National Standard user label.</li>
<li>AUL &ndash; American National Standard label and an American National Standard user label.</li>
<li>BLP - Label processing should be bypassed.</li>
<li>BLP &ndash; Label processing should be bypassed.</li>
<li>LTM - System is to check for and bypass a leading tape mark on a z/VSE unlabeled tape.</li>
<li>LTM &ndash; System is to check for and bypass a leading tape mark on a z/VSE unlabeled tape.</li>
<li>NL - No label.</li>
<li>NL &ndash; No label.</li>
<li>NS - Non-standard label.</li>
<li>NS &ndash; Non-standard label.</li>
<li>SL - Standard labels.</li>
<li>SL &ndash; Standard labels.</li>
<li>SUL - Both standard and user labels.</li>
<li>SUL &ndash; Both standard and user labels.</li>
</ul>
</ul>
This option applies only to dynamic allocation of tape data sets, which is valid only under z/OS.
This option applies only to dynamic allocation of tape data sets, which is valid only under z/OS.
Line 173: Line 181:
   
   
<tr> <th><var>LARGE</var></th>  
<tr> <th><var>LARGE</var></th>  
<td>(Only z/OS 1.7 or later) Indicates a data set that exceeds 65,535 tracks.  May be specified for CCAJRNL, CCAJLOG, including GDG and stream-based journals; large data sets for dumping and/or restoring <var class="product">Model&nbsp;204</var> files; and <var class="product">Model&nbsp;204</var> file data sets.  May not be specified for CHKPOINT data sets.
<td>(Only z/OS 1.7 and later) Indicates a data set that exceeds 65,535 tracks.  May be specified for CCAJRNL, CCAJLOG, including GDG and stream-based journals; large data sets for dumping and/or restoring <var class="product">Model&nbsp;204</var> files; and <var class="product">Model&nbsp;204</var> file data sets.   
 
Can be specified for <var>CHKPOINT</var> data sets in Model 204 version 7.7 and later.
<p>
<p>
SEQUENTIAL and SAM are required coordinating options.</p>
<var>SEQUENTIAL</var> and <var>SAM</var> are required coordinating options.</p>
</td> </tr>
</td> </tr>
   
   
Line 181: Line 191:
<td>Specifies the logical record length (in bytes) for the data set.  
<td>Specifies the logical record length (in bytes) for the data set.  
<ul>
<ul>
<li>If the record format is V, LRECL must include the record descriptor word of four bytes. </li>
<li>If the record format is V, <var>LRECL</var> must include the record descriptor word of four bytes. </li>
<li>If the record format is A, LRECL must include the one-byte carriage control character. </li>
<li>If the record format is A, <var>LRECL</var> must include the one-byte carriage control character. </li>
<li>If the records are variable or undefined in length, LRECL must specify the maximum logical record length. </li>
<li>If the records are variable or undefined in length, <var>LRECL</var> must specify the maximum logical record length. </li>
</ul>
</ul>
<p>
<p>
The range of acceptable values for the LRECL option is 1 to 32767. </p>
The range of acceptable values for the <var>LRECL</var> option is 1 to 32767. </p>
<p>
<p>
This option is used only for non-<var class="product">Model&nbsp;204</var> files. </p>
This option is used only for non-<var class="product">Model&nbsp;204</var> files. </p>
Line 196: Line 206:
   
   
<tr> <th><var>MEMBER</var></th>  
<tr> <th><var>MEMBER</var></th>  
<td>(Only z/OS.) Indicates PDS format on a new allocation. The NEW parameter is required; if you open a PDS without a MEMBER name, it is treated as a sequential data set.
<td>(Only z/OS.) Indicates PDS format on a new allocation. The NEW parameter is required; if you open a PDS without a <var>MEMBER</var> name, it is treated as a sequential data set.
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>MEMORY</var></th>  
<tr> <th><var>MEMORY</var></th>  
<td>(Only z/VM and z/OS.) Designates an in-memory file, specifically an above-the-bar memory object. Used with PAGES.
<td>(Only z/VM and z/OS.) Designates an in-memory file, specifically an above-the-bar memory object. Used with <var>PAGES</var>.
</td> </tr>
</td> </tr>
   
   
Line 206: Line 216:
<td>Indicates the number of channel programs used by BSAM for this data set during output when the Multiple Buffers feature is invoked. The maximum value is 99. The default is one.
<td>Indicates the number of channel programs used by BSAM for this data set during output when the Multiple Buffers feature is invoked. The maximum value is 99. The default is one.
<p>
<p>
See the BUFNO option earlier in this table for related information.</p>
See the <var>BUFNO</var> option earlier in this table for related information.</p>
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>NEW</var> or <p><var>OLD</var> or</p> <p><var>COND</var></p></th>  
<tr> <th><var>NEW</var> or <p><var>OLD</var> or</p> <p><var>COND</var></p></th>  
<td>Indicates whether the data set is created in the current session. The NEW option specifies that the data set is created. It is the default, unless the APPEND option has also been chosen. When the NEW option is specified, the BLOCK/TRACK/CYLINDER, PRIMARY, and, under z/VM, VOLUME options must be specified for dynamic allocation to succeed.   
<td>Indicates whether the data set is created in the current session. The <var>NEW</var> option specifies that the data set is created. It is the default, unless the <var>APPEND</var> option has also been chosen. When the <var>NEW</var> option is specified, the <var>BLOCK/TRACK/CYLINDER</var>, <var>PRIMARY</var>, and, under z/VM, <var>VOLUME</var> options must be specified for dynamic allocation to succeed.   
<p>
<p>
The OLD option indicates that the data set specified in the DSNAME option already exists. If the OLD option is not specified, the ALLOCATE or DEFINE command must provide the PRIMARY and VOLUME (z/VM) options. </p>
The <var>OLD</var> option indicates that the data set specified in the DSNAME option already exists. If the <var>OLD</var> option is not specified, the <var>ALLOCATE</var> or <var>DEFINE</var> command must provide the <var>PRIMARY</var> and <var>VOLUME</var> (z/VM) options. </p>
<p>
<p>
The COND option indicates that the data set specified in the DSNAME option might already exist. COND is the default option if the APPEND option has also been chosen. If the data set does not exist, it is allocated as NEW. (Refer above to the conditions attached to the use of the NEW option.) If the data set does exist, it is allocated as OLD. </p>
The <var>COND</var> option indicates that the data set specified in the DSNAME option might already exist. <var>COND</var> is the default option if the <var>APPEND</var> option has also been chosen. If the data set does not exist, it is allocated as <var>NEW</var>. (Refer above to the conditions attached to the use of the <var>NEW</var> option.) If the data set does exist, it is allocated as <var>OLD</var>. </p>
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>PAGES</var></th>  
<tr> <th><var>PAGES</var></th>  
<td>(Only z/VM and z/OS.) Specifies the number of <var class="product">Model&nbsp;204</var> (6K) pages to allocate for an in-memory file. Used with MEMORY.
<td>(Only z/VM and z/OS.) Specifies the number of <var class="product">Model&nbsp;204</var> (6K) pages to allocate for an in-memory file. Used with <var>MEMORY</var>.
</td> </tr>
</td> </tr>
   
   
Line 224: Line 234:
<td>Specifies the VSAM access password assigned when the cluster was defined. The password can include any character except those reserved for special functions (such as end-of-line or <var class="product">Model&nbsp;204</var> word separator characters). A hexadecimal password is not supported.
<td>Specifies the VSAM access password assigned when the cluster was defined. The password can include any character except those reserved for special functions (such as end-of-line or <var class="product">Model&nbsp;204</var> word separator characters). A hexadecimal password is not supported.
<p>
<p>
The password is checked against the VSAM catalog for the data set. It is also checked for each OPEN DATASET statement for the data set.</p>
The password is checked against the VSAM catalog for the data set. It is also checked for each <var>OPEN DATASET</var> statement for the data set.</p>
<p>
<p>
This option is used for non-<var class="product">Model&nbsp;204</var> files. </p>
This option is used for non-<var class="product">Model&nbsp;204</var> files. </p>
Line 230: Line 240:
   
   
<tr> <th><var>PDS</var></th>  
<tr> <th><var>PDS</var></th>  
<td>(Only z/OS.) Indicates PDS format on a new allocation. The NEW parameter is required; if you open a PDS without a MEMBER name, it is treated as a sequential data set.
<td>(Only z/OS.) Indicates PDS format on a new allocation. The <var>NEW</var> parameter is required; if you open a PDS without a <var>MEMBER</var> name, it is treated as a sequential data set.
</td> </tr>
</td> </tr>
   
   
Line 238: Line 248:
   
   
<tr> <th><var>POSITION</var></th>  
<tr> <th><var>POSITION</var></th>  
<td>(Only z/OS.) Specifies the position of the file on the tape. If this option is not specified, POSITION=1 is assumed. Thus this option is required if the data set wanted is not the first data set on the tape. The maximum acceptable value for this option is 9999. For scratch tape data sets, a value greater than 1 is invalid.
<td>(Only z/OS.) Specifies the position of the file on the tape. If this option is not specified, <code>POSITION=1</code> is assumed. Thus this option is required if the data set wanted is not the first data set on the tape. The maximum acceptable value for this option is 9999. For scratch tape data sets, a value greater than 1 is invalid.
<p>
<p>
This option applies only to dynamic allocation of tape data sets which is valid only under z/OS. </p>
This option applies only to dynamic allocation of tape data sets which is valid only under z/OS. </p>
Line 262: Line 272:
   
   
<tr> <th><var>RELEASE</var> <p>or <var>NORELEASE</var></p></th>  
<tr> <th><var>RELEASE</var> <p>or <var>NORELEASE</var></p></th>  
<td>Determines whether all unused external storage space assigned to this data set is released at the end of processing. The RELEASE option specifies that the unused storage space is released. Specifying the NORELEASE option retains all the disk storage requested in the PRIMARY parameter when processing is completed. The RELEASE and NORELEASE options apply only to dynamic allocation of new data sets under z/OS.
<td>Determines whether all unused external storage space assigned to this data set is released at the end of processing. The <var>RELEASE</var> option specifies that the unused storage space is released. Specifying the <var>NORELEASE</var> option retains all the disk storage requested in the <var>PRIMARY</var> parameter when processing is completed. The <var>RELEASE</var> and <var>NORELEASE</var> options apply only to dynamic allocation of new data sets under z/OS.
</td> </tr>
</td> </tr>
   
   
Line 270: Line 280:
   
   
<tr> <th><var>RETRYALLOC</var></th>  
<tr> <th><var>RETRYALLOC</var></th>  
<td>(z/OS and z/VM only.) RETRYALLOC=n is the number of times to retry dynamic allocation failures. The default is zero (which means do not retry). Any value between 0 and 255 is permitted.  <var class="product">Model&nbsp;204</var> supports the dynamic recall of migrated data sets. When dynamic recall is requested, the user making the request through the USE or OPEN DATASET command enters a wait state until the data set is recalled. However, other users in the Online are not affected. This support is enabled through the RETRYALLOC and RETRYTIME parameters of the DEFINE DATASET command.
<td>(z/OS and z/VM only.) <code>RETRYALLOC=<i>n</i></code> is the number of times to retry dynamic allocation failures. The default is zero (which means do not retry). Any value between 0 and 255 is permitted.  <var class="product">Model&nbsp;204</var> supports the dynamic recall of migrated data sets. When dynamic recall is requested, the user making the request through the <var>USE</var> or <var>OPEN DATASET</var> command enters a wait state until the data set is recalled. However, other users in the Online are not affected. This support is enabled through the <var>RETRYALLOC</var> and <var>RETRYTIME</var> parameters of the <var>DEFINE DATASET</var> command.
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>RETRYTIME</var></th>  
<tr> <th><var>RETRYTIME</var></th>  
<td>(z/OS and z/VM only.) RETRYTIME=n defines the time to wait between dynamic allocation retries in seconds. The default is zero (which means to retry immediately). Any value between 0 and 32767 is permitted. <var class="product">Model&nbsp;204</var> supports the dynamic recall of migrated data sets. When dynamic recall is requested, the user making the request through the USE or OPEN DATASET command enters a wait state until the data set is recalled. However, other users in the Online are not affected. This support is enabled through the RETRYALLOC and RETRYTIME parameters of the DEFINE DATASET command.  
<td>(z/OS and z/VM only.) <code>RETRYTIME=<i>n</i></code> defines the time to wait between dynamic allocation retries in seconds. The default is zero (which means to retry immediately). Any value between 0 and 32767 is permitted. <var class="product">Model&nbsp;204</var> supports the dynamic recall of migrated data sets. When dynamic recall is requested, the user making the request through the <var>USE</var> or <var>OPEN DATASET</var> command enters a wait state until the data set is recalled. However, other users in the Online are not affected. This support is enabled through the <var>RETRYALLOC</var> and <var>RETRYTIME</var> parameters of the <var>DEFINE DATASET</var> command.  
</td> </tr>
</td> </tr>
   
   
Line 286: Line 296:
   
   
<tr> <th><var>SECONDARY</var></th>  
<tr> <th><var>SECONDARY</var></th>  
<td>Specifies the amount of space that is allocated if the PRIMARY space allocation is exceeded. If necessary, the operating system allocates a maximum of 15 secondary amounts of the type requested (BLOCK, TRACK, or CYLINDER).
<td>Specifies the amount of space that is allocated if the <var>PRIMARY</var> space allocation is exceeded. If necessary, the operating system allocates a maximum of 15 secondary amounts of the type requested (<var>BLOCK</var>, <var>TRACK</var>, or <var>CYLINDER</var>).
<p>
<p>
SECONDARY is optional and has no default value. SECONDARY might be specified under z/VM but no secondary allocation occurs. The secondary space information is stored in the VTOC (Volume Table of Contents) when allocation is done under z/VM. This enables secondary space allocation to be performed under z/OS when the primary space allocation of the data set is filled up. The SECONDARY option is meaningful only when dynamically allocating new data sets.  </p>
<var>SECONDARY</var> is optional and has no default value. <var>SECONDARY</var> might be specified under z/VM but no secondary allocation occurs. The secondary space information is stored in the VTOC (Volume Table of Contents) when allocation is done under z/VM. This enables secondary space allocation to be performed under z/OS when the primary space allocation of the data set is filled up. The <var>SECONDARY</var> option is meaningful only when dynamically allocating new data sets.  </p>
</td> </tr>
</td> </tr>
   
   
<tr> <th nowrap><var>SEQUENTIAL</var> or <p><var>KEYED</var> or</p> <p><var>KEYED SEQUENTIAL</var> or</p> <p><var>DIRECT</var> or</p> <p><var>SAM</var> or</p> <p><var>VSAM</var> or</p> <p><var>DAM</var></p> </th>  
<tr> <th nowrap><var>SEQUENTIAL</var> or <p><var>KEYED</var> or</p> <p><var>KEYED SEQUENTIAL</var> or</p> <p><var>DIRECT</var> or</p> <p><var>SAM</var> or</p> <p><var>VSAM</var> or</p> <p><var>DAM</var></p> </th>  
<td>Indicates the file organization and access method. SEQUENTIAL is the default. The access method specified depends on the file:  
<td>Indicates the file organization and access method. <var>SEQUENTIAL</var> is the default. The access method specified depends on the file:  
<p>
<p>
For SEQUENTIAL files, the access method must be SAM or VSAM. The default is SAM. If VSAM is specified, the file is a VSAM key-sequenced file (KSDS) and access by key is not allowed.</p>
For <var>SEQUENTIAL</var> files, the access method must be SAM or VSAM. The default is SAM. If <var>VSAM</var> is specified, the file is a VSAM key-sequenced file (KSDS) and access by key is not allowed.</p>
<p>
<p>
For KEYED or KEYED SEQUENTIAL files, the access method must be VSAM. The file can be accessed by key or in sequential order. </p>
For <var>KEYED</var> or <var>KEYED SEQUENTIAL</var> files, the access method must be VSAM. The file can be accessed by key or in sequential order. </p>
<p>
<p>
For DIRECT files, the access method must be DAM. DIRECT means that the file is a <var class="product">Model&nbsp;204</var> file. </p>
For <var>DIRECT</var> files, the access method must be DAM. <var>DIRECT</var> means that the file is a <var class="product">Model&nbsp;204</var> file. </p>
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>SHARE</var> or <var>EXCLUSIVE</var></th>  
<tr> <th><var>SHARE</var> or <var>EXCLUSIVE</var></th>  
<td>(Only z/OS.) Determines the type of operating system enqueue to be obtained. For example, a combination of OLD and SHARE allows other jobs to share access to a data set with <var class="product">Model&nbsp;204</var>. SHARE is the default.
<td>(Only z/OS.) Determines the type of operating system enqueue to be obtained. For example, a combination of <var>OLD</var> and <var>SHARE</var> allows other jobs to share access to a data set with <var class="product">Model&nbsp;204</var>. <var>SHARE</var> is the default.
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>SMSLIKE</var></th>  
<tr> <th><var>SMSLIKE</var></th>  
<td>(Only z/OS.) Designates the SMS model data set name allocation. Must be used with a =dsn option.
<td>(Only z/OS.) Designates the SMS model data set name allocation. Must be used with a <code>=<i>dsn</i></code> option.
</td> </tr>
</td> </tr>
   
   
<tr> <th><var>STRINGS</var></th>  
<tr> <th><var>STRINGS</var></th>  
<td>Specifies the number of concurrent access strings (positioning) to a VSAM file. The default value is 1. The STRINGS value can be overridden by the STRNO subparameter of the AMP parameter in the JCL DD statement (only z/OS).
<td>Specifies the number of concurrent access strings (positioning) to a VSAM file. The default value is 1. The <var>STRINGS</var> value can be overridden by the <code>STRNO</code> subparameter of the <code>AMP</code> parameter in the JCL DD statement (only z/OS).
<p>
<p>
This option is used for non-<var class="product">Model&nbsp;204</var> files. </p></td> </tr>
This option is used for non-<var class="product">Model&nbsp;204</var> files. </p></td> </tr>
   
   
<tr> <th><var>TIOT</var> or <p><var>XTIOT</var></p></th>  
<tr> <th><var>TIOT</var> or <p><var>XTIOT</var></p></th>  
<td>(Only z/OS.) TIOT specifies that the number of dynamically allocated data sets is limited to 3,273.  
<td>(Only z/OS.) <var>TIOT</var> specifies that the number of dynamically allocated data sets is limited to 3,273.  
<p>
<p>
XTIOT specifies that the number of dynamically allocated data sets is limited by only the amount of processor storage. The XTIOT option requires the OLD and DIRECT options to process without error. </p></td> </tr>
<var>XTIOT</var> specifies that the number of dynamically allocated data sets is limited by only the amount of processor storage. The <var>XTIOT</var> option requires the <var>OLD</var> and <var>DIRECT</var> options to process without error. </p></td> </tr>
   
   
<tr> <th><var>UNIT</var></th>  
<tr> <th><var>UNIT</var></th>  
<td>(Only z/OS.) Specifies the unit name of the I/O device for the data set. Typical unit names are DISK, TAPE, and SYSDA (the default). The UNIT option is meaningful only during dynamic allocation.  </td> </tr>
<td>(Only z/OS.) Specifies the unit name of the I/O device for the data set. Typical unit names are <code>DISK</code>, <code>TAPE</code>, and <code>SYSDA</code> (the default). The <var>UNIT</var> option is meaningful only during dynamic allocation.  </td> </tr>
   
   
<tr> <th><var>VOLMAX</var></th>  
<tr> <th><var>VOLMAX</var></th>  
Line 333: Line 343:
<td>Specifies the volume on which a data set resides or on which a new data set is placed. A volume can identify a tape or disk.
<td>Specifies the volume on which a data set resides or on which a new data set is placed. A volume can identify a tape or disk.
<p>
<p>
This option is required under z/VM when a new data set is created or when an existing data set is referenced that resides on an unaccessed OS-format or z/VSE-format minidisk. The VOLUME option is meaningful only during dynamic allocation. </p>
This option is required under z/VM when a new data set is created or when an existing data set is referenced that resides on an unaccessed OS-format or z/VSE-format minidisk. The <var>VOLUME</var> option is meaningful only during dynamic allocation. </p>
</td> </tr>   
</td> </tr>   
</table>
</table>


==Syntax notes==
==Syntax notes==
<p>Any number of DEFINE DATASET options can be specified. Options must be separated by commas or by one or more blanks. A continuation character (-) is required at the end of an input line if the options continue onto the next line.</p>
<p>
<p>The DEFINE DATASET command does not check the validity of such options as LRECL, BLKSIZE, and RECFM. They are verified against one another when the data set is opened.</p>
Any number of <var>DEFINE DATASET</var> options can be specified. Options must be separated by commas or by one or more blanks. A continuation character (<tt>-</tt>) is required at the end of an input line if the options continue onto the next line.</p>
<p>
The <var>DEFINE DATASET</var> command does not check the validity of such options as <var>LRECL</var>, <var>BLKSIZE</var>, and <var>RECFM</var>. They are verified against one another when the data set is opened.</p>
 
<p>For general syntax and usage notes that apply to all forms of the <var>DEFINE</var> command, see <var>[[DEFINE command]]</var>.</p>


==Examples==
==Examples==
===Example 1: New sequential data set===
===Example 1: New sequential data set===
This example defines a new sequential data set with a name of OUTFILE:  
This example defines a new sequential data set with a name of <code>OUTFILE</code>:  
<p class="code">DEFINE DATASET OUTFILE WITH SCOPE=SYSTEM -  
<p class="code">DEFINE DATASET OUTFILE WITH SCOPE=SYSTEM -  
LRECL=80 BLKSIZE=800 RECFM=FB SEQUENTIAL -
LRECL=80 BLKSIZE=800 RECFM=FB SEQUENTIAL -
PRIMARY=150 BLOCK VOLUME=RPG001
PRIMARY=150 BLOCK VOLUME=RPG001
</p>
</p>
===Example 2: New data set with a template===
===Example 2: New data set with a template===
<p>This example defines a new data set and gives it all the attributes of the previously defined data set (template): </p>
<p>This example defines a new data set and gives it all the attributes of the previously defined data set (template): </p>
<p class="code">DEFINE DATASET TEST LIKE OUTFILE WITH SCOPE=SYSTEM   
<p class="code">DEFINE DATASET TEST LIKE OUTFILE WITH SCOPE=SYSTEM   
</p>
</p>
===Example 3: Catalogued tape data sets===
===Example 3: Catalogued tape data sets===
<p>These examples define catalogued tape data sets: </p>
<p>These examples define catalogued tape data sets: </p>
Line 360: Line 377:
TAPE=UNIT VOLUME=TVOL  
TAPE=UNIT VOLUME=TVOL  
</p>
</p>
===Example 4: Uncatalogued tape data sets===
===Example 4: Uncatalogued tape data sets===
<p>This example defines an uncatalogued tape data set: </p>
<p>This example defines an uncatalogued tape data set: </p>
Line 366: Line 384:
VOLUME=TAPVOL  
VOLUME=TAPVOL  
</p>
</p>
===Example 5: SEQUENTIAL file organization, SAM access method===
===Example 5: SEQUENTIAL file organization, SAM access method===
<p>The following example defines a data set with a SEQUENTIAL file organization and an access method of SAM: </p>
<p>The following example defines a data set with a <var>SEQUENTIAL</var> file organization and an access method of SAM: </p>
<p class="code">DEFINE DATASET XYZ -  
<p class="code">DEFINE DATASET XYZ -  
WITH SCOPE=SYSTEM SEQUENTIAL -
WITH SCOPE=SYSTEM SEQUENTIAL -
Line 373: Line 392:
RECFM=FB  
RECFM=FB  
</p>
</p>
===Example 6: KEYED file organization===
===Example 6: KEYED file organization===
<p>The following example defines a data set with a KEYED file organization, an access method of VSAM, an EOJ parameter for the CLOSE option, and a VSAM password termed ANYTHING: </p>
<p>
The following example defines a data set with a <var>KEYED</var> file organization, an access method of VSAM, an <var>EOJ</var> parameter for the <var>CLOSE</var> option, and a VSAM password termed <code>ANYTHING</code>: </p>
<p class="code">DEFINE DATASET RPQ -  
<p class="code">DEFINE DATASET RPQ -  
WITH SCOPE=SYSTEM KEYED -
WITH SCOPE=SYSTEM KEYED -
Line 380: Line 401:
PASSWORD=ANYTHING   
PASSWORD=ANYTHING   
</p>
</p>
===Example 7: In-memory file (z/OS and z/VM)===
===Example 7: In-memory file (z/OS and z/VM)===
<p>The following example defines an in-memory file named BUSES: </p>
<p>
The following example defines an in-memory file named <code>BUSES</code>: </p>
<p class="code">DEFINE DATASET BUSES WITH SCOPE=SYSTEM MEMORY PAGES=10000 DIRECT
<p class="code">DEFINE DATASET BUSES WITH SCOPE=SYSTEM MEMORY PAGES=10000 DIRECT
</p>
</p>
Line 389: Line 412:
==Usage notes==
==Usage notes==
<p>
<p>
The DEFINE DATASET command can dynamically define the physical characteristics of data sets used in <var class="product">Model&nbsp;204</var> and can refer to previously defined data sets through the LIKE phrase. You also can indicate the attributes, such as the DSNAME and SHARE/EXCLUSIVE options, that the operating system needs to create the data set. Options specified in the DEFINE DATASET command override the defaults provided by <var class="product">Model&nbsp;204</var>.  </p>
The <var>DEFINE DATASET</var> command can dynamically define the physical characteristics of data sets used in <var class="product">Model&nbsp;204</var> and can refer to previously defined data sets through the <var>LIKE</var> phrase. You also can indicate the attributes, such as the <var>DSNAME</var> and <var>SHARE/EXCLUSIVE</var> options, that the operating system needs to create the data set. Options specified in the <var>DEFINE DATASET</var> command override the defaults provided by <var class="product">Model&nbsp;204</var>.  </p>
<p>The DEFINE DATASET command also provides a facility for identifying non-<var class="product">Model&nbsp;204</var> files, such as a VSAM file or a basic sequential file, from User Language requests.</p>
<p>
<p>
The <var>DEFINE DATASET</var> command also provides a facility for identifying non-<var class="product">Model&nbsp;204</var> files, such as a VSAM file or a basic sequential file, from SOUL requests.</p>
===LARGE data sets===
===LARGE data sets===
You can define a LARGE (> 64K tracks) data set under only z/OS 1.7 or later. The LARGE argument applies to: </p>
You can define a <var>LARGE</var> (> 64K tracks) data set under only z/OS 1.7 or later. The <var>LARGE</var> argument applies to:
<ul>  
<ul>  
<li>
<li>[[Tracking_system_activity_(CCAJRNL,_CCAAUDIT,_CCAJLOG)#CCAJRNL|CCAJRNL]], [[Tracking_system_activity_(CCAJRNL,_CCAAUDIT,_CCAJLOG)#CCAAUDIT_and_CCAJLOG|CCAJLOG]], including GDG and stream-based journals and jlogs
<p>CCAJRNL, CCAJLOG, including GDG and stream-based journals and jlogs</p>
<p class="note"><b>Note:</b> <var>LARGE</var> CHKPOINT data sets are supported as of Model 204 version 7.7.</p></li>
<p><b>Note:</b> LARGE CHKPOINT data sets are not supported</p>
</li>
   
   
<li>
<li>Data sets used for dumping and/or restoring <var class="product">Model&nbsp;204</var> files</li>
<p>Data sets used for dumping and/or restoring <var class="product">Model&nbsp;204</var> files</p>
</li>


<li>
<li>Data sets used for sequential output; the <var>USE</var> command or the SOUL [[Images#Write_Image_statement|WRITE IMAGE]] statement</li>  
<p>Data sets used for sequential output; the USE command or the SOUL - WRITE IMAGE statement</p>
</li>  


<li>
<li><var class="product">Model&nbsp;204</var> file data sets</li>
<p><var class="product">Model&nbsp;204</var> file data sets</p>
</ul>
</li>


<li>
<blockquote class="note">
<p><b>Note:</b></p>
<p><b>Note:</b> When defining a <i>pre-existing</i>, <var>LARGE</var> data set, make sure to use <var>LARGE</var>, <var>SAM</var>, and for Model 204 files, <var>SEQUENTIAL</var> in the <var>DEFINE</var> command:</p>
<p> When defining a <i>pre-existing</i>, LARGE data set, make sure to use LARGE, SAM and, for Model 204 files, SEQUENTIAL in the DEFINE command:</p>
<ul>
<ul>
<li>For non-Model 204, sequential files:
<li>For non-Model 204, sequential files:
<p>       DEFINE DATASET OUTFILEA WITH SCOPE=SYSTEM OLD LARGE SAM DSN=OUTFILEA.M204</p></li>
<p class="code">DEFINE DATASET OUTFILEA WITH SCOPE=SYSTEM OLD LARGE SAM DSN=OUTFILEA.M204</p></li>
 
<li>For Model 204 database files
<li>For Model 204 database files
<p>       DEFINE DATASET MYM204DB WITH SCOPE=SYSTEM OLD LARGE SAM SEQUENTIAL DSN=MYM204DB.M204</p></li>
<p class="code">DEFINE DATASET MYM204DB WITH SCOPE=SYSTEM OLD LARGE SAM SEQUENTIAL DSN=MYM204DB.M204</p></li>  
</ul>  
</ul>
</ul>
</blockquote>


===Dynamic allocation at OPEN time===
===Dynamic allocation at OPEN time===
<p>
<p>
You can open data sets that have been defined through the DEFINE DATASET command but that have not yet been allocated. In this case, the data set is dynamically allocated at OPEN time. This is equivalent to issuing a DEFINE DATASET command for a data set, issuing an ALLOCATE command to allocate it, and then opening it. No messages are displayed when the dynamic allocation is performed; messages are issued only if the allocation fails.</p>
You can open data sets that have been defined through the <var>DEFINE DATASET</var> command but that have not yet been allocated. In this case, the data set is dynamically allocated at <var>[[OPEN_command|OPEN]]</var> time. This is equivalent to issuing a <var>DEFINE DATASET</var> command for a data set, issuing an <var>[[ALLOCATE_command|ALLOCATE]]</var> command to allocate it, and then opening it. No messages are displayed when the dynamic allocation is performed; messages are issued only if the allocation fails.</p>
<p>
<p>
Data sets that have been dynamically allocated during open processing are deallocated when they are closed. This is equivalent to closing the data set and then issuing a FREE command for it.</p>
Data sets that have been dynamically allocated during open processing are deallocated when they are closed. This is equivalent to closing the data set and then issuing a <var>[[FREE command|FREE]]</var> command for it.</p>


===External file identification===
===External file identification===
<p>
<p>
External file I/O support allows READ access to any VSAM KSDS (key-sequenced) cluster either via the primary key, or via the alternate index key through a predefined PATH and an ALTERNATEINDEX cluster in the VSAM catalog. For <var class="product">Model&nbsp;204</var> to recognize a VSAM file, a DEFINE DATASET command must be used to identify that file and to specify that the VSAM access method be used for accessing that file. In addition, this command must also provide <var class="product">Model&nbsp;204</var> with other information, such as the password (if any), the number of access strings, or the close option of the VSAM file.</p>
External file I/O support allows READ access to any VSAM KSDS (key-sequenced) cluster either via the primary key, or via the alternate index key through a predefined PATH and an ALTERNATEINDEX cluster in the VSAM catalog. For <var class="product">Model&nbsp;204</var> to recognize a VSAM file, a <var>DEFINE DATASET</var> command must be used to identify that file and to specify that the VSAM access method be used for accessing that file. In addition, this command must also provide <var class="product">Model&nbsp;204</var> with other information, such as the password (if any), the number of access strings, or the close option of the VSAM file.</p>
<p>
<p>
If access via an alternate key is desired, a DD statement for the predefined PATH (a DLBL statement for z/VSE systems) must be included in the start-up JCL and a DEFINE DATASET command must be issued for the PATH to indicate that it is a VSAM file. For information on the definition for the ALTERNATEINDEX cluster, refer to the <var class="book">Model&nbsp;204 System Manager's Guide</var>.</p>
If access via an alternate key is desired, a DD statement for the predefined PATH (a DLBL statement for z/VSE systems) must be included in the start-up JCL and a <var>DEFINE DATASET</var> command must be issued for the PATH to indicate that it is a VSAM file. For information on the definition for the ALTERNATEINDEX cluster, refer to [[Accessing BSAM and VSAM files#Alternate index key processing|Alternate index key processing]].</p>
<p>
<p>
External file I/O support allows READ/WRITE access to any sequential file whose organizational structure is in accordance with the BSAM data set structure in the z/OS operating environment or the SAM file structure in the z/VSE operating environment. For a z/VSE operating system, a DEFINE DATASET command must be provided for each sequential file to be accessed. The command must include parameters for BLKSIZE, LRECL, and RECFM. </p>
External file I/O support allows READ/WRITE access to any sequential file whose organizational structure is in accordance with the BSAM data set structure in the z/OS operating environment or the SAM file structure in the z/VSE operating environment. For a z/VSE operating system, a <var>DEFINE DATASET</var> command must be provided for each sequential file to be accessed. The command must include parameters for <var>BLKSIZE</var>, <var>LRECL</var>, and <var>RECFM</var>. </p>
<p>
<p>
For a z/OS operating system, <var class="product">Model&nbsp;204</var> can obtain that information either from the DCB parameter of the DD statement or from the disk file label. Therefore, the DEFINE DATASET command for a sequential data set is optional.</p>
For a z/OS operating system, <var class="product">Model&nbsp;204</var> can obtain that information either from the DCB parameter of the DD statement or from the disk file label. Therefore, the <var>DEFINE DATASET</var> command for a sequential data set is optional.</p>
<p>
<p>
The external file I/O support feature can be used to directly load a VSAM KSDS file or a VSAM entry-sequenced (ESDS) file, accessing via an ALTERNATEINDEX cluster and a predefined PATH combination, into any <var class="product">Model&nbsp;204</var> file. A DEFINE DATASET command must be provided for each VSAM file (or PATH definition if the alternate index is used). In addition, a DD statement (or DLBL statement) for the file or PATH must be included in the JCL for use with the File Load utility (FLOD).  </p>
The external file I/O support feature can be used to directly load a VSAM KSDS file or a VSAM entry-sequenced (ESDS) file, accessing via an ALTERNATEINDEX cluster and a predefined PATH combination, into any <var class="product">Model&nbsp;204</var> file. A <var>DEFINE DATASET</var> command must be provided for each VSAM file (or PATH definition if the alternate index is used). In addition, a DD statement (or DLBL statement) for the file or PATH must be included in the JCL for use with the File Load utility (FLOD).  </p>


===In-memory file allocation and restoration (z/OS and z/VM)===
===In-memory file allocation and restoration (z/OS and z/VM)===
<p>The difference between using the ALLOCATE and DEFINE DATASET command for in-memory files is:</p>
<p>The difference between using the <var>ALLOCATE</var> and <var>DEFINE DATASET</var> command for in-memory files is:</p>
<ul>  
<ul>  
<li>
<li>For a <var>DEFINE DATASET</var> command the memory object is not allocated until the file is first opened or created.</li>
<p>For a DEFINE DATASET command the memory object is not allocated until the file is first opened or created.</p>
</li>
   
   
<li>
<li>For an <var>ALLOCATE</var> command the memory object is immediately allocated.</li>
<p>For an ALLOCATE command the memory object is immediately allocated.</p>
</ul>
</li>
<p>
</ul>
When you create an in-memory file, the default <var>[[FRCVOPT_parameter|FRCVOPT]]</var> parameter value is X'24', which means that this file does not participate in journal and checkpoint logging.</p>
<p>When you create an in-memory file, the default FRCVOPT is X'24', which means that this file does not participate in journal and checkpoint logging.</p>
<p>
 
However, remember that restoring an in-memory file with <var>RESTORE</var> from a backup will copy the <var>FRCVOPT</var> from that backup copy into the in-memory file, thus overriding the default. In-memory files are also created with <code><var>[[FOPT_command|FOPT]]</var>=0</code>, which is TBO enabled, and TBO is supported. <var>[[REGENERATE_command|REGENERATE]]</var> is also supported. <var>[[RESTART_command|RESTART]]</var> recovery is not supported.
<p>However, remember that restoring an in-memory file with RESTORE from a backup will copy the FRCVOPT from that backup copy into the in-memory file, thus overriding the default. In-memory files are also created with FOPT=0, which is TBO enabled, and TBO is supported. REGENERATE is also supported. RESTART recovery is not supported.
Given these caveats, if you want to provide for both <var>REGENERATE</var> recovery and [[Transaction_back_out|TBO]], the best parameter settings for in-memory files are <code>FRCVOPT=X'20'</code> and <code>FOPT=0</code>.</p>  
 
<p>
Given these caveats, if you want to provide for both REGENERATE recovery and TBO, the best parameter settings for in-memory files are FRCVOPT=X’20’ and FOPT=0.</p>  
The <var>[[DUMP command|DUMP]]</var> and <var>[[RESTORE command|RESTORE]]</var> commands can process in-memory files. </p>
 
The <var>[[DUMP command|DUMP]]</var> and <var>[[RESTORE command|RESTORE]]</var> commands can process in-memory files.
<blockquote class="note">
<blockquote class="note">
<p><b>Note:</b> You cannot create in-memory files that are part of a multi-data-set file, such as the following:</p>
<p><b>Note:</b> You cannot create in-memory files that are part of a multi-data-set file, such as the following:</p>
<p class="code">CREATE FILE filename FROM filenam1,filenam2
<p class="code">CREATE FILE <i>filename</i> FROM <i>filenam1</i>,<i>filenam2</i>
</p>
</p>
</blockquote>
</blockquote>
For more information on in-memory files, see [[In-memory files]].
For more information about in-memory files, see [[In-memory files]].


===Dynamic tape allocation (z/OS)===
===Dynamic tape allocation (z/OS)===
Line 470: Line 483:
Dynamic tape allocation is an extension to dynamic data set allocation. It is supported only under z/OS. In dynamic tape allocation, SVC 99 is used to interact with the tape management system and to perform the actual allocation.</p>
Dynamic tape allocation is an extension to dynamic data set allocation. It is supported only under z/OS. In dynamic tape allocation, SVC 99 is used to interact with the tape management system and to perform the actual allocation.</p>
<p>
<p>
The options for dynamic tape allocation are LABEL, POSITION, and DENSITY. They are described above in the list of options.</p>
The options for dynamic tape allocation are <var>LABEL</var>, <var>POSITION</var>, and <var>DENSITY</var>. They are described above in the list of options.</p>
<p>
<p>
Operator messages and interaction for dynamic tape allocation are the same as in standard tape allocation. The operating system controls the exact form of the interaction.</p>
Operator messages and interaction for dynamic tape allocation are the same as in standard tape allocation. The operating system controls the exact form of the interaction.</p>
Line 476: Line 489:
===Processing Partitioned Data Sets (PDS) (z/OS)===
===Processing Partitioned Data Sets (PDS) (z/OS)===
<p>
<p>
On z/OS systems only, <var class="product">Model&nbsp;204</var> users can use a member of a Partitioned Data Set (PDS) as an input or output data set for physical sequential access. PDS data sets can be used in <var class="product">Model&nbsp;204</var> as input or output data set, in USE statements, or to process images. The PDS can be allocated either outside of <var class="product">Model&nbsp;204</var> dynamically or within <var class="product">Model&nbsp;204</var>. In the DEFINE DATASET command, you must use the new keyword MEMBER or MEM. </p>
On z/OS systems only, <var class="product">Model&nbsp;204</var> users can use a member of a Partitioned Data Set (PDS) as an input or output data set for physical sequential access. PDS data sets can be used in <var class="product">Model&nbsp;204</var> as input or output data set, in USE statements, or to process images. The PDS can be allocated either outside of <var class="product">Model&nbsp;204</var> dynamically or within <var class="product">Model&nbsp;204</var>. In the <var>DEFINE DATASET</var> command, you must use the keyword <var>MEMBER</var> or <var>MEM</var>. </p>


====Syntax====
====Syntax====
Line 482: Line 495:
</p>
</p>


====Example====
====Examples====
<p>The following examples illustrate the DEFINE DATASET command with PDS and MEMBER parameters.</p>
<p>
<p>An example of DEFINE DATASET for a NEW PDS and MEMBER.</p>
The following examples illustrate the <var>DEFINE DATASET</var> command with <var>PDS</var> and <var>MEMBER</var> parameters.</p>
<p class="code">DEFINE DATASET OUTPDS WITH SCOPE=SYSTEM DSNAME=M204.-
<p>
  OUTPDS  MEMBER=MEM1 LRECL=80 BLKSIZE=800 TRACK -
An example of <var>DEFINE DATASET</var> for a <var>NEW PDS</var> and <var>MEMBER</var>:</p>
  PRIMARY=50  SECONDARY=40 DIRECTORY=5 NEW PDS-
<p class="code">DEFINE DATASET OUTPDS WITH SCOPE=SYSTEM DSNAME=M204. -
  OUTPDS  MEMBER=MEM1 LRECL=80 BLKSIZE=800 TRACK                     -
  PRIMARY=50  SECONDARY=40 DIRECTORY=5 NEW PDS                       -
  UNIT=DISK204
  UNIT=DISK204
</p>
</p>
<p>
<p>
An example of a DEFINE DATASET command for an existing PDS data set and MEMBER. You can write over the MEMBER if it already exists.</p>
An example of a <var>DEFINE DATASET</var> command for an existing <var>PDS</var> data set and <var>MEMBER</var>. You can write over the <var>MEMBER</var> if it already exists:</p>
<p class="code">DEFINE DATASET OUTPDS WITH SCOPE=SYSTEM -
<p class="code">DEFINE DATASET OUTPDS WITH SCOPE=SYSTEM -
   DSNAME=M204.OUTPDS MEMBER=MEM1 OLD
   DSNAME=M204.OUTPDS MEMBER=MEM1 OLD
</p>
</p>
<p>
<p>
An example of a DEFINE DATASET command for the same PDS as above, but a different MEMBER. </p>
An example of a <var>DEFINE DATASET</var> command for the same <var>PDS</var> as above, but a different <var>MEMBER</var>: </p>
<p class="code">DEFINE DATASET OUTPDS2 WITH SCOPE=SYSTEM -
<p class="code">DEFINE DATASET OUTPDS2 WITH SCOPE=SYSTEM -
  DSNAME=M204.OUTPDS MEMBER=MEM2 OLD UNIT=3380 -
  DSNAME=M204.OUTPDS MEMBER=MEM2 OLD UNIT=3380           -
  VOLUME=OS8U01
  VOLUME=OS8U01
</p>
</p>
Line 504: Line 519:
====Appending data to a PDS====
====Appending data to a PDS====
<p>
<p>
You cannot append data to the end of a PDS member. Specifying the APPEND parameter for an existing member results in the following message: </p>
You cannot append data to the end of a PDS member. Specifying the <var>APPEND</var> parameter for an existing member results in the following message: </p>
<p class="code">M204.2167: A CLOSE ERROR HAS BEEN DETECTED ON DATASET dddddddd
<p class="code">M204.2167: A CLOSE ERROR HAS BEEN DETECTED ON DATASET dddddddd
</p>
</p>
<p>
<p>
The same error occurs if you specify DISP=MOD on the DD statement for a PDS member. You can expect the APPEND parameter on the DEFINE DATASET command to have no effect when opening for output a new member of a PDS, as long as no other errors occur.</p>
The same error occurs if you specify <code>DISP=MOD</code> on the DD statement for a PDS member. You can expect the <var>APPEND</var> parameter on the <var>DEFINE DATASET</var> command to have no effect when opening for output a new member of a PDS, as long as no other errors occur.</p>
<p class="note"><b>Note:</b> If no member name is provided for an existing partitioned data set, then a data set is treated as sequential and all existing members are erased.</p>
<p class="note"><b>Note:</b> If no member name is provided for an existing partitioned data set, then a data set is treated as sequential and all existing members are erased.</p>


====Output conflicts between open PDS members====
====Output conflicts between open PDS members====
<p>
<p>
When a PDS member is open for output, an exclusive enqueue with SCOPE=SYSTEM, QNAME=SPFEDIT, and RNAME=DATASET_NAME is obtained. For a given PDS, only one PDS member can be open for output at a time using one or multiple <var class="product">Model&nbsp;204</var> Onlines. </p>
When a PDS member is open for output, an exclusive enqueue with <code>SCOPE=SYSTEM</code>, <code>QNAME=SPFEDIT</code>, and <code>RNAME=DATASET_NAME</code> is obtained. For a given PDS, only one PDS member can be open for output at a time using one or multiple <var class="product">Model&nbsp;204</var> Onlines. </p>
<p>
<p>
Any attempt to open the same or another member of an already open-for-output PDS fails. The following message is issued to requestor(s) in the same or different <var class="product">Model&nbsp;204</var> Online, because the file is already open for output by the same or a different <var class="product">Model&nbsp;204</var> Online: </p>
Any attempt to open the same or another member of an already open-for-output PDS fails. The following message is issued to requestor(s) in the same or different <var class="product">Model&nbsp;204</var> Online, because the file is already open for output by the same or a different <var class="product">Model&nbsp;204</var> Online: </p>
Line 519: Line 534:
</p>
</p>
<p>
<p>
TSO users can edit PDS members from data sets opened for output by Model\ 204, but until the data set is closed, attempts to write members back fails with the operating system message: </p>
TSO users can edit PDS members from data sets opened for output by Model&nbsp;204, but until the data set is closed, attempts to write members back fails with the operating system message: </p>
<p class="code">RESERVE FAILED  
<p class="code">RESERVE FAILED  
</p>
</p>
<p>
<p>
Any user who opens a PDS member for output prevents all other users from updating any other member in the same PDS until the data set is closed. To prevent long delays in updating PDS members, User Language programs should do a minimum of processing and avoid user input or output between OPEN and CLOSE statements or any other statements that might lead to an unpredicted wait time.</p>
Any user who opens a PDS member for output prevents all other users from updating any other member in the same PDS until the data set is closed. To prevent long delays in updating PDS members, SOUL programs should do a minimum of processing and avoid user input or output between <var>OPEN</var> and <var>CLOSE</var> statements or any other statements that might lead to an unpredicted wait time.</p>


====PDS members open for input====
====PDS members open for input====
<p>
<p>
You can access a PDS simultaneously for multiple input data sets and for one output data set, with all allocations using the OLD and SHARE options of the DEFINE DATASET command.</p>
You can access a PDS simultaneously for multiple input data sets and for one output data set, with all allocations using the <var>OLD</var> and <var>SHARE</var> options of the <var>DEFINE DATASET</var> command.</p>


===Processing generation data group (GDG) data sets (z/OS)===
===Processing generation data group (GDG) data sets (z/OS)===
<p>
<p>
On z/OS systems only, <var class="product">Model&nbsp;204</var> users can access any previously created GDG data set by using the GEN keyword with a 0 or -<var class="term">n</var> or +<var class="term">n</var> value under DEFINE DATASET. The OLD keyword must also be specified. You can use GDG data sets for sequential I/O, in USE statements, to process images, or as data set files.</p>
On z/OS systems only, <var class="product">Model&nbsp;204</var> users can access any previously created GDG data set by using the <var>GEN</var> keyword with a 0 or -<var class="term">n</var> or +<var class="term">n</var> value under <var>DEFINE DATASET</var>. The <var>OLD</var> keyword must also be specified. You can use GDG data sets for sequential I/O, in <var>USE</var> statements, to process images, or as data set files.</p>
<p>
<p>
The syntax on a DEFINE statement for a GDG data set is: </p>
The syntax on a <var>DEFINE</var> statement for a GDG data set is: </p>
<p class="syntax"><span class="squareb">[</span>DSNAME=<span class="term">name</span><span class="squareb">]</span> <span class="squareb">[</span>GEN = <span class="squareb">{</span> -<span class="term">n</span> <span class="squareb">|</span> 0 <span class="squareb">|</span> +<span class="term">n</span> <span class="squareb">}</span> OLD<span class="squareb">]</span>
<p class="syntax"><span class="squareb">[</span>DSNAME=<span class="term">name</span><span class="squareb">]</span> <span class="squareb">[</span>GEN = <span class="squareb">{</span> -<span class="term">n</span> <span class="squareb">|</span> 0 <span class="squareb">|</span> +<span class="term">n</span> <span class="squareb">}</span> OLD<span class="squareb">]</span>
</p>
</p>
Line 541: Line 556:
====Creating a new GDG data set====
====Creating a new GDG data set====
<p>
<p>
To create a new GDG data set, use the GEN=+1 keyword on DEFINE. The GDG base file must have been built previously using IDCAMS, and, if required by your level of z/OS, a model DSCB must be provided. (To create a GDG base file and model DSCB, see the following examples.)</p>
To create a new GDG data set, use the <code>GEN=+1</code> keyword on <var>DEFINE</var>. The GDG base file must have been built previously using an IDCAMS <code>DEFINE</code> command, and, if required by your level of z/OS, a model DSCB must be provided. (To create a GDG base file and model DSCB, see the following examples.)</p>
<p>
<p>
Failure to specify DSCB in certain z/OS environments causes the following message to be displayed: </p>
Failure to specify DSCB in certain z/OS environments causes the following message to be displayed: </p>
Line 569: Line 584:
// UNIT=3380,VOL=SER=DSK123  
// UNIT=3380,VOL=SER=DSK123  
</p>
</p>
<p class="note"><b>Note:</b> You can combine the two steps into one step by adding the ALCDSCB0 DD statement to the IDCAMS step.</p>
<p class="note"><b>Note:</b> You can combine the two steps into one step by adding the <code>ALCDSCB0</code> DD statement to the IDCAMS step.</p>


===z/VSE considerations===
===z/VSE considerations===
Line 578: Line 593:
<li>Relate a <var class="product">Model&nbsp;204</var> data set name to a logical unit number. This is especially helpful when the data set is being routed to a file that cannot be referenced by a data set name such as a tape file.</li>
<li>Relate a <var class="product">Model&nbsp;204</var> data set name to a logical unit number. This is especially helpful when the data set is being routed to a file that cannot be referenced by a data set name such as a tape file.</li>
   
   
<li>Route output from a USE command to a printer, punch, or tape device. (Refer to the discussion in this section on the USE command and directing output to a sequential data set.) The DEFINE DATASET command is required in this case, because USE output files must be routed to data set names that begin with the characters OUT.</li>
<li>Route output from a <var>USE</var> command to a printer, punch, or tape device. (Refer to the discussion in this section on the <var>USE</var> command and directing output to a sequential data set.) The <var>DEFINE DATASET</var> command is required in this case, because <var>USE</var> output files must be routed to data set names that begin with the characters <code>OUT</code>.</li>
   
   
<li>Indicate options (RECFM, LRECL, BLKSIZE) that cannot be specified in z/VSE JCL.</li>
<li>Indicate options (RECFM, LRECL, BLKSIZE) that cannot be specified in z/VSE JCL.</li>
</ul>
</ul>
<p>
<p>
The following example relates the internal <var class="product">Model&nbsp;204</var> filename, ADDRFILE, to the 7-character z/VSE filename, ADDRFIL:</p>
The following example relates the internal <var class="product">Model&nbsp;204</var> filename, <code>ADDRFILE</code>, to the 7-character z/VSE filename, <code>ADDRFIL</code>:</p>
<p class="code">DEFINE DATASET ADDRFILE WITH SCOPE=SYSTEM FILENAME=ADDRFIL
<p class="code">DEFINE DATASET ADDRFILE WITH SCOPE=SYSTEM FILENAME=ADDRFIL
</p>
</p>
<p>
<p>
This z/VSE example describes a USE file whose output is directed to a printer with a logical unit name of SYS001:</p>
This z/VSE example describes a USE file whose output is directed to a printer with a logical unit name of <code>SYS001</code>:</p>
<p class="code">// ASSGN SYS001,02E  
<p class="code">// ASSGN SYS001,02E  
       .
       .
       .
       .
       .
       .
DEFINE DATASET OUTFILE WITH SCOPE=SYSTEM -
DEFINE DATASET OUTFILE WITH SCOPE=SYSTEM FILENAME=SYS001 LRECL=121    
    FILENAME=SYS001 LRECL=121
USE OUTFILE  
USE OUTFILE  
</p>
</p>
Line 599: Line 613:
====Positioning before User 0's parameter line====
====Positioning before User 0's parameter line====
<p>
<p>
The DEFINE DATASET command can precede User 0's parameter line in the CCAIN input stream. It is required when you use either of the following: </p>
The <var>DEFINE DATASET</var> command can precede User 0's parameter line in the CCAIN input stream. It is required when you use either of the following: </p>
<ul>  
<ul>  
<li>RESTART facility for recovery of a <var class="product">Model&nbsp;204</var> file in which the internal file name has been related to an 8-character z/VSE file name. Examples of this type of file are the Dictionary files METADATA, DATAPROC, and DATALINK.</li>
<li>RESTART facility for recovery of a <var class="product">Model&nbsp;204</var> file in which the internal file name has been related to an 8-character z/VSE file name. Examples of this type of file are the Dictionary files METADATA, DATAPROC, and DATALINK.</li>
Line 624: Line 638:
FILENAME=SYS041
FILENAME=SYS041
PAGESZ=6184,RCVOPT=9,...   
PAGESZ=6184,RCVOPT=9,...   
</p>
</p></li>
</li>
</ul>
</ul>
<p>
<p>
Refer to the discussion on recovery file specification in the <var class="book">Rocket Model&nbsp;204 System Manager's Guide</var> for a detailed explanation of this feature. </p>
Refer to the discussion on recovery file specification in [[System and media recovery#Recovery data sets and job control|Recovery data sets and job control]] for a detailed explanation of this feature. </p>


====z/VSE/POWER identification====
====z/VSE/POWER identification====
<p>Under z/VSE/POWER, the implementation of directed output uses a DEFINE DATASET CCAPPRn/CCAPPUn command to specify a logical unit name (SYSxxx) that appears in a JCL ASSGN statement defining a POWER printer or punch device. </p>
<p>
<p>Printer and punch devices for z/VSE/POWER are identified in the following manner:</p>
Under z/VSE/POWER, the implementation of directed output uses a <var>DEFINE DATASET</var> CCAPPR<i>n</i>/CCAPPU<i>n</i> command to specify a logical unit name (SYS<i>xxx</i>) that appears in a JCL ASSGN statement defining a POWER printer or punch device. </p>
<p>
Printer and punch devices for z/VSE/POWER are identified in the following manner:</p>
<p class="code">DEFINE DATASET <var class="term">powername</var> WITH  
<p class="code">DEFINE DATASET <var class="term">powername</var> WITH  
   SCOPE=SYSTEM,DDNAME=SYSxxx  
   SCOPE=SYSTEM,DDNAME=SYSxxx  
</p>
</p>
<p>
<p>
where <var class="term">powername</var> is CCAPPR, CCAPPR1, . . . for POWER printer devices and CCAPPU, CCAPPU1, . . . for POWER punch devices. For more information, refer to the <var class="book">Rocket Model&nbsp;204 System Manager's Guide</var>.</p>
where <var class="term">powername</var> is CCAPPR, CCAPPR1, . . . for POWER printer devices and CCAPPU, CCAPPU1, . . . for POWER punch devices. For more information, refer to [[Allocating and directing files dynamically#Using z/VSE/POWER|Using z/VSE/POWER]].</p>


====Reading records from a sequential or VSAM file====
====Reading records from a sequential or VSAM file====
Under z/VSE, whenever you read records from a sequential or VSAM file into an image, you must provide a DEFINE DATASET command for the source file that specifies values for at least RECFM and DATALEN. These values must be the same as those in effect when the sequential file was created. If you do not provide a DEFINE DATASET command when you attempt to read the file, you receive an I/O error.
Under z/VSE, whenever you read records from a sequential or VSAM file into an image, you must provide a <var>DEFINE DATASET</var> command for the source file that specifies values for at least RECFM and DATALEN. These values must be the same as those in effect when the sequential file was created. If you do not provide a <var>DEFINE DATASET</var> command when you attempt to read the file, you receive an I/O error.


The simplest DEFINE DATASET command you can use when reading a sequential file into an image under z/VSE is:
The simplest <var>DEFINE DATASET</var> command you can use when reading a sequential file into an image under z/VSE is:
<p class="syntax">DEFINE DATASET <span class="term">filename</span> WITH SCOPE=SYSTEM RECFM=<span class="term">aa</span>
<p class="syntax">DEFINE DATASET <span class="term">filename</span> WITH SCOPE=SYSTEM RECFM=<span class="term">aa</span>
DATALEN=<span class="term">nnn</span>
DATALEN=<span class="term">nnn</span>
Line 652: Line 667:
<li><var class="term">nnn</var> is the record length of the sequential file.</li>
<li><var class="term">nnn</var> is the record length of the sequential file.</li>
</ul>
</ul>
The values of RECFM and DATALEN default to the values of the parameters UDDRFM (VA unless reset) and UDDMRL (132 unless reset). Thus, if all defaults are in effect at the time the sequential file is created, the DEFINE DATASET command takes the form:
The values of <var>RECFM</var> and <var>DATALEN</var> default to the values of the parameters <var>[[UDDRFM parameter|UDDRFM]]</var> (<var>VA</var> unless reset) and <var>[[OUTMRL parameter|OUTMRL]]</var> (132 unless reset). Thus, if all defaults are in effect at the time the sequential file is created, the <var>DEFINE DATASET</var> command takes the form:


<p class="syntax">DEFINE DATASET <span class="term">filename</span> WITH SCOPE=SYSTEM RECFM=VA
<p class="syntax">DEFINE DATASET <span class="term">filename</span> WITH SCOPE=SYSTEM RECFM=VA

Latest revision as of 17:57, 31 July 2024

Summary

Privileges
System administrator
Function
Specifies characteristics of a Model 204 data set or file, or a non-Model 204 file such as a VSAM file or a basic sequential file

Syntax

DEFINE DATASET name [LIKE other-name] WITH SCOPE=SYSTEM options

Where options are one or more of the following:

[ALX | MXIG | CONTIG] [APPEND | NOAPPEND] [BLKSIZE=n] [BLOCK | TRACK | CYLINDER] [BUFNO=n] [CATALOG | NOCATALOG] [CLOSE={EOJ | NOUSERS}] [DATALEN=n] [DCLASS] [DDNAME=name | FILENAME=name] [DEFER] [DENSITY=n] [DIRECTORY=n] [DSNAME=name] [EATTR] [GDGRECNT] [GEN] [IMAGINE] [LABEL=label] [LARGE] [LRECL=n] [MCLASS] [MEMBER=member-name] [MEMORY] [NCP=n] [NEW | OLD | COND] [PASSWORD=password] [PAGES=n] [PDS] [PDSE] [POSITION=n] [PRIMARY=n] [RECFM=format] [RELEASE | NORELEASE] [RETENTION=n] [RETRYALLOC=n] [RETRYTIME=n] [ROUND] [SAM | VSAM | DAM] [SCLASS] [SECONDARY=n] [SEQUENTIAL | KEYED | KEYED SEQUENTIAL | DIRECT | SAM | VSAM | DAM] [SHARE | EXCLUSIVE] [SMSLIKE=dsn] [STRINGS=n] [TIOT| [XTIOT DIRECT OLD]] [UNIT=unit] [VOLMAX=n] [VOLSEQ=n] [VOLUME=volume]

Where:

The options for the command are defined in the table below. Certain options are meaningful only during the dynamic allocation of sequential data sets and are ignored during open processing. Because dynamic allocation is valid only under z/OS and z/VM, these options therefore are ignored under other operating systems.

DEFINE DATASET options
Option Meaning
ALX or

MXIG or

CONTIG

ALX allocates up to five contiguous primary size areas on a new allocation.

MXIG allocates the largest contiguous area as first extent on a new allocation.

CONTIG specifies that all storage must be contiguous on a new allocation.

APPEND or

NOAPPEND

Determines whether a data set is overwritten by new records. The APPEND option causes the file to be positioned after the last record each time the file is opened. The NOAPPEND option specifies that the data set is overwritten. The default is NOAPPEND. This option is not supported under z/VSE.
BLKSIZE Specifies the maximum length (in bytes) of a data block. The range of acceptable values is 0 to 32767. 0 indicates that a value has not been specified, and is the default. When using the BLOCK parameter, you must specify BLKSIZE.

If the record format is F, the block size must be a multiple of the logical record length. If the record format is V, the block size must equal the maximum value and be at least four bytes larger than the logical record length.

This option applies only to non-Model 204 files.

BLOCK/

TRACK/

CYLINDER

Determines the type of space allocation. The BLOCK option allocates space by the BLKSIZE of actual data multiplied by the value of the PRIMARY option. TRACK allocates space in tracks and CYLINDER allocates space in cylinders. BLOCK can be abbreviated as BLK and TRACK can be abbreviated as TRK. These options apply only to new data sets that are to be allocated dynamically.
BUFNO Indicates whether the Multiple Buffers feature is used. BUFNO is the number of buffers that Model 204 allocates for this data set during output. To invoke multiple buffering, the value of BUFNO must be greater than one.

The internal buffering logic requires that BUFNO's value be at least one greater than the value of the NCP parameter. If the requested BUFNO is not at least one greater than NCP, the open exit routine forces BUFNO to a value one greater than NCP.

BUFNO's default value is one, which disables the multiple buffering feature.

See the NCP option later in this table for related information.

CATALOG or

NOCATALOG

(Only z/OS.) Determines whether an index entry is created in a system catalog. The CATALOG option specifies that the system creates an index entry in a system catalog that points to the data set. Once the data set is cataloged, you can retrieve it in later jobs by entering a disposition other than NEW for the data set name.

The NOCATALOG option specifies that an index entry is not created in the system catalog, although the data set is still retained by the system. To use the data set in future sessions, you must supply the VOLUME where the data set is located.

The default is CATALOG. The data set is still cataloged if there is a system ABEND.

The CATALOG/NOCATALOG options are meaningful only during dynamic allocation of new data sets under 0S/390. They are ignored under z/VM.

CLOSE Specifies when to physically close a VSAM file. Options are NOUSERS and EOJ. NOUSERS indicates that the VSAM file is closed when no users are accessing the file. The default option is NOUSERS. EOJ indicates that the VSAM file is closed only during Model 204 system termination.

This option is used for non-Model 204 files.

DATALEN Specifies the length of the data portion of the records in a sequential data set. The values of the LRECL and BLKSIZE options are affected if you specify this option. The range of acceptable values is 0 to 32767.

This option applies only to sequential data sets such as USE data sets and does not apply to Model 204 files. DATALEN is ignored during allocation time but overrides the LRECL option at open time if values for both LRECL and DATALEN are specified. Refer to the discussion of sequential data set open processing in Sequential I/O processing.

DCLASS (Only z/OS.) Designates system manager storage SMS data class allocation.
DDNAME or

FILENAME

Specifies the name (for disk files) or, under z/VSE, the unit number (for tape or unit record devices) in the JCL associated with this data set. This option is generally used with z/VSE. The maximum length of this option is 8.

If this option is not indicated, Model 204 uses the name keyword specified in the DEFINE command. This name is the internal Model 204 name of the sequential data set or Model 204 file being described. It can also represent the template name.

The name can be 1 to 8 characters. Generally, under z/VSE, it is translated to a 7-character file name that has been specified on a DLBL or TLBL statement.

DEFER Defers mount requests until an OPEN command is issued.
DENSITY Specifies the density with which a tape data set is written.

If the DENSITY option is not specified, the highest density that the tape drive can support is used for output. This option is ignored for input, where Model 204 automatically determines the density (bpi) at which the tape it is reading was written. Acceptable values are 800, 1600, and 6250. This option applies only to dynamic allocation of tape data sets, which is valid only under z/OS.

DIRECTORY Specifies the number of PDS directory blocks on a new allocation. The NEW parameter is required.
DSNAME Specifies the name of the data set to the operating system. The maximum length is 44 characters. Most installations have data set naming conventions. Check with your system administrator for the valid data set names.
EATTR (Only z/OS.) Enables a data set to be allocated on an EAV (Extended Address Volumes) volume, which contains more than 64K cylinders. You can allocate and use Model 204 database files and checkpoint, CCAJRNL, CCAJLOG, and USE data sets on EAV volumes above the 64K cylinder boundary. Both IOS Branch Entry (XMEMOPT=2) and EXCP I/O drivers can handle database files on EAV.

The EATTR option is effective only in z/OS version 1.12 and later; in all other environments it is ignored with no error message.

Note: Server data sets are not supported when allocated above the 64K cylinder boundary. An attempt to open any server data set allocated above 64K cylinders results in issuing error message M204.2917 (which identifies the server data set name) and run termination.

GDGRECNT (Only z/OS.) Available as of Model 204 V7.5. Causes Model 204 to check the catalog information for the latest relative GDG generation number whenever allocating a GDG data set. This checking ensures that the data set is allocated with the latest generation number, taking into account GDG data set allocations or deletions by all jobs in the current environment.

By default, Model 204 checks the catalog information for the latest relative GDG generation number only when allocating the first GDG data set. The job then determines subsequent GDG generation numbers based only on its own allocations and deletions of the data set. If it deletes the GDG data set, the job might later reuse the same GDG generation number.

Examples

In the following scenarios, "GDG member" refers to a GDG data set belonging to the same base.

  • Allocations done by one job.
    • If Model 204 defines and allocates a GDG member with GEN=+1, then subsequent attempts to allocate a GDG member with GEN=+1 and without the OLD parameter will result in an error message indicating that the data set has already been allocated.
    • If the GDGRECNT parameter is used in this case, then the next available GDG member will be allocated.
  • Allocations done by multiple jobs. The following is a chronological sequence of events:
    1. Model 204 defines and allocates a GDG member with GEN=+1. The allocated member has generation number G0001V00.
    2. Model 204 frees the member.
    3. Another job or TSO allocates a GDG member with GEN=+1. The allocated member has generation number G0002V00.
    4. Another job or TSO deletes the member with generation number G0001V00.
    5. Model 204 defines and allocates a GDG member with GEN=+1. Without the GDGRECNT parameter, the allocated member has generation number G0001V00. With the GDGRECNT parameter, the allocated member has generation number G0003V00.

Note: GDGRECNT is not allowed with the OLD option.

GEN (Only z/OS.) Indicates a Generation Data Group (GDG) member.
IMAGINE Indicates that the data for the file is actually in an Imagine and accessed via an Imagine broker connected to an Imagine Transparency port. This option is only available in Model 204 Version 8.0 and later.
LABEL (Only z/OS.) Describes the label associated with a data set. The default is standard labels. Acceptable values that can be specified are as follows:
  • AL – American National Standard label.
  • AUL – American National Standard label and an American National Standard user label.
  • BLP – Label processing should be bypassed.
  • LTM – System is to check for and bypass a leading tape mark on a z/VSE unlabeled tape.
  • NL – No label.
  • NS – Non-standard label.
  • SL – Standard labels.
  • SUL – Both standard and user labels.

This option applies only to dynamic allocation of tape data sets, which is valid only under z/OS.

LARGE (Only z/OS 1.7 and later) Indicates a data set that exceeds 65,535 tracks. May be specified for CCAJRNL, CCAJLOG, including GDG and stream-based journals; large data sets for dumping and/or restoring Model 204 files; and Model 204 file data sets.

Can be specified for CHKPOINT data sets in Model 204 version 7.7 and later.

SEQUENTIAL and SAM are required coordinating options.

LRECL Specifies the logical record length (in bytes) for the data set.
  • If the record format is V, LRECL must include the record descriptor word of four bytes.
  • If the record format is A, LRECL must include the one-byte carriage control character.
  • If the records are variable or undefined in length, LRECL must specify the maximum logical record length.

The range of acceptable values for the LRECL option is 1 to 32767.

This option is used only for non-Model 204 files.

MCLASS (Only z/OS.) Designates SMS management class allocation.
MEMBER (Only z/OS.) Indicates PDS format on a new allocation. The NEW parameter is required; if you open a PDS without a MEMBER name, it is treated as a sequential data set.
MEMORY (Only z/VM and z/OS.) Designates an in-memory file, specifically an above-the-bar memory object. Used with PAGES.
NCP Indicates the number of channel programs used by BSAM for this data set during output when the Multiple Buffers feature is invoked. The maximum value is 99. The default is one.

See the BUFNO option earlier in this table for related information.

NEW or

OLD or

COND

Indicates whether the data set is created in the current session. The NEW option specifies that the data set is created. It is the default, unless the APPEND option has also been chosen. When the NEW option is specified, the BLOCK/TRACK/CYLINDER, PRIMARY, and, under z/VM, VOLUME options must be specified for dynamic allocation to succeed.

The OLD option indicates that the data set specified in the DSNAME option already exists. If the OLD option is not specified, the ALLOCATE or DEFINE command must provide the PRIMARY and VOLUME (z/VM) options.

The COND option indicates that the data set specified in the DSNAME option might already exist. COND is the default option if the APPEND option has also been chosen. If the data set does not exist, it is allocated as NEW. (Refer above to the conditions attached to the use of the NEW option.) If the data set does exist, it is allocated as OLD.

PAGES (Only z/VM and z/OS.) Specifies the number of Model 204 (6K) pages to allocate for an in-memory file. Used with MEMORY.
PASSWORD Specifies the VSAM access password assigned when the cluster was defined. The password can include any character except those reserved for special functions (such as end-of-line or Model 204 word separator characters). A hexadecimal password is not supported.

The password is checked against the VSAM catalog for the data set. It is also checked for each OPEN DATASET statement for the data set.

This option is used for non-Model 204 files.

PDS (Only z/OS.) Indicates PDS format on a new allocation. The NEW parameter is required; if you open a PDS without a MEMBER name, it is treated as a sequential data set.
PDSE (Only z/OS.) PDS extended format.
POSITION (Only z/OS.) Specifies the position of the file on the tape. If this option is not specified, POSITION=1 is assumed. Thus this option is required if the data set wanted is not the first data set on the tape. The maximum acceptable value for this option is 9999. For scratch tape data sets, a value greater than 1 is invalid.

This option applies only to dynamic allocation of tape data sets which is valid only under z/OS.

PRIMARY (Only z/OS.) Specifies the amount of space in BLOCKS, TRACKS, or CYLINDERS allocated for a new data set. There is no default. This option applies only to dynamic allocation of new data sets.
RECFM Specifies the way the physical records are structured.Model 204 recognizes the following five record format attributes: F (fixed), V (variable), U (undefined), B (blocked), and A (printer carriage control).

Valid combinations are:

  • FA VA UA
  • FB VB
  • FBA VBA
  • F V U

This option applies only to non-Model 204 files.

RELEASE

or NORELEASE

Determines whether all unused external storage space assigned to this data set is released at the end of processing. The RELEASE option specifies that the unused storage space is released. Specifying the NORELEASE option retains all the disk storage requested in the PRIMARY parameter when processing is completed. The RELEASE and NORELEASE options apply only to dynamic allocation of new data sets under z/OS.
RETENTION Specifies the retention period in days, up to 9999 days.
RETRYALLOC (z/OS and z/VM only.) RETRYALLOC=n is the number of times to retry dynamic allocation failures. The default is zero (which means do not retry). Any value between 0 and 255 is permitted. Model 204 supports the dynamic recall of migrated data sets. When dynamic recall is requested, the user making the request through the USE or OPEN DATASET command enters a wait state until the data set is recalled. However, other users in the Online are not affected. This support is enabled through the RETRYALLOC and RETRYTIME parameters of the DEFINE DATASET command.
RETRYTIME (z/OS and z/VM only.) RETRYTIME=n defines the time to wait between dynamic allocation retries in seconds. The default is zero (which means to retry immediately). Any value between 0 and 32767 is permitted. Model 204 supports the dynamic recall of migrated data sets. When dynamic recall is requested, the user making the request through the USE or OPEN DATASET command enters a wait state until the data set is recalled. However, other users in the Online are not affected. This support is enabled through the RETRYALLOC and RETRYTIME parameters of the DEFINE DATASET command.
ROUND Rounds block allocations up to the cylinder boundary on a new allocation.
SCLASS (Only z/OS.) Designates the SMS storage class allocation.
SECONDARY Specifies the amount of space that is allocated if the PRIMARY space allocation is exceeded. If necessary, the operating system allocates a maximum of 15 secondary amounts of the type requested (BLOCK, TRACK, or CYLINDER).

SECONDARY is optional and has no default value. SECONDARY might be specified under z/VM but no secondary allocation occurs. The secondary space information is stored in the VTOC (Volume Table of Contents) when allocation is done under z/VM. This enables secondary space allocation to be performed under z/OS when the primary space allocation of the data set is filled up. The SECONDARY option is meaningful only when dynamically allocating new data sets.

SEQUENTIAL or

KEYED or

KEYED SEQUENTIAL or

DIRECT or

SAM or

VSAM or

DAM

Indicates the file organization and access method. SEQUENTIAL is the default. The access method specified depends on the file:

For SEQUENTIAL files, the access method must be SAM or VSAM. The default is SAM. If VSAM is specified, the file is a VSAM key-sequenced file (KSDS) and access by key is not allowed.

For KEYED or KEYED SEQUENTIAL files, the access method must be VSAM. The file can be accessed by key or in sequential order.

For DIRECT files, the access method must be DAM. DIRECT means that the file is a Model 204 file.

SHARE or EXCLUSIVE (Only z/OS.) Determines the type of operating system enqueue to be obtained. For example, a combination of OLD and SHARE allows other jobs to share access to a data set with Model 204. SHARE is the default.
SMSLIKE (Only z/OS.) Designates the SMS model data set name allocation. Must be used with a =dsn option.
STRINGS Specifies the number of concurrent access strings (positioning) to a VSAM file. The default value is 1. The STRINGS value can be overridden by the STRNO subparameter of the AMP parameter in the JCL DD statement (only z/OS).

This option is used for non-Model 204 files.

TIOT or

XTIOT

(Only z/OS.) TIOT specifies that the number of dynamically allocated data sets is limited to 3,273.

XTIOT specifies that the number of dynamically allocated data sets is limited by only the amount of processor storage. The XTIOT option requires the OLD and DIRECT options to process without error.

UNIT (Only z/OS.) Specifies the unit name of the I/O device for the data set. Typical unit names are DISK, TAPE, and SYSDA (the default). The UNIT option is meaningful only during dynamic allocation.
VOLMAX Specifies the maximum volume count.
VOLSEQ Specifies the volume sequence number.
VOLUME Specifies the volume on which a data set resides or on which a new data set is placed. A volume can identify a tape or disk.

This option is required under z/VM when a new data set is created or when an existing data set is referenced that resides on an unaccessed OS-format or z/VSE-format minidisk. The VOLUME option is meaningful only during dynamic allocation.

Syntax notes

Any number of DEFINE DATASET options can be specified. Options must be separated by commas or by one or more blanks. A continuation character (-) is required at the end of an input line if the options continue onto the next line.

The DEFINE DATASET command does not check the validity of such options as LRECL, BLKSIZE, and RECFM. They are verified against one another when the data set is opened.

For general syntax and usage notes that apply to all forms of the DEFINE command, see DEFINE command.

Examples

Example 1: New sequential data set

This example defines a new sequential data set with a name of OUTFILE:

DEFINE DATASET OUTFILE WITH SCOPE=SYSTEM - LRECL=80 BLKSIZE=800 RECFM=FB SEQUENTIAL - PRIMARY=150 BLOCK VOLUME=RPG001

Example 2: New data set with a template

This example defines a new data set and gives it all the attributes of the previously defined data set (template):

DEFINE DATASET TEST LIKE OUTFILE WITH SCOPE=SYSTEM

Example 3: Catalogued tape data sets

These examples define catalogued tape data sets:

DEFINE DATASET TAPEFILE WITH SCOPE=SYSTEM - DSNAME=DATA.SET.NAME DEFINE DATASET TAPE2 WITH SCOPE=SYSTEM - DSNAME=DATA.SET.ID LABEL=BLP POSITION=3 - TAPE=UNIT VOLUME=TVOL

Example 4: Uncatalogued tape data sets

This example defines an uncatalogued tape data set:

DEFINE DATASET TAPEFILE WITH SCOPE=SYSTEM - DSNAME=DATA.SET.NAME UNIT=TAPE - VOLUME=TAPVOL

Example 5: SEQUENTIAL file organization, SAM access method

The following example defines a data set with a SEQUENTIAL file organization and an access method of SAM:

DEFINE DATASET XYZ - WITH SCOPE=SYSTEM SEQUENTIAL - SAM BLKSIZE=4080 LRECL=80 - RECFM=FB

Example 6: KEYED file organization

The following example defines a data set with a KEYED file organization, an access method of VSAM, an EOJ parameter for the CLOSE option, and a VSAM password termed ANYTHING:

DEFINE DATASET RPQ - WITH SCOPE=SYSTEM KEYED - VSAM CLOSE=EOJ - PASSWORD=ANYTHING

Example 7: In-memory file (z/OS and z/VM)

The following example defines an in-memory file named BUSES:

DEFINE DATASET BUSES WITH SCOPE=SYSTEM MEMORY PAGES=10000 DIRECT

For more information on usage, see In-memory file allocation and restoration. For more information on in-memory files in general, see In-memory files.

Usage notes

The DEFINE DATASET command can dynamically define the physical characteristics of data sets used in Model 204 and can refer to previously defined data sets through the LIKE phrase. You also can indicate the attributes, such as the DSNAME and SHARE/EXCLUSIVE options, that the operating system needs to create the data set. Options specified in the DEFINE DATASET command override the defaults provided by Model 204.

The DEFINE DATASET command also provides a facility for identifying non-Model 204 files, such as a VSAM file or a basic sequential file, from SOUL requests.

LARGE data sets

You can define a LARGE (> 64K tracks) data set under only z/OS 1.7 or later. The LARGE argument applies to:

  • CCAJRNL, CCAJLOG, including GDG and stream-based journals and jlogs

    Note: LARGE CHKPOINT data sets are supported as of Model 204 version 7.7.

  • Data sets used for dumping and/or restoring Model 204 files
  • Data sets used for sequential output; the USE command or the SOUL WRITE IMAGE statement
  • Model 204 file data sets

Note: When defining a pre-existing, LARGE data set, make sure to use LARGE, SAM, and for Model 204 files, SEQUENTIAL in the DEFINE command:

  • For non-Model 204, sequential files:

    DEFINE DATASET OUTFILEA WITH SCOPE=SYSTEM OLD LARGE SAM DSN=OUTFILEA.M204

  • For Model 204 database files

    DEFINE DATASET MYM204DB WITH SCOPE=SYSTEM OLD LARGE SAM SEQUENTIAL DSN=MYM204DB.M204

Dynamic allocation at OPEN time

You can open data sets that have been defined through the DEFINE DATASET command but that have not yet been allocated. In this case, the data set is dynamically allocated at OPEN time. This is equivalent to issuing a DEFINE DATASET command for a data set, issuing an ALLOCATE command to allocate it, and then opening it. No messages are displayed when the dynamic allocation is performed; messages are issued only if the allocation fails.

Data sets that have been dynamically allocated during open processing are deallocated when they are closed. This is equivalent to closing the data set and then issuing a FREE command for it.

External file identification

External file I/O support allows READ access to any VSAM KSDS (key-sequenced) cluster either via the primary key, or via the alternate index key through a predefined PATH and an ALTERNATEINDEX cluster in the VSAM catalog. For Model 204 to recognize a VSAM file, a DEFINE DATASET command must be used to identify that file and to specify that the VSAM access method be used for accessing that file. In addition, this command must also provide Model 204 with other information, such as the password (if any), the number of access strings, or the close option of the VSAM file.

If access via an alternate key is desired, a DD statement for the predefined PATH (a DLBL statement for z/VSE systems) must be included in the start-up JCL and a DEFINE DATASET command must be issued for the PATH to indicate that it is a VSAM file. For information on the definition for the ALTERNATEINDEX cluster, refer to Alternate index key processing.

External file I/O support allows READ/WRITE access to any sequential file whose organizational structure is in accordance with the BSAM data set structure in the z/OS operating environment or the SAM file structure in the z/VSE operating environment. For a z/VSE operating system, a DEFINE DATASET command must be provided for each sequential file to be accessed. The command must include parameters for BLKSIZE, LRECL, and RECFM.

For a z/OS operating system, Model 204 can obtain that information either from the DCB parameter of the DD statement or from the disk file label. Therefore, the DEFINE DATASET command for a sequential data set is optional.

The external file I/O support feature can be used to directly load a VSAM KSDS file or a VSAM entry-sequenced (ESDS) file, accessing via an ALTERNATEINDEX cluster and a predefined PATH combination, into any Model 204 file. A DEFINE DATASET command must be provided for each VSAM file (or PATH definition if the alternate index is used). In addition, a DD statement (or DLBL statement) for the file or PATH must be included in the JCL for use with the File Load utility (FLOD).

In-memory file allocation and restoration (z/OS and z/VM)

The difference between using the ALLOCATE and DEFINE DATASET command for in-memory files is:

  • For a DEFINE DATASET command the memory object is not allocated until the file is first opened or created.
  • For an ALLOCATE command the memory object is immediately allocated.

When you create an in-memory file, the default FRCVOPT parameter value is X'24', which means that this file does not participate in journal and checkpoint logging.

However, remember that restoring an in-memory file with RESTORE from a backup will copy the FRCVOPT from that backup copy into the in-memory file, thus overriding the default. In-memory files are also created with FOPT=0, which is TBO enabled, and TBO is supported. REGENERATE is also supported. RESTART recovery is not supported. Given these caveats, if you want to provide for both REGENERATE recovery and TBO, the best parameter settings for in-memory files are FRCVOPT=X'20' and FOPT=0.

The DUMP and RESTORE commands can process in-memory files.

Note: You cannot create in-memory files that are part of a multi-data-set file, such as the following:

CREATE FILE filename FROM filenam1,filenam2

For more information about in-memory files, see In-memory files.

Dynamic tape allocation (z/OS)

Dynamic tape allocation is an extension to dynamic data set allocation. It is supported only under z/OS. In dynamic tape allocation, SVC 99 is used to interact with the tape management system and to perform the actual allocation.

The options for dynamic tape allocation are LABEL, POSITION, and DENSITY. They are described above in the list of options.

Operator messages and interaction for dynamic tape allocation are the same as in standard tape allocation. The operating system controls the exact form of the interaction.

Processing Partitioned Data Sets (PDS) (z/OS)

On z/OS systems only, Model 204 users can use a member of a Partitioned Data Set (PDS) as an input or output data set for physical sequential access. PDS data sets can be used in Model 204 as input or output data set, in USE statements, or to process images. The PDS can be allocated either outside of Model 204 dynamically or within Model 204. In the DEFINE DATASET command, you must use the keyword MEMBER or MEM.

Syntax

[DSNAME=name] [MEMBER=PDS_name]

Examples

The following examples illustrate the DEFINE DATASET command with PDS and MEMBER parameters.

An example of DEFINE DATASET for a NEW PDS and MEMBER:

DEFINE DATASET OUTPDS WITH SCOPE=SYSTEM DSNAME=M204. - OUTPDS MEMBER=MEM1 LRECL=80 BLKSIZE=800 TRACK - PRIMARY=50 SECONDARY=40 DIRECTORY=5 NEW PDS - UNIT=DISK204

An example of a DEFINE DATASET command for an existing PDS data set and MEMBER. You can write over the MEMBER if it already exists:

DEFINE DATASET OUTPDS WITH SCOPE=SYSTEM - DSNAME=M204.OUTPDS MEMBER=MEM1 OLD

An example of a DEFINE DATASET command for the same PDS as above, but a different MEMBER:

DEFINE DATASET OUTPDS2 WITH SCOPE=SYSTEM - DSNAME=M204.OUTPDS MEMBER=MEM2 OLD UNIT=3380 - VOLUME=OS8U01

Appending data to a PDS

You cannot append data to the end of a PDS member. Specifying the APPEND parameter for an existing member results in the following message:

M204.2167: A CLOSE ERROR HAS BEEN DETECTED ON DATASET dddddddd

The same error occurs if you specify DISP=MOD on the DD statement for a PDS member. You can expect the APPEND parameter on the DEFINE DATASET command to have no effect when opening for output a new member of a PDS, as long as no other errors occur.

Note: If no member name is provided for an existing partitioned data set, then a data set is treated as sequential and all existing members are erased.

Output conflicts between open PDS members

When a PDS member is open for output, an exclusive enqueue with SCOPE=SYSTEM, QNAME=SPFEDIT, and RNAME=DATASET_NAME is obtained. For a given PDS, only one PDS member can be open for output at a time using one or multiple Model 204 Onlines.

Any attempt to open the same or another member of an already open-for-output PDS fails. The following message is issued to requestor(s) in the same or different Model 204 Online, because the file is already open for output by the same or a different Model 204 Online:

M204:0196 DATASET dsn USED BY ddname DD STATEMENT CURRENTLY IN USE

TSO users can edit PDS members from data sets opened for output by Model 204, but until the data set is closed, attempts to write members back fails with the operating system message:

RESERVE FAILED

Any user who opens a PDS member for output prevents all other users from updating any other member in the same PDS until the data set is closed. To prevent long delays in updating PDS members, SOUL programs should do a minimum of processing and avoid user input or output between OPEN and CLOSE statements or any other statements that might lead to an unpredicted wait time.

PDS members open for input

You can access a PDS simultaneously for multiple input data sets and for one output data set, with all allocations using the OLD and SHARE options of the DEFINE DATASET command.

Processing generation data group (GDG) data sets (z/OS)

On z/OS systems only, Model 204 users can access any previously created GDG data set by using the GEN keyword with a 0 or -n or +n value under DEFINE DATASET. The OLD keyword must also be specified. You can use GDG data sets for sequential I/O, in USE statements, to process images, or as data set files.

The syntax on a DEFINE statement for a GDG data set is:

[DSNAME=name] [GEN = { -n | 0 | +n } OLD]

Due to the nature of dynamic allocation (SVC99), however, an allocation of a GDG data set for input refers to the same data set for the duration of the job or Online session, even if generations are added to the GDG.

Creating a new GDG data set

To create a new GDG data set, use the GEN=+1 keyword on DEFINE. The GDG base file must have been built previously using an IDCAMS DEFINE command, and, if required by your level of z/OS, a model DSCB must be provided. (To create a GDG base file and model DSCB, see the following examples.)

Failure to specify DSCB in certain z/OS environments causes the following message to be displayed:

M204.1069 ALLOCATE/FREE FAILED RETURN CODE 4 ERROR REASON CODE 048C

Example 1: Building a GDG base file

//JS0010 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE GENERATIONDATAGROUP (NAME(SAMPLE.TESTGDG) NOSCRATCH - LIMIT(5) EMPTY) //*

Example 2: Creating a specific model DSCB for one GDG

//JS0010 EXEC PGM=IEFBR14 //*ALLOCATE SPECIFIC MODEL DSCB FOR ONE GDG; HAS TO BE - UNCATALOGUED, //*AND ON SAME PACK AS USERCAT FOR GDG BASE CATALOG ENTRY; //*IN THIS EXAMPLE, USERCAT FOR ALIAS 'SAMPLE' IS ON DSK123 //ALCDSCB0 DD DSN=SAMPLE.TESTGDG, // DISP=(,KEEP,DELETE), DO NOT CATLG // SPACE=(TRK,(0)), //*ANY DCB ATTRIBUTE MAY BE OVERRIDDEN IN DEFINE OR ALLOCATE // DCB=(LRECL=80,RECFM=FB), // UNIT=3380,VOL=SER=DSK123

Note: You can combine the two steps into one step by adding the ALCDSCB0 DD statement to the IDCAMS step.

z/VSE considerations

The DEFINE DATASET command allows the z/VSE user to:

  • Translate a Model 204 internal 8-character file name into a 7-character z/VSE file name acceptable for use on a DLBL or TLBL statement.
  • Relate a Model 204 data set name to a logical unit number. This is especially helpful when the data set is being routed to a file that cannot be referenced by a data set name such as a tape file.
  • Route output from a USE command to a printer, punch, or tape device. (Refer to the discussion in this section on the USE command and directing output to a sequential data set.) The DEFINE DATASET command is required in this case, because USE output files must be routed to data set names that begin with the characters OUT.
  • Indicate options (RECFM, LRECL, BLKSIZE) that cannot be specified in z/VSE JCL.

The following example relates the internal Model 204 filename, ADDRFILE, to the 7-character z/VSE filename, ADDRFIL:

DEFINE DATASET ADDRFILE WITH SCOPE=SYSTEM FILENAME=ADDRFIL

This z/VSE example describes a USE file whose output is directed to a printer with a logical unit name of SYS001:

// ASSGN SYS001,02E . . . DEFINE DATASET OUTFILE WITH SCOPE=SYSTEM FILENAME=SYS001 LRECL=121 USE OUTFILE

Positioning before User 0's parameter line

The DEFINE DATASET command can precede User 0's parameter line in the CCAIN input stream. It is required when you use either of the following:

  • RESTART facility for recovery of a Model 204 file in which the internal file name has been related to an 8-character z/VSE file name. Examples of this type of file are the Dictionary files METADATA, DATAPROC, and DATALINK.
  • Tape journals or checkpoint data sets for RESTART recovery. The z/VSE example below shows a sample Job Control stream that can be used when the data sets CCAJRNL and CHKPOINT are on magnetic tape:

    // JOB MODEL204 . . . // TLBL SYS040,'M204.CHKPOINT',99/365 // ASSGN SYS040,TAPE // TLBL SYS041,'M204.JOURNAL',99/365 // ASSGN SYS041,TAPE . . . // EXEC ONLINE,SIZE=AUTO . . . DEFINE DATASET CHKPOINT WITH SCOPE=SYSTEM - FILENAME=SYS040 DEFINE DATASET CCAJRNL WITH SCOPE=SYSTEM - FILENAME=SYS041 PAGESZ=6184,RCVOPT=9,...

Refer to the discussion on recovery file specification in Recovery data sets and job control for a detailed explanation of this feature.

z/VSE/POWER identification

Under z/VSE/POWER, the implementation of directed output uses a DEFINE DATASET CCAPPRn/CCAPPUn command to specify a logical unit name (SYSxxx) that appears in a JCL ASSGN statement defining a POWER printer or punch device.

Printer and punch devices for z/VSE/POWER are identified in the following manner:

DEFINE DATASET powername WITH SCOPE=SYSTEM,DDNAME=SYSxxx

where powername is CCAPPR, CCAPPR1, . . . for POWER printer devices and CCAPPU, CCAPPU1, . . . for POWER punch devices. For more information, refer to Using z/VSE/POWER.

Reading records from a sequential or VSAM file

Under z/VSE, whenever you read records from a sequential or VSAM file into an image, you must provide a DEFINE DATASET command for the source file that specifies values for at least RECFM and DATALEN. These values must be the same as those in effect when the sequential file was created. If you do not provide a DEFINE DATASET command when you attempt to read the file, you receive an I/O error.

The simplest DEFINE DATASET command you can use when reading a sequential file into an image under z/VSE is:

DEFINE DATASET filename WITH SCOPE=SYSTEM RECFM=aa DATALEN=nnn

Where:

  • filename is the name of the sequential data set containing the data you want to read.
  • aa is the record format of the sequential file.
  • nnn is the record length of the sequential file.

The values of RECFM and DATALEN default to the values of the parameters UDDRFM (VA unless reset) and OUTMRL (132 unless reset). Thus, if all defaults are in effect at the time the sequential file is created, the DEFINE DATASET command takes the form:

DEFINE DATASET filename WITH SCOPE=SYSTEM RECFM=VA DATALEN=132