      INTEGER AP,ARTNO,I,QUIET
      INTEGER GETARG,REMOV0,REMOW0
      INTEGER REMOX0,CTOI
      INTEGER INDFD
      INTEGER OPEN
      INTEGER ARG(102)
      INTEGER A$BUF(200)
      INTEGER AAAAA0(13)
      INTEGER PARSCL
      INTEGER AAAAB0(3)
      INTEGER AAAAC0(42)
      INTEGER AAAAD0(28)
      DATA AAAAA0/189,238,229,247,243,189,175,233,238,228,229,248,0/
      DATA AAAAB0/173,241,0/
      DATA AAAAC0/213,243,225,231,229,186,160,160,242,229,244,242,225,22
     *7,244,160,219,173,241,221,160,251,160,188,225,242,244,233,227,236,
     *229,160,238,245,237,226,229,242,190,160,253,0/
      DATA AAAAD0/170,243,186,160,238,239,244,160,225,238,160,225,242,24
     *4,233,227,236,229,160,238,245,237,226,229,242,170,238,0/
      INDFD=OPEN(AAAAA0,3)
      IF((INDFD.NE.-3))GOTO 10000
        CALL ERROR('can''t open index file.')
10000 IF((PARSCL(AAAAB0,A$BUF).NE.-3))GOTO 10001
        CALL ERROR(AAAAC0)
10001 IF((A$BUF(241-225+1).EQ.0))GOTO 10002
        QUIET=1
        GOTO 10003
10002   QUIET=0
10003 AP=1
      GOTO 10006
10004 AP=AP+(1)
10006 IF((GETARG(AP,ARG,102).EQ.-1))GOTO 10005
        I=1
        ARTNO=CTOI(ARG,I)
        IF((ARG(I).EQ.0))GOTO 10007
          CALL PRINT(-15,AAAAD0,ARG)
          CALL SETERR(1000)
          GOTO 10005
10007   IF((REMOV0(ARTNO,INDFD).NE.-3))GOTO 10008
          CALL SETERR(1000)
          GOTO 10005
10008   IF((REMOW0(ARTNO).NE.-3))GOTO 10009
          CALL SETERR(1000)
          GOTO 10005
10009   IF((REMOX0(ARTNO,QUIET).NE.-3))GOTO 10010
          CALL SETERR(1000)
          GOTO 10005
10010 GOTO 10004
10005 CALL CLOSE(INDFD)
      CALL SWT
      END
      INTEGER FUNCTION REMOW0(ARTNO)
      INTEGER ARTNO
      INTEGER ARCH(102)
      INTEGER AAAAE0(22)
      DATA AAAAE0/189,238,229,247,243,189,175,225,242,244,233,227,236,22
     *9,243,175,225,242,244,170,233,0/
      CALL ENCODE(ARCH,102,AAAAE0,ARTNO)
      CALL REMOVE(ARCH)
      REMOW0=-2
      RETURN
      END
      INTEGER FUNCTION REMOX0(ARTNO,QUIET)
      INTEGER ARTNO,QUIET
      INTEGER L,ARTCT,I
      INTEGER GETLIN,VFYUSR,CTOI
      INTEGER SUBFD,BOXFD,TMPFD
      INTEGER OPEN,MKTEMP
      INTEGER BOX(102),SUBNA0(102)
      INTEGER AUTHOR(33),LDATE(32)
      INTEGER AAAAF0
      INTEGER AAAAG0(19)
      INTEGER AAAAH0(19)
      INTEGER AAAAI0(102)
      INTEGER AAAAJ0
      INTEGER AAAAK0(41)
      DATA AAAAG0/189,238,229,247,243,189,175,243,245,226,243,227,242,23
     *3,226,229,242,243,0/
      DATA AAAAH0/189,238,229,247,243,189,175,228,229,236,233,246,229,24
     *2,249,175,170,243,0/
      DATA AAAAK0/193,242,244,233,227,236,229,160,163,170,233,160,247,22
     *5,243,160,242,229,244,242,225,227,244,229,228,160,226,249,160,170,
     *243,160,239,238,160,170,243,170,178,238,0/
      SUBFD=OPEN(AAAAG0,1)
      IF((SUBFD.NE.-3))GOTO 10012
        CALL REMARK('can''t open subscriber list.')
        REMOX0=-3
        RETURN
10012 TMPFD=MKTEMP(3)
      IF((TMPFD.NE.-3))GOTO 10013
        CALL REMARK('can''t open temporary file.')
        REMOX0=-3
        RETURN
10013 CALL DATE(3,AUTHOR)
      CALL DATE(7,LDATE)
      L=GETLIN(SUBNA0,SUBFD)
      GOTO 10016
10014 L=GETLIN(SUBNA0,SUBFD)
10016 IF((L.EQ.-1))GOTO 10015
        SUBNA0(L)=0
        IF((VFYUSR(SUBNA0).EQ.-2))GOTO 10017
          GOTO 10014
10017   CALL ENCODE(BOX,102,AAAAH0,SUBNA0)
        BOXFD=OPEN(BOX,3)
        IF((BOXFD.NE.-3))GOTO 10018
          CALL PRINT(-15,'*s: can''t retract*n.',SUBNA0)
          REMOX0=-3
          RETURN
