SUBROUTINE MAIN INTEGER I, INT, PAGE, LCNT, J, JUNK, SCRAT INTEGER NXTFIL, OPEN, GETLIN, GETWRD, EQUAL, IMPUT, IMGET, REMOVE LOGICAL*1 FILE(36), PATH(36), LIN(402), WRD(402) INTEGER MEM(6400) LOGICAL*1 CMEM(12800) INTEGER INMEMT INTEGER IMINIT LOGICAL*1 HDRSTR(5) LOGICAL*1 LIPSIS(10) LOGICAL*1 BIGLIP(10) LOGICAL*1 TOC(18) LOGICAL*1 SINDEX(17) LOGICAL*1 ST001Z(25) LOGICAL*1 ST002Z(39) COMMON /CDSMEM/ MEM EQUIVALENCE (CMEM(1),MEM(1)) DATA HDRSTR(1)/35/,HDRSTR(2)/45/,HDRSTR(3)/104/,HDRSTR(4)/45/,HDRS *TR(5)/0/ DATA LIPSIS(1)/32/,LIPSIS(2)/32/,LIPSIS(3)/32/,LIPSIS(4)/32/,LIPSI *S(5)/46/,LIPSIS(6)/46/,LIPSIS(7)/46/,LIPSIS(8)/46/,LIPSIS(9)/46/,L *IPSIS(10)/0/ DATA BIGLIP(1)/32/,BIGLIP(2)/32/,BIGLIP(3)/32/,BIGLIP(4)/32/,BIGLI *P(5)/32/,BIGLIP(6)/80/,BIGLIP(7)/97/,BIGLIP(8)/103/,BIGLIP(9)/101/ *,BIGLIP(10)/0/ DATA TOC(1)/84/,TOC(2)/97/,TOC(3)/98/,TOC(4)/108/,TOC(5)/101/,TOC( *6)/32/,TOC(7)/111/,TOC(8)/102/,TOC(9)/32/,TOC(10)/67/,TOC(11)/111/ *,TOC(12)/110/,TOC(13)/116/,TOC(14)/101/,TOC(15)/110/,TOC(16)/116/, *TOC(17)/115/,TOC(18)/0/ DATA SINDEX(1)/73/,SINDEX(2)/110/,SINDEX(3)/100/,SINDEX(4)/101/,SI *NDEX(5)/120/,SINDEX(6)/32/,SINDEX(7)/111/,SINDEX(8)/102/,SINDEX(9) */32/,SINDEX(10)/69/,SINDEX(11)/110/,SINDEX(12)/116/,SINDEX(13)/114 */,SINDEX(14)/105/,SINDEX(15)/101/,SINDEX(16)/115/,SINDEX(17)/0/ DATA ST001Z(1)/117/,ST001Z(2)/115/,ST001Z(3)/97/,ST001Z(4)/103/,ST *001Z(5)/101/,ST001Z(6)/58/,ST001Z(7)/32/,ST001Z(8)/32/,ST001Z(9)/9 *7/,ST001Z(10)/108/,ST001Z(11)/105/,ST001Z(12)/115/,ST001Z(13)/116/ *,ST001Z(14)/32/,ST001Z(15)/91/,ST001Z(16)/102/,ST001Z(17)/105/,ST0 *01Z(18)/108/,ST001Z(19)/101/,ST001Z(20)/93/,ST001Z(21)/32/,ST001Z( *22)/46/,ST001Z(23)/46/,ST001Z(24)/46/,ST001Z(25)/0/ DATA ST002Z(1)/69/,ST002Z(2)/114/,ST002Z(3)/114/,ST002Z(4)/111/,ST *002Z(5)/114/,ST002Z(6)/32/,ST002Z(7)/105/,ST002Z(8)/110/,ST002Z(9) */105/,ST002Z(10)/116/,ST002Z(11)/105/,ST002Z(12)/97/,ST002Z(13)/10 *8/,ST002Z(14)/105/,ST002Z(15)/122/,ST002Z(16)/105/,ST002Z(17)/110/ *,ST002Z(18)/103/,ST002Z(19)/32/,ST002Z(20)/105/,ST002Z(21)/110/,ST *002Z(22)/45/,ST002Z(23)/109/,ST002Z(24)/101/,ST002Z(25)/109/,ST002 *Z(26)/111/,ST002Z(27)/114/,ST002Z(28)/121/,ST002Z(29)/32/,ST002Z(3 *0)/115/,ST002Z(31)/111/,ST002Z(32)/114/,ST002Z(33)/116/,ST002Z(34) */32/,ST002Z(35)/97/,ST002Z(36)/114/,ST002Z(37)/101/,ST002Z(38)/97/ *,ST002Z(39)/0/ CALL QUERY(ST001Z) I=1 23000 IF (.NOT.(NXTFIL(I, FILE, PATH, SCRAT) .NE. -1))GOTO 23002 INT = OPEN(FILE, 1) IF (.NOT.(INT .EQ. -3))GOTO 23003 CALL CANT(FILE) 23003 CONTINUE INMEMT = IMINIT(6400, 25) IF (.NOT.(INMEMT .EQ. 0))GOTO 23005 CALL ERROR(ST002Z) 23005 CONTINUE IF (.NOT.(I .GT. 1))GOTO 23007 CALL PUTCH(12, 2) 23007 CONTINUE CALL FMTHDR(PATH, TOC, LIN) CALL PUTLIN(LIN, 2) CALL PUTCH(10, 2) PAGE = 0 LCNT = 0 23009 IF (.NOT.(GETLIN(LIN, INT) .NE. -1))GOTO 23010 J = 1 JUNK = GETWRD(LIN, J, WRD) IF (.NOT.(EQUAL(WRD, HDRSTR) .EQ. 1))GOTO 23011 PAGE = PAGE + 1 CALL SKIPBL(LIN, J) CALL PUTHDR(LIN(J), LIPSIS, PAGE) JUNK = GETWRD(LIN, J, WRD) CALL FOLD(WRD) CALL FMTNDX(WRD, PAGE, LIN) JUNK = IMPUT(INMEMT, LIN) LCNT = 1 GOTO 23012 23011 CONTINUE IF (.NOT.(LCNT .GE. 57))GOTO 23013 PAGE = PAGE + 1 LCNT = 1 GOTO 23014 23013 CONTINUE IF (.NOT.(INDEXC(LIN, 12) .NE. 0))GOTO 23015 PAGE = PAGE + 1 LCNT = 1 GOTO 23016 23015 CONTINUE LCNT = LCNT + 1 23016 CONTINUE 23014 CONTINUE 23012 CONTINUE GOTO 23009 23010 CONTINUE CALL CLOSE(INT) CALL IMSORT(INMEMT) CALL PUTCH(12, 2) CALL FMTHDR(PATH, SINDEX, LIN) CALL PUTLIN(LIN, 2) CALL PUTCH(10, 2) 23017 IF (.NOT.(IMGET(INMEMT, LIN) .NE. -1))GOTO 23018 J=1 23019 IF (.NOT.(J .LE. 23))GOTO 23021 CALL PUTCH(32, 2) 23020 J=J+1 GOTO 23019 23021 CONTINUE CALL PUTLIN(LIN, 2) CALL PUTCH(10, 2) GOTO 23017 23018 CONTINUE INT = OPEN(FILE, 1) PAGE = 0 LCNT = 0 23022 IF (.NOT.(GETLIN(LIN, INT) .NE. -1))GOTO 23023 J = 1 JUNK = GETWRD(LIN, J, WRD) IF (.NOT.(EQUAL(WRD, HDRSTR) .EQ. 1))GOTO 23024 PAGE = PAGE + 1 CALL PUTCH(12, 2) CALL PUTHDR(LIN, BIGLIP, PAGE) LCNT = 1 GOTO 23025 23024 CONTINUE IF (.NOT.(LCNT .GE. 57))GOTO 23026 PAGE = PAGE + 1 CALL PUTCH(12, 2) LCNT = 1 CALL PUTLIN(LIN, 2) GOTO 23027 23026 CONTINUE IF (.NOT.(INDEXC(LIN, 12) .NE. 0))GOTO 23028 CALL PUTLIN(LIN, 2) PAGE = PAGE + 1 LCNT = 1 GOTO 23029 23028 CONTINUE LCNT = LCNT + 1 CALL PUTLIN(LIN, 2) 23029 CONTINUE 23027 CONTINUE 23025 CONTINUE GOTO 23022 23023 CONTINUE CALL CLOSE(INT) IF (.NOT.(SCRAT .EQ. 1))GOTO 23030 JUNK = REMOVE(FILE) 23030 CONTINUE 23001 I=I+1 GOTO 23000 23002 CONTINUE RETURN END SUBROUTINE FMTHDR(PATH, MIDDLE, BUF) LOGICAL*1 PATH(36), MIDDLE(100), BUF(100), DATE(10), TIME(10) INTEGER J, LIMIT, INIT, NOW(7) INTEGER LENGTH DATA INIT /1/ IF (.NOT.(INIT .EQ. 1))GOTO 23032 INIT = 0 CALL GETNOW(NOW) CALL FMTDAT(DATE, TIME, NOW, 1) 23032 CONTINUE J = 1 CALL STCOPY(PATH, 1, BUF, J) LIMIT = (72 - LENGTH(MIDDLE)) / 2 + 1 23034 IF (.NOT.(J .LE. LIMIT))GOTO 23035 CALL CHCOPY(32, BUF, J) GOTO 23034 23035 CONTINUE CALL STCOPY(MIDDLE, 1, BUF, J) LIMIT = 72 - LENGTH(DATE) - LENGTH(TIME) - 1 23036 IF (.NOT.(J .LE. LIMIT))GOTO 23037 CALL CHCOPY(32, BUF, J) GOTO 23036 23037 CONTINUE CALL STCOPY(DATE, 1, BUF, J) CALL CHCOPY(32, BUF, J) CALL STCOPY(TIME, 1, BUF, J) CALL CHCOPY(10, BUF, J) RETURN END SUBROUTINE FMTNDX(FILE, PAGE, BUF) LOGICAL*1 FILE(36), BUF(100), NUM(6) INTEGER PAGE, NBLANK, I, J INTEGER LENGTH, ITOC NBLANK = 25 - LENGTH(FILE) - ITOC(PAGE, NUM, 6) J = 1 CALL STCOPY(FILE, 1, BUF, J) I=1 23038 IF (.NOT.(I .LE. NBLANK))GOTO 23040 CALL CHCOPY(32, BUF, J) 23039 I=I+1 GOTO 23038 23040 CONTINUE CALL SCOPY(NUM, 1, BUF, J) RETURN END INTEGER FUNCTION NXTFIL(I, FILE, PATH, SCRAT) INTEGER I, SCRAT, INT INTEGER GETARG, CREATE LOGICAL*1 FILE(36), PATH(36) LOGICAL*1 SEED(4) LOGICAL*1 STDPTH(15) LOGICAL*1 ST003Z(46) DATA SEED(1)/97/,SEED(2)/108/,SEED(3)/115/,SEED(4)/0/ DATA STDPTH(1)/83/,STDPTH(2)/116/,STDPTH(3)/97/,STDPTH(4)/110/,STD *PTH(5)/100/,STDPTH(6)/97/,STDPTH(7)/114/,STDPTH(8)/100/,STDPTH(9)/ *32/,STDPTH(10)/105/,STDPTH(11)/110/,STDPTH(12)/112/,STDPTH(13)/117 */,STDPTH(14)/116/,STDPTH(15)/0/ DATA ST003Z(1)/67/,ST003Z(2)/97/,ST003Z(3)/110/,ST003Z(4)/110/,ST0 *03Z(5)/111/,ST003Z(6)/116/,ST003Z(7)/32/,ST003Z(8)/99/,ST003Z(9)/1 *14/,ST003Z(10)/101/,ST003Z(11)/97/,ST003Z(12)/116/,ST003Z(13)/101/ *,ST003Z(14)/32/,ST003Z(15)/115/,ST003Z(16)/99/,ST003Z(17)/114/,ST0 *03Z(18)/97/,ST003Z(19)/116/,ST003Z(20)/99/,ST003Z(21)/104/,ST003Z( *22)/32/,ST003Z(23)/102/,ST003Z(24)/105/,ST003Z(25)/108/,ST003Z(26) */101/,ST003Z(27)/32/,ST003Z(28)/102/,ST003Z(29)/111/,ST003Z(30)/11 *4/,ST003Z(31)/32/,ST003Z(32)/115/,ST003Z(33)/116/,ST003Z(34)/97/,S *T003Z(35)/110/,ST003Z(36)/100/,ST003Z(37)/97/,ST003Z(38)/114/,ST00 *3Z(39)/100/,ST003Z(40)/32/,ST003Z(41)/105/,ST003Z(42)/110/,ST003Z( *43)/112/,ST003Z(44)/117/,ST003Z(45)/116/,ST003Z(46)/0/ IF (.NOT.(GETARG(I, FILE, 36) .NE. -1))GOTO 23041 CALL MKPATH(FILE, PATH) SCRAT = 0 NXTFIL = 0 GOTO 23042 23041 CONTINUE IF (.NOT.(I .GT. 1))GOTO 23043 NXTFIL = -1 GOTO 23044 23043 CONTINUE CALL SCRATF(SEED, FILE) INT = CREATE(FILE, 2) IF (.NOT.(INT .NE. -3))GOTO 23045 SCRAT = 1 CALL FCOPY(1, INT) CALL CLOSE(INT) CALL SCOPY(STDPTH, 1, PATH, 1) NXTFIL = 0 GOTO 23046 23045 CONTINUE CALL REMARK(ST003Z) NXTFIL = -1 23046 CONTINUE 23044 CONTINUE 23042 CONTINUE RETURN END SUBROUTINE PUTHDR(FIRST, MIDDLE, PAGE) LOGICAL*1 FIRST(100), MIDDLE(100) INTEGER PAGE, I, LIMIT INTEGER LENGTH LIMIT = 67 - LENGTH(MIDDLE) I=1 23047 IF (.NOT.(I .LE. LIMIT))GOTO 23049 IF (.NOT.(FIRST(I) .EQ. 10 .OR. FIRST(I) .EQ. 0))GOTO 23050 GOTO 23049 23050 CONTINUE CALL PUTCH(FIRST(I), 2) 23051 CONTINUE 23048 I=I+1 GOTO 23047 23049 CONTINUE 23052 IF (.NOT.(I .LE. LIMIT))GOTO 23054 CALL PUTCH(32, 2) 23053 I=I+1 GOTO 23052 23054 CONTINUE CALL PUTLIN(MIDDLE, 2) CALL PUTINT(PAGE, 5,2) CALL PUTCH(10, 2) RETURN END