C ***OUTLAY*** C 73-11-27 C UNIT NUMBERS C OUTPUT FILE 5 C LISTS > 3 LINES UNIT 3 C TTY INPUT OUTPUT UNIT 4 C OTHER INPUT UNIT NUMBERS 6-9 CAN USED DIMENSION V(12),IG(100) DIMENSION X(100,10),RUBRIK(3),TEXT(100,3) 1910 FORMAT(' FILE CONTAINS MORE GROUPS THAN INPUT', 1/'I WILL IGNORE EXXESSIVE') 2010 FORMAT(2I3,10F10.0) 2000 FORMAT(F5.0,10F10.0) 1900 FORMAT(' TOTAL ',I5,' ROWS',/,' I WILL CALL OS/8 MONITOR') 995 FORMAT(' WRONG !') 1950 FORMAT(' ENTER GROUP NR AND X VALUES',' END WITH BLANK LINE') 1800 FORMAT(' MORE INPUT ? [TTY=4;OTHERS STATE UNIT NR] ',$) 1700 FORMAT(I3,(7E11.4)) 1600 FORMAT(' INPUT FILE END',/,I4,' ROWS TOTAL',I6,' ROWS IN BUFFER') 1500 FORMAT(' ENTER CORRECT VALUES FINISH WITH BLANK LINE') 1400 FORMAT(' ANY ERRORS ?<0/1> ',$) 1320 FORMAT(I4,I3,10G12.4) 1300 FORMAT(I4,I3,9F7.2,/,1H ,2F10.2) 1350 FORMAT(' LIST ?<0/1> ',$) 1200 FORMAT(' CURRENT BUFFER FULL [=',I4,' ROWS]') 1000 FORMAT(3A6) 1201 FORMAT(A3) 1002 FORMAT(' INPUT FILE UNIT NO <0 IF NONE> ? ',$) 1100 FORMAT(3I3) 1004 FORMAT (' UNIT ' $) 1001 FORMAT(' WAIT') 990 FORMAT(' NOTE !!'/' YES(JA) =1 (>1)',/ 1,' NO(NEJ) =0 (BLANK LINE)') 901 FORMAT('0FIRST STATE NO OF GROUPS AND NO OF COLUMNS',/ 2,' THEN 1 MAIN HEADING AND ONE HEADING FOR EACH GROUP ON 3 SEPERATE LINES') 900 FORMAT(' HEADINGS & GROUPS FROM TELETYPE? '$) C INITIALIZING READING NK FROM TTY OR FILE DATA MAXR/100/ INDEV=4 3 WRITE(4,990) WRITE(4,900) READ(4,1700)K IF(K.EQ.0)GOTO 6 7 WRITE(4,901) K=4 GOTO 1 6 WRITE(4,1004) READ(4,1320)INDEV IF(INDEV.LE.5)GOTO 3 1 READ(INDEV,1100)NG,NT IF(NG.LE.MAXR.AND.NT.LE.10)GOTO 8 WRITE(4,995) GOTO 1 C READING HEADINGS 8 READ(INDEV,1000)(RUBRIK(I),I=1,3) DO 10 I=1,NG 10 READ(INDEV,1000)(TEXT(I,J),J=1,3) REWIND INDEV IST=1 NCUR=0 NTOT=0 WRITE(4,1001) WRITE(5,1100)NG,NT WRITE(5,1000)(RUBRIK(I),I=1,3) DO 12 I =1,NG 12 WRITE(5,1000)(TEXT(I,J),J=1,3) C NOW HANDLE ANY POSSIBLE INPUT FILE 15 WRITE(4,1002) READ(4,1100) INDEV IF(INDEV.LE.5)GOTO 100 WRITE(4,1001) READ(INDEV,1100)NGF,NTF IF(NGF.GT.NG)WRITE(4,1910) K=NGF+1 READ(INDEV,1201)(V(I),I=1,K) 40 READ(INDEV,1700)I,(V(J),J=1,NT) IF(I.LE.0)GOTO 90 IF(I.GT.NG)GOTO 40 NTOT=NTOT+1 NCUR=NCUR+1 DO 25 J=1,NTF 25 X(NCUR,J)=V(J) NTT=NTF+1 DO 27 J=NTT,NT 27 X(NCUR,J)=0 IG(NCUR)=I IF(NCUR.LT.MAXR)GOTO 40 200 IST=2 201 WRITE(4,1200)NCUR C WE GET HERE C 1 ON FULL BUFFER AND 2 ON INPUT END C IST= C 1 ON BUFFER FULL IN FILE C 2 ON INPUT FILE END C 3 ON UNFORMATED INPUT END C FIRST HANDLE LISTS C LISTS LONGER THAN 3 LINES TO UNIT 3 C DEFAULTS FOR LIST ARE FROM 1 TO NCUR 205 WRITE(4,1350) READ(4,1100)K,L IF(K.EQ.0)GOTO 300 IF(L.EQ.0)L=NCUR IF((L-K).GT.2)GOTO230 DO 250 I=K,L 250 WRITE(4,1300)I,IG(I),(X(I,J),J=1,NT) GOTO 300 230 DO 235 I=K,L 235 WRITE(3,1320)I,IG(I),(X(I,J),J=1,NT) C NOW HANDLE ANY ERRORS IN DATA 300 WRITE(4,1400) READ(4,1100)I IF(I.EQ.0)GOTO 400 WRITE(4,1500) 315 READ(4,2010)I,K,(V(J),J=1,NT) IF(I.LE.0)GOTO 205 IF(K.LE.NCUR.AND.K.GT.0)GOTO 325 WRITE(4,995) GO TO 315 325 IG(I)=K DO 330 J=1,NT 330 X(I,J)=V(J) GO TO 315 90 J=NTOT WRITE(4,1600)J,NCUR IST=1 GO TO 205 C ON NO ERRORS DATA IS WRITTEN TO FILE UNIT 5 400 WRITE(4,1001) DO 410 I=1,NCUR 410 WRITE(5,1700)IG(I),(X(I,J),J=1,NT) NCUR=0 99 GOTO(15,40,100),IST C THIS HANDLES THE UNFORMATED INPUT C THIS MUCH BE DONE HERE FOR TWO REASONS C 1 NO HEADINGS ARE INPUT HERE C 2 THE FILE FORMAT REQUIRES 2 LINES WHEN NK>7 WHICH IS A NUSIANSE C FRO KEYBOARD 100 IF(INDEV.GT.5)GOTO 115 INDEV=4 WRITE(4,1800) IST=3 READ(4,1100)INDEV IF(INDEV.LE.3)GOTO 910 IF(INDEV.LE.5)GOTO 107 WRITE(4,1001) GOTO 115 107 WRITE(4,1950) 115 READ(INDEV,2000)Y,(V(J),J=1,NT) I=Y C THIS CONSTRUCTION GIVES A CHANCE TO DETECT C MISSING GROUP NUMBERS IF(I.NE.0)GOTO 150 120 IF(INDEV.GT.5)WRITE(4,1600)NTOT,NCUR INDEV=1 IST=3 GOTO 205 150 IF(I.LE.NG.AND.I.GT.0.AND.I.EQ.Y)GOTO 125 WRITE(4,995) IF(INDEV.GT.5)WRITE(4,1300)NCUR,I,Y,(V(I),I=1,NT) GO TO 115 125 NCUR=NCUR+1 NTOT=NTOT+1 IG(NCUR)=I DO 160 I=1,NT 160 X(NCUR,I)=V(I) IF(NCUR.GE.100)GOTO 201 GOTO 115 C END RUTINE 910 WRITE(4,1001) IF(NCUR.EQ.0)GOTO 925 DO 920 I=1,NCUR 920 WRITE(5,1700)IG(I),(X(I,J),J=1,NT) 925 I=0 930 WRITE(5,1700)I,(V(J),J=1,NT) WRITE(4,1900)NTOT CALL EXIT END IG(I),(X(I,J),J=1,NT) C NOW HANDLE ANY ERRORS IN DATA 300 WRITE(4,1400) READ(4,1100)I IF(I.EQ.0)GOTO 400 WRITE(4,1500) 315 READ(4,2010)