INTEGER FUNCTION RATOPEN (NAME, MODE) INTEGER NAME(10000) INTEGER MODE COMMON /CHANNEL/ CHANNEL(0:15), APOS, VPOS, LINEBUF(68,0:15), NC(0 *:15), IC(0:15), MD(0:15) INTEGER CHANNEL INTEGER APOS INTEGER VPOS INTEGER LINEBUF INTEGER NC INTEGER IC INTEGER MD INTEGER STRING(40), CH I = 1 23000 IF(.NOT.(NAME(I) .EQ. 32))GOTO 23002 23001 I = I+1 GOTO 23000 23002 CONTINUE J = 1 23003 IF(.NOT.(NAME(I) .NE. 10002))GOTO 23005 BYTE(STRING,J) = NAME(I) J = J+1 23004 I = I+1 GOTO 23003 23005 CONTINUE BYTE(STRING,J) = 0 CH = 0 23006 IF(.NOT.(CH .LE. 15))GOTO 23008 IF(.NOT.(CHANNEL(CH) .EQ. 10001))GOTO 23009 GOTO 23008 23009 CONTINUE 23007 CH = CH+1 GOTO 23006 23008 CONTINUE IF(.NOT.(CH .GT. 15))GOTO 23011 IER = 10001 GOTO 23012 23011 CONTINUE IF(.NOT.(MODE .EQ. 0))GOTO 23013 CALL OPEN (CH, STRING, 1, IER) GOTO 23014 23013 CONTINUE IF(.NOT.(MODE .EQ. 1 .OR. MODE .EQ. 2))GOTO 23015 CALL CFILW (STRING, 2, IER) CALL OPEN (CH, STRING, 3, IER) 23015 CONTINUE 23014 CONTINUE 23012 CONTINUE IF(.NOT.(IER .NE. 1))GOTO 23017 WRITE (2, 1) IER, CH, MODE, STRING(1) 1 FORMAT(" open error=",I5,", ch=",I2, ", mode=",I2,", file=",S20) CH = 10001 GOTO 23018 23017 CONTINUE CHANNEL(CH) = MODE 23018 CONTINUE RATOPEN=(CH) RETURN END