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

Reply via email to