CCCCCCCCCCCCC  BUFEMP.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE BUFEMP(BUFFER,LEN)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER BUFFER(1)
      INTEGER CH,LEN,CTL
      INTEGER I,T
      CH=FD
      I=1
23000 IF(.NOT.(I.LT.LEN+1))GOTO 23002
      T=BUFFER(I)
      IF(.NOT.(T.EQ.35 ))GOTO 23003
      I=I+1
      T=BUFFER(I)
      IF(.NOT.(T.NE.35 ))GOTO 23005
      T=CTL(T)
23005 CONTINUE
23003 CONTINUE
      IF(.NOT.(T.NE.10))GOTO 23007
      CALL KPUTCH(T,CH)
23007 CONTINUE
23001 I=I+1
      GOTO 23000
23002 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  BUFILL.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION BUFILL(BUFFER)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER I,CTL,T,KGETCH,BUFFER(1),CH
      I=1
      CH=FD
23000 IF(.NOT.(KGETCH(T,CH).GT.0))GOTO 23001
      IF(.NOT.((T.LT.32 ).OR.(T.EQ.127 ).OR.(T.EQ.QUOTE)))GOTO 23002
      IF(.NOT.(T.EQ.13))GOTO 23004
      BUFFER(I)=QUOTE
      I=I+1
      BUFFER(I)=CTL(13)
      T=10
      I=I+1
23004 CONTINUE
      BUFFER(I)=QUOTE
      I=I+1
      IF(.NOT.(T.NE.QUOTE))GOTO 23006
      T=CTL(T)
23006 CONTINUE
23002 CONTINUE
      BUFFER(I)=T
      I=I+1
      IF(.NOT.(I.GT.SPSIZ-8))GOTO 23008
      BUFILL=I-1
      RETURN
23008 CONTINUE
      GOTO 23000
23001 CONTINUE
      IF(.NOT.(I.EQ.1))GOTO 23010
      BUFILL=10003
      RETURN
23010 CONTINUE
      BUFILL=I-1
      RETURN
      END
CCCCCCCCCCCCC   CANT.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE CANT(BUF)
      INTEGER BUF(132)
      CALL PUTLIN(BUF, 2)
      CALL REMARK(": can't open.")
      CALL RATEXIT
      END
CCCCCCCCCCCCC   CHKIO.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE CHKIO (FD, IER)
      INTEGER FD, IER
      IF(.NOT.(IER .EQ. 1 .OR. IER .EQ. 9))GOTO 23000
      RETURN
23000 CONTINUE
      WRITE (2, 1) IER, FD
      CALL MESSAGE('CHKIO -- ERROR TRACEBACK')
1     FORMAT(" *** error code ", I6, " from channel ", I6)
      RETURN
      END
CCCCCCCCCCCCC CLOSE.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE RATCLOSE (FD)
      INTEGER FD
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      IF(.NOT.(0 .LE. FD .AND. FD .LE. 15))GOTO 23000
      CALL FLUSH (FD)
      CALL CLOSE (FD, IER)
      CHANNEL(FD) = 10001
      MD(FD) = 2
23000 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  COMPILE.MC       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
MESSAGE Compiling subroutines for installing KERMIT-RDOS
MESSAGE
   
FORTRAN/P/M BUFEMP
FORTRAN/P/M BUFILL
FORTRAN/P/M CONNECT
FORTRAN/P/M CTL
FORTRAN/P/M FINDLN
FORTRAN/P/M IBMGETLIN
FORTRAN/P/M KERMIT
FORTRAN/P/M KGETCH
FORTRAN/P/M KGETLIN
FORTRAN/P/M KPICK
FORTRAN/P/M KPUTCH
FORTRAN/P/M RDATA
FORTRAN/P/M RECSW
FORTRAN/P/M RFILE
FORTRAN/P/M RINIT
FORTRAN/P/M RPACK
FORTRAN/P/M RPAR
FORTRAN/P/M SDATA
FORTRAN/P/M SENDSW
FORTRAN/P/M SEOF
FORTRAN/P/M SBREAK
FORTRAN/P/M SFILE
FORTRAN/P/M SINIT
FORTRAN/P/M SPACK
FORTRAN/P/M SPAR
FORTRAN/P/M TOCHAR
FORTRAN/P/M UNCHAR
FORTRAN/P/M UPPER
FORTRAN/P/M VERIFY
MESSAGE Compiling all the library subroutines for KERMIT-RDOS
MESSAGE
FORTRAN/P/M CANT
FORTRAN/P/M CHKIO
FORTRAN/P/M CLOSE
FORTRAN/P/M EXIT
FORTRAN/P/M FLUSH
FORTRAN/P/M GETCH
FORTRAN/P/M GETLIN
FORTRAN/P/M ITOC
FORTRAN/P/M LENGTH
FORTRAN/P/M OPEN
FORTRAN/P/M PACK
FORTRAN/P/M PUTC
FORTRAN/P/M PUTCH
FORTRAN/P/M PUTDEC
FORTRAN/P/M PUTINT
FORTRAN/P/M PUTLIN
FORTRAN/P/M PUTSTR
FORTRAN/P/M REMARK
FORTRAN/P/M REMOVE
FORTRAN/P/M SCOPY
FORTRAN/P/M SSCOPY
FORTRAN/P/M STDIO
FORTRAN/P/M STDOPEN
FORTRAN/P/M SETSETUP
MESSAGE All subroutines needed for KERMIT-RDOS have been compiled
CCCCCCCCCCCCC CONNECT.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE CONNECT
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER ECHAR,T,STATUS,ICHAR,KGETCH,CQ,CS
      CS=011423K
      CQ=010421K
      ECHAR=29
      STATUS=1
23000 IF(.NOT.(STATUS.EQ.1))GOTO 23001
      T=KGETCH(ICHAR,LOCALINFD)
      IF(.NOT.(T.EQ.0))GOTO 23002
      CALL REMARK("error in I/O using remote TTY")
      CALL REMARK("return to Kermit-RDOS")
      RETURN
23002 CONTINUE
      IF(.NOT.(ICHAR.EQ.ECHAR))GOTO 23004
      CALL REMARK("return to Kermit-RDOS")
      RETURN
23004 CONTINUE
      CALL KPUTCH(ICHAR,RMTOUTFD)
      IF(.NOT.(IBM.EQ.-1))GOTO 23006
      CALL KPUTCH(ICHAR,LOCALOUTFD)
23006 CONTINUE
23005 CONTINUE
      GOTO 23000
23001 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC CTL.FT            CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION CTL(CH)
      INTEGER CH
      CTL=IXOR(CH,100K)
      RETURN
      END
CCCCCCCCCCCCC  EXIT.FT          CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE RATEXIT
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      DO23000 I = 0, 15
      CALL FLUSH (I)
23000 CONTINUE
23001 CONTINUE
      CALL EXIT
      END
CCCCCCCCCCCCC  FINDLN.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION FINDLN(LIN,APAT,A1,Z1)
      IMPLICIT INTEGER (A-Z)
      INTEGER LIN(132)
      INTEGER APAT(128)
      STATUS=-2
      T1=A1
23000 IF(.NOT.(STATUS.EQ.-2))GOTO 23001
23002 IF(.NOT.((LIN(T1).NE.APAT(1).AND.(LIN(T1)).NE.10002)))GOTO 23003
      T1=T1+1
      GOTO 23002
23003 CONTINUE
      IF(.NOT.(LIN(T1).EQ.10002))GOTO 23004
      STATUS=0
      GOTO 23005
23004 CONTINUE
      A1=T1
      T2=1
      T3=T1
      FLAG=0
23006 IF(.NOT.((FLAG.EQ.0).AND.(APAT(T2).NE.10002)))GOTO 23007
      IF(.NOT.(APAT(T2).EQ.LIN(T1)))GOTO 23008
      T1=T1+1
      T2=T2+1
      GOTO 23009
23008 CONTINUE
      FLAG=1
23009 CONTINUE
      GOTO 23006
23007 CONTINUE
      IF(.NOT.(APAT(T2).EQ.10002))GOTO 23010
      Z1=T1-1
      STATUS=1
      GOTO 23011
23010 CONTINUE
      T1=T3+1
23011 CONTINUE
23005 CONTINUE
      GOTO 23000
23001 CONTINUE
      FINDLN=STATUS
      RETURN
      END
CCCCCCCCCCCCC     FLUSH.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE FLUSH(FD)
      INTEGER FD
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      IF(.NOT.(0 .LE. FD .AND. FD .LE. 15 .AND. CHANNEL(FD) .NE. 10001))
     *GOTO 23000
      IF(.NOT.(MD(FD) .EQ. 1 .AND. IC(FD) .GT. 1))GOTO 23002
      BYTE(LINEBUF(1,FD),IC(FD)) = 0
      CALL WRLIN (FD, LINEBUF(1,FD), NC(FD), IER)
      CALL CHKIO (FD, IER)
23002 CONTINUE
      IC(FD) = 1
      NC(FD) = 0
23000 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC   GETCH.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       INTEGER FUNCTION GETCH (C, FD)
      INTEGER C, FD
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      IF(.NOT.(0 .LE. FD .AND. FD .LE. 15 .AND. CHANNEL(FD) .NE. 10001))
     *GOTO 23000
      IF(.NOT.(MD(FD) .NE. 0))GOTO 23002
      MD(FD) = 0
      IC(FD) = 1
      NC(FD) = 0
23002 CONTINUE
23004 CONTINUE
      IF(.NOT.(NC(FD) .LT. IC(FD)))GOTO 23007
      NC(FD) = 0
      CALL RDLIN (FD, LINEBUF(1,FD), NC(FD), IER)
      CALL CHKIO (FD, IER)
      IC(FD) = 1
23007 CONTINUE
      IF(.NOT.(NC(FD) .LT. IC(FD)))GOTO 23009
      C = 10003
      GOTO 23010
23009 CONTINUE
      C = BYTE(LINEBUF(1,FD), IC(FD)) .AND. 177K
      IC(FD) = IC(FD) + 1
      IF(.NOT.(C .EQ. 10))GOTO 23011
      C = 0
      GOTO 23012
23011 CONTINUE
      IF(.NOT.(C .EQ. 13))GOTO 23013
      C = 10
23013 CONTINUE
23012 CONTINUE
23010 CONTINUE
23005 IF(.NOT.(C .EQ. 10003 .OR. C .NE. 0))GOTO 23004
23006 CONTINUE
      GOTO 23001
