      SUBROUTINE EDIT
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER LIN(512),TERMI0
      INTEGER CURSAV,STATUS,LEN,CURSOR
      INTEGER CKGLOB,DOCMD,DOGLOB,DOREAD,GETARG,GETLST,DOOPT,LENGTH
      LOGICAL INTRPT,BRKFL0
      EXTERNAL DOLOG0
      SHORTCALL MKONU$(22)
      INTEGER AAAAA0(5)
      INTEGER AAAAB0(5)
      INTEGER AAAAC0
      INTEGER AAAAD0
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      DATA AAAAA0/7,-13105,-14385,-10796,-23392/
      DATA AAAAB0/227,237,228,190,0/
      CALL WATCH
      CALL SERC
      STATUS=-2
10000 IF((STATUS.NE.-2))GOTO 10001
      IF((GETARG(ARGNO0,LIN,512-3).EQ.-1))GOTO 10001
        CALL LOADS0(LIN,ARGNO0,8,NCOLS0)
        NLINE0=0
        IF((LIN(1).NE.173))GOTO 10002
          LEN=LENGTH(LIN)+1
          LIN(LEN)=138
          LIN(LEN+1)=0
          LEN=1
          STATUS=DOOPT(LIN,LEN)
          GOTO 10003
10002     STATUS=DOREAD(LASTL0,LIN)
10003   ARGNO0=ARGNO0+(1)
      GOTO 10000
10001 IF((STATUS.NE.-3))GOTO 10004
        CALL PRINT0
        GOTO 10005
10004   CURLN0=MIN0(1,LASTL0)
10005 BUFFE0=0
      FIRSU0=1
      CALL UPDSC0
      IF((STATUS.EQ.-3))GOTO 10006
        LIN(1)=0
10006 CURSOR=0
      CALL MKONU$(AAAAA0,LOC(DOLOG0))
10007   CALL INTRPT(BRKFL0)
        IF((LOSTL0.LE.2000))GOTO 10008
        IF(((LASTL0+LIMCN0)/LOSTL0.GT.2))GOTO 10008
          CALL GARBA0
10008   CALL MSWAIT
        CMDRO0=NROWS0-1
        CALL PROMPT(AAAAB0)
        CALL GETCMD(LIN,1,CURSOR,TERMI0)
        CALL MESG(0,1)
10009   IF((TERMI0.EQ.132))GOTO 10011
        IF((TERMI0.EQ.139))GOTO 10011
        IF((TERMI0.EQ.141))GOTO 10011
        GOTO 10010
10011     AAAAC0=TERMI0
          GOTO 10012
10013       IF((CURLN0.LE.1))GOTO 10014
              CURLN0=CURLN0-(1)
              GOTO 10016
10014         CURLN0=LASTL0
10015     GOTO 10016
10017       IF((CURLN0.GE.LASTL0))GOTO 10018
              CURLN0=CURLN0+(1)
              GOTO 10016
10018         CURLN0=MIN0(1,LASTL0)
10019     GOTO 10016
10016       CALL ADJUS0(CURLN0,CURLN0)
            CALL UPDSC0
          GOTO 10020
10012     AAAAD0=AAAAC0-131
          GOTO(10013,10021,10021,10021,10021,10021,10021,10017),AAAAD0
10021     CONTINUE
10020     CALL GETCMD(LIN,1,CURSOR,TERMI0)
        GOTO 10009
10010   CALL PROMPT(0)
        CURSAV=CURLN0
        ERRCO0=7
        LEN=1
        IF((GETLST(LIN,LEN,STATUS).NE.-2))GOTO 10022
          IF((CKGLOB(LIN,LEN,STATUS).NE.-2))GOTO 10023
            CALL DOGLOB(LIN,LEN,CURSAV,STATUS)
            GOTO 10024
10023       IF((STATUS.EQ.-3))GOTO 10025
              CALL DOCMD(LIN,LEN,0,STATUS)
10025     CONTINUE
10024   CONTINUE
10022   IF((STATUS.NE.-3))GOTO 10026
          CALL PRINT0
          CURLN0=MIN0(CURSAV,LASTL0)
          GOTO 10027
10026     IF((TERMI0.EQ.134))GOTO 10028
            CURSOR=0
            LIN(1)=0
10028   CONTINUE
10027   CALL ADJUS0(CURLN0,CURLN0)
        CALL UPDSC0
      IF((STATUS.NE.-1))GOTO 10007
      CALL CLRSC0
      CALL CLRBUF
      RETURN
      END
      LOGICAL FUNCTION INTRPT(ARG)
      LOGICAL ARG
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER JUNK
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      CALL QUIT$(ARG)
      INTRPT=ARG
      IF((.NOT.INTRPT))GOTO 10029
        ERRCO0=22
        CALL RESTO0
        CALL TTY$RS(:40000,JUNK)
10029 RETURN
      END
      INTEGER FUNCTION GETLST(LIN,I,STATUS)
      INTEGER LIN(512)
      INTEGER I,STATUS
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER NUM
      INTEGER GETONE
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      LINE20=0
      NLINE0=0
      GOTO 10032
10030 CONTINUE
10032 IF((GETONE(LIN,I,NUM,STATUS).NE.-2))GOTO 10031
        LINE10=LINE20
        LINE20=NUM
        NLINE0=NLINE0+(1)
        IF((LIN(I).EQ.172))GOTO 10033
        IF((LIN(I).EQ.187))GOTO 10033
          GOTO 10031
10033   IF((LIN(I).NE.187))GOTO 10034
          CURLN0=NUM
