FTN4
      PROGRAM CPLOT (3,99),92082-16009 REV.2001 800203
C 
C 
C 
C 
C     DATE: 10-14-79
C     NAME: CPLOT 
C     SOURCE: 92082-18009 
C     RELOC:  92082-16009 
C     PGMR:  C.M.M. 
C 
C  ***************************************************************
C  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  ALL RIGHTS     *
C  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
C  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
C  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
C  ***************************************************************
C 
C 
C 
C 
C 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C  PSUEDO COMMON DECLARATIONS FOR THE IPRNT ROUTINE                    C
C                                                                    C
      INTEGER LINENO,PBUF,TAPE,PR,OP,NBIN,ISTUDY(16),ICOME(18)
      INTEGER LOW,HIGH,INCR,TITLE,PAGE,BASE,SEGMID,INAME(3) 
      INTEGER IFILE(20),IPBUF(10),IBUF10(10)
      REAL BCNT,RCNT,MISS,TA
      DIMENSION IX(76),PBUF(25),TA(6),TITLE(40),IYES(6) 
C                                                                    C
C END OF COMMON DECLARATIONS                                         C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER BUF(129),K1,K2,I,J,TIBUF(40),IDCB(144),IBUF(1024) 
      INTEGER IGRATE(50),CMD,PARMS(5) 
      INTEGER TAPE,PR,OP,RLEN 
      INTEGER ITITLE(40),HTITL1(40),HTITL2(40)
      REAL T1,BIN(50),LOGT,TEMP 
      LOGICAL LOCF,APOSN,READF,OPEN 
      INTEGER YESNO 
C 
C 
C 
C 
      EQUIVALENCE(IX( 1),LINENO)
      EQUIVALENCE(IX( 2),PBUF(1)) 
      EQUIVALENCE(IX(27),TAPE)
      EQUIVALENCE(IX(28),PR)
      EQUIVALENCE(IX(29),OP)
      EQUIVALENCE(IX(30),NBIN)
      EQUIVALENCE(IX(31),PAGE)
      EQUIVALENCE(IX(32),BASE)
      EQUIVALENCE(IX(33),TA(1)) 
      EQUIVALENCE(IX(45),HIGH)
      EQUIVALENCE(IX(46),LOW) 
      EQUIVALENCE(IX(47),INCR)
      EQUIVALENCE(IX(48),RCNT)
      EQUIVALENCE(IX(50),MISS)
      EQUIVALENCE(IX(52),BCNT)
      EQUIVALENCE(IX(54),TITLE(1))
C 
C 
C 
C 
      LOGICAL IEXIT,ILOGIT
      DATA ITITLE 
     1 /2H* ,2H I,2HNT,2HEG,2HRA,2HL ,2HOF,2H F,2HRE,2HQU,
     2  2HEN,2HCY,2H D,2HIS,2HTR,2HIB,2HUT,2HIO,2HN ,2H *,
     3  2H  ,2H  ,2HPE,2HRC,2HEN,2HT ,2HOF,2H S,2HAM,2HPL,
     4  2HE ,2HVS,2H. ,2HP-,2HRE,2HGI,2HST,2HER,2H  ,2H  /
      DATA HTITL1 
     1 /2H  ,2H *,2H  ,2HHI,2HST,2HOG,2HRA,2HM ,2HOF,2H P,
     2  2H-R,2HEG,2HIS,2HTE,2HR ,2HUS,2HAG,2HE ,2H *,2H  ,
     3  2H  ,2H  ,2H  ,2H  ,2H (,2HLO,2HGA,2HRI,2HTH,2HMI,
     4  2HC ,2HSC,2HAL,2HE),2H  ,2H  ,2H  ,2H  ,2H  ,2H  /
      DATA HTITL2 
     1 /2H  ,2H *,2H  ,2HHI,2HST,2HOG,2HRA,2HM ,2HOF,2H P,
     2  2H-R,2HEG,2HIS,2HTE,2HR ,2HUS,2HAG,2HE ,2H *,2H  ,
     3  2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H(L,2HIN,2HEA,2HR ,
     4  2HSC,2HAL,2HE),2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  /
C 
      DATA ISTUDY/2HAN,2HAL,2HYS,2HIS,2H O,2HF ,2H  ,2H  ,2H  , 
     &            2HNO,2HW ,2HUN,2HDE,2HR ,2HWA,2HY./ 
C 
      DATA ICOME /2HRE,2HSU,2HLT,2HS ,2HNO,2HW ,2HCO,2HMI,2HNG, 
     &            2H U,2HP ,2HON,2H P,2HRI,2HNT,2HER,2H. /
C 
      DATA IYES/2HYE,2HS ,2HOR,2H N,2HO ,2H?_/
      DATA TIBUF/2HPR,2HOG,2HRA,2HM ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  , 
     &           2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  , 
     &           2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  , 
     &           2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  ,2H  / 