23000 CONTINUE
      C = 10003
23001 CONTINUE
      GETCH=(C)
      RETURN
      END
CCCCCCCCCCCCC  GETLIN.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       INTEGER FUNCTION GETLIN(LINE, F)
      INTEGER LINE(132), C, GETCH
      INTEGER F
      GETLIN = 0
23000 IF(.NOT.(GETCH(C, F) .NE. 10003))GOTO 23002
      IF(.NOT.(C .EQ. 0))GOTO 23003
      GOTO 23002
23003 CONTINUE
      IF(.NOT.(GETLIN .LT. 132 - 1))GOTO 23005
      GETLIN = GETLIN + 1
      LINE(GETLIN) = C
23005 CONTINUE
      IF(.NOT.(C .EQ. 10 .OR. C .EQ. 12))GOTO 23007
      GOTO 23002
23007 CONTINUE
23001 GOTO 23000
23002 CONTINUE
      LINE(GETLIN+1) = 10002
      IF(.NOT.(GETLIN .EQ. 0 .AND. C .EQ. 10003))GOTO 23009
      GETLIN = 10003
23009 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC   HELPKERMIT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 CONNECT          - Enters into the 'CHAT' mode, whatever you typed on the
                  - local keyboard is transmitted to the remote host, and
                  - information from the remote host are transmitted to the
                  - local terminal.  'CHAT' mode is used in establishing
                  - login sessions and invoking remote KERMIT program.
                  - CNTR ] will cause exit from 'CHAT' mode.
   
 EXIT             - EXIT from this KERMIT program and returns to the CLI.
   
 HELP             - Displays the content of this help file.
   
 QUIT             - QUIT from this KERMIT program and returns to the CLI.
   
 RECEIVE          - Enters the 'RECEIVE' state of file transfer mode,
                  - program waits for in-coming packet with no time-out
                  - detection capability provided.
   
 SEND             - Enters the 'SEND' state of file transfer mode, programs
                  - will then prompts for either a filename or a directory
                  - of filenames (i.e. @directory) to be transmitted.
   
 SET IBM OFF      - In 'CHAT' mode, expects remote system to echo back
                  - transmitted characters.  In file transfer mode, does
                  - not wait for the detection of DC1 before sending out
                  - the next packet.
   
 SET IBM ON       - In 'CHAT' mode, performs local echoing of transmitted
                  - characters.  In file transfer mode, wait for the
                  - detection of DC1 from CMS before sending out the next
                  - packet. The program actually looks for the CMS prompt
                  - of BELL (7).
   
 STATUS           - Displays the current values of various setting.
CCCCCCCCCCCCC IBMGETLIN.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION IBMGETLIN(BUFFER,CH)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER BUFFER(132)
      INTEGER CH,IDC1,STATUS,COUNT,IBYTE,T,GETSOH
      IDC1=021K
      IBELL=007K
      STATUS=1
      GETSOH=0
      COUNT=1
23000 IF(.NOT.(STATUS.EQ.1))GOTO 23001
23002 IF(.NOT.(GETSOH.EQ.0))GOTO 23003
      IBYTE=0
      CALL RDSEQ(CH,IBYTE,1,IER)
      T=ISHIFT(IBYTE,-8) .AND. 177K
      IF(.NOT.(T.EQ.1 ))GOTO 23004
      GETSOH=1
      BUFFER(COUNT)=T
      COUNT=COUNT+1
23004 CONTINUE
      GOTO 23002
23003 CONTINUE
      IBYTE=0
      CALL RDSEQ(CH,IBYTE,1,IER)
      T=ISHIFT(IBYTE,-8) .AND. 177K
      IF(.NOT.(T.EQ.IBELL))GOTO 23006
      STATUS=0
      GOTO 23007
23006 CONTINUE
      BUFFER(COUNT)=T
      COUNT=COUNT+1
23007 CONTINUE
      GOTO 23000
23001 CONTINUE
      BUFFER(COUNT)=10002
      RETURN
      END
CCCCCCCCCCCCC   ITOC.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION ITOC(INT, STR, SIZE)
      INTEGER IABS, MOD
      INTEGER I, INT, INTVAL, J, K, SIZE
      INTEGER STR(10000)
      INTVAL = IABS(INT)
      STR(1) = 10002
      I = 1
23000 CONTINUE
      I = I + 1
      STR(I) = 48 + MOD(INTVAL,10)
      INTVAL = INTVAL / 10
23001 IF(.NOT.(INTVAL .EQ. 0 .OR. I .GE. SIZE))GOTO 23000
23002 CONTINUE
      IF(.NOT.(INT .LT. 0 .AND. I .LT. SIZE))GOTO 23003
      I = I + 1
      STR(I) = 45
23003 CONTINUE
      ITOC = I - 1
      J = 1
23005 IF(.NOT.(J .LT. I))GOTO 23007
      K = STR(I)
      STR(I) = STR(J)
      STR(J) = K
      I = I - 1
23006 J = J + 1
      GOTO 23005
23007 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC   KERMIT.FT       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C  
C     Implemented by John Lee of RCA Laboratories for Data General
C     family of mini-computers running RDOS operating system.
C  
C     Permission is granted to any individual or institution to
C     use or copy this program, except for explicitly commercial
C     purpose.
C  
C                                               John Lee
C                                               RCA Laboratories
C                                               609-734-3157
C                                               7/9/84
C  
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER RESW,X,STATUS,GETLIN,TEMP,AOPEN,AONE,BONE,A1,Z1
      INTEGER ATWO,FINDLN
      INTEGER FLAG1,FLAG2,FLAG3,FLAG4,FLAG5,FLAG6,FLAG7,FLAG8,FLAG9
      INTEGER BELL(3)
      INTEGER INTTY(5)
      INTEGER OUTTTY(5)
      INTEGER ALIN(132)
      INTEGER BLIN(132)
      INTEGER DLIN(132)
      INTEGER SLIN(132)
      INTEGER APAT(128)
      INTEGER BPAT(128)
      INTEGER CPAT(128)
      INTEGER DPAT(128)
      INTEGER EPAT(128)
      INTEGER FPAT(128)
      INTEGER GPAT(128)
      INTEGER HPAT(128)
      INTEGER IPAT(128)
      INTEGER ITTY(132)
      INTEGER OTTY(132)
      INTEGER XREC(8)
      DATA XREC(1),XREC(2),XREC(3),XREC(4),XREC(5),XREC(6),XREC(7),XREC(
     *8)/82,69,67,69,73,86,69,10002/
      INTEGER RMTTTY(6)
      DATA RMTTTY(1),RMTTTY(2),RMTTTY(3),RMTTTY(4),RMTTTY(5),RMTTTY(6)/8
     *1,84,89,58,51,10002/
      INTEGER SSEND(5)
      DATA SSEND(1),SSEND(2),SSEND(3),SSEND(4),SSEND(5)/83,69,78,68,1000
     *2/
      INTEGER HELP(5)
      DATA HELP(1),HELP(2),HELP(3),HELP(4),HELP(5)/72,69,76,80,10002/
      INTEGER SEXIT(5)
      DATA SEXIT(1),SEXIT(2),SEXIT(3),SEXIT(4),SEXIT(5)/69,88,73,84,1000
     *2/
      INTEGER QUIT(5)
      DATA QUIT(1),QUIT(2),QUIT(3),QUIT(4),QUIT(5)/81,85,73,84,10002/
      INTEGER STAT(7)
      DATA STAT(1),STAT(2),STAT(3),STAT(4),STAT(5),STAT(6),STAT(7)/83,84
     *,65,84,85,83,10002/
      INTEGER IBMON(11)
      DATA IBMON(1),IBMON(2),IBMON(3),IBMON(4),IBMON(5),IBMON(6),IBMON(7
     *),IBMON(8),IBMON(9),IBMON(10),IBMON(11)/83,69,84,32,73,66,77,32,79
     *,78,10002/
      INTEGER IBMOFF(12)
      DATA IBMOFF(1),IBMOFF(2),IBMOFF(3),IBMOFF(4),IBMOFF(5),IBMOFF(6),I
     *BMOFF(7),IBMOFF(8),IBMOFF(9),IBMOFF(10),IBMOFF(11),IBMOFF(12)/83,6
     *9,84,32,73,66,77,32,79,70,70,10002/
      INTEGER HELPFILE(11)
      DATA HELPFILE(1),HELPFILE(2),HELPFILE(3),HELPFILE(4),HELPFILE(5),H
     *ELPFILE(6),HELPFILE(7),HELPFILE(8),HELPFILE(9),HELPFILE(10),HELPFI
     *LE(11)/72,69,76,80,75,69,82,77,73,84,10002/
      INTEGER VALUE(41)
      DATA VALUE(1),VALUE(2),VALUE(3),VALUE(4),VALUE(5),VALUE(6),VALUE(7
     *),VALUE(8),VALUE(9),VALUE(10),VALUE(11),VALUE(12),VALUE(13),VALUE(
     *14),VALUE(15),VALUE(16),VALUE(17),VALUE(18),VALUE(19),VALUE(20),VA
     *LUE(21),VALUE(22),VALUE(23),VALUE(24),VALUE(25),VALUE(26),VALUE(27
     *),VALUE(28),VALUE(29),VALUE(30),VALUE(31),VALUE(32),VALUE(33),VALU
     *E(34),VALUE(35),VALUE(36),VALUE(37),VALUE(38),VALUE(39),VALUE(40),
     *VALUE(41)/32,108,111,99,97,108,32,111,102,102,32,32,32,35,32,32,32
     *,32,32,57,52,32,32,32,94,77,32,32,36,84,84,73,32,32,32,32,32,32,32
     *,32,10002/
      INTEGER MOREFILE(9)
      DATA MOREFILE(1),MOREFILE(2),MOREFILE(3),MOREFILE(4),MOREFILE(5),M
     *OREFILE(6),MOREFILE(7),MOREFILE(8),MOREFILE(9)/109,111,114,101,102
     *,105,108,101,10002/
      INTEGER SCONNECT(8)
      DATA SCONNECT(1),SCONNECT(2),SCONNECT(3),SCONNECT(4),SCONNECT(5),S
     *CONNECT(6),SCONNECT(7),SCONNECT(8)/67,79,78,78,69,67,84,10002/
      CALL STDOPEN
      MOREFD=-1
      STATE=67
      BELL(1)='<BEL><BEL>'
      BELL(2)='<BEL><BEL>'
      BELL(3)='<BEL><BEL>'
      IBM=0
      HOST=-1
      AONE=1
      BONE=1
      ATWO=2
      LOCALINFD=0
      LOCALOUTFD=1
      CALL SCOPY(HELP,AONE,APAT,BONE)
      CALL SCOPY(SEXIT,AONE,BPAT,BONE)
      CALL SCOPY(QUIT,AONE,CPAT,BONE)
      CALL SCOPY(STAT,AONE,DPAT,BONE)
      CALL SCOPY(IBMON,AONE,EPAT,BONE)
      CALL SCOPY(IBMOFF,AONE,FPAT,BONE)
      CALL SCOPY(SSEND,AONE,GPAT,BONE)
      CALL SCOPY(XREC,AONE,HPAT,BONE)
      CALL SCOPY(SCONNECT,AONE,IPAT,BONE)
      CALL SCOPY(VALUE,AONE,SLIN,BONE)
      CALL REMARK("KERMIT-RDOS Version 1.0")
      HOST=0
      CALL REMARK("Local kermit now in effect")
      RMTINFD=RATOPEN(RMTTTY,0)
      IF(.NOT.(RMTINFD.EQ.10001))GOTO 23000
      CALL CANT(RMTTTY)
