Interesting tidbit of info on this code in the manual that Greg pointed me to:
This code works perfectly as written:
...
CHECK DECB1
LH WORK1,DCBBLKSI Block size at time of READ
L WORK2,DECB1+16 Status area address
SH WORK1,14(WORK2) WORK1 has block length
...
Of course being curious it looks to me that DECB+16 points to IOB Address
Then looking at the IOB DSECT (IEZIOB), 14 from the beginning = returned block
length.
14 from the beginning is accurate...from my dump.
However when trying to map this with IEZIOB, it seems to have wrong
displacement.
ORG IOBPREFX @L3A
SPACE 1
* **************************************@L3A
* * @L3A
* * NORMAL SCHEDULING PRE-PREFIX @L3A
* * *** 8 BYTES @L3A
* * @L3A
* **************************************@L3A
SPACE 1
IOBVIDAN DS F VIRTUAL IDAW FOR QSAM, BSAM, BPAM NORMAL @L3A
* SCHEDULING, BUFFER START ADDR @L3A
IOBVIDA2 DS 0F VIRTUAL IDAW WHEN NOT BEGINNING OF BUFFER,@L5C
* USED FOR UNIT RECORD DEVICES ONLY @L5C
IOBLENRD DS F LENGTH OF BLOCK READ, LBI @L5A
Instead of ORGing back to the beginning, it should ORG to IOBPREFX+8 to make
the displacement correct.
IOBLENRD should displace to 000C, but DSECT has it at 0004.
Thanks,
Tom Savor
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN