C C THIS PROGRAM IS USED TO CREATED A TIME SHARING UTILIZATION REPORT C IT USES THE FILE DB0:[1,100]PDSUPF.DAT TO CREATE THE REPORT. C FILE DB0:[1,5]IASUPTIM.DAT IS CREATED BY UTLRPT.TSK AND USED C BY THIS PROGRAM TO COMPUTE TOTAL UTILIZATION OF TIME SHARING C UP TIME TO USER TIME. C COMMON JSY,IUFD,IUIC,IL,IC,UTL,UTA,IFY,IAMT,KTOT64 COMMON KD,KB,KZ,KY,ITOTL,ITOTC,UTOTU,IMACT,KCT INTEGER*2 ISY(4),JSY(8),IFI(21),IL,IC,IFY(21),NREC,UTL(2) REAL*4 IAMT,IMACT REAL*8 KTOT64,UTOTU,UTA BYTE IUFD,IUIC,KD,KB,KZ,KY,ITRY CALL FDBSET (2,'R''O','SHARE') CALL ASSIGN (2,'SY0:[1,5]IASUPTIM.DAT') DEFINE FILE 2(1,3,U,INIAS) FIND (2'1) READ(2'1)IMACTH,IMACM !READ IAS FILE CALL FDBSET (3,'R''O','SHARE') ! SETS SHARE ACCESS BIT CALL ASSIGN(3,'SY0:[1,5]PDSUPF.DAT') ! ASSIGN FILE TO LU 3 DEFINE FILE 3(250,32,U,NREC) ! DEFINES FORMAT OF INPUT FILE FIND(3'1) ! FINDS FIRST RECORD READ(3'1)IFR,ILA ! GETS # OF 1ST & LAST NREC=IFR ! SET INDICATOR TO 1ST KCT=65 !LINE COUNTER KTOT64=1024.*64. IABC="1 !UIC COMPARISON FIELD UTOTU=0 !TOTAL UTILIZATION IAMT=0 !TOTAL MACHINE TIME ITOTL=0 !TOTAL LOGINS ITOTC=0 !TOTAL CONNECTS ICNT=((ILA-IFR)+2) ! LAST PROFILE RECORD=ICNT IRECCT=ICNT-1 !LOOP CONTROL COUNTER CALL ASSIGN(4,'LP:') ! ASSIGN LP: AS OUTPUT DEVICE IMACT=(IMACTH*60)+IMACM !COMPUTE MINUTES IAS UP DO 15 I=1,IRECCT !LOOP CONTROL CALL READ(NREC,ISY,IUFD,IUIC,IFI,IL,IC,UTL,KD,KB,KZ,KY) ITOTL=ITOTL+IL !ACCUMULATE LOGINS ITOTC=ITOTC+IC !ACCUMULATE CONNECT TIME UTOTU=UTOTU+((UTL(1)*KTOT64)+UTL(2)) !COMPUTE UTILIZATION 15 CONTINUE !END DO LOOP 15 FIND(3'1) !FIND 1ST RECORD READ(3'1)IFR,ILA !GET # OF 1ST LAST NREC=IFR !SET RECORD INDICATOR DO 260 J=1,25000 !LOOP CONTROL 260 DO 250 K=1,200 !LOOP CONTROL 250 IF((IABC.GE."2).AND.(IABC.LE."7))GOTO 245 !CHECK UIC IF((IABC.GE."12).AND.(IABC.LE."107))GOTO 245 !CHECK UIC IF((IABC.GE."172).AND.(IABC.LE."177))GOTO 245 !CHECK UIC IF((IABC.GE."201).AND.(IABC.LE."276))GOTO 245 !CHECK UIC GOTO 255 !BRANCH 245 IABC=(IABC+"1) !ADD OCTAL 1 TO UIC FIELD IF(IABC.GT."277)GOTO 280 !CHECK UIC MAX 250 CONTINUE !END LOOP 250 255 DO 240 L=1,IRECCT !LOOP CONTROL 240 C EVERY READ INCREMENTS "NREC" CALL READ(NREC,ISY,IUFD,IUIC,IFI,IL,IC,UTL,KD,KB,KZ,KY) IF(IUIC.NE.IABC)GOTO 240 !CHECK UIC CALL R50ASC(10,ISY,JSY) !RAD50 CONVERSION CALL PRINT (JSY,IUFD,IUIC,IL,IC,UTL,UTA,KD,KB, 1 KZ,KY,ITOTL,ITOTC,UTOTU,IMACT,IAMT,KCT) 240 CONTINUE !END LOOP 240 IABC=(IABC+"1) !ADD OCTAL 1 TO UIC IF(IABC.GT.277)GOTO 280 !CHECK UIC FIND(3'1) !FIND FIRST RECORD READ(3'1)IFR,ILA !GET 1ST AND LAST NREC=IFR !SET RECORD INDICATOR 260 CONTINUE !END LOOP 260 280 WRITE(4,32)ITOTL,ITOTC,UTOTU,IMACT,IAMT !WRITE OUTPUT 32 FORMAT(X,//1H0,'TOTALS',32X,I5,19X,I7,15X,F12.0,13X,F7.0, 1 ' (',F6.2,'%)') 295 CALL EXIT !EXIT PROGRAM END !END PROGRAM C CTHIS SUBROUTINE IS USED TO PRINT EACH DETAIL LINE, AFTER EACH WRITE CTHE FIELDS ARE ZEROED FOR THE NEXT GROUP'S TOTALS C SUBROUTINE PRINT(JSY,IUFD,IUIC,IL,IC,UTL,UTA,KD, 1 KB,KZ,KY,ITOTL,ITOTC,UTOTU,IMACT,IAMT,KCT) INTEGER*2 JSY(8),IL,IC,UTL(2) REAL*4 IPL,IPC,IPU,IAM,IAMT REAL*8 UTA,KTOT64,UTOTU BYTE IUFD,IUIC,KD,KB,KZ,KY,KCT UTA=((UTL(1)*KTOT64)+UTL(2)) !COMPUTE UTILIZATION IPU=(UTA*100.)/UTOTU !COMPUTE % USED IPC=(IC*100.)/ITOTC !COMPUTE % CONNECTS IAM=(IC*100.)/IMACT !COMPUTE % OF MACH TIME IAMT=IAMT+IAM !TOTAL MACHINE TIME USED IPL=(IL*100.)/ITOTL !COMPUTE % OF LOGINS 590 KCT=KCT+1 !INCREMENT LINE COUNTER IF(KCT.GT.57)CALL HDRS(KCT) !CHECK LINE COUNTER WRITE(4,1)IUIC,IUFD,JSY,IL,IPL,IC,IPC,UTA,IPU,IAM 1 FORMAT(1H ,7X,'[',O3,',',O3,']',7X,8A2,7X,I3,' (',F6.2, 1 '%)',10X,I5,' (',F6.2,'%)',7X,F9.0,' (',F6.2,'%)',9X, 2 '(',F6.2,'%)') IPC=0 !ZERO SUB TOTAL FIELDS IAM=0 !ZERO SUB TOTAL FIELDS IPL=0 !ZERO SUB TOTAL FIELDS IPU=0 !ZERO SUB TOTAL FIELDS RETURN !RETURN TO CALLING ROUTINE END !END SUBROUTINE PRINT C C READ SUBROUTINE READS THE INPUT FILE FOR DATA ACCUMULATION C SUBROUTINE READ(NREC,ISY,IUFD,IUIC,IFI,IL,IC,UTL,KD,KB,KZ,KY) INTEGER*2 ISY(4),IFI(21),IL,IC,NREC,UTL(2) BYTE IUFD,IUIC,KD,KB,KZ,KY READ(3'NREC)ISY(1),ISY(2),ISY(3),ISY(4),IUFD,IUIC,IFI(1), 1 IFI(2),IFI(3),IFI(4),IL,IFI(5),IFI(6),IFI(7),IFI(8),IFI(9), 2 IFI(10),IFI(11),IC,UTL(1),UTL(2),KD,KB,KZ,KY,IFI(12),IFI(13), 3 IFI(14),IFI(15),IFI(16),IFI(17),IFI(18),IFI(19),IFI(20),IFI(21) RETURN !RETURN TO CALLING ROUTINE END !END SUBROUTINE READ C C HDRS SUBROUTINE PRINTS THE HEADERS FOR THE REPORT WHEN LINE-CNTR (KCT) C > 57. C SUBROUTINE HDRS(KCT) REAL*4 WHEN(3) KCT=5 !RESET LINE COUNTER CALL DATE(WHEN) ! CALLS UP THE DATE WRITE(4,15) WRITE(4,16)WHEN WRITE(4,17) WRITE(4,18) WRITE(4,19) WRITE(4,20) 15 FORMAT(1H1,T39,'PDP 11/70 TIME SHARING UTILZATION ', 1 'REPORT FOR PDP 11/40 ') 16 FORMAT(1H0,T53,'FOR PERIOD ENDING ',3A4) 17 FORMAT(X,/) 18 FORMAT(1H0,65X,'CONNECT TIME',14X,'UTILIZATION',11X, 1 '% OF CONNECT TIME') 19 FORMAT(1H,10X,'UIC',14X,'NAME',15X,'LOGINS',14X,'(MINUTES)',11X, 1 '(CORE USED X CPU TIME)',5X,'TO TIMESHR UP TIME') 20 FORMAT(1H,132A'*') RETURN !RETURN TO CALLING ROUTINE END !END SUBROUTINE HDRS