Page 1 of 1

AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 11:11 am
by xboss
I am trying to implement paging in CICS using TSQ, haven't finished writing code for PF7 and PF8 yet. I am getting AEYD abend when trying to do readq

EXEC CICS READQ TS QUEUE('YYYYYYYY') INTO(TSREC) C
LENGTH(TSLENG) ITEM(1) RESP(AAARESP)

Below is my code,
         TITLE 'MAP PAGING'
         PRINT GEN
*
         DFHREGS
         COPY  DFHAID
         COPY  DFHBMSCA
         EJECT
         DFHEISTG
CVDARESP DS    F                  EIBRESP CVDA
MAPAREA  DS    0X
*
TSREC    DS    0H                      TEMPORARY STORAGE QUEUE
         COPY  BMSMAP1
TSLENG   EQU   *-TSREC                 TSQ LENGTH
*
MAPAREAE DS    0X
*
COMMAREA DS    0H                 COMMAREA
CURRPAGE DS    H                  CURRENT PAGE
NUMPAGES DS    H                  TOTAL NUMBER OF PAGES
CMLEN    EQU   *-COMMAREA         COMMAREA LENGTH
*
PAGENO   DS    H
TRANSID  DS    CL4
LEN1     DS    H
ACCESS   DS    D
COMM_ARR DS    CL80
WTO_PRNT DS    CL80
PROGRAMN DS    CL8
DOUBLE   DS    D
VALUE    DS    D
AAARESP  DS    F
AAARESP2 DS    F
TERM_ID  DS    CL4
ACCESS_M DS    F
M_PROG   DS    CL8
M_LENG   DS    CL2
M_VALU   DS    CL60
         DS    F
         EJECT
*******************************************************************
*   START OF PROGRAM                                              *
*******************************************************************
XXXXXXXX DFHEIENT CODEREG=3,DATAREG=13,EIBREG=11
XXXXXXXX AMODE 31
XXXXXXXX RMODE ANY
         CLI   EIBAID,DFHPF3                   CHECK IF PF3 KEY
         BE    CLEARS                          PF3 ENTER GO CLEARS
         CLI   EIBAID,DFHPF15
         BE    CLEARS
         CLI   EIBAID,DFHCLEAR                 CHECK IF CLEAR KEY
         BE    END                             IF YES GO END