C 
C                   GET THE LISTING PARAMETERS
C 
C 
C 
C 
      RLEN = 128
      OP = LOGLU(LU) + 400B 
      CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,47HTHE RTE PROFILE MONITOR  -  GRAPHICS SECTION !!,
     &-47)
      CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,46HENTER ' EX ' AT ANY TIME TO EXIT THIS PROGRAM., 
     &-46)
      CALL REIO(2,OP,2H  ,1)
C 
C 
C                   GET THE LIST DEVICE 
C 
C 
1     IONE = 1
      CALL REIO(2,OP,22HENTER LIST DEVICE LU _,-22) 
      CALL REIO(1,OP,IFILE,-40) 
      CALL ABREG(IA,IB) 
      CALL NAMR(IPBUF,IFILE,IB,IONE)
      IF(IEXIT(IPBUF)) GO TO 9999 
      IF(IAND(IPBUF(4),3) .NE.1) GO TO 2
      PR = IPBUF
      IF(LUTRU(IPBUF) .GT. 0) GO TO 3 
C 
C                   ILLEGAL LU
C 
2     CALL REIO(2,OP,12HILLEGAL LU !,-12) 
      GO TO 1 
C 
C 
C 
C                   NOW THE DATA FILE NAMR
C 
C 
C 
3     IONE = 1
      CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,22HENTER DATA FILE NAME _,-22) 
      CALL REIO(1,OP,IFILE,-40) 
      CALL ABREG(IA,IB) 
      CALL NAMR(IPBUF,IFILE,IB,IONE)
      IF((IEXIT(IPBUF)) .AND. (IPBUF(2) .EQ. 2H  )) GO TO 9999
      IF(IAND(IPBUF(4),3) .NE. 3) GO TO 3 
C 
C 
C                   OPEN THE DATA FILE & READ 1ST RECORD
C 
C 
      IF( OPEN(IDCB,IER,IPBUF,0,IPBUF(5),IPBUF(6))) 
     & CALL FMPER(IER,IPBUF,OP) 
      IF(IER .LT.0) GO TO 3 
C 
C 
      DO 66 KK = 0,7
      IF(READF(IDCB,IER,IBUF(1+KK*128),129,IRLEN))
     &CALL FMPER(IER,IPBUF,OP)
      IF(IER .LT.0) GO TO 9999
C 
C 
C                   IS THIS A REAL DATA FILE OR IS HE 
C                             CONFUSED. 
C 
C 
      IF(IRLEN .EQ. 128) GO TO 66 
      CALL REIO(2,OP,26HINCORRECT FILE FORMAT !!! ,-26) 
      CALL CLOSE(IDCB,IER)
      CALL REIO(2,OP,2H  ,1)
      GO TO 3 
66    CONTINUE
C 
C 
C                   SAVE CURRENT POSITION IN FILE 
C 
C 
      IF(LOCF(IDCB,IER,IRECX,IRBX,IOFFX)) 
     &CALL FMPER(IER,IPBUF,OP)
      IF(IER .LT. 0) GO TO 9999 
C 
C 
C 
C 
C                   SEE IF THEY WANT LOG PLOTS & BIN DUMPS
C 
C 
C 
C 
11    CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,74HDO YOU WANT LOGARITHMIC PLOTS & BIN DUMPS AS WEL
     &L AS THE STANDARD GRAPHS ?,-74) 
4     CALL REIO(2,OP,IYES, 6) 
      CALL REIO(1,OP,IFILE,1) 
      IF(IEXIT(IFILE)) GO TO 9999 
      IF(YESNO(IFILE) .EQ. 0) GO TO 4 
      ILOGIT = .FALSE.
      IF(IFILE .EQ.2HYE) ILOGIT = .TRUE.
