SUBROUTINE MAIN LOGICAL*1 ARG(36), TEMPL8(36), SCRAT(36), RLIB(36), ARGS(256), MAP *(36), BUF(402) INTEGER I, GETARG, INT, CREATE, STATUS, SSPAWN, RLIBDN, OPEN, INP, * LOCCOM INTEGER JUNK INTEGER REMOVE, GETLIN, EQUAL INTEGER DEBUG INTEGER LDMAP INTEGER VERBOS LOGICAL*1 TASK LOGICAL*1 OPTION INTEGER FLEVEL LOGICAL*1 FFILES LOGICAL*1 SUFFIX(3) LOGICAL*1 SPATH(18) LOGICAL*1 USESTR(64) LOGICAL*1 TKB(4) LOGICAL*1 EXT(4) LOGICAL*1 MAPEXT(4) LOGICAL*1 DEBSW(4) LOGICAL*1 LIB(4) LOGICAL*1 RLIBST(9) LOGICAL*1 MAINST(8) LOGICAL*1 INFILE(10) LOGICAL*1 AOUT(6) LOGICAL*1 IMGSW(7) LOGICAL*1 ST001Z(32) LOGICAL*1 ST002Z(23) LOGICAL*1 ST003Z(24) LOGICAL*1 ST004Z(38) LOGICAL*1 ST005Z(3) LOGICAL*1 ST006Z(34) LOGICAL*1 ST007Z(6) LOGICAL*1 ST008Z(22) COMMON / CLD / DEBUG, LDMAP, VERBOS, TASK(36), OPTION(402) COMMON /FLIST/ FLEVEL, FFILES(36, 25) DATA SUFFIX(1)/0/,SUFFIX(2)/10/,SUFFIX(3)/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 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 *08/,USESTR(10)/100/,USESTR(11)/32/,USESTR(12)/91/,USESTR(13)/45/,U *SESTR(14)/100/,USESTR(15)/118/,USESTR(16)/93/,USESTR(17)/32/,USEST *R(18)/91/,USESTR(19)/45/,USESTR(20)/108/,USESTR(21)/91/,USESTR(22) */108/,USESTR(23)/105/,USESTR(24)/98/,USESTR(25)/114/,USESTR(26)/93 */,USESTR(27)/93/,USESTR(28)/32/,USESTR(29)/91/,USESTR(30)/45/,USES *TR(31)/112/,USESTR(32)/112/,USESTR(33)/114/,USESTR(34)/111/,USESTR *(35)/99/,USESTR(36)/93/,USESTR(37)/32/,USESTR(38)/91/,USESTR(39)/4 *5/,USESTR(40)/120/,USESTR(41)/111/,USESTR(42)/60/,USESTR(43)/84/,U *SESTR(44)/75/,USESTR(45)/66/,USESTR(46)/32/,USESTR(47)/111/,USESTR *(48)/112/,USESTR(49)/116/,USESTR(50)/105/,USESTR(51)/111/,USESTR(5 *2)/110/,USESTR(53)/62/,USESTR(54)/93/,USESTR(55)/32/,USESTR(56)/10 *2/,USESTR(57)/105/,USESTR(58)/108/,USESTR(59)/101/,USESTR(60)/32/, *USESTR(61)/46/,USESTR(62)/46/,USESTR(63)/46/,USESTR(64)/0/ DATA TKB(1)/116/,TKB(2)/107/,TKB(3)/98/,TKB(4)/0/ DATA EXT(1)/116/,EXT(2)/115/,EXT(3)/107/,EXT(4)/0/ DATA MAPEXT(1)/109/,MAPEXT(2)/97/,MAPEXT(3)/112/,MAPEXT(4)/0/ DATA DEBSW(1)/47/,DEBSW(2)/100/,DEBSW(3)/97/,DEBSW(4)/0/ DATA LIB(1)/47/,LIB(2)/108/,LIB(3)/98/,LIB(4)/0/ DATA RLIBST(1)/114/,RLIBST(2)/108/,RLIBST(3)/105/,RLIBST(4)/98/,RL *IBST(5)/46/,RLIBST(6)/111/,RLIBST(7)/108/,RLIBST(8)/98/,RLIBST(9)/ *0/ DATA MAINST(1)/58/,MAINST(2)/46/,MAINST(3)/109/,MAINST(4)/97/,MAIN *ST(5)/105/,MAINST(6)/110/,MAINST(7)/46/,MAINST(8)/0/ DATA INFILE(1)/116/,INFILE(2)/111/,INFILE(3)/111/,INFILE(4)/108/,I *NFILE(5)/115/,INFILE(6)/46/,INFILE(7)/116/,INFILE(8)/107/,INFILE(9 *)/98/,INFILE(10)/0/ DATA AOUT(1)/97/,AOUT(2)/46/,AOUT(3)/111/,AOUT(4)/117/,AOUT(5)/116 */,AOUT(6)/0/ DATA IMGSW(1)/47/,IMGSW(2)/102/,IMGSW(3)/112/,IMGSW(4)/47/,IMGSW(5 *)/99/,IMGSW(6)/112/,IMGSW(7)/0/ DATA ST001Z(1)/69/,ST001Z(2)/114/,ST001Z(3)/114/,ST001Z(4)/111/,ST *001Z(5)/114/,ST001Z(6)/32/,ST001Z(7)/99/,ST001Z(8)/114/,ST001Z(9)/ *101/,ST001Z(10)/97/,ST001Z(11)/116/,ST001Z(12)/105/,ST001Z(13)/110 */,ST001Z(14)/103/,ST001Z(15)/32/,ST001Z(16)/84/,ST001Z(17)/75/,ST0 *01Z(18)/66/,ST001Z(19)/32/,ST001Z(20)/99/,ST001Z(21)/111/,ST001Z(2 *2)/109/,ST001Z(23)/109/,ST001Z(24)/97/,ST001Z(25)/110/,ST001Z(26)/ *100/,ST001Z(27)/32/,ST001Z(28)/102/,ST001Z(29)/105/,ST001Z(30)/108 */,ST001Z(31)/101/,ST001Z(32)/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)/108/,ST002Z(17)/105/,ST *002Z(18)/98/,ST002Z(19)/46/,ST002Z(20)/111/,ST002Z(21)/108/,ST002Z *(22)/98/,ST002Z(23)/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)/116/,ST003Z(16)/111/,ST003Z(17)/111/,ST *003Z(18)/108/,ST003Z(19)/115/,ST003Z(20)/46/,ST003Z(21)/116/,ST003 *Z(22)/107/,ST003Z(23)/98/,ST003Z(24)/0/ DATA ST004Z(1)/69/,ST004Z(2)/114/,ST004Z(3)/114/,ST004Z(4)/111/,ST *004Z(5)/114/,ST004Z(6)/32/,ST004Z(7)/111/,ST004Z(8)/112/,ST004Z(9) */101/,ST004Z(10)/110/,ST004Z(11)/105/,ST004Z(12)/110/,ST004Z(13)/1 *03/,ST004Z(14)/32/,ST004Z(15)/116/,ST004Z(16)/111/,ST004Z(17)/111/ *,ST004Z(18)/108/,ST004Z(19)/115/,ST004Z(20)/46/,ST004Z(21)/116/,ST *004Z(22)/107/,ST004Z(23)/98/,ST004Z(24)/32/,ST004Z(25)/116/,ST004Z *(26)/101/,ST004Z(27)/109/,ST004Z(28)/112/,ST004Z(29)/108/,ST004Z(3 *0)/97/,ST004Z(31)/116/,ST004Z(32)/101/,ST004Z(33)/32/,ST004Z(34)/1 *02/,ST004Z(35)/105/,ST004Z(36)/108/,ST004Z(37)/101/,ST004Z(38)/0/ DATA ST005Z(1)/47/,ST005Z(2)/10/,ST005Z(3)/0/ DATA ST006Z(1)/69/,ST006Z(2)/114/,ST006Z(3)/114/,ST006Z(4)/111/,ST *006Z(5)/114/,ST006Z(6)/32/,ST006Z(7)/105/,ST006Z(8)/110/,ST006Z(9) */32/,ST006Z(10)/111/,ST006Z(11)/112/,ST006Z(12)/101/,ST006Z(13)/11 *0/,ST006Z(14)/105/,ST006Z(15)/110/,ST006Z(16)/103/,ST006Z(17)/32/, *ST006Z(18)/84/,ST006Z(19)/75/,ST006Z(20)/66/,ST006Z(21)/32/,ST006Z *(22)/99/,ST006Z(23)/111/,ST006Z(24)/109/,ST006Z(25)/109/,ST006Z(26 *)/97/,ST006Z(27)/110/,ST006Z(28)/100/,ST006Z(29)/32/,ST006Z(30)/10 *2/,ST006Z(31)/105/,ST006Z(32)/108/,ST006Z(33)/101/,ST006Z(34)/0/ DATA ST007Z(1)/108/,ST007Z(2)/111/,ST007Z(3)/99/,ST007Z(4)/97/,ST0 *07Z(5)/108/,ST007Z(6)/0/ DATA ST008Z(1)/69/,ST008Z(2)/114/,ST008Z(3)/114/,ST008Z(4)/111/,ST *008Z(5)/114/,ST008Z(6)/32/,ST008Z(7)/105/,ST008Z(8)/110/,ST008Z(9) */32/,ST008Z(10)/115/,ST008Z(11)/112/,ST008Z(12)/97/,ST008Z(13)/119 */,ST008Z(14)/110/,ST008Z(15)/105/,ST008Z(16)/110/,ST008Z(17)/103/, *ST008Z(18)/32/,ST008Z(19)/84/,ST008Z(20)/75/,ST008Z(21)/66/,ST008Z *(22)/0/ CALL QUERY(USESTR) FLEVEL = 0 TASK(1) = 0 VERBOS = 0 DEBUG = 0 LDMAP = 0 RLIBDN = 0 OPTION(1) = 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 LDCMD(ARG) GOTO 23004 23003 CONTINUE CALL FSTACK(ARG) 23004 CONTINUE 23001 I=I+1 GOTO 23000 23002 CONTINUE IF (.NOT.(TASK(1) .EQ. 0))GOTO 23005 I=1 23007 IF (.NOT.(I.LE.FLEVEL))GOTO 23009 IF (.NOT.(FFILES(1,I) .NE. 45))GOTO 23010 GOTO 23009 23010 CONTINUE 23008 I=I+1 GOTO 23007 23009 CONTINUE IF (.NOT.(I .LE. FLEVEL))GOTO 23012 CALL SCOPY(FFILES(1,I), 1, TASK, 1) 23012 CONTINUE 23005 CONTINUE CALL SCRATF(TKB, SCRAT) INT = CREATE(SCRAT, 2) IF (.NOT.(INT .EQ. -3))GOTO 23014 CALL ERROR(ST001Z) 23014 CONTINUE IF (.NOT.(LOCCOM(RLIBST, SPATH, SUFFIX, RLIB) .EQ. -3))GOTO 23016 CALL ERROR(ST002Z) 23016 CONTINUE CALL CONCAT(RLIB, LIB, RLIB) IF (.NOT.(LOCCOM(INFILE, SPATH, SUFFIX, TEMPL8) .EQ. -3))GOTO 2301 *8 CALL ERROR(ST003Z) 23018 CONTINUE IF (.NOT.(TASK(1) .NE. 0))GOTO 23020 CALL GENFIL(TASK, EXT, ARG) GOTO 23021 23020 CONTINUE CALL SCOPY(AOUT, ARG) 23021 CONTINUE CALL GENFIL(TASK, MAPEXT, ARGS) CALL FXLATE(ARG,6, TASK) JUNK = REMOVE(TASK) CALL PUTLIN(TASK, INT) CALL PUTLIN(IMGSW, INT) IF (.NOT.(DEBUG .EQ. 1))GOTO 23022 CALL PUTLIN(DEBSW, INT) 23022 CONTINUE IF (.NOT.(LDMAP .EQ. 1))GOTO 23024 CALL FXLATE(ARGS,6, MAP) JUNK = REMOVE(MAP) CALL PUTCH(44, INT) CALL PUTLIN(MAP, INT) 23024 CONTINUE CALL PUTCH(61, INT) CALL PUTCH(10, INT) I=1 23026 IF (.NOT.(I.LE.FLEVEL))GOTO 23028 IF (.NOT.(FFILES(1,I) .EQ. 45))GOTO 23029 IF (.NOT.(FFILES(3,I) .EQ. 0))GOTO 23031 CALL PUTLIN(RLIB, INT) CALL PUTCH(10, INT) RLIBDN = 1 GOTO 23032 23031 CONTINUE CALL FXLATE(FFILES(3,I),6, ARG) CALL PUTLIN(ARG, INT) CALL PUTLIN(LIB, INT) CALL PUTCH(10, INT) 23032 CONTINUE GOTO 23030 23029 CONTINUE CALL FXLATE(FFILES(1,I),6, ARG) CALL PUTLIN(ARG, INT) CALL PUTCH(10, INT) 23030 CONTINUE 23027 I=I+1 GOTO 23026 23028 CONTINUE CALL PUTLIN(RLIB, INT) CALL PUTLIN(MAINST, INT) CALL PUTCH(10, INT) IF (.NOT.(RLIBDN .EQ. 0))GOTO 23033 CALL PUTLIN(RLIB, INT) CALL PUTCH(10, INT) 23033 CONTINUE INP = OPEN(TEMPL8, 1) IF (.NOT.(INP .EQ. -3))GOTO 23035 CALL ERROR(ST004Z) 23035 CONTINUE 23037 IF (.NOT.(GETLIN(BUF, INP) .NE. -1))GOTO 23038 CALL PUTLIN(BUF, INT) IF (.NOT.(EQUAL(BUF, ST005Z) .EQ. 1 .AND. OPTION(1) .NE. 0))GOTO 2 *3039 CALL PUTLNL(OPTION, INT) 23039 CONTINUE GOTO 23037 23038 CONTINUE CALL CLOSE(INP) CALL CLOSE(INT) I = 1 CALL STCOPY(TKB, 1, ARGS, I) CALL CHCOPY(32, ARGS, I) CALL CHCOPY(64, ARGS, I) CALL SCOPY(SCRAT, 1, ARGS, I) IF (.NOT.(VERBOS .EQ. 1))GOTO 23041 INT = OPEN(SCRAT, 1) IF (.NOT.(INT .EQ. -3))GOTO 23043 CALL ERROR(ST006Z) 23043 CONTINUE CALL FCOPY(INT, 3) CALL CLOSE(INT) 23041 CONTINUE STATUS = SSPAWN(ST007Z, ARGS, ARG, 119) IF (.NOT.(STATUS .EQ. -3))GOTO 23045 CALL REMARK(ST008Z) 23045 CONTINUE JUNK = REMOVE(SCRAT) 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 23047 FLEVEL = FLEVEL + 1 I=1 23049 IF (.NOT.(I.LE.36))GOTO 23051 FFILES(I,FLEVEL) = IARG(I) 23050 I=I+1 GOTO 23049 23051 CONTINUE CALL FOLD(FFILES(1, FLEVEL)) 23047 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) 23052 IF (.NOT.(I .GT. 0))GOTO 23054 IF (.NOT.(INDEXC(TRMCHR, IN(I)) .GT. 0))GOTO 23055 GOTO 23054 23055 CONTINUE 23053 I=I-1 GOTO 23052 23054 CONTINUE J=I+1 23057 IF (.NOT.(IN(J) .NE. 0))GOTO 23059 IF (.NOT.(IN(J) .EQ. 46))GOTO 23060 GOTO 23059 23060 CONTINUE 23058 J=J+1 GOTO 23057 23059 CONTINUE I=1 23062 IF (.NOT.(I .LT. J))GOTO 23064 OUT(I) = IN(I) 23063 I=I+1 GOTO 23062 23064 CONTINUE CALL CHCOPY(46, OUT, I) CALL SCOPY(EXT, 1, OUT, I) RETURN END SUBROUTINE LDCMD(ARG) LOGICAL*1 ARG(36) INTEGER N INTEGER INDEXC, LENGTH INTEGER DEBUG INTEGER LDMAP INTEGER VERBOS LOGICAL*1 TASK LOGICAL*1 OPTION INTEGER I23073 COMMON / CLD / DEBUG, LDMAP, VERBOS, TASK(36), OPTION(402) CALL FOLD(ARG) IF (.NOT.(ARG(1) .EQ. 45))GOTO 23065 IF (.NOT.(ARG(2) .EQ. 112))GOTO 23067 CALL SCOPY(ARG, 3, TASK, 1) GOTO 23068 23067 CONTINUE IF (.NOT.(ARG(2) .EQ. 108))GOTO 23069 CALL FSTACK(ARG) GOTO 23070 23069 CONTINUE IF (.NOT.(ARG(2) .EQ. 120))GOTO 23071 I23073=(ARG(3)) GOTO 23073 23075 CONTINUE N = LENGTH(OPTION) + 1 CALL STCOPY(ARG, 4, OPTION, N) CALL CHCOPY(10, OPTION, N) GOTO 23074 23076 CONTINUE CALL BADARG(ARG) GOTO 23074 23073 CONTINUE IF (I23073.EQ.111)GOTO 23075 GOTO 23076 23074 CONTINUE GOTO 23072 23071 CONTINUE IF (.NOT.(INDEXC(ARG, 100) .GT. 0))GOTO 23077 DEBUG = 1 23077 CONTINUE IF (.NOT.(INDEXC(ARG, 109) .GT. 0))GOTO 23079 LDMAP = 1 23079 CONTINUE IF (.NOT.(INDEXC(ARG, 118) .GT. 0))GOTO 23081 VERBOS = 1 23081 CONTINUE 23072 CONTINUE 23070 CONTINUE 23068 CONTINUE GOTO 23066 23065 CONTINUE CALL BADARG(ARG) 23066 CONTINUE IF (.NOT.(DEBUG .EQ. 1))GOTO 23083 LDMAP = 1 23083 CONTINUE RETURN END