Skip to main content

Further to the fun I had trying to get the SEQ.NUM option to work on a dynamic file creation in a Pick account, I am now having extra fun with dynamic files.

I'm kind of thinking the manuals on this subject are not at all helpful - there are lots of plain syntax explanations but none of the nuanced guidance needed to actually master this stuff.

My current challenge is to create a Dynamic file with specific Dictionary specifications (the default of 'Type 3, Modulo 1, Separation 2' are not appropriate) and with non-default dynamic file settings.

Given the issues with Pick-style CREATE.FILE and dynamic files I thought I would simply create the DICT file first, then create the data file.

This is how that turned out:

>CREATE.FILE DICT TESTFILE1 53,2,18
Creating file "D_TESTFILE1" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_TESTFILE1".
>ICREATE.FILE DATA TESTFILE1 30 GENERAL GROUP.SIZE 6 MINIMUM.MODULUS 2456
"TESTFILE1" already has a DATA definition record.
File name        =
File not created.
>

So, that is a strange outcome. The ICREATE.FILE seems to want to create everything.

I tried again with the DYNAMIC keyword instead of 30 (in case the keyword is important)

>CREATE.FILE DICT TESTFILE1 53,2,18
Creating file "D_TESTFILE1" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_TESTFILE1".
>ICREATE.FILE DATA TESTFILE1 DYNAMIC GENERAL GROUP.SIZE 6 MINIMUM.MODULUS 2456
"TESTFILE1" already has a DATA definition record.
File name        =
File not created.
>

Ok - so that also does not work.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Further to the fun I had trying to get the SEQ.NUM option to work on a dynamic file creation in a Pick account, I am now having extra fun with dynamic files.

I'm kind of thinking the manuals on this subject are not at all helpful - there are lots of plain syntax explanations but none of the nuanced guidance needed to actually master this stuff.

My current challenge is to create a Dynamic file with specific Dictionary specifications (the default of 'Type 3, Modulo 1, Separation 2' are not appropriate) and with non-default dynamic file settings.

Given the issues with Pick-style CREATE.FILE and dynamic files I thought I would simply create the DICT file first, then create the data file.

This is how that turned out:

>CREATE.FILE DICT TESTFILE1 53,2,18
Creating file "D_TESTFILE1" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_TESTFILE1".
>ICREATE.FILE DATA TESTFILE1 30 GENERAL GROUP.SIZE 6 MINIMUM.MODULUS 2456
"TESTFILE1" already has a DATA definition record.
File name        =
File not created.
>

So, that is a strange outcome. The ICREATE.FILE seems to want to create everything.

I tried again with the DYNAMIC keyword instead of 30 (in case the keyword is important)

>CREATE.FILE DICT TESTFILE1 53,2,18
Creating file "D_TESTFILE1" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_TESTFILE1".
>ICREATE.FILE DATA TESTFILE1 DYNAMIC GENERAL GROUP.SIZE 6 MINIMUM.MODULUS 2456
"TESTFILE1" already has a DATA definition record.
File name        =
File not created.
>

Ok - so that also does not work.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Hi Gregor,

Take a look at the VOC entry for TESTFILE1 after creating just the DICT portion of the file. I have some recollection that the current behavior is for PICK compatibility. When you create a dictionary only file in PICK it could be accessed with or without the DICT keyword. Or something to that effect. It's been a long time. But I'm pretty sure that is the reason for the current behavior in PICK flavor account.

See the behavior below in a PICK flavor account.

>CREATE.FILE DICT DICTONLY 53,2,18
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".
>.L DICTONLY

     DICTONLY
001 F
002 D_DICTONLY
003 D_DICTONLY


>DELETE.FILE DICT DICTONLY
Field 2 in file definition record "DICTONLY" has been set to nothing.
DELETEd file "D_DICTONLY", Type 18, Modulo 53.
DELETEd file definition record "DICTONLY" in the VOC file.