C 
C 
C 
C 
C 
C 
C 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                                                                      C
C          OK EVERY THING IS SET UP. LETS EXAMINE THE HEADER           C
C                             BUFFER.                                  C
C                                                                      C
C......................................................................C
C                                                                      C
C          COUNTERS OF INTEREST :                                      C
C                                                                      C
C          INCR = BUCKET SIZE. IE # OF P'S PER LINE ON GRAPH           C
C          NBIN = # OF LINES ON THE GRAPH (50 MAX)                     C
C          RLEN = 1024  # OF WORDS PER RECORD                          C
C          RCNT = TOTAL # OF VALID POINTS READ IN FILE                 C
C          BCNT = TOTAL # OF POINTS READ IN THE SPECIFIED RANGE        C
C          BIN()= 50 WORD ARRAY, # OF VALID POINTS READ IN THAT BIN    C
C          MISS = # OF NEGATIVE P VALUES ENCOUNTERED ???               C
C          SEG  = 1/2  NO/YES  WE ARE LOOKING AT A SEGMENTED PROG      C
C          LOW  = LOW ADDRESS OF THE MODULE                            C
C          HIGH = HIGH ADDRESS OF THE MODULE                           C
C                                                                      C
C......................................................................C
C                                                                      C
C         THE 1ST RECORD OF THE DATA BUFFER HAS INFO ABOUT             C
C         THE ENTIRE PROGRAM.  ITS FORMAT IS :                         C
C                                                                      C
C         WORDS 1 - 33          ID SEGMENT OF MAIN                     C
C         WORD  34              # OF SEGMEN LOADS PERFORMED            C
C         WORD  35              # OF SHORT SEGMENTS THE PROGRAM CALLED C
C         WORDS 36-45           10 WORDS REPEATING. 1ST WORD = ID SEG  C
C                                  ADDR OF SEGMENT FOLLOWED BY THE     C
C                                  9 WORDS OF SHORT ID SEGMENT.        C
C         WORDS 1017 - 1020     START TIME OF PROGRAM                  C
C         WORDS 1021 - 1024     STOP TIME OF PROGRAM                   C
C                                                                      C
C                                                                      C
C                                                                      C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C 
C 
C                   SET UP SOME INITIAL INFO & SEE IF WE ARE
C                            A SEGMENTED PROGRAM. 
C 
C 
      ITIMES = 1
      PAGE = 1
      ISEG = 2
      IF(IBUF(30) .EQ. 0) ISEG = 1
      SEGMID = 0
      IBUF(24) = IBUF(24) - 1 
      HIGHMN = IBUF(24) 
C 
C 
C 
C 
C 
C 
C                   PRINT OUT INFO ON THE MAIN OF THE PROGRAM 
C 
C 
C 
C 
C 
C 
      CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,43HDO YOU WANT ME TO DO THE INITIAL ANALYSIS ?,-43)
12    CALL REIO(2,OP,IYES,6)
      CALL REIO(1,OP,IFILE,1) 
      IF(IEXIT(IFILE)) GO TO 9999 
      IF(YESNO(IFILE) .EQ.0) GO TO 12 
C 
      CALL LURQ(1,PR,1) 
      WRITE(PR,901) 
901   FORMAT("1") 
C 
      IF(IFILE .EQ. 2HNO) GO TO 170 
C 
C 
C 
C                   PRINT OUT TABLE INFORMATION 
C 
C 
      HIGH = IBUF(24) 
      LOW =  IBUF(23) 
      BASE = LOW
C 
      TIBUF(6) = IBUF(13) 
      TIBUF(7) = IBUF(14) 
      TIBUF(8) = IOR(IAND(IBUF(15),77400B),40B) 
      ISTUDY(7) = TIBUF(6)
      ISTUDY(8) = TIBUF(7)
      ISTUDY(9) = TIBUF(8)
C 
      CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,ISTUDY,16) 
C 
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,33)
33    FORMAT(16X,"**************************************************")
      WRITE(PR,34)
34    FORMAT(16X,"*",48X,"*") 
      WRITE(PR,35) TIBUF(6),TIBUF(7),TIBUF(8) 
35    FORMAT(16X,"*      ACTIVITY PROFILE ANALYSIS OF PROGRAM      *",
     & / ,16X,  "*",20X,3A2,22X,"*")
      WRITE(PR,34)
      WRITE(PR,33)
      WRITE(PR,36)
C 
C 
C 
C 
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
C 
C 
      KK = IBUF(1017) * 10
      WRITE(PR,62) IBUF(1020),IBUF(1019),IBUF(1018),KK
      KK = IBUF(1021) * 10
      WRITE(PR,63) IBUF(1024),IBUF(1023),IBUF(1022),KK
      CALL TIME(IBUF(1017), IBUF(1021),1) 
      KK = IBUF(1021) * 10
      WRITE(PR,64) IBUF(1024),IBUF(1023),IBUF(1022),KK
