PROGRAM PHASE1 BYTE LINE(136),BELL,LF,CR,STAR,BLANK,MINUS $, W1(10),W2(12),W3(5),W4(5),W5(5) INTEGER VBLANK(10), V(10) DATA MINUS /1H- / DATA BLANK /1H / DATA BELL,star/"007,1h*/ data lf,cr /"012,"015/ C--------------------------------------------------------- C C PURPOSE: C MAKE THE FILE CONSOLE.LOG READABLE C THIS IS ACHIEVED BY REJECTING LINES OF DATA C THAT WE ARE NOT INTERESTED IN I.E. DEV TIMESOUTS, C AND THEM MAKING WHAT IS LEFT MORE READABLE. C C--------------------------------------------------------- DATA IFLAG/14/ C C IFLAG MAY BE 13 DEPENDING ON THE FILE ATTRIBUTES. C THIS IS A NEW "OPTION" IN 3.2 AS DISCRIBED WITH THE C CARRIAGECONTROL OPTION. C OPEN(UNIT=1,TYPE='OLD',READONLY,NAME='CONSOLE.SYS') OPEN(UNIT=2,TYPE='NEW',NAME='PHASE1.DAT',DISPOSE='SAVE', $CARRIAGECONTROL='LIST') 1 READ(1,10,END=500) NQ,LINE 10 FORMAT(Q,136A1) c c-------------------------------------------------------------------- c reject lines with = # ^bell or * C THESE CHARACTERS COME FROM BRO:,QUE,DEVICE NOT READY ECT. C SOME USERS MAY USE 'BRO CO:' TO SAVE MESSAGES ABOUT JOB NUMBERS C IN THAT CASE YOU WILL WANT TO BRANCE ON A ^BELL TO CHECK IF C IT IS A JOB NUMBER AND SAVE THE JOB NUMBER INSTEAD OF /ALSO C THE LOGIN UIC. THE OTHER CHANGE NECESSARY WOULD BE TO NOT MAKE C A SINGLE NUMBER OUT OF THE UIC. C C c c-------------------------------------------------------------------- c DO 4 I=1,NQ IF(LINE(I) .EQ. STAR) GO TO 2 IF(LINE(I) .EQ. MINUS) GO TO 2 if(line(i) .eq. 1h= ) go to 2 if(line(i) .eq. 1h# ) go to 2 IF(LINE(I) .EQ. BELL ) GO TO 2 4 CONTINUE c c------------------------------------------------------- c replace ,,(,), with blanks c c------------------------------------------------------- DO 25 I=1,NQ ICR = I IF(LINE(I) .EQ.CR) GO TO 26 25 CONTINUE GO TO 27 26 LINE(ICR) = BLANK LINE(ICR+1) = BLANK 27 CONTINUE DO 19 I=1,NQ C C TEST FOR IMBEDED C if(line(i) .eq. lf ) line(i) = blank IF(LINE(I) .EQ. 1H[ .OR. LINE(I) .EQ. 1H] .OR. LINE(I) $ .EQ. 1H,) LINE(I) =BLANK 19 CONTINUE C WHILE I .LT. NQ DO IBLANK = 1 DO 45 IDEL=1,20 IF(IBLANK .EQ. 0) GO TO 50 IBLANK = 0 I = 0 31 I = I + 1 IF( LINE(I) .EQ. BLANK.AND. LINE(I+1) .EQ. BLANK) GO TO 35 GO TO 30 35 DO 29 II=I,NQ LINE(II) = LINE(II+1) 29 CONTINUE IBLANK = 1 C DECRAMENT RIGHT END OF LINE NQ = NQ -1 30 IF( I .LT. NQ) GO TO 31 C END DO C 45 CONTINUE 50 CONTINUE NBLANK = 1 C DO 60 J=8,NQ IF(LINE(J) .NE. BLANK) GO TO 60 NBLANK = NBLANK + 1 VBLANK(NBLANK) = J 60 CONTINUE C C CALCULATE WHERE EACH WORD IS ON THE LINE FOR FOMATTING C V(1) = VBLANK(2) -8 V(2)=VBLANK(2)-1 V(3)=VBLANK(4)+1 V(4)=VBLANK(5)-1 V(5)=VBLANK(5)+1 V(6)=VBLANK(6)-1 V(7)=VBLANK(6)+1 V(8)=VBLANK(7)-1 V(9)=VBLANK(7)+1 V(10)=NQ IF(LINE( 14 ) .NE. 1HO) GO TO 71 V(8) = NQ 71 CONTINUE C INITIALIZE ALL LOCATIONS BEFORE THE MOVE AND RIGHT C DO 66 I=1,10 W1(I)=BLANK W2(I)=BLANK IF (I .GE. 6 ) GO TO 66 W3(I)=BLANK W4(I)=BLANK W5(I)=BLANK 66 CONTINUE W2(11)=BLANK W2(12)=BLANK 750 CONTINUE CALL RIGHT (1,LINE,W1,V(1),V(2),10) IF(LINE( 14 ) .EQ. 1HI) CALL RIGHT (1,LINE,W2,V(3),V(4),12) CALL RIGHT (1,LINE,W3,V(5),V(6),5) CALL RIGHT (4,LINE,W4,V(7),V(8),5) CALL RIGHT (4,LINE,W5,V(9),NQ,5) C C WITH OUT THE EXTRA LINES THE GOOD DATA LOOKS LIKE THIS. C HOWEVER ([),(]),(,) WERE ALSO BLANKED OUT. C ONLY AN I FOR LOGIN OR O FOR LOGOUT WILL BE KEPT ALONG C WITH THE TIME UIC AND TTNUMBER. C C15:45:54 LOGIN USER WILEVY [4,3] 1 C15:48:35 LOGOUT USER [4,3] 1 C15:48:42 LOGIN USER WILEVY [4,3] 1 C15:48:54 LOGOUT USER [1,4] 1 C15:49:01 LOGIN USER WILEVY [4,3] 1 C16:09:59 LOGOUT USER [1,2] 1 C16:10:13 LOGIN USER WILEVY [4,3] 1 C16:26:11 LOGOUT USER [136,2] TT13: C16:46:45 LOGIN USER KNARR [100,21] TT13: WRITE(2,777)V 777 FORMAT(1X,10I5) IF(LINE( 14 ) .EQ. 1HI) WRITE(2,100)W1,W2,W3,W4,W5 IF(LINE( 14 ) .EQ. 1HO) WRITE(2,101) W1,W2,W3,W4 2 CONTINUE 100 FORMAT(10A1,' I'12A1,3X,3 (5A1)) 101 FORMAT( 10A1,' O'8X,12A1,2 (5A1)) GO TO 1 500 STOP END SUBROUTINE RIGHT(IFLAG,LINE,W,I1,I2,JMAX) C C THIS SUBROUTINE RIGHT JUSTIFIES THE DATA/NUMBERS IN A FIELD C RIGHT JUSTIFICATION IS NECESSARY TO READ DATA LATER. C JMAX IS A FLAG THAT IS NEEDED BECAUSE SOME OF THE FIELDS. C ARE DIFFERENT LENGTH. C BYTE LINE(2),W(2) C CHECK FOR SINGLE PASS DO LOOP C THIS CONDITION ALWAYS OCCURS FOR TT0:...TT7: C ----------------------------- IF (I1 .EQ. I2) GO TO 10 IF(IFLAG .LT. 4) GO TO 5 C GET RID OF : C : ARE LEFT OVER FROM TTN:. THE : IS AT THE RIGHT SIDE OF THE LINE C IF(LINE(I2) .EQ. 1H: ) I2 = I2 - 1 DO 6,I=I1,I2 6 IF(LINE( I ) .EQ. 1HT ) LINE ( I )= 1H 5 CONTINUE J = JMAX DO 1 I=I2,I1,-1 W(J) = LINE(I) J = J-1 1 CONTINUE RETURN 10 CONTINUE C MOVE SINGLE CHARACTER TO THE RIGHT SIDE OF THE LINE C THEN RETURN C W(JMAX) = LINE(I1) RETURN END