>ICREATE.FILE DICT DICTONLY 18 53 2
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".
>.L DICTONLY

     DICTONLY
001 F
002
003 D_DICTONLY

The problem you are seeing is that field 2 of the file pointer is already populated. You could use the ICREATE.FILE to create the dictionary as noted above. Or I think you could simply edit the VOC entry and set field 2 to the empty string. At that point you should be able to create the dynamic file data portion with the settings you desire.

Thanks,

Neil



------------------------------
Neil Morris
Universe Advanced Technical Support
Rocket Software
------------------------------

Hi Gregor,

Take a look at the VOC entry for TESTFILE1 after creating just the DICT portion of the file. I have some recollection that the current behavior is for PICK compatibility. When you create a dictionary only file in PICK it could be accessed with or without the DICT keyword. Or something to that effect. It's been a long time. But I'm pretty sure that is the reason for the current behavior in PICK flavor account.

See the behavior below in a PICK flavor account.

>CREATE.FILE DICT DICTONLY 53,2,18
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".
>.L DICTONLY

     DICTONLY
001 F
002 D_DICTONLY
003 D_DICTONLY


>DELETE.FILE DICT DICTONLY
Field 2 in file definition record "DICTONLY" has been set to nothing.
DELETEd file "D_DICTONLY", Type 18, Modulo 53.
DELETEd file definition record "DICTONLY" in the VOC file.


>ICREATE.FILE DICT DICTONLY 18 53 2
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".
>.L DICTONLY

     DICTONLY
001 F
002
003 D_DICTONLY

The problem you are seeing is that field 2 of the file pointer is already populated. You could use the ICREATE.FILE to create the dictionary as noted above. Or I think you could simply edit the VOC entry and set field 2 to the empty string. At that point you should be able to create the dynamic file data portion with the settings you desire.

Thanks,

Neil



------------------------------
Neil Morris
Universe Advanced Technical Support
Rocket Software
------------------------------

Hi Neil.

The CREATE.FILE command in  Pick mode does populate <2> with the Dict file name when creating a DICT only file.

It also replaces that data file reference with a new data file when creating the DATA file, so it cleans up the VOC entry.

>CREATE.FILE DICT DICTONLY 53,2,18
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".


>.L DICTONLY

     DICTONLY
0001 F
0002 D_DICTONLY
0003 D_DICTONLY


>CREATE.FILE DATA DICTONLY 2456,6,30
DATA file name "DICTONLY" does not match VOC DATA entry "D_DICTONLY".
Creating file "DICTONLY" as Type 30.


>.L DICTONLY

     DICTONLY
0001 F
0002 DICTONLY
0003 D_DICTONLY
>

Clearly, the ICREATE.FILE does not have such niceties, making me think it is not wise / pleasant / productive to mix-n-match the commands.

Use ICREAT.FILE or CREATE.FILE but not both when working on the same file.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Hi Neil.

The CREATE.FILE command in  Pick mode does populate <2> with the Dict file name when creating a DICT only file.

It also replaces that data file reference with a new data file when creating the DATA file, so it cleans up the VOC entry.

>CREATE.FILE DICT DICTONLY 53,2,18
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".


>.L DICTONLY

     DICTONLY
0001 F
0002 D_DICTONLY
0003 D_DICTONLY


>CREATE.FILE DATA DICTONLY 2456,6,30
DATA file name "DICTONLY" does not match VOC DATA entry "D_DICTONLY".
Creating file "DICTONLY" as Type 30.


>.L DICTONLY

     DICTONLY
0001 F
0002 DICTONLY
0003 D_DICTONLY
>

Clearly, the ICREATE.FILE does not have such niceties, making me think it is not wise / pleasant / productive to mix-n-match the commands.

Use ICREAT.FILE or CREATE.FILE but not both when working on the same file.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

So in order to create a file with specific DICT settings and with a Dynamic data file I need 2 commands - 1 for the specific DICT structure and one for the DATA structure.