10034   I=I+(1)
      GOTO 10030
10031 IF((NLINE0.LE.2))GOTO 10035
        NLINE0=2
10035 IF((NLINE0.GT.1))GOTO 10036
        LINE10=LINE20
10036 IF((LINE10.LE.LINE20))GOTO 10037
        STATUS=-3
        ERRCO0=1
10037 IF((STATUS.EQ.-3))GOTO 10038
        STATUS=-2
10038 GETLST=STATUS
      RETURN
      END
      INTEGER FUNCTION GETNUM(LIN,I,PNUM,STATUS)
      INTEGER LIN(512)
      INTEGER I,PNUM,STATUS
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER J
      INTEGER MISSI0,K
      INTEGER CTOI,OPTPAT,PTSCAN,KNSCAN,GETKN
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      GETNUM=-2
10039 IF((LIN(I).NE.160))GOTO 10041
        I=I+(1)
      GOTO 10039
10042   PNUM=TOPLN0-TOPRO0+1+LIN(I)-RELAA0
      GOTO 10043
10044   PNUM=CURLN0
      GOTO 10043
10045   PNUM=CURLN0-1
      GOTO 10043
10046   PNUM=LASTL0
      GOTO 10043
10047   MISSI0=1
        K=I+1
        GOTO 10050
10048   K=K+(1)
10050   IF((LIN(K).EQ.0))GOTO 10049
          IF((LIN(K).NE.ESCAP0))GOTO 10051
          IF((LIN(K+1).NE.LIN(I)))GOTO 10051
            K=K+(1)
            GOTO 10048
10051       IF((LIN(K).NE.LIN(I)))GOTO 10053
              MISSI0=0
              GOTO 10049
10053     CONTINUE
10052   GOTO 10048
10049   IF((MISSI0.NE.1))GOTO 10054
          GOTO 10057
10055     K=K+(1)
10057     IF((LIN(K).EQ.0))GOTO 10056
          GOTO 10055
10056     K=K-(1)
          LIN(K)=LIN(I)
          LIN(K+1)=138
          LIN(K+2)=0
          PEEKC0=143
10054   IF((OPTPAT(LIN,I).NE.-3))GOTO 10058
          GETNUM=-3
          GOTO 10043
10058     IF((LIN(I).NE.175))GOTO 10060
            GETNUM=PTSCAN(0,PNUM)
            GOTO 10061
10060       GETNUM=PTSCAN(-1,PNUM)
10061   CONTINUE
10059 GOTO 10043
10062   J=I
        I=I+(1)
        IF((GETKN(LIN,I,SAVKN0,SAVKN0).NE.-3))GOTO 10063
          GETNUM=-3
          GOTO 10064
10063     IF((LIN(J).NE.190))GOTO 10065
            GETNUM=KNSCAN(0,PNUM)
            GOTO 10066
10065       GETNUM=KNSCAN(-1,PNUM)
10066   CONTINUE
10064   I=I-(1)
      GOTO 10043
10067   PNUM=CTOI(LIN,I)
        I=I-(1)
      GOTO 10043
10068   PNUM=TOPLN0
      GOTO 10043
10041 IF((LIN(I).LT.RELAA0))GOTO 10069
      IF((LIN(I).GT.RELZA0))GOTO 10069
      IF((ABSNO0.NE.0))GOTO 10069
      GOTO 10042
10069 IF((LIN(I).EQ.174))GOTO 10044
      IF((LIN(I).EQ.222))GOTO 10045
      IF((LIN(I).EQ.173))GOTO 10045
      IF((LIN(I).EQ.164))GOTO 10046
      IF((LIN(I).EQ.175))GOTO 10047
      IF((LIN(I).EQ.BACKS0))GOTO 10047
      IF((LIN(I).EQ.190))GOTO 10062
      IF((LIN(I).EQ.188))GOTO 10062
      IF((176.GT.LIN(I)))GOTO 10070
      IF((LIN(I).GT.185))GOTO 10070
      GOTO 10067
10070 IF((LIN(I).EQ.163))GOTO 10068
        GETNUM=-1
10043 IF((GETNUM.NE.-2))GOTO 10071
        I=I+(1)
10071 STATUS=GETNUM
      RETURN
      END
      INTEGER FUNCTION GETONE(LIN,I,NUM,STATUS)
      INTEGER LIN(512)
      INTEGER I,NUM,STATUS
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER PNUM,PORM
      INTEGER GETNUM
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      GETONE=-1
      NUM=0
      IF((GETNUM(LIN,I,NUM,STATUS).NE.-2))GOTO 10072
        GETONE=-2
10073     PORM=-1
10074     IF((LIN(I).NE.160))GOTO 10075
            I=I+(1)
          GOTO 10074
10075     IF((LIN(I).EQ.173))GOTO 10077
          IF((LIN(I).EQ.171))GOTO 10077
          GOTO 10076
10077       PORM=LIN(I)
            I=I+(1)
10076     IF((GETNUM(LIN,I,PNUM,STATUS).NE.-2))GOTO 10078
            IF((PORM.NE.173))GOTO 10079
              NUM=NUM-(PNUM)
              GOTO 10080
10079         NUM=NUM+(PNUM)
10080     CONTINUE
10078     IF((STATUS.NE.-1))GOTO 10081
          IF((PORM.EQ.-1))GOTO 10081
            STATUS=-3
10081   CONTINUE
        IF((STATUS.EQ.-2))GOTO 10073
