Subject: | |
From: | |
Reply To: | |
Date: | Sun, 12 Feb 2006 10:54:00 EST |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
Denys:
I have been trying to decipher the Data Set Control Block Data info in the
root file but I am not having complete success with it.
Once again, I suspect the definitions in the old Handbook aren't giving me
the correct sizes etc.
This is a hex dump of the first record in the DSCB of the base I am looking
at. It's a small base with 4 autos and one detail.
XXXYYY99 RECORD 0 (%0, #0)
0000: 000000 141520 004545 000040 0000 C350 0965 0020 ...P.e.
0004: 000025 045401 000001 100001 0015 4B01 0001 8001 ..K.....
0008: 000036 000002 115062 000000 001E 0002 9A32 0000 .....2..
000C: 141520 000000 000000 000000 C350 0000 0000 0000 .P......
0010: 000000 141520 000000 000000 0000 C350 0000 0000 ...P....
0014: SAME: TO 001C-1
001C: 000000 000000 000001 000013 0000 0000 0001 000B ........
0020: 000040 000001 000000 002401 0020 0001 0000 0501 . ......
0024: 020040 020040 020040 020040 2020 2020 2020 2020
0028: SAME: TO 0E38-1
This is the Cobol program displays of this record and they don't exactly
match the hex dump.
**************** DSCB **********************
Processing Dataset=>LISTIM-BSET-AUTO<
WS-DSCB-CAPACITY =>+000050000<
WS-DSCB-BLOCK-LENGTH=>+2405<
WS-DSCB-MEDIA-RECORD-LENGTH=>+0032<
WS-DSCB-ENTRY-RECORD-LENGTH=>+0021<
WS-DSCB-BLOCKING-FACTOR =>-000000002<
WS-DSCB-PATH-COUNT =>+000000001<
WS-DSCB-FIELD-COUNT =>+0001<
WS-DSCB-KEY-TYPE =>+000000000<
WS-DSCB-FIELD-NO-PRIMARY=>+000000001<
WS-DSCB-PATH-POINTER=>+0030<
WS-DSCB-EOF=>+000170546<
WS-DSCB-MAX-ENTRIES-IN-SET=>+000050000<
The fields that seem to be in error would be the blocking factor (-2 ??) and
the EOF ...
Key type is also suspicious but maybe it is ok.
Here's my Cobol Working-storage portion for the DSCB....
01 !1-DSCB-TABLE.
05 !1-WS-DSCB-ARRAY OCCURS 240.
10 !1-DSCB-CAPACITY PIC S9(09) COMP.
10 !1-DSCB-BLOCK-LENGTH PIC S9(04) COMP.
10 !1-DSCB-MEDIA-RECORD-LENGTH PIC S9(04) COMP.
10 !1-DSCB-ENTRY-RECORD-LENGTH PIC S9(04) COMP.
10 !1-DSCB-BLOCK-PATH PIC S9(04) COMP.
10 !1-DSCB-BLOCK-PATH-2 REDEFINES
!1-DSCB-BLOCK-PATH.
15 !1-DSCB-BLOCKING-FACTOR PIC 9(01).
15 !1-DSCB-PATH-COUNT PIC 9(01).
10 !1-DSCB-FIELD-COUNT PIC S9(04) COMP.
10 !1-DSCB-KEY-FIELD-PRIMARY PIC S9(04) COMP.
10 !1-DSCB-KEY-FIELD-PRIMARY-2 REDEFINES
!1-DSCB-KEY-FIELD-PRIMARY.
15 !1-DSCB-KEY-TYPE PIC X(01).
15 !1-DSCB-FIELD-NO-PRIMARY PIC X(01).
10 !1-DSCB-PATH-POINTER PIC S9(04) COMP.
10 !1-DSCB-EOF PIC S9(09) COMP.
10 !1-DSCB-MAX-ENTRIES-IN-SET PIC S9(09) COMP.
10 !1-DSCB-FILLER OCCURS 17 PIC S9(04) COMP.
10 !1-DSCB-ITEM-NUMBERS OCCURS 4 PIC S9(04) COMP.
10 !1-DSCB-PATH-DEFINITION-TABLE.
15 !1-DSCB-PATH-DEFINITION-ARRAY.
20 !1-DSCB-PDT-ITEM-NO-SEARCH PIC 9(01).
20 !1-DSCB-PDT-ITEM-NO-SORT PIC 9(01).
20 !1-DSCB-PDT-SET-NO-DETAIL PIC 9(01).
20 !1-DSCB-PDT-PATH-NO-DETAIL PIC 9(01).
Hope you can help me some more.
TIA,
Brian Donaldson.
<<In the olden days of IMAGE, you could only have 255 items defined in a
database. So at 16 item r/w tables per user label, you could only have 16
user labels of item r/w tables; these would be labels 3 to 18 and the set
r/w tables would start at label 19. When TURBOIMAGE came along, the limit
on items was raised to 1023. So at 16 item r/w tables per user label, the
limit was now 64 user labels of item r/w tables; from label 3 to 66. The
Set r/w table would start at label 67.
The item limit was subsequently raised to 1200 items, which would require a
maximum of 75 labels of 16 item r/w tables each, from label 3 to 77. The
set r/w table would start at label 78.
To calculate the number of labels required for the item r/w table simply
divide the number items minus 1 by 16, take the integer part and add 1,
giving you the number of labels. So 10 items is 9 then divided by 16, take
the integer which gives you 0 and add 1 giving you one label.
The label part of the rootfile is as follows:
Label 0 is the Rootfile information.
Labels 1 and 2 are the password table.
Label 3 for x labels where x is the integer of the number of items minus 1
divided by 16, to which you add 1 is the item r/w tables with each entry
being 8 words (two sets of 64 bits.)
Label 3+x for y labels where y is the integer of the number of sets minus 1
divided by 16, to which you add 1 is the set r/w tables with each entry
being 8 words (two sets of 64 bits.)
So with a database with 1200 items and 199 sets, the number of labels for
each type of table would be 75 for the item r/w tables and 13 for the set
r/w/tables.
Label 0 is the rootfile info
Labels 1 and 2 are the password table.
Labels 3 for 75 are the item r/w tables (last label is 77.)
Labels 78 for 13 are the set r/w tables (last label is 90.)
Then you get to the record side of the rootfile.
Denys
>>
* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
|
|
|