      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER A$BUF(200)
      INTEGER CSW,FILE,MODE,REC
      INTEGER BLKSP0,CONVS0,CHECK0,CHECL0,POSSP0,POSIT0,READW0,UNITS0
      INTEGER USAGE(78)
      INTEGER AAAAA0
      INTEGER PARSCL
      INTEGER AAAAB0(25)
      INTEGER AAAAC0(24)
      INTEGER AAAAD0(22)
      DATA USAGE/213,243,225,231,229,186,160,237,244,160,219,188,245,238
     *,233,244,190,221,160,219,173,240,160,188,240,239,243,190,221,160,2
     *19,173,168,242,252,247,169,160,219,173,226,160,188,226,236,239,227
     *,235,190,221,160,219,173,227,160,188,227,239,238,246,190,221,160,2
     *51,188,230,233,236,229,190,253,221,160,219,173,246,221,0/
      DATA AAAAB0/240,188,242,243,190,226,188,242,243,190,227,188,242,24
     *3,190,238,188,233,231,238,190,242,247,246,0/
      DATA AAAAC0/170,233,160,242,229,227,239,246,229,242,229,228,160,23
     *3,175,239,160,229,242,242,239,242,243,0/
      DATA AAAAD0/160,168,170,233,160,195,210,195,160,227,239,242,242,22
     *9,227,244,233,239,238,243,169,0/
      IF((UNITS0(UNITA0).NE.-3))GOTO 10001
        CALL ERROR(USAGE)
10001 IF((CHECL0(CSW).NE.-3))GOTO 10002
        AAAAA0=1
        GOTO 10000
10003 CONTINUE
10002 IF((PARSCL(AAAAB0,A$BUF).NE.-3))GOTO 10004
        CALL ERROR(USAGE)
10004 IF((A$BUF(242-225+1).EQ.0))GOTO 10005
      IF((A$BUF(247-225+1).EQ.0))GOTO 10005
        CALL ERROR(USAGE)
10005 CONVA0=0
      RECSI0=80
      BLKSI0=800
      CORRE0=0
      RECOV0=0
      VERBO0=0
      IF((A$BUF(246-225+1).EQ.0))GOTO 10006
        VERBO0=1
10006 IF((A$BUF(226-225+1).EQ.0))GOTO 10007
      IF((BLKSP0(A$BUF(A$BUF(226-225+27)),RECSI0,BLKSI0).NE.-3))GOTO 100
     *07
        AAAAA0=2
        GOTO 10000
10008 CONTINUE
10007 IF((A$BUF(227-225+1).EQ.0))GOTO 10009
      IF((CONVS0(A$BUF(A$BUF(227-225+27)),CONVA0).NE.-3))GOTO 10009
        AAAAA0=3
        GOTO 10000
10010 CONTINUE
10009 IF((CONVA0.NE.1))GOTO 10011
        BLKSI0=(BLKSI0+1)/2
10011 IF((CHECK0(CONVA0,RECSI0,BLKSI0).NE.-3))GOTO 10012
        AAAAA0=4
        GOTO 10000
10013 CONTINUE
10012 IF((A$BUF(240-225+1).EQ.0))GOTO 10014
        IF((POSSP0(A$BUF(A$BUF(240-225+27)),MODE,FILE,REC).EQ.-3))GOTO 1
     *0016
        IF((POSIT0(MODE,FILE,REC).EQ.-3))GOTO 10016
        GOTO 10015
10016     AAAAA0=5
          GOTO 10000
10017   CONTINUE
10015 CONTINUE
10014 BADDR0(1)=LOC(BUFFE0)
      BADDR0(2)=LOC(BUFFF0)
      IF((A$BUF(242-225+1).EQ.0))GOTO 10018
        CSW=READW0(1)
        GOTO 10019
10018   IF((A$BUF(247-225+1).EQ.0))GOTO 10020
          CSW=READW0(2)
10020 CONTINUE
10019 IF((CSW.NE.-3))GOTO 10021
        AAAAA0=6
        GOTO 10000
10022 CONTINUE
10021 IF((RECOV0.EQ.0))GOTO 10023
        CALL PRINT(-15,AAAAC0,RECOV0)
        IF((CORRE0.EQ.0))GOTO 10024
          CALL PRINT(-15,AAAAD0,CORRE0)
10024   CALL PUTCH(138,-15)
10023 CALL SWT
10000 CALL SETERR(1000)
      CALL SWT
10025 GOTO(10003,10008,10010,10013,10017,10022),AAAAA0
      GOTO 10025
      END
      SUBROUTINE ASCII0(BUF,LEN)
      INTEGER BUF(1)
      INTEGER LEN
      INTEGER I
      INTEGER TABLE(128)
      DATA TABLE/0,1,2,3,55,45,46,47,22,5,37,11,12,13,14,15,16,17,18,19,
     *60,61,50,38,24,25,63,39,28,29,30,31,64,90,127,123,91,108,80,125,77
     *,93,92,78,107,96,75,97,240,241,242,243,244,245,246,247,248,249,122
     *,94,76,126,110,111,124,193,194,195,196,197,198,199,200,201,209,210
     *,211,212,213,214,215,216,217,226,227,228,229,230,231,232,233,74,22
     *4,79,95,109,121,129,130,131,132,133,134,135,136,137,145,146,147,14
     *8,149,150,151,152,153,162,163,164,165,166,167,168,169,192,106,208,
     *161,7/
      DO 10026 I=1,LEN
        BUF(I)=TABLE(AND(BUF(I),127)+1)