10072 IF((NUM.LT.0))GOTO 10083
      IF((NUM.GT.LASTL0))GOTO 10083
      GOTO 10082
10083   STATUS=-3
        ERRCO0=17
10082 IF((STATUS.NE.-3))GOTO 10084
        GETONE=-3
        GOTO 10085
10084   STATUS=GETONE
10085 RETURN
      END
      INTEGER FUNCTION CKGLOB(LIN,I,STATUS)
      INTEGER LIN(512)
      INTEGER I,STATUS
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER LINE,USEPAT,USEMA0,TMP
      INTEGER DEFALT,MATCH,OPTPAT,GETKN
      INTEGER K
      LOGICAL INTRPT,BRKFL0
      INTEGER AAAAE0
      INTEGER AAAAF0(5)
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      DATA AAAAF0/199,204,207,194,0/
      STATUS=-2
      USEPAT=-1
      USEMA0=-1
      IF((LIN(I).EQ.167))GOTO 10087
      IF((LIN(I).EQ.XMARK0))GOTO 10087
      GOTO 10086
10087   IF((LIN(I).NE.167))GOTO 10088
          USEMA0=1
          GOTO 10089
10088     USEMA0=0
10089   I=I+(1)
        STATUS=GETKN(LIN,I,SAVKN0,SAVKN0)
10086 IF((STATUS.NE.-2))GOTO 10090
        AAAAE0=LIN(I)
        GOTO 10091
10092     USEPAT=1
        GOTO 10093
10094     USEPAT=0
        GOTO 10093
10093     I=I+(1)
          IF((OPTPAT(LIN,I).NE.-3))GOTO 10095
            STATUS=-3
            GOTO 10097
10095       I=I+(1)
10096   GOTO 10097
10091   IF(AAAAE0.EQ.199)GOTO 10092
        IF(AAAAE0.EQ.216)GOTO 10094
        IF(AAAAE0.EQ.231)GOTO 10092
        IF(AAAAE0.EQ.248)GOTO 10094
10097 CONTINUE
10090 IF((STATUS.NE.-2))GOTO 10098
      IF((USEPAT.NE.-1))GOTO 10098
      IF((USEMA0.NE.-1))GOTO 10098
        STATUS=-1
        GOTO 10099
10098   IF((STATUS.NE.-2))GOTO 10100
          CALL DEFALT(1,LASTL0)
10100 CONTINUE
10099 IF((STATUS.NE.-2))GOTO 10101
        CALL MESG(AAAAF0,1)
        K=LINE00
        LINE=0
        GOTO 10104
10102   LINE=LINE+(1)
10104   IF((LINE.GE.LINE10))GOTO 10107
          GLOBM0(K)=0
          K=NEXTL0(K)
        GOTO 10102
10105   LINE=LINE+(1)
10107   IF((LINE.GT.LINE20))GOTO 10118
          IF((.NOT.INTRPT(BRKFL0)))GOTO 10108
            STATUS=-3
            CKGLOB=STATUS
            RETURN
10108     TMP=0
          IF((USEMA0.EQ.-1))GOTO 10110
          IF((USEMA0.NE.1))GOTO 10111
          IF((MARKN0(K).NE.SAVKN0))GOTO 10111
          GOTO 10110
10111     IF((USEMA0.NE.0))GOTO 10109
          IF((MARKN0(K).EQ.SAVKN0))GOTO 10109
          GOTO 10110
10110       IF((USEPAT.NE.-1))GOTO 10113
              TMP=1
              GOTO 10114
10113         CALL GTXT(K)
              IF((MATCH(TXTAA0,PATAA0).NE.USEPAT))GOTO 10115
                TMP=1
10115       CONTINUE
10114     CONTINUE
10109     GLOBM0(K)=TMP
          K=NEXTL0(K)
        GOTO 10105
10116   K=NEXTL0(K)
10118   IF((K.EQ.LINE00))GOTO 10117
          GLOBM0(K)=0
        GOTO 10116
10117   CALL MESG(0,1)
10101 CKGLOB=STATUS
      RETURN
      END
      INTEGER FUNCTION DOCMD(LIN,I,GLOB,STATUS)
      INTEGER LIN(1)
      INTEGER I,GLOB,STATUS
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER FILE(512),SUB(256)
      INTEGER GFLAG,LINE3,PFLAG,FLAG,FFLAG,JUNK,KNAME,ALLBUT
      INTEGER APPEND,CKCHAR,CKP,CKUPD,COPY,DELETE,DOMARK,DOOPT,DOPRNT,DO
     *READ,DOTLIT,DOUNDO,DOWRIT,GETFN,GETKN,GETONE,GETRA0,GETRHS,GETSTR,
     *JOIN,MAKSET,MOVE,NEXTLN,OPTPAT,PREVLN,SUBST,DRAWB0,DOSHE0
      LOGICAL INTRPT,BRKFL0
      INTEGER J,MISSI0
      INTEGER AAAAG0
      INTEGER AAAAH0
      INTEGER AAAAI0
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      STATUS=-3
      IF((.NOT.INTRPT(BRKFL0)))GOTO 10119
        GOTO 10120
10119   AAAAG0=LIN(I)
        GOTO 10121
10122     IF((LIN(I+1).EQ.138))GOTO 10124
          IF((LIN(I+1).EQ.186))GOTO 10124
          GOTO 10126
10124       CALL DEFALT(CURLN0,CURLN0)
            IF((LIN(I+1).NE.138))GOTO 10125
              CALL ADJUS0(LINE10,LINE20)
              CALL UPDSC0