>ICREATE.FILE DICT TESTFILE1 18 53 2
Creating file "D_TESTFILE1" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_TESTFILE1".


>.L TESTFILE1

     TESTFILE1
0001 F
0002
0003 D_TESTFILE1

>ICREATE.FILE DATA TESTFILE1 DYNAMIC GENERAL GROUP.SIZE 6 MINIMUM.MODULUS 2456
Creating file "TESTFILE1" as Type 30.


>.L TESTFILE1

     TESTFILE1
0001 F
0002 TESTFILE1
0003 D_TESTFILE1

>ANALYZE.FILE TESTFILE1
File name ..................   TESTFILE1
Pathname ...................   TESTFILE1
File type ..................   DYNAMIC
File style and revision ....   64BIT Revision 12
NLS Character Set Mapping ..   NONE
Hashing Algorithm ..........   GENERAL
No. of groups (modulus) ....   2456 current ( minimum 2456 )
Large record size ..........   9811 bytes
Group size .................   12288 bytes
Load factors ...............   80% (split), 50% (merge) and 0% (actual)
Total size .................   30203904 bytes
>

The Group size of 12288 bytes is 6 * 2048 - each group in a dynamic file being 2k in size.

So the ICREATE.FILE command gives finer control over the structure of the dynamic file.

The CREATE.FILE command syntax to calculate the Group size takes the Separation, multiplies it by 512, divides the result by 2048 and takes the integer of that division. In essence, the separation needs to change by 4 to adjust the dynamic file's Group size. I doubt that has been documented.

The other interesting quirk is that in BASIC code, using the fileinfo() function the Dynamic file's group size is reported as the quantity of 1024 blocks, not 2048 blocks!
Does anyone know why it is reported that way



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Hi Gregor,

Take a look at the VOC entry for TESTFILE1 after creating just the DICT portion of the file. I have some recollection that the current behavior is for PICK compatibility. When you create a dictionary only file in PICK it could be accessed with or without the DICT keyword. Or something to that effect. It's been a long time. But I'm pretty sure that is the reason for the current behavior in PICK flavor account.

See the behavior below in a PICK flavor account.

>CREATE.FILE DICT DICTONLY 53,2,18
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".
>.L DICTONLY

     DICTONLY
001 F
002 D_DICTONLY
003 D_DICTONLY


>DELETE.FILE DICT DICTONLY
Field 2 in file definition record "DICTONLY" has been set to nothing.
DELETEd file "D_DICTONLY", Type 18, Modulo 53.
DELETEd file definition record "DICTONLY" in the VOC file.


>ICREATE.FILE DICT DICTONLY 18 53 2
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".
>.L DICTONLY

     DICTONLY
001 F
002
003 D_DICTONLY

The problem you are seeing is that field 2 of the file pointer is already populated. You could use the ICREATE.FILE to create the dictionary as noted above. Or I think you could simply edit the VOC entry and set field 2 to the empty string. At that point you should be able to create the dynamic file data portion with the settings you desire.

Thanks,

Neil



------------------------------
Neil Morris
Universe Advanced Technical Support
Rocket Software
------------------------------

Hi 

Gregor,

The Pick flavor CREATE.FILE DATA checks for matching DICT and DATA fields in the VOC entry.
If they match, CREATE.FILE recognizes the file as a DICT-only file, and will overwrite the DATA.
ICREATE.FILE does not, even in a Pick flavor account.
As Neil observes, you could first ICREATE.FILE DICT. Alternatively, create the DATA first.

>create.file DICT F 1,1,18
Creating file "D_F" as Type 18, Modulo 1, Separation 1.
Added "@ID", the default record for RetrieVe, to "D_F".
>.l F

     F