23000 CONTINUE
      RMTOUTFD=RATOPEN(RMTTTY,1)
      IF(.NOT.(RMTOUTFD.EQ.10001))GOTO 23002
      CALL CANT(RMTTTY)
23002 CONTINUE
      ISTAT=1
23004 IF(.NOT.(ISTAT.EQ.1))GOTO 23005
      CALL WRSEQ(LOCALOUTFD,"Kermit-RDOS>",12,IER)
      FD=10001
      STATUS=GETLIN(ALIN,LOCALINFD)
      CALL UPPER(ALIN,BLIN)
      A1=1
      FLAG1=FINDLN(BLIN,APAT,A1,Z1)
      A1=1
      FLAG2=FINDLN(BLIN,BPAT,A1,Z1)
      A1=1
      FLAG3=FINDLN(BLIN,CPAT,A1,Z1)
      A1=1
      FLAG4=FINDLN(BLIN,DPAT,A1,Z1)
      A1=1
      FLAG5=FINDLN(BLIN,EPAT,A1,Z1)
      A1=1
      FLAG6=FINDLN(BLIN,FPAT,A1,Z1)
      A1=1
      FLAG7=FINDLN(BLIN,GPAT,A1,Z1)
      A1=1
      FLAG8=FINDLN(BLIN,HPAT,A1,Z1)
      A1=1
      FLAG9=FINDLN(BLIN,IPAT,A1,Z1)
      IF(.NOT.(FLAG1.EQ.1))GOTO 23006
      TEMP=RATOPEN(HELPFILE,0)
23008 IF(.NOT.((GETLIN(ALIN,TEMP).NE.10003)))GOTO 23009
      CALL PUTLIN(ALIN,LOCALOUTFD)
      GOTO 23008
23009 CONTINUE
      CALL RATCLOSE(TEMP)
      GOTO 23007
23006 CONTINUE
      IF(.NOT.((FLAG2.EQ.1).OR.(FLAG3.EQ.1)))GOTO 23010
      CALL REMARK("Kermit now terminated")
      CALL RATEXIT
      GOTO 23011
23010 CONTINUE
      IF(.NOT.(FLAG4.EQ.1))GOTO 23012
      CALL REMARK("                 PACKET ")
      CALL REMARK(" MODE  IBM QUOTE  SIZE  EOL TTY    SPEED STATE")
      CALL REMARK(" ")
      IF(.NOT.(HOST.EQ.-1))GOTO 23014
      SLIN(2)=104
      SLIN(3)=111
      SLIN(4)=115
      SLIN(5)=116
      SLIN(6)=32
      GOTO 23015
23014 CONTINUE
      SLIN(2)=108
      SLIN(3)=111
      SLIN(4)=99
      SLIN(5)=97
      SLIN(6)=108
23015 CONTINUE
      IF(.NOT.(IBM.EQ.-1))GOTO 23016
      SLIN(8)=111
      SLIN(9)=110
      SLIN(10)=32
      SLIN(11)=32
      GOTO 23017
23016 CONTINUE
      SLIN(8)=111
      SLIN(9)=102
      SLIN(10)=102
      SLIN(11)=32
23017 CONTINUE
      IF(.NOT.(HOST.EQ.-1))GOTO 23018
      SLIN(29)=36
      SLIN(30)=84
      SLIN(31)=84
      SLIN(32)=73
      SLIN(33)=32
      SLIN(34)=32
      GOTO 23019
23018 CONTINUE
      SLIN(29)=81
      SLIN(30)=84
      SLIN(31)=89
      SLIN(32)=58
      SLIN(33)=51
      SLIN(34)=32
      SLIN(35)=32
      SLIN(36)=57
      SLIN(37)=54
      SLIN(38)=48
      SLIN(39)=48
      SLIN(40)=32
23019 CONTINUE
      SLIN(41)=32
      SLIN(42)=32
      SLIN(43)=32
      SLIN(44)=STATE
      SLIN(45)=32
      SLIN(46)=32
      SLIN(47)=13
      SLIN(48)=10002
      CALL PUTLIN(SLIN,LOCALOUTFD)
      CALL REMARK(" ")
      GOTO 23013
23012 CONTINUE
      IF(.NOT.(FLAG5.EQ.1))GOTO 23020
      IF(.NOT.(HOST.EQ.-1))GOTO 23022
      CALL REMARK("Not supported in host kermit mode")
      GOTO 23023
23022 CONTINUE
      IBM=-1
23023 CONTINUE
      GOTO 23021
23020 CONTINUE
      IF(.NOT.(FLAG6.EQ.1))GOTO 23024
      IBM=0
      GOTO 23025
23024 CONTINUE
      IF(.NOT.(FLAG7.EQ.1))GOTO 23026
      ITEMP=0
      CALL REMARK("enter filename or @filename")
      STATUS=GETLIN(ALIN,0)
      CALL REMOVE(MOREFILE)
      MOREFD=RATOPEN(MOREFILE,1)
      IF(.NOT.(MOREFD.EQ.10001))GOTO 23028
      CALL CANT(MOREFILE)
23028 CONTINUE
      IF(.NOT.(ALIN(1).NE.64))GOTO 23030
      CALL PUTLIN(ALIN,MOREFD)
      GOTO 23031
23030 CONTINUE
      CALL SCOPY(ALIN,ATWO,DLIN,AONE)
      J=1
23032 IF(.NOT.(DLIN(J).NE.10002))GOTO 23033
      IF(.NOT.(DLIN(J).EQ.10))GOTO 23034
      DLIN(J)=13
23034 CONTINUE
      J=J+1
      GOTO 23032
23033 CONTINUE
      ITEMP=RATOPEN(DLIN,0)
      IF(.NOT.(ITEMP.EQ.10001))GOTO 23036
      CALL REMARK("Indirect Source file not found")
      GOTO 23037
23036 CONTINUE
      I=1
23038 IF(.NOT.(I.EQ.1))GOTO 23039
      J=GETLIN(ALIN,ITEMP)
      IF(.NOT.(J.NE.10003))GOTO 23040
      CALL PUTLIN(ALIN,MOREFD)
      GOTO 23041
23040 CONTINUE
      I=0
23041 CONTINUE
      GOTO 23038
23039 CONTINUE
      CALL RATCLOSE(ITEMP)
23037 CONTINUE
23031 CONTINUE
      CALL RATCLOSE(MOREFD)
      IF(.NOT.(ITEMP.NE.10001))GOTO 23042
      IF(.NOT.(HOST.EQ.-1))GOTO 23044
      CALL WAIT(15,2,IER)
23044 CONTINUE
      STATUS=SENDSW(X)
      IF(.NOT.(HOST.EQ.0))GOTO 23046
      CALL WRSEQ(LOCALOUTFD,BELL(1),6,IER)
23046 CONTINUE
      CALL REMARK(" ")
      IF(.NOT.((STATUS.EQ.-1).AND.(HOST.EQ.0)))GOTO 23048
      CALL REMARK("COMPLETED")
23048 CONTINUE
      IF(.NOT.((STATUS.NE.-1).AND.(HOST.EQ.0)))GOTO 23050
      CALL REMARK("FAILED")
23050 CONTINUE
      CALL REMARK(" ")
      IF(.NOT.(FD.NE.10001))GOTO 23052
      CALL RATCLOSE(FD)
23052 CONTINUE
23042 CONTINUE
      GOTO 23027
23026 CONTINUE
      IF(.NOT.(FLAG8.EQ.1))GOTO 23054
      STATUS=RECSW(X)
      IF(.NOT.(HOST.EQ.0))GOTO 23056
      CALL WRSEQ(LOCALOUTFD,BELL(1),6,IER)
23056 CONTINUE
      CALL REMARK(" ")
      IF(.NOT.((STATUS.EQ.-1).AND.(HOST.EQ.0)))GOTO 23058
      CALL REMARK("COMPLETED")
23058 CONTINUE
      IF(.NOT.((STATUS.NE.-1).AND.(HOST.EQ.0)))GOTO 23060
      CALL REMARK("FAILED")
23060 CONTINUE
      CALL REMARK(" ")
      IF(.NOT.(FD.NE.10001))GOTO 23062
      CALL RATCLOSE(FD)
23062 CONTINUE
      GOTO 23055
23054 CONTINUE
      IF(.NOT.(FLAG9.EQ.1))GOTO 23064
      IF(.NOT.(HOST.EQ.-1))GOTO 23066
      CALL REMARK("Connect is not supported in Host mode")
      GOTO 23067
23066 CONTINUE
      TASK KPICK, ID=1, PRI=1
      CALL CONNECT
      CALL TIDK(1,IER)
      CALL CHECK(IER)
      CALL WAIT(2,2,IER)
      CALL RATCLOSE(RMTINFD)
      CALL RATCLOSE(RMTOUTFD)
      RMTINFD=RATOPEN(RMTTTY,0)
      IF(.NOT.(RMTINFD.EQ.10001))GOTO 23068
      CALL CANT(RMTTTY)
23068 CONTINUE
      RMTOUTFD=RATOPEN(RMTTTY,1)
      IF(.NOT.(RMTOUTFD.EQ.10001))GOTO 23070
      CALL CANT(RMTTTY)
23070 CONTINUE
23067 CONTINUE
      GOTO 23065
23064 CONTINUE
      CALL REMARK("Invalid command, please type HELP")