10125       STATUS=APPEND(LINE20,LIN(I+1))
10123   GOTO 10126
10127     IF((LIN(I+1).NE.138))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            CALL SAYNUM(LINE20)
            STATUS=-2
10128   GOTO 10126
10129     CALL DEFALT(CURLN0,CURLN0)
          IF((LIN(I+1).NE.138))GOTO 10126
            CALL OVERL0(STATUS)
10130   GOTO 10126
10131     CALL DEFALT(CURLN0,CURLN0)
          IF((LINE10.GT.0))GOTO 10132
            ERRCO0=17
            GOTO 10126
10132       IF((LIN(I+1).EQ.138))GOTO 10135
            IF((LIN(I+1).EQ.186))GOTO 10135
            GOTO 10134
10135         IF((LIN(I+1).NE.138))GOTO 10136
                CALL ADJUS0(LINE20,LINE20)
                CALL UPDSC0
10136         FIRSU0=MIN0(FIRSU0,LINE10)
              IF((FIRSU0.LE.LINE10))GOTO 10137
                FIRSU0=LINE10
10137         IF((LIN(I+1).NE.138))GOTO 10138
                CALL WARND0(LINE10,LINE20)
10138         STATUS=APPEND(LINE20,LIN(I+1))
              IF((STATUS.EQ.-3))GOTO 10139
                LINE3=CURLN0
                CALL DELETE(LINE10,LINE20,STATUS)
                CURLN0=LINE3-(LINE20-LINE10+1)
10139       CONTINUE
10134     CONTINUE
10133   GOTO 10126
10140     IF((CKP(LIN,I+1,PFLAG,STATUS).NE.-2))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            IF((DELETE(LINE10,LINE20,STATUS).NE.-2))GOTO 10142
            IF((DDIRA0.NE.0))GOTO 10142
            IF((NEXTLN(CURLN0).EQ.0))GOTO 10142
              CURLN0=NEXTLN(CURLN0)
10142     CONTINUE
10141   GOTO 10126
10143     CALL DEFALT(CURLN0,CURLN0)
          IF((LINE10.GT.0))GOTO 10144
            ERRCO0=17
            GOTO 10126
10144       IF((LIN(I+1).EQ.138))GOTO 10147
            IF((LIN(I+1).EQ.186))GOTO 10147
            GOTO 10146
10147         IF((LIN(I+1).NE.138))GOTO 10148
                CALL ADJUS0(LINE10,LINE20)
                CALL UPDSC0
10148         STATUS=APPEND(PREVLN(LINE20),LIN(I+1))
10146     CONTINUE
10145   GOTO 10126
10149     I=I+(1)
          IF((GETONE(LIN,I,LINE3,STATUS).NE.-1))GOTO 10150
            STATUS=-3
10150     IF((STATUS.NE.-2))GOTO 10126
          IF((CKP(LIN,I,PFLAG,STATUS).NE.-2))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            STATUS=MOVE(LINE3)
10151   GOTO 10126
10152     IF((UNIXM0.NE.1))GOTO 10153
            GOTO 2
10153     CONTINUE
1         I=I+(1)
          IF((GETONE(LIN,I,LINE3,STATUS).NE.-1))GOTO 10154
            STATUS=-3
10154     IF((STATUS.NE.-2))GOTO 10126
          IF((CKP(LIN,I,PFLAG,STATUS).NE.-2))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            STATUS=COPY(LINE3)
10155   GOTO 10126
10156     I=I+(1)
          IF((LIN(I).NE.138))GOTO 10157
            LIN(I+0)=175
            LIN(I+1)=175
            IF((UNIXM0.NE.0))GOTO 10158
              LIN(I+2)=166
              GOTO 10159
10158         LIN(I+2)=165
10159       LIN(I+3)=175
            LIN(I+4)=138
            LIN(I+5)=0
            PEEKC0=143
            GOTO 10160
10157       MISSI0=1
            J=I+1
            GOTO 10163
10161       J=J+(1)
10163       IF((LIN(J).EQ.0))GOTO 10162
              IF((LIN(J).NE.ESCAP0))GOTO 10164
              IF((LIN(J+1).NE.LIN(I)))GOTO 10164
                J=J+(1)
                GOTO 10161
10164           IF((LIN(J).NE.LIN(I)))GOTO 10166
                  MISSI0=0
                  GOTO 10162
10166         CONTINUE
10165       GOTO 10161
10162       IF((MISSI0.NE.1))GOTO 10167
              GOTO 10170
10168         J=J+(1)
10170         IF((LIN(J).EQ.0))GOTO 10169
              GOTO 10168
10169         J=J-(1)
              LIN(J)=LIN(I)
              LIN(J+1)=138
              LIN(J+2)=0
              PEEKC0=143
10167     CONTINUE
10160     IF((OPTPAT(LIN,I).NE.-2))GOTO 10126
          IF((GETRHS(LIN,I,SUB,GFLAG).NE.-2))GOTO 10126
          IF((CKP(LIN,I+1,PFLAG,STATUS).NE.-2))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            STATUS=SUBST(SUB,GFLAG,GLOB)
10171   GOTO 10126
10172     IF((UNIXM0.NE.1))GOTO 10173
            GOTO 1
10173     CONTINUE
2         I=I+(1)
          IF((LIN(I).NE.138))GOTO 10174
            LIN(I+0)=175
            LIN(I+1)=175
            IF((UNIXM0.NE.0))GOTO 10175
              LIN(I+2)=166
              GOTO 10176
