In a message dated 1/11/2007 12:17:11 A.M. Central Standard Time, alan_altmark @ US.IBM.COM writes: >I have just started getting >IOS000I 0339,5E,CMD,47,0E00,,00AC0000,volser,jobname, > > 8000000000AC0004042084000000000000000000FF010F0000004EA00000AC00 > > FAILING PARAMETER LIST DATA = 86800004 00AC0000 00AC000000 00 0000 > > Can someone suggest what sort of problem this might indicate? On Wed, 10 Jan 2007 16:16:14 -0800, Charles Mills <charlesm @ MCN.ORG> wrote: I'm not a dasd guru either, but it looks like its trying to read record 0 on cyl 172. Is that where the dataset is located? I think the CMDREJ is because the last two bytes are zero, but byte 1 bit 0 says that bytes 14 & 15 contain a non-zero value. My info is coming from an old 3880 book at http://www.bitsavers.org/pdf/ibm/dasd/GA26-1661- 9_3880_StorageCtrlDescr_Sep87.pdf, so no need to be a "modern dasd expert".
Sense byte 0 (x'80') tells you that there was a command reject. Sense byte 7 (x'04') tells you the reason for the command reject in the right nibble. Reason 4 means invalid parameter, which is why the next error message displays all the parameters. Unfortunately, a lot of educated guesswork and practical experience is often necessary to divine which parameter is wrong and why it is wrong. There are about 100 different reasons why you might have an invalid parameter error (or maybe even a lot more than 100). It would be really nice if IBM would provide another byte or two somewhere else in the vast amount of sense data that they generate that tells the precise reason for the invalid parameter, but they don't. The first byte (x'86') of parameters means to orient to the data area of the record whose ID matches the contents of bytes 8-12 (x'00AC000000') and then read the number of records contained in byte 3 (x'04'). The exact manner in which those records will be read is to be determined by the read CCWs that come after the locate record (x'47') command; i.e., they could be read CKD, read data, or other kinds of read commands. The x'80' in byte 1 means that bytes 14-15 will contain a non-zero value that is how many bytes will be read on each of the 4 following read commands. Bytes 14-15 contain x'0000', which will cause a command reject all by itself (there might be another reason, though, but probaby not if the CCW chain is built by QSAM). From the 2105 (ESS) Command Reference book: "Transfer Length Factor: When byte 1, bit 0 is ‘0’, bytes 14-15 must contain zeros; if bytes 14-15 are not zero, Locate Record is terminated with status that includes unit check (Command Reject, format X'04', Invalid Parameter)." Why do these bytes contain 0? Beats me. Perhaps you are trying to read a file whose Format 1 DSCB says the block size is 0, or maybe the F1 DSCB's values are being overridden with JCL that says //ddnamexyz DD DCB=BLKSIZE=0. Perhaps someone with more QSAM experience than I can explain the presence of the 0 in the transfer length factor field. To know if there were any other cause for the invalid parameter, I would have to see all the CCWs in the chain that precede this one. The 3880 book is indeed Jurassic, but the rules regarding locate record parameters have not changed since day one of ECKD, which was ca. 1983. Bill Fairchild ---------------------------------------------------------------------- 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