10026 CONTINUE
10027 RETURN
      END
      INTEGER FUNCTION BLKSP0(STR,RECSZ,BLKSZ)
      INTEGER RECSZ,BLKSZ
      INTEGER STR(1)
      INTEGER I
      INTEGER CTOI
      INTEGER AAAAE0(46)
      DATA AAAAE0/243,249,238,244,225,248,186,160,160,173,226,160,188,24
     *2,229,227,239,242,228,160,243,233,250,229,190,219,175,188,226,236,
     *239,227,235,233,238,231,160,230,225,227,244,239,242,190,221,0/
      I=1
      RECSZ=CTOI(STR,I)
      IF((STR(I).EQ.175))GOTO 10029
      IF((STR(I).EQ.174))GOTO 10029
      GOTO 10028
10029   I=I+(1)
        BLKSZ=CTOI(STR,I)*RECSZ
        GOTO 10030
10028   BLKSZ=RECSZ
10030 IF((STR(I).EQ.0))GOTO 10031
        CALL REMARK(AAAAE0)
        BLKSP0=-3
        RETURN
10031 BLKSP0=-2
      RETURN
      END
      INTEGER FUNCTION CHECK0(CONV,RECSZ,BLKSZ)
      INTEGER CONV,RECSZ,BLKSZ
      INTEGER MAXB,MAXW
      INTEGER AAAAF0(33)
      DATA AAAAF0/237,225,248,233,237,245,237,160,226,236,239,227,235,16
     *0,243,233,250,229,160,233,243,160,170,233,160,226,249,244,229,243,
     *170,238,0/
      IF((CONV.NE.1))GOTO 10032
        MAXW=5120
        MAXB=5120*2
        GOTO 10033
10032   MAXW=5120-1
        MAXB=MAXW
10033 IF((BLKSZ.LE.MAXW))GOTO 10034
        CALL PRINT(-15,AAAAF0,MAXB)
        CHECK0=-3
        RETURN
10034 CHECK0=-2
      RETURN
      END
      INTEGER FUNCTION POSSP0(STR,MODE,FILE,REC)
      INTEGER STR(1)
      INTEGER MODE,FILE,REC
      INTEGER I
      INTEGER CTOI
      INTEGER AAAAG0(48)
      DATA AAAAG0/243,249,238,244,225,248,186,160,160,173,240,160,219,17
     *1,252,173,221,188,230,233,236,229,160,238,245,237,226,229,242,190,
     *219,175,188,226,236,239,227,235,160,238,245,237,226,229,242,190,22
     *1,0/
      IF((STR(1).EQ.171))GOTO 10036
      IF((STR(1).EQ.173))GOTO 10036
      GOTO 10035
10036   IF((STR(1).NE.171))GOTO 10037
          MODE=1
          GOTO 10038
10037     MODE=-1
10038   I=2
        GOTO 10039
10035   MODE=0
        I=1
10039 FILE=CTOI(STR,I)
      IF((FILE.NE.0))GOTO 10040
      IF((MODE.NE.0))GOTO 10040
        FILE=1
10040 IF((STR(I).EQ.174))GOTO 10042
      IF((STR(I).EQ.175))GOTO 10042
      GOTO 10041
10042   I=I+(1)
        REC=CTOI(STR,I)
        GOTO 10043
10041   REC=0
10043 IF((REC.NE.0))GOTO 10044
      IF((MODE.NE.0))GOTO 10044
        REC=1
10044 IF((STR(I).EQ.0))GOTO 10045
        CALL REMARK(AAAAG0)
        POSSP0=-3
        RETURN
10045 POSSP0=-2
      RETURN
      END
      INTEGER FUNCTION CHECL0(CSW)
      INTEGER CSW
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER MTSCH0,MTSTAT
      INTEGER AAAAH0(21)
      DATA AAAAH0/245,238,233,244,243,160,225,242,229,160,170,233,160,24
     *4,239,160,170,233,170,238,0/
      CSW=0
      GOTO 10046
10047   CALL PRINT(-15,AAAAH0,0,7)
      GOTO 10048
10049 GOTO 10048
10048   CHECL0=-3
        RETURN
10046 IF((UNITA0.LT.0))GOTO 10047
      IF((UNITA0.GT.7))GOTO 10047
      IF((MTSCH0(MTSTAT(CSW)).EQ.-3))GOTO 10049
      CHECL0=-2
      RETURN
      END
      INTEGER FUNCTION CONVS0(STR,CONV)
      INTEGER CONV
      INTEGER STR(1)
      INTEGER AAAAI0
      INTEGER AAAAJ0
      INTEGER AAAAK0(44)
      DATA AAAAK0/243,249,238,244,225,248,186,160,160,173,227,160,168,22
     *5,219,243,227,233,233,221,160,252,160,226,219,233,238,225,242,249,
     *221,160,252,160,229,219,226,227,228,233,227,221,169,0/
      AAAAI0=STR(1)
      GOTO 10050
10051   CONV=0
      GOTO 10052
10053   CONV=1
      GOTO 10052
10054   CONV=2
      GOTO 10052
10050 AAAAJ0=AAAAI0-192
      GOTO(10051,10053,10055,10055,10054),AAAAJ0
      AAAAJ0=AAAAI0-224
      GOTO(10051,10053,10055,10055,10054),AAAAJ0
10055   CALL REMARK(AAAAK0)
        CONVS0=-3
        RETURN
10052 CONVS0=-2
      RETURN
      END
      SUBROUTINE EBCDI0(BUF,LEN)
      INTEGER BUF(1)
      INTEGER LEN
      INTEGER TABLE(256)
      INTEGER I
      DATA TABLE/128,129,130,131,63,137,63,255,63,63,63,139,140,141,142,
     *143,144,145,146,147,63,63,136,63,152,153,63,63,156,157,158,159,63,
     *63,63,63,63,138,151,155,63,63,63,63,63,133,134,135,63,63,150,63,63
     *,63,63,132,63,63,63,63,148,149,63,154,160,63,63,63,63,63,63,63,63,
     *63,219,174,188,168,171,221,166,63,63,63,63,63,63,63,63,63,161,164,
     *170,169,187,222,173,175,63,63,63,63,63,63,63,63,252,172,165,223,19
     *0,191,63,63,63,63,63,63,63,63,63,224,186,163,192,167,189,162,63,22
     *5,226,227,228,229,230,231,232,233,63,63,63,63,63,63,63,234,235,236
     *,237,238,239,240,241,242,63,63,63,63,63,63,63,254,243,244,245,246,
     *247,248,249,250,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63
     *,63,63,63,63,63,251,193,194,195,196,197,198,199,200,201,63,63,63,6
     *3,63,63,253,202,203,204,205,206,207,208,209,210,63,63,63,63,63,63,
     *220,63,211,212,213,214,215,216,217,218,63,63,63,63,63,63,176,177,1
     *78,179,180,181,182,183,184,185,63,63,63,63,63,63/
      DO 10056 I=1,LEN
        BUF(I)=TABLE(BUF(I)+1)
