This brings to mind on old issue I had at a previous employer.

The issue came down to inappropriate defintions of numeric fields and
data conversion.

First the subscripts were display format. This caused the folloing
sequence of instructions to 
be executed for each iteration of the subsript (perform varying).
PACK
CVB
Add 1 to subscript
CVD
UNPACK.

Likewise each reference to the subscript caused (at least) the following
(move zeroes to field(subscript).
PACK
CVB
Use in reference

To make matters eve worse, the targets of the subscript were also
display (field (subsrcript).

When the field defintions were changed to packed or binary
representations as appropriate,
The program went from consuming 50-60% of a 370-138 to 5% of the same
machine.

The instruction sequences became (respectively)
L (or ICM) subscript into register
Add 1 
STORE 

Use in reference



Granted this was done on old harware, but the principle is the same.
Verify your data descriptions
Are appropriate for the logic used.

Also if this is code execution on a z/nnnn box, remember the 256 byte
data path.
References to code & data within 256 bytes of each other cause the CPU
cache to be flushed
and the data re-fetched, resulting in increased CPU time.

Feel free to contact me off-list if needed,
Al



Alan Schwartz wrote:
<snip>
Greetings group.  We have a bit of a puzzlement here and we're hoping
someone can shed a little light on this.

We've got an application that is working on becoming 31-bit capable.  We
got involved when they had a program using more cpu than before.  By
equalizing the compile options and re-compiling changing only one option
at a time we found that the slower program used
DATA(31) and the faster program used DATA(24).  All other Cobol options
are the same and the files used are the same! 

We've sent listings to IBM but so far we haven't come to a resolution.
IBM has compared the execution code between the two compiled versions of
the main program and they are indicating that there is NO difference in
the instructions executed.  The IBM techie is indicating that he thinks
programs that are being called by the main program may be the culprit.

We've Strobed both runs but the results are confusing/misleading so
we've sent them to Compuware (and IBM) for assistance in analyzing them
(nothing back yet).

All testing is on z/OS 1.4 with Enterprise Cobol 3.2.   The only modules
statically linked are LE routines and they are all RMODE ANY and 
AMODE(ANY/31).
The main program does call a number of other modules which are all 
Amode(31) 
and a mix of Rmode ANY/24.
</snip>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to