/SNOBOL LISTING PROGRAM / / WRITTEN BY WILLIAM NOWICKI / NORTHWESTERN UNIVERSITY / COMPUTER SCIENCE RESEARCH LABORATORY / / DECEMBER, 1976 / / /+ASK /THE USER IS FIRST ASKED FOR AN INPUT FILE /(ASSUMED TO BE ON "DSK:"). /THIS SOULD BE A "PAL8" LISTING FILE. /IF THE "SNOBOL 8.2" HEADING PUT OUT BY THE COMPILER /IS FOUND, THE TITLE WHICH WILL BE PUT ON THE LISTING /IS PRINTED. THE OUTPUT FILENAME IS THEN REQUESTED. /IT MAY TAKE A LONG TIME TO PROCESS A LARGE "SNOBOL" /PROGRAM - PLEASE BE PATIENT. / / /:CODE: PG = "1" LN = "0" TP = "0" /TOTAL PAGES FLD = "0" LP = "54" T = .A211 CRLF = .A215 .A212 PN = "0" ASK, OUTHOLD = "INPUT (PAL8 LISTING):" .LOOKUP INPUT :F(ASK) LP1, LINE = READ :F(EOF) LINE "/SNOBOL" :F(LP1) LINE "/" *TITLE/50* OUTPUT = "" OUTPUT = "TITLE: " TITLE OUTPUT = "" LINE = READ READ TITLE = .A214 CRLF T T TITLE T "PAGE " / ASKO, OUTHOLD = "OUTPUT (SNOBOL LISTING):" .ENTER INPUT :F(ASKO) / / /-ASK LAST = "00177" / / LOOP, LINE = READ :F(EOF) /READ INPUT LINE LINE_ "/SNOBOL" :F(NOPG) LINE = READ :F(EOF) /SKIP A LINE TP = TP +1 /INCREMENT TOTAL NUMBER OF PAGES / NOPG, /IT ISN'T A PAGE HEADING LINE *LOC/5* :F(NOLOC) LINE LOC = /DELETE THE LOCATION LOC " "!.A211 :S(NOLOC) LAST = LOC /SAVE LOCATION COUNTER NOLOC, /WE HAVE LOC. OF PREVIOUS LINE LINE_ ** "/" = :F(LOOP) /GET A SNOBOL SOURCE LINE LN = LN + 1 LP = LP + 1 LP "55" = :F(JUSTP) /CHECK FOR PAGINATION TIME PN = PN + 1 OUTPUT = "PAGE " PN WRITE = TITLE PN /PUT OUT THE TITLE WRITE = "" JUSTP, LOC = LAST LINE_ "/" :F(ULOC) /CHECK FOR COMMENTS LOC = " " ULOC, WRITE = LN T " " LOC " " LINE :(LOOP) / /+EOF / THIS MODULE CLOSES THE INPUT AND OUTPUT FILES /AND TELLS THE USER THE BAD NEWS IF ANY ERROR OCCURED. /:CODE: EOF, OUTPUT = CRLF OUTPUT = "TOTAL PAGES IN THE PAL8 LISTING: " TP .OCLOSE :F(CERROR) .ICLOSE .EXIT CERROR, OUTPUT = "CLOSING ERROR !" .EXIT IOBAD, OUTPUT = "OUTPUT ERROR !" .END /-EOF