CTITLEFSTIME -- PRINT TIMING SUMMARY FOR CPPREP 00010000 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR R. MCMILLAN 00020000 CA DESIGNER R. MCMILLAN 00030000 CA LANGUAGE FORTRAN 00040000 CA SYSTEM IBM AND CRAY 00050000 CA WRITTEN 3-10-75 00060000 C REVISED 08/14/87 REM CHANGED CSTIME TO FORM FSTIME 00070000 C REVISED 09-01-87 REM. CHANGE VARIABLE NAMES:NPROCS TO MXPROC;. 00080000 C TOTENT TO NPROC;PROCLT TO PROCLI. 00090000 C REVISED 09-18-87 REM. ZERO TRIO AND ELAPSED TIME IN DISK RECORD. 00100000 C REVISED 11-04-87 REM. INCREASE DIMENSION OF PROCLI AND INDEX 00110000 C ARRAYS USING VARIABLE NAMES. 00120000 C REVISED 10/01/90 LWC MOVE ALLOCATION FLAG DYNFLG TO AFTER ERROR 00121000 C CHECK. 00122000 CA 00130000 CA 00140000 CA CALL FSTIME (PROCLC, PROCLI, MXPROC, NPROC, IPR) 00150000 CA 00160000 CA IN/OUT ARGUMENT TYPE DESCRIPTION 00170000 CA 00180000 CA IN PROCLC C4 PROCESSING LIST TABLE: CHARACTER VARIABLES00190000 CA IN PROCLC I4 PROCESSING LIST TABLE: INTEGER VARIABLES 00200000 CA IN MXPROC I4 MAXIMUM NUMBER OF ENTRIES ALLOWED 00210000 CA IN NPROC I4 TOTAL NUMBER OF ENTRIES PLACED INTO THE 00220000 CA PROCESSING LIST TABLE 00230000 CA IN IPR I4 PRINT UNIT NUMBER 00240000 CA 00250000 CA 00260000 CA THIS ROUTINE PRINTS A SUMMARY OF THE TIME SPENT IN EACH 00270000 CA PROCESS ALONG WITH THE I/O COUNT TO THE DISK WORKFILES FOR EACH 00280000 CA PROCESS. ALL REPITITIONS OF A PROCESS ARE GROUPED TOGETHER AND 00290000 CA THE TIME AND WORKFILE I/O COUNT FOR EACH REPITITION AND THE 00300000 CA TOTAL TIME AND WORKFILE I/O COUNT FOR THAT PROCESS ARE PRINTED. 00310000 CA IF A PROCESS IS ABANDONED ( KPRTF < 0 ), THEN THE 00320000 CA WORD "ABANDONED" IS PRINTED TO THE RIGHT OF THAT PROCESS. 00330000 CA IF A PROCESS ISSUES A WARNING MESSAGE (KPWARN < 0), THE WORDS 00340000 CA "WARNING MESSAGE ISSUED" IS PRINTED TO THE RIGHT OF THE PROCESS. 00350000 CA THE PROGRAM SCANS THROUGH PROTAB AND FINDS KPNA, KPRNO, 00360000 CA KPTIME, KPRTF AND KPWKIO. AFTER THE TIME HAS BEEN SAVED IT IS SET 00370000 CA TO -1 IN PROTAB. SINCE THIS IS THE LAST PROGRAM THAT NEEDS 00380000 CA THE TABLES, IT IS ALL RIGHT TO DESTROY PART OF PROTAB. 00390000 CA 00400000 CA 00410000 CA PRINT FORMAT 00420000 CA ------------------------------------------------ 00430000 CA 00440000 CA PROC0 TIME I/O 00450000 CA 00460000 CA PROC0 TIME I WARNING MESSAGE ISSUED I/O 00470000 CA PROC1 TIME ABANDONED I/O 00480000 CA PROC2 TIME I/O 00490000 CA TOTAL PROC TIME I/O 00500000 CA 00510000 CA TOTAL TIME TIME 00520000 CA ------------------------------------------------- 00530000 CA 00540000 CA 00550000 CA SEE PROGRAM ISPARC FOR A FULL DESCRIPTION OF ARRAYS PROCLC AND 00560000 CA PROCLI. 00570000 C EJECT 00580000 C 00590000 C 00600000 C INTERNAL VARIABLES AND CONSTANTS 00610000 C I = DO LOOP VARIABLE 00620000 C II = DO LOOP INDEX 00630000 C J = DO LOOP VARIABLE 00640000 C JTIME = JOB TIME 00650000 C LAST = INDEX OF LAST PROTAB ENTRY 00660000 C LINECT = LINE COUNTER 00670000 C MAXLN = MAXIMUM NUMBER OF LINES PER PAGE 00680000 C OTIME = OVERHEAD TIME 00690000 C PEND = CHARACTER STRING "PEND" 00700000 C TIME = TIME IN HR:MI:SC FORMAT 00710000 C TPNA = TEMPORARY STORAGE FOR KPNA 00720000 C TPRNO = TEMPORARY STORAGE FOR KPRNO 00730000 C TPROC = TOTAL PROCESS TIME 00740000 C TPRTF = TEMPORARY STORAGE FOR KPRTF 00750000 C TPTIME = TEMPORARY STORAGE FOR KPTIME 00760000 C TPWARN = TEMPORARY STORAGE FOR KPWARN 00770000 C TPWKIO = TEMPORARY STORAGE FOR KPWKIO 00780000 C TPWKTP = TOTAL I/O COUNT TO DISK WORKFILES FOR PROCESS 00790000 C TTIME = TOTAL TIME 00800000 C 00810000 C EJECT 00820000 C 00830000 SUBROUTINE FSTIME (PROCLC, PROCLI, MXPROC, NPROC, IPR) 00840000 C 00850000 IMPLICIT INTEGER (A-Z) 00860000 C 00870000 PARAMETER (IXNA=1, IXRNO=1, IXRTF=8, IXWARN=9, IXTIME=10, 00880000 * IXWKIO=11) 00890000 C 00900000 C 00910000 C COMMON /P/ STATEMENTS GENERATED BY UTCGI4 2/14/84 00920000 COMMON /P/ STARTP ( 2) , M00000( 29) 00930000 COMMON /P/ ACLNAM ( 5) , M00124( 68) 00940000 COMMON /P/ KPNA 00950000 COMMON /P/ KPRNO , M00420( 16) 00960000 COMMON /P/ KPTIME 00970000 COMMON /P/ KPRTF , M00492( 12) 00980000 COMMON /P/ KPWARN 00990000 COMMON /P/ KPTRIO 01000000 COMMON /P/ KPWKIO , M00552( 2) 01010000 COMMON /P/ KPETIM , M00564( 18) 01020000 COMMON /P/ MCJOB ( 2) 01030000 COMMON /P/ MCSTEP ( 2) , M00648 01040000 COMMON /P/ MCCTOT , M00660( 3) 01050000 COMMON /P/ MCBTEM ( 2) , M00676( 2) 01060000 COMMON /P/ MCBDAT ( 2) , M00692( 12) 01070000 COMMON /P/ MCNKP , M00748( 134) 01080000 COMMON /P/ PTNCW 01090000 COMMON /P/ PTTBLK , M01292( 36) 01100000 COMMON /P/ PROTAB ( 2) 01110000 COMMON /P/ ENDP 01120000 C 01130000 C--------- DUAL PATH FOR IBM AND CRAY 01140000 C 01150000 COMMON /SYSTEM/ SYSTEM 01160000 COMMON /SYSTEM/ SYBYPW 01170000 COMMON /SYSTEM/ SYLOCF 01180000 C 01190000 C 01200000 C 01210000 C INTEGER ARRAYS IN PARAMETER LIST. 01220000 C 01230000 INTEGER PROCLI (15, MXPROC) 01240000 C 01250000 C CHARACTER ARRAYS IN PARAMETER LIST. 01260000 C 01270000 CHARACTER*4 PROCLC (6, MXPROC) 01280000 C 01290000 C CHARACTER VARIABLES AND CONSTANTS--LOCA 01300000 C 01310000 CHARACTER*8 DDNAME 01320000 CHARACTER*8 DDNM 01330000 CHARACTER*44 DSIBMP 01340000 CHARACTER*44 DSNIBM 01350000 CHARACTER*4 PEND 01360000 CHARACTER*8 PRSNT 01370000 CHARACTER*8 TIME 01380000 CHARACTER*4 TPNA 01390000 C 01400000 C INTEGER VARIABLES AND CONSTANTS--LOCAL 01410000 C 01420000 INTEGER LINE(20) 01430000 C 01440000 DATA ABAND /'A '/ 01450000 DATA BLNK /' '/ 01460000 DATA DYNFLG / 0 / 01470000 DATA LINE /20*' '/ 01480000 DATA MAXLN / 56/ 01490000 DATA PEND /'PEND'/ 01500000 DATA WARN /'W '/ 01510000 DATA DDNAME /'SPARCTIM'/ 01520000 DATA PRSNT /'PRESENT '/ 01530000 DATA DSIBMP /'DBG.SPARC.TIMEPREP '/ 01540000 C 01550000 C 01560000 C PRINT HEADING 01570000 C 01580000 CALL USPHD (2, ACLNAM,'EXEC', 0, 'COMPUTER TIMES', 14, IPR) 01590000 C 01600000 WRITE (IPR, 9000) 01610000 LINECT = 8 01620000 TTIME = 0 01630000 C 01640000 C CHECK FOR ALLOCATION OF TIME FILE 01650000 C 01660000 DDNM = DDNAME 01670000 CALL CKDD (DDNM) 01680000 IF (DDNM .EQ. PRSNT) GO TO 3 01690000 C CRAY ALWAYS IS PRESENT SO DOES NOT DO DYNAMIC ALLOCATION 01700000 C 01710000 C 01720000 CALL UGASMT (DSIBMP, DDNAME, DCBADR, ERR, ERIN) 01730000 IF (ERR .NE. 1) THEN 01750000 WRITE (IPR, 9110) ERR, ERIN 01760000 GO TO 9 01770000 END IF 01780000 DYNFLG = 1 01781000 C 01790000 3 CALL S1MVCH ('JOB ', 1, LINE(1), 1, 4) 01800000 LINE(3) = MCJOB(1) 01810000 LINE(4) = MCJOB(2) 01820000 LINE(6) = MCBDAT(1) 01830000 LINE(7) = MCBDAT(2) 01840000 LINE(9) = MCBTEM(1) 01850000 LINE(10) = MCBTEM(2) 01860000 LINE(12) = MCSTEP(1) 01870000 LINE(13) = MCSTEP(2) 01880000 CALL USRDID (LINE(15)) 01890000 DA = 1 01900000 CALL FOTIME (LINE) 01910000 DA = 1 01920000 CALL FORC ('ACCT', 0, DA, LINE, * 9 )01930000 CALL FOTIME (LINE) 01940000 DA = 1 01950000 CALL FORC ('LINE', 0, DA, LINE, * 9 )01960000 CALL FOTIME (LINE) 01970000 C 01980000 DO 5 01990000 * I = 1, 20 02000000 5 LINE(I) = BLNK 02010000 C 02020000 LINE(4) = 0 02030000 LINE(5) = 0 02040000 C 02050000 DO 8 02060000 * I = 1, NPROC 02070000 IF (PROCLC(IXNA,I) .EQ. PEND) GO TO 8 02080000 CALL S1MVCH (PROCLC(IXNA,I),1,LINE(1),1,4) 02090000 LINE(2) = PROCLI(IXTIME,I) 02100000 LINE(3) = PROCLI(IXWKIO,I) 02110000 LINE(6) = BLNK 02120000 LINE(7) = 0 02130000 IF (PROCLI(IXWARN,I) .LT. 0) LINE(6) = WARN 02140000 IF (PROCLI(IXRTF,I) .LT. 0 .AND. 02150000 * PROCLI(IXRTF,I) .NE. -100) THEN 02160000 LINE(6) = ABAND 02170000 LINE(7) = PROCLI(IXRTF,I) 02180000 END IF 02190000 LINE(8) = MCJOB(1) 02200000 LINE(9) = MCJOB(2) 02210000 CALL FOTIME (LINE) 02220000 8 CONTINUE 02230000 C 02240000 C NOW PRINT THE TIMES 02250000 C 02260000 9 DO 160 02270000 * I = 1, NPROC 02280000 IF (PROCLC(IXNA,I) .EQ. PEND) GO TO 160 02290000 IF (PROCLI(IXTIME,I) .LT. 0) GO TO 160 02300000 TPTIME = 100 * ((PROCLI(IXTIME,I) + 100) / 100) 02310000 TPROC = TPTIME 02320000 PROCLI(IXTIME,I) = -1 02330000 TPNA = PROCLC(IXNA,I) 02340000 TPRNO = PROCLI(IXRNO,I) 02350000 TPRTF = PROCLI(IXRTF,I) 02360000 TPWARN = PROCLI(IXWARN,I) 02370000 TPWKIO = PROCLI(IXWKIO,I) 02380000 TPWKTP = TPWKIO 02390000 II = I + 1 02400000 IF (II .GT. NPROC) GO TO 20 02410000 C 02420000 C CHECK REST OF PROTAB FOR THIS SAME PROCESS 02430000 C 02440000 DO 10 02450000 * J = II, NPROC 02460000 IF (PROCLC(IXNA,J) .EQ. TPNA) GO TO 60 02470000 C 02480000 10 CONTINUE 02490000 C 02500000 C THERE IS ONLY ONE OCCURRENCE OF THIS PROCESS 02510000 C 02520000 20 CALL EBCTIM (TIME, TPTIME) 02530000 TTIME = TTIME + TPTIME 02540000 C 02550000 IF (LINECT .LT. MAXLN) GO TO 30 02560000 WRITE (IPR, 9010) 02570000 LINECT = 0 02580000 C 02590000 30 LINECT = LINECT + 2 02600000 C 02610000 IF (TPRTF .LE. -1) GO TO 50 02620000 IF (TPWARN .LT. 0) GO TO 40 02630000 C 02640000 WRITE (IPR, 9020) TPNA, TPRNO, TIME, TPWKIO 02650000 GO TO 160 02660000 C 02670000 40 WRITE (IPR, 9030) TPNA, TPRNO, TIME, TPWKIO 02680000 GO TO 160 02690000 C 02700000 50 WRITE (IPR, 9040) TPNA, TPRNO, TIME, TPWKIO 02710000 GO TO 160 02720000 C 02730000 C MORE THAN ONE SUCH PROCESS 02740000 C 02750000 60 IF (LINECT + 5 .LT. MAXLN) GO TO 70 02760000 WRITE (IPR, 9010) 02770000 LINECT = 0 02780000 C 02790000 70 CALL EBCTIM (TIME, TPTIME) 02800000 IF (TPRTF .LE. -1) GO TO 90 02810000 IF (TPWARN .LT. 0) GO TO 80 02820000 C 02830000 WRITE (IPR, 9050) TPNA, TPRNO, TIME, TPWKIO 02840000 GO TO 100 02850000 C 02860000 80 WRITE (IPR, 9060) TPNA, TPRNO, TIME, TPWKIO 02870000 GO TO 100 02880000 C 02890000 90 WRITE (IPR, 9070) TPNA, TPRNO, TIME, TPWKIO 02900000 C 02910000 100 LINECT = LINECT + 1 02920000 TPRNO = PROCLI(IXRNO,J) 02930000 TPTIME = 100 * ((PROCLI(IXTIME,J) + 100) / 100) 02940000 TPRTF = PROCLI(IXRTF,J) 02950000 TPWARN = PROCLI(IXWARN,J) 02960000 TPWKIO = PROCLI(IXWKIO,J) 02970000 TPWKTP = TPWKTP + TPWKIO 02980000 TPROC = TPROC + TPTIME 02990000 PROCLI(IXTIME,J) = -1 03000000 II = J + 1 03010000 IF (II .GT. NPROC) GO TO 120 03020000 C 03030000 C NOW LOOK FOR THE NEXT OCCURRENCE OF THIS PROCESS 03040000 C 03050000 DO 110 03060000 * J = II, NPROC 03070000 IF (PROCLC(IXNA,J) .EQ. TPNA) GO TO 70 03080000 C 03090000 110 CONTINUE 03100000 C 03110000 C NO MORE OCCURRENCES OF THIS PROCESS. 03120000 C PRINT TIME FOR LAST OCCURRENCE. 03130000 C 03140000 120 CALL EBCTIM (TIME, TPTIME) 03150000 IF (TPRTF .LE. -1) GO TO 140 03160000 IF (TPWARN .LT. 0) GO TO 130 03170000 C 03180000 WRITE (IPR, 9050) TPNA, TPRNO, TIME, TPWKIO 03190000 GO TO 150 03200000 C 03210000 130 WRITE (IPR, 9060) TPNA, TPRNO, TIME, TPWKIO 03220000 GO TO 150 03230000 C 03240000 140 WRITE (IPR, 9070) TPNA, TPRNO, TIME, TPWKIO 03250000 C 03260000 C 03270000 C PRINT TOTAL TIME FOR PROCESS 03280000 C 03290000 150 CALL EBCTIM (TIME, TPROC) 03300000 C 03310000 WRITE (IPR, 9080) TPNA, TIME, TPWKTP 03320000 C 03330000 TTIME = TTIME + TPROC 03340000 LINECT = LINECT + 3 03350000 IF (LINECT .GE. MAXLN) LINECT = 0 03360000 C 03370000 160 CONTINUE 03380000 C 03390000 C GET OVERHEAD TIME 03400000 C 03410000 CTOT = MCCTOT 03420000 CALL USCLOK (JTIME, CTOT) 03430000 OTIME = 100 * ((JTIME + 100) / 100) - TTIME 03440000 IF (OTIME .LT. 100) OTIME = 100 03450000 CALL EBCTIM (TIME, OTIME) 03460000 C 03470000 WRITE (IPR, 9090) TIME 03480000 C 03490000 C 03500000 C PRINT TOTAL RUN TIME AND RETURN IT TO CALLING 03510000 C PROGRAM IN HR:MI:SC FORMAT 03520000 C 03530000 JTIME = TTIME + OTIME 03540000 CALL EBCTIM (TIME, JTIME) 03550000 C 03560000 WRITE (IPR, 9100) TIME 03570000 C RELEASE DCB FROM DYNAMIC TIME FILE ALLOCATION 03580000 IF (DYNFLG .EQ. 1) CALL UGUNAL (DCBADR, ERR, ERIN) 03590000 C 03600000 RETURN 03610000 C 03620000 9000 FORMAT (29X,'TIME',31X,'WORKFILE'/6X,'PROCESS',15X,'MI:SC', 03630000 * 33X,'I/O'/) 03640000 C 03650000 9010 FORMAT ('1') 03660000 C 03670000 9020 FORMAT (7X,A4,I1,13X, A8,28X,I10/) 03680000 C 03690000 9030 FORMAT (7X,A4,I1,13X, A8,3X,'WARNING MESSAGE ISSUED',3X,I10/) 03700000 C 03710000 9040 FORMAT (7X,A4,I1,13X, A8,3X,'ABANDONED',16X,I10/) 03720000 C 03730000 9050 FORMAT (7X,A4,I1,2X, A8,39X,I10/) 03740000 C 03750000 9060 FORMAT (7X,A4,I1,2X, A8,14X,'WARNING MESSAGE ISSUED',3X,I10/) 03760000 C 03770000 9070 FORMAT (7X,A4,I1,2X, A8,14X,'ABANDONED',16X,I10/) 03780000 C 03790000 9080 FORMAT (8X,'TOTAL ',A4,7X, A8,28X,I10/) 03800000 C 03810000 9090 FORMAT (7X,'OVERHEAD ',8X, A8/) 03820000 C 03830000 9100 FORMAT (7X,'TOTAL TIME',8X, A8) 03840000 C 03850000 9110 FORMAT(' ERROR IN ALLOCATING TIME FILE ERR=',I5,' ERRIN ',Z8) 03860000 END 03870000