SUBROUTINE MAIN LOGICAL*1 ARG(36), EXT(4), ARGS(256), RATP1(36), RATP2(36), TEMP(3 *6), DESCR(7), P1FIX(36), P2FIX(36) INTEGER ERRCNT, I, K, STATUS, SSPAWN, GETARG, LOCCOM, JUNK, REMOVE *, AMOVE, INDEXC INTEGER FLEVEL LOGICAL*1 FFILES INTEGER LDMAP INTEGER LOAD INTEGER SAVEF INTEGER RATONL INTEGER VERBOS INTEGER LIST INTEGER DEBUG LOGICAL*1 SUFFIX(7) LOGICAL*1 SPATH(18) LOGICAL*1 RATP1S(6) LOGICAL*1 RATP2S(6) LOGICAL*1 FC(3) LOGICAL*1 EXTF(4) LOGICAL*1 SCREXT(4) LOGICAL*1 MINUSC(4) LOGICAL*1 MINUSD(4) LOGICAL*1 MINUSM(4) LOGICAL*1 MINUSO(4) LOGICAL*1 MINUSV(4) LOGICAL*1 ST001Z(59) LOGICAL*1 ST002Z(31) LOGICAL*1 ST003Z(31) LOGICAL*1 ST004Z(4) LOGICAL*1 ST005Z(3) LOGICAL*1 ST006Z(28) COMMON /FLIST/ FLEVEL, FFILES(36, 25) COMMON / CRC / LDMAP, LOAD, SAVEF, RATONL, VERBOS, LIST, DEBUG DATA SUFFIX(1)/46/,SUFFIX(2)/116/,SUFFIX(3)/115/,SUFFIX(4)/107/,SU *FFIX(5)/0/,SUFFIX(6)/10/,SUFFIX(7)/0/ DATA SPATH(1)/0/,SPATH(2)/126/,SPATH(3)/47/,SPATH(4)/0/,SPATH(5)/1 *26/,SPATH(6)/117/,SPATH(7)/115/,SPATH(8)/114/,SPATH(9)/47/,SPATH(1 *0)/0/,SPATH(11)/126/,SPATH(12)/98/,SPATH(13)/105/,SPATH(14)/110/,S *PATH(15)/47/,SPATH(16)/0/,SPATH(17)/10/,SPATH(18)/0/ DATA RATP1S(1)/114/,RATP1S(2)/97/,RATP1S(3)/116/,RATP1S(4)/112/,RA *TP1S(5)/49/,RATP1S(6)/0/ DATA RATP2S(1)/114/,RATP2S(2)/97/,RATP2S(3)/116/,RATP2S(4)/112/,RA *TP2S(5)/50/,RATP2S(6)/0/ DATA FC(1)/102/,FC(2)/99/,FC(3)/0/ DATA EXTF(1)/102/,EXTF(2)/0/ DATA SCREXT(1)/114/,SCREXT(2)/112/,SCREXT(3)/49/,SCREXT(4)/0/ DATA MINUSC(1)/45/,MINUSC(2)/99/,MINUSC(3)/32/,MINUSC(4)/0/ DATA MINUSD(1)/45/,MINUSD(2)/100/,MINUSD(3)/32/,MINUSD(4)/0/ DATA MINUSM(1)/45/,MINUSM(2)/109/,MINUSM(3)/32/,MINUSM(4)/0/ DATA MINUSO(1)/45/,MINUSO(2)/111/,MINUSO(3)/32/,MINUSO(4)/0/ DATA MINUSV(1)/45/,MINUSV(2)/118/,MINUSV(3)/32/,MINUSV(4)/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)/1 *14/,ST001Z(10)/99/,ST001Z(11)/32/,ST001Z(12)/91/,ST001Z(13)/45/,ST *001Z(14)/99/,ST001Z(15)/100/,ST001Z(16)/102/,ST001Z(17)/109/,ST001 *Z(18)/111/,ST001Z(19)/114/,ST001Z(20)/118/,ST001Z(21)/93/,ST001Z(2 *2)/32/,ST001Z(23)/91/,ST001Z(24)/45/,ST001Z(25)/108/,ST001Z(26)/91 */,ST001Z(27)/108/,ST001Z(28)/105/,ST001Z(29)/98/,ST001Z(30)/114/,S *T001Z(31)/93/,ST001Z(32)/93/,ST001Z(33)/32/,ST001Z(34)/91/,ST001Z( *35)/45/,ST001Z(36)/112/,ST001Z(37)/112/,ST001Z(38)/114/,ST001Z(39) */111/,ST001Z(40)/99/,ST001Z(41)/93/,ST001Z(42)/32/,ST001Z(43)/91/, *ST001Z(44)/45/,ST001Z(45)/120/,ST001Z(46)/46/,ST001Z(47)/46/,ST001 *Z(48)/46/,ST001Z(49)/93/,ST001Z(50)/32/,ST001Z(51)/102/,ST001Z(52) */105/,ST001Z(53)/108/,ST001Z(54)/101/,ST001Z(55)/32/,ST001Z(56)/46 */,ST001Z(57)/46/,ST001Z(58)/46/,ST001Z(59)/0/ DATA ST002Z(1)/67/,ST002Z(2)/97/,ST002Z(3)/110/,ST002Z(4)/110/,ST0 *02Z(5)/111/,ST002Z(6)/116/,ST002Z(7)/32/,ST002Z(8)/108/,ST002Z(9)/ *111/,ST002Z(10)/99/,ST002Z(11)/97/,ST002Z(12)/116/,ST002Z(13)/101/ *,ST002Z(14)/32/,ST002Z(15)/114/,ST002Z(16)/97/,ST002Z(17)/116/,ST0 *02Z(18)/112/,ST002Z(19)/49/,ST002Z(20)/32/,ST002Z(21)/105/,ST002Z( *22)/109/,ST002Z(23)/97/,ST002Z(24)/103/,ST002Z(25)/101/,ST002Z(26) */32/,ST002Z(27)/102/,ST002Z(28)/105/,ST002Z(29)/108/,ST002Z(30)/10 *1/,ST002Z(31)/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)/108/,ST003Z(9)/ *111/,ST003Z(10)/99/,ST003Z(11)/97/,ST003Z(12)/116/,ST003Z(13)/101/ *,ST003Z(14)/32/,ST003Z(15)/114/,ST003Z(16)/97/,ST003Z(17)/116/,ST0 *03Z(18)/112/,ST003Z(19)/50/,ST003Z(20)/32/,ST003Z(21)/105/,ST003Z( *22)/109/,ST003Z(23)/97/,ST003Z(24)/103/,ST003Z(25)/101/,ST003Z(26) */32/,ST003Z(27)/102/,ST003Z(28)/105/,ST003Z(29)/108/,ST003Z(30)/10 *1/,ST003Z(31)/0/ DATA ST004Z(1)/32/,ST004Z(2)/124/,ST004Z(3)/32/,ST004Z(4)/0/ DATA ST005Z(1)/32/,ST005Z(2)/62/,ST005Z(3)/0/ DATA ST006Z(1)/67/,ST006Z(2)/97/,ST006Z(3)/110/,ST006Z(4)/110/,ST0 *06Z(5)/111/,ST006Z(6)/116/,ST006Z(7)/32/,ST006Z(8)/108/,ST006Z(9)/ *111/,ST006Z(10)/99/,ST006Z(11)/97/,ST006Z(12)/116/,ST006Z(13)/101/ *,ST006Z(14)/32/,ST006Z(15)/102/,ST006Z(16)/99/,ST006Z(17)/32/,ST00 *6Z(18)/105/,ST006Z(19)/109/,ST006Z(20)/97/,ST006Z(21)/103/,ST006Z( *22)/101/,ST006Z(23)/32/,ST006Z(24)/102/,ST006Z(25)/105/,ST006Z(26) */108/,ST006Z(27)/101/,ST006Z(28)/0/ CALL QUERY(ST001Z) LOAD = 1 SAVEF = 0 RATONL = 0 VERBOS = 0 LIST = 0 DEBUG = 0 LDMAP = 0 ERRCNT = 0 I=1 23000 IF (.NOT.(GETARG(I, ARG, 36) .NE. -1))GOTO 23002 IF (.NOT.(ARG(1) .EQ. 45 .OR. ARG(1) .EQ. 43))GOTO 23003 CALL RCCMD(ARG) GOTO 23004 23003 CONTINUE CALL FSTACK(ARG) 23004 CONTINUE 23001 I=I+1 GOTO 23000 23002 CONTINUE IF (.NOT.(LOCCOM(RATP1S, SPATH, SUFFIX, RATP1) .NE. 60))GOTO 23005 CALL ERROR(ST002Z) 23005 CONTINUE CALL NAMFIX(RATP1, P1FIX) IF (.NOT.(LOCCOM(RATP2S, SPATH, SUFFIX, RATP2) .NE. 60))GOTO 23007 CALL ERROR(ST003Z) 23007 CONTINUE CALL NAMFIX(RATP2, P2FIX) CALL SCRATF(SCREXT, TEMP) I=1 23009 IF (.NOT.(I .LE. FLEVEL))GOTO 23011 CALL GETEXT(FFILES(1,I), EXT) IF (.NOT.(FFILES(1,I) .NE. 45 .AND. EXT(1) .EQ. 114 .AND. EXT(2) . *EQ. 0))GOTO 23012 CALL GENFIL(FFILES(1,I), EXTF, ARG) K = 1 CALL STCOPY(RATP1S, 1, ARGS, K) CALL CHCOPY(32, ARGS, K) CALL STCOPY(FFILES(1,I), 1, ARGS, K) CALL CHCOPY(32, ARGS, K) CALL CHCOPY(62, ARGS, K) CALL SCOPY(TEMP, 1, ARGS, K) IF (.NOT.(VERBOS .EQ. 1))GOTO 23014 CALL PUTLIN(P1FIX, 3) CALL PUTCH(32, 3) CALL PUTLIN(FFILES(1,I), 3) CALL PUTLIN(ST004Z, 3) CALL PUTLIN(P2FIX, 3) CALL PUTLIN(ST005Z, 3) CALL PUTLNL(ARG, 3) 23014 CONTINUE IF (.NOT.(SSPAWN(RATP1, ARGS, DESCR, 119) .NE. 0))GOTO 23016 ERRCNT = ERRCNT + 1 JUNK = AMOVE(TEMP, ARG) GOTO 23017 23016 CONTINUE K = 1 CALL STCOPY(RATP2S, 1, ARGS, K) CALL CHCOPY(32, ARGS, K) CALL STCOPY(TEMP, 1, ARGS, K) CALL CHCOPY(32, ARGS, K) CALL CHCOPY(62, ARGS, K) CALL SCOPY(ARG, 1, ARGS, K) IF (.NOT.(SSPAWN(RATP2, ARGS, DESCR, 119) .NE. 0))GOTO 23018 ERRCNT = ERRCNT + 1 23018 CONTINUE 23017 CONTINUE K = 1 IF (.NOT.(SAVEF .EQ. 0))GOTO 23020 FFILES(1,I) = 62 K = 2 23020 CONTINUE CALL SCOPY(ARG, 1, FFILES(1,I), K) 23012 CONTINUE 23010 I=I+1 GOTO 23009 23011 CONTINUE IF (.NOT.(RATONL .EQ. 0 .AND. ERRCNT .EQ. 0))GOTO 23022 K = 1 CALL STCOPY(FC, 1, ARGS, K) CALL CHCOPY(32, ARGS, K) IF (.NOT.(LOAD .EQ. 0))GOTO 23024 CALL STCOPY(MINUSC, 1, ARGS, K) 23024 CONTINUE IF (.NOT.(VERBOS .EQ. 1))GOTO 23026 CALL STCOPY(MINUSV, 1, ARGS, K) 23026 CONTINUE IF (.NOT.(LIST .EQ. 1))GOTO 23028 CALL STCOPY(MINUSO, 1, ARGS, K) 23028 CONTINUE IF (.NOT.(DEBUG .EQ. 1))GOTO 23030 CALL STCOPY(MINUSD, 1, ARGS, K) 23030 CONTINUE IF (.NOT.(LDMAP .EQ. 1))GOTO 23032 CALL STCOPY(MINUSM, 1, ARGS, K) 23032 CONTINUE I=1 23034 IF (.NOT.(I .LE. FLEVEL))GOTO 23036 IF (.NOT.(FFILES(1,I) .EQ. 62))GOTO 23037 CALL STCOPY(FFILES(1,I), 2, ARGS, K) GOTO 23038 23037 CONTINUE CALL STCOPY(FFILES(1,I), 1, ARGS, K) 23038 CONTINUE CALL CHCOPY(32, ARGS, K) 23035 I=I+1 GOTO 23034 23036 CONTINUE ARGS(K-1) = 0 IF (.NOT.(LOCCOM(FC, SPATH, SUFFIX, ARG) .NE. 60))GOTO 23039 CALL ERROR(ST006Z) 23039 CONTINUE CALL NAMFIX(ARG, P1FIX) IF (.NOT.(VERBOS .EQ. 1))GOTO 23041 CALL PUTLIN(P1FIX, 3) K = INDEXC(ARGS, 32) CALL PUTLNL(ARGS(K), 3) 23041 CONTINUE STATUS = SSPAWN(ARG, ARGS, DESCR, 119) I=1 23043 IF (.NOT.(I .LE. FLEVEL))GOTO 23045 IF (.NOT.(FFILES(1,I) .EQ. 62))GOTO 23046 JUNK = REMOVE(FFILES(2,I)) 23046 CONTINUE 23044 I=I+1 GOTO 23043 23045 CONTINUE 23022 CONTINUE JUNK = REMOVE(TEMP) RETURN END SUBROUTINE FSTACK (IARG) INTEGER I LOGICAL*1 IARG(36) INTEGER FLEVEL LOGICAL*1 FFILES COMMON /FLIST/ FLEVEL, FFILES(36, 25) IF (.NOT.(FLEVEL .LT. 25))GOTO 23048 FLEVEL = FLEVEL + 1 I=1 23050 IF (.NOT.(I.LE.36))GOTO 23052 FFILES(I,FLEVEL) = IARG(I) 23051 I=I+1 GOTO 23050 23052 CONTINUE CALL FOLD(FFILES(1, FLEVEL)) 23048 CONTINUE RETURN END SUBROUTINE GENFIL(IN, EXT, OUT) INTEGER I, J INTEGER LENGTH LOGICAL*1 IN(36), EXT(4), OUT(36) LOGICAL*1 TRMCHR(3) DATA TRMCHR(1)/47/,TRMCHR(2)/93/,TRMCHR(3)/0/ I=LENGTH(IN) 23053 IF (.NOT.(I .GT. 0))GOTO 23055 IF (.NOT.(INDEXC(TRMCHR, IN(I)) .GT. 0))GOTO 23056 GOTO 23055 23056 CONTINUE 23054 I=I-1 GOTO 23053 23055 CONTINUE J=I+1 23058 IF (.NOT.(IN(J) .NE. 0))GOTO 23060 IF (.NOT.(IN(J) .EQ. 46))GOTO 23061 GOTO 23060 23061 CONTINUE 23059 J=J+1 GOTO 23058 23060 CONTINUE I=1 23063 IF (.NOT.(I .LT. J))GOTO 23065 OUT(I) = IN(I) 23064 I=I+1 GOTO 23063 23065 CONTINUE CALL CHCOPY(46, OUT, I) CALL SCOPY(EXT, 1, OUT, I) RETURN END SUBROUTINE GETEXT(FILE, EXT) LOGICAL*1 FILE(36), EXT(4) INTEGER I, J INTEGER LENGTH, INDEXC LOGICAL*1 TRMCHR(3) DATA TRMCHR(1)/47/,TRMCHR(2)/93/,TRMCHR(3)/0/ I=LENGTH(FILE) 23066 IF (.NOT.(I .GT. 0))GOTO 23068 IF (.NOT.(INDEXC(TRMCHR, FILE(I)) .GT. 0))GOTO 23069 GOTO 23068 23069 CONTINUE 23067 I=I-1 GOTO 23066 23068 CONTINUE J=I+1 23071 IF (.NOT.(FILE(J) .NE. 0))GOTO 23073 IF (.NOT.(FILE(J) .EQ. 46))GOTO 23074 J = J + 1 GOTO 23073 23074 CONTINUE 23072 J=J+1 GOTO 23071 23073 CONTINUE I=1 23076 IF (.NOT.(FILE(J) .NE. 0 .AND. FILE(J) .NE. 59 .AND. FILE(J) .NE. *46))GOTO 23078 EXT(I) = FILE(J) J = J + 1 23077 I=I+1 GOTO 23076 23078 CONTINUE EXT(I) = 0 CALL FOLD(EXT) RETURN END SUBROUTINE RCCMD(ARG) LOGICAL*1 ARG(36) INTEGER INDEXC INTEGER LDMAP INTEGER LOAD INTEGER SAVEF INTEGER RATONL INTEGER VERBOS INTEGER LIST INTEGER DEBUG COMMON / CRC / LDMAP, LOAD, SAVEF, RATONL, VERBOS, LIST, DEBUG CALL FOLD(ARG) IF (.NOT.(ARG(1) .EQ. 45))GOTO 23079 IF (.NOT.(ARG(2) .EQ. 108 .OR. ARG(2) .EQ. 112 .OR. ARG(2) .EQ. 12 *0))GOTO 23081 CALL FSTACK(ARG) GOTO 23082 23081 CONTINUE IF (.NOT.(INDEXC(ARG, 99) .GT. 0))GOTO 23083 LOAD = 0 23083 CONTINUE IF (.NOT.(INDEXC(ARG, 100) .GT. 0))GOTO 23085 DEBUG = 1 SAVEF = 1 23085 CONTINUE IF (.NOT.(INDEXC(ARG, 102) .GT. 0))GOTO 23087 SAVEF = 1 23087 CONTINUE IF (.NOT.(INDEXC(ARG, 109) .GT. 0))GOTO 23089 LDMAP = 1 23089 CONTINUE IF (.NOT.(INDEXC(ARG, 111) .GT. 0))GOTO 23091 LIST = 1 23091 CONTINUE IF (.NOT.(INDEXC(ARG, 114) .GT. 0))GOTO 23093 RATONL = 1 SAVEF = 1 23093 CONTINUE IF (.NOT.(INDEXC(ARG, 118) .GT. 0))GOTO 23095 VERBOS = 1 23095 CONTINUE 23082 CONTINUE GOTO 23080 23079 CONTINUE CALL BADARG(ARG) 23080 CONTINUE RETURN END SUBROUTINE NAMFIX(FILE, FIXFIL) LOGICAL*1 FILE(36), FIXFIL(36) INTEGER I, N INTEGER INDEXS, LENGTH INTEGER I23100 INTEGER I23111 LOGICAL*1 ST007Z(3) LOGICAL*1 ST008Z(3) LOGICAL*1 ST009Z(6) LOGICAL*1 ST00AZ(6) DATA ST007Z(1)/46/,ST007Z(2)/47/,ST007Z(3)/0/ DATA ST008Z(1)/126/,ST008Z(2)/47/,ST008Z(3)/0/ DATA ST009Z(1)/126/,ST009Z(2)/117/,ST009Z(3)/115/,ST009Z(4)/114/,S *T009Z(5)/47/,ST009Z(6)/0/ DATA ST00AZ(1)/126/,ST00AZ(2)/98/,ST00AZ(3)/105/,ST00AZ(4)/110/,ST *00AZ(5)/47/,ST00AZ(6)/0/ I = 1 23097 IF (.NOT.(I .LE. 5))GOTO 23099 I23100=(I) GOTO 23100 23102 CONTINUE CALL GWDIR(FIXFIL, 6) GOTO 23101 23103 CONTINUE CALL TOOLDR(FIXFIL, 6) GOTO 23101 23104 CONTINUE CALL GETDIR(2, 6, FIXFIL) GOTO 23101 23105 CONTINUE CALL GETDIR(1, 6, FIXFIL) GOTO 23101 23106 CONTINUE FIXFIL(1) = 0 GOTO 23101 23100 CONTINUE IF (I23100.LT.1.OR.I23100.GT.5)GOTO 23101 GOTO (23102,23103,23104,23105,23106),I23100 23101 CONTINUE IF (.NOT.(I .EQ. 5))GOTO 23107 GOTO 23099 23107 CONTINUE IF (.NOT.(INDEXS(FILE, FIXFIL) .EQ. 1))GOTO 23109 GOTO 23099 23109 CONTINUE 23098 I = I + 1 GOTO 23097 23099 CONTINUE N = LENGTH(FIXFIL) + 1 I23111=(I) GOTO 23111 23113 CONTINUE CALL STRCPY(ST007Z, FIXFIL) GOTO 23112 23114 CONTINUE CALL STRCPY(ST008Z, FIXFIL) GOTO 23112 23115 CONTINUE CALL STRCPY(ST009Z, FIXFIL) GOTO 23112 23116 CONTINUE CALL STRCPY(ST00AZ, FIXFIL) GOTO 23112 23111 CONTINUE IF (I23111.LT.1.OR.I23111.GT.4)GOTO 23112 GOTO (23113,23114,23115,23116),I23111 23112 CONTINUE CALL CONCAT(FIXFIL, FILE(N), FIXFIL) RETURN END