Page 2 of 2

Re: what's the mean of HSA LSA WD1?

PostPosted: Tue Nov 20, 2012 11:42 am
by bobguo
or can you tell me, under what conditions, LSA has to be used?

Re: what's the mean of HSA LSA WD1?

PostPosted: Tue Nov 20, 2012 6:21 pm
by steve-myers
You should always use LSA, for the reason given. Yes, you can trace back starting with reg 13, but the dump program only follows the HSA chain for 1 save area. Try running the following job. It illustrates the strengths and weknesses of the dump program's save area trace. For what it's worth, ABEND actually uses the SNAP macro to write its dumps; the miniature dumps in the SNAP output just shows the minimum useful data for the save areas.
//A       EXEC PGM=ASMA90,PARM='OBJECT,NODECK,XREF(SHORT)'
//SYSPRINT DD  SYSOUT=*
//SYSLIB   DD  DISP=SHR,DSN=SYS1.MACLIB
//SYSLIN   DD  DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(1,1)),
//             DCB=(RECFM=FB,LRECL=80,DSORG=PS)
//SYSIN    DD  *
MINILINK CSECT                     DEFINE PROGRAM CSECT
         SAVE  (14,12),,*          SAVE REGISTERS
         CNOP  0,4
         BAS   15,INITSAVE-MINILINK(,15)  BR AROUND SAVE AREA AND     ->
                                           STORE NEW SAVE AREA ADDR   ->
                                            IN REG 15
         USING *,13                ESTABLISH PROGRAM ADDRESSABILITY
         DC    18F'0'              NEW SAVE AREA
INITSAVE ST    13,4(,15)           ADD NEW SAVE AREA TO THE
         ST    15,8(,13)            SAVE AREA CHAIN
         LR    13,15               ESTABLISH NEW SAVE AREA POINTER
         OPEN  (SNAPDCB,OUTPUT)    OPEN THE DCB
         SNAP  MF=(E,SNAPPARM)     SNAP THE SAVE AREAS
         BAS   14,SUB01            CALL A SUBROUTINE
         SNAP  MF=(E,SNAPPARM),ID=5  SNAP THE SAVE AREAS
         CLOSE SNAPDCB             CLOSE THE DCB
         L     13,4(,13)           LOAD ADDR OF THE HIGHER SAVE AREA
         RETURN (14,12),T,RC=0     RESTORE REGS & RETURN
SNAPDCB  DCB   DSORG=PS,MACRF=W,DDNAME=SNAP,RECFM=VBA,LRECL=125,      ->
               BLKSIZE=1632
SNAPPARM SNAP  MF=L,PDATA=(PSW,REGS,SA),DCB=SNAPDCB,ID=1  SNAP PARMS
         DROP  ,                   KILL ADDRESSABILITY
         CNOP  0,8
SUB01    BASR  15,0                STORE CURRENT ADDRESS IN REG 15
SUB01X   EQU   *
         SAVE  (14,12),,SUB01      SAVE THE REGISTERS
         CNOP  0,4
         BAS   15,SUB01Y-SUB01X(,15)  BR AROUND THE NEW SAVE AREA
         USING *,13                ESTABLISH ADDRESSABILITY
         DC    18F'0'
SUB01Y   ST    13,4(,15)           ADD NEW SAVE AREA TO THE
         ST    15,8(,13)            SAVE AREA CHAIN
         LR    13,15               ESTABLISH THE NEW SAVE AREA POINTER
         L     2,=A(SNAPPARM)      LOAD ADDR OF THE SNAP PARM LIST
         SNAP  MF=(E,(2)),ID=2     SNAP THE SAVE AREAS
         BAS   14,SUB02            CALL THE NEXT SUBROUTINE
         L     13,4(,13)           LO
         RETURN (14,12),T
         DC    0D'0'
         LTORG ,
         CNOP  0,8
SUB02    BASR  15,0
SUB02X   EQU   *
         SAVE  (14,12),,SUB02
         CNOP  0,4
         BAS   15,SUB02Y-SUB02X(,15)
         USING *,13
         DC    18F'0'
SUB02Y   ST    13,4(,15)           ADD NEW SAVE AREA TO THE
         ST    15,8(,13)            SAVE AREA CHAIN
         LR    13,15               ESTABLISH THE NEW SAVE AREA POINTER
         L     2,=A(SNAPPARM)
         SNAP  MF=(E,(2)),ID=2
         BAS   14,SUB03
         L     13,4(,13)
         RETURN (14,12),T
         DC    0D'0'
         LTORG ,
         CNOP  0,8
SUB03    BASR  15,0
SUB03X   EQU   *
         SAVE  (14,12),,SUB03
         CNOP  0,4
         BAS   15,SUB03Y-SUB03X(,15)
         USING *,13
         DC    18F'0'
SUB03Y   ST    13,4(,15)           ADD NEW SAVE AREA TO THE
         ST    15,8(,13)            SAVE AREA CHAIN
         LR    13,15               ESTABLISH THE NEW SAVE AREA POINTER
         L     2,=A(SNAPPARM)
         SNAP  MF=(E,(2)),ID=3
         BAS   14,SUB04
         L     13,4(,13)
         RETURN (14,12),T
         DC    0D'0'
         LTORG ,
         CNOP  0,8
SUB04    BASR  15,0
SUB04X   EQU   *
         SAVE  (14,12),,SUB04
         CNOP  0,4
         BAS   15,SUB04Y-SUB04X(,15)
         USING *,13
         DC    18F'0'
SUB04Y   ST    13,4(,15)           ADD NEW SAVE AREA TO THE
         ST    15,8(,13)            SAVE AREA CHAIN
         LR    13,15               ESTABLISH THE NEW SAVE AREA POINTER
         L     2,=A(SNAPPARM)
         SNAP  MF=(E,(2)),ID=4
         L     13,4(,13)
         RETURN (14,12),T
         DC    0D'0'
         LTORG ,
         END   MINILINK
//B       EXEC PGM=IEWL,COND=(0,NE),PARM=MAP
//SYSPRINT DD  SYSOUT=*
//SYSLMOD  DD  DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(1,1,1)),DSN=&&GO(GO)
//SYSLIN   DD  DISP=(OLD,DELETE),DSN=*.A.SYSLIN
//C       EXEC PGM=*.B.SYSLMOD
//SNAP     DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*

Re: what's the mean of HSA LSA WD1?

PostPosted: Wed Nov 21, 2012 12:18 pm
by bobguo
thanks very much.

do you have some materials which describle these macros in detal? such as SNAP WTO...
i locates in shanghai, can't use google...if you have, could you please give me one link?
Happy Thanksgiving.

Re: what's the mean of HSA LSA WD1?

PostPosted: Wed Nov 21, 2012 12:37 pm
by enrico-sorichetti

Re: what's the mean of HSA LSA WD1?

PostPosted: Fri Nov 23, 2012 8:11 am
by steve-myers
SNAP and WTO are in z/OS MVS Assembler Services Reference IAR-XCT for your z/OS release.

Re: what's the mean of HSA LSA WD1?

PostPosted: Sat Nov 24, 2012 1:43 pm
by bobguo
thanks steve.

the codes your provided i have read, i noticed that the program use HSA to get father program' SA, while,
I really can't catch where LSA was used, though i just noticed LSA was saved in SA
please give me a briefly explain about LSA's purpose in this program. thanks