INTEGER FUNCTION AMOVE(NAME1, NAME2) LOGICAL*1 NAME1(40), NAME2(40) INTEGER OPEN, OLD, NEW, CREATE, RENAME OLD = OPEN(NAME1, 1) IF (.NOT.(OLD .EQ. -3))GOTO 23000 AMOVE = -3 GOTO 23001 23000 CONTINUE NEW = CREATE(NAME2, 2) IF (.NOT.(NEW .EQ. -3))GOTO 23002 AMOVE = -3 GOTO 23003 23002 CONTINUE CALL FCOPY(OLD, NEW) CALL CLOSE(OLD) CALL CLOSE(NEW) CALL REMOVE(NAME1) AMOVE = 0 23003 CONTINUE 23001 CONTINUE RETURN END INTEGER FUNCTION BCKSPN(IMAGE, ARGS, PID) LOGICAL*1 IMAGE(40), ARGS(256), PID(7) REAL BSPAWN LOGICAL*1 FILE(40) INTEGER IDS, INT, I, NEWAST, OLDAST INTEGER INDEX, CREATE, SDAT LOGICAL*1 SEED(4) DATA SEED(1)/98/,SEED(2)/99/,SEED(3)/107/,SEED(4)/0/ DATA BSPAWN/6RBSPAWN/, NEWAST/0/ CALL SCRATF(SEED, FILE) INT = CREATE(FILE, 2) IF (.NOT.(INT .NE. -3))GOTO 23004 CALL PUTLNL(IMAGE, INT) CALL PUTLNL(ARGS, INT) CALL TRNDEV(2HSY, 0, PID) CALL PUTLNL(PID, INT) CALL CLOSE(INT) I = INDEX(FILE, 93) + 1 CALL STRCPY(FILE(I), FILE) CALL SRDA(NEWAST, OLDAST) IF (.NOT.(SDAT(BSPAWN, FILE) .NE. 1))GOTO 23006 INT = -3 GOTO 23007 23006 CONTINUE CALL RCVDAT(BSPAWN, FILE) INT = FILE(5) IF (.NOT.(INT .EQ. 0))GOTO 23008 CALL STRCPY(FILE(6), PID) GOTO 23009 23008 CONTINUE INT = -3 23009 CONTINUE 23007 CONTINUE CALL CRDA(OLDAST) 23004 CONTINUE BCKSPN=(INT) RETURN END SUBROUTINE CPYBYT(IN, OUT, N, TRMN8R) LOGICAL*1 IN(100), OUT(100), TRMN8R INTEGER N INTEGER I I=1 23010 IF (.NOT.(I .LE. N))GOTO 23012 OUT(I) = IN(I) 23011 I=I+1 GOTO 23010 23012 CONTINUE IF (.NOT.(TRMN8R .GE. 0))GOTO 23013 OUT(I) = TRMN8R 23013 CONTINUE RETURN END SUBROUTINE CTOPTR(BUF, I, PTR) LOGICAL*1 BUF(100) INTEGER I, PTR(2) INTEGER CTOI PTR(1) = CTOI(BUF, I) PTR(2) = CTOI(BUF, I) RETURN END INTEGER FUNCTION CWDIR(STRNG) LOGICAL*1 STRNG(100), OUT(40), TEMP(12) INTEGER I, OPENDR, DESC CALL FXLATE(STRNG, 5, OUT) IF (.NOT.(OPENDR(OUT, DESC) .NE. -3))GOTO 23015 I = 1 CALL JCOPYS(OUT, I, 58, TEMP) CALL STDDEV(TEMP) CALL JCOPYS(OUT, I, 93, TEMP) CALL STDDIR(TEMP, DESC) CALL CLOSDR(DESC) CWDIR = 0 GOTO 23016 23015 CONTINUE CWDIR = -3 23016 CONTINUE RETURN END SUBROUTINE DECNFO(DBUF, DATE, GROUP, MEMBER, PROTEC, EOF) INTEGER GROUP, MEMBER, PROTEC, EOF LOGICAL*1 DATE(100), DBUF(512) INTEGER REVISE, IDOFF, FREE CALL CPYBYT(DBUF(1), IDOFF, 1, 0) REVISE = 2 * IDOFF + 13 CALL CPYBYT(DBUF(REVISE), DATE, 13, 0) IF (.NOT.(DATE(1) .EQ. 0))GOTO 23017 REVISE = REVISE + 13 CALL CPYBYT(DBUF(REVISE), DATE, 13, 0) 23017 CONTINUE CALL CPYBYT(DBUF(10), GROUP, 1, 0) CALL CPYBYT(DBUF(9), MEMBER, 1, 0) CALL CPYBYT(DBUF(11), PROTEC, 2, -1) CALL CPYBYT(DBUF(25), EOF, 2, -1) CALL CPYBYT(DBUF(27), FREE, 2, -1) IF (.NOT.(FREE .LE. 0))GOTO 23019 EOF = EOF - 1 23019 CONTINUE RETURN END SUBROUTINE DNOISE(FILE) LOGICAL*1 FILE(100) INTEGER I INTEGER INDEX, EQUAL I = INDEX(FILE, 59) IF (.NOT.(EQUAL(FILE(I), 2H;1) .EQ. 1))GOTO 23021 FILE(I) = 0 I = INDEX(FILE, 46) IF (.NOT.(FILE(I+1) .EQ. 0))GOTO 23023 FILE(I) = 0 23023 CONTINUE 23021 CONTINUE RETURN END SUBROUTINE ENBINT RETURN END SUBROUTINE EXTPNM(LIN, TASK) LOGICAL*1 LIN(100), TASK(7) INTEGER J, I INTEGER MATCHC, EQUAL, LENGTH LOGICAL*1 TSKEQU(6) LOGICAL*1 TSKEQL(6) LOGICAL*1 RUN(4) DATA TSKEQU(1)/84/,TSKEQU(2)/65/,TSKEQU(3)/83/,TSKEQU(4)/75/,TSKEQ *U(5)/61/,TSKEQU(6)/0/ DATA TSKEQL(1)/116/,TSKEQL(2)/97/,TSKEQL(3)/115/,TSKEQL(4)/107/,TS *KEQL(5)/61/,TSKEQL(6)/0/ DATA RUN(1)/82/,RUN(2)/85/,RUN(3)/78/,RUN(4)/0/ J = MATCHC(LIN, TSKEQU) IF (.NOT.(J .EQ. 0))GOTO 23025 J = MATCHC(LIN, TSKEQL) 23025 CONTINUE IF (.NOT.(J .GT. 0))GOTO 23027 I = 1 J=J+5 23029 IF (.NOT.(LIN(J) .NE. 0 .AND. LIN(J) .NE. 47 .AND. I .LT. 7))GOTO *23031 CALL CHCOPY(LIN(J), TASK, I) 23030 J=J+1 GOTO 23029 23031 CONTINUE GOTO 23028 23027 CONTINUE I=1 23032 IF (.NOT.(I .LE. 3 .AND. LIN(I) .NE. 0))GOTO 23034 TASK(I) = LIN(I) 23033 I=I+1 GOTO 23032 23034 CONTINUE TASK(I) = 0 CALL UPPER(TASK) IF (.NOT.(EQUAL(TASK, RUN) .EQ. 1))GOTO 23035 I = 1 GOTO 23036 23035 CONTINUE I = I - 1 23036 CONTINUE CALL TRNDEV(2Hti, 0, TASK(I)) IF (.NOT.(I .GT. 1))GOTO 23037 TASK(I+1) = TASK(I) TASK(I) = LIN(I) 23037 CONTINUE J = INDEX(TASK, 58) IF (.NOT.(J .LT. 7))GOTO 23039 TASK(J) = 0 GOTO 23040 23039 CONTINUE TASK(7) = 0 23040 CONTINUE 23028 CONTINUE I=LENGTH(TASK)+1 23041 IF (.NOT.(I .LT. 7))GOTO 23043 TASK(I) = 32 23042 I=I+1 GOTO 23041 23043 CONTINUE TASK(I) = 0 CALL UPPER(TASK) RETURN END SUBROUTINE FXLATE(IN, TYPE, OUT) INTEGER I, J, LENGTH, REALDV, TYPE LOGICAL*1 IN(100), OUT(100), TEMP(40) CALL RESTIL(IN, OUT) IF (.NOT.(OUT(1) .EQ. 47))GOTO 23044 J = 1 IF (.NOT.(REALDV(OUT) .EQ. 1))GOTO 23046 I=2 23048 IF (.NOT.(OUT(I) .NE. 47 .AND. OUT(I) .NE. 0))GOTO 23050 CALL CHCOPY(OUT(I), TEMP, J) 23049 I=I+1 GOTO 23048 23050 CONTINUE CALL CHCOPY(58, TEMP, J) GOTO 23047 23046 CONTINUE I = 1 23047 CONTINUE IF (.NOT.(OUT(I) .EQ. 47))GOTO 23051 CALL CHCOPY(91, TEMP, J) I=I+1 23053 IF (.NOT.(OUT(I) .NE. 47 .AND. OUT(I) .NE. 0))GOTO 23055 CALL CHCOPY(OUT(I), TEMP, J) 23054 I=I+1 GOTO 23053 23055 CONTINUE CALL CHCOPY(93, TEMP, J) IF (.NOT.(OUT(I) .EQ. 47))GOTO 23056 CALL STCOPY(OUT, I+1, TEMP, J) 23056 CONTINUE 23051 CONTINUE TEMP(J) = 0 GOTO 23045 23044 CONTINUE CALL STRCPY(OUT, TEMP) 23045 CONTINUE CALL RESDEF(TEMP, TYPE, OUT) RETURN END SUBROUTINE GDRAUX(DESC, FILE, AUX, DATE) INTEGER DESC, I LOGICAL*1 FILE(100), AUX(100), DATE(100) INTEGER F11HDR LOGICAL*1 HBUF(512) IF (.NOT.(F11HDR(DESC, HBUF) .EQ. -3))GOTO 23058 CALL SCOPY(22HRead access violation!, 1, AUX, 1) I=1 23060 IF (.NOT.(I .LE. 11))GOTO 23062 DATE(I) = 32 23061 I=I+1 GOTO 23060 23062 CONTINUE DATE(I) = 0 GOTO 23059 23058 CONTINUE CALL GETAUX(HBUF, AUX, DATE) 23059 CONTINUE RETURN END INTEGER FUNCTION GDRPRM(DESC, FILE) LOGICAL*1 FILE(100) INTEGER DESC INTEGER DFIND IF (.NOT.(DFIND(DESC, FILE) .EQ. -1))GOTO 23063 GDRPRM = -1 GOTO 23064 23063 CONTINUE CALL DNOISE(FILE) GDRPRM = 0 23064 CONTINUE RETURN END INTEGER FUNCTION GENPNM(PID) LOGICAL*1 PARENT(7), PID(7) INTEGER INIT, SPSTAT DATA INIT/1/ IF (.NOT.(INIT .EQ. 1))GOTO 23065 INIT = 0 CALL GETPNM(PARENT) IF (.NOT.((PARENT(1) .EQ. 36 .OR. PARENT(1) .EQ. 46) .AND. PARENT( *2) .NE. PARENT(1)))GOTO 23067 IF (.NOT.(PARENT(6) .GE. 57))GOTO 23069 SPSTAT = -3 GOTO 23070 23069 CONTINUE SPSTAT = 0 PARENT(6) = PARENT(6) + 1 23070 CONTINUE GOTO 23068 23067 CONTINUE CALL TRNDEV(2HTI, 0, PARENT) PARENT(2) = PARENT(1) PARENT(1) = 36 IF (.NOT.(PARENT(4) .EQ. 58))GOTO 23071 PARENT(4) = PARENT(3) PARENT(3) = 48 23071 CONTINUE CALL STRCPY(2H.1, PARENT(5)) SPSTAT= 0 23068 CONTINUE 23065 CONTINUE CALL STRCPY(PARENT, PID) GENPNM=(SPSTAT) RETURN END SUBROUTINE GETAUX(HBUF, AUX, DATE) LOGICAL*1 AUX(100), DATE(100), HBUF(512) INTEGER GROUP, MEMBER, PROTEC, J, ITOCF, EOF, LENGTH LOGICAL*1 IDATE(14) LOGICAL*1 TWOBLK(3) DATA TWOBLK(1)/32/,TWOBLK(2)/32/,TWOBLK(3)/0/ CALL DECNFO(HBUF, IDATE, GROUP, MEMBER, PROTEC, EOF) CALL FMTPRO(PROTEC, AUX) CALL CONCAT(AUX, TWOBLK, AUX) J = LENGTH(AUX) + 1 CALL FRMDAT(IDATE, AUX(J)) CALL CONCAT(AUX, TWOBLK, AUX) CALL SRTTIM(IDATE, DATE) J = LENGTH(AUX) + 1 J = J + ITOCF(EOF, 7, 32, AUX(J), 8) CALL STCOPY(TWOBLK, 1, AUX, J) CALL FMTUIC(GROUP, MEMBER, IDATE) CALL RESUIC(IDATE, IDATE) CALL STRCPY(IDATE, AUX(J)) CALL FOLD(AUX) RETURN END SUBROUTINE GWDIR(BUF, DTYPE) LOGICAL*1 BUF(100) INTEGER DTYPE, I, LENGTH CALL TRNDEV(2HSY, 0, BUF) I = LENGTH(BUF) + 1 CALL GTDDIR(BUF(I), DTYPE) IF (.NOT.(DTYPE .EQ. 5))GOTO 23073 CALL MKPATH(BUF, BUF) 23073 CONTINUE CALL FOLD(BUF) RETURN END SUBROUTINE HOMDIR(HOME) LOGICAL*1 HOME(100) INTEGER I, GRP, MEM INTEGER LENGTH CALL TRNDEV(2Hho, 0, HOME) IF (.NOT.(HOME(1) .EQ. 0))GOTO 23075 CALL TRNDEV(2Hsy, 0, HOME) 23075 CONTINUE CALL FOLD(HOME) I = LENGTH(HOME) + 1 CALL GETUID(GRP, MEM) CALL FMTUIC(GRP, MEM, HOME(I)) RETURN END SUBROUTINE INTSRV INTEGER JUNK INTEGER KILL JUNK = KILL(0) RETURN END INTEGER FUNCTION ITOCF(N, W, FC, BUF, SIZE) LOGICAL*1 BUF(100), FC, TEMP(20) INTEGER W, SIZE, M, ITOC, I, LENGTH, N M = W - ITOC(N, TEMP, 20) I=1 23077 IF (.NOT.(I .LE. M))GOTO 23079 BUF(I) = FC 23078 I=I+1 GOTO 23077 23079 CONTINUE CALL SCOPY(TEMP, 1, BUF, I) ITOCF = LENGTH(BUF) RETURN END INTEGER FUNCTION LOCCOM(COMAND, SPATH, SUFFIX, PATH) LOGICAL*1 COMAND(100), SPATH(100), PATH(100), TEMP(40), SUFFIX(100 *) INTEGER I, N, INT, J, TYPE INTEGER LENGTH, FLFIND, INDEX I=1 23080 IF (.NOT.(SPATH(I) .NE. 10))GOTO 23082 CALL CONCAT(SPATH(I), COMAND, TEMP) N = LENGTH(TEMP) + 1 IF (.NOT.(INDEX(COMAND, 46) .GT. 0))GOTO 23083 IF (.NOT.(FLFIND(TEMP, PATH, TYPE) .NE. -3))GOTO 23085 LOCCOM=(TYPE) RETURN 23085 CONTINUE GOTO 23084 23083 CONTINUE J=1 23087 IF (.NOT.(SUFFIX(J) .NE. 10))GOTO 23089 CALL SCOPY(SUFFIX, J, TEMP, N) IF (.NOT.(FLFIND(TEMP, PATH, TYPE) .NE. -3))GOTO 23090 LOCCOM=(TYPE) RETURN 23090 CONTINUE 23088 J=J+LENGTH(SUFFIX(J))+1 GOTO 23087 23089 CONTINUE 23084 CONTINUE 23081 I=I+LENGTH(SPATH(I))+1 GOTO 23080 23082 CONTINUE CALL STRCPY(COMAND, PATH) LOCCOM=(-3) RETURN END SUBROUTINE MAILID(SENDER) LOGICAL*1 SENDER(100), LOGUIC(10), UIC(10), BUF(100) INTEGER I, GRP, MEM, FDB, OPENF, GETS, JUNK, GETWRD, EQUAL, FOUND CALL GETUID(GRP, MEM) CALL FMTUIC(GRP, MEM, LOGUIC) FOUND = 0 CALL ADRFIL(BUF) IF (.NOT.(OPENF(BUF, 1, FDB) .NE. -3))GOTO 23092 23094 IF (.NOT.(GETS(FDB, BUF, 100) .NE. -1))GOTO 23095 BUF(100) = 0 I = 1 JUNK = GETWRD(BUF, I, SENDER) CALL SKIPBL(BUF, I) 23096 IF (.NOT.(BUF(I) .NE. 32 .AND. BUF(I) .NE. 0))GOTO 23098 23097 I=I+1 GOTO 23096 23098 CONTINUE JUNK = GETWRD(BUF, I, UIC) IF (.NOT.(EQUAL(UIC, LOGUIC) .EQ. 1))GOTO 23099 FOUND = 1 GOTO 23095 23099 CONTINUE GOTO 23094 23095 CONTINUE CALL CLOSEF(FDB) 23092 CONTINUE IF (.NOT.(FOUND .EQ. 0))GOTO 23101 CALL STRCPY(LOGUIC, SENDER) 23101 CONTINUE RETURN END CALL INITST CALL MAIN CALL ENDST(0) END SUBROUTINE MKPATH(IN, OUT) LOGICAL*1 IN(100), OUT(100), TEMP(40) INTEGER I, J CALL FXLATE(IN, 5, TEMP) OUT(1) = 0 IF (.NOT.(TEMP(1) .NE. 0))GOTO 23103 J = 1 CALL CHCOPY(47, OUT, J) I=1 23105 IF (.NOT.(TEMP(I) .NE. 58))GOTO 23107 CALL CHCOPY(TEMP(I), OUT, J) 23106 I=I+1 GOTO 23105 23107 CONTINUE I = I + 1 IF (.NOT.(TEMP(I) .EQ. 91))GOTO 23108 CALL CHCOPY(47, OUT, J) I=I+1 23110 IF (.NOT.(TEMP(I) .NE. 93))GOTO 23112 CALL CHCOPY(TEMP(I), OUT, J) 23111 I=I+1 GOTO 23110 23112 CONTINUE I = I + 1 IF (.NOT.(TEMP(I) .NE. 0))GOTO 23113 CALL CHCOPY(47, OUT, J) CALL STCOPY(TEMP, I, OUT, J) 23113 CONTINUE 23108 CONTINUE OUT(J) = 0 23103 CONTINUE RETURN END INTEGER FUNCTION OPENDR(STRNG, DESC) INTEGER DESC INTEGER INDEX, LENGTH, DOPEN LOGICAL*1 STRNG(100), FILE(40) LOGICAL*1 STARS(6) DATA STARS(1)/42/,STARS(2)/46/,STARS(3)/42/,STARS(4)/59/,STARS(5)/ *42/,STARS(6)/0/ CALL FXLATE(STRNG, 5, FILE) IF (.NOT.(INDEX(FILE, 93) .NE. LENGTH(FILE)))GOTO 23115 OPENDR = -3 GOTO 23116 23115 CONTINUE CALL CONCAT(FILE, STARS, FILE) OPENDR = DOPEN(FILE, DESC) 23116 CONTINUE RETURN END INTEGER FUNCTION PTRTOC(PTR, BUF, SIZE) INTEGER PTR(2), SIZE, JUNK, J, I INTEGER ITOC, ADDSET, LENGTH LOGICAL*1 BUF(SIZE), TEMP(7) JUNK = ITOC(PTR(1), TEMP, 7) J = 1 I=1 23117 IF (.NOT.(TEMP(I) .NE. 0))GOTO 23119 JUNK = ADDSET(TEMP(I), BUF, J, SIZE) 23118 I=I+1 GOTO 23117 23119 CONTINUE JUNK = ADDSET(32, BUF, J, SIZE) JUNK = ITOC(PTR(2), TEMP, 7) I=1 23120 IF (.NOT.(TEMP(I) .NE. 0))GOTO 23122 JUNK = ADDSET(TEMP(I), BUF, J, SIZE) 23121 I=I+1 GOTO 23120 23122 CONTINUE IF (.NOT.(ADDSET(0, BUF, J, SIZE) .EQ. -3))GOTO 23123 BUF(SIZE) = 0 23123 CONTINUE PTRTOC=(LENGTH(BUF)) RETURN END INTEGER FUNCTION REALDV(BUF) LOGICAL*1 BUF(100), DV(2) INTEGER UNIT, I, DEVICE INTEGER CTOO, TYPE, ALUN EQUIVALENCE (DEVICE, DV(1)) REALDV = 0 IF (.NOT.(TYPE(BUF(2)) .EQ. 1))GOTO 23125 IF (.NOT.(TYPE(BUF(3)) .EQ. 1))GOTO 23127 I = TYPE(BUF(4)) IF (.NOT.(I .EQ. 47 .OR. I .EQ. 2 .OR. I .EQ. 0))GOTO 23129 DV(1) = BUF(2) DV(2) = BUF(3) UNIT = CTOO(BUF(4)) IF (.NOT.(ALUN(8, DEVICE, UNIT) .EQ. 1))GOTO 23131 REALDV = 1 23131 CONTINUE 23129 CONTINUE 23127 CONTINUE 23125 CONTINUE RETURN END SUBROUTINE REMOVE(BUF) LOGICAL*1 BUF(40) INTEGER INT, OPEN, FDEL INT = OPEN(BUF, 1) IF (.NOT.(INT .NE. -3))GOTO 23133 IF (.NOT.(FDEL(INT) .EQ. -3))GOTO 23135 CALL PUTLIN(BUF, 3) CALL REMARK(33H not deleted--privilege violation) 23135 CONTINUE CALL CLOSE(INT) 23133 CONTINUE RETURN END SUBROUTINE RESDEF(IN, TYPE, OUT) LOGICAL*1 IN(100), OUT(100) INTEGER INDEX, I, J, LENGTH, TYPE I = 1 OUT(1) = 0 IF (.NOT.(IN(I) .NE. 0))GOTO 23137 IF (.NOT.(INDEX(IN, 58) .GT. 0))GOTO 23139 CALL JCOPYS(IN, I, 58, OUT) GOTO 23140 23139 CONTINUE CALL TRNDEV(2HSY, 0, OUT) 23140 CONTINUE IF (.NOT.(IN(I) .NE. 0))GOTO 23141 J = LENGTH(OUT) + 1 IF (.NOT.(IN(I) .EQ. 91 .AND. INDEX(IN, 93) .GT. 0))GOTO 23143 CALL JCOPYS(IN, I, 93, OUT(J)) GOTO 23144 23143 CONTINUE CALL GTDDIR(OUT(J), TYPE) 23144 CONTINUE IF (.NOT.(IN(I) .NE. 0))GOTO 23145 J = LENGTH(OUT) + 1 CALL STRCPY(IN(I), OUT(J)) 23145 CONTINUE 23141 CONTINUE 23137 CONTINUE CALL FOLD(OUT) RETURN END SUBROUTINE RESTIL(PATH, OUT) LOGICAL*1 PATH(100), OUT(100), TOKEN(40) INTEGER I, JUNK, KEY, J INTEGER GTFTOK, EQUAL LOGICAL*1 BIN(4) LOGICAL*1 USR(4) LOGICAL*1 TMP(4) LOGICAL*1 LPR(4) LOGICAL*1 MAIL(5) LOGICAL*1 MAN(4) DATA BIN(1)/98/,BIN(2)/105/,BIN(3)/110/,BIN(4)/0/ DATA USR(1)/117/,USR(2)/115/,USR(3)/114/,USR(4)/0/ DATA TMP(1)/116/,TMP(2)/109/,TMP(3)/112/,TMP(4)/0/ DATA LPR(1)/108/,LPR(2)/112/,LPR(3)/114/,LPR(4)/0/ DATA MAIL(1)/109/,MAIL(2)/97/,MAIL(3)/105/,MAIL(4)/108/,MAIL(5)/0/ DATA MAN(1)/109/,MAN(2)/97/,MAN(3)/110/,MAN(4)/0/ CALL STRCPY(PATH, OUT) IF (.NOT.(PATH(1) .EQ. 126))GOTO 23147 I = 2 JUNK = GTFTOK(PATH, I, TOKEN) CALL FOLD(TOKEN) IF (.NOT.(EQUAL(TOKEN, BIN) .EQ. 1))GOTO 23149 KEY = 1 GOTO 23150 23149 CONTINUE IF (.NOT.(EQUAL(TOKEN, USR) .EQ. 1))GOTO 23151 KEY = 2 GOTO 23152 23151 CONTINUE IF (.NOT.(EQUAL(TOKEN, TMP) .EQ. 1))GOTO 23153 KEY = 3 GOTO 23154 23153 CONTINUE IF (.NOT.(EQUAL(TOKEN, LPR) .EQ. 1))GOTO 23155 KEY = 4 GOTO 23156 23155 CONTINUE IF (.NOT.(EQUAL(TOKEN, MAIL) .EQ. 1))GOTO 23157 KEY = 5 GOTO 23158 23157 CONTINUE IF (.NOT.(EQUAL(TOKEN, MAN) .EQ. 1))GOTO 23159 KEY = 6 GOTO 23160 23159 CONTINUE KEY = -3 23160 CONTINUE 23158 CONTINUE 23156 CONTINUE 23154 CONTINUE 23152 CONTINUE 23150 CONTINUE IF (.NOT.(KEY .NE. -3))GOTO 23161 CALL GETDIR(KEY, 6, TOKEN) J = 1 CALL STCOPY(TOKEN, 1, OUT, J) IF (.NOT.(PATH(I) .EQ. 47))GOTO 23163 I = I + 1 23163 CONTINUE CALL STRCPY(PATH(I), OUT(J)) 23161 CONTINUE 23147 CONTINUE RETURN END SUBROUTINE RESUIC(UIC, VALUE) LOGICAL*1 UIC(100), VALUE(100), NAME(40), BUF(100), DEFN(40) INTEGER INIT, I, LENGTH, FDB, OPENF, JUNK, GETWRD, TBLOOK, GETS INTEGER MEM( 2000) LOGICAL*1 CMEM(4000) EQUIVALENCE (CMEM(1),MEM(1)) COMMON/CDSMEM/MEM DATA INIT/1/ IF (.NOT.(INIT .EQ. 1))GOTO 23165 CALL ADRFIL(NAME) CALL TBINIT(2000) IF (.NOT.(OPENF(NAME, 1, FDB) .EQ. -3))GOTO 23167 CALL REMARK(23Hcannot open user's file) GOTO 23168 23167 CONTINUE 23169 IF (.NOT.(GETS(FDB, BUF, 100) .NE. -1))GOTO 23170 BUF(100) = 0 I = 1 JUNK = GETWRD(BUF, I, DEFN) JUNK = GETWRD(BUF, I, NAME) JUNK = GETWRD(BUF, I, NAME) CALL TBINST(NAME, DEFN) GOTO 23169 23170 CONTINUE CALL CLOSEF(FDB) 23168 CONTINUE INIT = 0 23165 CONTINUE IF (.NOT.(TBLOOK(UIC, NAME) .EQ. 0))GOTO 23171 CALL STRCPY(UIC, NAME) 23171 CONTINUE CALL STRCPY(NAME, VALUE) RETURN END SUBROUTINE SCRATF (SEED, NAME) LOGICAL*1 SEED(100), NAME(100), TEMP(7) CALL GETPNM(TEMP) CALL FGENR8(TEMP, SEED, NAME) RETURN END INTEGER FUNCTION SSPAWN(IMAGE, ARGS, PID, WAIT) LOGICAL*1 IMAGE(40), ARGS(256), PID(7), WAIT, MCRLIN(80), ARGBUF(2 *56), OUTFIL(40), ERRFIL(40), C, SPIMG(40) LOGICAL*1 CLOWER INTEGER INIT, STATUS, JUNK, OPNOUT, OPNERR, OUTMOD, PRIO INTEGER BCKSPN, EQUAL, SNDARG, STSPWN, GENPNM, MATCHC, LOCCOM, FIL *FNO, GTMODE, STMODE LOGICAL*1 LOCAL(6) LOGICAL*1 BLKGTR(3) LOGICAL*1 BLKQMK(3) LOGICAL*1 SPATH(3) LOGICAL*1 FMTSTR(31) DATA LOCAL(1)/108/,LOCAL(2)/111/,LOCAL(3)/99/,LOCAL(4)/97/,LOCAL(5 *)/108/,LOCAL(6)/0/ DATA BLKGTR(1)/32/,BLKGTR(2)/62/,BLKGTR(3)/0/ DATA BLKQMK(1)/32/,BLKQMK(2)/63/,BLKQMK(3)/0/ DATA SPATH(1)/0/,SPATH(2)/10/,SPATH(3)/0/ DATA FMTSTR(1)/105/,FMTSTR(2)/110/,FMTSTR(3)/115/,FMTSTR(4)/32/,FM *TSTR(5)/37/,FMTSTR(6)/115/,FMTSTR(7)/47/,FMTSTR(8)/116/,FMTSTR(9)/ *97/,FMTSTR(10)/115/,FMTSTR(11)/107/,FMTSTR(12)/61/,FMTSTR(13)/37/, *FMTSTR(14)/115/,FMTSTR(15)/47/,FMTSTR(16)/112/,FMTSTR(17)/114/,FMT *STR(18)/105/,FMTSTR(19)/61/,FMTSTR(20)/37/,FMTSTR(21)/100/,FMTSTR( *22)/46/,FMTSTR(23)/47/,FMTSTR(24)/114/,FMTSTR(25)/117/,FMTSTR(26)/ *110/,FMTSTR(27)/61/,FMTSTR(28)/114/,FMTSTR(29)/101/,FMTSTR(30)/109 */,FMTSTR(31)/0/ DATA INIT/1/ IF (.NOT.(INIT .EQ. 1))GOTO 23173 INIT = 0 CALL GETPRI(PRIO) 23173 CONTINUE CALL STRCPY(IMAGE, SPIMG) CALL FOLD(SPIMG) IF (.NOT.(EQUAL(SPIMG, LOCAL) .EQ. 0))GOTO 23175 IF (.NOT.(LOCCOM(IMAGE, SPATH, SPATH, SPIMG) .NE. 60))GOTO 23177 SSPAWN=(-3) RETURN 23177 CONTINUE 23175 CONTINUE IF (.NOT.(CLOWER(WAIT) .EQ. 98))GOTO 23179 SSPAWN=(BCKSPN(SPIMG, ARGS, PID)) RETURN 23179 CONTINUE OPNOUT = -3 OPNERR = -3 OUTMOD = -3 IF (.NOT.(EQUAL(SPIMG, LOCAL) .EQ. 1))GOTO 23181 CALL STRCPY(ARGS, MCRLIN) GOTO 23182 23181 CONTINUE SSPAWN = -3 IF (.NOT.(GENPNM(PID) .EQ. -3))GOTO 23183 RETURN 23183 CONTINUE CALL STRCPY(ARGS, ARGBUF) OUTMOD = GTMODE(2) IF (.NOT.(MATCHC(ARGBUF, BLKGTR) .EQ. 0))GOTO 23185 IF (.NOT.(FILNFO(2, OUTFIL, JUNK) .EQ. 0))GOTO 23187 OPNOUT = 2 CALL APPRED(2, 62, OUTFIL, ARGBUF) 23187 CONTINUE 23185 CONTINUE I = MATCHC(ARGBUF, BLKQMK) IF (.NOT.(I .NE. 0))GOTO 23189 C = ARGBUF(I+2) IF (.NOT.(C .EQ. 32 .OR. C .EQ. 9 .OR. C .EQ. 0))GOTO 23191 I = 0 23191 CONTINUE 23189 CONTINUE IF (.NOT.(I .EQ. 0))GOTO 23193 IF (.NOT.(FILNFO(3, ERRFIL, JUNK) .EQ. 0))GOTO 23195 OPNERR = 3 CALL APPRED(3, 63, ERRFIL, ARGBUF) 23195 CONTINUE 23193 CONTINUE IF (.NOT.(SNDARG(ARGBUF, PID) .NE. 1))GOTO 23197 CALL SRESET(OPNOUT, OUTFIL) IF (.NOT.(OUTMOD .NE. -3))GOTO 23199 JUNK = STMODE(2, OUTMOD) 23199 CONTINUE CALL SRESET(OPNERR, ERRFIL) RETURN 23197 CONTINUE CALL SPRINT(MCRLIN, FMTSTR, SPIMG, PID, PRIO) 23182 CONTINUE CALL EXTPNM(MCRLIN, PID) CALL TTYDET CALL SETFGD(PID) STATUS = STSPWN(MCRLIN) CALL CLRFGD CALL TTYATT CALL SRESET(OPNOUT, OUTFIL) IF (.NOT.(OUTMOD .NE. -3))GOTO 23201 JUNK = STMODE(2, OUTMOD) 23201 CONTINUE CALL SRESET(OPNERR, ERRFIL) IF (.NOT.(STATUS .NE. 0 .AND. STATUS .NE. 1))GOTO 23203 SSPAWN = -10 GOTO 23204 23203 CONTINUE SSPAWN = 0 23204 CONTINUE RETURN END SUBROUTINE SRESET(INT, FILE) LOGICAL*1 FILE(100) INTEGER INT, JUNK INTEGER ASSNGI IF (.NOT.(INT .NE. -3))GOTO 23205 JUNK = ASSNGI(FILE, 4, INT) 23205 CONTINUE RETURN END SUBROUTINE SRTTIM(IN, OUT) LOGICAL*1 IN(100), OUT(100) LOGICAL*1 MONTH(4, 12), BUF(4), NUMBER(13) INTEGER I, J, EQUAL DATA MONTH/106,97,110,0,102,101,98,0,109,97,114,0, 97,112,114,0,10 *9,97,121,0,106,117,110,0, 106,117,108,0,97,117,103,0,115,101,112,0 *, 111,99,116,0,110,111,118,0,100,101,99,0/ DATA NUMBER/97,98,99,100,101,102, 103,104,105,106,107,108, 109/ J = 1 CALL XCOPY(IN(3), 3, BUF, J) BUF(J) = 0 CALL FOLD(BUF) J = 1 CALL XCOPY(IN(6), 2, OUT, J) I=1 23207 IF (.NOT.(I .LE. 12))GOTO 23209 IF (.NOT.(EQUAL(BUF, MONTH(1, I)) .EQ. 1))GOTO 23210 GOTO 23209 23210 CONTINUE 23208 I=I+1 GOTO 23207 23209 CONTINUE CALL CHCOPY(NUMBER(I), OUT, J) CALL XCOPY(IN(1), 2, OUT, J) CALL SCOPY(IN, 8, OUT, J) CALL FOLD(OUT) RETURN END SUBROUTINE XCOPY(IN, N, OUT, J) INTEGER N, J LOGICAL*1 IN(100), OUT(100) INTEGER I I=1 23212 IF (.NOT.(I .LE. N))GOTO 23214 OUT(J) = IN(I) J = J + 1 23213 I=I+1 GOTO 23212 23214 CONTINUE RETURN END SUBROUTINE FGENR8 (ROOT, SEED, NAME) LOGICAL*1 SEED(100), NAME(100), ROOT(7) INTEGER I, J, CTYPE, TYPE, LENGTH CALL GETDIR(3, 6, NAME) J = LENGTH(NAME) + 1 I=1 23215 IF (.NOT.(ROOT(I) .NE. 0))GOTO 23217 CTYPE = TYPE(ROOT(I)) IF (.NOT.(CTYPE .EQ. 2 .OR. CTYPE .EQ. 1))GOTO 23218 NAME(J) = ROOT(I) J = J + 1 23218 CONTINUE 23216 I=I+1 GOTO 23215 23217 CONTINUE NAME(J) = 46 J = J + 1 I=1 23220 IF (.NOT.(SEED(I) .NE. 0 .AND. I .LE. 3))GOTO 23222 NAME(J) = SEED(I) J = J + 1 23221 I=I+1 GOTO 23220 23222 CONTINUE NAME(J) = 0 RETURN END INTEGER FUNCTION FLFIND(INFIL, OUTFIL, TYPE) LOGICAL*1 INFIL(40), OUTFIL(40) INTEGER TYPE, INT INTEGER OPEN, GETTYP INT = OPEN(INFIL, 1) IF (.NOT.(INT .NE. -3))GOTO 23223 TYPE = GETTYP(INT, TYPE) CALL GLOCNM(INT, OUTFIL) CALL FOLD(OUTFIL) 23223 CONTINUE FLFIND=(INT) RETURN END