10056 CONTINUE
10057 RETURN
      END
      INTEGER FUNCTION GETBUF(BUFN,FD)
      INTEGER BUFN,FD
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER FILL
      INTEGER NB,NW,I
      INTEGER READF,READLN
      INTEGER AAAAL0
      INTEGER AAAAM0
      INTEGER AAAAN0
      INTEGER AAAAO0
      INTEGER AAAAP0
      INTEGER AAAAQ0
      INTEGER AAAAR0,AAAAS0
      IF((CONVA0.NE.1))GOTO 10058
        AAAAL0=BUFN
        GOTO 10059
10060     NW=READF(BUFFE0,BLKSI0,FD)
          IF((NW.GT.0))GOTO 10061
            GETBUF=-1
            RETURN
10061     CONTINUE
10062     IF((NW.GE.BLKSI0))GOTO 10063
            NW=NW+(1)
            BUFFE0(NW)=0
          GOTO 10062
10063     BUFLE0(1)=BLKSI0
        GOTO 10064
10065     NW=READF(BUFFF0,BLKSI0,FD)
          IF((NW.GT.0))GOTO 10066
            GETBUF=-1
            RETURN
10066     CONTINUE
10067     IF((NW.GE.BLKSI0))GOTO 10068
            NW=NW+(1)
            BUFFF0(NW)=0
          GOTO 10067
10068     BUFLE0(2)=BLKSI0
        GOTO 10064
10059   GOTO(10060,10065),AAAAL0
10064   GOTO 10069
10058   AAAAM0=BUFN
        GOTO 10070
10071     NB=0
          GOTO 10074
10072     NB=NB+(RECSI0)
10074     IF((NB.GE.BLKSI0))GOTO 10073
            IF((READLN(FD,BUFFE0(NB+1),RECSI0).NE.-1))GOTO 10075
              GOTO 10073
10075     GOTO 10072
10073     IF((NB.NE.0))GOTO 10076
            GETBUF=-1
            RETURN
10076     AAAAN0=CONVA0
          GOTO 10077
10078       FILL=32
            DO 10079 I=1,NB
              BUFFE0(I)=AND(BUFFE0(I),127)
10079       CONTINUE
10080     GOTO 10081
10082       FILL=64
            CALL ASCII0(BUFFE0,NB)
          GOTO 10081
10077     AAAAO0=AAAAN0+1
          GOTO(10078,10083,10082),AAAAO0
10083     CONTINUE
10081     CONTINUE
10084     IF((NB.GE.BLKSI0))GOTO 10085
            NB=NB+(1)
            BUFFE0(NB)=FILL
          GOTO 10084
10085     BUFLE0(1)=BLKSI0
        GOTO 10086
10087     NB=0
          GOTO 10090
10088     NB=NB+(RECSI0)
10090     IF((NB.GE.BLKSI0))GOTO 10089
            IF((READLN(FD,BUFFF0(NB+1),RECSI0).NE.-1))GOTO 10091
              GOTO 10089
10091     GOTO 10088
10089     IF((NB.NE.0))GOTO 10092
            GETBUF=-1
            RETURN
10092     AAAAP0=CONVA0
          GOTO 10093
10094       FILL=32
            DO 10095 I=1,NB
              BUFFF0(I)=AND(BUFFF0(I),127)
10095       CONTINUE
10096     GOTO 10097
10098       FILL=64
            CALL ASCII0(BUFFF0,NB)
          GOTO 10097
10093     AAAAQ0=AAAAP0+1
          GOTO(10094,10099,10098),AAAAQ0
10099     CONTINUE
10097     CONTINUE
10100     IF((NB.GE.BLKSI0))GOTO 10101
            NB=NB+(1)
            BUFFF0(NB)=FILL
          GOTO 10100
10101     BUFLE0(2)=BLKSI0
        GOTO 10086
10070   GOTO(10071,10087),AAAAM0
10086 CONTINUE
10069 CALL PRWF$$(2,3,BADDR0(BUFN),BUFLE0(BUFN),INTL(0),AAAAR0,AAAAS0)
      GETBUF=-2
      RETURN
      END
      INTEGER FUNCTION MTSCH0(CSW)
      INTEGER CSW
      INTEGER AAAAT0(18)
      INTEGER AAAAU0(19)
      DATA AAAAT0/228,242,233,246,229,160,233,243,160,239,230,230,160,23
     *6,233,238,229,0/
      DATA AAAAU0/228,242,233,246,229,160,233,243,160,238,239,244,160,24
     *2,229,225,228,249,0/
      GOTO 10102
10103   CALL REMARK(AAAAT0)
      GOTO 10104
10105   CALL REMARK(AAAAU0)
      GOTO 10104
10104   MTSCH0=-3
        RETURN