*
* CHECK IF PROGRAM EXISTS
CHKPROG  EQU  *
* SPACING OUT COMM_ARR AND WTO_PRINT
         MVI  COMM_ARR,C' '
         MVC  COMM_ARR+1(L'COMM_ARR-1),COMM_ARR
* ENDS SPACING
         EXEC CICS INQUIRE                                             C
                 PROGRAM(PROGRAMN)                                     C
                 RESP(AAARESP)                                         C
                 RESP2(AAARESP2)
         CLC  AAARESP,DFHRESP(NORMAL)
         BNE  NOFOUND                      BRANCH IF PROGRAM NOT FOUND
         EXEC CICS LINK PROGRAM(PROGRAMN)                              C
               COMMAREA(COMM_ARR)                                      C
               LENGTH(70)
         XR   R10,R10
         MVC  LEN1(2),COMM_ARR+8
*   FORMATTING LENGTH (LEN) FROM HEX TO EBCDIC
         LH   R10,COMM_ARR+8
         CVD  R10,DOUBLE
         OI   DOUBLE+L'DOUBLE-1,X'0F'
         UNPK VALUE,DOUBLE
         MVC  LEN1(2),VALUE+6
*   END FORMATTING
         MVC  3(8,R8),COMM_ARR             MAP PROGRAM NAME
         MVC  14(2,R8),LEN1                MAP DATA LEGNTH
         MVC  19(60,R8),COMM_ARR+10        MAP DATA VALUE
         BR   R7
NOFOUND  EQU  *
         MVC  3(8,R8),PROGRAMN            MAP PROGRAM NAME
         MVC  14(2,R8),=X'4040'            MAP LEN SPACED OUT
         MVC  19(11,R8),=C'***PGMIDERR' MAP DATA VALUE
         BR   R7
***********************************************************
***********************************************************
SEND_MAP EQU  *
         EXEC CICS DELETEQ QUEUE('YYYYYYYY')
         LA   R4,PRGTBL
         LA   R5,PRGTBLE          LOOP TIMES
         LA   R6,1               PAGE COUNTER SET
         STH  R6,PAGENO
MAP_CNT  EQU  *
         LA   R9,0                PAGING LOOP
         LA   R8,PRG_N01L         ENTRY ADDRESS OF MAP DATA TABLE
         EXEC CICS INQUIRE SYSTEM                                      C
                   JOBNAME(REGIONNO)
         MVC  TRANIDO,EIBTRNID
LOOP_MAP EQU  *
         LA   R9,1(R9)                    INCREMENTING LOOP
         MVC  PROGRAMN,0(R4)              GET PROGRAM NAME
         BAL  R7,CHKPROG
         LA   R4,PRGTBLL(,R4)             NEXT PROGRAM ADDRESS
         LA   R8,79(R8)                   NEXT MAP ADDRESS
         C    R9,=F'14'
         BNE  CONTINUE
WRITETS  EQU   *
         EXEC  CICS WRITEQ TS QUEUE('YYYYYYYY') FROM(TSREC)            C
                 LENGTH(TSLENG) ITEM(PAGENO)
         LA    R6,1(R6)
         STH   R6,PAGENO
         BCT   R5,MAP_CNT
CONTINUE EQU   *
         BCT   R5,LOOP_MAP
         LA    R5,PRGTBLE
         M     R4,=F'1'
         D     R4,PAGEITM
         C     R4,ZERO
         BE    SET_PAGE
         EXEC  CICS WRITEQ TS QUEUE('YYYYYYYY') FROM(TSREC)            C
                 LENGTH(TSLENG) ITEM(PAGENO)
SET_PAGE EQU   *
         STH   R6,NUMPAGES
         LA    R6,1
         STH   R6,PAGENO
         STH   R6,CURRPAGE
         B     LOAD_MAP
LOAD_MAP EQU   *
         EXEC  CICS READQ TS QUEUE('YYYYYYYY') INTO(TSREC)             C
                  LENGTH(TSLENG) ITEM(1) RESP(AAARESP)
         CLC   AAARESP,DFHRESP(NORMAL)
         BNE   END
         EXEC  CICS SEND                                               C
               MAP('BMSMAP1')                                          C
               MAPSET('BMSMAP1')                                       C
               FREEKB                                                  C
               ERASE                                                   C
               FROM(TSREC)                                             C
               LENGTH(TSLENG)                                          C
               RESP(AAARESP)                                           C
               NOHANDLE
RETURNC  EXEC  CICS RETURN                                             C
               COMMAREA(COMMAREA)                                      C
               LENGTH(CMLEN)                                           C
               TRANSID(EIBTRNID)
CLEARS   EQU   *
         EXEC  CICS SEND CONTROL ERASE
         EXEC  CICS SEND TEXT FROM (SESSENDS) LENGTH(17)
END      EQU   *
         EXEC  CICS RETURN
         EJECT
***********************************************************************
*** CONSTANTS                                                       ***
***********************************************************************
PRGTBL   DS    0F
         DC    C'AAAAAAAA'
PRGTBLL  EQU  *-PRGTBL
         DC    C'BBBBBBBB'
         DC    C'CCCCCCCC'
         DC    C'DDDDDDDD'
         DC    C'EEEEEEEE'
         DC    C'FFFFFFFF'
         DC    C'GGGGGGGG'
         DC    C'HHHHHHHH'
         DC    C'IIIIIIII'
         DC    C'JJJJJJJJ'
         DC    C'KKKKKKKK'
         DC    C'LLLLLLLL'
         DC    C'MMMMMMMM'
         DC    C'NNNNNNNN'
         DC    C'OOOOOOOO'
         DC    C'PPPPPPPP'
         DC    C'QQQQQQQQ'
         DC    C'RRRRRRRR'
         DC    C'SSSSSSSS'
         DC    C'TTTTTTTT'
    DC    C'UUUUUUUU'
    DC    C'VVVVVVVV'
    DC    C'WWWWWWWW'
PRGTBLE  EQU   (*-PRGTBL)/PRGTBLL
SESSENDS DC    CL17'SESSION ENDS'
LEN2     DC    F'9'
PAGEITM  DC    F'14'
ZERO     DC    F'0'
         END

Any help or direction would be much appreciated.

Re: AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 1:12 pm
by Monitor
I beleive EDF will help you finding the problem. You should be able to tell from the displays, if any adress/reference in the Writeq TS-command is invalid, but you will have to press F2 first to se adresses.

Re: AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 7:39 pm
by xboss
Monitor, I did run CEDX against the transaction and my abending step was when trying to readq. But I can successfully read the queue with CECI command ,

CECI READQ TS QUEUE('YYYYYYYY') ITEM(1)

Re: AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 7:50 pm
by Monitor
Yes, but did you check what I mentioned for the Readq ? (Not Writeq!!)

Re: AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 8:23 pm
by xboss
Yes, below is the address CICS writeq and readq
 STATUS:  ABOUT TO EXECUTE COMMAND                                           
 EXEC CICS WRITEQ TS                                                         
  QUEUE ('YYYYYYYY')                                                         
  FROM ('...............TRAN...RGNNAMES...AAAAAAAA...18...TEST REGION ON LPAR'...)
  LENGTH (1086)                                                               
  ITEM (1)                                                                   
  AUXILIARY                                                                   


 EXEC CICS WRITEQ TS                                                           
  QUEUE (X'E8E8E8E8E8E8E8E8')                                    AT X'001BB8B6'
  FROM (X'000000000000000000000000000000..................'...)  AT X'0010019C'
  LENGTH (X'043E')                                               AT X'001BB8C0'
  ITEM (X'0001')                                                 AT X'00100660'
  AUXILIARY                                                                                                                                     


EXEC CICS WRITEQ TS                                                         
 QUEUE ('YYYYYYYY')                                                         
 FROM ('...............TRAN...RGNNAMES...CCCCCCCC...  ...***PGMIDERRon H'...)
 LENGTH (1086)                                                               
 ITEM (2)                                                                   
 AUXILIARY                                                                   

 EXEC CICS WRITEQ TS                                                           
  QUEUE (X'E8E8E8E8E8E8E8E8')                                    AT X'001BB8B6'
  FROM (X'000000000000000000000000000000..................'...)  AT X'0010019C'
  LENGTH (X'043E')                                               AT X'001BB8C0'
  ITEM (X'0002')                                                 AT X'00100660'
  AUXILIARY                                                                                               

 EXEC CICS WRITEQ TS                                                         
  QUEUE ('YYYYYYYY')                                                         
  FROM ('...............TRAN...RGNNAMES...QQQQQQQQ...  ...***PGMIDERRon H'...)
  LENGTH (1086)                                                               
  ITEM (3)                                                                   
  AUXILIARY                                                                     

 EXEC CICS WRITEQ TS                                                           
  QUEUE (X'E8E8E8E8E8E8E8E8')                                    AT X'001BB8B6'
  FROM (X'000000000000000000000000000000..................'...)  AT X'0010019C'
  LENGTH (X'043E')                                               AT X'001BB8C0'
  ITEM (X'0003')                                                 AT X'00100660'
  AUXILIARY 


 EXEC CICS READQ TS                                                           
  QUEUE ('YYYYYYYY')                                                         
  INTO ('...............TRAN...RGNNAMES...QQQQQQQQ...  ...***PGMIDERRon H'...)
  LENGTH (1086)                                                               
  ITEM (1)                                                                   
  NOHANDLE                                                                   



 EXEC CICS READQ TS                                                           
  QUEUE (X'E8E8E8E8E8E8E8E8')                                    AT X'001BB8B6'
  INTO (X'000000000000000000000000000000..................'...)  AT X'0010019C'
  LENGTH (X'043E')                                               AT X'3CBF9EA8'
  ITEM (X'0001')                                                 AT X'001BB8C0'
  NOHANDLE

 
STATUS:  AN ABEND HAS OCCURRED
EIBAID       = X'7D'                                         AT X'3BC300EA'
EIBFN        = X'0A04'  READQ                                AT X'3BC300EB'
EIBRCODE     = X'000000000000'                               AT X'3BC300ED'
ABEND :   AEYD

Re: AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 10:40 pm
by Monitor
I am a bit confused abut some information: The lentgh variable in the read is suddenly on a high address, The readq doesnt say Auxiliary. I dont no why. The only difference in your command is that you have the RESP option coded on the Readq, but this shouldnt mean anything I suppose. I think the problem has a relation to the CMDPROT=/YES/NO ( SIT).
I would remove the Resp for a test, also write Auxiliary on the Readq on the next test!

Re: AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 11:18 pm
by Monitor
The root to the problem is that CICS wants to write the actual length of a TS-item in the lentgh-variable. There is probably an error in the way you have coded this variable. I beleive it should be coded as TSLEN DS to have the variable placed in the read/write-able storage. With your coding the variable is put in statis storage. Thats probably why the address is different. Try change this to DS with a value, and your problem is hopefully solved. For your information, I am not an assembler programmer.

Re: AEYD abend when trying to read from TSQ

PostPosted: Wed Jul 24, 2013 11:27 pm
by xboss
You were absolutely right, Monitor. Thats what I did. Took TSLEN from static storage and put it in DS which fixed the issue.