          IDENT  RHMLIO
          TITLE  RHA$MLI CIO - 170 REMOTE HOST MLI/CIO I/F.

          SYSCOM B1
          LIST   F

*copy RHA$MLI_TO_FILE
OPL XTEXT COMCCDD
          IF     -DEF,RA.ORG,1
OPL XTEXT COMCMAC
*copy COMSCVS
*copy COMMCVS
*copy COMSMLI
BUFSIZ    EQU    3072+2
AIMOI     EQU    1
AIEOI     EQU    2
HWA       BSS    1
BUFA      BSS    BUFSIZ
TWA       BSS    1
*
HWB       BSS    1
BUFB      BSS    BUFSIZ
TWB       BSS    1
*
FETA      FILEB  BUFA,BUFSIZ
FETB      FILEB  BUFB,BUFSIZ
MLIPAR    BSS    15
MLICON    BSS    15
ISSUECNT  BSS    1
NTHSR     DATA   -2
REISSUE   DATA   0
WMLI      DATA   0
BLOCKS    DATA   0
WORDS     DATA   0
STIME     BSS    1
ETIME     BSS    1

M3        DATA   10HCIO ERROR
M4        BSSZ   2

M5        DATA   10HPFSEND
M6        BSS    1
M7        BSS    1
M8        BSS    1
M9        BSS    1
M10       DATA   0
          DATA   0
M13       DATA   20HREC ARBINFO ERROR
M14       BSS    1
          DATA   0
SMASK     VFD    60/1014040B
RMASK     VFD    60/40040B
MMASK     VFD    60/0
          EXT    PARSV
DSTSA     EQU    PARSV+3
STSA      EQU    DSTSA+1
EOI       DATA   0
          SKIP   RA.MTR
          ERR    SYSCOM WAS NOT CALLED
TAB       VFD    42/0,6/5,11/0,1/1
          BSSZ   4
FLEN      DATA   0

* PROCEDURE PFSEND (LFN
*                   AN170
*                   AN180
*               VAR DSTS
*               VAR STS)
* STS: 0=OK, 1=MLI ERROR, 2=IO ERROR
*
          ENTRY  PFSEND
PFSEND    BSS    0
          RJ     =XPXSAVE
          BX6    X2
          BX7    X3
          SA6    MLIPAR+MLPAN
          SA7    MLIPAR+MLPSN
          MX6    0
          SA6    X5          SET STATUS OK

          R=     X6,AIMOI
          R=     X7,MLSOK
          SA6    MLIPAR+MLPAR
          SX6    100
          SA6    MLIPAR+MLPSG
          SX6    MLFSE
          SA6    MLIPAR+MLPFN
          SA7    MLIPAR+MLPSV
*
          SA2    FETA
          MX0    42
          BX3    -X0*X2
          LX1    18
          BX6    X1+X3
          SA6    FETB
          SA6    A2
*
          SA1    =10HPFSEND
          BX6    X1
          SA6    M5
          SA1    SMASK
          BX7    X1
          SA7    MMASK
          RTIME  STIME

* SEND FILE LENGTH TO NOSVE

          SA1    FETA
          IF     DEF,RA.ORG,2
          SX3    50000B      NO COMPLETE BIT FOR NOS/BE
          SKIP   1
          SX3    50001B      SET COMPLETE BIT FOR NOS
          MX0    42
          BX2    X0*X1
          BX6    X3+X2
          SA6    TAB
          FILINFO TAB
          SA1    TAB+3
          MX0    24
          BX6    X0*X1
          LX6    24
          SA6    FLEN
          SX7    B1
          SX6    FLEN
          SA6    MLIPAR+MLPFA
          SA7    MLIPAR+MLPBL
          RJ     ISSUE
          CKMST  MMASK

          REWIND FETA,R
          READ   FETA,R

LOOP      BSS    0
          RESET  FETB
          READ   FETB
          SMSG   HWA,FETA,BUFA
          RECALL FETB
          CKMST  MMASK

          RESET  FETA
          READ   FETA
          SMSG   HWB,FETB,BUFB
          RECALL FETA
          CKMST  MMASK
          EQ     LOOP

* PROCEDURE PFREC

          ENTRY  PFREC
PFREC     BSS    0
          RJ     =XPXSAVE
          BX6    X2
          BX7    X3
          SA6    MLIPAR+MLPAN
          SA6    MLICON+MLPAN
          SA7    MLIPAR+MLPSN
          SA7    MLICON+MLPSN
          MX6    0
          SA6    X5          SET STATUS OK

          SA6    MLIPAR+MLPRI  RECEIVE INDEX
          SX6    100
          SA6    MLIPAR+MLPSG
          SX6    MLFRE
          SA6    MLIPAR+MLPFN
          SX6    MLSOK
          SA6    MLIPAR+MLPSV
          SX6    BUFSIZ
          SA6    MLIPAR+MLPBL  BUFFER LENGTH