23065 CONTINUE
23055 CONTINUE
23027 CONTINUE
23025 CONTINUE
23021 CONTINUE
23013 CONTINUE
23011 CONTINUE
23007 CONTINUE
      GOTO 23004
23005 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  KGETCH.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION KGETCH(T,XCHAN)
      INTEGER T,XCHAN,X,IER
      CALL RDSEQ(XCHAN,X,1,IER)
      IF(.NOT.(IER.NE.1))GOTO 23000
      GOTO 100
23000 CONTINUE
      T=ISHIFT(X,-8) .AND. 177K
      KGETCH=1
      RETURN
100   CONTINUE
      KGETCH=0
      RETURN
      END
CCCCCCCCCCCCC  KGETLIN.FT       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION KGETLIN(BUFFER,CH)
      IMPLICIT INTEGER (A-Z)
      INTEGER BUFFER(132)
      INTEGER CH,KGETCH,STATUS,T,COUNT,TEMP
      STATUS=1
      COUNT=1
23000 IF(.NOT.(STATUS.EQ.1))GOTO 23001
      TEMP=KGETCH(T,CH)
      BUFFER(COUNT)=T
      IF(.NOT.(T.EQ.13))GOTO 23002
      BUFFER(COUNT+1)=10002
      RETURN
23002 CONTINUE
      COUNT=COUNT+1
23003 CONTINUE
      GOTO 23000
23001 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC    KPICK.FT       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE KPICK
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER IBYTE,STATUS,CS,CQ,COUNT
      INTEGER ALIN(132)
      CS=011423K
      CQ=010421K
      STATUS=1
23000 IF(.NOT.(STATUS.EQ.1))GOTO 23001
      CALL RDSEQ(RMTINFD,IBYTE,1,IER)
      CALL WRSEQ(LOCALOUTFD,IBYTE,1,IER)
      GOTO 23000
23001 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  KPUTCH.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE KPUTCH(T,CHAN)
      INTEGER T
      INTEGER CH,IER,X
      X=ISHIFT(T,8)
      CALL WRSEQ(CHAN,X,1,IER)
      IF(.NOT.(IER.NE.1))GOTO 23000
      TYPE "error in kputch ",IER
23000 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  LINKALL.LD       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
/KERMIT.LD
   
DELETE KERMIT.MP
RLDR/P/D/N/E KERMIT/S KERMIT.MP/L 4/K 17/C ^
kermit rpack spack sinit sfile verify rpar spar recsw bufill bufemp ^
rfile seof sdata ibmgetlin kgetch rinit sendsw kpick rdata ^
tochar kputch findln connect sbreak unchar ^
kgetlin ctl upper stdopen stdio stdsetup remove open close cant ^
remark exit putdec putint putc getlin putlin putstr getch putch flush ^
chkio itoc length scopy pack sscopy ^
@TFLIBLONG@
CCCCCCCCCCCCC  LENGTH.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       INTEGER FUNCTION LENGTH(STR)
      INTEGER STR(10000)
      LENGTH = 0
23000 IF(.NOT.(STR(LENGTH+1) .NE. 10002))GOTO 23002
23001 LENGTH = LENGTH + 1
      GOTO 23000
23002 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  OPEN.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION RATOPEN (NAME, MODE)
      INTEGER NAME(10000)
      INTEGER MODE
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      INTEGER STRING(40), CH
      I = 1
23000 IF(.NOT.(NAME(I) .EQ. 32))GOTO 23002
23001 I = I+1
      GOTO 23000
23002 CONTINUE
      J = 1
23003 IF(.NOT.(NAME(I) .NE. 10002))GOTO 23005
      BYTE(STRING,J) = NAME(I)
      J = J+1
23004 I = I+1
      GOTO 23003
23005 CONTINUE
      BYTE(STRING,J) = 0
      CH = 0
23006 IF(.NOT.(CH .LE. 15))GOTO 23008
      IF(.NOT.(CHANNEL(CH) .EQ. 10001))GOTO 23009
      GOTO 23008
23009 CONTINUE
23007 CH = CH+1
      GOTO 23006
23008 CONTINUE
      IF(.NOT.(CH .GT. 15))GOTO 23011
      IER = 10001
      GOTO 23012
23011 CONTINUE
      IF(.NOT.(MODE .EQ. 0))GOTO 23013
      CALL OPEN (CH, STRING, 1, IER)
      GOTO 23014
23013 CONTINUE
      IF(.NOT.(MODE .EQ. 1 .OR. MODE .EQ. 2))GOTO 23015
      CALL CFILW (STRING, 2, IER)
      CALL OPEN (CH, STRING, 3, IER)
23015 CONTINUE
23014 CONTINUE
23012 CONTINUE
      IF(.NOT.(IER .NE. 1))GOTO 23017
      WRITE (2, 1) IER, CH, MODE, STRING(1)
1     FORMAT(" open error=",I5,", ch=",I2, ", mode=",I2,", file=",S20)
      CH = 10001
      GOTO 23018
23017 CONTINUE
      CHANNEL(CH) = MODE
23018 CONTINUE
      RATOPEN=(CH)
      RETURN
      END
CCCCCCCCCCCCC     PACK.FT       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION PACK (RSTRING, STRING, MAX0)
      INTEGER STRING(10000), RSTRING(MAX0)
      I = 1
23000 IF(.NOT.(I .LT. MAX0))GOTO 23002
      BYTE(STRING,I) = RSTRING(I)
      IF(.NOT.(RSTRING(I) .EQ. 10002))GOTO 23003
      GOTO 23002
23003 CONTINUE
23001 I = I + 1
      GOTO 23000
23002 CONTINUE
      BYTE(STRING,I) = 0
      PACK=(I-1)
      RETURN
      END
CCCCCCCCCCCCC   PUTC.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE PUTC(C)
      INTEGER C
      CALL PUTCH(C, 1)
      RETURN
      END
CCCCCCCCCCCCC  PUTCH.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE PUTCH (C, FD)
      INTEGER C, FD
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      IF(.NOT.(0 .LE. FD .AND. FD .LE. 15 .AND. CHANNEL(FD) .NE. 10001))
     *GOTO 23000
      IF(.NOT.(MD(FD) .NE. 1))GOTO 23002
      MD(FD) = 1
      IC(FD) = 1
      NC(FD) = 0
23002 CONTINUE
      IF(.NOT.(C .EQ. 10))GOTO 23004
      BYTE(LINEBUF(1,FD),IC(FD)) = 13
      IC(FD) = IC(FD) + 1
      CALL FLUSH (FD)
      GOTO 23005
23004 CONTINUE
      BYTE(LINEBUF(1,FD),IC(FD)) = C
      IC(FD) = IC(FD) + 1
      IF(.NOT.(IC(FD) .GT. 132 .OR. C .EQ. 13))GOTO 23006
      CALL WRSEQ (FD, LINEBUF(1,FD), IC(FD), IER)
      CALL CHKIO (FD, IER)
      IC(FD) = 1
      GOTO 23007
23006 CONTINUE
      IF(.NOT.(C .EQ. 12 .OR. C .EQ. 0))GOTO 23008
      CALL FLUSH (FD)
23008 CONTINUE
23007 CONTINUE
23005 CONTINUE
23000 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC    PUTDEC.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE PUTDEC(N, W)
      INTEGER N, W
      CALL PUTINT(N, W, 1)
      RETURN
      END
CCCCCCCCCCCCC  PUTINT.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE PUTINT(N, W, F)
      INTEGER N, W, F
      INTEGER CHARS(10)
      INTEGER ITOC
      INTEGER JUNK
      JUNK = ITOC(N, CHARS, 10)
      CALL PUTSTR(CHARS, W, F)
      RETURN
      END
CCCCCCCCCCCCC   PUTLIN.FT       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE PUTLIN(B, F)
      INTEGER B(10000)
      INTEGER F, I
      I = 1
23000 IF(.NOT.(B(I) .NE. 10002))GOTO 23002
      CALL PUTCH(B(I), F)
23001 I = I + 1
      GOTO 23000
23002 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  PUTSTR.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE PUTSTR(STR, W, F)
      INTEGER STR(132)
      INTEGER W, F, LEN, I, LENGTH
      LEN = LENGTH(STR)
      IF(.NOT.(W .GE. 0))GOTO 23000
      I = LEN + 1
23002 IF(.NOT.(I .LE. W))GOTO 23004
      CALL PUTCH(32, F)
23003 I = I + 1
      GOTO 23002
23004 CONTINUE
23000 CONTINUE
      I = 1
23005 IF(.NOT.(STR(I) .NE. 10002))GOTO 23007
      CALL PUTCH(STR(I), F)
23006 I = I + 1
      GOTO 23005
23007 CONTINUE
      IF(.NOT.(W .LT. 0))GOTO 23008
      I = LEN + 1
23010 IF(.NOT.(I .LE. -W))GOTO 23012
      CALL PUTCH(32, F)
23011 I = I + 1
      GOTO 23010