10102 IF((AND(CSW,64).EQ.0))GOTO 10103
      IF((AND(CSW,128).EQ.0))GOTO 10105
      MTSCH0=-2
      RETURN
      END
      INTEGER FUNCTION MTCHE0(RW,BUFN,CSW)
      INTEGER RW,BUFN,CSW
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER R
      INTEGER MTSCH0,MTSTAT
      LOGICAL CORR
      INTEGER AAAAV0
      INTEGER AAAAW0
      INTEGER AAAAX0(15)
      INTEGER AAAAY0(13)
      INTEGER AAAAZ0(5)
      INTEGER AAABA0(5)
      INTEGER AAABB0(5)
      INTEGER AAABC0(5)
      INTEGER AAABD0(5)
      INTEGER AAABE0(5)
      INTEGER AAABF0(5)
      DATA AAAAX0/194,236,239,227,235,160,170,181,172,173,177,176,233,18
     *6,0/
      DATA AAAAY0/160,213,238,242,229,227,239,246,229,242,229,228,0/
      DATA AAAAZ0/160,214,208,197,0/
      DATA AAABA0/160,210,213,206,0/
      DATA AAABB0/160,195,210,195,0/
      DATA AAABC0/160,204,210,195,0/
      DATA AAABD0/160,196,205,193,0/
      DATA AAABE0/160,213,206,195,0/
      DATA AAABF0/160,210,193,215,0/
      CALL MTWAIT(BUFST0(1,BUFN))
      CSW=BUFST0(2,BUFN)
      IF((MTSCH0(CSW).NE.-3))GOTO 10108
        MTCHE0=-3
        RETURN
10108 IF((AND(CSW,:177000).NE.0))GOTO 10109
        BUFOK0(BUFN)=1
        BUFLE0(BUFN)=BUFST0(3,BUFN)
        MTCHE0=-2
        RETURN
10109 CORR=.FALSE.
      DO 10110 R=1,10
        CALL MTSKI0(-1)
        AAAAW0=1
        GOTO 10107
10112   CONTINUE
10110 CONTINUE
10111 DO 10113 R=1,10
        CALL MTSKI0(-1)
        IF((AND(MTSTAT(CSW),8).NE.0))GOTO 10115
          CALL MTSKI0(-1)
          CALL MTSKI0(1)
10115   AAAAW0=2
        GOTO 10107
10116   CONTINUE
10113 CONTINUE
10114 IF((RW.NE.1))GOTO 10117
        CORR=.TRUE.
        AAAAW0=3
        GOTO 10107
10118 CONTINUE
10117 CALL PRINT(-15,AAAAX0,BLOCK0)
      AAAAV0=1
      GOTO 10106
10119 CALL REMARK(AAAAY0)
      BUFOK0(BUFN)=0
      MTCHE0=-2
      RETURN
10106 IF((AND(CSW,:100000).EQ.0))GOTO 10120
        CALL PUTLIN(AAAAZ0,-15)
10120 IF((AND(CSW,16384).EQ.0))GOTO 10121
        CALL PUTLIN(AAABA0,-15)
10121 IF((AND(CSW,8192).EQ.0))GOTO 10122
        CALL PUTLIN(AAABB0,-15)
10122 IF((AND(CSW,4096).EQ.0))GOTO 10123
        CALL PUTLIN(AAABC0,-15)
10123 IF((AND(CSW,2048).EQ.0))GOTO 10124
        CALL PUTLIN(AAABD0,-15)
10124 IF((AND(CSW,1024).EQ.0))GOTO 10125
        CALL PUTLIN(AAABE0,-15)
10125 IF((AND(CSW,512).EQ.0))GOTO 10126
        CALL PUTLIN(AAABF0,-15)
10126 GOTO 10127
10107 CALL MTIO(RW,BUFN,CORR)
      CALL MTWAIT(BUFST0(1,BUFN))
      CSW=BUFST0(2,BUFN)
      IF((MTSCH0(CSW).NE.-3))GOTO 10128
        MTCHE0=-3
        RETURN
10128 IF((AND(CSW,:177000).NE.0))GOTO 10129
        RECOV0=RECOV0+(1)
        IF((.NOT.CORR))GOTO 10130
          CORRE0=CORRE0+(1)
10130   BUFOK0(BUFN)=1
        BUFLE0(BUFN)=BUFST0(3,BUFN)
        MTCHE0=-2
        RETURN
10129 GOTO 10131
10131 GOTO(10112,10116,10118),AAAAW0
      GOTO 10131
10127 GOTO 10119
      END
      SUBROUTINE MTIO(RW,BUFN,CORR)
      INTEGER RW,BUFN
      LOGICAL CORR
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER INSTR,LEN
      INTEGER AAABG0
      AAABG0=RW
      GOTO 10132
10133   LEN=5120
        IF((CONVA0.NE.1))GOTO 10134
          INSTR=17792
          GOTO 10135
10134     INSTR=17536
10135   IF((.NOT.CORR))GOTO 10136
          INSTR=XOR(INSTR,4096)
10136 GOTO 10137
10138   LEN=BUFLE0(BUFN)
        IF((CONVA0.NE.1))GOTO 10139
          INSTR=17808
          GOTO 10140
10139     INSTR=17552
10140 GOTO 10137
10132 GOTO(10133,10138),AAABG0
10137 CALL T$MT(UNITA0,BADDR0(BUFN),LEN,INSTR,BUFST0(1,BUFN))
      RETURN
      END
      INTEGER FUNCTION MTREAD(FD)
      INTEGER FD
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER BUFN,CSW
      INTEGER ONEOFR,ONEOVR,MTCHE0
      BLOCK0=1
      BUFN=1
      CALL MTIO(1,BUFN,.FALSE.)
10141 IF((MTCHE0(1,BUFN,CSW).EQ.-3))GOTO 10142
        IF((AND(CSW,256).EQ.0))GOTO 10143
          MTREAD=ONEOFR(CSW)
          RETURN
10143   IF((AND(CSW,32).EQ.0))GOTO 10144
          IF((ONEOVR(CSW).NE.-3))GOTO 10145
            GOTO 10142
10145     CALL MTREW0
          CALL NEWRE0(1)