10175         LIN(I+2)=165
10176       LIN(I+3)=175
            LIN(I+4)=138
            LIN(I+5)=0
            PEEKC0=143
            GOTO 10177
10174       MISSI0=1
            J=I+1
            GOTO 10180
10178       J=J+(1)
10180       IF((LIN(J).EQ.0))GOTO 10179
              IF((LIN(J).NE.ESCAP0))GOTO 10181
              IF((LIN(J+1).NE.LIN(I)))GOTO 10181
                J=J+(1)
                GOTO 10178
10181           IF((LIN(J).NE.LIN(I)))GOTO 10183
                  MISSI0=0
                  GOTO 10179
10183         CONTINUE
10182       GOTO 10178
10179       IF((MISSI0.NE.1))GOTO 10184
              GOTO 10187
10185         J=J+(1)
10187         IF((LIN(J).EQ.0))GOTO 10186
              GOTO 10185
10186         J=J-(1)
              LIN(J)=LIN(I)
              LIN(J+1)=138
              LIN(J+2)=0
              PEEKC0=143
10184     CONTINUE
10177     IF((GETRA0(LIN,I,TLPAT0,256,ALLBUT).NE.-2))GOTO 10126
          IF((MAKSET(LIN,I,SUB,256).NE.-2))GOTO 10126
          IF((CKP(LIN,I+1,PFLAG,STATUS).NE.-2))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            STATUS=DOTLIT(SUB,ALLBUT)
10188   GOTO 10126
10189     I=I+(1)
          IF((GETSTR(LIN,I,SUB,256).NE.-2))GOTO 10126
          IF((CKP(LIN,I+1,PFLAG,STATUS).NE.-2))GOTO 10126
            CALL DEFALT(PREVLN(CURLN0),CURLN0)
            STATUS=JOIN(SUB)
10190   GOTO 10126
10191     I=I+(1)
          CALL DEFALT(CURLN0,CURLN0)
          IF((CKCHAR(196,228,LIN,I,FLAG,STATUS).NE.-2))GOTO 10126
          IF((CKP(LIN,I,PFLAG,STATUS).NE.-2))GOTO 10126
            STATUS=DOUNDO(FLAG,STATUS)
10192   GOTO 10126
10193     I=I+(1)
          IF((NLINE0.EQ.0))GOTO 10194
            ERRCO0=32
            GOTO 10126
10194       IF((CKUPD(LIN,I,229,STATUS).NE.-2))GOTO 10196
              IF((GETFN(LIN,I-1,FILE).NE.-2))GOTO 10197
                CALL SCOPY(FILE,1,SAVFI0,1)
                CALL MESG(FILE,6)
                CALL CLRBUF
                CALL SETBUF
                STATUS=DOREAD(0,FILE)
                FIRSU0=0
                CURLN0=MIN0(1,LASTL0)
                BUFFE0=0
                GOTO 10198
10197           STATUS=-3
10198       CONTINUE
10196     CONTINUE
10195   GOTO 10126
10199     IF((NLINE0.EQ.0))GOTO 10200
            ERRCO0=32
            GOTO 10126
10200       IF((GETFN(LIN,I,FILE).NE.-2))GOTO 10202
              CALL SCOPY(FILE,1,SAVFI0,1)
              CALL MESG(FILE,6)
              STATUS=-2
10202     CONTINUE
10201   GOTO 10126
10203     IF((GETFN(LIN,I,FILE).NE.-2))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            STATUS=DOREAD(LINE20,FILE)
10204   GOTO 10126
10205     I=I+(1)
          FLAG=0
          FFLAG=0
          CALL CKCHAR(171,190,LIN,I,FLAG,JUNK)
          IF((FLAG.NE.0))GOTO 10206
            CALL CKCHAR(161,161,LIN,I,FFLAG,JUNK)
10206     IF((GETFN(LIN,I-1,FILE).NE.-2))GOTO 10126
            CALL DEFALT(1,LASTL0)
            STATUS=DOWRIT(LINE10,LINE20,FILE,FLAG,FFLAG)
10207   GOTO 10126
10208     IF((LIN(I+1).NE.138))GOTO 10126
            CALL DEFALT(1,TOPLN0)
            STATUS=DOPRNT(LINE10,LINE20)
10209   GOTO 10126
10210     CALL DEFALT(1,MIN0(LASTL0,BOTRO0-TOPRO0+TOPLN0))
          IF((LINE10.GT.0))GOTO 10211
            ERRCO0=17
            GOTO 10126
10211       IF((LIN(I+1).NE.138))GOTO 10213
              TOPLN0=LINE20
              CURLN0=LINE20
              FIRSU0=LINE20
              STATUS=-2
10213     CONTINUE
10212   GOTO 10126
10214     I=I+(1)
          IF((GETKN(LIN,I,KNAME,160).EQ.-3))GOTO 10126
          IF((LIN(I).NE.138))GOTO 10126
            CALL UNIQU0(KNAME,STATUS)
10215   GOTO 10126
10216     I=I+(1)
          IF((GETKN(LIN,I,KNAME,160).EQ.-3))GOTO 10126
          IF((LIN(I).NE.138))GOTO 10126
            CALL DEFALT(CURLN0,CURLN0)
            STATUS=DOMARK(KNAME)
10217   GOTO 10126
10218     LINE3=NEXTLN(CURLN0)
          CALL DEFALT(LINE3,LINE3)
          STATUS=DOPRNT(LINE20,LINE20)
        GOTO 10126
10219     IF((LIN(I+1).NE.138))GOTO 10126
            CALL WHERE0
            STATUS=-2
