SUBROUTINE RGROUT (LUNIT, NCOPY, LENP, FILE) C***************************************************************************** C C Description : Routine to open a new output stream, or to re-activate an C earlier opened output stream C Up to 4 output streams may simultaneously be open C C Arguments : LUNIT = INTEGER logical unit number (new/old) C NCOPY = INTEGER number of copies (minimum = 1) C In case of re-open, a non-zero value overrides C former setting C LENP = INTEGER physical page length C pos. - number of lines per physical page C 0 - hardware formfeed determines page length C -1 - value used as defined in RGR-library file C FILE = STRING containing the output filename: C [[ device [ uic ]] filename [.ext] (max. 31 chars.) C or in case of output to terminal or lineprinter: C devicename (e.g. KB: , TT: , TI: or LP: ) C (max. 31 characters) C This argument will be ignored in case of re-activate C C Author : F.A.Minkema C AKZO PHARMA, Oss Holland C dept. SDA C C Version : V2.0 Date : 10-jun-1983 C C Module name : RGROUT.FTN C C Package : TRAMP C C Compilation/Linking : FOR/F4P/TR:NONE RGROUT C C Updates : name version C C description : C C***************************************************************************** C BYTE DEVNAM,OFNTAB,SETPAG,SETSCR,DAT,TIM, 1 TEXREC,DATREC,RREC,SBUF,WPGREC COMMON/RGRCOM/NUNITR,NUNITS,NOS,MNOS,NUCTAB(4,4), 1 MAXBUF,NFRXR,LENREC,NPAG,NWPGR,NWPGC,NFXHL, 2 NRNXRE,NRFFTR,NRLFTR,NRFRTR,NRLRTR,NRFRDR,NRLRDR, 3 IPHLEN,LOGLEN,LOGWID,NRFLDW,NRLLDW,NRDATE,NCDATE, 4 NRTIME,NCTIME,NRPAGE,NCPAGE,NRRELS,NCRELS, 5 DEVNAM(14),SETPAG(6),SETSCR(6),DAT(10),TIM(10), 6 OFNTAB(32,4),TEXREC(40),DATREC(40),RREC(40), 7 SBUF(120),WPGREC(133) C BYTE FILE(1),PROG(8),SCOPE(4,3) DATA PROG /'R','G','R','O','U','T',2*0/, 1 SCOPE /'K','B',':',0,'T','T',':',0,'T','I',':',0/ C C C search for allready used C CALL SCVTLU(FILE) IF (NOS.EQ.0) GOTO 30 DO 20 I=1,NOS IF (ISCOMP(FILE,OFNTAB(1,I)).EQ.0 1 .OR. LUNIT.EQ.NUCTAB(1,I)) 10,20,20 C THEN 10 NUCTAB(4,I)=1 IF (NCOPY.GT.0) NUCTAB(2,I)=NCOPY GOTO 99 C ENDIF 20 CONTINUE C C open new stream and add to table C 30 IF (NOS.GE.MNOS) GOTO 9010 NOS=NOS+1 CALL SCOPY(FILE,OFNTAB(1,NOS),31) OPEN (UNIT=LUNIT,NAME=OFNTAB(1,NOS),TYPE='NEW', 1 ACCESS='SEQUENTIAL',CARRIAGECONTROL='FORTRAN',ERR=9020) NUCTAB(1,NOS)=LUNIT NUCTAB(2,NOS)=NCOPY IF (NCOPY.LE.0) NUCTAB(2,NOS)=1 NUCTAB(3,NOS)=LENP DO 40 I=1,3 ! output on scope terminal IF (INDEX(FILE,SCOPE(1,I)).NE.0) NUCTAB(3,NOS)=-2 40 CONTINUE NUCTAB(4,NOS)=1 ! file open C C go back to calling routine C 99 RETURN C C errors C 9000 CALL FATAL(PROG,'Can''t re-open output stream') 9010 CALL FATAL(PROG,'Maximum number of output streams exceeded') 9020 CALL FATAL(PROG,'Can''t open output stream') END