001 F 
002 D_F
003 D_F
>CREATE.FILE DATA F 1,4,30 SEQ.NUM
DATA file name "F" does not match VOC DATA entry "D_F".
Creating file "F" as Type 30.
>ANALYZE.FILE F
...
Hashing Algorithm ..........   SEQUENTIAL
...
>DELETE.FILE F
DELETEd "F", Type 30.
DELETEd file "D_F", Type 18, Modulo 1.
DELETEd file definition record "F" in the VOC file.

====================
>CREATE.FILE DICT F 1,1,18
Creating file "D_F" as Type 18, Modulo 1, Separation 1.
Added "@ID", the default record for RetrieVe, to "D_F".
>ICREATE.FILE DATA F 30 1 4 SEQ.NUM
"F" already has a DATA definition record.
File name        =  
File not created.
>DELETE.FILE F
Field 2 in file definition record "F" has been set to nothing.
DELETEd file "D_F", Type 18, Modulo 1.
DELETEd file definition record "F" in the VOC file.

As you observed earlier, using keywords only does not work.
>CREATE.FILE DATA F DYNAMIC SEQ.NUM
Creating file "F" as Type 30.
>ANALYZE.FILE F
...
Hashing Algorithm ..........   GENERAL



------------------------------
Mark A Baldridge
Principal Consultant
Thought Mirror
Nacogdoches, Texas United States
------------------------------

Further to the fun I had trying to get the SEQ.NUM option to work on a dynamic file creation in a Pick account, I am now having extra fun with dynamic files.

I'm kind of thinking the manuals on this subject are not at all helpful - there are lots of plain syntax explanations but none of the nuanced guidance needed to actually master this stuff.

My current challenge is to create a Dynamic file with specific Dictionary specifications (the default of 'Type 3, Modulo 1, Separation 2' are not appropriate) and with non-default dynamic file settings.

Given the issues with Pick-style CREATE.FILE and dynamic files I thought I would simply create the DICT file first, then create the data file.

This is how that turned out:

>CREATE.FILE DICT TESTFILE1 53,2,18
Creating file "D_TESTFILE1" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_TESTFILE1".
>ICREATE.FILE DATA TESTFILE1 30 GENERAL GROUP.SIZE 6 MINIMUM.MODULUS 2456
"TESTFILE1" already has a DATA definition record.
File name        =
File not created.
>

So, that is a strange outcome. The ICREATE.FILE seems to want to create everything.

I tried again with the DYNAMIC keyword instead of 30 (in case the keyword is important)

>CREATE.FILE DICT TESTFILE1 53,2,18
Creating file "D_TESTFILE1" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_TESTFILE1".
>ICREATE.FILE DATA TESTFILE1 DYNAMIC GENERAL GROUP.SIZE 6 MINIMUM.MODULUS 2456
"TESTFILE1" already has a DATA definition record.
File name        =
File not created.
>

Ok - so that also does not work.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Maybe I'm missing something here, but why don't you use a "normal" file creation command specifying a type 30 file to get the dynamic portion - like this:

CREATE.FILE DYNFILE 7,4,18 97,4,30
Creating file "DYNFILE" as Type 30.
Creating file "D_DYNFILE" as Type 18, Modulo 7, Separation 4.
Added "@ID", the default record for RetrieVe, to "D_DYNFILE".


>ANALYZE.FILE DYNFILE
File name ..................   DYNFILE
Pathname ...................   DYNFILE
File type ..................   DYNAMIC
File style and revision ....   32BIT Revision 12
Hashing Algorithm ..........   GENERAL
No. of groups (modulus) ....   97 current ( minimum 97 )
Large record size ..........   1628 bytes
Group size .................   2048 bytes
Load factors ...............   80% (split), 50% (merge) and 0% (actual)
Total size .................   202752 bytes


>FILE.STAT DICT DYNFILE
File name= DICT DYNFILE
File type= 18
File style and revision                 = 32BIT Revision 12
Number of groups in file (modulo)= 7
Separation= 4
Number of records= 1
Number of physical bytes= 16384
Number of data bytes= 68

