PROC MIKES_LOSE_DUPES IS ( LITERAL INPUTFILE, LITERAL OUTPUTFILE := "", INT STARTCOL, INT STRINGLENGTH, RESPONSE (RESPONSE) RESP := RESULT) BEGIN INT FLAG, SFLAG, RECLENGTH, FROMCOL := STARTCOL - 1, LASTCOL := FROMCOL + STRINGLENGTH STRING OUTPUTFILENAME, INBUFF := FILL(100), LASTSTRING := FILL(STRINGLENGTH), PHASE WHENEVER FLAG NE 0 THEN IF FLAG > 0 THEN SMSG("ERROR WHEN " + PHASE) RESP := FLAG RETURN ELSE SMSG("WARNINGS WHEN " + PHASE) SRSMSG(FLAG) FLAG := 0 FI FI IF OUTPUTFILE = "" THEN OUTPUTFILENAME := INPUTFILE + "NODUP" ELSE OUTPUTFILENAME := OUTPUTFILE FI PHASE := "OPENING " + INPUTFILE + " AS INFILE" OPF(NAM = VAL INPUTFILE, CHA = INFILE, RES = FLAG) PHASE := "CREATING " + OUTPUTFILENAME CRF(NAM = VAL OUTPUTFILENAME, LNA = AA, RES = FLAG) SVF(RES = FLAG) PHASE := "OPENING " + OUTPUTFILENAME + " AS OUTFILE" OPF(NAM = *AA, CHA = OUTFILE, ACC = W, RES = FLAG) PHASE := "READING INFILE" RDR(CHA = INFILE, REC = INBUFF, RLE = RECLENGTH, RES = SFLAG) UNTIL SFLAG = 26272 DO FLAG := SFLAG IF RECLENGTH < LASTCOL THEN INBUFF := INBUFF + FILL(LASTCOL - RECLENGTH) FI IF SUBSTR(INBUFF, FROMCOL, STRINGLENGTH) NE LASTSTRING THEN PHASE := "WRITING OUTFILE" WRR(CHA = OUTFILE, REC = INBUFF, RES = FLAG) LASTSTRING := SUBSTR(INBUFF, FROMCOL, STRINGLENGTH) PHASE := "READING INFILE" FI RDR(CHA = INFILE, REC = INBUFF, RLE = RECLENGTH, RES = SFLAG) REPEAT PHASE := "CLOSING FILES" CLOF(CHA = INFILE, RES = FLAG) CLOF(CHA = OUTFILE, RES = FLAG) END