10144   CALL MTIO(1,XOR(BUFN,3),.FALSE.)
        CALL PUTBUF(BUFN,FD)
        BUFN=XOR(BUFN,3)
        BLOCK0=BLOCK0+(1)
      GOTO 10141
10142 MTREAD=-3
      RETURN
      END
      SUBROUTINE MTREW0
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER STATUS(8)
      SAVE STATUS
      CALL T$MT(UNITA0,LOC(0),0,32,STATUS)
      RETURN
      END
      SUBROUTINE MTSKJ0(DIREC0)
      INTEGER DIREC0
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER INSTR,STATUS(8)
      SAVE STATUS
      IF((DIREC0.NE.1))GOTO 10146
        INSTR=9344
        GOTO 10147
10146   INSTR=9280
10147 CALL T$MT(UNITA0,LOC(0),0,INSTR,STATUS)
      RETURN
      END
      SUBROUTINE MTSKI0(DIREC0)
      INTEGER DIREC0
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER INSTR,STATUS(8)
      SAVE STATUS
      IF((DIREC0.NE.-1))GOTO 10148
        INSTR=25664
        GOTO 10149
10148   INSTR=25728
10149 CALL T$MT(UNITA0,LOC(0),0,INSTR,STATUS)
      RETURN
      END
      INTEGER FUNCTION MTSTAT(CSW)
      INTEGER CSW
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER STATUS(8)
      SAVE STATUS
      CALL T$MT(UNITA0,LOC(0),0,:100000,STATUS)
      IF((AND(STATUS(2),16).EQ.0))GOTO 10150
        CALL MTREW0
        CALL T$MT(UNITA0,LOC(0),0,:100000,STATUS)
10150 CSW=STATUS(2)
      MTSTAT=CSW
      RETURN
      END
      SUBROUTINE MTWAIT(NOTDO0)
      LOGICAL NOTDO0
      INTEGER CSW
10151 IF((.NOT.NOTDO0))GOTO 10152
        CALL MTSTAT(CSW)
      GOTO 10151
10152 RETURN
      END
      INTEGER FUNCTION MTWRI0(FD)
      INTEGER FD
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER CSW,BUFN,STAT
      INTEGER GETBUF,MTCHE0,ONEOFW,ONEOVW
      BLOCK0=1
      BUFN=1
      STAT=GETBUF(BUFN,FD)
10153 IF((STAT.EQ.-1))GOTO 10154
        CALL MTIO(2,BUFN,.FALSE.)
        STAT=GETBUF(XOR(BUFN,3),FD)
        IF((MTCHE0(2,BUFN,CSW).NE.-3))GOTO 10155
          MTWRI0=-3
          RETURN
10155   IF((AND(CSW,32).EQ.0))GOTO 10156
          IF((STAT.NE.-1))GOTO 10159
          IF((ONEOFW(CSW).NE.-3))GOTO 10159
          GOTO 10158
10159     IF((ONEOVW(CSW).EQ.-3))GOTO 10158
          GOTO 10157
10158       MTWRI0=-3
            RETURN
10157     CALL MTREW0
          IF((STAT.EQ.-1))GOTO 10160
            CALL NEWRE0(2)
            GOTO 10161
10160       MTWRI0=-2
            RETURN
10161   CONTINUE
10156   BUFN=XOR(BUFN,3)
        BLOCK0=BLOCK0+(1)
      GOTO 10153
10154 MTWRI0=ONEOFW(CSW)
      RETURN
      END
      SUBROUTINE MTFMA0
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER STATUS(8)
      SAVE STATUS
      CALL T$MT(UNITA0,LOC(0),0,9360,STATUS)
      RETURN
      END
      SUBROUTINE NEWRE0(RW)
      INTEGER RW
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER CSW
      INTEGER INPUT,CHECL0
      INTEGER AAABH0(9)
      INTEGER AAABI0(23)
      INTEGER AAABJ0(24)
      INTEGER AAABK0(20)
      DATA AAABH0/245,238,233,244,186,160,170,233,0/
      DATA AAABI0/244,225,240,229,160,233,243,160,225,244,160,229,238,22
     *8,160,239,230,160,242,229,229,236,0/
      DATA AAABJ0/244,225,240,229,160,233,243,160,247,242,233,244,229,16
     *0,240,242,239,244,229,227,244,229,228,0/
      DATA AAABK0/244,225,240,229,160,233,243,160,233,238,160,237,233,22
     *8,160,230,233,236,229,0/
10162   CONTINUE
10163   IF((INPUT(-10,AAABH0,UNITA0).NE.-1))GOTO 10164
        GOTO 10163
10164   GOTO 10165
10166   GOTO 10167
10168     CALL REMARK(AAABI0)
        GOTO 10167
10169     CALL REMARK(AAABJ0)
        GOTO 10167
10170     CALL REMARK(AAABK0)
        GOTO 10167
10165   IF((CHECL0(CSW).EQ.-3))GOTO 10166
        IF((AND(CSW,32).NE.0))GOTO 10168
        IF((RW.NE.2))GOTO 10171
        IF((AND(CSW,4).EQ.0))GOTO 10171
        GOTO 10169
10171   IF((RW.NE.2))GOTO 10172
        IF((AND(CSW,264).NE.0))GOTO 10172
        GOTO 10170
10172   CONTINUE
          GOTO 10173
10167 CONTINUE
      GOTO 10162
10173 RETURN
      END
      INTEGER FUNCTION ONEOFR(CSW)
      INTEGER CSW
      CSW=0
      ONEOFR=-2
      RETURN
      END
      INTEGER FUNCTION ONEOFW(CSW)
      INTEGER CSW
      INTEGER MTSTAT,MTSCH0
      CALL MTFMA0
      CALL MTFMA0
      IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10174
        ONEOFW=-3
        RETURN