10220   GOTO 10126
10221     CALL DEFALT(CURLN0,CURLN0)
          STATUS=DOOPT(LIN,I)
        GOTO 10126
10222     I=I+(1)
          IF((NLINE0.EQ.0))GOTO 10223
            ERRCO0=32
            GOTO 10126
10223       IF((CKUPD(LIN,I,241,STATUS).NE.-2))GOTO 10225
              IF((LIN(I).NE.138))GOTO 10226
                STATUS=-1
                GOTO 10227
10226           STATUS=-3
10227       CONTINUE
10225     CONTINUE
10224   GOTO 10126
10228     I=I+(1)
          IF((NLINE0.NE.0))GOTO 10229
            CALL DOHELP(LIN,I,STATUS)
            GOTO 10126
10229       ERRCO0=32
10230   GOTO 10126
10231     I=I+(1)
          AAAAH0=LIN(I)
          GOTO 10232
10233       CALL DEFALT(CURLN0,CURLN0)
            I=I+(1)
            STATUS=DRAWB0(LIN,I)
          GOTO 10126
10232     IF(AAAAH0.EQ.194)GOTO 10233
          IF(AAAAH0.EQ.226)GOTO 10233
            ERRCO0=21
10234   GOTO 10126
10235     IF((UNIXM0.NE.1))GOTO 10236
            CALL ERROR('in docmd: can''t happen.')
10236     CONTINUE
3         I=I+(1)
          CALL DEFALT(CURLN0,CURLN0)
          STATUS=DOSHE0(LIN,I)
        GOTO 10126
10237     IF((UNIXM0.NE.1))GOTO 10238
            GOTO 3
10238       ERRCO0=21
        GOTO 10126
10121   IF(AAAAG0.EQ.138)GOTO 10218
        IF(AAAAG0.EQ.161)GOTO 10237
        AAAAI0=AAAAG0-185
        GOTO(10210,10239,10239,10127,10239,10239,10239,10122,10239,10131
     *,10140,10193,10199,10239,10228,10143,10189,10216,10219,10149,10214
     *,10221,10208,10222,10203,10156,10172,10191,10129,10205,10239,10152
     *,10231,10239,10239,10239,10239,10239,10239,10122,10239,10131,10140
     *,10193,10199,10239,10228,10143,10189,10216,10219,10149,10214,10221
     *,10208,10222,10203,10156,10172,10191,10129,10205,10239,10152,10231
     *,10239,10239,10239,10235),AAAAI0
10239     ERRCO0=21
10126 CONTINUE
10120 IF((STATUS.NE.-2))GOTO 10240
        PROBA0=0
10240 DOCMD=STATUS
      RETURN
      END
      SUBROUTINE DEFALT(DEF1,DEF2)
      INTEGER DEF1,DEF2
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      IF((NLINE0.NE.0))GOTO 10241
        LINE10=DEF1
        LINE20=DEF2
10241 RETURN
      END
      SUBROUTINE MSWAIT
      INTEGER FD
      INTEGER FOLLOW,OPEN
      INTEGER AAAAJ0(10)
      INTEGER AAAAK0(7)
      INTEGER AAAAL0(7)
      INTEGER AAAAM0(8)
      DATA AAAAJ0/189,231,239,243,243,233,240,189,160,0/
      DATA AAAAK0/189,245,243,229,242,189,0/
      DATA AAAAL0/170,189,240,233,228,189,0/
      DATA AAAAM0/205,229,243,243,225,231,229,0/
      IF((FOLLOW(AAAAJ0,0).EQ.-3))GOTO 10242
        FD=OPEN(AAAAK0,1)
        IF((FD.NE.-3))GOTO 10243
          FD=OPEN(AAAAL0,1)
10243   CALL FOLLOW(0,0)
        IF((FD.EQ.-3))GOTO 10244
          CALL CLOSE(FD)
          CALL MESG(AAAAM0,7)
          RETURN
10244 CONTINUE
10242 CALL MESG(0,7)
      RETURN
      END
      SUBROUTINE RELINK(A,X,Y,B)
      INTEGER A,B,X,Y
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      PREVL0(X)=A
      NEXTL0(Y)=B
      RETURN
      END
      SUBROUTINE WATCH
      INTEGER FACE(10)
      CALL DATE(2,FACE)
      FACE(6)=0
      CALL MESG(FACE,5)
      RETURN
      END
      SUBROUTINE MESG(S,T)
      INTEGER S(1)
      INTEGER T
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER COL,NEED,C,FIRST,LAST
      INTEGER LENGTH
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      FIRST=1
      GOTO 10247
10245 FIRST=FIRST+(1)
10247 IF((FIRST.GT.NCOLS0))GOTO 10246
        IF((MSGAL0(FIRST).NE.T))GOTO 10245
          GOTO 10246
10246 LAST=FIRST
      GOTO 10251
10249 LAST=LAST+(1)
10251 IF((LAST.GT.NCOLS0))GOTO 10255
        IF((MSGAL0(LAST).EQ.T))GOTO 10252
          GOTO 10255
10252   MSGAL0(LAST)=0
      GOTO 10249
10253 FIRST=FIRST-(1)
10255 IF((FIRST.LE.1))GOTO 10254
      IF((MSGAL0(FIRST-1).NE.0))GOTO 10254
      GOTO 10253
10254 NEED=LENGTH(S)+2
      IF((NEED.LE.2))GOTO 10256
        IF((NEED.GT.LAST-FIRST))GOTO 10257
          COL=FIRST
          GOTO 10258
