SUBROUTINE SCRATF (SEED, NAME) LOGICAL*1 SEED(100), NAME(100), TEMP(7) INTEGER I, J INTEGER INDEXS LOGICAL*1 JOBSTR(4) LOGICAL*1 ST001Z(3) DATA JOBSTR(1)/106/,JOBSTR(2)/111/,JOBSTR(3)/98/,JOBSTR(4)/0/ DATA ST001Z(1)/84/,ST001Z(2)/73/,ST001Z(3)/0/ CALL GETPNM(TEMP) IF (.NOT.(INDEXS(TEMP, JOBSTR) .NE. 1))GOTO 23000 CALL TRNDEV(ST001Z, 0, NAME) I = 1 CALL STCOPY(TEMP, 4, TEMP, I) CALL CHCOPY(NAME(1), TEMP, I) J=3 23002 IF (.NOT.(NAME(J) .NE. 58))GOTO 23004 CALL CHCOPY(NAME(J), TEMP, I) 23003 J=J+1 GOTO 23002 23004 CONTINUE 23000 CONTINUE CALL FGENR8(TEMP, SEED, NAME) RETURN END INTEGER FUNCTION SSPAWN(IMAGE, ARGS, PID, WAIT) LOGICAL*1 MCRLIN(80), IMAGE(100), ARGS(100), PID(100), WAIT LOGICAL*1 ARGBUF(256), OUTFIL(36), ERRFIL(36), C LOGICAL*1 CLOWER INTEGER MCR, SPDESC(5), STATUS INTEGER JUNK, OPNOUT, OPNERR, OUTMOD, I INTEGER EQUAL, LENGTH, TCSPWN INTEGER INDEXS, FILNFO, GTMODE LOGICAL*1 LOCAL(6) LOGICAL*1 BLKGTR(3) LOGICAL*1 BLKQMK(3) INTEGER I23024 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/ IF (.NOT.(CLOWER(WAIT) .NE. 119))GOTO 23005 SSPAWN=(-3) RETURN 23005 CONTINUE OPNOUT = -3 OPNERR = -3 OUTMOD = -3 CALL STRCPY(IMAGE, MCRLIN) CALL FOLD(MCRLIN) IF (.NOT.(EQUAL(MCRLIN, LOCAL) .EQ. 1))GOTO 23007 CALL STRCPY(ARGS, MCRLIN) MCR = 1 SPDESC(4) = 0 SPDESC(3) = 2 GOTO 23008 23007 CONTINUE MCRLIN(1) = 32 CALL STRCPY(IMAGE, MCRLIN(2)) MCR = 0 CALL STRCPY(ARGS, ARGBUF) OUTMOD = GTMODE(2) IF (.NOT.(INDEXS(ARGBUF, BLKGTR) .EQ. 0))GOTO 23009 IF (.NOT.(FILNFO(2, OUTFIL, JUNK) .EQ. 0))GOTO 23011 OPNOUT = 2 CALL APPRED(2, 62, OUTFIL, ARGBUF) 23011 CONTINUE 23009 CONTINUE I = INDEXS(ARGBUF, BLKQMK) IF (.NOT.(I .NE. 0))GOTO 23013 C = ARGBUF(I+2) IF (.NOT.(C .EQ. 32 .OR. C .EQ. 9 .OR. C .EQ. 0))GOTO 23015 I = 0 23015 CONTINUE 23013 CONTINUE IF (.NOT.(I .EQ. 0))GOTO 23017 IF (.NOT.(FILNFO(3, ERRFIL, JUNK) .EQ. 0))GOTO 23019 OPNERR = 3 CALL APPRED(3, 63, ERRFIL, ARGBUF) 23019 CONTINUE 23017 CONTINUE SPDESC(4) = LENGTH(ARGBUF) CALL GETADR(SPDESC(5), ARGBUF) SPDESC(3) = 0 23008 CONTINUE CALL UPPER(MCRLIN) SPDESC(1) = LENGTH(MCRLIN) CALL GETADR(SPDESC(2), MCRLIN) 23021 CONTINUE STATUS = TCSPWN(SPDESC) I23024=(SPDESC(3)) GOTO 23024 23026 CONTINUE SPDESC(3) = 1 GOTO 23025 23027 CONTINUE SPDESC(3) = 3 GOTO 23025 23028 CONTINUE MCR = 0 GOTO 23025 23024 CONTINUE IF (I23024.EQ.1)GOTO 23027 IF (I23024.EQ.2)GOTO 23026 GOTO 23028 23025 CONTINUE 23022 IF (.NOT.(MCR .EQ. 0 .OR. STATUS .NE. -3))GOTO 23021 23023 CONTINUE CALL SRESET(OPNOUT, OUTFIL) IF (.NOT.(OUTMOD .NE. -3))GOTO 23029 JUNK = STMODE(2, OUTMOD) 23029 CONTINUE CALL SRESET(OPNERR, ERRFIL) IF (.NOT.(STATUS .EQ. -1))GOTO 23031 STATUS = -10 23031 CONTINUE SSPAWN=(STATUS) RETURN END