What I still cannot understand is the number of records per member. I can see that the space is available in the track.
You are looking at the way the emulated disk stores data, not the way an actual physical
3390 disk stored them. Each has different sets of overheads on the data. While you don't
see the overheads that 3390s had, the algorithim writing data records has to take account of
them.
The available space that you see in the track is the space that a physical 3390 would have
used for its overheads. A simple comparision of the largest possible block size (56664) and
2xlargest 1/2 track block size (27998) shows that the overhead of that second block is 334
bytes.
If you want to understand what you are looking at in an emulated disk
The format of a CKD header is
nn - record # on track.
kk - length of key field (00 if none)
dd dd - length of data
kk dd dd = 00 00 00 is an EOF merker
James Campbell
On 2 Nov 2024 at 17:44, Sergio via groups.io wrote:
Hi :)
Thank you all.
I was able to verify what happens inside the directory block by creating my own uncompressed 3390 disk and inspecting it with an hexadecimal editor.
### PDS Directory block
I was able to confirm the "end marker" inside the 254 bytes for directory entires. That end marker takes 8 bytes, all Bytes 0xFF, ie. `0xFFFFFFFFFFFFFFFF`.
I also found out that:
- when creating a PDS member using with JCL DD, it uses the minimal 12-Bytes-long directory entries, so it fits 20 members created by JCL DD.
- when creating PDS members using ISPF (M.1.2 or 2), it uses 42-Bytes-long directory entries, so it fits 5 members created via ISPF.
### PDS Member records
Between the directory block and the first member, there is a 16-Bytes-long separator (END marker?).
eg.
```
00 00 00 02 02 00 00 00 00 00 00 02 03 00 05 A0
| |
| '- First record of member 1 (as in TTR)
'- Last record of Directory blocks area (as in TTR)
```
There is also a 16-Bytes-long separator between each member (EOF marker?)
eg.
```
00 00 00 02 04 00 00 00 00 00 00 02 05 00 05 A0
| |
| '- First record of next member (as in TTR)
'- Last record of previous member (as in TTR)
```
And after the last member
```
00 00 00 02 2C 00 00 00 FF FF FF FF FF FF FF FF
|
|
'- Last record of last member (as in TTR)
```
### Number of records per member
What I still cannot understand is the number of records per member. I can see that the space is available in the track.
Do you know where should I look?
---
Kind Regards
Sergio Lindo Mansilla