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