*
          SA2    FETA
          MX0    42
          BX3    -X0*X2
          LX1    18
          BX6    X1+X3
          SA6    FETB
          SA6    A2
*
          SA1    =10HPFREC
          BX6    X1
          SA6    M5
          SA1    RMASK
          BX7    X1
          SA7    MMASK
          RTIME  STIME
          REWIND FETA,R

RLOOP     BSS    0
          RECM   BUFA
          RECALL FETB
          CKIOST FETB
          CKMST  MMASK
          WRITF  FETA,HWA

          RECM   BUFB
          RECALL FETA
          CKIOST FETA
          CKMST  MMASK
          WRITF  FETB,HWB
          EQ     RLOOP

RAIERR    BSS    0
          SA1    MLIPAR+MLPV2
          RJ     CDD
          SA6    M14
          MESSAGE M13,0,R
          EQ     EXIT

MLERR     BSS    0
          SX6    B1
          SA1    STSA
          SA6    X1
          SA2    MLIPAR+MLPSV
          SA3    DSTSA
          BX6    X2
          SA6    X3
          MX6    0
          BX1    X2
          SA6    MLIPAR+MLPSV  TO PREVENT LOOP WITH EXIT/CKMST/MLERR
          RJ     CDD
          EQ     EXIT

IOERR     BSS    0
          SX6    2
          SA1    STSA
          SA6    X1
          BX6    X2
          SA3    DSTSA
          SA6    X3
          BX1    X2
          RJ     CDD
          SA6    M4
          MESSAGE M3,0,R
          EQ     EXIT

EXIT      BSS    0
          CKMST  MMASK
          RECALL FETA
          RECALL FETB
          RTIME  ETIME
          SA1    REISSUE
          RJ     CDD
          SA6    M6
          SA1    WMLI
          RJ     CDD
          SA6    M7
          SA1    BLOCKS
          RJ     CDD
          SA6    M8
          SA1    WORDS
          RJ     CDD
          SA6    M9
          SA1    STIME
          SA2    ETIME
          AX1    36
          AX2    36
          IX3    X2-X1
          ZR     X3,EXIT1    IF ET=0
          SA4    WORDS
          IX1    X4/X3
          RJ     CDD
          SA6    M10
EXIT1     BSS    0
          MESSAGE M5,0,R
          RJ     =XPXRSTR

ISSUE2    BX6    X4
          SA6    NTHSR
ISSUE     BSS    1
ISSUECT   SX6    -100D
          SA6    ISSUECNT
ISSUE0    BSS    0
          SA1    NTHSR
          PL     X1,ISSUE3   IF REQUEST OUTSTANDING
          SX4    0
          SX2    MLIPAR
          CALLVS X2,X4,CVSMLIU,0
          ZR     X0,ISSUE    IF REQUEST COMPLETE
          LX0    29
          AX0    30
          MI     X0,ISSUE1   IF NOS/VE DOWN
          NZ     X0,ISSUE2   IF REQUEST NOT COMPLETE
          SA1    ISSUECNT
          SX6    X1+B1
          SA6    A1
          MI     X6,ISSUE02
*   CALL CONFIRM SEND.
          SA1    MLIPAR+MLPST
          SX6    MLFCO
          SA6    MLICON+MLPFN
          SX2    MLICON
          SX4    0
          CALLVS X2,X4,CVSMLIU,0
          NZ     X0,ISSUE02
          SA5    MLICON+MLPSV
          SX6    X5
          SX5    X5-MLSRN
          SA5    MLIPAR+MLPSV
          ZR     X5,ISSUE
          SX6    -100D
          SA6    ISSUECNT
ISSUE02   RECALL
          EQ     ISSUE0

ISSUE1    BSS    0
          SX6    MLSND
          SA6    MLIPAR+MLPSV
          EQ     ISSUE

ISSUE3    BSS    0
          MESSAGE (=C* REQ W/REQ OUTSTANDING*),3,R
          ABORT

**********************************************

POLL1     SX6    -2
          SA6    NTHSR
POLL      BSS    1
          SA4    NTHSR
          NG     X4,POLL     IF NO REQUEST
          SX1    MLIPAR
          CALLVS X1,X4,CVSMLIU,0
          ZR     X0,POLL1    IF REQUEST COMPLETE
          AX0    30
          ZR     X0,POLL     IF NOSVE UP
          SX6    MLSND
          SA6    MLIPAR+MLPSV
          EQ     POLL
          END
