File OUTLAY.FT (FORTRAN source file)

Directory of image this file is from
This file as a plain text file

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 <FILE OR UNFORMATED> C IST= C 1 ON BUFFER FULL IN FILE C 2 ON INPUT FILE END <BUT MAYBE MIORE TO COME> 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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search