z/OS Data Set Names, Types, and Attributes
Part Two - Challenge #05


A starting point to understand Data Set Names, Types, and Attributes, is a review of what was learned in previous challenges.

  • Sequential data sets (SEQ) contains data records
  • Partitioned data sets (PDS) contains a directory of members, where each member contains data records
  • Example data set names are:
  • Data characters in z/OS are stored in EBCDIC format by default
  • z/OS can store ASCII formatted characters. However, the z/OS default is to interpret the hexadecimal values as EBCDIC
  • z/OS utilities exist to display ASCII formatted characters that are displayed in a readable format
  • z/OS Unix files are available. However, nothing has been explained about z/OS Unix filesystems

Briefly review the details that follow about data set names, types, and attributes.
The challenge does not require memorization of the details.

Completion of the challenge will require awareness of these details.
Therefore, think of the details that follow as a reference summary to refer to during the challenge.

What are the data set name rules?

> Maximum of 44 characters in length
> The 44 characters are divided into segment names
> A period ( . ) is used to separate data set name segments
-- Z99999.SEQ.DATA has 3 segment names
> The period ( . ) counts toward the 44 character length
  The data set name segment has rules and restrictions
-- Maximum length of a segment is 8 characters
-- 1st character must be alphabetic (A to Z) or national (# @ $)
-- Remaining 7 characters are either alphabetic, numeric (0-9), national, or hypen (-)
-- Name segments are separated by a period ( . )

To summarize, data set names must not exceed 44 characters, including all name segments and periods.

Instructions will reference the following abbreviations associated with data set names:

  • HLQ, High Level Qualifier, is the 1st segment of the data set name.
  • MLQ, Middle Level Qualifier, is any middle segment of the data set name.
  • LLQ, Low Level Qualifier, is the last segment of the data set name.

What are the common data set types?

> Sequential
> PDS - Partitioned Data Set
> PDS/E - Partitioned Data Set/Extended
> VSAM - Virtual Storage Access Method
-- VSAM is subdivided into 4 types
    o KSDS, Key Sequenced Data Set
    o ESDS, Entry-Sequenced Data Set
    o RSDS, Relative Record Data Set
    o LDS, Linear Data Set

What are the common data set attributes?

> Record Length
--z/OS is record oriented - not a stream of bytes like other operating systems
    JCL parameter (LRECL=length_value)

> Record Format
-- Fixed
    o data set record lengths are all equal length
    o JCL parameter (RECFM=F)
-- Variable
    o data set record lengths vary between records
    o JCL parameter (RECFM=V)
-- Fixed Blocked
    o a group or block of fixed length records
    o JCL parameter (RECFM=FB)
-- Variable Blocked
    o a group or block of variable length records
    o JCL parameter (RECFM=VB)
-- Undefined
    o understood by system loader of executable modules
    o JCL parameter (RECFM=U)

> Data Set Organization
-- Physical Sequential
    o A sequential data set
    o JCL parameter (DSORG=PS)
-- Partitioned Organization
    o Partitioned Data Set with directory of members
    o JCL parameter (DSORG=PO)
-- Partitioned Organization/Extended
    o Partitioned Data Set with directory of members, faster and more efficient
-- Virtual Storage Access Method (VSAM)
    o 4 unique organization types, (DSORG=VS)
    o System utility program (IDCAMS) control statements define VSAM types and attributes

Other data set types exist but will not be covered in the challenges.
Other data set attributes include disposition (new, old, etc.), disk volume and disk storage space which will be explored in challenge #6.

In preparation for the challenge - review your existing data set name types and attributes

ISPF Data Set List Utility panel =3.4 and view Data Sets Matching your HLQ:
  Two methods exist to view data set types and attributes from ISPF panels
   1. Continue to press F11 and view columns associated with each data set name
   2. In the command column to the left of any data set name, enter either s or i
     Options s and i show slightly different details


The instructions are brief by design.
Rely upon the above background, knowledge, and ISPF navigation experience that you have acquired from past challenges.

Description of challenge
1. A JCL JOB will allocate 4 new data set names, each with different types and attributes
2. You will be instructed to change a single attribute of each data set name.

Submit JCL JOB to allocate the 4 new data set names
tso submit jcl(job05)
Enter refresh on the DSLIST panel to view new data set names

1. Review the new data set allocation types and attributes with MLQ of CH5

2. Delete the new data set allocations by entering d to the left of each data set name with MLQ of CH5

3. Edit e JCL(JOB05) changing JCL DD parameters as follows:

  a. All 4 of the data set names need the record format to include the blocked attribute.
  b. Upon completion of the changes - sub ; =sd; st and review JOB05 output for RC = 00
  c. If JOB05 completed with RC = 00, then =3.4 and review data set name attributes

When satisfied that each of the data set names with MLQ of CH5 include a record format that is blocked, then -
  delete the MLQ of CH5
  edit JOB05 and uncomment the last JCL statement as follows:

submit JCL following the change

Submitting JOB05 with execution of JCL procedure CH5DEL will:
1. Allocate the 4 data sets with blocked attribute record format
2. CH5DEL write the 4 data set name attributes and types to P2.OUTPUT(#05)
3. CH5DEL deletes the 4 data set names

Reminder: Delete the 4 MLQ CH5 data sets before running JOB05

If curious about JCL procedure CH5DEL, then view 'VENDOR.PROCLIB(CH5DEL).

Feel free to check your P2.OUTPUT(#05) written by CH5DEL , then move on to the next challenge!

In the event an original copy of JOB05 is needed, during edit session -
  Delete all the statements - d999 on line number 1
  Copy in original JOB05 - copy 'zos.public.jcl(job05)'

Next: Challenge #06