SUBROUTINE MAIN LOGICAL*1 SOURCE(36), OBJECT(36), ARG(36), EXT(4), LISTFL(36), LDA *RGS(256), DESCR(7), LDFIX(36) INTEGER I, GETARG, SSPAWN, K, FORTRN, LOCCOM, INDEXC INTEGER FLEVEL LOGICAL*1 FFILES INTEGER LDMAP INTEGER LOAD INTEGER VERBOS INTEGER LIST INTEGER ERRCNT INTEGER DEBUG LOGICAL*1 SUFFIX(7) LOGICAL*1 SPATH(18) LOGICAL*1 MINUSD(4) LOGICAL*1 MINUSM(4) LOGICAL*1 MINUSV(4) LOGICAL*1 EXTO(4) LOGICAL*1 EXTL(2) LOGICAL*1 LD(3) LOGICAL*1 ST001Z(57) LOGICAL*1 ST002Z(28) LOGICAL*1 ST003Z(25) COMMON /FLIST/ FLEVEL, FFILES(36, 25) COMMON / CFC / LDMAP, LOAD, VERBOS, LIST, ERRCNT, 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 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 MINUSV(1)/45/,MINUSV(2)/118/,MINUSV(3)/32/,MINUSV(4)/0/ DATA EXTO(1)/111/,EXTO(2)/98/,EXTO(3)/106/,EXTO(4)/0/ DATA EXTL(1)/108/,EXTL(2)/0/ DATA LD(1)/108/,LD(2)/100/,LD(3)/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 *02/,ST001Z(10)/99/,ST001Z(11)/32/,ST001Z(12)/91/,ST001Z(13)/45/,ST *001Z(14)/99/,ST001Z(15)/100/,ST001Z(16)/109/,ST001Z(17)/111/,ST001 *Z(18)/118/,ST001Z(19)/93/,ST001Z(20)/32/,ST001Z(21)/91/,ST001Z(22) */45/,ST001Z(23)/108/,ST001Z(24)/91/,ST001Z(25)/108/,ST001Z(26)/105 */,ST001Z(27)/98/,ST001Z(28)/114/,ST001Z(29)/93/,ST001Z(30)/93/,ST0 *01Z(31)/32/,ST001Z(32)/91/,ST001Z(33)/45/,ST001Z(34)/112/,ST001Z(3 *5)/112/,ST001Z(36)/114/,ST001Z(37)/111/,ST001Z(38)/99/,ST001Z(39)/ *93/,ST001Z(40)/32/,ST001Z(41)/91/,ST001Z(42)/45/,ST001Z(43)/120/,S *T001Z(44)/46/,ST001Z(45)/46/,ST001Z(46)/46/,ST001Z(47)/93/,ST001Z( *48)/32/,ST001Z(49)/102/,ST001Z(50)/105/,ST001Z(51)/108/,ST001Z(52) */101/,ST001Z(53)/32/,ST001Z(54)/46/,ST001Z(55)/46/,ST001Z(56)/46/, *ST001Z(57)/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)/108/,ST002Z(16)/100/,ST002Z(17)/32/,ST0 *02Z(18)/105/,ST002Z(19)/109/,ST002Z(20)/97/,ST002Z(21)/103/,ST002Z *(22)/101/,ST002Z(23)/32/,ST002Z(24)/102/,ST002Z(25)/105/,ST002Z(26 *)/108/,ST002Z(27)/101/,ST002Z(28)/0/ DATA ST003Z(1)/69/,ST003Z(2)/114/,ST003Z(3)/114/,ST003Z(4)/111/,ST *003Z(5)/114/,ST003Z(6)/32/,ST003Z(7)/105/,ST003Z(8)/110/,ST003Z(9) */32/,ST003Z(10)/108/,ST003Z(11)/105/,ST003Z(12)/110/,ST003Z(13)/10 *7/,ST003Z(14)/105/,ST003Z(15)/110/,ST003Z(16)/103/,ST003Z(17)/32/, *ST003Z(18)/112/,ST003Z(19)/114/,ST003Z(20)/111/,ST003Z(21)/99/,ST0 *03Z(22)/101/,ST003Z(23)/115/,ST003Z(24)/115/,ST003Z(25)/0/ FLEVEL = 0 LOAD = 1 VERBOS = 0 LIST = 0 DEBUG = 0 LDMAP = 0 ERRCNT = 0 CALL QUERY(ST001Z) 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 FCCMD(ARG) GOTO 23004 23003 CONTINUE CALL FSTACK(ARG) 23004 CONTINUE 23001 I=I+1 GOTO 23000 23002 CONTINUE K=1 23005 IF (.NOT.(K.LE.FLEVEL))GOTO 23007 CALL GETEXT(FFILES(1,K), EXT) IF (.NOT.(FFILES(1,K) .NE. 45 .AND. EXT(1) .EQ. 102 .AND. EXT(2) . *EQ. 0))GOTO 23008 IF (.NOT.(INDEXC(FFILES(1,K), 47) .GT. 0))GOTO 23010 CALL FXLATE(FFILES(1,K),6, SOURCE) GOTO 23011 23010 CONTINUE CALL SCOPY(FFILES(1,K), 1, SOURCE, 1) 23011 CONTINUE CALL GENFIL(SOURCE, EXTO, OBJECT) IF (.NOT.(LIST .EQ. 1))GOTO 23012 CALL GENFIL(SOURCE, EXTL, LISTFL) GOTO 23013 23012 CONTINUE LISTFL(1) = 0 23013 CONTINUE IF (.NOT.(FORTRN(SOURCE, OBJECT, LISTFL, VERBOS, DEBUG) .EQ. -3))G *OTO 23014 ERRCNT = ERRCNT + 1 23014 CONTINUE 23008 CONTINUE 23006 K=K+1 GOTO 23005 23007 CONTINUE IF (.NOT.(LOAD .EQ. 1 .AND. ERRCNT .EQ. 0))GOTO 23016 I = 1 CALL STCOPY(LD, 1, LDARGS, I) CALL CHCOPY(32, LDARGS, I) IF (.NOT.(VERBOS .EQ. 1))GOTO 23018 CALL STCOPY(MINUSV, 1, LDARGS, I) 23018 CONTINUE IF (.NOT.(DEBUG .EQ. 1))GOTO 23020 CALL STCOPY(MINUSD, 1, LDARGS, I) 23020 CONTINUE IF (.NOT.(LDMAP .EQ. 1 ))GOTO 23022 CALL STCOPY(MINUSM, 1, LDARGS, I) 23022 CONTINUE K=1 23024 IF (.NOT.(K.LE.FLEVEL))GOTO 23026 CALL GETEXT(FFILES(1,K), EXT) IF (.NOT.(FFILES(1,K) .NE. 45 .AND. EXT(1) .EQ. 102 .AND. EXT(2) . *EQ. 0))GOTO 23027 CALL GENFIL(FFILES(1,K), EXTO, ARG) GOTO 23028 23027 CONTINUE CALL SCOPY(FFILES(1,K), 1, ARG, 1) 23028 CONTINUE CALL STCOPY(ARG, 1, LDARGS, I) CALL CHCOPY(32, LDARGS, I) 23025 K=K+1 GOTO 23024 23026 CONTINUE LDARGS(I-1) = 0 IF (.NOT.(LOCCOM(LD, SPATH, SUFFIX, ARG) .NE. 60))GOTO 23029 CALL ERROR(ST002Z) 23029 CONTINUE IF (.NOT.(VERBOS .EQ. 1))GOTO 23031 CALL NAMFIX(ARG, LDFIX) CALL PUTLIN(LDFIX, 3) K = INDEXC(LDARGS, 32) CALL PUTLNL(LDARGS(K), 3) 23031 CONTINUE IF (.NOT.(SSPAWN(ARG, LDARGS, DESCR, 119) .EQ. -3))GOTO 23033 CALL REMARK(ST003Z) 23033 CONTINUE 23016 CONTINUE RETURN END SUBROUTINE FCCMD(ARG) LOGICAL*1 ARG(36) INTEGER INDEXC INTEGER LDMAP INTEGER LOAD INTEGER VERBOS INTEGER LIST INTEGER ERRCNT INTEGER DEBUG COMMON / CFC / LDMAP, LOAD, VERBOS, LIST, ERRCNT, DEBUG CALL FOLD(ARG) IF (.NOT.(ARG(1) .EQ. 45))GOTO 23035 IF (.NOT.(ARG(2) .EQ. 112 .OR. ARG(2) .EQ. 108 .OR. ARG(2) .EQ. 12 *0))GOTO 23037 CALL FSTACK(ARG) GOTO 23038 23037 CONTINUE IF (.NOT.(INDEXC(ARG, 99) .GT. 0))GOTO 23039 LOAD = 0 23039 CONTINUE IF (.NOT.(INDEXC(ARG, 100) .GT. 0))GOTO 23041 DEBUG = 1 23041 CONTINUE IF (.NOT.(INDEXC(ARG, 109) .GT. 0))GOTO 23043 LDMAP = 1 23043 CONTINUE IF (.NOT.(INDEXC(ARG, 111) .GT. 0))GOTO 23045 LIST = 1 23045 CONTINUE IF (.NOT.(INDEXC(ARG, 118) .GT. 0))GOTO 23047 VERBOS = 1 23047 CONTINUE 23038 CONTINUE GOTO 23036 23035 CONTINUE CALL BADARG(ARG) 23036 CONTINUE RETURN END INTEGER FUNCTION FORTRN(SOURCE, OBJECT, LIST, VERBOS, DEBUG) LOGICAL*1 SOURCE(100), OBJECT(100), LIST(100), ARG(80), PID(7) INTEGER SSPAWN, I, VERBOS, DEBUG, JUNK, REMOVE LOGICAL*1 SRCSW(21) LOGICAL*1 ST004Z(5) LOGICAL*1 ST005Z(6) DATA SRCSW(1)/47/,SRCSW(2)/110/,SRCSW(3)/111/,SRCSW(4)/116/,SRCSW( *5)/114/,SRCSW(6)/47/,SRCSW(7)/110/,SRCSW(8)/111/,SRCSW(9)/99/,SRCS *W(10)/107/,SRCSW(11)/47/,SRCSW(12)/99/,SRCSW(13)/111/,SRCSW(14)/58 */,SRCSW(15)/49/,SRCSW(16)/57/,SRCSW(17)/46/,SRCSW(18)/47/,SRCSW(19 *)/114/,SRCSW(20)/111/,SRCSW(21)/0/ DATA ST004Z(1)/47/,ST004Z(2)/45/,ST004Z(3)/115/,ST004Z(4)/112/,ST0 *04Z(5)/0/ DATA ST005Z(1)/108/,ST005Z(2)/111/,ST005Z(3)/99/,ST005Z(4)/97/,ST0 *05Z(5)/108/,ST005Z(6)/0/ I = 1 CALL STCOPY(3HF4P, 1, ARG, I) CALL CHCOPY(32, ARG, I) JUNK = REMOVE(OBJECT) CALL STCOPY(OBJECT, 1, ARG, I) IF (.NOT.(LIST(1) .NE. 0))GOTO 23049 CALL CHCOPY(44, ARG, I) JUNK = REMOVE(LIST) CALL STCOPY(LIST, 1, ARG, I) CALL STCOPY(ST004Z, 1, ARG, I) 23049 CONTINUE CALL CHCOPY(61, ARG, I) CALL STCOPY(SOURCE, 1, ARG, I) CALL SCOPY(SRCSW, 1, ARG, I) CALL FOLD(ARG) IF (.NOT.(VERBOS .EQ. 1))GOTO 23051 CALL REMARK(ARG) 23051 CONTINUE FORTRN = SSPAWN(ST005Z, ARG, PID, 119) 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 23053 FLEVEL = FLEVEL + 1 I=1 23055 IF (.NOT.(I.LE.36))GOTO 23057 FFILES(I,FLEVEL) = IARG(I) 23056 I=I+1 GOTO 23055 23057 CONTINUE CALL FOLD(FFILES(1, FLEVEL)) 23053 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) 23058 IF (.NOT.(I .GT. 0))GOTO 23060 IF (.NOT.(INDEXC(TRMCHR, IN(I)) .GT. 0))GOTO 23061 GOTO 23060 23061 CONTINUE 23059 I=I-1 GOTO 23058 23060 CONTINUE J=I+1 23063 IF (.NOT.(IN(J) .NE. 0))GOTO 23065 IF (.NOT.(IN(J) .EQ. 46))GOTO 23066 GOTO 23065 23066 CONTINUE 23064 J=J+1 GOTO 23063 23065 CONTINUE I=1 23068 IF (.NOT.(I .LT. J))GOTO 23070 OUT(I) = IN(I) 23069 I=I+1 GOTO 23068 23070 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) 23071 IF (.NOT.(I .GT. 0))GOTO 23073 IF (.NOT.(INDEXC(TRMCHR, FILE(I)) .GT. 0))GOTO 23074 GOTO 23073 23074 CONTINUE 23072 I=I-1 GOTO 23071 23073 CONTINUE J=I+1 23076 IF (.NOT.(FILE(J) .NE. 0))GOTO 23078 IF (.NOT.(FILE(J) .EQ. 46))GOTO 23079 J = J + 1 GOTO 23078 23079 CONTINUE 23077 J=J+1 GOTO 23076 23078 CONTINUE I=1 23081 IF (.NOT.(FILE(J) .NE. 0 .AND. FILE(J) .NE. 59 .AND. FILE(J) .NE. *46))GOTO 23083 EXT(I) = FILE(J) J = J + 1 23082 I=I+1 GOTO 23081 23083 CONTINUE EXT(I) = 0 CALL FOLD(EXT) RETURN END SUBROUTINE NAMFIX(FILE, FIXFIL) LOGICAL*1 FILE(36), FIXFIL(36) INTEGER I, N INTEGER INDEXS, LENGTH INTEGER I23087 INTEGER I23098 LOGICAL*1 ST006Z(3) LOGICAL*1 ST007Z(3) LOGICAL*1 ST008Z(6) LOGICAL*1 ST009Z(6) DATA ST006Z(1)/46/,ST006Z(2)/47/,ST006Z(3)/0/ DATA ST007Z(1)/126/,ST007Z(2)/47/,ST007Z(3)/0/ DATA ST008Z(1)/126/,ST008Z(2)/117/,ST008Z(3)/115/,ST008Z(4)/114/,S *T008Z(5)/47/,ST008Z(6)/0/ DATA ST009Z(1)/126/,ST009Z(2)/98/,ST009Z(3)/105/,ST009Z(4)/110/,ST *009Z(5)/47/,ST009Z(6)/0/ I = 1 23084 IF (.NOT.(I .LE. 5))GOTO 23086 I23087=(I) GOTO 23087 23089 CONTINUE CALL GWDIR(FIXFIL, 6) GOTO 23088 23090 CONTINUE CALL TOOLDR(FIXFIL, 6) GOTO 23088 23091 CONTINUE CALL GETDIR(2, 6, FIXFIL) GOTO 23088 23092 CONTINUE CALL GETDIR(1, 6, FIXFIL) GOTO 23088 23093 CONTINUE FIXFIL(1) = 0 GOTO 23088 23087 CONTINUE IF (I23087.LT.1.OR.I23087.GT.5)GOTO 23088 GOTO (23089,23090,23091,23092,23093),I23087 23088 CONTINUE IF (.NOT.(I .EQ. 5))GOTO 23094 GOTO 23086 23094 CONTINUE IF (.NOT.(INDEXS(FILE, FIXFIL) .EQ. 1))GOTO 23096 GOTO 23086 23096 CONTINUE 23085 I = I + 1 GOTO 23084 23086 CONTINUE N = LENGTH(FIXFIL) + 1 I23098=(I) GOTO 23098 23100 CONTINUE CALL STRCPY(ST006Z, FIXFIL) GOTO 23099 23101 CONTINUE CALL STRCPY(ST007Z, FIXFIL) GOTO 23099 23102 CONTINUE CALL STRCPY(ST008Z, FIXFIL) GOTO 23099 23103 CONTINUE CALL STRCPY(ST009Z, FIXFIL) GOTO 23099 23098 CONTINUE IF (I23098.LT.1.OR.I23098.GT.4)GOTO 23099 GOTO (23100,23101,23102,23103),I23098 23099 CONTINUE CALL CONCAT(FIXFIL, FILE(N), FIXFIL) RETURN END