HP3000-L Archives

February 2006, Week 2

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Denys Beauchemin <[log in to unmask]>
Reply To:
Date:
Sun, 12 Feb 2006 10:58:32 -0600
Content-Type:
text/plain
Parts/Attachments:
text/plain (178 lines)
The blocking factor should be 75, $4B.  The binary value is 1001011 (the
leftmost 8 bits of %045401).  Since you told COBOL this was a signed
integer, it's treating the first bit as the sign.  This is an unsigned
value.

 

The EOF is a little trickier.  Here you must treat the 32 bit value as
follows:  The leftmost 24 bits is the actual block number (or MPE record
number) of the entry (in this case the EOF).  The rightmost 8 bits is the
entry number within the block itself.  In your case, the values are: $29A or
%1232 or 666; and $32 or%62 or 50.  Since we now know the blocking factor is
75, the value is then 666+75 or 49950 and then you add 50, which is the
position in the block and you get 50000.  If you do a listf,2 of the
dataset, you will see the EOF is set at 666.

 

This 24bit/8bit thing has been around since day 1 of IMAGE and is used
everywhere, (chains, capacities, pointers, etc.)  I actually campaigned that
it be done away with some years back as it places an artificial limit on the
capacity of the sets.  The largest capacity is currently 16,777,215 blocks
of whatever blocking factor you have.  The trick is to maximize your block
size, making your blocks 2048 words in length to get the maximum capacity
possible.  If the 32 bit value was used as an actual number, the maximum
capacity would be 4,294,967,295 for any dataset of any blocking factor.
Using your set as an example, you can only have 1,258,291,125 entries and 75
is quite a big blocking factor.  With a blocking factor like 10, the maximum
number of entries becomes 167,772,150 entries and that is reachable.

 

 

Denys

  _____  

From: [log in to unmask] [mailto:[log in to unmask]] 
Sent: Sunday, February 12, 2006 9:54 AM
To: [log in to unmask]
Cc: [log in to unmask]
Subject: Image/3000 Handbook Question/Problem

 

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 *

ATOM RSS1 RSS2