10018   CALL REWIND(TMPFD)
        CALL TRUNC(TMPFD)
        AAAAF0=1
        GOTO 10011
10019   IF((ARTCT.LE.0))GOTO 10020
          CALL REWIND(TMPFD)
          CALL REWIND(BOXFD)
          CALL TRUNC(BOXFD)
          CALL FCOPY(TMPFD,BOXFD)
          CALL CLOSE(BOXFD)
          GOTO 10021
10020     CALL CLOSE(BOXFD)
          CALL REMOVE(BOX)
10021 GOTO 10014
10015 CALL CLOSE(SUBFD)
      REMOX0=-2
      RETURN
10011 ARTCT=0
      L=GETLIN(AAAAI0,BOXFD)
      IF((L.EQ.-1))GOTO 10022
      IF((AAAAI0(1).EQ.193))GOTO 10022
        ARTCT=ARTCT+(1)
10022 CONTINUE
10023 IF((L.EQ.-1))GOTO 10024
        IF((AAAAI0(1).NE.193))GOTO 10025
          I=8
          AAAAJ0=CTOI(AAAAI0,I)
          IF((AAAAJ0.NE.ARTNO))GOTO 10026
            GOTO 10024
10026     ARTCT=ARTCT+(1)
10025   CALL PUTLIN(AAAAI0,TMPFD)
        L=GETLIN(AAAAI0,BOXFD)
      GOTO 10023
10024 IF((L.NE.-1))GOTO 10027
        IF((QUIET.NE.0))GOTO 10028
          CALL PRINT(TMPFD,AAAAK0,ARTNO,AUTHOR,LDATE)
          ARTCT=ARTCT+(1)
10028   GOTO 10029
10027   CONTINUE
10030     L=GETLIN(AAAAI0,BOXFD)
        IF((L.EQ.-1))GOTO 10031
        IF((AAAAI0(1).EQ.193))GOTO 10031
        GOTO 10030
10031   CONTINUE
        IF((L.EQ.-1))GOTO 10032
          ARTCT=ARTCT+(1)
          CALL PUTLIN(AAAAI0,TMPFD)
10033     IF((GETLIN(AAAAI0,BOXFD).EQ.-1))GOTO 10034
            IF((AAAAI0(1).NE.193))GOTO 10035
              ARTCT=ARTCT+(1)
10035       CALL PUTLIN(AAAAI0,TMPFD)
          GOTO 10033
10034   CONTINUE
10032 CONTINUE
10029 GOTO 10036
10036 GOTO 10019
      END
      INTEGER FUNCTION REMOV0(ARTNO,INDFD)
      INTEGER ARTNO
      INTEGER INDFD
      INTEGER I,J,NUMBER
      INTEGER CTOI,GETLIN,EQUAL
      INTEGER TMPFD
      INTEGER MKTEMP
      INTEGER UNAME(33),PNAME(33),LINE(102)
      INTEGER AAAAL0(24)
      INTEGER AAAAM0(7)
      INTEGER AAAAN0(24)
      DATA AAAAL0/170,233,186,160,225,242,244,233,227,236,229,160,238,23
     *9,244,160,230,239,245,238,228,170,238,0/
      DATA AAAAM0/211,217,211,212,197,205,0/
      DATA AAAAN0/170,233,186,160,225,242,244,233,227,236,229,160,238,23
     *9,244,160,249,239,245,242,243,170,238,0/
      CALL REWIND(INDFD)
      CALL DATE(3,UNAME)
      TMPFD=MKTEMP(3)
      IF((TMPFD.NE.-3))GOTO 10037
        CALL REMARK('can''t open temporary file.')
        REMOV0=-3
        RETURN
10037 CONTINUE
10038   IF((GETLIN(LINE,INDFD).NE.-1))GOTO 10039
          CALL PRINT(-15,AAAAL0,ARTNO)
          REMOV0=-3
          RETURN
10039   I=1
        NUMBER=CTOI(LINE,I)
        IF((NUMBER.NE.ARTNO))GOTO 10040
          GOTO 10041
10040   CALL PUTLIN(LINE,TMPFD)
      GOTO 10038
10041 I=I+(1)
10042 IF((LINE(I).NE.160))GOTO 10043
        I=I+(1)
      GOTO 10042
10043 J=1
      GOTO 10046
10044 J=J+(1)
      I=I+(1)
10046 IF((J.GE.33))GOTO 10045
      IF((LINE(I).EQ.160))GOTO 10045
        PNAME(J)=LINE(I)
      GOTO 10044
10045 PNAME(J)=0
      IF((EQUAL(PNAME,UNAME).NE.0))GOTO 10047
      IF((EQUAL(UNAME,AAAAM0).NE.0))GOTO 10047
        CALL PRINT(-15,AAAAN0,ARTNO)
        REMOV0=-3
        RETURN
10047 CALL FCOPY(INDFD,TMPFD)
      CALL REWIND(INDFD)
      CALL REWIND(TMPFD)
      CALL TRUNC(INDFD)
      CALL FCOPY(TMPFD,INDFD)
      CALL FLUSH$(INDFD)
      CALL RMTEMP(TMPFD)
      REMOV0=ARTNO
      RETURN
      END
C ---- Long Name Map ----
C removefromarchive              remow0
C removefromdelivery             remox0
C subname                        subna0
C copyandremove                  copya0
C removefromindex                remov0