Thanks
                                         
 MVC   0(IODSECTLEN,R6),SYSADATA         
                                         
 LA    R7,SYSDCBE                        
 ST    R7,DCBDCBE                        
 LA    R7,EX24LST                        
 STCM  R7,B'0111',DCBEXLSA               
 LA    R7,ABND24                         
 STCM  R7,B'0111',ABND24ADR-SYSADATA(R6) 
 LA    R7,ABENDRTN                       
 ST    R7,ABEND31-SYSADATA(,R6)          
                                         

-----Original Message-----
From: IBM Mainframe Discussion List <[email protected]> On Behalf Of
Seymour J Metz
Sent: Monday, March 20, 2023 11:07 AM
To: [email protected]
Subject: Re: BSAM READ AMODE 31 RMODE 31

That doesn't explain why you had LA R7 in places where you didn't need a
pointer, 

          LA    R7,SYSADATA
          MVC   0(IODSECTLEN,R6),0(R7)

Instead of the clearer

          MVC   0(IODSECTLEN,R6),SYSADATA

Side issue are why you had separate moves for initialization instead of one
big move and why you didn't just use symbolic names in your E-form macros
instead of register form parameters with an otherwise extraneous LA.

You might want to read up on dependent and labelled USING pseudo-ops.

Only the WAIT service should be storing an RB address in an ECB; the ECB
that you provide in the DECB should initially have a high bit of 0. Also,
the completion code is 31 bits, and a lot of system services have codes with
the lower 24 bits zero or containig a context for the code in bits 0-7. In
particular, Many services use 7F in the high byte for normal completion.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3

________________________________________
From: IBM Mainframe Discussion List [[email protected]] on behalf of
Joseph Reichman [[email protected]]
Sent: Monday, March 20, 2023 10:10 AM
To: [email protected]
Subject: Re: BSAM READ AMODE 31 RMODE 31

Ok

Thanks
The reason I had the LA R7

I first had to get 24 bit storage for 1) dcb 2) decb though I realize it can
live in 31 bit
3) decb it has to live in 31 bit 4) initial exit code has to be 24 bit

Once moved I had to get the proper pointers
24 bit pointers for exlst , decb

Let me corroborate I understand why I got the error

After the read the first full word should be for the ECB so the low order
should have an RB Or if it already posted should have the first byte x'40'
followed by completion code which could be zeros what a saw in the ECB
address was the first byte x'7F'

Anyway I have to fix the read thank you

> On Mar 20, 2023, at 9:52 AM, Binyamin Dissen <[email protected]>
wrote:
>
> 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://secure-web.cisco.com/1k7iuP-MpHfkEeviZsLEOvJ_MMv-EjqmY_0lxXY1Pp
> _66i5LWKD0RJujd93TrMEqU63byPahnsk9XNMu-lp-Vh4V7B7UAR-9GmTTnGI2I0MzJsf3
> _C_vlqghTkxyKmxJmO3ABRCGC09PNhuoGnkDs88DJn4WbVoiWCKtcve-KkwlQy9yuE4Ney
> sq7w9DypZlafB6pm49qBXwQruyMU_e5-DqJTHOuG8LtDQ0M_EC9ROLTJh8rin-CX06V9rS
> HtdxcVeS6te8d4v7eaG900HQnQJe3JAqljGEquahMztXZmH6j5ywxOD5Wx5LV2bWV96ZqR
> vTp1HQUuf6RRCRh4jpWGyYx3dsMOGrif5-qJk-JH3Gc64MJvIXXhnqUZ1UQYjbuAfLmUaJ
> B3wMSwZ71yxIJOWZs1pKytwbyIhvEt-cpkq4/http%3A%2F%2Fwww.dissensoftware.c
> om
>
> 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

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email
to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email
to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to