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