On Mon, 5 Sep 2022 15:42:12 +0000 Seymour J Metz <[email protected]> wrote:

:>I don't understand.  SAVE_FILES is in #PRGAREA  , not in GETDIRD; why didn't 
LAY   R14,SAVE_FILES  fail?

Because

       USING (#PRGAREA,#E_RENT),R13

is still in effect.

:>________________________________________
:>From: IBM Mainframe Assembler List [[email protected]] on 
behalf of John Gateley [[email protected]]
:>Sent: Monday, September 5, 2022 10:37 AM
:>To: [email protected]
:>Subject: Re: Missing ASMA034E message
:>
:>I forgot all leading spaces would be removed. //// denotes leading spaces
:>
:> TITLE 'GETDIRD - Read file details from the SCHEMA'
:>////     SYSSTATE ARCHLVL=2
:>*   Change branch link to branch save, ensure clean 31 bit addresses
:>BAL        OPSYN BAS
:>BALR       OPSYN BASR
:>*
:>GETDIRD    START 0
:>GETDIRD    AMODE 31
:>GETDIRD    RMODE 24
:>*
:>////       YREGS
:>////       BRUL  BEGIN
:>@DATA      LOCTR ,
:>////       DC    CL10' GETDIRD'
:>////       DC    CL20'2022-08-31 15:38:37'
:>////       DS    0F
:>@CODE      LOCTR ,
:>BEGIN      DS    0H
:>////       STM   R14,R12,12(R13)     * save registers in caller
:>////       LARL  R12,GETDIRD         * get address of entry point
:>////       USING (GETDIRD,BEGIN),R12
:>////       LR    R9,R1               save parameter address
:>////       L     R2,#RENTSIZ
:>////       STORAGE OBTAIN,LENGTH=(R2),LOC=31
:>////       ST    R13,4(R1)           chain save areas
:>////       ST    R1,8(R13)
:>////       LR    R13,R2
:>////       USING (#PRGAREA,#E_RENT),R13
:>////       XC    R_C,R_C
:>////       XC    MY_PARM(LEN_MY_PARM),MY_PARM
:>////       BRAS  R14,MAIN_PART             * go to main code
:>////       BRU   #AFT_RENT                 * go to clean up
:>////       DS    0F
:>#PRGAREA       DSECT                       * DSECT overlays getmained
:>#SAVAREA       DS    18F
:>#SAV_REX       DS    4F
:>#SEG_SAV       DS    50F                   * segment save area
:>#BAS_SAV       DS    50F                   * segment base reg save
:>R_C            DS    F
:>DOUB_WORD      DS    D
:>MY_PARM        DC    24F'0'                * define call parm area
:>END_MY_PARM    EQU   *
:>LEN_MY_PARM    EQU   *-MY_PARM
:>SOME_PADDING   DS    633CL1
:>SAVE_DETS      DS    10CL80
:>MAX_INDENT     EQU   20
:>SAVE_INDENT    DS    (MAX_INDENT)CL10
:>MAX_FIELDS     EQU   2000
:>SAVE_FIELDS    DS    (MAX_FIELDS)CL116
:>MAX_FILES      EQU   2000
:>SAVE_FILES     DS    (MAX_FILES)CL8
:>#PRGAREA   DSECT
:>#E_RENT    EQU   *
:>*
:>GETDIRD    CSECT
:>#AFT_RENT  DS    0H                        * start of goback code
:>////       L     R0,#RENTSIZ
:>////       LR    R1,R13
:>////       L     R2,R_C
:>////       L     R13,4(R13)
:>////       ST    R2,16(R13)
:>////       STORAGE RELEASE,LENGTH=(R0),ADDR=(R1)
:>////       LM    R14,R12,12(R13)           * load callers + return code
:>////       BSM   0,R14                     * return to caller
:>*
:>MAIN_PART  ST    R14,#SEG_SAV+(4*0)           save return address
:>////       ST    R11,#BAS_SAV+(4*0)            save prev code base
:>////       BASR  R11,0                         set code base address
:>////       USING (*,#END_CBASE_1),R11
:>////       LA    R14,SAVE_FILES                incorrect
:>////       LAY   R14,SAVE_FILES                correct
:>////       L     R14,#SEG_SAV+(4*0)            load return address
:>#END_CBASE_1         DS    0H
:>////       L     R11,#BAS_SAV+(4*0)            restore segment base
:>////       DROP  R11
:>////       BR    R14
:>*
:>GETDIRD    CSECT
:>*
:>@DATA      LOCTR ,
:>##STATIC   DS    0D
:>#RENTSIZ   DC    AL4(#E_RENT-#PRGAREA)
:>GETDIRD    CSECT
:>////       DS    0D
:>////       LTORG
:>##STATIC_E     EQU   *
:>@CODE      LOCTR ,
:>GETDIRD    CSECT
:>////       LTORG
:>GETDIRD    CSECT
:>////       END

--
Binyamin Dissen <[email protected]>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel

Reply via email to