Author: steve-myers
Subject: Re: Reply to: WER416B Error meaning
Posted: Thu Aug 11, 2016 12:35 pm (GMT 5.5)
There are two errors here.
This is actually quite correct for operations in z/OS. EXCP actually starts a function that is quite similar to a device driver in other platforms. It does, in a fairly literal sense, bend, fold, staple and mutilate the "channel program" provided to the EXCP macro by the programmer. Under the covers, this I/O driver actually issues a STARTIO macro (something us ordinary programmers can't do) to run the modified I/O instructions. After the I/O completes it transforms the I/O status into an analogue of the System/360 status before us ordinary programmers get control again.
To some extent it has always worked this way. In OS/360, as well as z/OS, us ordinary programmers might write this "channel program" to read a data record from a disk.
CCW is an Assembler instruction to prepare a data area for the I/O system. The first 2 instructions search a track for the correct record, the third instruction actually reads the record. These instructions are not complete; there are no instructions to direct the disk drive to move the access mechanism to the correct place, and there are other missing pieces. OS/360 EXCP would prepare
and effectively insert them before our channel program. There could be more CCWs, by the way. The first CCW directs the disk drive to move the I/O mechanism to the correct place; the second CCW provides limits on what the remaining CCWs can do.
Subject: Re: Reply to: WER416B Error meaning
Posted: Thu Aug 11, 2016 12:35 pm (GMT 5.5)
sergeyken wrote: |
... More precisely, EXCP is System/Z central processor machine instruction which initiates a specific Channel Program - the sequence of physical input/output instructions running separately on one of specific I/O processors; the name of those processors in System/Z is "I/O channel". |
There are two errors here.
- EXCP is actually an Assembler macro provided by IBM. It directs the system to run a "channel program," a sequence of instructions that direct the I/O hardware to perform I/O operations. Since there are no longer "channels" in the hardware, the term "channel" is a misnomer; it refers to 1960s I/O hardware. The machine instruction, which ordinary programmers cannot use, used to start an I/O operation is "Start Subchannel."
- I/O is now run by a separate processor.
Quote: |
Some equivalent for EXCP on other platforms is: the call to a device driver routine. |
To some extent it has always worked this way. In OS/360, as well as z/OS, us ordinary programmers might write this "channel program" to read a data record from a disk.
Code: |
CCW X'31',diskaddress,X'40',5 CCW X'08',*-8,0,0 CCW X'06',dataarea,0,length |
Code: |
CCW X'07',diskaddress,X'40',4 CCW X'1F',controlarea,X'40',1 |