SUBROUTINE OUTPUT(NBYTES,ITYPE,BUFFER,ISIZE,DEV) C C C NBYTES: TOTAL NO. BYTES TO BE PROCESSED C ITYPE: 0=OCTAL C 1=INTEGER C 2=REAL C 3=ASCII C 4=RADX 50 C NOTE: QUETAB(3) CAN BE USED AS A TYPE IDENTIFIER C BUFFER: INPUT BUFFER C ISIZE: SIZE IN WORDS C DEV: 1=TERMINAL C 2=PRINTER C 3=FILE SPEC[SDT.DAT] C 4=GOULD C NOTE: QUETAB(4) CAN BE USED AS A DEV INDICATOR C C C INTEGER NBYTES,ITYPE,ISIZE,BUFFER(4),DEV INTEGER OUT(50),BUF2(4),CLSFLG BYTE OUT2(100),MESAGE(216) REAL REALS(2) COMMON/MESBUF/MESAGE EQUIVALENCE (REALS,BUF2) EQUIVALENCE (OUT,OUT2) CLSFLG=.FALSE. GOTO(100,200,300,400),ITYPE INDIV=7 IDV=2 GOTO500 100 INDIV=6 IDV=2 GOTO500 200 INDIV=13 IDV=4 GOTO500 300 INDIV=3 IDV=2 GOTO500 400 INDIV=4 A=NBYTES NBYTES=INT(A*3/2) IDV=3 500 NENT=NBYTES/IDV A=NENT NOLINE=INT(A*INDIV/80) A=(80/INDIV) NOEXT=NENT-(NOLINE*INT(A)) NOEPL=INT(A) GOTO(900,700,700,700),DEV GOTO900 700 OPEN(UNIT=7,NAME='SDT.DAT',ACCESS='SEQUENTIAL',TYPE='NEW',ERR=800) GOTO900 800 IF(CLSFLG.EQ..TRUE.)GOTO850 CLSFLG=.TRUE. CLOSE(UNIT=7) GOTO700 850 ENCODE(84,852,MESAGE) 852 FORMAT(' *** OPEN ERROR FILE SDT.DAT, RE: WAS NOT PROPERLY', + ' CLOSED AFTER PREVIOUS USEAGE ***') RETURN 900 GOTO(1000,2000,3000,4000),ITYPE I=1 IF(DEV)902,902,905 902 IF(NOLINE.GT.0) + ENCODE(NOLINE*NOEPL*7,910,MESAGE) + (BUFFER(I),I=1,NOLINE*NOEPL) IF(NOEXT.GT.0) + ENCODE(NOEXT*7,920,MESAGE(74)) + (BUFFER(II),II=I,I-1+NOEXT) GOTO5000 905 IF(NOLINE.GT.0) + WRITE(7,910)(BUFFER(I),I=1,NOLINE*NOEPL) 910 FORMAT(((1X,O6)/)) IF(NOEXT.GT.0) + WRITE(7,920)(BUFFER(II),II=I,I-1+NOEXT) 920 FORMAT((1X,O6)) GOTO5000 1000 I=1 IF(DEV)1002,1002,1005 1002 IF(NOLINE.GT.0) + ENCODE(NOLINE*NOEPL*6,1010,MESAGE)(BUFFER(I),I=1,NOLINE*NOEPL) IF(NOEXT.GT.0) + ENCODE(NOEXT*6,1020,MESAGE(74))(BUFFER(II),II=I,I-1+NOEXT) GOTO5000 1005 IF(NOLINE.GT.0) + WRITE(7,1010)(BUFFER(I),I=1,NOLINE*NOEPL) 1010 FORMAT(((1X,I5)/)) IF(NOEXT.GT.0) + WRITE(7,1020)(BUFFER(II),II=I,I-1+NOEXT) 1020 FORMAT((1X,I5)) GOTO5000 2000 I=1 CALL STRMOV(BUFFER,1,8,BUF2,1) IF(DEV)2002,2002,2005 2002 IF(NOLINE.GT.0) + ENCODE(NOLINE*NOEPL*13,2010,MESAGE)(REALS(I),I=1,NOLINE*NOEPL) IF(NOEXT.GT.0) + ENCODE(NOEXT*13,2020,MESAGE(74))(REALS(II),II=I,I-1+NOEXT) GOTO5000 2005 IF(NOLINE.GT.0) + WRITE(7,2010)(REALS(I),I=1,NOLINE*EPL) 2010 FORMAT(((1X,F12.3)/)) IF(NOEXT.GT.0) + WRITE(7,2020)(REALS(II),II=I,I-1+NOEXT) 2020 FORMAT((1X,F12.3)) GOTO5000 3000 I=1 IF(DEV)3002,3002,3005 3002 IF(NOLINE.GT.0) + ENCODE(NOLINE*NOEPL*3,3010,MESAGE)(BUFFER(I),I=1,NOLINE*NOEPL) IF(NOEXT.GT.0) + ENCODE(NOEXT*3,3020,MESAGE(74))(BUFFER(II),II=I,I-1+NOEXT) GOTO5000 3005 IF(NOLINE.GT.0) + WRITE(7,3010)(BUFFER(I),I=1,NOLINE*NOEPL) 3010 FORMAT(((1X,A2)/)) IF(NOEXT.GT.0) + WRITE(7,3020)(BUFFER(II),II=I,I-1+NOEXT) 3020 FORMAT((1X,A2)) GOTO5000 4000 I=1 CALL R50ASC(12,BUFFER,OUT) IF(DEV)4002,4002,4005 4002 IF(NOLINE.GT.0) + ENCODE(NOLINE*NOEPL*4,4010,MESAGE)(OUT2(I),OUT2(I+1),OUT2(I+2) + ,I=1,NOLINE*NOEPL*3,3) IF(NOEXT.GT.0) + ENCODE(NOEPL*4,4020,MESAGE(74))(OUT2(II),OUT2(II+1),OUT2(II+2) + ,II=I,I-1+NOEXT*3,3) GOTO5000 4005 IF(NOLINE.GT.0) + WRITE(7,4010)(OUT2(I),OUT2(I+1),OUT2(I+2) + ,I=1,NOLINE*NOEPL*3,3) 4010 FORMAT(((1X,3A1)/)) IF(NOEXT.GT.0) + WRITE(7,4020)(OUT2(II),OUT2(II+1),OUT2(II+2) + ,II=I,I-1+NOEXT*3,3) 4020 FORMAT((1X,3A1)) 5000 GOTO(6000,5010,6000,5030),DEV GOTO6000 5010 CALL PRTNOW(7,'LP') GOTO6000 5030 CALL PRTNOW(7,'GD') 6000 GOTO(7000,7000,6020,7000),DEV GOTO7000 6020 CLOSE(UNIT=7) ENCODE(42,6025,MESAGE(146)) 6025 FORMAT(' DATA SAVED IN FILE SDT.DAT ON DEFAULT UIC') 7000 RETURN END