IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

IGYDS1267-S, IGYGR1478-E


IBM Mainframe Forums -> COBOL Programming
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
kunal jain

New User


Joined: 19 May 2011
Posts: 59
Location: India

PostPosted: Mon May 23, 2011 7:33 pm
Reply with quote

By Using Bill Suggestion compile got error free..but I am afraid about the run time abend:
CEE0813S Insufficient storage was available to satisfy a get storage (CEECZST)

Please suggest
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Mon May 23, 2011 7:36 pm
Reply with quote

last but not least,

primary module would CALL the submodules to
  • load an item to table
  • search for an item in the table and return the value
  • address the next item in the table and return the value

that of course would involve developing a pass-a-long area (1) for each module, that would contain
  • FUNCTION CODE
  • any values required for the function
  • a return area for table item value
  • a return area for return code of the function call


This would mean you would not address each table in Primary module,
but you would use two modules to store and retrieve data.

since each table is only 8mg you have growth potential.

you would develop experience controlling two 'black boxes'.

this is the solution that I would use,
if i was so thck-headed as not to employ some other methodology.
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Mon May 23, 2011 7:40 pm
Reply with quote

you would only be worried about run-time abend
if you were not able to address the sub-modules working-storage.
i.e. soc4

you would never receive a :
CEE0813S Insufficient storage was available to satisfy a get storage (CEECZST

because you are not invoking these routines.

my last 'posivtive' post in this thread.

from now on, If i post in this thread, it will be to say something 'un-nice'
in response to an incorrect comment.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Mon May 23, 2011 7:56 pm
Reply with quote

I wonder why people waste time designing/researching <good> technical solutions
for poorly designed applications and algorithms
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Mon May 23, 2011 8:32 pm
Reply with quote

dbzTHEdinosauer wrote:
last but not least,

primary module would CALL the submodules to
  • load an item to table
  • search for an item in the table and return the value
  • address the next item in the table and return the value

that of course would involve developing a pass-a-long area (1) for each module, that would contain
  • FUNCTION CODE
  • any values required for the function
  • a return area for table item value
  • a return area for return code of the function call


This would mean you would not address each table in Primary module,
but you would use two modules to store and retrieve data.

since each table is only 8mg you have growth potential.

you would develop experience controlling two 'black boxes'.

this is the solution that I would use,
if i was so thck-headed as not to employ some other methodology.


Nice approach. Also nice that once you have it, you'll be able to use the "black box" generallly for other things, not just because you have a big table.

80mg is the size of the table (the original 8mg was a typo). That is a little close for comfort.

Is this a once-off or a period job, Kunal Jain?
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Mon May 23, 2011 9:15 pm
Reply with quote

I am wondering how many
pic9(n) display
fields there are?
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue May 24, 2011 3:45 am
Reply with quote

dbzTHEdinosauer wrote:
I am wondering how many
pic9(n) display
fields there are?


I predict none. I predict each of the 165 bytes is a piece of text which, in some cases, may have been splitted into a second item, and to compare them to the original you need to stick them back together. All the originals in one gigantic table, all the potentially splitted ones in another.

They call me The Mindreader. Well, it sounded something like that.

For "splitted" it is archaic. Shakespeare used it. Also still in use at the end of the 19th Century.

Kunal Jain, do you want to tell us a bit more about your task? If that is the whole thing, you definitely don't need two 80meg tables.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue May 24, 2011 4:15 am
Reply with quote

kunal jain wrote:
Basically I need to compare the records of two VSAM files.
This comparision is a bit complex in a sense that
1. there are some acceptable differences which i need to ignore
2. Record has a. item key b. item description. one item key may contain lacs of description distinguished by sequence number..
3. the description coming in two files for an item key is not is sequence. So to compare all the description for an item-key, I am planning to store them in two internal tables. then i am planning to check for an item-key if every description of 1st Table is present in 2nd table(anywhere) or not.If not present in 2nd Table then it will go to output report as Deleted description and for vice versa case as Inserted record.

[...]


So, you've covered the "acceptable" differences elsewhere.

In addition to the 165 bytes of description, each file record has a item key and a sequence number. There may be 100,000s of descriptions for one item key, if I take you literally (so you allow for 500,000).

The descriptions are not in sequence, which presumably must mean, somehow, that the sequence numbers are not in sequence? Or do you mean that the descriptions are, for instance, in time sequence, so that sequence 0000001 to sequence 0000002 for a particular key might be seperated by one or more description records for another key?

So far you have left Key (might not be necessary) and Sequence Number out of your table. In goes the Sequence, and that is another 2meg gone. Not much more than 50% business growth and your solution comes to a dead halt. OK, you could bodge it about to add more working-storages to keep it going, but it isn't a particularly bright idea.

I don't know whether I am one of enrico's timewasters (and can't work out if it would be good to be one, or not) but my reason to keep poking at this thing is this. When we get our first idea how to solve a problem it can be difficult, at first, to accept that we might not have the best solution. It's our solution, we like it. We're going to stick to it. How to break that down? Just bashing may entrench the idea, rather than weaken faith in it. Some other options might get things going in a different way.

Kunal Jain, unless you can show more information as to why, you don't need your gigantic tables for this task. How many records do you have on file? What percentage of keys have 100,000s of descriptions? Are you just reporting? How often are you running the job?
Back to top
View user's profile Send private message
kunal jain

New User


Joined: 19 May 2011
Posts: 59
Location: India

PostPosted: Tue May 24, 2011 12:23 pm
Reply with quote

The file has around 15 crore records. For a very few Item-key, there are around 8 lacs of item description. Around 1 % of item-keys has 1lacs to 9 lacs of records.

I need to report the mismatch of the item descriptions(& also the extra ones if exist in any of the file). This Comparision is done on a monthly basis.
Back to top
View user's profile Send private message
kunal jain

New User


Joined: 19 May 2011
Posts: 59
Location: India

PostPosted: Tue May 24, 2011 12:28 pm
Reply with quote

To add more, this comparision is to verify the o/p of new process with o/p of old process.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue May 24, 2011 12:29 pm
Reply with quote

OK, sorry Kunal Jain, what is a crore? I knew, by accident, a lac/lakh, so I'm guessing a million or 10 million, but makes a difference.

If you have 8 lacs already, how are they going in a 5 lac table? And you have 9 lacs as well?
Back to top
View user's profile Send private message
kunal jain

New User


Joined: 19 May 2011
Posts: 59
Location: India

PostPosted: Tue May 24, 2011 12:35 pm
Reply with quote

Sorry for the confusion...

2 VSAM Files has around 150 million records.
Only 1 % of item key has upto 5 lacs records..
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue May 24, 2011 2:40 pm
Reply with quote

OK, so even your gigantic table is already full. Unless you can absolutely solidly say there will be no growth of descriptions beyond the 500,000 (or so) you already have.

Unfortunately, "only 1%" of 150 million is still 1.5 million. So that's a lot of use of your tables, so you'd have to do a very good job at accessing the tables or it will "run like a dog with no legs" as we say.

Can you explain about the file structure?

Can you look back at questions already asked?[/code]
Back to top
View user's profile Send private message
kunal jain

New User


Joined: 19 May 2011
Posts: 59
Location: India

PostPosted: Tue May 24, 2011 3:14 pm
Reply with quote

150 million is the total item description in all for all the item-keys.

File has around 10k item keys and only 1%(of 10k) keys has upto 5 lacs item description. Both the file has same structure

File structure:
FD INPUT-FILE1
RECORD 165
LABEL RECORD STANDARD.
01 INPUT1-REC.
05 ITEM-KEY PIC X(17).
05 ITEM-DESC PIC X(148).
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue May 24, 2011 3:18 pm
Reply with quote

OK, where's the Sequence Number you mentioned? How is the key constructed? Are they unique? What type of VSAM file is it?
Back to top
View user's profile Send private message
kunal jain

New User


Joined: 19 May 2011
Posts: 59
Location: India

PostPosted: Tue May 24, 2011 3:24 pm
Reply with quote

ITEM KEY-->
05 ITEM-kEY.
10 KEY PIC x(7).
10 SEQ pic X(10).

VSAM File is KSDS.
For the item desc of the same key, just seq keeps on incrementing for every desc so as to distinguished between the desc of the same key.

Please let me know if any more info is needed
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue May 24, 2011 3:31 pm
Reply with quote

A bit late getting round to this one, and "off topic", but..


dbzTHEdinosauer wrote:
some shops do not allow NOSSRANGE.

though what you have provide, BILL, will work (and I have used it myself, sometimes),
another possible solution
(if you do not have to reference both tables in the same statement)
is use one 01, use two 05's, one redefining the other, and
flip-flop between table a and table b with a set (the 01 linkage item) to pointer phrase.

actually, I agree with Bill, and a non-large table process be used.
problem with two 500,000 165-char item tables,
you are trying to load everything.
as I said before,
what are you going to do whtn 500,000 165-char items is not enough?

since you need to compare both at the same time,
move an item from table a to working storage
flip the address
move an item from table b to working storage,
do the compare.

but again,
you think that you can load the world to memory and play with it.

can't always do that, might as well learn how to design a complete process
instead of attempting to solve the problem in one program.


I suppose if the rules are SSRANGE, then you have to compile with it (options can be "locked" at installation, so they can make it so you really can't change it). And I suppose it is the "spirit" of the law not to turn off the checking at run time :-)

I still don't like SSRANGE. I'm open to being convinced.

For "the flip the address" I'd suggest

Code:

01  L-ADDRESS-SWAP-BYTE-1 REDEFINES gigantic-table-1
      05  FILLER PIC X.


And the same for the other table.

Otherwise, every time you flip the address the program will do size-of-gigantic/4096 operations to make the redundant BLLs addressable. For 80 meg, that is close to 20,000 unnecessary BLL settings per flip. The only BLL you need (for subscripting/indexing) is the first one and setting the address of the above will get that for you.

I'm hoping this is not relevant to the current requirment, but for anyone searching later who can't avoid gigantic tables.
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Tue May 24, 2011 4:40 pm
Reply with quote

SSRANGE keeps the animals in line.

hate wasting time debugging things that SSRANGE catches,
when rookies (or experienced programmers who are actually rookies)
do dumb things with their code.

But, I do not advocate SSRANGE in production, does use a few resources.

side topic:

I always use 1 byte linkage area. then I float a linkage definition on that address, thus the BLL re-alignment does not enter in.

as far as trying to explain a 1 byte linkage area, floating another linkage area on that aderess, was just too much to hope for. so, i did not.

my only thoughts of this thread,
were well stated by enrico, earlier:
why waste good technical solutions on bad design?
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Tue May 24, 2011 6:26 pm
Reply with quote

OK, get the SSRANGE point. Maybe you should have an "SSRANGE box", like a "swear box". Any time SSRANGE kicks in, culprit has to kick in 10 bucks. To be divided equally at the end of the month between those who have not contributed that month.

My BLL point wasn't for you Dick, I just panicked a little that one day someone will actually do a search on the forum, and it'll be this topic they need and then they'll go off an do it "as is" and blame, well, you actually, so what the heck. I don't suppose I have many Cobol tricks that you don't know :-)

You're right and enrico's right.
Back to top
View user's profile Send private message
Bill O'Boyle

CICS Moderator


Joined: 14 Jan 2008
Posts: 2501
Location: Atlanta, Georgia, USA

PostPosted: Tue May 24, 2011 6:38 pm
Reply with quote

To avoid going beyond an array HIBOUNDS, calculate this array-max up front in HOUSEKEEPING and use this max as your HIBOUNDS throughout the code. It will always be correct, regardless of the OCCURS.

Example -

Code:

03  WS-FWORD           PIC 9(08) COMP.
03  WS-ARRAY-REC.
    05  WS-ARRAY-ENTRY OCCURS 100 TIMES
                       INDEXED BY X-WS-AE, X-WS-AE-MAX
                       PIC  X(256).

DIVIDE LENGTH OF WS-ARRAY-REC BY LENGTH OF WS-ARRAY-ENTRY (1)
                       GIVING WS-FWORD.

SET  X-WS-AE-MAX       TO WS-FWORD.

Hard coding array-max's are for the birds....

Bill
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Tue May 24, 2011 6:55 pm
Reply with quote

please avoid using local jargon or Your own language
since we take time to understand Your problem it would be nice on Your side to spare us the trouble of understanding and translating Your language
( crores, laks, and friends )

almost time to lock the topic, looks like it is going nowhere and is just wasting everybody' s time icon_biggrin.gif
Back to top
View user's profile Send private message
Bill O'Boyle

CICS Moderator


Joined: 14 Jan 2008
Posts: 2501
Location: Atlanta, Georgia, USA

PostPosted: Tue May 24, 2011 7:06 pm
Reply with quote

Enrico,

Does this mean I need to stop using using the "FWORD"? icon_smile.gif

Bill
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Tue May 24, 2011 7:13 pm
Reply with quote

Naah !

IIRC the FWORD has been a standard term in IT jargon for a loong time icon_biggrin.gif
( HWORD, FWORD, DWORD, ... )
Back to top
View user's profile Send private message
Akatsukami

Global Moderator


Joined: 03 Oct 2009
Posts: 1788
Location: Bloomington, IL

PostPosted: Tue May 24, 2011 7:17 pm
Reply with quote

enrico-sorichetti wrote:
Naah !

IIRC the FWORD has been a standard term in IT jargon for a loong time icon_biggrin.gif
( HWORD, FWORD, DWORD, ... )

I've never heard a colleague use "fnord". Of course, I wouldn't icon_wink.gif
Back to top
View user's profile Send private message
Nic Clouston

Global Moderator


Joined: 10 May 2007
Posts: 2455
Location: Hampshire, UK

PostPosted: Tue May 24, 2011 9:13 pm
Reply with quote

Why not just run SUPERC or COMPAREX if you have that installed?
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> COBOL Programming Goto page 1, 2  Next

 


Search our Forums:

Back to Top