Hi Jonathan

I will try to find out how to raise a support case, in the meantime this is as 
short as I can make it.

John

 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

Reply via email to