What is a sparsely populated COBOL Table?

This is a Mainframe COBOL forum - you can post your queries on Mainframe COBOL, VS COBOL II, COBOL/370 , Enterprise COBOL

Moderators: dbzTHEdinosauer, Moderator Group

Post Reply
NiceGuy
Member
Posts: 6
Joined: Mon Oct 15, 2007 3:17 am

What is a sparsely populated COBOL Table?

Post by NiceGuy » Thu Oct 18, 2007 12:26 am

What is a sparsely populated COBOL Table?

My written specifications include a requirement to create a ?Sparsely Populated? COBOL Table using the Branch number as the subscript. Branch numbers can be from 1000 to 9999. There are about 490 branches.

The Cobol Table Layout will consist of:

Branch Managers Name:
Branch Address:
Branch City:
Branch State:
Branch Zip:
Branch Phone:
Hours of Operation:

The data comes from a VSAM file that I can extract this information from.

This is going to be part of a mass mailing to customers that have ever had business with us.

I have looked through the COBOL manuals for information on ?Sparsely Populated Tables? but cannot find anything.

Can someone tell me what a ?Sparsely Populated? table is, and how it differs from a regular table, and when should a ?Sparsely Populated? table be used?

Any Information regarding this is greatly appreciated.

User avatar
DavidatK
Active Member
Posts: 65
Joined: Tue Mar 27, 2007 8:41 am
Location: Troy, MI USA

Post by DavidatK » Tue Oct 23, 2007 3:54 am

?Sparsely? vs. ?Densely? populated tables.

The ?Sparsely? and ?Densely? populated COBOL table description, used in some circles, are used to describe how the COBOL table looks after it has been populated. That is, which elements within the table have been populated with data.


The ?Densely? Populated table

What we would consider a ?Densely? populated table is a table that is populated in the normal way. That is, all of the table entries are populated, starting at subscript 1 and ending with the subscript equal to the number of entries, with the remainder of the table being empty.

You would read the first branch record and place it in the branch-table (subscript 1), read the next record and place it in branch-table (subscript 2), and so on. So when all of the branch records have been read, all 490 of them, the Branch table subscripts 1 through 490 all have branch data in them. And as you can see, the data is ?Densely? populated, with no gaps, all at the beginning of the table. The table entries would, however, not be required to be sequentially in order.

The ?Sparsely? Populated Table

Now the ?sparsely? populated table, unlike the ?densely? populated table does not require that the entries are populated starting at subscript 1 and every subscript increment being populated. Quite the contrary, the populated entries are scattered throughout the table with most of the table being empty. So if you were to read branch 1273 you would use the branch number as the subscript into the table and populate the branch-table( subscript 1273), then read branch 6729 and populate branch-table ( subscript 6729) and so on until all the branches are read and the appropriate entries populated. And as you can see, the table is ?sparsely? populated with the valid entries scattered throughout the table.

?Densely? vs. ?Sparsely? Pros and Cons

You can see that the structures of these two types of tables are greatly different. So the question arises, why would one use one type over the other type?

The answer depends on how the table will be accessed, and to what frequency it will be accessed.

You could be sending advertisement to 10s of thousands to 100rds of thousands to millions of households with the branch number in the letter bouncing around like popcorn. Or you may be sticking to a single branch and sending to all the households in that area.

A ?densely? populated table lends itself to sequential processing, read the first branch-table entry, process that one, go on to the next and so on. However, even if the table is in sequential order, it does not lend itself to random access very well. Even if you use a binary search, the overhead can be substantial if done enough.

On the other hand, the ?sparsely? populated table shines on random access, as the branch number becomes the subscript and access is pretty well direct. However, the ?sparsely? populated table does NOT lend itself to sequential processing as you now need to read through all of the empty entries to find a few valid entries.

I have had the problem of having to access entries in a table hundreds of million times, both sequentially and randomly, in the same program, depending on the type of input. In this case, I built both types of table, with a little modification to the ?sparsely? populated table.

As I read the data to be placed in the table, I would build my ?densely? populated table entry, then use the key of the entry as the subscript to the ?sparsely? populates table, but instead of putting the data into the ?sparsely? populated table I put the subscript of the ?densely? populated entry into it.

So now, if I had to randomly access the entry, I would use the entry Key as the subscript into the ?sparsely? populated table to get the subscript of my entry in the ?densely? populated table. It?s a little slower since I need to make two accesses, but a lot faster then searching for the entry.

Well, I hope this answered more questions than it created. If you have any questions, please come back

Dave

Post Reply

FREE TUTORIALS

Tutorials
Free tutorials from mainframegurukul
  • JCL Tutorial
    Covers all important JCL concepts.
  • Cobol Tutorial
    This tutorials covers all Cobol Topics from STRING to COMP-3.
  • DB2 Tutorial
    DB2 Tutorial focuses on DB2 COBOL Programming.
  • SORT Tutorial
    This Tutorial covers all important aspects of DFSORT with examples
  • CICS Tutorial
    This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions



Other References
Mainframe Tools and others