I inherited a set of programs one of which is assembler and runs as a
subroutine which is called by a COBOL main program.  Here is a snippet from
the assembler routine which is linkied AMODE(31) RMODE(24) -

          L     R4,CZW3IOAA             ...SETUP ADDR OF IOAREA
          L     R5,CZW3DCBA             ...SETUP ADDR OF DCB
          LA    R8,DOGETS               SET UP 24 BIT ADDRESS
          LA    R9,DOGETE               STORE CURR AMODE AND RET ADDR
          BSM   R9,R8                   SWITCH AMODE TO 24 BIT
 DOGETS   GET   (R5),(R4)
+DOGETS   LR    1,R5                              LOAD PARAMETER REG
+         LR    0,R4                              LOAD PARAMETER REG
+         SLR   15,15                    CLEAR REGISTER             @
+         ICM   15,7,49(1)               LOAD GET ROUTINE ADDR      @
+         BALR  14,15                    LINK TO GET ROUTINE
          BSM   0,R9                    SWITCH AMODE BACK TO 31 BIT
 DOGETE   EQU   *

When the COBOL program is linked AMODE(ANY) RMODE(24) it runs fine, but when
the COBOL program is linked AMODE(31) RMODE(ANY) the assembler subroutine
abends with a 0C4 abend on the first BSM instruction above.

Jim McAlpine

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to