10174 CALL MTSKJ0(-1)
      ONEOFW=MTSCH0(MTSTAT(CSW))
      RETURN
      END
      INTEGER FUNCTION ONEOVR(CSW)
      INTEGER CSW
      CSW=0
      ONEOVR=-2
      RETURN
      END
      INTEGER FUNCTION ONEOVW(CSW)
      INTEGER CSW
      INTEGER MTSCH0,MTSTAT
      CALL MTFMA0
      CALL MTFMA0
      ONEOVW=MTSCH0(MTSTAT(CSW))
      RETURN
      END
      INTEGER FUNCTION POSIT0(MODE,FILE,REC)
      INTEGER MODE,FILE,REC
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER I,CSW
      INTEGER MTSTAT,MTSCH0
      INTEGER AAABL0
      INTEGER AAABM0(12)
      INTEGER AAABN0(12)
      INTEGER AAABO0(12)
      INTEGER AAABP0(12)
      INTEGER AAABQ0(12)
      INTEGER AAABR0(12)
      INTEGER AAABS0(18)
      INTEGER AAABT0(18)
      INTEGER AAABU0(18)
      INTEGER AAABV0
      DATA AAABM0/229,238,228,160,239,230,160,244,225,240,229,0/
      DATA AAABN0/229,238,228,160,239,230,160,244,225,240,229,0/
      DATA AAABO0/229,238,228,160,239,230,160,230,233,236,229,0/
      DATA AAABP0/229,238,228,160,239,230,160,244,225,240,229,0/
      DATA AAABQ0/229,238,228,160,239,230,160,244,225,240,229,0/
      DATA AAABR0/229,238,228,160,239,230,160,230,233,236,229,0/
      DATA AAABS0/226,229,231,233,238,238,233,238,231,160,239,230,160,24
     *4,225,240,229,0/
      DATA AAABT0/226,229,231,233,238,238,233,238,231,160,239,230,160,24
     *4,225,240,229,0/
      DATA AAABU0/226,229,231,233,238,238,233,238,231,160,239,230,160,23
     *0,233,236,229,0/
      AAABL0=MODE
      GOTO 10175
10176   CALL MTREW0
        I=1
        GOTO 10179
10177   I=I+(1)
10179   IF((I.GE.FILE))GOTO 10178
          IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10180
            POSIT0=-3
            RETURN
10180     IF((AND(CSW,32).EQ.0))GOTO 10181
            CALL REMARK(AAABM0)
            POSIT0=-3
            RETURN
10181     CALL MTSKJ0(1)
        GOTO 10177
10178   I=1
        GOTO 10184
10182   I=I+(1)
10184   IF((I.GE.REC))GOTO 10183
          IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10185
            POSIT0=-3
            RETURN
10185     GOTO 10186
10187       CALL REMARK(AAABN0)
          GOTO 10188
10189       CALL REMARK(AAABO0)
          GOTO 10188
10188       POSIT0=-3
            RETURN
10186     IF((AND(CSW,32).NE.0))GOTO 10187
          IF((I.LE.1))GOTO 10190
          IF((AND(CSW,256).EQ.0))GOTO 10190
          GOTO 10189
10190     CONTINUE
          CALL MTSKI0(1)
        GOTO 10182
10183 GOTO 10191
10192   I=1
        GOTO 10195
10193   I=I+(1)
10195   IF((I.GT.FILE))GOTO 10194
          IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10196
            POSIT0=-3
            RETURN
10196     IF((AND(CSW,32).EQ.0))GOTO 10197
            CALL REMARK(AAABP0)
            POSIT0=-3
            RETURN
10197     CALL MTSKJ0(1)
        GOTO 10193
10194   I=1
        GOTO 10200
10198   I=I+(1)
10200   IF((I.GT.REC))GOTO 10199
          IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10201
            POSIT0=-3
            RETURN
10201     GOTO 10202
10203       CALL REMARK(AAABQ0)
          GOTO 10204
10205       CALL REMARK(AAABR0)
          GOTO 10204
10204       POSIT0=-3
            RETURN
10202     IF((AND(CSW,32).NE.0))GOTO 10203
          IF((I.LE.1))GOTO 10206
          IF((AND(CSW,256).EQ.0))GOTO 10206
          GOTO 10205
10206     CONTINUE
          CALL MTSKI0(1)
        GOTO 10198
10199 GOTO 10191
10207   IF((FILE.NE.0))GOTO 10209
        IF((REC.EQ.0))GOTO 10209
        GOTO 10208
10209     CALL MTSKJ0(-1)
10208   I=1
        GOTO 10212
10210   I=I+(1)
10212   IF((I.GT.FILE))GOTO 10211
          IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10213
            POSIT0=-3
            RETURN
10213     IF((AND(CSW,8).EQ.0))GOTO 10214
            CALL REMARK(AAABS0)
            POSIT0=-3
            RETURN
10214     CALL MTSKJ0(-1)
        GOTO 10210
10211   IF((REC.NE.0))GOTO 10215
        IF((AND(MTSTAT(CSW),8).NE.0))GOTO 10215
          CALL MTSKJ0(1)
          GOTO 10216
10215     I=1
          GOTO 10219
10217     I=I+(1)
10219     IF((I.GT.REC))GOTO 10218
            IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10220
              POSIT0=-3
              RETURN
10220       GOTO 10221
10222         CALL REMARK(AAABT0)
            GOTO 10223
10224         CALL REMARK(AAABU0)
            GOTO 10223
10223         POSIT0=-3
              RETURN
10221       IF((AND(CSW,8).NE.0))GOTO 10222
            IF((I.LE.1))GOTO 10225
            IF((AND(CSW,256).EQ.0))GOTO 10225
            GOTO 10224
10225       CONTINUE
            CALL MTSKI0(-1)
          GOTO 10217
10218   CONTINUE
10216 GOTO 10191
10175 AAABV0=AAABL0+2
      GOTO(10207,10176,10192),AAABV0
