*DECK ERDSRM
          IDENT     ER$SRM
*#
*1CD  THE ER$SRM SUBPROGRAM 
*0D   PURPOSE 
*0        PROVIDE SYMPL INTERFACE TO CRM COMMON ERROR PROCESSOR 
*0D   CALLING SEQUENCE
*0    ER$SRM (FIT,ES,FNF,INA,EES,DME,SES);
*0D   PARAMETERS
*0        FIT       THE FIT (ARRAY NAME)
*         ES        MESSAGE CODE
*         FNF       1=FATAL ERROR 
*         INA       ADDRESS OF THE MESSAGE INSERT LIST (NO LIST IF ZERO)
*         EES       1=ERROR EXIT SUPPRESS 
*         DME       1=CALL FROM DATA MANAGER
*         SES       PARITY ERROR SEVERITY 
*0D   ACTIONS 
*0        PACK ALL PARAMETERS INTO X6 UNTIL MAXIMUM PARAMETERS IS 
*         REACHED OR ZERO IN APLIST IS ENCOUNTERED.  IF THERE WERE NO 
*         PARAMETERS ENTER ERR$RM TO TAKE THE ERROR EXIT WITH 
*         NO OTHER PROCESSING.  SET B5 TO THE CALLER RETURN ADDRESS 
*         EXTRACTED FROM THE RJ ENTRY WORD.  EXTRACT THE INA FROM THE 
*         CONSTRUCTED PARAMETER WORD.  IF THE CONTENT OF THAT ADDRESS IS
*         ZERO ENTER ERR$RM.  SET B4 TO THE INSERT ADDRESS
*         AND SET THE INSERT FLAG IN THE PARAMETER WORD.  ENTER ERR$RM
*         IN MISC$RM TO PROCESS THE CONDITION.
*0D   REGISTERS 
*0        NOT APPLICABLE
*0D   OTHER CODE REQUIRED 
*0        MACROS-   NONE
*         PROGRAMS- ERR$RM
*#
          LIST      F,X 
          COMMENT   CRM COMMON ERROR PROCESSOR (SYMPL INTERFACE)
          SST 
          B1=1
* CALL /EPCOM/
*CALL /EPCOM/ 
          ENTRY     ER$SRM
          USE       MASKS 
 PARMSK   BSS       0 
          USE       * 
 PARMAP   BSS       0 
 PCOUNT   SET       0 
          ECHO      5,PAR=(ES,FNF,INA,EES,DME,SES)
 PCOUNT   SET       PCOUNT+1
          VFD       6/60-PAR_.P-PAR_.S
          USE       MASKS 
          VFD       6/60-PAR._S-1 
          USE       * 
          SPACE     1 
 ER$SRM   EQ        *+1S17
          SX6       A0
          SA6       SAVA0 
          SB1       1B
          SX5       1000B          MASK FOR NOTE FLAG 
          SA3       A1+B1          ES PARAMETER ADDRESS 
          SA2       X1             FIRST PARAMETER
          SA3       X3             ES VALUE 
          SB3       PCOUNT         MAXIMUM PARAMETERS 
          BX6       X5*X3          EXTRACT NOTE FLAG
          SA0       X2             FIT ADDRESS
          LX6       60-NTE.P-NTE.S-ES.S  INITIALIZE PARAMETER WORD
          MX4       54             FIELD POSITION MASK
          SA3       PARMAP         PARAMETER FIELD POSITIONS LIST 
          SA5       PARMSK
 APL      BSS       0 
          SA1       A1+B1          LOAD NEXT PARAMETER ADDRESS
          LX3       6 
          LX5       6 
          ZR        X1,APEND       IF END OF PARAMETERS 
          BX2       -X4*X5         EXTRACT MASK COUNT 
          SB2       X2
          MX0       1 
          BX7       -X4*X3         EXTRACT SHIFT COUNT
          SA2       X1             LOAD PARAMETER 
          AX0       X0,B2          FORM MASK
          SB2       X7
          BX2       -X0*X2         REMOVE ANY EXCESS
          LX0       X2,B2          POSITION PARAMETER VALUE 
          SB3       B3-B1          DECREMENT PARAMETER COUNT
          BX6       X6+X0          OR INTO PARAMETER WORD 
          NE        B3,B0,APL      IF MORE PARAMETERS 
 APEND    BSS       0 
          SB3       B3-PCOUNT 
          ZR        B3,EXCRM       IF NO PARAMETERS 
          SX5       ERRETURN
          SB2       INA.P+INA.S 
          LX1       X6,B2          POSITION INSERT LIST ADDRESS 
          SB3       X1             ISOLATE INSERT LIST ADDRESS
          ZR        B3,=YERR$RM    IF NO INSERTS
          MX0       59
          LX0       60-INF.P-INF.S
          BX6       -X0+X6         SET INSERT FLAG
          EQ        =YERR$RM       GO PROCESS THE CONDITION 
 EXCRM    BSS       0 
          MX6       0              JUST TAKE ERROR EXIT 
          EQ        =YERR$RM
ERRETURN  BSS       0 
          SA1       SAVA0 
          SA0       X1
          EQ        ER$SRM         RETURN TO SYMPL
SAVA0     BSS       1 
          END 
