{"id":237,"date":"2011-12-06T20:12:32","date_gmt":"2011-12-07T02:12:32","guid":{"rendered":"http:\/\/tommysprinkle.com\/txxos\/?p=237"},"modified":"2021-04-17T18:26:14","modified_gmt":"2021-04-17T23:26:14","slug":"partitioned-data-set-access","status":"publish","type":"post","link":"https:\/\/tommysprinkle.com\/txxos\/?p=237","title":{"rendered":"Partitioned Data Set Access"},"content":{"rendered":"<p>A Partitioned Data Set (PDS) is a collection of sequential members (files) consisting of \u00a0one or more records. \u00a0Each member is identified by a name 1 to 8 characters long. \u00a0The member names are stored in a directory that is also part of the data set. \u00a0The directory consists of one or more records at the beginning of the data set. Each member has an entry in the directory.<\/p>\n<p>The directory entry is made up of the member name, a pointer to the starting \u00a0location of the member data and up to 62 bytes of optional user data information. \u00a0The directory is maintained in alphameric sorting sequence.<\/p>\n<p>The pointer to the member data is a relative offset within the data set specified as TTR (Track, Record). \u00a0The directory entries may be variable in length depending on the length of the optional data.<\/p>\n<p>Directory blocks are keyed records with an eight-byte key. \u00a0The key is the last member name contained in the directory block.<\/p>\n<p>Each directory block begins with a two byte count indicating how many bytes are used in the directory block.<\/p>\n<p>The member directory entry has the format:<\/p>\n<ul>\n<li>CL8 \u00a0&#8211; Name (Member name)<\/li>\n<li>XL3 &#8211; TTR (Offset to beginning of member)<\/li>\n<li>X \u00a0 \u00a0 \u00a0&#8211; &#8220;C&#8221; field<\/li>\n<\/ul>\n<div>The C field is divided into the groups of bits.<\/div>\n<div>\n<ul>\n<li>Bit 0 \u00a0 &#8211; 1=Alias, 0=Not Alias<\/li>\n<li>Bits 1-2 \u00a0 &#8211; Number of pointers in the user data area<\/li>\n<li>Bits 3-7 \u00a0&#8211; Binary number indicating the number of halfwords of user data.<\/li>\n<\/ul>\n<\/div>\n<p>User data length is always a multiple of two and may be 0-62 bytes long.<\/p>\n<p>The end of the directory is indicated by an EOF mark (a record with a data length of zero) which will cause a Unit Exception when read. \u00a0Each member is also ended with an EOF mark.<\/p>\n<p>To access a member in a PDS the directory entry for the member is located. \u00a0The TTR is then used to locate the first record of the member. \u00a0The records for a PDS member are sequential.<\/p>\n<p>Below are two directory blocks. \u00a0The first block is full containing seven directory entries. \u00a0The second only contains two entries \u00a0plus an EOF directory entry with a name of x&#8217;FFFFFFFFFFFFFFFF&#8217;.<\/p>\n<hr \/>\n<pre>00001200\u00a0 00FEE3E7 E7D5E4C3 F2F20003 092C0003\u00a0 ..TXXNUC22......\r\n00001210\u00a0 0E000000 000002E2 00035803 58000000\u00a0 .......S........\r\n00001220\u00a0 88000001 0000E3E7 E7D5E4C3 F2F30003\u00a0 H.....TXXNUC23..\r\n00001230\u00a0 112C0003 16000000 000002E2 00035803\u00a0 ...........S....\r\n00001240\u00a0 58000000 88000001 0000E3E7 E7D5E4C3\u00a0 ....H.....TXXNUC\r\n00001250\u00a0 F2F40003 192C0003 1E000000 000002E2\u00a0 24.............S\r\n00001260\u00a0 00035803 58000000 88000001 0000E3E7\u00a0 ........H.....TX\r\n00001270\u00a0 E7D5E4C3 F2F50003 212C0003 26000000\u00a0 XNUC25..........\r\n00001280\u00a0 000002E2 00035803 58000000 88000001\u00a0 ...S........H...\r\n00001290\u00a0 0000E3E7 E7D5E4C3 F2F60003 292C0003\u00a0 ..TXXNUC26......\r\n000012A0\u00a0 2E000000 000002E2 00035803 58000000\u00a0 .......S........\r\n000012B0\u00a0 88000001 0000E3E7 E7D5E4C3 F2F70003\u00a0 H.....TXXNUC27..\r\n000012C0\u00a0 312C0003 36000000 000002E2 00035803\u00a0 ...........S....\r\n000012D0\u00a0 58000000 88000001 0000E3E7 E7D5E4C3\u00a0 ....H.....TXXNUC\r\n000012E0\u00a0 F2F80003 392C0004 05000000 000002E2\u00a0 28.............S\r\n000012F0\u00a0 00035803 58000000 88000001 00000000\u00a0 ........H.......<\/pre>\n<hr \/>\n<pre>00001200\u00a0 0056E3E7 E7D5E4C3 F2F90004 082C0004\u00a0 ..TXXNUC29......\r\n00001210\u00a0 0D000000 000002E2 00035803 58000000\u00a0 .......S........\r\n00001220\u00a0 88000001 0000E3E7 E7D5E4C3 F3F00004\u00a0 H.....TXXNUC30..\r\n00001230\u00a0 102C0004 15000000 000002E2 00035803\u00a0 ...........S....\r\n00001240\u00a0 58000000 88000001 0000FFFF FFFFFFFF\u00a0 ....H...........\r\n00001250\u00a0 FFFF0000 00000000 00000000 00000000\u00a0 ................\r\n00001260\u00a0 00000000 00000000 00000000 00000000\u00a0 ................\r\n                          ...\r\n000012F0\u00a0 00000000 00000000 00000000 00000000\u00a0 ................<\/pre>\n<hr \/>\n<p><a title=\"Reading A PDS Member\" href=\"http:\/\/tommysprinkle.com\/txxos\/?p=242\">[Next &#8211; Reading A PDS Member]<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Partitioned Data Set (PDS) is a collection of sequential members (files) consisting of \u00a0one or more records. \u00a0Each member is identified by a name 1 to 8 characters long. \u00a0The member names are stored in a directory that is &hellip; <a href=\"https:\/\/tommysprinkle.com\/txxos\/?p=237\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"template-page-builder-no-sidebar.php","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-237","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1CPQT-3P","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=237"}],"version-history":[{"count":6,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions\/500"}],"wp:attachment":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}