10257     COL=1
          GOTO 10261
10259     COL=C
10261     IF((COL.GE.NCOLS0))GOTO 10260
10262       IF((COL.GE.NCOLS0))GOTO 10263
            IF((MSGAL0(COL).EQ.0))GOTO 10263
              COL=COL+(1)
            GOTO 10262
10263       C=COL
            GOTO 10266
10264       C=C+(1)
10266       IF((MSGAL0(C).NE.0))GOTO 10265
              IF((C.LT.NCOLS0))GOTO 10264
                GOTO 10265
10265       IF((C-COL.LT.NEED))GOTO 10259
              GOTO 10260
10260   CONTINUE
10258   IF((COL+NEED.LE.NCOLS0))GOTO 10269
          COL=1
          C=1
          GOTO 10272
10270     C=C+(1)
10272     IF((C.GT.NCOLS0))GOTO 10271
            IF((MSGAL0(C).EQ.0))GOTO 10270
              CALL LOAD(SCREE0(C,NROWS0),NROWS0,COL)
              MSGAL0(COL)=MSGAL0(C)
              COL=COL+(1)
10273     GOTO 10270
10271     C=COL
          GOTO 10276
10274     C=C+(1)
10276     IF((C.GT.NCOLS0))GOTO 10275
            MSGAL0(C)=0
          GOTO 10274
10275   CONTINUE
10269   CALL LOAD(160,NROWS0,COL)
        CALL LOADS0(S,NROWS0,COL+1,0)
        CALL LOAD(160,NROWS0,COL+NEED-1)
        C=COL
        GOTO 10279
10277   C=C+(1)
10279   IF((C.GT.MIN0(COL+NEED-1,NCOLS0)))GOTO 10278
          MSGAL0(C)=T
        GOTO 10277
10278 CONTINUE
10256 DO 10280 COL=1,NCOLS0
        IF((MSGAL0(COL).NE.0))GOTO 10282
          CALL LOAD(174,NROWS0,COL)
10282   CONTINUE
10280 CONTINUE
10281 RETURN
      END
      INTEGER FUNCTION NEXTLN(LINE)
      INTEGER LINE
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      NEXTLN=LINE+1
      IF((NEXTLN.LE.LASTL0))GOTO 10283
        NEXTLN=0
10283 RETURN
      END
      INTEGER FUNCTION PREVLN(LINE)
      INTEGER LINE
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      PREVLN=LINE-1
      IF((PREVLN.GE.0))GOTO 10284
        PREVLN=LASTL0
10284 RETURN
      END
      SUBROUTINE SERC
      COMMON /CLINES/LINE10,LINE20,NLINE0,CURLN0,LASTL0
      INTEGER LINE10,LINE20,NLINE0,CURLN0,LASTL0
      COMMON /CPAT/PATAA0(256),TLPAT0(256),SUBSA0(256),TSETA0(256)
      INTEGER PATAA0,TLPAT0,SUBSA0,TSETA0
      COMMON /CTXT/TXTAA0(512)
      INTEGER TXTAA0
      COMMON /CFILE/SAVFI0(512)
      INTEGER SAVFI0
      COMMON /CBUFR$/LASTB0,FENCE0,FREEA0,LINE00,BUFAA0(65520)
      INTEGER LASTB0,FENCE0,FREEA0,LINE00
      INTEGER BUFAA0
      INTEGER PREVL0(1),NEXTL0(1)
      INTEGER GLOBM0(1),LINEL0(1)
      INTEGER * 4 SEEKA0(1)
      INTEGER MARKN0(1)
      COMMON /CUNDO/LIMBO0,LIMCN0
      INTEGER LIMBO0,LIMCN0
      COMMON /CSCRAT/SCRAA0,SCREN0,SCRNA0(512),LOSTL0
      INTEGER SCRAA0
      INTEGER * 4 SCREN0
      INTEGER SCRNA0
      INTEGER LOSTL0
      COMMON /CMISC/BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0,PEEKC0,SAV
     *CO0
      INTEGER BUFFE0,ERRCO0,SAVER0,PROBA0,ARGNO0,LASTC0
      INTEGER PEEKC0,SAVCO0(512)
      COMMON /CMARK/SAVKN0
      INTEGER SAVKN0
      COMMON /COPT/TABST0(512),TABSU0(512),UNPRI0,DDIRA0,ABSNO0,NCHOI0,O
     *VERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GLOBA0
      INTEGER TABST0,TABSU0,UNPRI0
      INTEGER DDIRA0,ABSNO0,NCHOI0,OVERM0,WARNC0,FIRST0,TSPEE0,INDEN0,GL
     *OBA0
      COMMON /CTERM/TERMT0
      INTEGER TERMT0
      COMMON /CSCRN/SCREE0(128,51),MSGAL0(128),NROWS0,NCOLS0,CURRO0,CURC
     *O0,TOPRO0,BOTRO0,CMDRO0,TOPLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,
     *SCLEN0,SCTOP0,SCLIN0
      INTEGER SCREE0
      INTEGER MSGAL0,NROWS0,NCOLS0,CURRO0,CURCO0,TOPRO0,BOTRO0,CMDRO0,TO
     *PLN0,INSER0,INVER0,FIRSU0,RELAA0,RELZA0,SCLEN0,SCTOP0,SCLIN0(51)
      COMMON /CUNIX0/UNIXM0,BACKS0,NOTIN0,XMARK0,ESCAP0
      INTEGER UNIXM0
      INTEGER BACKS0,NOTIN0,XMARK0,ESCAP0
      COMMON /CTTY/TTYST0
      INTEGER TTYST0
      INTEGER LIN(512)
      INTEGER FD,OPEN
      INTEGER STATUS,LEN,CURSAV,GETLIN
      INTEGER GETLST,CKGLOB
      INTEGER AAAAN0(13)
      EQUIVALENCE (PREVL0(1),BUFAA0(1)),(NEXTL0(1),BUFAA0(2)),(GLOBM0(1)
     *,BUFAA0(3)),(SEEKA0(1),BUFAA0(4)),(LINEL0(1),BUFAA0(6)),(MARKN0(1)
     *,BUFAA0(7))
      DATA AAAAN0/189,232,239,237,229,189,175,174,243,229,242,227,0/
      FD=OPEN(AAAAN0,1)
      IF((FD.NE.-3))GOTO 10285
        RETURN
