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

Reply via email to