23012 CONTINUE
23008 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  RDATA.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION RDATA(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER NUM,LEN,STATUS
      INTEGER X,RPACK,TNUM
      INTEGER XPACK(10)
      DATA XPACK(1),XPACK(2),XPACK(3),XPACK(4),XPACK(5),XPACK(6),XPACK(7
     *),XPACK(8),XPACK(9),XPACK(10)/80,97,99,107,101,116,32,35,32,10002/
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23000
      RDATA=65
      RETURN
23000 CONTINUE
      NUMTRY=NUMTRY+1
23001 CONTINUE
      STATUS=RPACK(LEN,NUM,PACKET)
      IF(.NOT.(HOST.EQ.0))GOTO 23002
      CALL PUTDEC(NUM,4)
      CALL PUTC(13)
      CALL FLUSH(1)
23002 CONTINUE
      IF(.NOT.(STATUS.EQ.68))GOTO 23004
      IF(.NOT.(NUM.NE.N))GOTO 23006
      IF(.NOT.(OLDTRY.GT.5 ))GOTO 23008
      RDATA=65
      RETURN
23008 CONTINUE
      OLDTRY=OLDTRY+1
23009 CONTINUE
      IF(.NOT.(NUM.EQ.(N-1)))GOTO 23010
      CALL SPAR(PACKET)
      CALL SPACK(89,NUM,6,PACKET)
      NUMTRY=0
      RDATA=STATE
      RETURN
23010 CONTINUE
      RDATA=65
      RETURN
23011 CONTINUE
23006 CONTINUE
      CALL BUFEMP(PACKET,LEN)
      TNUM=N
      CALL SPACK(89,TNUM,0,0)
      OLDTRY=NUMTRY
      NUMTRY=0
      N=MOD((N+1),64)
      RDATA=68
      RETURN
23004 CONTINUE
      IF(.NOT.(STATUS.EQ.70))GOTO 23012
      IF(.NOT.(OLDTRY.GT.5 ))GOTO 23014
      RDATA=65
      RETURN
23014 CONTINUE
      OLDTRY=OLDTRY+1
23015 CONTINUE
      IF(.NOT.(NUM.EQ.(N-1)))GOTO 23016
      CALL SPACK(89,NUM,0,0)
      NUMTRY=0
      RDATA=STATE
      RETURN
23016 CONTINUE
      RDATA=65
      RETURN
23017 CONTINUE
      GOTO 23013
23012 CONTINUE
      IF(.NOT.(STATUS.EQ.90))GOTO 23018
      IF(.NOT.(NUM.NE.N))GOTO 23020
      RDATA=65
      RETURN
23020 CONTINUE
      TNUM=N
      CALL SPACK(89,TNUM,0,0)
      CALL RATCLOSE(FD)
      N=MOD((N+1),64)
      RDATA=70
      RETURN
23018 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23022
      RDATA=STATE
      TNUM=N
      CALL SPACK(78,TNUM,0,0)
      RETURN
23022 CONTINUE
      RDATA=65
23023 CONTINUE
23019 CONTINUE
23013 CONTINUE
23005 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC   RECSW.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION RECSW(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER X
      INTEGER RDATA,RFILE,RINIT,STATUS
      STATUS=1
      STATE=82
      N=0
      NUMTRY=0
      EOL=13
23000 IF(.NOT.(STATUS.EQ.1))GOTO 23001
      IF(.NOT.(STATE.EQ.68))GOTO 23002
      STATE=RDATA(X)
      GOTO 23003
23002 CONTINUE
      IF(.NOT.(STATE.EQ.70))GOTO 23004
      STATE=RFILE(X)
      GOTO 23005
23004 CONTINUE
      IF(.NOT.(STATE.EQ.82))GOTO 23006
      STATE=RINIT(X)
      GOTO 23007
23006 CONTINUE
      IF(.NOT.(STATE.EQ.67))GOTO 23008
      RECSW=-1
      RETURN
23008 CONTINUE
      IF(.NOT.(STATE.EQ.65))GOTO 23010
      RECSW=0
      RETURN
23010 CONTINUE
23009 CONTINUE
23007 CONTINUE
23005 CONTINUE
23003 CONTINUE
      GOTO 23000
23001 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  REMARK.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE REMARK (STRING)
      INTEGER STRING
      INTEGER C
      I=1
23000 CONTINUE
      C = BYTE(STRING,I)
      IF(.NOT.(C .EQ. 0))GOTO 23003
      GOTO 23002
23003 CONTINUE
      CALL PUTCH (C, 2)
23001 I=I+1
      GOTO 23000
23002 CONTINUE
      CALL PUTCH (10, 2)
      RETURN
      END
CCCCCCCCCCCCC   REMOVE.FT    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE REMOVE(NAME)
      INTEGER NAME(50)
      INTEGER PNAME(50)
      INTEGER PACK, IER
      IER = PACK (NAME, PNAME, 50)
      CALL DFILW (PNAME, IER)
      RETURN
      END
CCCCCCCCCCCCC  RFILE.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION RFILE(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER NUM,LEN,STATUS,RPACK,X,TNUM
      INTEGER AONE,BONE,A12
      INTEGER ALIN(132)
      INTEGER RECEIVING(12)
      DATA RECEIVING(1),RECEIVING(2),RECEIVING(3),RECEIVING(4),RECEIVING
     *(5),RECEIVING(6),RECEIVING(7),RECEIVING(8),RECEIVING(9),RECEIVING(
     *10),RECEIVING(11),RECEIVING(12)/32,82,101,99,101,105,118,105,110,1
     *03,32,10002/
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23000
      RFILE=65
      RETURN
23000 CONTINUE
      NUMTRY=NUMTRY+1
23001 CONTINUE
      STATUS=RPACK(LEN,NUM,PACKET)
      IF(.NOT.(STATUS.EQ.83))GOTO 23002
      IF(.NOT.(OLDTRY.GT.5 ))GOTO 23004
      RFILE=65
      RETURN
23004 CONTINUE
      OLDTRY=OLDTRY+1
23005 CONTINUE
      IF(.NOT.(NUM.EQ.(N-1)))GOTO 23006
      CALL SPAR(PACKET)
      CALL SPACK(89,NUM,6,PACKET)
      NUMTRY=0
      RFILE=STATE
      RETURN
23006 CONTINUE
      RFILE=65
      RETURN
23007 CONTINUE
      GOTO 23003
23002 CONTINUE
      IF(.NOT.(STATUS.EQ.90))GOTO 23008
      IF(.NOT.(OLDTRY.GT.5 ))GOTO 23010
      RFILE=65
      RETURN
23010 CONTINUE
      OLDTRY=OLDTRY+1
23011 CONTINUE
      IF(.NOT.(NUM.EQ.(N-1)))GOTO 23012
      CALL SPACK(89,NUM,0,0)
      NUMTRY=0
      RFILE=STATE
      RETURN
23012 CONTINUE
      RFILE=65
      RETURN
23013 CONTINUE
      GOTO 23009
23008 CONTINUE
      IF(.NOT.(STATUS.EQ.70))GOTO 23014
      IF(.NOT.(NUM.NE.N))GOTO 23016
      RFILE=65
      RETURN
23016 CONTINUE
      PACKET(LEN+1)=13
      PACKET(LEN+2)=10002
      CALL VERIFY(PACKET)
      IF(.NOT.(HOST.EQ.0))GOTO 23018
      AONE=1
      BONE=1
      A12=12
      CALL SCOPY(RECEIVING,AONE,ALIN,BONE)
      CALL SCOPY(PACKET,AONE,ALIN,A12)
      CALL PUTLIN(ALIN,LOCALOUTFD)
      ALIN(1)=10
      ALIN(2)=10002
      CALL PUTLIN(ALIN,LOCALOUTFD)
      CALL REMARK(" Packet # ")
23018 CONTINUE
      FD=RATOPEN(PACKET,1)
      IF(.NOT.(FD.EQ.10001))GOTO 23020
      CALL CANT(PACKET)
      RFILE=65
      RETURN
23020 CONTINUE
      TNUM=N
      CALL SPACK(89,TNUM,0,0)
      ODLTRY=NUMTRY
      NUMTRY=0
      N=MOD((N+1),64)
      RFILE=68
      RETURN
23014 CONTINUE
      IF(.NOT.(STATUS.EQ.66))GOTO 23022
      IF(.NOT.(NUM.NE.N))GOTO 23024
      RFILE=65
      RETURN
23024 CONTINUE
      TNUM=N
      CALL SPACK(89,TNUM,0,0)
      RFILE=67
      RETURN
23022 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23026
      RFILE=STATE
      TNUM=N
      CALL SPACK(78,TNUM,0,0)
      RETURN
23026 CONTINUE
      RFILE=65
23027 CONTINUE
23023 CONTINUE
23015 CONTINUE
23009 CONTINUE
23003 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC    RINIT.FT       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION RINIT(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER LEN,NUM,STATUS,RPACK,X,TNUM
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23000
      RINIT=65
      RETURN
23000 CONTINUE
      NUMTRY=NUMTRY+1
23001 CONTINUE
      STATUS=RPACK(LEN,NUM,PACKET)
      IF(.NOT.(STATUS.EQ.83))GOTO 23002
      CALL RPAR(PACKET)
      CALL SPAR(PACKET)
      TNUM=N
      CALL SPACK(89,TNUM,6,PACKET)
      OLDTRY=NUMTRY
      NUMTRY=0
      N=MOD((N+1),64)
      RINIT=70
      RETURN
23002 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23004
      RINIT=STATE
      TNUM=N
      CALL SPACK(78,TNUM,0,0)
      RETURN
23004 CONTINUE
      RINIT=65
23005 CONTINUE
23003 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  RPACK.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION RPACK(LEN,NUM,XDATA)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER LEN,NUM,CH
      INTEGER KGETLIN,IBMGETLIN
      INTEGER XDATA(1)
      INTEGER I,COUNT,STATUS,UNCHAR,J,K,IDC1,T1,IBYTE
      INTEGER XCOUNT,TEMP,MAILID
      INTEGER CHKSUM,T,XTYPE,BUFFER(132)
      IDC1=03400K
      CHKSUM=0
      IF(.NOT.(IBM.EQ.-1))GOTO 23000
      XCOUNT=8
      GOTO 23001
23000 CONTINUE
      XCOUNT=2
23001 CONTINUE
      I=1
      CH=RMTINFD
23002 IF(.NOT.(I.LE.XCOUNT))GOTO 23003
      IF(.NOT.(IBM.EQ.-1))GOTO 23004
      STATUS=IBMGETLIN(BUFFER,CH)
      GOTO 23005
23004 CONTINUE
      STATUS=KGETLIN(BUFFER,CH)
23005 CONTINUE
      COUNT=1
23006 IF(.NOT.((BUFFER(COUNT).NE.1 ).AND.(BUFFER(COUNT).NE.10002)))GOTO
     *23007
      COUNT=COUNT+1
      GOTO 23006
23007 CONTINUE
      IF(.NOT.(BUFFER(COUNT).EQ.1 ))GOTO 23008
      K=COUNT+1
      CHKSUM=BUFFER(K)
      LEN=UNCHAR(BUFFER(K))-3
      K=K+1
      CHKSUM=CHKSUM+BUFFER(K)
      NUM=UNCHAR(BUFFER(K))
      K=K+1
      XTYPE=BUFFER(K)
      CHKSUM=CHKSUM+BUFFER(K)
      K=K+1
      J=1
23010 IF(.NOT.(J.LE.LEN))GOTO 23012
      XDATA(J)=BUFFER(K)
      CHKSUM=CHKSUM+BUFFER(K)
      K=K+1
      COUNT=J
23011 J=J+1
      GOTO 23010
23012 CONTINUE
      XDATA(COUNT+1)=0
      T=BUFFER(K)
      CHKSUM=(CHKSUM+(CHKSUM.AND.192)/64).AND.63
      IF(.NOT.(CHKSUM.NE.UNCHAR(T)))GOTO 23013
      RPACK=0
      RETURN
23013 CONTINUE
      RPACK=XTYPE
      RETURN
23008 CONTINUE
      I=I+1
      GOTO 23002
23003 CONTINUE
      RPACK=0
      RETURN
      END
CCCCCCCCCCCCC   RPAR.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE RPAR(XDATA)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER XDATA(1)
      INTEGER UNCHAR,CTL
      SPSIZ=UNCHAR(XDATA(1))
      PAD=UNCHAR(XDATA(3))
      PADCHAR=CTL(XDATA(4))
      EOL=UNCHAR(XDATA(5))
      QUOTE=XDATA(6)
      RETURN
      END
CCCCCCCCCCCCC SBREAK.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION SBREAK(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER NUM,LEN,RPACK,STATUS,X,TNUM
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23000
      SBREAK=65
      RETURN
23000 CONTINUE
      NUMTRY=NUMTRY+1
23001 CONTINUE
      TNUM=N
      CALL SPACK(66,TNUM,0,PACKET)
      STATUS=RPACK(LEN,NUM,RECPKT)
      IF(.NOT.(STATUS.EQ.78))GOTO 23002
      IF(.NOT.(N.NE.(NUM-1)))GOTO 23004
      SBREAK=STATE
      RETURN
23004 CONTINUE
      GOTO 23003
23002 CONTINUE
      IF(.NOT.(STATUS.EQ.89))GOTO 23006
      IF(.NOT.(N.NE.NUM))GOTO 23008
      SBREAK=STATE
      RETURN
23008 CONTINUE
      NUMTRY=0
      N=MOD((N+1),64)
      SBREAK=67
      RETURN
23006 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23010
      SBREAK=STATE
      RETURN
23010 CONTINUE
      SBREAK=65
23011 CONTINUE
23007 CONTINUE
23003 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC   SCOPY.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       SUBROUTINE SCOPY(FROM, I, TO, J)
      INTEGER FROM(10000), TO(10000)
      INTEGER I, J, K1, K2
      K2 = J
      K1 = I
23000 IF(.NOT.(FROM(K1) .NE. 10002))GOTO 23002
      TO(K2) = FROM(K1)
      K2 = K2 + 1
23001 K1 = K1 + 1
      GOTO 23000
23002 CONTINUE
      TO(K2) = 10002
      RETURN
      END
CCCCCCCCCCCCC  SDATA.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION SDATA(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER XPACK(10)
      DATA XPACK(1),XPACK(2),XPACK(3),XPACK(4),XPACK(5),XPACK(6),XPACK(7
     *),XPACK(8),XPACK(9),XPACK(10)/80,97,99,107,101,116,32,35,32,10002/
      INTEGER X,NUM,LEN,BUFILL,STATUS,RPACK,TNUM
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23000
      SDATA=65
      RETURN
23000 CONTINUE
      NUMTRY=NUMTRY+1
23001 CONTINUE
      TNUM=N
      CALL SPACK(68,TNUM,SIZE,PACKET)
      IF(.NOT.(HOST.EQ.0))GOTO 23002
      CALL PUTDEC(NUM,4)
      CALL PUTC(13)
      CALL FLUSH(1)
23002 CONTINUE
      STATUS=RPACK(LEN,NUM,RECPKT)
      IF(.NOT.((STATUS.EQ.89).AND.(N.EQ.(NUM+1))))GOTO 23004
      STATUS=RPACK(LEN,NUM,RECPKT)
23004 CONTINUE
      IF(.NOT.(STATUS.EQ.78))GOTO 23006
      IF(.NOT.(N.NE.(NUM-1)))GOTO 23008
      SDATA=STATE
      RETURN
23008 CONTINUE
      GOTO 23007
23006 CONTINUE
      IF(.NOT.(STATUS.EQ.89))GOTO 23010
      IF(.NOT.(N.NE.NUM))GOTO 23012
      SDATA=STATE
      RETURN
23012 CONTINUE
      NUMTRY=0
      N=MOD((N+1),64)
      SIZE=BUFILL(PACKET)
      IF(.NOT.(SIZE.EQ.10003))GOTO 23014
      SDATA=90
      RETURN
23014 CONTINUE
      SDATA=68
      RETURN
23010 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23016
      SDATA=STATE
      RETURN
23016 CONTINUE
      SDATA=65
23017 CONTINUE
23011 CONTINUE
23007 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC SENDSW.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION SENDSW(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER X,STATUS
      INTEGER SDATA,SFILE,SEOF,SINIT,SBREAK
      STATE=83
      N=0
      EOL=13
      NUMTRY=0
      STATUS=1
23000 IF(.NOT.(STATUS.EQ.1))GOTO 23001
      IF(.NOT.(STATE.EQ.68))GOTO 23002
      STATE=SDATA(X)
      GOTO 23003
23002 CONTINUE
      IF(.NOT.(STATE.EQ.70))GOTO 23004
      STATE=SFILE(X)
      GOTO 23005
23004 CONTINUE
      IF(.NOT.(STATE.EQ.90))GOTO 23006
      STATE=SEOF(X)
      GOTO 23007
23006 CONTINUE
      IF(.NOT.(STATE.EQ.83))GOTO 23008
      STATE=SINIT(X)
      GOTO 23009
23008 CONTINUE
      IF(.NOT.(STATE.EQ.66))GOTO 23010
      STATE=SBREAK(X)
      GOTO 23011
23010 CONTINUE
      IF(.NOT.(STATE.EQ.67))GOTO 23012
      SENDSW=-1
      RETURN
23012 CONTINUE
      IF(.NOT.(STATE.EQ.65))GOTO 23014
      SENDSW=0
      RETURN
23014 CONTINUE
      STATUS=0
      SENDSW=0
23015 CONTINUE
23013 CONTINUE
23011 CONTINUE
23009 CONTINUE
23007 CONTINUE
23005 CONTINUE
23003 CONTINUE
      GOTO 23000
23001 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC    SEOF.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION SEOF(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER NUM,LEN,STATUS,RPACK,X,TNUM,TEMP
      INTEGER XY
      INTEGER ALIN(132)
      INTEGER AONE,BONE
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23000
      SEOF=65
      RETURN
23000 CONTINUE
      NUMTRY=NUMTRY+1
23001 CONTINUE
      AONE=1
      BONE=1
      TNUM=N
      CALL SPACK(90,TNUM,0,PACKET)
      STATUS=RPACK(LEN,NUM,RECPKT)
      IF(.NOT.(STATUS.EQ.78))GOTO 23002
      IF(.NOT.(N.NE.(NUM-1)))GOTO 23004
      SEOF=STATE
      RETURN
23004 CONTINUE
      GOTO 23003
23002 CONTINUE
      IF(.NOT.(STATUS.EQ.89))GOTO 23006
      IF(.NOT.(N.NE.NUM))GOTO 23008
      SEOF=STATE
      RETURN
23008 CONTINUE
      NUMTRY=0
      CALL RATCLOSE(FD)
      N=MOD((N+1),64)
      TEMP=GETLIN(FILNAM,MOREFD)
      IF(.NOT.(TEMP.EQ.10003))GOTO 23010
      CALL RATCLOSE(MOREFD)
      SEOF=66
      RETURN
23010 CONTINUE
      K=1
23012 IF(.NOT.(FILNAM(K).NE.10002))GOTO 23013
      IF(.NOT.(FILNAM(K).EQ.10))GOTO 23014
      FILNAM(K)=13
23014 CONTINUE
      K=K+1
      GOTO 23012
23013 CONTINUE
      FD=RATOPEN(FILNAM,0)
      IF(.NOT.(FD.EQ.10001))GOTO 23016
      TEMP=1
23018 IF(.NOT.(TEMP.EQ.1))GOTO 23019
      XY=GETLIN(ALIN,MOREFD)
      IF(.NOT.(XY.EQ.10003))GOTO 23020
      SEOF=66
      CALL RATCLOSE(MOREFD)
      RETURN
23020 CONTINUE
      CALL SCOPY(ALIN,AONE,FILNAM,BONE)
      FD=RATOPEN(FILANM,0)
      IF(.NOT.(FD.NE.10001))GOTO 23022
      TEMP=0
23022 CONTINUE
23021 CONTINUE
      GOTO 23018
23019 CONTINUE
      SEOF=70
      RETURN
23016 CONTINUE
      SEOF=70
      RETURN
23017 CONTINUE
23011 CONTINUE
      GOTO 23007
23006 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23024
      SEOF=STATE
      RETURN
23024 CONTINUE
      SEOF=65
23025 CONTINUE
23007 CONTINUE
23003 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC   SFILE.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION SFILE(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER NUM,LEN,COUNT,RPACK,BUFILL,X,TNUM
      INTEGER AONE,ATEN,BONE
      INTEGER ALIN(132)
      INTEGER SENDING(10)
      DATA SENDING(1),SENDING(2),SENDING(3),SENDING(4),SENDING(5),SENDIN
     *G(6),SENDING(7),SENDING(8),SENDING(9),SENDING(10)/32,83,101,110,10
     *0,105,110,103,32,10002/
      IF(.NOT.(HOST.EQ.0))GOTO 23000
      AONE=1
      BONE=1
      ATEN=10
      CALL SCOPY(SENDING,AONE,ALIN,BONE)
      CALL SCOPY(FILNAM,AONE,ALIN,ATEN)
      CALL PUTLIN(ALIN,LOCALOUTFD)
      ALIN(1)=10
      ALIN(2)=10002
      CALL PUTLIN(ALIN,LOCALOUTFD)
      CALL REMARK(" Packet #")
23000 CONTINUE
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23002
      SFILE=65
      RETURN
23002 CONTINUE
      NUMTRY=NUMTRY+1
23003 CONTINUE
      LEN=1
23004 IF(.NOT.(FILNAM(LEN).NE.10002))GOTO 23005
      LEN=LEN+1
      GOTO 23004
23005 CONTINUE
      LEN=LEN-2
      TNUM=N
      CALL SPACK(70,TNUM,LEN,FILNAM)
      STATUS=RPACK(LEN,NUM,RECPKT)
      IF(.NOT.(STATUS.EQ.78))GOTO 23006
      IF(.NOT.(N.NE.(NUM-1)))GOTO 23008
      SFILE=STATE
      RETURN
23008 CONTINUE
      GOTO 23007
23006 CONTINUE
      IF(.NOT.(STATUS.EQ.89))GOTO 23010
      IF(.NOT.(N.NE.NUM))GOTO 23012
      SFILE=STATE
      RETURN
23012 CONTINUE
      NUMTRY=0
      N=MOD((N+1),64)
      SIZE=BUFILL(PACKET)
      SFILE=68
      RETURN
23010 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23014
      SFILE=STATE
      RETURN
23014 CONTINUE
      SFILE=65
      RETURN
23015 CONTINUE
23011 CONTINUE
23007 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  SINIT.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION SINIT(X)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER NUM,LEN,STATUS,RPACK,X,TNUM,TEMP
      INTEGER XY,JJ
      INTEGER ALIN(132)
      INTEGER AONE,BONE
      INTEGER MOREFILE(9)
      DATA MOREFILE(1),MOREFILE(2),MOREFILE(3),MOREFILE(4),MOREFILE(5),M
     *OREFILE(6),MOREFILE(7),MOREFILE(8),MOREFILE(9)/77,79,82,69,70,73,7
     *6,69,10002/
      INTEGER TFILE(5)
      DATA TFILE(1),TFILE(2),TFILE(3),TFILE(4),TFILE(5)/116,101,115,116,
     *10002/
      IF(.NOT.(NUMTRY.GT.5 ))GOTO 23000
      SINIT=65
      RETURN
23000 CONTINUE
      NUMTRY=NUMTRY+1
23001 CONTINUE
      AONE=1
      BONE=1
      CALL SPAR(PACKET)
      TNUM=N
      CALL SPACK(83,TNUM,6,PACKET)
      STATUS=RPACK(LEN,NUM,RECPKT)
      IF(.NOT.(STATUS.EQ.78))GOTO 23002
      IF(.NOT.(N.NE.(NUM-1)))GOTO 23004
      SINIT=STATE
      RETURN
23004 CONTINUE
      GOTO 23003
23002 CONTINUE
      IF(.NOT.(STATUS.EQ.89))GOTO 23006
      IF(.NOT.(N.NE.NUM))GOTO 23008
      SINIT=STATE
      CALL REMARK("num seq don't match in sinit")
      RETURN
23008 CONTINUE
      CALL RPAR(RECPKT)
      IF(.NOT.(EOL.EQ.0))GOTO 23010
      EOL=13
23010 CONTINUE
      IF(.NOT.(QUOTE.EQ.0))GOTO 23012
      QUOTE=35
23012 CONTINUE
      NUMTRY=0
      N=MOD((N+1),64)
      MOREFD=RATOPEN(MOREFILE,0)
      TEMP=1
23014 IF(.NOT.(TEMP.EQ.1))GOTO 23015
      XY=GETLIN(ALIN,MOREFD)
      IF(.NOT.(XY.EQ.10003))GOTO 23016
      SINIT=65
      CALL RATCLOSE(MOREFD)
      RETURN
23016 CONTINUE
      CALL SCOPY(ALIN,AONE,FILNAM,BONE)
      I=1
23018 IF(.NOT.(FILNAM(I).NE.10002))GOTO 23019
      IF(.NOT.(FILNAM(I).EQ.10))GOTO 23020
      FILNAM(I)=13
23020 CONTINUE
      I=I+1
      GOTO 23018
23019 CONTINUE
      FD=RATOPEN(FILNAM,0)
      IF(.NOT.(FD.NE.10001))GOTO 23022
      TEMP=0
23022 CONTINUE
23017 CONTINUE
      GOTO 23014
23015 CONTINUE
      SINIT=70
      RETURN
23006 CONTINUE
      IF(.NOT.(STATUS.EQ.0))GOTO 23024
      SINIT=STATE
      RETURN
23024 CONTINUE
      SINIT=65
23025 CONTINUE
23007 CONTINUE
23003 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC   SPACK.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE SPACK(XTYPE,NUM,LEN,XDATA)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER XTYPE,XDATA(1)
      INTEGER NUM,LEN,CH
      INTEGER I,IER,COUNT,TOCHAR
      INTEGER CHKSUM,BUFFER(100)
      CH=RMTOUTFD
      I=1
23000 IF(.NOT.(I.LE.PAD))GOTO 23001
      CALL KPUTCH(PADCHAR,CH)
      I=I+1
      GOTO 23000
23001 CONTINUE
      COUNT=1
      BUFFER(COUNT)=1
      COUNT=COUNT+1
      CHKSUM=TOCHAR(LEN+3)
      BUFFER(COUNT)=TOCHAR(LEN+3)
      COUNT=COUNT+1
      CHKSUM=CHKSUM+TOCHAR(NUM)
      BUFFER(COUNT)=TOCHAR(NUM)
      COUNT=COUNT+1
      CHKSUM=CHKSUM+XTYPE
      BUFFER(COUNT)=XTYPE
      COUNT=COUNT+1
      I=1
23002 IF(.NOT.(I.LE.LEN))GOTO 23004
      BUFFER(COUNT)=XDATA(I)
      COUNT=COUNT+1
      CHKSUM=CHKSUM+XDATA(I)
23003 I=I+1
      GOTO 23002
23004 CONTINUE
      CHKSUM=(CHKSUM+(CHKSUM.AND.192)/64).AND.63
      BUFFER(COUNT)=TOCHAR(CHKSUM)
      COUNT=COUNT+1
      BUFFER(COUNT)=EOL
      BUFFER(COUNT+1)=10002
      COUNT=1
      CH=RMTOUTFD
23005 IF(.NOT.(BUFFER(COUNT).NE.10002))GOTO 23006
      CALL KPUTCH(BUFFER(COUNT),CH)
      COUNT=COUNT+1
      GOTO 23005
23006 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  SPAR.FT          CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE SPAR(XDATA)
      IMPLICIT INTEGER (A-Z)
      COMMON /KER/ N,RPSIZ,SPSIZ,PAD,NUMTRY,OLDTRY, FD,RMTINFD,RMTOUTFD,
     *STATE,PADCHAR, EOL,ESCHAR,QUOTE,FILNAM(132),RECPKT(94 ), PACKET(94
     * ),SIZE,MOREFD,IBM,HOST, LOCALINFD,LOCALOUTFD,SPEED
      INTEGER XDATA(1)
      INTEGER CTL,TOCHAR
      XDATA(1)=TOCHAR(94 )
      XDATA(2)=TOCHAR(0)
      XDATA(3)=TOCHAR(0 )
      XDATA(4)=CTL(0 )
      XDATA(5)=TOCHAR(13 )
      XDATA(6)=35
      RETURN
      END
CCCCCCCCCCCCC  SSCOPY.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE SSCOPY (FROM, TO)
      INTEGER FROM(1), TO(1)
      I = 0
23000 CONTINUE
      I=I+1
      TO(I)=FROM(I)
23001 IF(.NOT.(((TO(I).AND.177400K).EQ.0) .OR. ((TO(I).AND.377K).EQ.0)))
     *GOTO 23000
23002 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  STDIO.FT         CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE STDIO (STDIN, STDOUT, STDERR, STDCOM)                  ;00003
      INTEGER           STDIN, STDOUT, STDERR, STDCOM                   ;00004
      INCLUDE "F5ERR.FR"        ;NEEDED TO DEFINE EREOF BELOW           ;00072
      PARAMETER NULL = 0        ;ASCII NULL                             ;00074
      PARAMETER DEL  = 255      ;ASCII DEL                              ;00075
      INTEGER ARG(70), SW(2)                                            ;00077
      INTEGER INNAME(70), OUTNAME(70), ERRNAME(70)                      ;00078
      LOGICAL ISET, OSET, PIPE                                          ;00079
      LOGICAL APPOUT, DELERR                                            ;00080
      LOGICAL PSW, ISW, OSW, LSW, ESW, ASW, DSW                         ;00081
      LOGICAL NULLARG, COMEOF                                           ;00082
      COMMON /STD/ SINNAME, SOUTNAME, SERRNAME, LPTNAME                 ;00084
      INTEGER SINNAME(3), SOUTNAME(4), SERRNAME(4), LPTNAME(3)          ;00085
      DATA SINNAME  / "ST", "DI", "N<0>" /                              ;00086
      DATA SOUTNAME / "ST", "DO", "UT", 0 /                             ;00087
      DATA SERRNAME / "ST", "DE", "RR", 0 /                             ;00088
      DATA LPTNAME  / "$L", "PT", 0 /                                   ;00089
      CALL SSCOPY (SINNAME, INNAME)                                     ;00093
      CALL GCOUT (OUTNAME, IER)                                         ;00094
      CALL GCOUT (ERRNAME, IER)                                         ;00095
      ISET = .FALSE.                                                    ;00096
      OSET = .FALSE.                                                    ;00097
      PIPE = .FALSE.                                                    ;00098
      COMEOF = .FALSE.                                                  ;00099
      CALL COMINIT(STDCOM,IER)                                          ;00102
      CALL CHECK(IER)                                                   ;00103
      ASSIGN 32758 TO I32759                                            ;00106
      GO TO 32759                                                       ;00106
32758 IF(.NOT.(PSW)) GO TO 32757                                        ;00107
      ASSIGN 32755 TO I32756                                            ;00107
      GO TO 32756                                                       ;00107
32755 CONTINUE                                                          ;00107
32757 IF(.NOT.(ISW)) GO TO 32754                                        ;00108
      ASSIGN 32752 TO I32753                                            ;00108
      GO TO 32753                                                       ;00108
32752 CONTINUE                                                          ;00108
32754 IF(.NOT.(OSW)) GO TO 32751                                        ;00109
      ASSIGN 32749 TO I32750                                            ;00109
      GO TO 32750                                                       ;00109
32749 CONTINUE                                                          ;00109
32751 IF(.NOT.(LSW)) GO TO 32748                                        ;00110
      ASSIGN 32746 TO I32747                                            ;00110
      GO TO 32747                                                       ;00110
32746 CONTINUE                                                          ;00110
32748 IF(.NOT.(ESW)) GO TO 32745                                        ;00111
      ASSIGN 32743 TO I32744                                            ;00111
      GO TO 32744                                                       ;00111
32743 CONTINUE                                                          ;00111
32745 APPOUT = ASW                                                      ;00112
      DELERR = DSW                                                      ;00113
32742 CONTINUE                                                          ;00116
      ASSIGN 32740 TO I32759                                            ;00117
      GO TO 32759                                                       ;00117
32740 IF(COMEOF) GO TO 32741                                            ;00118
      IF(.NOT.(PSW)) GO TO 32739                                        ;00119
      ASSIGN 32738 TO I32756                                            ;00120
      GO TO 32756                                                       ;00120
32738 DELERR = DELERR .OR. DSW                                          ;00121
      APPOUT = APPOUT .OR. ASW                                          ;00122
32739 IF(.NOT.(ISW)) GO TO 32737                                        ;00124
      IF(.NOT.(NULLARG)) GO TO 32733                                    ;00125
      ASSIGN 32736 TO I32753                                            ;00125
      GO TO 32753                                                       ;00125
32732 CONTINUE                                                          ;00126
32736 CONTINUE                                                          ;00127
32737 IF(.NOT.(OSW)) GO TO 32731                                        ;00128
      IF(.NOT.(NULLARG)) GO TO 32729                                    ;00129
      ASSIGN 32730 TO I32750                                            ;00129
      GO TO 32750                                                       ;00129
32729 ASSIGN 32726 TO I32727                                            ;00130
      GO TO 32727                                                       ;00130
32726 CONTINUE                                                          ;00130
32730 CONTINUE                                                          ;00131
32731 IF(.NOT.(LSW)) GO TO 32725                                        ;00132
      IF(.NOT.(NULLARG)) GO TO 32723                                    ;00133
      ASSIGN 32724 TO I32747                                            ;00133
      GO TO 32747                                                       ;00133
32723 ASSIGN 32721 TO I32727                                            ;00134
      GO TO 32727                                                       ;00134
32721 CONTINUE                                                          ;00134
32724 CONTINUE                                                          ;00135
32725 IF(.NOT.(ESW)) GO TO 32742                                        ;00136
      IF(.NOT.(NULLARG)) GO TO 32716                                    ;00137
      ASSIGN 32719 TO I32744                                            ;00137
      GO TO 32744                                                       ;00137
32715 CONTINUE                                                          ;00138
32719 CONTINUE                                                          ;00139
      GO TO 32742                                                       ;00140
32741 IF(.NOT.(PIPE)) GO TO 32714                                       ;00142
      CALL DFILW (SINNAME, IER)                                         ;00143
      CALL RENAME (SOUTNAME, SINNAME, IER)                              ;00144
32714 IF(.NOT.(STDIN .GE. 0)) GO TO 32713                               ;00148
      CALL OPEN (STDIN, INNAME, 2, IER)                                 ;00149
32713 IF(.NOT.(STDOUT .GE. 0)) GO TO 32712                              ;00152
      IF(.NOT.(APPOUT)) CALL DFILW (OUTNAME, IER)                       ;00153
      CALL CFILW (OUTNAME, 2, IER)                                      ;00154
      CALL APPEND (STDOUT, OUTNAME, 0, IER)                             ;00155
      IF (IER .NE. 1) STOP "Can't open STDOUT"                          ;00156
32712 IF(.NOT.(STDERR .GE. 0)) GO TO 32711                              ;00159
      IF (DELERR) CALL DFILW (ERRNAME, IER)                             ;00160
      CALL CFILW (ERRNAME, 2, IER)                                      ;00161
      CALL APPEND (STDERR, ERRNAME, 0, IER)                             ;00162
      IF (IER .NE. 1) STOP "Can't open STDERR"                          ;00163
32711 RETURN                                                            ;00166
32759 CONTINUE                                                          ;00168
      CALL COMARG(STDCOM,ARG,SW,IER)                                    ;00169
      IF (IER .NE. 1 .AND. IER .NE. EREOF) CALL CHECK(IER)              ;00170
      COMEOF = (IER .NE. 1) .OR. BYTE(ARG,1) .EQ. DEL                   ;00172
      NULLARG = COMEOF .OR. BYTE(ARG,1) .EQ. NULL                       ;00173
      PSW = ITEST(SW(1), 0) .EQ. 1                                      ;00175
      ISW = ITEST(SW(1), 7) .EQ. 1                                      ;00176
      OSW = ITEST(SW(1), 1) .EQ. 1                                      ;00177
      LSW = ITEST(SW(1), 4) .EQ. 1                                      ;00178
      ESW = ITEST(SW(1),11) .EQ. 1                                      ;00179
      DSW = ITEST(SW(1),12) .EQ. 1                                      ;00180
      ASW = ITEST(SW(1),15) .EQ. 1                                      ;00181
      GO TO I32759                                                      ;00182
32756 CONTINUE                                                          ;00184
      IF(.NOT.(ISET)) CALL SSCOPY (SINNAME, INNAME)                     ;00185
      IF(.NOT.(OSET)) CALL SSCOPY (SOUTNAME, OUTNAME)                   ;00186
      ISET = .TRUE.                                                     ;00187
      OSET = .TRUE.                                                     ;00188
      PIPE = .TRUE.                                                     ;00189
      GO TO I32756                                                      ;00190
32753 CONTINUE                                                          ;00192
      CALL GCIN (INNAME, IER)                                           ;00193
      ISET = .TRUE.                                                     ;00194
      GO TO I32753                                                      ;00195
32750 CONTINUE                                                          ;00197
      CALL SSCOPY (SOUTNAME, OUTNAME)                                   ;00198
      OSET = .TRUE.                                                     ;00199
      GO TO I32750                                                      ;00200
32747 CONTINUE                                                          ;00202
      CALL SSCOPY (LPTNAME, OUTNAME)                                    ;00203
      OSET = .TRUE.                                                     ;00204
      GO TO I32747                                                      ;00205
32744 CONTINUE                                                          ;00207
      CALL SSCOPY (SERRNAME, ERRNAME)                                   ;00208
      GO TO I32744                                                      ;00209
32733 CONTINUE                                                          ;00211
      CALL SSCOPY (ARG, INNAME)                                         ;00212
      ISET = .TRUE.                                                     ;00213
      GO TO 32732                                                       ;00214
32727 CONTINUE                                                          ;00216
      CALL SSCOPY (ARG, OUTNAME)                                        ;00217
      OSET = .TRUE.                                                     ;00218
      GO TO I32727                                                      ;00219
32716 CONTINUE                                                          ;00221
      CALL SSCOPY (ARG, ERRNAME)                                        ;00222
      GO TO 32715                                                       ;00223
      END                                                               ;00225
CCCCCCCCCCCCC   STDOPEN.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE STDOPEN
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      CALL STDIO (0, 1, 2, 3)
      CALL STDSETUP(0, 1, 2)
      RETURN
      END
CCCCCCCCCCCCC STDSETUP.FT       CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE STDSETUP (FDI, FDO, FDE)
      INTEGER FDI, FDO, FDE
      COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0
     *:15), IC(0:15), MD(0:15)
      INTEGER CHANNEL
      INTEGER APOS
      INTEGER VPOS
      INTEGER LINEBUF
      INTEGER NC
      INTEGER IC
      INTEGER MD
      DATA CHANNEL /10001, 15*10001/
      DATA APOS / 32767 /
      DATA VPOS / 32767 /
      DATA NC / 0, 15*0 /
      DATA IC / 1, 15*1 /
      DATA MD / 2, 15*2 /
      CHANNEL(3) = 0
      CHANNEL(6) = 1
      CHANNEL(10) = 1
      CHANNEL(11) = 0
      CHANNEL(12) = 1
      IF(.NOT.(FDI.GE.0))GOTO 23000
      CHANNEL(FDI) = 0
23000 CONTINUE
      IF(.NOT.(FDO.GE.0))GOTO 23002
      CHANNEL(FDO) = 1
23002 CONTINUE
      IF(.NOT.(FDE.GE.0))GOTO 23004
      CHANNEL(FDE) = 1
23004 CONTINUE
      RETURN
      END
CCCCCCCCCCCCC  TOCHAR.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION TOCHAR(CH)
      INTEGER CH
      TOCHAR=CH+32
      RETURN
      END
CCCCCCCCCCCCC    UNCHAR.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER FUNCTION UNCHAR(CH)
      INTEGER CH
      UNCHAR=CH-32
      RETURN
      END
CCCCCCCCCCCCC     UPPER.FT      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE UPPER(ALIN,BLIN)
      IMPLICIT INTEGER (A-Z)
      INTEGER ALIN(132)
      INTEGER BLIN(132)
      INTEGER UCASE(27)
      DATA UCASE(1),UCASE(2),UCASE(3),UCASE(4),UCASE(5),UCASE(6),UCASE(7
     *),UCASE(8),UCASE(9),UCASE(10),UCASE(11),UCASE(12),UCASE(13),UCASE(
     *14),UCASE(15),UCASE(16),UCASE(17),UCASE(18),UCASE(19),UCASE(20),UC
     *ASE(21),UCASE(22),UCASE(23),UCASE(24),UCASE(25),UCASE(26),UCASE(27
     *)/65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,8
     *6,87,88,89,90,10002/
      A1=1
23000 IF(.NOT.(ALIN(A1).NE.10002))GOTO 23001
      IF(.NOT.((ALIN(A1).GT.96).AND.(ALIN(A1).LT.123)))GOTO 23002
      BLIN(A1)=UCASE((ALIN(A1)-32-64))
      GOTO 23003
23002 CONTINUE
      BLIN(A1)=ALIN(A1)
23003 CONTINUE
      A1=A1+1
      GOTO 23000
23001 CONTINUE
      BLIN(A1)=10002
      RETURN
      END
CCCCCCCCCCCCC  VERIFY.FT        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      SUBROUTINE VERIFY(INFILE)
      INTEGER INFILE(132)
      INTEGER OUTFILE(132)
      INTEGER AONE,BONE,TEMP
      AONE=1
      BONE=1
      TEMP=1
23000 IF(.NOT.((INFILE(TEMP).NE.10002).AND.(INFILE(TEMP).NE.13)))GOTO 23
     *001
      IF(.NOT.((INFILE(TEMP).GT.64).AND.(INFILE(TEMP).LT.91)))GOTO 23002
      OUTFILE(TEMP)=INFILE(TEMP)
      GOTO 23003
23002 CONTINUE
      IF(.NOT.((INFILE(TEMP).GT.47).AND.(INFILE(TEMP).LT.58)))GOTO 23004
      OUTFILE(TEMP)=INFILE(TEMP)
      GOTO 23005
23004 CONTINUE
      OUTFILE(TEMP)=46
23005 CONTINUE
23003 CONTINUE
      TEMP=TEMP+1
      GOTO 23000
23001 CONTINUE
      OUTFILE(TEMP)=10002
      CALL SCOPY(OUTFILE,AONE,INFILE,BONE)
      INFILE(11)=10002
      RETURN
      END
CCCCCCCCCCCC    THE END  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