62    FORMAT( 8X,"START TIME    : ",I3," HOURS",I3," MINUTES",I3," SECON
     &DS",I5," MILLISECONDS.")
63    FORMAT( 8X,"STOP TIME     : ",I3," HOURS",I3," MINUTES",I3," SECON
     &DS",I5," MILLISECONDS.")
64    FORMAT( 8X,"ELAPSED TIME  : ",I3," HOURS",I3," MINUTES",I3," SECON
     &DS",I5," MILLISECONDS.")
C 
C 
C 
C 
C 
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
36    FORMAT("0") 
C 
C 
      WRITE(PR,42)
42    FORMAT(2X,"MODULE  TYPE  PRIORITY  LOW MAIN  HIGH MAIN  LOW B.P.
     &HIGH B.P.  # OF LOADS") 
C 
      WRITE(PR,44)
44    FORMAT(2X,".......................................................
     &.....................") 
C 
C 
      WRITE(PR,36)
      WRITE(PR,36)
C 
      IMTYPE = IAND(IBUF(15),7) 
C 
      WRITE(PR,43) TIBUF(6),TIBUF(7),TIBUF(8),IMTYPE,IBUF(7),IBUF(23),
     &             IBUF(24),IBUF(25),IBUF(26),ITIMES
43    FORMAT(3X,3A2,1X,I2,3X,I7,5X,K5,5X,K5,6X,K4,6X,K4,7X,I5)
C 
C 
C 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C 
C 
      IF(ISEG .EQ. 1) GO TO 69
      IF(IBUF(34) .EQ. 0) GO TO 69
C 
C 
C 
C                                SEGMENTED PROGRAM !! 
C                   MAKE A PASS THROUGH THE DATA FILE AND COUNT 
C                          THE NUMBER OF TIMES THAT EACH
C                                SEGMENT WAS CALLED.
C 
C 
C 
C         INITIALIZE COUNT LOCATION 
C 
C 
      DO 48 KP = 1,IBUF(35) 
      IBUF(45 + (KP-1)*10) = 0
48    CONTINUE
C 
      IDX = 1 
C 
C 
C 
C     OK SO READ THE DATA OUT OF THE FILE 
C 
C 
      DO 50 KP = 1,32767
C 
      IF(READF(IDCB,IER,BUF,128,IRLEN)) CALL FMPER(IER,IPBUF,OP)
      IF(IER .LT. 0 ) GO TO 9999
      IF(IRLEN .LE. 0) GO TO 45 
C 
C         SEE IF ANY SEGMENT LOAD WAS DONE IN THIS DATA 
C 
      DO 52 KT = 1, 128, ISEG 
      ID = BUF(KT + 1)
      IF(ID .EQ. 0) GO TO 52
      IF(ID .EQ. IDX) GO TO 52
      IDX = ID
C 
C          AH SO !  A SEGMENT LOAD WAS DETECTED.
C          FIND OUT WHICH SEGMENT IT WAS AND INCREMENT THAT COUNTER.
C 
      DO 54 IK  = 1, IBUF(35) 
      ISLOOP = (IK  -1) * 10
      IF(ID  .NE. IBUF( 36 + ISLOOP)) GO TO 54
      IBUF( 45 + ISLOOP) = IBUF( 45 + ISLOOP) + 1 
      GO TO 52
C 
54    CONTINUE
52    CONTINUE
50    CONTINUE
C 
C 
C                   OK, SO WRITE OUT ALL THE INFO ON THE SEGMENTS 
C 
C 
45    DO 65 KT = 1,IBUF(35) 
      ISLOOP = (KT -1) * 10 
      INAME(1) = IBUF(38 + ISLOOP)
      INAME(2) = IBUF(39 + ISLOOP)
      INAME(3) = IOR(IAND(IBUF(40 + ISLOOP),77400B),40B)
      IMTYPE =   IAND(IBUF(40),7) 
      IBUF(42 + ISLOOP) = IBUF(42 + ISLOOP) -1
C 
      WRITE(PR,43) INAME,IMTYPE,IZ,IBUF(41 + ISLOOP),IBUF(42 + ISLOOP), 
     &             IBUF(43 + ISLOOP), IBUF(44 + ISLOOP),
     &             IBUF(45 + ISLOOP)
C 
C 
65    CONTINUE
C 
C                   SKIP A FEW SPACES 
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
      WRITE(PR,36)
C 
C                   PRINT OUT TOTAL # OF SEG LOADS
C 
      WRITE(PR,49) IBUF(34) 
49    FORMAT(20X,"TOTAL NUMBER OF SEGMENT LOADS = ", I6)
C 
C 
69    WRITE(PR,901) 
C 
C 
C                   POSITION FILE TO FIRST DATA RECORD
C 
C 
      IF(APOSN(IDCB,IER,IRECX,IRBX,IOFFX)) CALL FMPER(IER,IPBUF,OP) 
      IF(IER .LT. 0) GO TO 9999 
      GO TO 5555
C 
C 
C 
C 
C                CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
C                C     END OF 1ST PAGE OF INITIAL       C 
C                C            ANALYSIS                  C 
C                CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
C 
C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
C 
C 
C 
C                CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
C                C     START OF 2ND PAGE OF INITIAL     C 
C                C             ANALYSIS                 C 
C                CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 
C 
C 
C 
C 
C 
C 
C 
C                   RETURN HERE FOR ALL SEGMENTS ON INITIAL STUDY.
C 
C    FINISHED WITH ALL THE SEGMENTS YET ??
C 
C 
6666  ITIMES = ITIMES + 1 
      IF(ITIMES .GT. IBUF(35) + 1) GO TO 170
C 
C 
C                   DO THE NEXT SEGMENT 
C 
C 
C 
      TIBUF(1) = 2HSE 
      TIBUF(2) = 2HGM 
      TIBUF(3) = 2HEN 
      TIBUF(4) = 2HT
      TIBUF(5) = 2H 
      TIBUF(6) = 2H 
      TIBUF(7) = 2H 
      TIBUF(8 ) = IBUF(38 + (ITIMES -2) *10)
      TIBUF(9 ) = IBUF(39 + (ITIMES -2) *10)
      TIBUF(10) = IOR(IAND(IBUF(40 + (ITIMES -2) *10) ,77400B),40B) 
      ISTUDY(7) = TIBUF(8 ) 
      ISTUDY(8) = TIBUF(9 ) 
      ISTUDY(9) = TIBUF(10) 
C 
      CALL REIO(2,OP,ISTUDY,16) 
C 
      LOW  = IBUF(41 + (ITIMES -2) *10) 
      HIGH = IBUF(42 + (ITIMES -2) *10) 
      BASE = LOW
      SEGMID = IBUF(36 + (ITIMES -2) *10) 
C 
      IF(APOSN(IDCB,IER,IRECX,IRBX,IOFFX)) CALL FMPER(IER,IPBUF,OP) 
      IF(IER .LT. 0) GO TO 9999 
C 
      GO TO 5555
C 
C 
C 
C 
C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
C 
C 
C 
C 
C                  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                  C                                       C
C                  C    INTERACTIVE ANALYSIS STARTS        C
C                  C              HERE.                    C
C                  C                                       C
C                  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C 
C 
C 
C 
C 
C 
C                   POSITION FILE TO FIRST DATA RECORD
C 
C 
170      ITIMES = -32767
         CALL LURQ(100000B,PR,1)
         IF(APOSN(IDCB,IER,IRECX,IRBX,IOFFX)) 
     &CALL FMPER(IER,IPBUF,OP)
         IF(IER .LT. 0) GO TO 9999
C 
C 
C 
C                   ASK FOR RANGE OF INTEREST OF P VALUES 
C 
C 
C 
5     CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,20HENTER EX TO EXIT OR ,-20) 
      CALL REIO(2,OP,48HENTER RANGE OF INTEREST: LOW ADDR , HIGH ADDR  _
     &,-48) 
      CALL REIO(1,OP,IFILE,-40) 
      CALL ABREG(IA,IB) 
      IONE = 1
C 
      CALL NAMR(IBUF10,IFILE,IB,IONE) 
      IF(IEXIT(IBUF10)) GO TO 9999
      IF(IAND(IBUF10(4),3).NE.1) GO TO 108
      IF(IBUF10 .LT. 0) GO TO 108 
      LOW = IBUF10
C 
      CALL NAMR(IBUF10,IFILE,IB,IONE) 
      IF(IAND(IBUF10(4),3).NE.1) GO TO 108
      IF(IBUF10 .LT. 0) GO TO 108 
      HIGH = IBUF10 
      IF(HIGH .LT. LOW ) GO TO 108
      GO TO 111 
C 
C 
C 
108   CALL REIO(2,OP,14HINPUT ERROR !!,-14) 
      CALL REIO(2,OP,2H  ,-2) 
      GO TO 5 
C 
C 
C 
C 
C                   SEE IF WE NEED TO ASK WHICH SEGMENT.
C 
C 
C 
111   SEGMID = 0
      TIBUF(1) = 2H(
      TIBUF(2) = IBUF(13) 
      TIBUF(3) = IBUF(14) 
      TIBUF(4) = IOR(IAND(IBUF(15),77400B),40B) 
      TIBUF(5) = 2H ) 
      TIBUF(6) = 2H 
      IF(ISEG .EQ. 1) GO TO 101 
      IF(HIGH .LE. HIGHMN) GO TO 101
C 
109   CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,40HWHICH SEGMENT ARE YOU INTERESTED IN ?  _,-40) 
      CALL REIO(1,OP,IFILE,-40) 
      CALL ABREG(IA,IB) 
      IONE = 1
      CALL NAMR(IBUF10,IFILE,IB,IONE) 
      IF(IAND(IBUF10(4),3) .NE. 3) GO TO 109
C 
C                   SEE IF WE CAN FIND THAT SEGMENT 
C 
      DO 102 KK = 1,IBUF(35)
      IF(IBUF10(1) .NE. IBUF(38 + (KK - 1) *10)) GO TO 102
      IF(IBUF10(2) .NE. IBUF(39 + (KK - 1) *10)) GO TO 102
      IF(IBUF10(3) .NE. IOR(IAND(IBUF(40 + (KK - 1) *10),77400B),40B))
     & GO TO 102
C 
      GO TO 104 
102   CONTINUE
C 
C 
      IF(IEXIT(IBUF10)) GO TO 9999
      CALL REIO(2,OP,28HTHAT SEGMENT WAS NOT CALLED.,-28) 
      GO TO 109 
C 
C 
104   SEGMID = IBUF(36 + (KK -1) * 10)
      TIBUF(2) = IBUF10(1)
      TIBUF(3) = IBUF10(2)
      TIBUF(4) = IBUF10(3)
C 
C 
C                  GET BASE FOR RELATIVE ADDRESS LISTING
C 
C 
101   CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,44HENTER BASE ADDRESS OF ROUTINE OF INTEREST  _, 
     &-44)
C 
      CALL REIO(1,OP,IFILE,-40) 
      CALL ABREG(IA,IB) 
      IONE = 1
      CALL NAMR(IBUF10,IFILE,IB,IONE) 
* 
      IF(IEXIT(IFILE)) GO TO 9999 
      BASE = IBUF10 
      IF(IAND(IBUF10(4),3) .NE. 1) GO TO 101
      IF(IBUF10 .LT. 0 ) GO TO 105
      IF(HIGH .GT. BASE) GO TO 905
C 
C 
105   CALL REIO(2,OP,16HINPUT ERROR !!! ,-16) 
      GO TO 101 
C 
C 
C 
C 
C                   GET THE RUN DESCRIPTION 
C 
C 
905   CALL REIO(2,OP,2H  ,1)
      WRITE (OP,910)
  910 FORMAT("WHAT DO YOU WANT TO CALL THE GRAPH ? ") 
C 
C 
C                   BLANK OR SET UP GRAPH DESCRIPTION 
C 
C 
      DO 6 I=7,40 
    6    TIBUF(I)=2H
      READ (OP,915) (TIBUF(I),I=7,40) 
  915 FORMAT(40A2)
5555     DO 7 I=1,40
    7       TITLE(I)=TIBUF(I) 
    8 CONTINUE
C 
      IF((IEXIT(TIBUF)) .AND. (TIBUF(2) .EQ. 2H  )) GO TO 9999
C 
C 
C                   RESET OUR STATISTICAL VALUES
C 
C 
      DO 9 I=1,50 
    9    BIN(I)=0.
      RCNT=0
      BCNT=0
      MISS=0
C 
C 
C 
C                   CALCULATE BUCKET SIZE AND 
C                    # OF LINES ON GRAPH
C 
C 
C 
      INCR = ((HIGH-LOW)/50) + 1
      NBIN = ((HIGH-LOW)/INCR) + 1
C 
C 
C 
C                   READ NEXT RECORD OFF DISC FILE
C 
C 
C 
C 
   10  IF(READF(IDCB,IER,BUF,128,ILENGH)) 
     &CALL FMPER(IER,IPBUF,OP)
      IF(IER .LT. 0) GO TO 9999 
C 
      IF(ILENGH .LE. 0) GO TO 160 
C 
C 
C 
C                   INSPECT BUFFER FOR BAD P VALUES.  IF ANY FOUND
C                      MARK WITH A ZERO P VALUE.
C 
C 
C 
      DO 100 I=1,RLEN,ISEG
         ITEMP=BUF(I) 
         IF(ITEMP .GE. 0) GO TO 100 
            ITEMP=IAND(ITEMP,077777B) 
            BUF(I)=ITEMP
            DO 30 J=I,1,-ISEG 
               IF(ITEMP .NE. BUF(J)) GO TO 30 
               BUF(J)=-1
               MISS=MISS+1
   30          CONTINUE 
  100       CONTINUE
C 
C 
C 
C 
C                   FILL HISTOGRAM BINS.  BINS  1  THROUGH  NBIN
C 
C 
C 
C 
      RCNT = RCNT + RLEN / ISEG 
C 
      DO 150 I=1,RLEN,ISEG
         K1=BUF(I)
         IF(K1 .EQ. 0) RCNT = RCNT - 1
         IF(K1 .LT. LOW .OR. K1 .GT. HIGH .OR. K1 .EQ. 0) GO TO 150 
C 
         IF((ISEG.EQ.1) .OR. (SEGMID .EQ. 0)) GO TO 146 
         IF(BUF(I+1) .NE. SEGMID) GO TO 150 
C 
146      K1=((K1-LOW)/INCR)+1 
         BIN(K1)=BIN(K1)+1. 
         BCNT=BCNT+1
  150     CONTINUE
      GO TO 10
C 
C 
C                   TELL OPERATOR WHAT WE FOUND & ASK FOR A BASE ADDRESS
C 
C 
C 
160   IF(ITIMES .GT. 0) GO TO 200 
C 
      CALL REIO(2,OP,2H  ,1)
      WRITE(OP,918) RCNT,BCNT 
  918 FORMAT (" TOTAL TRACE POINTS READ: ",F10.0/ 
     1   " TRACE POINTS IN SPECIFIED RANGE: ",F10.0)
C 
C                   CHECK FOR CRAP IN FILE
C 
      IF(RCNT .LT. 1.0) GO TO 9998
      IF(BCNT .LT. 1.0) GO TO 170 
C 
C 
C 
C                   TELL THE FOLKS THAT THE RESULTS ARE COMMING UP
C                   ON THE PRINTER. 
C 
C 
      CALL LURQ(1,PR,1) 
200   IF(RCNT .LT. 1.0) GO TO 9998
      RTOTAL = RCNT - MISS
      IF(RTOTAL .LT. 1.0) RTOTAL = 1.0
      CALL REIO(2,OP,2H  ,1)
      CALL REIO(2,OP,ICOME,18)
      CALL REIO(2,OP,2H  ,1)
C 
C 
C                   PLOT INTEGRAL OF P DISTRIBUTION 
C 
C 
      LINENO=0
      BXCNT = BCNT
      IF(BCNT .LT. 1.0) BXCNT = 1.0 
      DO 205 I=1,6
  205     TA(I)=(6-I)*(BXCNT/(RTOTAL))*20 
C 
C 
      CALL IPRNT(ITITLE,LINENO,PBUF,NBIN,PAGE,BASE,TA,HIGH,LOW, 
     &           INCR,RCNT,MISS,BCNT,TITLE,PR)
C 
      LINENO=1
      T1=0
C INTEGRATE THE HISTOGRAM 
      DO 210 I=1,NBIN 
         T1=T1+BIN(I) 
         IGRATE(I)=((T1*50.)/BXCNT)+1.
         IF (IGRATE(I) .GT. 50) IGRATE(I)=50
  210 CONTINUE
C 
C PLOT GRAPH.  IGRATE(I) THRU IGRATE(NBIN) CONTAIN INTEGER
C VALUES BETWEEN 1 AND 50 
C 
      DO 220 I=NBIN,1,-1
         DO 212 J=1,25
  212    PBUF(J)=2H 
C 
         K1=52-IGRATE(I)
         PBUF(K1/2) = 2H* 
         IF((K1/2)*2 .EQ. K1) GO TO 216 
         PBUF(K1/2) = 2H *
C 
C 
216      IF(I .EQ. 1) GO TO 218 
C 
         IF(IGRATE(I) .LE. IGRATE(I-1) + 1) GO TO 218 
C 
         K2 = 52 - IGRATE(I-1)
         IF(((K2/2)*2) .NE. K2) PBUF(K2/2) = 2H*
         IF(((K1/2)*2) .EQ. K1) PBUF(K1/2) = 2H** 
         IUP = K1/2 +1
         IDOWN = K2/2 - 1 
         IF(IUP .GT. IDOWN) GO TO 218 
C 
C 
         DO 217 J = IUP,IDOWN 
         PBUF(J) = 2H** 
217      CONTINUE 
C 
C 
218   CALL IPRNT(ITITLE,LINENO,PBUF,NBIN,PAGE,BASE,TA,HIGH,LOW, 
     &           INCR,RCNT,MISS,BCNT,TITLE,PR)
C 
  220    CONTINUE 
C 
      LINENO=-1 
C 
      CALL IPRNT(ITITLE,LINENO,PBUF,NBIN,PAGE,BASE,TA,HIGH,LOW, 
     &           INCR,RCNT,MISS,BCNT,TITLE,PR)
C 
C 
C 
C 
C PLOT HISTOGRAM OF DISTRIBUTION
C 
C 
C 
C 
  500 BMIN=RCNT 
      BMAX=0. 
      DO 510 I=1,NBIN 
         TEMP=BIN(I)
         IF (TEMP .GT. BMAX) BMAX=TEMP
  510    IF ((TEMP .LT. BMIN) .AND. (TEMP .GT. 0.0)) BMIN=TEMP
      IF (BMIN .EQ. RCNT) BMIN=0. 
      BMIN=(BMIN/(RTOTAL))*100 + .1E-36 
      BMAX=(BMAX/(RTOTAL))*100 + .1E-36 
C 
C 
C 
C 
C                   DO A LINEAR HISTOGRAM 
C 
C 
C 
C 
C 
      HFLAG=2 
      TEMP=BMAX/50.0
      DO 520 I=1,6
  520    TA(I)=BMAX-10.*TEMP*(I-1)
C COMPUTE HEIGHT OF BARS
      DO 540 I=1,NBIN 
         J=IFIX(((BIN(I)/(RTOTAL))*100.0)/TEMP) 
         IF (BIN(I) .GT. 0.) J=J+1
         IF (J .GT. 50) J=50
  540    IGRATE(I)=J
      GO TO 580 
C 
C 
C 
C 
C 
C 
C                   DO A LOGARITHMIC HISTOGRAM
C 
C 
C 
C 
C 
  550 HFLAG=1 
      LOGT=1./ALOG(10.0)
      BMAX=LOGT*ALOG(BMAX)
      BMIN=LOGT*ALOG(BMIN)
      TEMP=(BMAX-BMIN)/5
      DO 552 I=1,6
  552    TA(I)=10.0**(BMAX-TEMP*(I-1))
C 
C 
C 
C                   COMPUTE THE LOGARITHMIC BAR HEIGHTHS
C 
C 
C 
      DO 560 I=1,NBIN 
         T1=(BIN(I)/(RTOTAL))*100.
         J=0
         IF (T1 .EQ. 0.) GO TO 560
         J=IFIX(((LOGT*ALOG(T1)-BMIN)/(BMAX-BMIN))*50.) 
         IF (BIN(I) .GT. 0.) J=J+1
         IF (J .GT. 50) J=50
         IF (J .LT. 0) J=0
  560    IGRATE(I)=J
C 
C 
C 
C 
C                   CONSTRUCT & PRINT HISTOGRAM BARS
C 
C 
C 
C 
  580 LINENO=0
C 
      CALL IPRNT(ITITLE,LINENO,PBUF,NBIN,PAGE,BASE,TA,HIGH,LOW, 
     &           INCR,RCNT,MISS,BCNT,TITLE,PR)
C 
      LINENO=1
      DO 590 I=NBIN,1,-1
         DO 581 J=1,25
  581       PBUF(J)=2H
         K1=52-IGRATE(I)
         IF (K1 .GE. 52) GO TO 585
         K2=K1/2
         PBUF(K2)=2H* 
         IF(K1 .EQ. 50) PBUF(K2) = 2H** 
         IF((K2*2) .EQ. K1) GO TO 583 
         PBUF(K2)=2H *
  583    IF (K2 .EQ. 25) GO TO 585
         DO 584 J=K2,25 
  584       PBUF(J)=2H**
C 
585   CALL IPRNT(ITITLE,LINENO,PBUF,NBIN,PAGE,BASE,TA,HIGH,LOW, 
     &           INCR,RCNT,MISS,BCNT,TITLE,PR)
C 
  590    CONTINUE 
C 
C 
C 
C                   PRINT TITLE AT BOTTOM OF GRAPH
C 
C 
C 
C 
      LINENO=-1 
      IF (HFLAG .EQ. 2) GO TO 595 
C 
      CALL IPRNT(HTITL1,LINENO,PBUF,NBIN,PAGE,BASE,TA,HIGH,LOW, 
     &           INCR,RCNT,MISS,BCNT,TITLE,PR)
C 
      GO TO 300 
595   CALL IPRNT(HTITL2,LINENO,PBUF,NBIN,PAGE,BASE,TA,HIGH,LOW, 
     &           INCR,RCNT,MISS,BCNT,TITLE,PR)
C 
      IF(ILOGIT) GO TO 550
      IF(ITIMES .LT. 0) GO TO 170 
      GO TO 6666
C 
C 
C 
C 
C DUMP BINS TO PRINTER
C 
C 
C 
C 
300   WRITE(PR,399) (TITLE(I),I=1,40) 
399   FORMAT(" ","DESCRIPTION: ",40A2)
      WRITE(PR,366) 
366   FORMAT(4X,"BIN # ",10X," # IN BIN ",10X," % OF SAMPLE ",10X,"INTEG
     &RAL VALUE") 
      WRITE(PR,367) 
367   FORMAT(4X,".......................................................
     &..................")
      WRITE(PR,36)
      DO 310 I=NBIN,1,-1
         TEMP=BIN(I)*100/(RTOTAL) 
         TEMPX = 0. 
C 
           DO 320 J = 1,I 
           TEMPX = TEMPX + BIN(J) 
320        CONTINUE 
C 
         TEMPX = (TEMPX/RTOTAL) * 100 
         WRITE(PR,1300) I,BIN(I),TEMP,TEMPX 
 1300    FORMAT(5X,I2,12X,F10.0,14X,F7.3,14X,F7.3)
  310    CONTINUE 
C 
C 
      WRITE(PR,36)
      WRITE(PR,918) RCNT,BCNT 
      WRITE(PR,1301) PAGE 
1301  FORMAT(" ",68X,"PAGE",I4) 
      PAGE = PAGE + 1 
C 
      WRITE(PR,901) 
C 
C 
      IF(ITIMES .LE. 0) GO TO 170 
      GO TO 6666
C 
9998  CALL REIO(2,OP,28HNO VALID DATA WAS TAKEN  !!!,-28) 
 9999 CALL CLOSE(IDCB,IER)
      CALL REIO(2,OP,2H  ,-2) 
      CALL REIO(2,OP,18HEND OF ANALYSIS  !,-18) 
      END 
      END$
                                                                              