10191 IF((MTSCH0(MTSTAT(CSW)).NE.-3))GOTO 10226
        POSIT0=-3
        RETURN
10226 POSIT0=-2
      RETURN
      END
      SUBROUTINE PUTBUF(BUFN,FD)
      INTEGER BUFN,FD
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER NB
      INTEGER AAABW0
      INTEGER AAABX0
      IF((CONVA0.NE.1))GOTO 10227
        AAABW0=BUFN
        GOTO 10228
10229     CALL WRITEF(BUFFE0,BUFLE0(1),FD)
        GOTO 10230
10231     CALL WRITEF(BUFFF0,BUFLE0(2),FD)
        GOTO 10230
10228   GOTO(10229,10231),AAABW0
10230   GOTO 10232
10227   AAABX0=BUFN
        GOTO 10233
10234     IF((CONVA0.NE.0))GOTO 10235
            NB=1
            GOTO 10238
10236       NB=NB+(1)
10238       IF((NB.GT.BUFLE0(1)))GOTO 10237
              BUFFE0(NB)=OR(BUFFE0(NB),128)
            GOTO 10236
10237       GOTO 10239
10235       CALL EBCDI0(BUFFE0,BUFLE0(1))
10239     NB=0
          GOTO 10242
10240     NB=NB+(RECSI0)
10242     IF((NB+RECSI0.GT.BUFLE0(1)))GOTO 10241
            CALL WRITE0(FD,BUFFE0(NB+1),RECSI0)
          GOTO 10240
10241     IF((NB.GE.BUFLE0(1)))GOTO 10243
            CALL WRITE0(FD,BUFFE0(NB+1),BUFLE0(1)-NB)
10243   GOTO 10244
10245     IF((CONVA0.NE.0))GOTO 10246
            NB=1
            GOTO 10249
10247       NB=NB+(1)
10249       IF((NB.GT.BUFLE0(2)))GOTO 10248
              BUFFF0(NB)=OR(BUFFF0(NB),128)
            GOTO 10247
10248       GOTO 10250
10246       CALL EBCDI0(BUFFF0,BUFLE0(2))
10250     NB=0
          GOTO 10253
10251     NB=NB+(RECSI0)
10253     IF((NB+RECSI0.GT.BUFLE0(2)))GOTO 10252
            CALL WRITE0(FD,BUFFF0(NB+1),RECSI0)
          GOTO 10251
10252     IF((NB.GE.BUFLE0(2)))GOTO 10254
            CALL WRITE0(FD,BUFFF0(NB+1),BUFLE0(2)-NB)
10254   GOTO 10244
10233   GOTO(10234,10245),AAABX0
10244 CONTINUE
10232 RETURN
      END
      INTEGER FUNCTION READW0(RW)
      INTEGER RW
      INTEGER * 4 BADDR0
      INTEGER BUFFE0,BUFFF0,BUFST0,BUFLE0,BUFOK0,CONVA0,BLKSI0,RECSI0,BL
     *OCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$COM/BADDR0(2),BUFST0(8,2),BUFLE0(2),BUFOK0(2),CONVA0,BL
     *KSI0,RECSI0,BLOCK0,CORRE0,RECOV0,UNITA0,VERBO0
      COMMON /MT$BUF/BUFFE0(5120),BUFFF0(5120)
      INTEGER FD,CSW,STAT,STATE(4)
      INTEGER GFNARG,CREATE,OPEN,MTREAD,MTWRI0,MTSTAT,EQUAL
      INTEGER ARG(102)
      INTEGER AAABY0(23)
      INTEGER AAABZ0(21)
      INTEGER AAACA0(20)
      INTEGER AAACB0
      INTEGER AAACC0(20)
      INTEGER AAACD0(12)
      INTEGER AAACE0(13)
      INTEGER AAACF0(12)
      INTEGER AAACG0(13)
      INTEGER AAACH0(12)
      INTEGER AAACI0(13)
      INTEGER AAACJ0(19)
      INTEGER AAACK0(31)
      INTEGER AAACL0(17)
      INTEGER AAACM0(33)
      INTEGER AAACN0
      DATA AAABY0/244,225,240,229,160,233,243,160,225,244,160,229,238,22
     *8,160,239,230,160,242,229,229,236,0/
      DATA AAABZ0/244,225,240,229,160,233,243,160,238,239,244,160,247,24
     *2,233,244,225,226,236,229,0/
      DATA AAACA0/244,225,240,229,160,233,243,160,233,238,160,237,233,22
     *8,173,230,233,236,229,0/
      DATA AAACC0/170,243,186,160,226,225,228,160,230,233,236,229,160,23
     *8,225,237,229,170,238,0/
      DATA AAACD0/175,228,229,246,175,243,244,228,233,238,177,0/
      DATA AAACE0/175,228,229,246,175,243,244,228,239,245,244,177,0/
      DATA AAACF0/175,228,229,246,175,243,244,228,233,238,178,0/
      DATA AAACG0/175,228,229,246,175,243,244,228,239,245,244,178,0/
      DATA AAACH0/175,228,229,246,175,243,244,228,233,238,179,0/
      DATA AAACI0/175,228,229,246,175,243,244,228,239,245,244,179,0/
      DATA AAACJ0/170,243,186,160,227,225,238,167,244,160,227,242,229,22
     *5,244,229,170,238,0/
      DATA AAACK0/170,243,186,160,170,233,160,226,236,239,227,235,243,16
     *0,242,229,225,228,160,230,242,239,237,160,244,225,240,229,170,238,
     *0/
      DATA AAACL0/170,243,186,160,227,225,238,167,244,160,239,240,229,23
     *8,170,238,0/
      DATA AAACM0/170,243,186,160,170,233,160,226,236,239,227,235,243,16
     *0,247,242,233,244,244,229,238,160,244,239,160,244,225,240,229,160,
     *170,238,0/
      IF((AND(MTSTAT(CSW),32).EQ.0))GOTO 10255
        CALL REMARK(AAABY0)
        RETURN
