First of all, the buffer address specified on READ MF=E is an RX address, not
an indirect address.
So the read will overlay from IOBBUFF. That could cause strange results,
You would need
L Rx,IOBUFF
READ ADATADECB,SF,(R6),(Rx),'S',MF=E
Also, I do not understand why you use IHADECB in your work area rather than a
READ label,SF,1-1,2-2,'S',MF=L
which will reserve the storage of the appropriate size.
I would recommend against altering the DECB directly, as the READ macro takes
care of it.
Very strange to STORAGE OBTAIN,ADDR=(R7) followed by a LA R7
Back to the drawing board.
On Mon, 20 Mar 2023 09:20:39 -0400 Joseph Reichman <[email protected]>
wrote:
:> Hi
:>
:>
:>
:>I know Charles Mills answered my question nearly 4 weeks ago but I would
:>just like to corroborate the I/O areas for the read can be 31 bit addressing
:>only the dcb and decb need to be below the line
:>
:>I am running AMODE 31 RMODE 31
:>
:>
:>
:>The DCB is below the line as well as the DECB
:>
:>
:>
:>My read returns ok
:>
:>
:>
:>After I set a beak point after the CHECK I get As S0D9 ABEND with a SDUMP
:>
:>
:>
:>This the example that Charles sent to me does nt say anything about the
:>IOAREAS or pointers to the IOAREAS
:>
:>
:>
:>LA Rn,PDSDCB
:>
:>ST Rn,PDSDECB+8 PLACE DCB ADDRESS IN DECB
:>
:>L Rn,address of READ buffer
:>
:>READ PDSDECB,SF,,(Rn),MF=E CHECK PDSDECB
:>
:>
:>
:>
:>
:>
:>
:>
:>
:>This is my read
:>
:>
:>
:> READ ADATADECB,SF,(R6),IOBUFF,'S',MF=E
:>
:>
:>
:>The IOBUFF is a full word pointer to the storage I obtain
:>
:>
:>
:>
:>
:> Here is my code
:>
:>
:>
:> LA R0,IODSECTLEN
:>
:> STORAGE OBTAIN,LENGTH=(R0),ADDR=(R6),LOC=BELOW,SP=0
:>
:> LR R9,R6
:>
:> USING IHADCB,R9
:>
:> USING IODSECT,R6
:>
:> *
:>
:> *
:>
:> LA R7,SYSADATA
:>
:> MVC 0(IODSECTLEN,R6),0(R7)
:>
:> *
:>
:> LA R7,SYSDCBE-SYSADATA(,R6)
:>
:> ST R7,DCBDCBE
:>
:> LA R7,EX24LST-SYSADATA(,R6)
:>
:> STCM R7,B'0111',DCBEXLSA
:>
:> LA R7,ABND24-SYSADATA(,R6)
:>
:> STCM R7,B'0111',ABND24ADR-SYSADATA(R6)
:>
:> LA R7,ABENDRTN
:>
:> ST R7,ABEND31-SYSADATA(,R6)
:>
:> *
:>
:>T L R0,=F'31996'
:>
:> *
:>
:> STORAGE OBTAIN,LENGTH=(R0),ADDR=(R7),LOC=RES,SP=0
:>
:> * LA R7,IOAREA
:>
:> * ST R7,IOPTR
:>
:> *
:>
:> ST R7,IOBUFF
:>
:> MVC OPEN_LST(OPEN_LEN),OPEN_CON
:>
:> OPEN ((R6),INPUT),MF=(E,OPEN_LST),MODE=31
:>
:> *
:>
:> TM DCBOFLGS,DCBOFOPN
:>
:> BZ EXITDEBG
:>
:> USING ASMADATA,R7
:>
:> L R10,IOBUFF
:>
:> PROCADATA DS 0H
:>
:> READ ADATADECB,SF,(R6),IOBUFF,'S',MF=E
:>
:> *
:>
:> CHECK ADATADECB
:>
:> *
:>
:>OPEN_CON OPEN (*-*,INPUT),MF=L,MODE=31
:>
:>SYSADATA DCB DDNAME=SYSADATA,RECFM=VB,MACRF=RP,DSORG=PS,DCBE=SYSDCBE,EXX
:>
:> LST=EX24LST
:>
:>
:>
:> IHADECB DSECT=NO
:>
:>DECBLEN EQU *-DECB
:>
:>SYSDCBE DCBE EODAD=FIN,GETSIZE=YES,LOC=ANY,RMODE31=BUFF,SYNAD=SYNAD,VEX
:>
:> RSION=1
:>
:>EX24LST DS 0F
:>
:>ADATAEXLST DC AL1(EXLDCBAB+X'80')
:>
:>ABND24ADR DS AL3
:>
:>ABND24 DS 0H
:>
:> L R15,ABEND31-SYSADATA(,R15)
:>
:> BSM 0,R15
:>
:>ABEND31 DS XL4
:>
:>STROGE24 EQU *-EX24LST
:>
:>*
:>
:> IODSECT DSECT
:>
:>ADATADCB DS CL(DCBLNGBS)
:>
:>ADATADECB DS CL(DECBLEN)
:>
:>ADATADCBE DS CL(DCBELENV1)
:>
:> DS 0F
:>
:>INST31 DS CL(STROGE24)
:>
:>IODSECTLEN EQU *-IODSECT
--
Binyamin Dissen <[email protected]>
http://www.dissensoftware.com
Director, Dissen Software, Bar & Grill - Israel
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN