{"id":249,"date":"2013-02-19T13:32:04","date_gmt":"2013-02-19T19:32:04","guid":{"rendered":"http:\/\/tommysprinkle.com\/mvssp\/?p=249"},"modified":"2013-08-01T14:02:22","modified_gmt":"2013-08-01T19:02:22","slug":"concatenated-pds-datasets","status":"publish","type":"post","link":"https:\/\/tommysprinkle.com\/mvssp\/2013\/02\/19\/concatenated-pds-datasets\/","title":{"rendered":"Concatenated PDS Datasets"},"content":{"rendered":"<p>MVS allows multiple PDS datasets to be concatenated and opened for input. This results in a DEB with extents for every dataset in the concatenation. To make this happen the DCB must have DSORG=PO specified (not DSORG=PS).<\/p>\n<p>Below is a dump of a DEB created for concatenated PDS datasets.<\/p>\n<pre>0000 00AF1078 <span style=\"background-color: #ffff00;\">02<\/span>AFD610 <span style=\"background-color: #ffff00;\">69<\/span>000000 00001100  ......O.........\r\n0010 <span style=\"background-color: #ffff00;\">05<\/span>000000 FF000000 8F095BC0 04AFDE88  ..........$....H\r\n0020 <span style=\"background-color: #00ff7f;\">50001E68 00000178 00000178 001D001E<\/span>  &amp;...............\r\n0030 <span style=\"background-color: #00ff7f;\">50001E68 00000179 00000179 001D001E<\/span>  &amp;...............\r\n0040 <span style=\"background-color: #ffe4e1;\">50001E68 00000176 00000176 001D001E<\/span>  &amp;...............\r\n0050 <span style=\"background-color: #ffe4e1;\">50001E68 00000177 00000177 001D001E<\/span>  &amp;...............\r\n0060 <span style=\"background-color: #87ceeb;\">50001E68 00000175 00000175 001D001E<\/span>  &amp;...............\r\n0070 <span style=\"background-color: #ffff00;\">0204<\/span>0000 00000000 00000000 00000000  ................<\/pre>\n<p>There are three datasets concatenated here. The first has two extents, the second has two extents and the third has a single extent.\u00a0 The first thing we need to check is a bit that is not documented in the IEZDEB mapping macro.\u00a0 We need to see if bit 7 (x&#8217;01&#8217;) is on in the DEBOFLGS field located at offset +08.\u00a0 If this bit is set to one then we know we have concatenated datasets.<\/p>\n<p>Next we need to locate the pointers to the beginning extent for each dataset.\u00a0 The are located immediately following the last extent description in the DEB.\u00a0 The DEBAMLNG field (one byte located at offset +4) indicates how many pointers there are.\u00a0 There will be one less than the number of datasets concatenated.\u00a0 The pointer to the first dataset is not included because it is always the first extent.<\/p>\n<p>We can locate the pointers by using the DEBNMEXT field (one byte located at offset +16 [x&#8217;10&#8217;]) which contains the total number of extents.<\/p>\n<p>In this example we see that the second dataset begins with extent number 2 (relative to zero &#8211; or the 3rd extent) and the third dataset begins with extent number 4 (relative to zero &#8211; or the 5th extent).<\/p>\n<p>Each PDS directory is located at the beginning of the extent for the dataset.\u00a0 It is important to remember the TTR pointers in the directory blocks are relative to the beginning of the dataset.\u00a0 The TTR to MBBCCHHR conversion must take the concatenation number into account when calculating the physical address from a TTR pointer.<\/p>\n<p>I have not written any example code but if you understand the basics of reading a PDS member it should not be too difficult to read from concatenated PDS datasets.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MVS allows multiple PDS datasets to be concatenated and opened for input. This results in a DEB with extents for every dataset in the concatenation. To make this happen the DCB must have DSORG=PO specified (not DSORG=PS). Below is a dump of a DEB created for concatenated PDS datasets. 0000 00AF1078 02AFD610 69000000 00001100 &#8230;&#8230;O&#8230;&#8230;&#8230; &#8230;<\/p>\n<p><a href=\"https:\/\/tommysprinkle.com\/mvssp\/2013\/02\/19\/concatenated-pds-datasets\/\" class=\"more-link\">Continue reading &lsquo;Concatenated PDS Datasets&rsquo; &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[37],"tags":[],"class_list":["post-249","post","type-post","status-publish","format-standard","hentry","category-concatenated-pds-datasets"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3x7AW-41","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/posts\/249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/comments?post=249"}],"version-history":[{"count":3,"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/posts\/249\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/posts\/249\/revisions\/251"}],"wp:attachment":[{"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/media?parent=249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/categories?post=249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tommysprinkle.com\/mvssp\/wp-json\/wp\/v2\/tags?post=249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}