*DECK +REPORT 
      PROGRAM REPORT(PFILEC, TAPE1=PFILEC, PFILE, TAPE2=PFILE)
C  AVERAGE CP TIME FOR THE CURRENT PATH 
      REAL AVGCP
C  AVERAGE ELAPSED TIEM FOR THE CURRENT PATH
      REAL AVGET
C  PREVIOUS CAPSULE NAME
      INTEGER CAP 
C  CAPSULE-NAMES, A10 FORMAT
      INTEGER CAPNAME(63) 
C  PREVIOUS ACTION CODE NAME
      INTEGER COD 
C  NAMES OF CODES 
      INTEGER CODENAM(7)
C  PREVIOUS CP TIME 
      INTEGER CPTIME
C  PREVIOUS ELAPSED TIME
      INTEGER ETIME 
C  FLAG 
      LOGICAL FIRST 
C  AN UNPACKED ITEM 
      INTEGER ITEM(4) 
C                     ITEM(1) = CODE
C                     ITEM(2) = ELAPSED TIME
C                     ITEM(3) = CAPSULE INDEX 
C                     ITEM(4) = CP TIME 
C  TOTAL MILLISECONDS OF ELAPSED TIME AND CP TIME TO LOAD CAPSULES
      REAL LOADCP, LOADET 
C  INDEX TO PATH
      INTEGER N 
C  NUMBER OF CAPSULE-NAMES
      INTEGER NCAPS 
C  NUMBER OF PATHS
      INTEGER NPATHS
C  ARRAY TO PRINT AN ITEM 
      INTEGER P(4)
C  PATH: ACTION CODE FOR *FROM* NODE
      INTEGER PFRMCOD(100)
C  PATH: CAPSULE-NAME FOR *FROM* NODE 
      INTEGER PFRMCAP(100)
C  PATH: NUMBER OF SAMPLES
      INTEGER PN(100) 
C  PATH: SUM OF CP MILLISECONDS OF EACH SAMPLE
      INTEGER PSUMCP(100) 
C  PATH: SUM OF SQUARE OF CP MILLISECONDS OF EACH SAMPLE
      INTEGER PSUMCP2(100)
C  PATH: SUM OF ET MILLISECONDS OF EACH SAMPLE
      INTEGER PSUMET(100) 
C  PATH: SUM OF SQUARE OF ET MILLISECONDS OF EACH SAMPLE
      INTEGER PSUMET2(100)
C  PATH: CAPSULE-NAME OF *TO* NODE
      INTEGER PTOCAP(100) 
C  PATH: ACTION CODE OF *TO* NODE 
      INTEGER PTOCOD(100) 
C  STANDARD DEVIATION OF CP TIME FOR CURRENT PATH 
      REAL SDCP 
C  STANDARD DEVIATION OF ELAPSED TIME FOR CURRENT PATH
      REAL SDET 
C  SCRATCH VARIABLE TO HOLD A TIME IN MILLISECONDS
      INTEGER T 
C  TOTAL MILLISECONDS OF ELAPSESD TIME AND CP TIME TO UNLOAD CAPSULES 
      REAL ULOADCP, ULOADET 
C  TOTAL MILLISECONDS OF ELAPSED TIME AND CP TIME 
      REAL TOTALCP, TOTALET 
C  WORD FOR MISCELLANEOUS USE 
      INTEGER WORD
C 
C*****
      CODENAM(1) = 10HS/ LOAD 
      CODENAM(2) = 10HF/ LOAD 
      CODENAM(3) = 10HS/ UNLOAD 
      CODENAM(4) = 10HF/ UNLOAD 
      CODENAM(5) = 10H
C 
C  READ CAPSULE-NAMES FROM "PFILEC" 
C 
      NCAPS = 0 
   10 READ(1, 1000, END=20) WORD
 1000 FORMAT(A10) 
      NCAPS = NCAPS + 1 
      CAPNAME(NCAPS) = WORD 
      GO TO 10
   20 CONTINUE
C 
C  READ ITEMS FROM "PFILE"
C 
C     PRINT 1002
      NPATHS = 0
      FIRST = .TRUE.
   30 READ(2, 1000, END=40) WORD
      CALL EXTRACT(WORD, ITEM)
      IF (FIRST) THEN 
        ETIME = ITEM(2) 
        CPTIME = ITEM(4)
        COD = CODENAM(4)
        CAP = 10HS$MAIN 
        FIRST = .FALSE. 
        END IF
      P(1) = CODENAM(ITEM(1)) 
      P(2) = CAPNAME(ITEM(3)) 
      P(3) = ITEM(2) - ETIME
      P(4) = ITEM(4) - CPTIME 
C     PRINT 1001, P 
 1001 FORMAT(2X,2A10,I5,7H MS ET,,I5,6H MS CP)
      DO 35 N = 1, NPATHS 
        IF ((PFRMCOD(N) .EQ. COD) 
     1    .AND. (PFRMCAP(N) .EQ. CAP) 
     2    .AND. (PTOCOD(N) .EQ. CODENAM(ITEM(1))) 
     3    .AND. (PTOCAP(N) .EQ. CAPNAME(ITEM(3)))) GO TO 37 
   35   CONTINUE
C  CREATE A NEW PATH
      NPATHS = NPATHS + 1 
      N = NPATHS
      PFRMCAP(N) = CAP
      PFRMCOD(N) = COD
      PTOCAP(N) = CAPNAME(ITEM(3))
      PTOCOD(N) = CODENAM(ITEM(1))
      PN(N) = 0 
      PSUMCP(N) = 0 
      PSUMCP2(N) = 0
      PSUMET(N) = 0 
      PSUMET2(N) = 0
