Skip Robinson wrote:
Not sure what's meant by having to chain CCWs. I just finished updating an
old RYO program that writes 80 byte records to any device specified
because I needed to test >32K blocks on tape. I merely added a DCBE with
BLKSIZE=0 and pointed to it in the existing DCB. No other changes. Created
a tape file with BLKSIZE=261760 (256K) (as reported by RMM) by specifying
that block size in JCL. No attempt at chaining, which I would not know how
to do anyway.
<snip>

There are two CCW bits, Chain Command (CC) and Chain Data (CD), that are used when chaining CCWs to construct a channel program. If I recall correctly, CC causes the next CCW's command to run and CD causes the data address part of the next CCW to be used to continue the operation started in a preceding CCW. No new SSCH is needed for the channel to process the chained CCWs. An entire channel program can run to completion with single start.

There are a variety of reasons to chain CCWs, among them performance (no redispatch is required to issue the next CCW), particularly for disk. "Simplicity" probably isn't one of them; thank goodness for access methods!

You can also used Program Controlled Interrupts (PCI) to dynamically append to a running channel program. Program Fetch does this for load modules, which have text records that vary in length. If the system has enough cycles to spare, you can get an entire load module with a single channel program this way, as the lengths are retrieved and used to build CCWs on the fly. If the system is too busy, the channel program ends and a new one is built to pick up where it left off until the entire module has been fetched.

I have not yet bothered to learn how any of this is done in transfer mode (with zHPF), which doesn't actually use CCWs...

--
John Eells
IBM Poughkeepsie

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to