PROC MLIF(APPL$NAME,MAX$MSGS,UNIQ$NAME, PARTNER$NAME,ARB$INFO,
      SIGNAL   , WSA,MSG$LEN,WSA$LEN, RCV$INDEX,FETCH$CNT,FRL$LIST,
      RSTATUS);
      BEGIN  # MLIF #

#  THE FOLLOWING SYMPL DEFINITION OF ARRAY MLIPAR MIRRORS THE         #
#  THE COMPASS DEFINITION THAT IS FOUND IN COMMON DECK COMSMLI        #

      XREF
        ARRAY MLIPAR [0,0] S(14);    # MLI REQUEST BLOCK #
        BEGIN
        ITEM MLPAN      U(0,0,60);   # APPLICATION NAME #
        ITEM MLPSN      U(1,0,60);   # SENDER APPLICATION NAME #
        ITEM MLPST      U(2,0,60);   # STATUS RETURN ADDRESS #
        ITEM MLPFN      U(3,0,60);   # MLI FUNCTION NUMBER #
        ITEM MLPCN      U(4,0,60);   # COUNT OF MESSAGES FOR FETCHRL #
        ITEM MLPMM      U(4,0,60);   # MAX MESSAGES #
        ITEM MLPRI      U(4,0,60);   # RECEIVE INDEX #
        ITEM MLPFA      U(5,0,60);   # FIRST WORD ADDRESS OF BUFFER #
        ITEM MLPJS      U(5,0,60);   # JSN FOR SIGNON/SIGNOFF #
        ITEM MLPBL      U(6,0,60);   # MESSAGE BUFFER LENGTH #
        ITEM MLPSG      U(7,0,60);   # VALUE OF SIGNAL FLAG #
        ITEM MLPAR      U(8,0,60);   # ARBITRARY INFORMATION #
        ITEM MLPLN      U(9,0,60);   # MESSAGE LENGTH RETURNED #
          ITEM MLPSV      U(10,0,60);  # RETURNED STATUS VALUE #
          ITEM MLPV1      U(11,0,60);  # RETURNED VALUE 1 #
          ITEM MLPV2      U(12,0,60);  # RETURNED VALUE 2 #
          ITEM MLPV3      U(13,0,60);  # RETURNED VALUE 3 #
          END


      XREF
        BEGIN
        PROC MLIQ;                   # MLI= #
        END


#  THE FOLLOWING SYMPL DEFINITION OF ML FUNCTION CODES MIRRORS        #
#  THE COMPASS DEFINITION THAT IS FOUND IN COMMON DECK COMSMLI        #

      DEF MLFON   #0#;               # SIGNON #
      DEF MLFOF      #1#;            # SIGNOFF #
      DEF MLFAD      #2#;            # ADDSPL #
      DEF MLFDE      #3#;            # DELSPL #
      DEF MLFSE      #4#;            # SEND #
      DEF MLFRE      #5#;            # RECEIVE #
      DEF MLFFE      #6#;            # FETCHRL #
      DEF MLFCO      #7#;            # CONFIRM #
      DEF MLFKI      #8#;            # KILL 170 JOB #
      DEF MLFKA      #9#;            # KILL ALL 170 JOBS #

      ITEM APPL$NAME  U;
      ITEM MAX$MSGS   U;
      ITEM UNIQ$NAME  U;
      ITEM RSTATUS    U;
      ITEM PARTNER$NAME U;
      ITEM ARB$INFO   U;
      ITEM SIGNAL     U;
      ITEM WSA        U;
      ITEM MSG$LEN    U;
      ITEM WSA$LEN    U;
      ITEM RCV$INDEX  U;
      ITEM FETCH$CNT  U;
      ITEM FRL$LIST   U;

PROC MLI$IF;
        BEGIN  # MLI$IF #
        MLPAN = APPL$NAME;
        MLPST = LOC(RSTATUS);
        MLIQ;
        RSTATUS = MLPSV;
        END  # MLI$IF #


#  THE FOLLOWING ALTERNATE ENTRY POINTS CONSTITUE THE                 #
#  SYMPL-CALLABLE INTERFACE TO THE MEMORY LINK. THE                   #
#  PRINCIPAL ENTRY POINT ITSELF (PROC MLIF) IS A DUMMY                #
#  THAT IS NOT INTENDED TO BE CALLED.                                 #

      ENTRY
PROC ADDSPL (APPL$NAME,PARTNER$NAME,RSTATUS);
      MLPSN = PARTNER$NAME;
      MLPFN = MLFAD;
      MLI$IF;
      RETURN;

      ENTRY
PROC CONFIRM (APPL$NAME,PARTNER$NAME,RSTATUS);
      MLPSN = PARTNER$NAME;
      MLPFN = MLFCO;
      MLI$IF;
      RETURN;

      ENTRY
PROC DELSPL (APPL$NAME,PARTNER$NAME,RSTATUS);
      MLPSN = PARTNER$NAME;
      MLPFN = MLFDE;
      MLI$IF;
      RETURN;

      ENTRY
PROC FETCHRL (APPL$NAME,PARTNER$NAME,FRL$LIST, FETCH$CNT,RSTATUS
        );
      MLPSN = PARTNER$NAME;
      MLPCN = LOC(FETCH$CNT);
      MLPFA=LOC(FRL$LIST);
      MLPFN = MLFFE;
      MLI$IF;
      FETCH$CNT = MLPV1;
      RETURN;

      ENTRY
PROC SIGNOFF (APPL$NAME,RSTATUS);
      MLPFN = MLFOF;
      MLI$IF;
      RETURN;

      ENTRY
PROC SIGNON (APPL$NAME,MAX$MSGS,UNIQ$NAME, RSTATUS);
      MLPMM=MAX$MSGS;
      MLPSN = LOC(UNIQ$NAME);
      MLPFN = MLFON;
      MLI$IF;
      UNIQ$NAME = MLPV1;
      RETURN;

      ENTRY
PROC RECEIVE (APPL$NAME,ARB$INFO,SIGNAL, WSA,MSG$LEN,WSA$LEN,
        RCV$INDEX,PARTNER$NAME,RSTATUS);
      MLPRI = RCV$INDEX;
      MLPFA = LOC(WSA);
      MLPBL = WSA$LEN;
      IF SIGNAL EQ 0
      THEN
        BEGIN
        MLPSG = O"377777";
        END

      ELSE
        BEGIN
        MLPSG = LOC(SIGNAL);
        MLPSV = SIGNAL;
        END

      MLPLN = LOC(MSG$LEN);
      MLPAR = LOC(ARB$INFO);
      MLPSN = LOC(PARTNER$NAME);
      MLPFN = MLFRE;
      MLI$IF;
      MSG$LEN = MLPV1;
      ARB$INFO = MLPV2;
      PARTNER$NAME = MLPV3;
      RETURN;

      ENTRY
PROC SEND (APPL$NAME,ARB$INFO,SIGNAL, WSA,MSG$LEN,PARTNER$NAME,
        RSTATUS);
      MLPSN = PARTNER$NAME;
      MLPAR = ARB$INFO;
      MLPFA = LOC(WSA);
      MLPBL = MSG$LEN;
      IF SIGNAL EQ 0
      THEN
        BEGIN
        MLPSG = O"377777";
        END

      ELSE
        BEGIN
        MLPSG = LOC(SIGNAL);
        MLPSV = SIGNAL;
        END

      MLPFN = MLFSE;
      MLI$IF;
      RETURN;

      END  # MLIF #

    TERM