C  MODIFY PATH AT INDEX N 
   37 PN(N) = PN(N) + 1 
      T = ITEM(4) - CPTIME
      PSUMCP(N) = PSUMCP(N) + T 
      PSUMCP2(N) = PSUMCP2(N) + T*T 
      T = ITEM(2) - ETIME 
      PSUMET(N) = PSUMET(N) + T 
      PSUMET2(N) = PSUMET2(N) + T*T 
C 
      COD = CODENAM(ITEM(1))
      ETIME = ITEM(2) 
      CAP = CAPNAME(ITEM(3))
      CPTIME = ITEM(4)
      GO TO 30
   40 CONTINUE
C 
C  PRINT SUMMARY OF PATHS 
C 
      LOADET = 0.0
      ULOADET = 0.0 
      TOTALET = 0.0 
      LOADCP = 0.0
      ULOADCP = 0.0 
      TOTALCP = 0.0 
      PRINT 1002
 1002 FORMAT(1H1) 
      DO 90 N = 1, NPATHS 
        AVGET = REAL(PSUMET(N))/REAL(PN(N)) 
        AVGCP = REAL(PSUMCP(N))/REAL(PN(N)) 
        A = PSUMET2(N)
        B = 2.0*AVGET*REAL(PSUMET(N)) 
        C = AVGET*AVGET*REAL(PN(N)) 
        SDET = SQRT(A - B + C)/REAL(PN(N) - 1)
        SDCP = SQRT((PSUMCP2(N) - 2*AVGCP*PSUMCP(N) 
     1                 + AVGCP*AVGCP*PN(N))/(REAL(PN(N) - 1)))
        PRINT 1003, PFRMCOD(N), PFRMCAP(N), PTOCOD(N), PTOCAP(N), 
     1              AVGET, SDET, AVGCP, SDCP, PN(N) 
 1003 FORMAT(6H0FROM ,2A10,4H TO ,2A10,5H TOOK,F8.2,3H +-,F7.2, 
     1       7H MS ET,,F8.2,3H +-,F7.2,6H MS CP,I12)
        IF (PFRMCOD(N) .EQ. CODENAM(1)) LOADET = LOADET + AVGET 
        IF (PFRMCOD(N) .EQ. CODENAM(3)) ULOADET = ULOADET + AVGET 
        TOTALET = TOTALET + AVGET 
        IF (PFRMCOD(N) .EQ. CODENAM(1)) LOADCP = LOADCP + AVGCP 
        IF (PFRMCOD(N) .EQ. CODENAM(3)) ULOADCP = ULOADCP + AVGCP 
        TOTALCP = TOTALCP + AVGCP 
   90   CONTINUE
C 
C  PRINT TOTALS 
C 
      PRINT 1004, LOADET, LOADCP
 1004 FORMAT("-AVERAGE TOTAL LOAD TIME IS",F11.2," MS ET AND",
     1       F9.2," MS CP") 
      PRINT 1005, ULOADET, ULOADCP
 1005 FORMAT("0AVERAGE TOTAL UNLOAD TIME IS",F9.2," MS ET AND", 
     1       F9.2," MS CP") 
      PRINT 1006, TOTALET, TOTALCP
 1006 FORMAT("0AVERAGE TOTAL TIME IS",F16.2," MS ET AND", 
     1       F9.2," MS CP") 
C 
      STOP
      END 
          IDENT  EXTRACT
          TITLE  EXTRACT: EXTRACT FIELDS FROM WORD
          COMMENT  EXTRACT FIELDS FROM WORD 
          SPACE  4
**        EXTRACT: EXTRACT FIELD FROM WORD
* 
*     CALLING SEQUENCE: 
*         CALL EXTRACT(WORD, ITEM)
* 
*     GIVEN:  
*         WORD = 3/CODE,
*                27/MILLISECONDS OF ELAPSED TIME, 
*                6/CAPSULE INDEX, 
*                24/MILLISECONDS OF CP TIME 
*         ITEM = 4-WORD ARRAY 
* 
*     DOES: 
*         SETS ITEM(1) = CODE 
*         SETS ITEM(2) = MILLISECONDS OF ELAPSED TIME 
*         SETS ITEM(3) = CAPSULE INDEX
*         SETS ITEM(4) = MILLISECONDS OF CP TIME
  
  
          ENTRY  EXTRACT
 EXTRACT  BSS    1
  
*     GET WORD
  
          SA5    X1          X5 = 3/CODE, ... 
  
*     EXTRACT AND STORE CODE
  
          BX6    X5          WORD 
          LX6    3
          MX0    -3 
          BX6    -X0*X6 
          SA2    A1+1        X2 = ADDRESS OF *ITEM* 
          SA6    X2          ITEM(1) := CODE
  
*     EXTRACT AND STORE ELAPSED-TIME
  
          BX6    X5          WORD 
          LX6    30 
          MX0    -27
          BX6    -X0*X6 
          SA6    X2+1        ITEM(2) := ELAPSED-TIME
  
*     EXTRACT AND STORE CAPSULE-INDEX 
  
          BX6    X5          WORD 
          LX6    3+27+6 
          MX0    -6 
          BX6    -X0*X6 
          SA6    X2+2        ITEM(3) := CAPSULE-INDEX 
  
*     EXTRACT AND STORE CP-TIME 
  
          BX6    X5          WORD 
          MX0    -24
          BX6    -X0*X6 
          SA6    X2+3        ITEM(4) := CP-TIME 
  
          EQ     EXTRACT     EXIT 
  
  
          END 
*WEOR,17
