INTEGER FUNCTION AMOVE(NAME1, NAME2) LOGICAL*1 NAME1(40), NAME2(40) INTEGER OPEN, OLD, NEW, CREATE, RENAME, REMOVE LOGICAL*1 START(31) DATA START(1)/69/,START(2)/114/,START(3)/114/,START(4)/111/,START( *5)/114/,START(6)/32/,START(7)/114/,START(8)/101/,START(9)/109/,STA *RT(10)/111/,START(11)/118/,START(12)/105/,START(13)/110/,START(14) */103/,START(15)/32/,START(16)/102/,START(17)/105/,START(18)/108/,S *TART(19)/101/,START(20)/32/,START(21)/105/,START(22)/110/,START(23 *)/32/,START(24)/97/,START(25)/109/,START(26)/111/,START(27)/118/,S *TART(28)/101/,START(29)/58/,START(30)/32/,START(31)/0/ 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 CALL CLOSE(OLD) AMOVE = -3 GOTO 23003 23002 CONTINUE CALL FCOPY(OLD, NEW) CALL CLOSE(OLD) CALL CLOSE(NEW) IF (.NOT.(REMOVE(NAME1) .EQ. -3))GOTO 23004 CALL PUTLIN(START, 3) CALL REMARK(NAME1) 23004 CONTINUE 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 INDEXC, 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 23006 CALL PUTLNL(IMAGE, INT) CALL PUTLNL(ARGS, INT) CALL TRNDEV(2HSY, 0, PID) CALL PUTLNL(PID, INT) CALL CLOSE(INT) I = INDEXC(FILE, 93) + 1 CALL STRCPY(FILE(I), FILE) CALL SRDA(NEWAST, OLDAST) IF (.NOT.(SDAT(BSPAWN, FILE) .NE. 1))GOTO 23008 INT = -3 GOTO 23009 23008 CONTINUE CALL RCVDAT(BSPAWN, FILE) INT = FILE(5) IF (.NOT.(INT .EQ. 0))GOTO 23010 CALL STRCPY(FILE(6), PID) GOTO 23011 23010 CONTINUE INT = -3 23011 CONTINUE 23009 CONTINUE CALL CRDA(OLDAST) 23006 CONTINUE BCKSPN=(INT) RETURN END SUBROUTINE CPYBYT(IN, OUT, N, TRMN8R) LOGICAL*1 IN(100), OUT(100), TRMN8R INTEGER N INTEGER I I=1 23012 IF (.NOT.(I .LE. N))GOTO 23014 OUT(I) = IN(I) 23013 I=I+1 GOTO 23012 23014 CONTINUE IF (.NOT.(TRMN8R .GE. 0))GOTO 23015 OUT(I) = TRMN8R 23015 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 23017 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 23018 23017 CONTINUE CWDIR = -3 23018 CONTINUE RETURN END SUBROUTINE DECNFO(DBUF, DATE, GROUP, MEMBER, PROTEC, BSIZE, CSIZE, * TYPE) INTEGER GROUP, MEMBER, PROTEC, BSIZE(2), CSIZE(2), TYPE, SIZE(4) LOGICAL*1 DATE(100), DBUF(512) INTEGER REVISE, IDOFF, TEMP 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 23019 REVISE = REVISE + 13 CALL CPYBYT(DBUF(REVISE), DATE, 13, 0) 23019 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(23), SIZE(1), 1, 0) CALL CPYBYT(DBUF(26), SIZE(2), 1, 0) CALL CPYBYT(DBUF(25), SIZE(3), 1, 0) CALL CPYBYT(DBUF(27), SIZE(4), 2, -1) CALL FILSIZ(SIZE, BSIZE, CSIZE) TYPE = 60 CALL CPYBYT(DBUF(15), TEMP, 1, 0) IF (.NOT.(TEMP .EQ. 2))GOTO 23021 CALL CPYBYT(DBUF(16), TEMP, 1, 0) IF (.NOT.(MOD(TEMP, 4) .NE. 0))GOTO 23023 TYPE = 12 23023 CONTINUE 23021 CONTINUE RETURN END SUBROUTINE DNOISE(FILE) LOGICAL*1 FILE(100) INTEGER I INTEGER INDEXC, EQUAL I = INDEXC(FILE, 59) IF (.NOT.(EQUAL(FILE(I), 2H;1) .EQ. 1))GOTO 23025 FILE(I) = 0 I = INDEXC(FILE, 46) IF (.NOT.(FILE(I+1) .EQ. 0))GOTO 23027 FILE(I) = 0 23027 CONTINUE 23025 CONTINUE RETURN END SUBROUTINE ENBINT RETURN END SUBROUTINE EXTPNM(LIN, TASK) LOGICAL*1 LIN(100), TASK(7), TERM(10) INTEGER J, I INTEGER INDEXS, EQUAL, LENGTH LOGICAL*1 TSKEQU(6) LOGICAL*1 TSKEQL(6) LOGICAL*1 RUN(4) LOGICAL*1 AT(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/ DATA AT(1)/65/,AT(2)/84/,AT(3)/46/,AT(4)/0/ J = INDEXS(LIN, TSKEQU) IF (.NOT.(J .EQ. 0))GOTO 23029 J = INDEXS(LIN, TSKEQL) 23029 CONTINUE IF (.NOT.(J .GT. 0))GOTO 23031 I = 1 J=J+5 23033 IF (.NOT.(LIN(J) .NE. 0 .AND. LIN(J) .NE. 47 .AND. I .LT. 7))GOTO *23035 CALL CHCOPY(LIN(J), TASK, I) 23034 J=J+1 GOTO 23033 23035 CONTINUE GOTO 23032 23031 CONTINUE I=1 23036 IF (.NOT.(I .LE. 3 .AND. LIN(I) .NE. 0))GOTO 23038 TASK(I) = LIN(I) 23037 I=I+1 GOTO 23036 23038 CONTINUE TASK(I) = 0 CALL UPPER(TASK) CALL TRNDEV(2Hti, 0, TERM) J = 2 IF (.NOT.(EQUAL(TASK, RUN) .EQ. 1))GOTO 23039 I = 1 J = 1 GOTO 23040 23039 CONTINUE IF (.NOT.(TASK(1) .EQ. 64))GOTO 23041 CALL STRCPY(AT, TASK) I = 4 23041 CONTINUE 23040 CONTINUE 23043 IF (.NOT.(TERM(J) .NE. 58))GOTO 23045 IF (.NOT.(I .EQ. 7))GOTO 23046 GOTO 23045 23046 CONTINUE CALL CHCOPY(TERM(J), TASK, I) 23047 CONTINUE 23044 J=J+1 GOTO 23043 23045 CONTINUE 23032 CONTINUE I=LENGTH(TASK)+1 23048 IF (.NOT.(I .LT. 7))GOTO 23050 TASK(I) = 32 23049 I=I+1 GOTO 23048 23050 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 23051 J = 1 IF (.NOT.(REALDV(OUT) .EQ. 1))GOTO 23053 I=2 23055 IF (.NOT.(OUT(I) .NE. 47 .AND. OUT(I) .NE. 0))GOTO 23057 CALL CHCOPY(OUT(I), TEMP, J) 23056 I=I+1 GOTO 23055 23057 CONTINUE CALL CHCOPY(58, TEMP, J) GOTO 23054 23053 CONTINUE I = 1 23054 CONTINUE IF (.NOT.(OUT(I) .EQ. 47))GOTO 23058 CALL CHCOPY(91, TEMP, J) I=I+1 23060 IF (.NOT.(OUT(I) .NE. 47 .AND. OUT(I) .NE. 0))GOTO 23062 CALL CHCOPY(OUT(I), TEMP, J) 23061 I=I+1 GOTO 23060 23062 CONTINUE CALL CHCOPY(93, TEMP, J) IF (.NOT.(OUT(I) .EQ. 47))GOTO 23063 CALL STCOPY(OUT, I+1, TEMP, J) 23063 CONTINUE 23058 CONTINUE TEMP(J) = 0 GOTO 23052 23051 CONTINUE CALL STRCPY(OUT, TEMP) 23052 CONTINUE CALL RESDEF(TEMP, TYPE, OUT) RETURN END SUBROUTINE GDRAUX(DESC, FILE, AUX, DATE, FMT) 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 23065 CALL SCOPY(22HRead access violation!, 1, AUX, 1) I=1 23067 IF (.NOT.(I .LE. 11))GOTO 23069 DATE(I) = 32 23068 I=I+1 GOTO 23067 23069 CONTINUE DATE(I) = 0 GOTO 23066 23065 CONTINUE CALL GETAUX(HBUF, FILE, AUX, DATE, FMT) 23066 CONTINUE RETURN END INTEGER FUNCTION GDRPRM(DESC, FILE) LOGICAL*1 FILE(100) INTEGER DESC INTEGER DFIND IF (.NOT.(DFIND(DESC, FILE) .EQ. -1))GOTO 23070 GDRPRM = -1 GOTO 23071 23070 CONTINUE CALL DNOISE(FILE) GDRPRM = 0 23071 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 23072 INIT = 0 CALL GETPNM(PARENT) IF (.NOT.((PARENT(1) .EQ. 36 .OR. PARENT(1) .EQ. 46) .AND. PARENT( *2) .NE. PARENT(1)))GOTO 23074 IF (.NOT.(PARENT(6) .GE. 57))GOTO 23076 SPSTAT = -3 GOTO 23077 23076 CONTINUE SPSTAT = 0 PARENT(6) = PARENT(6) + 1 23077 CONTINUE GOTO 23075 23074 CONTINUE CALL TRNDEV(2HTI, 0, PARENT) PARENT(2) = PARENT(1) PARENT(1) = 36 IF (.NOT.(PARENT(4) .EQ. 58))GOTO 23078 PARENT(4) = PARENT(3) PARENT(3) = 48 23078 CONTINUE CALL STRCPY(2H.1, PARENT(5)) SPSTAT= 0 23075 CONTINUE 23072 CONTINUE CALL STRCPY(PARENT, PID) GENPNM=(SPSTAT) RETURN END SUBROUTINE GETAUX(HBUF, FILE, AUX, DATE, FMT) LOGICAL*1 HBUF(512), FILE(100), AUX(100), DATE(100), FMT(100) INTEGER GROUP, MEMBER, PROTEC, TYPE, BSIZE(2), CSIZE(2) LOGICAL*1 PROSTR(15), IDATE(14), DATSTR(21), TEMP(20), C LOGICAL*1 CLOWER INTEGER I, J, W, N INTEGER CTOI, DITOC LOGICAL*1 ASCSTR(4) LOGICAL*1 BINSTR(4) DATA ASCSTR(1)/97/,ASCSTR(2)/115/,ASCSTR(3)/99/,ASCSTR(4)/0/ DATA BINSTR(1)/98/,BINSTR(2)/105/,BINSTR(3)/110/,BINSTR(4)/0/ CALL DECNFO(HBUF, IDATE, GROUP, MEMBER, PROTEC, BSIZE, CSIZE, TYPE *) CALL FMTPRO(PROTEC, PROSTR) CALL FRMDAT(IDATE, DATSTR) CALL SRTTIM(IDATE, DATE) CALL FMTUIC(GROUP, MEMBER, IDATE) CALL RESUIC(IDATE, HBUF) AUX(1) = 0 I=1 J=1 23080 IF (.NOT.(FMT(I) .NE. 0))GOTO 23082 IF (.NOT.((48.LE.FMT(I).AND.FMT(I).LE.57)))GOTO 23083 W = CTOI(FMT, I) GOTO 23084 23083 CONTINUE W = 0 23084 CONTINUE IF (.NOT.(FMT(I) .EQ. 0))GOTO 23085 GOTO 23082 23085 CONTINUE C = CLOWER(FMT(I)) I23087=(C) GOTO 23087 23089 CONTINUE N=DITOC(BSIZE, TEMP, 20) 23090 IF (.NOT.(N .LT. W))GOTO 23092 CALL CHCOPY(32, AUX, J) 23091 N=N+1 GOTO 23090 23092 CONTINUE CALL STCOPY(TEMP, 1, AUX, J) GOTO 23088 23093 CONTINUE N=DITOC(CSIZE, TEMP, 20) 23094 IF (.NOT.(N .LT. W))GOTO 23096 CALL CHCOPY(32, AUX, J) 23095 N=N+1 GOTO 23094 23096 CONTINUE CALL STCOPY(TEMP, 1, AUX, J) GOTO 23088 23097 CONTINUE CALL STCOPY(DATSTR, 1, AUX, J) GOTO 23088 23098 CONTINUE N=1 23099 IF (.NOT.(FILE(N) .NE. 0))GOTO 23101 CALL CHCOPY(FILE(N), AUX, J) 23100 N=N+1 GOTO 23099 23101 CONTINUE 23102 IF (.NOT.(N .LE. W))GOTO 23103 CALL CHCOPY(32, AUX, J) N = N + 1 GOTO 23102 23103 CONTINUE GOTO 23088 23104 CONTINUE N=1 23105 IF (.NOT.(HBUF(N) .NE. 0))GOTO 23107 CALL CHCOPY(HBUF(N), AUX, J) 23106 N=N+1 GOTO 23105 23107 CONTINUE 23108 IF (.NOT.(N .LE. W))GOTO 23109 CALL CHCOPY(32, AUX, J) N = N + 1 GOTO 23108 23109 CONTINUE GOTO 23088 23110 CONTINUE CALL STCOPY(PROSTR, 1, AUX, J) GOTO 23088 23111 CONTINUE IF (.NOT.(TYPE .EQ. 12))GOTO 23112 CALL STCOPY(ASCSTR, 1, AUX, J) GOTO 23113 23112 CONTINUE CALL STCOPY(BINSTR, 1, AUX, J) 23113 CONTINUE GOTO 23088 23114 CONTINUE CALL CHCOPY(FMT(I), AUX, J) GOTO 23088 23087 CONTINUE IF (I23087.EQ.98)GOTO 23089 IF (I23087.EQ.99)GOTO 23093 IF (I23087.EQ.109)GOTO 23097 IF (I23087.EQ.110)GOTO 23098 IF (I23087.EQ.111)GOTO 23104 IF (I23087.EQ.112)GOTO 23110 IF (I23087.EQ.116)GOTO 23111 GOTO 23114 23088 CONTINUE 23081 I=I+1 GOTO 23080 23082 CONTINUE 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 23115 CALL MKPATH(BUF, BUF) 23115 CONTINUE CALL FOLD(BUF) RETURN END SUBROUTINE HOMDIR(HOME, DTYPE) LOGICAL*1 HOME(100), TEMP(15) INTEGER I, GRP, MEM, DTYPE, J INTEGER LENGTH CALL TRNDEV(2Hho, 0, TEMP) IF (.NOT.(TEMP(1) .EQ. 0))GOTO 23117 CALL TRNDEV(2Hsy, 0, TEMP) 23117 CONTINUE CALL FOLD(TEMP) I = LENGTH(TEMP) + 1 CALL GETUID(GRP, MEM) CALL FMTUIC(GRP, MEM, TEMP(I)) IF (.NOT.(DTYPE .EQ. 6))GOTO 23119 CALL STRCPY(TEMP, HOME) GOTO 23120 23119 CONTINUE J = 1 CALL CHCOPY(47, HOME, J) I=1 23121 IF (.NOT.(TEMP(I) .NE. 58))GOTO 23123 CALL CHCOPY(TEMP(I), HOME, J) 23122 I=I+1 GOTO 23121 23123 CONTINUE CALL CHCOPY(47, HOME, J) I = I + 2 23124 IF (.NOT.(TEMP(I) .NE. 93))GOTO 23126 CALL CHCOPY(TEMP(I), HOME, J) 23125 I=I+1 GOTO 23124 23126 CONTINUE CALL CHCOPY(47, HOME, J) 23120 CONTINUE 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 23127 IF (.NOT.(I .LE. M))GOTO 23129 BUF(I) = FC 23128 I=I+1 GOTO 23127 23129 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, INDEXC I=1 23130 IF (.NOT.(SPATH(I) .NE. 10))GOTO 23132 CALL CONCAT(SPATH(I), COMAND, TEMP) N = LENGTH(TEMP) + 1 IF (.NOT.(INDEXC(COMAND, 46) .GT. 0))GOTO 23133 IF (.NOT.(FLFIND(TEMP, PATH, TYPE) .NE. -3))GOTO 23135 LOCCOM=(TYPE) RETURN 23135 CONTINUE GOTO 23134 23133 CONTINUE J=1 23137 IF (.NOT.(SUFFIX(J) .NE. 10))GOTO 23139 CALL SCOPY(SUFFIX, J, TEMP, N) IF (.NOT.(FLFIND(TEMP, PATH, TYPE) .NE. -3))GOTO 23140 LOCCOM=(TYPE) RETURN 23140 CONTINUE 23138 J=J+LENGTH(SUFFIX(J))+1 GOTO 23137 23139 CONTINUE 23134 CONTINUE 23131 I=I+LENGTH(SPATH(I))+1 GOTO 23130 23132 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 INTEGER J, LENGTH LOGICAL*1 SYSTEM(7) LOGICAL*1 BLKLP(3) DATA SYSTEM(1)/115/,SYSTEM(2)/121/,SYSTEM(3)/115/,SYSTEM(4)/116/,S *YSTEM(5)/101/,SYSTEM(6)/109/,SYSTEM(7)/0/ DATA BLKLP(1)/32/,BLKLP(2)/40/,BLKLP(3)/0/ CALL GETUID(GRP, MEM) CALL FMTUIC(GRP, MEM, LOGUIC) FOUND = 0 CALL ADRFIL(BUF) IF (.NOT.(OPENF(BUF, 1, FDB) .NE. -3))GOTO 23142 23144 IF (.NOT.(GETS(FDB, BUF, 100) .NE. -1))GOTO 23145 BUF(100) = 0 I = 1 JUNK = GETWRD(BUF, I, SENDER) CALL SKIPBL(BUF, I) 23146 IF (.NOT.(BUF(I) .NE. 32 .AND. BUF(I) .NE. 0))GOTO 23148 23147 I=I+1 GOTO 23146 23148 CONTINUE JUNK = GETWRD(BUF, I, UIC) IF (.NOT.(EQUAL(UIC, LOGUIC) .EQ. 1))GOTO 23149 CALL SKIPBL(BUF, I) J = LENGTH(SENDER) + 1 CALL STCOPY(BLKLP, 1, SENDER, J) I=I+1 23151 IF (.NOT.(BUF(I) .NE. 34))GOTO 23153 CALL CHCOPY(BUF(I), SENDER, J) 23152 I=I+1 GOTO 23151 23153 CONTINUE CALL CHCOPY(41, SENDER, J) FOUND = 1 GOTO 23145 23149 CONTINUE GOTO 23144 23145 CONTINUE CALL CLOSEF(FDB) 23142 CONTINUE IF (.NOT.(FOUND .EQ. 0))GOTO 23154 CALL STRCPY(SYSTEM, SENDER) 23154 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 23156 J = 1 CALL CHCOPY(47, OUT, J) I=1 23158 IF (.NOT.(TEMP(I) .NE. 58))GOTO 23160 CALL CHCOPY(TEMP(I), OUT, J) 23159 I=I+1 GOTO 23158 23160 CONTINUE I = I + 1 IF (.NOT.(TEMP(I) .EQ. 91))GOTO 23161 CALL CHCOPY(47, OUT, J) I=I+1 23163 IF (.NOT.(TEMP(I) .NE. 93))GOTO 23165 CALL CHCOPY(TEMP(I), OUT, J) 23164 I=I+1 GOTO 23163 23165 CONTINUE CALL CHCOPY(47, OUT, J) I = I + 1 IF (.NOT.(TEMP(I) .NE. 0))GOTO 23166 CALL STCOPY(TEMP, I, OUT, J) 23166 CONTINUE 23161 CONTINUE OUT(J) = 0 23156 CONTINUE RETURN END INTEGER FUNCTION OPENDR(STRNG, DESC) INTEGER DESC INTEGER INDEXC, 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.(INDEXC(FILE, 93) .NE. LENGTH(FILE)))GOTO 23168 OPENDR = -3 GOTO 23169 23168 CONTINUE CALL CONCAT(FILE, STARS, FILE) OPENDR = DOPEN(FILE, DESC) 23169 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 23170 IF (.NOT.(TEMP(I) .NE. 0))GOTO 23172 JUNK = ADDSET(TEMP(I), BUF, J, SIZE) 23171 I=I+1 GOTO 23170 23172 CONTINUE JUNK = ADDSET(32, BUF, J, SIZE) JUNK = ITOC(PTR(2), TEMP, 7) I=1 23173 IF (.NOT.(TEMP(I) .NE. 0))GOTO 23175 JUNK = ADDSET(TEMP(I), BUF, J, SIZE) 23174 I=I+1 GOTO 23173 23175 CONTINUE IF (.NOT.(ADDSET(0, BUF, J, SIZE) .EQ. -3))GOTO 23176 BUF(SIZE) = 0 23176 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 23178 IF (.NOT.(TYPE(BUF(3)) .EQ. 1))GOTO 23180 I = TYPE(BUF(4)) IF (.NOT.(I .EQ. 47 .OR. I .EQ. 2 .OR. I .EQ. 0))GOTO 23182 DV(1) = BUF(2) DV(2) = BUF(3) UNIT = CTOO(BUF(4)) IF (.NOT.(ALUN(8, DEVICE, UNIT) .EQ. 1))GOTO 23184 REALDV = 1 23184 CONTINUE 23182 CONTINUE 23180 CONTINUE 23178 CONTINUE RETURN END INTEGER FUNCTION REMOVE(BUF) LOGICAL*1 BUF(40) INTEGER INT, OPEN, FDEL, STATUS INT = OPEN(BUF, 1) IF (.NOT.(INT .NE. -3))GOTO 23186 STATUS = FDEL(INT) CALL CLOSE(INT) GOTO 23187 23186 CONTINUE STATUS = 0 23187 CONTINUE REMOVE=(STATUS) RETURN END SUBROUTINE RESDEF(IN, TYPE, OUT) LOGICAL*1 IN(100), OUT(100) INTEGER INDEXC, I, J, LENGTH, TYPE I = 1 OUT(1) = 0 IF (.NOT.(IN(I) .NE. 0))GOTO 23188 IF (.NOT.(INDEXC(IN, 58) .GT. 0))GOTO 23190 CALL JCOPYS(IN, I, 58, OUT) GOTO 23191 23190 CONTINUE CALL TRNDEV(2HSY, 0, OUT) 23191 CONTINUE IF (.NOT.(IN(I) .NE. 0))GOTO 23192 J = LENGTH(OUT) + 1 IF (.NOT.(IN(I) .EQ. 91 .AND. INDEXC(IN, 93) .GT. 0))GOTO 23194 CALL JCOPYS(IN, I, 93, OUT(J)) GOTO 23195 23194 CONTINUE CALL GTDDIR(OUT(J), TYPE) 23195 CONTINUE IF (.NOT.(IN(I) .NE. 0))GOTO 23196 J = LENGTH(OUT) + 1 CALL STRCPY(IN(I), OUT(J)) 23196 CONTINUE 23192 CONTINUE 23188 CONTINUE CALL FOLD(OUT) RETURN END SUBROUTINE RESTIL(PATH, OUT) LOGICAL*1 PATH(100), OUT(100), TOKEN(40), TMP(5) INTEGER I, JUNK, KEY, J, K INTEGER GTFTOK, EQUAL LOGICAL*1 STR(42) DATA STR(1)/98/,STR(2)/105/,STR(3)/110/,STR(4)/1/,STR(5)/117/,STR( *6)/115/,STR(7)/114/,STR(8)/2/,STR(9)/116/,STR(10)/109/,STR(11)/112 */,STR(12)/3/,STR(13)/108/,STR(14)/112/,STR(15)/114/,STR(16)/4/,STR *(17)/109/,STR(18)/115/,STR(19)/103/,STR(20)/5/,STR(21)/109/,STR(22 *)/97/,STR(23)/105/,STR(24)/108/,STR(25)/5/,STR(26)/109/,STR(27)/97 */,STR(28)/110/,STR(29)/6/,STR(30)/115/,STR(31)/114/,STR(32)/99/,ST *R(33)/7/,STR(34)/105/,STR(35)/110/,STR(36)/99/,STR(37)/8/,STR(38)/ *108/,STR(39)/105/,STR(40)/98/,STR(41)/9/,STR(42)/0/ CALL STRCPY(PATH, OUT) IF (.NOT.(PATH(1) .EQ. 126))GOTO 23198 I = 2 TOKEN(1) = 0 KEY = 0 IF (.NOT.(PATH(2) .NE. 47))GOTO 23200 JUNK = GTFTOK(PATH, I, TOKEN) CALL FOLD(TOKEN) KEY = -3 J=1 23202 IF (.NOT.(STR(J) .NE. 0))GOTO 23204 K=1 23205 IF (.NOT.(STR(J) .GE. 32))GOTO 23207 TMP(K) = STR(J) 23206 K=K+1 J=J+1 GOTO 23205 23207 CONTINUE TMP(K) = 0 IF (.NOT.(EQUAL(TOKEN, TMP) .EQ. 1))GOTO 23208 KEY = STR(J) GOTO 23204 23208 CONTINUE 23203 J=J+1 GOTO 23202 23204 CONTINUE 23200 CONTINUE IF (.NOT.(KEY .NE. -3))GOTO 23210 IF (.NOT.(KEY .EQ. 0))GOTO 23212 CALL HOMDIR(TOKEN, 6) GOTO 23213 23212 CONTINUE CALL GETDIR(KEY, 6, TOKEN) 23213 CONTINUE J = 1 CALL STCOPY(TOKEN, 1, OUT, J) IF (.NOT.(PATH(I) .EQ. 47))GOTO 23214 I = I + 1 23214 CONTINUE CALL STRCPY(PATH(I), OUT(J)) 23210 CONTINUE 23198 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 23216 CALL ADRFIL(NAME) CALL TBINIT(2000) IF (.NOT.(OPENF(NAME, 1, FDB) .EQ. -3))GOTO 23218 CALL REMARK(23Hcannot open user's file) GOTO 23219 23218 CONTINUE 23220 IF (.NOT.(GETS(FDB, BUF, 100) .NE. -1))GOTO 23221 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 23220 23221 CONTINUE CALL CLOSEF(FDB) 23219 CONTINUE INIT = 0 23216 CONTINUE IF (.NOT.(TBLOOK(UIC, NAME) .EQ. 0))GOTO 23222 CALL STRCPY(UIC, NAME) 23222 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, INDEXS, 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 23224 INIT = 0 CALL GETPRI(PRIO) 23224 CONTINUE CALL STRCPY(IMAGE, SPIMG) CALL FOLD(SPIMG) IF (.NOT.(EQUAL(SPIMG, LOCAL) .EQ. 0))GOTO 23226 IF (.NOT.(LOCCOM(IMAGE, SPATH, SPATH, SPIMG) .NE. 60))GOTO 23228 SSPAWN=(-3) RETURN 23228 CONTINUE 23226 CONTINUE IF (.NOT.(CLOWER(WAIT) .EQ. 98))GOTO 23230 SSPAWN=(BCKSPN(SPIMG, ARGS, PID)) RETURN 23230 CONTINUE OPNOUT = -3 OPNERR = -3 OUTMOD = -3 IF (.NOT.(EQUAL(SPIMG, LOCAL) .EQ. 1))GOTO 23232 CALL STRCPY(ARGS, MCRLIN) GOTO 23233 23232 CONTINUE SSPAWN = -3 IF (.NOT.(GENPNM(PID) .EQ. -3))GOTO 23234 RETURN 23234 CONTINUE CALL STRCPY(ARGS, ARGBUF) OUTMOD = GTMODE(2) IF (.NOT.(INDEXS(ARGBUF, BLKGTR) .EQ. 0))GOTO 23236 IF (.NOT.(FILNFO(2, OUTFIL, JUNK) .EQ. 0))GOTO 23238 OPNOUT = 2 CALL APPRED(2, 62, OUTFIL, ARGBUF) 23238 CONTINUE 23236 CONTINUE I = INDEXS(ARGBUF, BLKQMK) IF (.NOT.(I .NE. 0))GOTO 23240 C = ARGBUF(I+2) IF (.NOT.(C .EQ. 32 .OR. C .EQ. 9 .OR. C .EQ. 0))GOTO 23242 I = 0 23242 CONTINUE 23240 CONTINUE IF (.NOT.(I .EQ. 0))GOTO 23244 IF (.NOT.(FILNFO(3, ERRFIL, JUNK) .EQ. 0))GOTO 23246 OPNERR = 3 CALL APPRED(3, 63, ERRFIL, ARGBUF) 23246 CONTINUE 23244 CONTINUE IF (.NOT.(SNDARG(ARGBUF, PID) .NE. 1))GOTO 23248 CALL SRESET(OPNOUT, OUTFIL) IF (.NOT.(OUTMOD .NE. -3))GOTO 23250 JUNK = STMODE(2, OUTMOD) 23250 CONTINUE CALL SRESET(OPNERR, ERRFIL) RETURN 23248 CONTINUE CALL SPRINT(MCRLIN, FMTSTR, SPIMG, PID, PRIO) 23233 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 23252 JUNK = STMODE(2, OUTMOD) 23252 CONTINUE CALL SRESET(OPNERR, ERRFIL) IF (.NOT.(STATUS .NE. 0 .AND. STATUS .NE. 1))GOTO 23254 SSPAWN = -10 GOTO 23255 23254 CONTINUE SSPAWN = 0 23255 CONTINUE RETURN END SUBROUTINE SRESET(INT, FILE) LOGICAL*1 FILE(100) INTEGER INT, JUNK INTEGER ASSNGI IF (.NOT.(INT .NE. -3))GOTO 23256 JUNK = ASSNGI(FILE, 4, INT) 23256 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 23258 IF (.NOT.(I .LE. 12))GOTO 23260 IF (.NOT.(EQUAL(BUF, MONTH(1, I)) .EQ. 1))GOTO 23261 GOTO 23260 23261 CONTINUE 23259 I=I+1 GOTO 23258 23260 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 23263 IF (.NOT.(I .LE. N))GOTO 23265 OUT(J) = IN(I) J = J + 1 23264 I=I+1 GOTO 23263 23265 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 23266 IF (.NOT.(ROOT(I) .NE. 0))GOTO 23268 CTYPE = TYPE(ROOT(I)) IF (.NOT.(CTYPE .EQ. 2 .OR. CTYPE .EQ. 1))GOTO 23269 NAME(J) = ROOT(I) J = J + 1 23269 CONTINUE 23267 I=I+1 GOTO 23266 23268 CONTINUE NAME(J) = 46 J = J + 1 I=1 23271 IF (.NOT.(SEED(I) .NE. 0 .AND. I .LE. 3))GOTO 23273 NAME(J) = SEED(I) J = J + 1 23272 I=I+1 GOTO 23271 23273 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 23274 TYPE = GETTYP(INT, TYPE) CALL GLOCNM(INT, OUTFIL) CALL FOLD(OUTFIL) 23274 CONTINUE FLFIND=(INT) RETURN END SUBROUTINE GTZONE(BUF) LOGICAL*1 BUF(100) INTEGER NOW(7) INTEGER DSTIME LOGICAL*1 TZONE(4) DATA TZONE(1)/80/,TZONE(2)/83/,TZONE(3)/84/,TZONE(4)/0/ BUF(1) = TZONE(1) CALL GETNOW(NOW) IF (.NOT.(DSTIME(NOW) .EQ. 1))GOTO 23276 BUF(2) = 68 GOTO 23277 23276 CONTINUE BUF(2) = 83 23277 CONTINUE BUF(3) = 84 BUF(4) = 0 CALL UPPER(BUF) RETURN END INTEGER FUNCTION TRMLST(USER, BUF) LOGICAL*1 USER(100), BUF(100) TRMLST=(0) RETURN END SUBROUTINE BRDCST(MESSAG, TERM) LOGICAL*1 MESSAG(100), TERM(100) RETURN END INTEGER FUNCTION CHMOD(FILE, PROT) LOGICAL*1 FILE(100) INTEGER PROT CHMOD=(-3) RETURN END SUBROUTINE FILSIZ(SIZE, BSIZE, CSIZE) INTEGER SIZE(4), BSIZE(2), CSIZE(2), TSIZE(2), DIF(2) BSIZE(1) = 0 BSIZE(2) = 0 23278 IF (.NOT.(.NOT.(SIZE(1) .LE. 0 .AND. SIZE(2) .LE. 0 .AND. SIZE(3) *.LE. 0)))GOTO 23279 IF (.NOT.(SIZE(3) .EQ. 0))GOTO 23280 IF (.NOT.(SIZE(2) .EQ. 0))GOTO 23282 SIZE(1) = SIZE(1) - 1 SIZE(2) = 256 23282 CONTINUE SIZE(2) = SIZE(2) - 1 SIZE(3) = 256 23280 CONTINUE BSIZE(2) = BSIZE(2) + 1 IF (.NOT.(BSIZE(2) .GE. 10000))GOTO 23284 BSIZE(1) = BSIZE(1) + 1 BSIZE(2) = 0 23284 CONTINUE SIZE(3) = SIZE(3) - 1 GOTO 23278 23279 CONTINUE BSIZE(2) = BSIZE(2) - 1 IF (.NOT.(BSIZE(2) .LT. 0))GOTO 23286 BSIZE(1) = BSIZE(1) - 1 BSIZE(2) = 9999 23286 CONTINUE CSIZE(1) = 0 CSIZE(2) = 0 CSIZE(2) = SIZE(4) TSIZE(1) = BSIZE(1) TSIZE(2) = BSIZE(2) DIF(1) = 0 DIF(2) = 0 DIF(2) = 512 23288 IF (.NOT.(.NOT.(TSIZE(1) .LE. 0 .AND. TSIZE(2) .LE. 0)))GOTO 23289 CSIZE(1) = CSIZE(1) + DIF(1) CSIZE(2) = CSIZE(2) + DIF(2) IF (.NOT.( CSIZE(2) .GE. 10000))GOTO 23290 CSIZE(1) = CSIZE(1) + 1 CSIZE(2) = CSIZE(2) - 10000 23290 CONTINUE TSIZE(2) = TSIZE(2) - 1 IF (.NOT.(TSIZE(2) .LT. 0))GOTO 23292 TSIZE(1) = TSIZE(1) - 1 TSIZE(2) = 9999 23292 CONTINUE GOTO 23288 23289 CONTINUE IF (.NOT.(SIZE(4) .GT. 0))GOTO 23294 BSIZE(2) = BSIZE(2) + 1 IF (.NOT.(BSIZE(2) .GE. 10000))GOTO 23296 BSIZE(1) = BSIZE(1) + 1 BSIZE(2) = 0 23296 CONTINUE 23294 CONTINUE RETURN END