10255 IF((RW.NE.2))GOTO 10256
        GOTO 10257
10258     CALL REMARK(AAABZ0)
        GOTO 10259
10260     CALL REMARK(AAACA0)
        GOTO 10259
10259     RETURN
10257   IF((AND(CSW,4).NE.0))GOTO 10258
        IF((AND(CSW,264).EQ.0))GOTO 10260
10256 STAT=-2
      STATE(1)=1
10261 IF((STAT.EQ.-3))GOTO 10262
        AAACB0=GFNARG(ARG,STATE)
        GOTO 10263
10264     GOTO 10262
10265     CALL PRINT(-15,AAACC0,ARG)
          STAT=-3
        GOTO 10266
10267     IF((RW.NE.1))GOTO 10268
            GOTO 10269
10270         CALL SCOPY(AAACE0,1,ARG,1)
            GOTO 10271
10272         CALL SCOPY(AAACG0,1,ARG,1)
            GOTO 10271
10273         CALL SCOPY(AAACI0,1,ARG,1)
            GOTO 10271
10269       IF((EQUAL(ARG,AAACD0).NE.0))GOTO 10270
            IF((EQUAL(ARG,AAACF0).NE.0))GOTO 10272
            IF((EQUAL(ARG,AAACH0).NE.0))GOTO 10273
10271       FD=CREATE(ARG,2)
            IF((FD.NE.-3))GOTO 10274
              STAT=-3
              CALL PRINT(-15,AAACJ0,ARG)
              GOTO 10275
10274         STAT=MTREAD(FD)
              CALL CLOSE(FD)
              IF((VERBO0.NE.1))GOTO 10276
                CALL PRINT(-15,AAACK0,ARG,BLOCK0-1)
10276       CONTINUE
10275       GOTO 10277
10268       FD=OPEN(ARG,1)
            IF((FD.NE.-3))GOTO 10278
              CALL PRINT(-15,AAACL0,ARG)
              STAT=-3
              GOTO 10279
10278         STAT=MTWRI0(FD)
              CALL CLOSE(FD)
              IF((VERBO0.NE.1))GOTO 10280
                CALL PRINT(-15,AAACM0,ARG,BLOCK0-1)
10280       CONTINUE
10279     CONTINUE
10277   GOTO 10266
10263   AAACN0=AAACB0+4
        GOTO(10265,10267,10264),AAACN0
10266 GOTO 10261
10262 READW0=STAT
      RETURN
      END
      INTEGER FUNCTION READLN(FD,BUF,LEN)
      INTEGER FD,BUF(1),LEN
      INTEGER GETLIN
      LOGICAL LONGL0
      DATA LONGL0/.FALSE./
      READLN=GETLIN(BUF,FD,LEN+1)
      IF((.NOT.LONGL0))GOTO 10281
      IF((READLN.NE.1))GOTO 10281
      IF((BUF(1).NE.138))GOTO 10281
        READLN=GETLIN(BUF,FD,LEN+1)
10281 IF((READLN.NE.-1))GOTO 10282
        RETURN
10282 IF((BUF(READLN).NE.138))GOTO 10283
        LONGL0=.FALSE.
        READLN=READLN-(1)
        GOTO 10284
10283   LONGL0=.TRUE.
10284 CONTINUE
10285 IF((READLN.GE.LEN))GOTO 10286
        READLN=READLN+(1)
        BUF(READLN)=160
      GOTO 10285
10286 RETURN
      END
      INTEGER FUNCTION UNITS0(UNIT)
      INTEGER UNIT
      INTEGER I
      INTEGER CTOI,GETARG
      INTEGER ARG(128)
      IF((GETARG(1,ARG,128).EQ.-1))GOTO 10287
      IF((ARG(1).EQ.173))GOTO 10287
        I=1
        UNIT=CTOI(ARG,I)
        IF((ARG(I).EQ.0))GOTO 10288
          UNITS0=-3
          RETURN
10288   CALL DELARG(1)
        GOTO 10289
10287   UNIT=0
10289 UNITS0=-2
      RETURN
      END
      SUBROUTINE WRITE0(FD,BUF,LEN)
      INTEGER FD,BUF(1),LEN
      INTEGER I,TEMP
      I=LEN
      GOTO 10292
10290 I=I-(1)
10292 IF((I.LE.0))GOTO 10291
        IF((BUF(I).EQ.160))GOTO 10293
          GOTO 10291
10293 GOTO 10290
10291 TEMP=BUF(I+1)
      BUF(I+1)=0
      CALL PUTLIN(BUF,FD)
      BUF(I+1)=TEMP
      CALL PUTCH(138,FD)
      RETURN
      END
C ---- Long Name Map ----
C Buffer2                        bufff0
C blkspec                        blksp0
C checkunit                      checl0
C asciitoebcdic                  ascii0
C ebcdictoascii                  ebcdi0
C mtrewind                       mtrew0
C direction                      direc0
C unitspec                       units0
C Corrected                      corre0
C readwrite                      readw0
C Block                          block0
C Conv                           conva0
C Recovered                      recov0
C newreel                        newre0
C mtfmark                        mtfma0
C position                       posit0
C notdone                        notdo0
C Bufok                          bufok0
C Unit                           unita0
C mtscheck                       mtsch0
C printerrorbits                 print0
C posspec                        possp0
C mtskipf                        mtskj0
C Blksize                        blksi0
C Recsize                        recsi0
C Verbose                        verbo0
C longline                       longl0
C Bufstat                        bufst0
C writeln                        write0
C Buflen                         bufle0
C convspec                       convs0
C mtcheck                        mtche0
C mtskipr                        mtski0
C checkblk                       check0
C Baddr                          baddr0
C Buffer1                        buffe0
C mtwrite                        mtwri0