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