SUBROUTINE MAIN LOGICAL*1 ARG(36), TEMPL8(36), SCRAT(36), RLIB(36), ARGS(256), MAP *(36) INTEGER I, GETARG, INT, CREATE, STATUS, SSPAWN, RLIBDN, OPEN, INP, * LOCCOM INTEGER JUNK INTEGER REMOVE INTEGER DEBUG INTEGER LDMAP INTEGER VERBOS LOGICAL*1 TASK INTEGER FLEVEL LOGICAL*1 FFILES LOGICAL*1 SUFFIX(3) LOGICAL*1 SPATH(18) LOGICAL*1 USESTR(46) 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(8) LOGICAL*1 ST001Z(32) LOGICAL*1 ST002Z(23) LOGICAL*1 ST003Z(24) LOGICAL*1 ST004Z(4) LOGICAL*1 ST005Z(38) LOGICAL*1 ST006Z(34) LOGICAL*1 ST007Z(6) LOGICAL*1 ST008Z(22) COMMON / CLD / DEBUG, LDMAP, VERBOS, TASK(36) 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)/102/,USESTR(39)/ *105/,USESTR(40)/108/,USESTR(41)/101/,USESTR(42)/32/,USESTR(43)/46/ *,USESTR(44)/46/,USESTR(45)/46/,USESTR(46)/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)/45/,IMGSW(3)/102/,IMGSW(4)/112/,IMGSW(5 *)/47/,IMGSW(6)/99/,IMGSW(7)/112/,IMGSW(8)/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)/47/,ST004Z(2)/114/,ST004Z(3)/119/,ST004Z(4)/0/ DATA ST005Z(1)/69/,ST005Z(2)/114/,ST005Z(3)/114/,ST005Z(4)/111/,ST *005Z(5)/114/,ST005Z(6)/32/,ST005Z(7)/111/,ST005Z(8)/112/,ST005Z(9) */101/,ST005Z(10)/110/,ST005Z(11)/105/,ST005Z(12)/110/,ST005Z(13)/1 *03/,ST005Z(14)/32/,ST005Z(15)/116/,ST005Z(16)/111/,ST005Z(17)/111/ *,ST005Z(18)/108/,ST005Z(19)/115/,ST005Z(20)/46/,ST005Z(21)/116/,ST *005Z(22)/107/,ST005Z(23)/98/,ST005Z(24)/32/,ST005Z(25)/116/,ST005Z *(26)/101/,ST005Z(27)/109/,ST005Z(28)/112/,ST005Z(29)/108/,ST005Z(3 *0)/97/,ST005Z(31)/116/,ST005Z(32)/101/,ST005Z(33)/32/,ST005Z(34)/1 *02/,ST005Z(35)/105/,ST005Z(36)/108/,ST005Z(37)/101/,ST005Z(38)/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 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) CALL PUTLIN(ST004Z, 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(ST005Z) 23035 CONTINUE CALL FCOPY(INP, INT) 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 23037 INT = OPEN(SCRAT, 1) IF (.NOT.(INT .EQ. -3))GOTO 23039 CALL ERROR(ST006Z) 23039 CONTINUE CALL FCOPY(INT, 3) CALL CLOSE(INT) 23037 CONTINUE STATUS = SSPAWN(ST007Z, ARGS, ARG, 119) IF (.NOT.(STATUS .EQ. -3))GOTO 23041 CALL REMARK(ST008Z) 23041 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 23043 FLEVEL = FLEVEL + 1 I=1 23045 IF (.NOT.(I.LE.36))GOTO 23047 FFILES(I,FLEVEL) = IARG(I) 23046 I=I+1 GOTO 23045 23047 CONTINUE CALL FOLD(FFILES(1, FLEVEL)) 23043 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) 23048 IF (.NOT.(I .GT. 0))GOTO 23050 IF (.NOT.(INDEXC(TRMCHR, IN(I)) .GT. 0))GOTO 23051 GOTO 23050 23051 CONTINUE 23049 I=I-1 GOTO 23048 23050 CONTINUE J=I+1 23053 IF (.NOT.(IN(J) .NE. 0))GOTO 23055 IF (.NOT.(IN(J) .EQ. 46))GOTO 23056 GOTO 23055 23056 CONTINUE 23054 J=J+1 GOTO 23053 23055 CONTINUE I=1 23058 IF (.NOT.(I .LT. J))GOTO 23060 OUT(I) = IN(I) 23059 I=I+1 GOTO 23058 23060 CONTINUE CALL CHCOPY(46, OUT, I) CALL SCOPY(EXT, 1, OUT, I) RETURN END SUBROUTINE LDCMD(ARG) LOGICAL*1 ARG(36) INTEGER INDEXC INTEGER DEBUG INTEGER LDMAP INTEGER VERBOS LOGICAL*1 TASK COMMON / CLD / DEBUG, LDMAP, VERBOS, TASK(36) CALL FOLD(ARG) IF (.NOT.(ARG(1) .EQ. 45))GOTO 23061 IF (.NOT.(ARG(2) .EQ. 112))GOTO 23063 CALL SCOPY(ARG, 3, TASK, 1) GOTO 23064 23063 CONTINUE IF (.NOT.(ARG(2) .EQ. 108))GOTO 23065 CALL FSTACK(ARG) GOTO 23066 23065 CONTINUE IF (.NOT.(INDEXC(ARG, 100) .GT. 0))GOTO 23067 DEBUG = 1 23067 CONTINUE IF (.NOT.(INDEXC(ARG, 109) .GT. 0))GOTO 23069 LDMAP = 1 23069 CONTINUE IF (.NOT.(INDEXC(ARG, 118) .GT. 0))GOTO 23071 VERBOS = 1 23071 CONTINUE 23066 CONTINUE 23064 CONTINUE GOTO 23062 23061 CONTINUE CALL BADARG(ARG) 23062 CONTINUE IF (.NOT.(DEBUG .EQ. 1))GOTO 23073 LDMAP = 1 23073 CONTINUE RETURN END