SUBROUTINE MAIN LOGICAL*1 BUF(402), FMT(402), OUT(402), TABC INTEGER FROM(25), TO(25), WIDTH(25), START(25) INTEGER I, J, K, N, W, FILES, TFLAG INTEGER GETARG, GETLIN INTEGER FD INTEGER OPEN LOGICAL*1 USESTR(59) DATA USESTR(1)/117/,USESTR(2)/115/,USESTR(3)/97/,USESTR(4)/103/,US *ESTR(5)/101/,USESTR(6)/58/,USESTR(7)/32/,USESTR(8)/32/,USESTR(9)/1 *12/,USESTR(10)/114/,USESTR(11)/105/,USESTR(12)/110/,USESTR(13)/116 */,USESTR(14)/102/,USESTR(15)/32/,USESTR(16)/91/,USESTR(17)/45/,USE *STR(18)/116/,USESTR(19)/91/,USESTR(20)/99/,USESTR(21)/93/,USESTR(2 *2)/32/,USESTR(23)/124/,USESTR(24)/32/,USESTR(25)/102/,USESTR(26)/1 *05/,USESTR(27)/101/,USESTR(28)/108/,USESTR(29)/100/,USESTR(30)/108 */,USESTR(31)/105/,USESTR(32)/115/,USESTR(33)/116/,USESTR(34)/93/,U *SESTR(35)/32/,USESTR(36)/111/,USESTR(37)/117/,USESTR(38)/116/,USES *TR(39)/112/,USESTR(40)/117/,USESTR(41)/116/,USESTR(42)/102/,USESTR *(43)/111/,USESTR(44)/114/,USESTR(45)/109/,USESTR(46)/97/,USESTR(47 *)/116/,USESTR(48)/32/,USESTR(49)/91/,USESTR(50)/102/,USESTR(51)/10 *5/,USESTR(52)/108/,USESTR(53)/101/,USESTR(54)/93/,USESTR(55)/32/,U *SESTR(56)/46/,USESTR(57)/46/,USESTR(58)/46/,USESTR(59)/0/ CALL QUERY(USESTR) TABC = 9 TFLAG = 1 IF (.NOT.(GETARG(1, BUF, 402) .EQ. -1))GOTO 23000 CALL ERROR(USESTR) 23000 CONTINUE IF (.NOT.(BUF(1) .EQ. 45 .AND. (BUF(2) .EQ. 116 .OR. BUF(2) .EQ. 8 *4)))GOTO 23002 IF (.NOT.(BUF(3) .NE. 0))GOTO 23004 TABC = BUF(3) 23004 CONTINUE I = 2 GOTO 23003 23002 CONTINUE IF (.NOT.((48.LE.BUF(1).AND.BUF(1).LE.57)))GOTO 23006 CALL GETFLD(BUF, FROM, TO) TFLAG = 0 I = 2 GOTO 23007 23006 CONTINUE I = 1 23007 CONTINUE 23003 CONTINUE IF (.NOT.(GETARG(I, BUF, 402) .EQ. -1))GOTO 23008 CALL ERROR(USESTR) 23008 CONTINUE CALL GETFMT(BUF, FMT, WIDTH) FILES = 0 I=I+1 23010 CONTINUE IF (.NOT.(GETARG(I, BUF, 402) .EQ. -1))GOTO 23013 IF (.NOT.(FILES .EQ. 1))GOTO 23015 GOTO 23012 23015 CONTINUE FD = 1 GOTO 23014 23013 CONTINUE IF (.NOT.(BUF(1) .EQ. 45 .AND. BUF(2) .EQ. 0))GOTO 23017 FD = 1 GOTO 23018 23017 CONTINUE FD = OPEN(BUF, 1) 23018 CONTINUE 23014 CONTINUE FILES = 1 IF (.NOT.(FD .EQ. -3))GOTO 23019 CALL CANT(BUF) 23019 CONTINUE 23021 IF (.NOT.(GETLIN(BUF, FD) .NE. -1))GOTO 23022 IF (.NOT.(TFLAG .EQ. 1))GOTO 23023 CALL DOTABS(BUF, TABC, OUT, START) GOTO 23024 23023 CONTINUE CALL DOFLDS(BUF, FROM, TO, OUT, START) 23024 CONTINUE K = 1 J = 1 23025 IF (.NOT.(FMT(J) .NE. 0))GOTO 23027 IF (.NOT.(FMT(J) .NE. -1))GOTO 23028 CALL PUTCH(FMT(J), 2) GOTO 23029 23028 CONTINUE J = J + 1 W = FMT(J) N = START(K) K = K + 1 CALL PUTSTR(OUT(N), WIDTH(W), 2) 23029 CONTINUE 23026 J = J + 1 GOTO 23025 23027 CONTINUE CALL PUTCH(10, 2) GOTO 23021 23022 CONTINUE IF (.NOT.(FD .NE. 1))GOTO 23030 CALL CLOSE(FD) 23030 CONTINUE 23011 I=I+1 GOTO 23010 23012 CONTINUE RETURN END SUBROUTINE GETFLD(BUF, FROM, TO) LOGICAL*1 BUF(402) INTEGER FROM(25), TO(25) INTEGER I, N INTEGER CTOI LOGICAL*1 ST001Z(37) LOGICAL*1 ST002Z(26) DATA ST001Z(1)/84/,ST001Z(2)/111/,ST001Z(3)/111/,ST001Z(4)/32/,ST0 *01Z(5)/109/,ST001Z(6)/97/,ST001Z(7)/110/,ST001Z(8)/121/,ST001Z(9)/ *32/,ST001Z(10)/102/,ST001Z(11)/105/,ST001Z(12)/101/,ST001Z(13)/108 */,ST001Z(14)/100/,ST001Z(15)/115/,ST001Z(16)/32/,ST001Z(17)/102/,S *T001Z(18)/111/,ST001Z(19)/114/,ST001Z(20)/32/,ST001Z(21)/105/,ST00 *1Z(22)/110/,ST001Z(23)/116/,ST001Z(24)/101/,ST001Z(25)/114/,ST001Z *(26)/110/,ST001Z(27)/97/,ST001Z(28)/108/,ST001Z(29)/32/,ST001Z(30) */115/,ST001Z(31)/116/,ST001Z(32)/111/,ST001Z(33)/114/,ST001Z(34)/9 *7/,ST001Z(35)/103/,ST001Z(36)/101/,ST001Z(37)/0/ DATA ST002Z(1)/70/,ST002Z(2)/105/,ST002Z(3)/101/,ST002Z(4)/108/,ST *002Z(5)/100/,ST002Z(6)/32/,ST002Z(7)/115/,ST002Z(8)/112/,ST002Z(9) */101/,ST002Z(10)/99/,ST002Z(11)/105/,ST002Z(12)/102/,ST002Z(13)/10 *5/,ST002Z(14)/99/,ST002Z(15)/97/,ST002Z(16)/116/,ST002Z(17)/105/,S *T002Z(18)/111/,ST002Z(19)/110/,ST002Z(20)/32/,ST002Z(21)/101/,ST00 *2Z(22)/114/,ST002Z(23)/114/,ST002Z(24)/111/,ST002Z(25)/114/,ST002Z *(26)/0/ N = 0 I = 1 23032 IF (.NOT.(BUF(I) .NE. 0))GOTO 23034 N = N + 1 IF (.NOT.(N .GT. 25))GOTO 23035 CALL ERROR(ST001Z) 23035 CONTINUE FROM(N) = CTOI(BUF, I) TO(N) = FROM(N) CALL SKIPBL(BUF, I) IF (.NOT.(BUF(I) .EQ. 45))GOTO 23037 I = I + 1 TO(N) = CTOI(BUF, I) GOTO 23038 23037 CONTINUE IF (.NOT.(BUF(I) .EQ. 43))GOTO 23039 I = I + 1 TO(N) = FROM(N) + CTOI(BUF, I) - 1 23039 CONTINUE 23038 CONTINUE CALL SKIPBL(BUF, I) IF (.NOT.(FROM(N) .LT. 1 .OR. FROM(N) .GT. TO(N) .OR. (BUF(I) .NE. * 44 .AND. BUF(I) .NE. 0)))GOTO 23041 CALL PUTLNL(BUF, 3) 23043 IF (.NOT.(I .GT. 1))GOTO 23045 CALL PUTCH(32, 3) 23044 I = I - 1 GOTO 23043 23045 CONTINUE CALL PUTCH(94, 3) CALL PUTCH(10, 3) CALL ERROR(ST002Z) 23041 CONTINUE IF (.NOT.(BUF(I) .EQ. 44))GOTO 23046 I = I + 1 23046 CONTINUE 23033 GOTO 23032 23034 CONTINUE I = N + 1 23048 IF (.NOT.(I .LE. 25))GOTO 23050 FROM(I) = 30000 TO(I) = 30000 23049 I = I + 1 GOTO 23048 23050 CONTINUE RETURN END SUBROUTINE GETFMT(BUF, FMT, WIDTH) LOGICAL*1 BUF(402), FMT(402) INTEGER WIDTH(25) LOGICAL*1 ESC INTEGER I, J, K, JUNK INTEGER ADDSET, CTOI LOGICAL*1 ST003Z(37) LOGICAL*1 ST004Z(29) DATA ST003Z(1)/84/,ST003Z(2)/111/,ST003Z(3)/111/,ST003Z(4)/32/,ST0 *03Z(5)/109/,ST003Z(6)/97/,ST003Z(7)/110/,ST003Z(8)/121/,ST003Z(9)/ *32/,ST003Z(10)/102/,ST003Z(11)/105/,ST003Z(12)/101/,ST003Z(13)/108 */,ST003Z(14)/100/,ST003Z(15)/115/,ST003Z(16)/32/,ST003Z(17)/102/,S *T003Z(18)/111/,ST003Z(19)/114/,ST003Z(20)/32/,ST003Z(21)/105/,ST00 *3Z(22)/110/,ST003Z(23)/116/,ST003Z(24)/101/,ST003Z(25)/114/,ST003Z *(26)/110/,ST003Z(27)/97/,ST003Z(28)/108/,ST003Z(29)/32/,ST003Z(30) */115/,ST003Z(31)/116/,ST003Z(32)/111/,ST003Z(33)/114/,ST003Z(34)/9 *7/,ST003Z(35)/103/,ST003Z(36)/101/,ST003Z(37)/0/ DATA ST004Z(1)/73/,ST004Z(2)/110/,ST004Z(3)/99/,ST004Z(4)/111/,ST0 *04Z(5)/114/,ST004Z(6)/114/,ST004Z(7)/101/,ST004Z(8)/99/,ST004Z(9)/ *116/,ST004Z(10)/108/,ST004Z(11)/121/,ST004Z(12)/32/,ST004Z(13)/102 */,ST004Z(14)/111/,ST004Z(15)/114/,ST004Z(16)/109/,ST004Z(17)/97/,S *T004Z(18)/116/,ST004Z(19)/116/,ST004Z(20)/101/,ST004Z(21)/100/,ST0 *04Z(22)/32/,ST004Z(23)/115/,ST004Z(24)/116/,ST004Z(25)/114/,ST004Z *(26)/105/,ST004Z(27)/110/,ST004Z(28)/103/,ST004Z(29)/0/ J = 1 K = 0 I = 1 23051 IF (.NOT.(BUF(I) .NE. 0))GOTO 23053 IF (.NOT.(BUF(I) .EQ. 37))GOTO 23054 IF (.NOT.(BUF(I+1) .EQ. 37))GOTO 23056 I = I + 1 JUNK = ADDSET(37, FMT, J, 402) GOTO 23057 23056 CONTINUE K = K + 1 IF (.NOT.(K .GT. 25))GOTO 23058 CALL ERROR(ST003Z) 23058 CONTINUE JUNK = ADDSET(-1, FMT, J, 402) JUNK = ADDSET(K, FMT, J, 402) I = I + 1 WIDTH(K) = CTOI(BUF, I) IF (.NOT.(BUF(I) .NE. 115 .AND. BUF(I) .NE. 83))GOTO 23060 CALL PUTLNL(BUF, 3) 23062 IF (.NOT.(I .GT. 1))GOTO 23064 CALL PUTCH(32, 3) 23063 I = I - 1 GOTO 23062 23064 CONTINUE CALL PUTCH(94, 3) CALL PUTCH(10, 3) CALL ERROR(ST004Z) 23060 CONTINUE 23057 CONTINUE GOTO 23055 23054 CONTINUE JUNK = ADDSET(ESC(BUF, I), FMT, J, 402) 23055 CONTINUE 23052 I = I + 1 GOTO 23051 23053 CONTINUE FMT(J) = 0 K = K + 1 23065 IF (.NOT.(K .LE. 25))GOTO 23067 WIDTH(K) = 0 23066 K = K + 1 GOTO 23065 23067 CONTINUE RETURN END SUBROUTINE DOFLDS(BUF, FROM, TO, OUT, START) LOGICAL*1 BUF(402), OUT(402) INTEGER FROM(25), TO(25), START(25) INTEGER I, J, K, N INTEGER LENGTH J = 1 N = LENGTH(BUF) I = 1 23068 IF (.NOT.(I .LE. 25))GOTO 23070 START(I) = J K = FROM(I) 23071 IF (.NOT.(K .LE. TO(I)))GOTO 23073 IF (.NOT.(K .GE. N))GOTO 23074 GOTO 23073 23074 CONTINUE OUT(J) = BUF(K) J = J + 1 23075 CONTINUE 23072 K = K + 1 GOTO 23071 23073 CONTINUE OUT(J) = 0 J = J + 1 23069 I = I + 1 GOTO 23068 23070 CONTINUE RETURN END SUBROUTINE DOTABS(BUF, C, OUT, START) LOGICAL*1 BUF(402), OUT(402), C INTEGER START(25) INTEGER I, J J = 1 START(1) = 1 I = 1 23076 IF (.NOT.(BUF(I) .NE. 10))GOTO 23078 IF (.NOT.(BUF(I) .NE. C))GOTO 23079 OUT(I) = BUF(I) GOTO 23080 23079 CONTINUE OUT(I) = 0 J = J + 1 IF (.NOT.(J .GT. 25))GOTO 23081 GOTO 23078 23081 CONTINUE START(J) = I + 1 23080 CONTINUE 23077 I = I + 1 GOTO 23076 23078 CONTINUE OUT(I) = 0 J = J + 1 23083 IF (.NOT.(J .LE. 25))GOTO 23085 START(J) = I 23084 J = J + 1 GOTO 23083 23085 CONTINUE RETURN END