Average number of records per group= 0.1429
Average number of bytes per group= 9.7143
Minimum number of records in a group= 0
Maximum number of records in a group= 1

Average number of bytes per record= 68.0000
Minimum number of bytes in a record= 68
Maximum number of bytes in a record= 68

Average number of fields per record= 6.0000
Minimum number of fields per record= 6
Maximum number of fields per record= 6

Groups   25%     50%     75%    100%    125%    150%    175%    200%  full
           7       0       0       0       0       0       0       0

So, the both the dynamic file and the dictionary are created with the specified parameters.

Is this what you are trying to do? (This is on UV 11.3.1 Windows, PICK flavour account).

Cheers,

Brian



------------------------------
Brian Speirs
Senior Analyst - Information Systems
Rush Flat Ltd
Wellington NZ
------------------------------

Hi Neil.

The CREATE.FILE command in  Pick mode does populate <2> with the Dict file name when creating a DICT only file.

It also replaces that data file reference with a new data file when creating the DATA file, so it cleans up the VOC entry.

>CREATE.FILE DICT DICTONLY 53,2,18
Creating file "D_DICTONLY" as Type 18, Modulo 53, Separation 2.
Added "@ID", the default record for RetrieVe, to "D_DICTONLY".


>.L DICTONLY

     DICTONLY
0001 F
0002 D_DICTONLY
0003 D_DICTONLY


>CREATE.FILE DATA DICTONLY 2456,6,30
DATA file name "DICTONLY" does not match VOC DATA entry "D_DICTONLY".
Creating file "DICTONLY" as Type 30.


>.L DICTONLY

     DICTONLY
0001 F
0002 DICTONLY
0003 D_DICTONLY
>

Clearly, the ICREATE.FILE does not have such niceties, making me think it is not wise / pleasant / productive to mix-n-match the commands.

Use ICREAT.FILE or CREATE.FILE but not both when working on the same file.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Hi Gregor,

The original CREATE.FILE implementation in UV was based on Prime Information and the support of Dynamic Files. 

The PICK syntax was added later in order to support PICK applications migrating to UV. 

I don't think there was ever an intention to use them interchangeably.

One other suggestion regarding sizing the dictionary different from the default.

You could use ICREATE.FILE to create the dynamic file with the hash type, minimum modulus, etc.

And then just use RESIZE DICT filename 18 53 2 to change the dictionary size.

Thanks,

Neil



------------------------------
Neil Morris
Universe Advanced Technical Support
Rocket Software
------------------------------

Maybe I'm missing something here, but why don't you use a "normal" file creation command specifying a type 30 file to get the dynamic portion - like this:

CREATE.FILE DYNFILE 7,4,18 97,4,30
Creating file "DYNFILE" as Type 30.
Creating file "D_DYNFILE" as Type 18, Modulo 7, Separation 4.
Added "@ID", the default record for RetrieVe, to "D_DYNFILE".


>ANALYZE.FILE DYNFILE
File name ..................   DYNFILE
Pathname ...................   DYNFILE
File type ..................   DYNAMIC
File style and revision ....   32BIT Revision 12
Hashing Algorithm ..........   GENERAL
No. of groups (modulus) ....   97 current ( minimum 97 )
Large record size ..........   1628 bytes
Group size .................   2048 bytes
Load factors ...............   80% (split), 50% (merge) and 0% (actual)
Total size .................   202752 bytes


>FILE.STAT DICT DYNFILE
File name= DICT DYNFILE
File type= 18
File style and revision                 = 32BIT Revision 12
Number of groups in file (modulo)= 7
Separation= 4
Number of records= 1
Number of physical bytes= 16384
Number of data bytes= 68

Average number of records per group= 0.1429
Average number of bytes per group= 9.7143
Minimum number of records in a group= 0
Maximum number of records in a group= 1

Average number of bytes per record= 68.0000
Minimum number of bytes in a record= 68
Maximum number of bytes in a record= 68

