PROC MIKES_SMEAR IS ( LITERAL INFILE, LITERAL OUTFILE, RESPONSE (RESPONSE) RESP := RESULT) BEGIN STRING PHASE, INPUTREC, OUTPUTREC, KEPTLINE INT FLAG, SFLAG, INPUTFILE, OUTPUTFILE, PTR 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 PHASE := "ASSIGNING " + INFILE + " AS INPUTFILE" AF(NAM = VAL INFILE, LNA = INPUTFILE, RES = FLAG) PHASE := "CREATING " + OUTFILE + " AS OUTPUTFILE" CRF(NAM = VAL OUTFILE, LNA = OUTPUTFILE, RES = FLAG) SVF(RES = FLAG) PHASE := "OPENING INPUTFILE FOR INPUT" OPF(NAM = *INPUTFILE, CHA = INPUT, RES = FLAG) PHASE := "OPENING OUTPUTFILE FOR OUTPUT" OPF(NAM = *OUTPUTFILE, CHA = OUTPUT, ACC = W, RES = FLAG) PHASE := "READING INPUTFILE (1)" INPUTREC := FILL(160) RDR(CHA = INPUT, REC = INPUTREC, RES = SFLAG) KEPTLINE := INPUTREC UNTIL SFLAG = 26272 DO FLAG := SFLAG IF LENGTH KEPTLINE < LENGTH INPUTREC THEN KEPTLINE := KEPTLINE + SUBSTR(INPUTREC, LENGTH KEPTLINE, LENGTH INPUTREC - LENGTH KEPTLINE) ELSF LENGTH INPUTREC < LENGTH KEPTLINE THEN INPUTREC := INPUTREC + SUBSTR(KEPTLINE, LENGTH INPUTREC, LENGTH KEPTLINE - LENGTH INPUTREC) FI OUTPUTREC := FILL(LENGTH INPUTREC) FOR PTR FROM 0 TO (LENGTH INPUTREC - 1) DO IF SUBSTR(INPUTREC,PTR) NE " " THEN SUBSTR(KEPTLINE,PTR) := SUBSTR(INPUTREC,PTR) FI SUBSTR(OUTPUTREC,PTR) := SUBSTR(KEPTLINE,PTR) REPEAT PHASE := "WRITING OUTPUTREC TO OUTPUT" WRR(CHA = OUTPUT, REC = OUTPUTREC, RES = FLAG) PHASE := "READING INPUT (2)" INPUTREC := FILL(160) RDR(CHA = INPUT, REC = INPUTREC, RES = SFLAG) REPEAT PHASE := "CLOSING INPUT" CLOF(CHA = INPUT, RES = FLAG) PHASE := "CLOSING OUTPUT" CLOF(CHA = OUTPUT, RES = FLAG) END