10285 STATUS=14
10286 IF((GETLIN(LIN,FD,512).EQ.-1))GOTO 10287
      IF((STATUS.EQ.-1))GOTO 10287
        IF((LIN(1).EQ.163))GOTO 10286
        IF((LIN(1).EQ.138))GOTO 10286
        GOTO 10288
10288   LEN=1
        CURSAV=CURLN0
        IF((GETLST(LIN,LEN,STATUS).NE.-2))GOTO 10290
          IF((CKGLOB(LIN,LEN,STATUS).NE.-2))GOTO 10291
            CALL DOGLOB(LIN,LEN,CURSAV,STATUS)
            GOTO 10292
10291       CALL DOCMD(LIN,LEN,0,STATUS)
10292   CONTINUE
10290   IF((STATUS.NE.-3))GOTO 10286
          CALL PRINT0
          CURLN0=MIN0(CURSAV,LASTL0)
10293 GOTO 10286
10287 CALL CLOSE(FD)
      RETURN
      END
C ---- Long Name Map ----
C Toprow                         topro0
C Sctop                          sctop0
C inslines                       insli0
C Lostlines                      lostl0
C Indent                         inden0
C Invertcase                     inver0
C Fence                          fence0
C Topln                          topln0
C gt40pos                        gt40p0
C terakpos                       terak0
C Savfil                         savfi0
C Line0                          line00
C Tspeed                         tspee0
C clrscreen                      clrsc0
C printverboseerrormessage       print0
C Line1                          line10
C Absnos                         absno0
C uniquelyname                   uniqu0
C Line2                          line20
C Limcnt                         limcn0
C Curcol                         curco0
C Insertmode                     inser0
C dologout                       dolog0
C doshell                        doshe0
C Nlines                         nline0
C Savcom                         savco0
C Peekc                          peekc0
C addspos                        addsp0
C fixscreen                      fixsc0
C Prevline                       prevl0
C Cmdrow                         cmdro0
C adjustwindow                   adjus0
C Bufferchanged                  buffe0
C Errcode                        errco0
C Firstcol                       first0
C Globals                        globa0
C updscreen                      updsc0
C Lastln                         lastl0
C Nextline                       nextl0
C Overlaycol                     overm0
C Txt                            txtaa0
C Savknm                         savkn0
C Tabstr                         tabsu0
C Nrows                          nrows0
C Unixmode                       unixm0
C setscreen                      setsc0
C forsyspos                      forsy0
C Scrname                        scrna0
C Nchoise                        nchoi0
C litmesg                        litme0
C getrange                       getra0
C drawbox                        drawb0
C Seekaddr                       seeka0
C Limbo                          limbo0
C garbagecollect                 garba0
C Subs                           subsa0
C Relz                           relza0
C termination                    termi0
C usemark                        usema0
C dellines                       delli0
C displaymessage                 displ0
C loadstr                        loads0
C restorescreen                  resto0
C Tabstops                       tabst0
C Sclen                          sclen0
C cleartoeol                     clear0
C Buf                            bufaa0
C whereami                       where0
C Tset                           tseta0
C Argno                          argno0
C missingdelim                   missi0
C ansipos                        ansip0
C Unprintable                    unpri0
C regentpos                      regen0
C sendmesg                       sendm0
C Botrow                         botro0
C Markname                       markn0
C Probation                      proba0
C Lastcharscanned                lastc0
C Warncol                        warnc0
C initialize                     initi0
C overlay                        overl0
C Pat                            pataa0
C Lineleng                       linel0
C cunixswt                       cunix0
C decodemnemonic                 decod0
C Globmark                       globm0
C Termtype                       termt0
C Ncols                          ncols0
C Currow                         curro0
C brkflag                        brkfl0
C recvmesg                       recvm0
C Scr                            scraa0
C Firstaffected                  firsu0
C NOTINCCL                       notin0
C bee2pos                        bee2p0
C positioncursor                 posit0
C Msgalloc                       msgal0
C hwinsdel                       hwins0
C litnnum                        litnn0
C Screenimage                    scree0
C gettermtype                    gette0
C sbeecoord                      sbeec0
C warndeleted                    warnd0
C Curln                          curln0
C Free                           freea0
C XMARK                          xmark0
C b200coord                      b200c0
C spinject                       spinj0
C Tlpat                          tlpat0
C Lastbf                         lastb0
C Saverrcode                     saver0
C Ddir                           ddira0
C Rela                           relaa0
C ESCAPE                         escap0
C senddelay                      sendd0
C Scline                         sclin0
C Ttystate                       ttyst0
C cgcoord                        cgcoo0
C Scrend                         scren0
C BACKSCAN                       backs0