Average number of fields per record= 6.0000
Minimum number of fields per record= 6
Maximum number of fields per record= 6

Groups   25%     50%     75%    100%    125%    150%    175%    200%  full
           7       0       0       0       0       0       0       0

So, the both the dynamic file and the dictionary are created with the specified parameters.

Is this what you are trying to do? (This is on UV 11.3.1 Windows, PICK flavour account).

Cheers,

Brian



------------------------------
Brian Speirs
Senior Analyst - Information Systems
Rush Flat Ltd
Wellington NZ
------------------------------

Hi Brian.

One outcome we need is to have the DICT portion of the created file sized using specific parameters and not just use the defaults.

This PICK style approach of CREATE.FILE does achieve that.

There seems to be some restrictions on how the dynamic file parameters are recognised/used in the the Pick style CREATE.FILE (SEQ.NUM for example), which is why I have been exploring the ICREATE.FILE syntax.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Hi Brian.

One outcome we need is to have the DICT portion of the created file sized using specific parameters and not just use the defaults.

This PICK style approach of CREATE.FILE does achieve that.

There seems to be some restrictions on how the dynamic file parameters are recognised/used in the the Pick style CREATE.FILE (SEQ.NUM for example), which is why I have been exploring the ICREATE.FILE syntax.



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------

Hi Gregor

Long time no speak.

If you use the PICK style CREATE.FILE with the DYNAMIC keyword (mix and match) you should be able to get what you want...

CREATE.FILE BIGDYN 11,1 DYNAMIC MINIMUM.MODULUS 2048 GROUP.SIZE 4
Creating file "BIGDYN" as Type 30.
Creating file "D_BIGDYN" as Type 18, Modulo 11, Separation 1.
Added "@ID", the default record for RetrieVe, to "D_BIGDYN".
>ANALYZE.FILE BIGDYN
File name ..................   BIGDYN
Pathname ...................   BIGDYN
File type ..................   DYNAMIC
File style and revision ....   32BIT Revision 12
Hashing Algorithm ..........   GENERAL
No. of groups (modulus) ....   2048 current ( minimum 2048 )
Large record size ..........   1628 bytes
Group size .................   8192 bytes
Load factors ...............   80% (split), 50% (merge) and 0% (actual)
Total size .................   16793600 bytes

KR

Brian



------------------------------
Brian Leach
Director
Brian Leach Consulting
Chipping Norton GB
------------------------------

Hi Gregor

Long time no speak.

If you use the PICK style CREATE.FILE with the DYNAMIC keyword (mix and match) you should be able to get what you want...

CREATE.FILE BIGDYN 11,1 DYNAMIC MINIMUM.MODULUS 2048 GROUP.SIZE 4
Creating file "BIGDYN" as Type 30.
Creating file "D_BIGDYN" as Type 18, Modulo 11, Separation 1.
Added "@ID", the default record for RetrieVe, to "D_BIGDYN".
>ANALYZE.FILE BIGDYN
File name ..................   BIGDYN
Pathname ...................   BIGDYN
File type ..................   DYNAMIC
File style and revision ....   32BIT Revision 12
Hashing Algorithm ..........   GENERAL
No. of groups (modulus) ....   2048 current ( minimum 2048 )
Large record size ..........   1628 bytes
Group size .................   8192 bytes
Load factors ...............   80% (split), 50% (merge) and 0% (actual)
Total size .................   16793600 bytes

KR

Brian



------------------------------
Brian Leach
Director
Brian Leach Consulting
Chipping Norton GB
------------------------------

Hi Brian

Yes it has been a while since we last spoke.

I like your "mix-n-match" approach of syntaxes for the DICT and DATA portions. I think that will allow a single command to create both files.

Thanks



------------------------------
Gregor Scott
Software Architect
Pentana Solutions Pty Ltd
Mount Waverley VIC AU
------------------------------