Trailing-Edge
-
PDP-10 Archives
-
bb-x130a-sb
-
lnsrpt.for
There are 5 other files named lnsrpt.for in the archive. Click here to see a list.
PROGRAM LNSRPT
C
C COUNTERS INSTALLED IN THE MONITOR ARE SAMPLED
C ONCE PER MINUTE BY THE LINES.MAC PROGRAM AND
C PUT INTO REPORT FORM BY THIS PROGRAM.
C
IMPLICIT INTEGER(A-Y)
IMPLICIT REAL (Z)
REAL SQRT,PRTK
LOGICAL XOR,OPTION
REAL TOT(70),X2(70),TOTS(70),X2S(70)
DOUBLE PRECISION DK(2),DKTT(2),DKTTS(2)
DOUBLE PRECISION HD(70),FIL,FILEX
DIMENSION MAX(70),MIN(70),MAXS(70),MINS(70),K(100),ZK(100),
#IPRI(70),NPR(10),BITS(10),OPTNAM(10),TITLE(3),FILI(2)
DIMENSION KD1(2),KD2(2),KD3(2),KD4(2),ZKD2(2),ZMN(2),ZSTD(2),
#KD1TT(2),KD1TTS(2),ZD2TT(2),ZD2TTS(2),Z2MIN(2),Z2MINS(2),
#Z2MAX(2),Z2MAXS(2)
DIMENSION OPT(10),IUN(10),LINCNT(10)
DIMENSION FILEY(2),PRTK(16)
EQUIVALENCE(FILI,FIL)
EQUIVALENCE (FILEX,FILEY(1))
C OPTION BITS
DATA OPT/1,2,4,8,16,32,4*0/
C # OF GROUPS, 1ST ELEMENT OF EACH GROUP(PLUS 1 IMAGINARY GROUP)
DATA NOPTS,NPR/5,1,10,21,36,38,54,4*0/
C OPTION NAMES
DATA OPTNAM/'RPTA','RPTB','RPTC','RPTBC','ALL','RPTD',
1'RPTS','RPTE',2*0/
C # OF OPTION NAMES, BIT COMB. FOR EACH
DATA JOPTS,BITS/8,1,2,4,6,"77,"10,"40,"20,2*0/
DATA IPRI/4,3,6,11,7,9,12,13,14,
#16,17,18,19,20,21,22,23,24,25,26,
#27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,1,1,
#42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,17*0/
C HEADERS
DATA (HD(I),I=1,9)/'Lines ','Jobs ','CPU-Min(%)',
#'Ovrhead(%)','DSK-Min','SWP-Min','TTY-Buf(%)','C.B.(%)',
#'Swap-K(%)'/
DATA (HD(I),I=10,20)/'DTASL ','MTASL ','EWCNT ',
#'TISJB ','TOSJB ','PISJB ','POSJB ','REQSS ','REQWK ','REQJSD',
#'REQPQ1 '/
DATA (HD(I),I=21,35)/'XPQRP1','XPQRP2','XPQRHP','XPICP1',
#'XPICP2','XPICHP','SWPKP1','SWPKP2','SWPKHP','SWPJP1','SWPJP2',
#'SWPJHP','RNTPQ1','RNTPQ2','RNTHPQ'/
DATA (HD(I),I=36,37)/'Swap Times','Waste Pags'/
DATA(HD(I),I=38,53)/'CLAS 0','CLAS 1','CLAS 2','CLAS 3',
1'CLAS 4','CLAS 5','CLAS 6','CLAS 7','CLAS 8',
2'CLAS 9','CLAS10','CLAS11','CLAS12','CLAS13',
3'CLAS14','CLAS15'/
C
C STATEMENT FUNCTION DEFINITIONS
C
XOR(A,B)=A.AND..NOT.B.OR.B.AND..NOT.A
OPTION(A)=-(OPTBIT.AND.A)
C
C VERSION NUMBERS
VMAJOR=5 !VERSION NUMBER OF LNSRPT
VLINES=4 !DEFAULT VERSION NUMBER OF LINES DATA FILE
C
C INITIALIZATION
C
C NUSED=TOTAL # OF VARIABLES USED
C NREG=TOTAL # OF REGULAR ITEMS TO READ
C NCLS=FIRST CLASS RUNTIME ITEM
C NALL=TOTAL # OF LINES DATA ITEMS TO READ
NUSED=53
NREG=41
NCLS=NREG+1
NALL=NREG+16
NSPC=2
NSUM=NOPTS+1
IEVERY=60
ISUM=0
IPUM=0
ISAVE=NCLS
LF=' '
FORM='1'
DO 1104 I=1,NUSED
TOT(I)=0
TOTS(I)=0
X2(I)=0
X2S(I)=0
MAXS(I)=0
MAX(I)=0
MINS(I)=10000000
1104 MIN(I)=10000000
DO 1108 I=1,NSUM
1108 LINCNT(I)=99999
C
C DIALOGUE
C
C TYPE IN DAY AS MMMDD - FOR EXAMPLE JAN09
TYPE 1112
1112 FORMAT (' Day (mmmdd): '$)
ACCEPT 1116, FILI(1),TITLE
1116 FORMAT (A5,1X,3A5)
OPEN(UNIT=20,DEVICE='DSK',ACCESS='SEQIN',MODE='ASCII',FILE=FIL)
C TYPE IN TIME LIMITS AS HH,MM - FOR EXAMPLE 13,2 FOR 13:02
TYPE 1120
1120 FORMAT ('+From (hr,min): '$)
ACCEPT 1124,IF1,IF2
1124 FORMAT (2I)
IF(IF1.LT.100)GO TO 1128
IF2=MOD(IF1,100)
IF1=IF1/100
1128 TYPE 1132
1132 FORMAT ('+To (hr,min): '$)
ACCEPT 1124,IT1,IT2
IF(IT1.LE.100)GO TO 1136
IT2=MOD(IT1,100)
IT1=IT1/100
1136 IF (IT1.EQ.0 .AND. IT2.EQ.0) IT1=25
C
C OPTION READIN LOOP
C
1140 TYPE 1144
1144 FORMAT ('+Option? (RPTA,RPTB,RPTC,RPTBC,RPTD,RPTE,RPTS,ALL) ',$)
ACCEPT 1148,ANS
1148 FORMAT (A5)
IF(ANS.EQ.' ')GO TO 1180
IF(ANS.NE.'HELP'.AND.ANS.NE.'HEL'.AND.ANS.NE.'HE'
# .AND.ANS.NE.'H')GO TO 1168
TYPE 1152
1152 FORMAT(' Options available:',//,' RPTA - Yields the followi',
#'ng counters:',/)
TYPE 1380
TYPE 1156
1156 FORMAT(/,' RPTB - Yields the following counters:',/)
TYPE 1384
TYPE 1160
1160 FORMAT(/,' RPTC - Yields the following counters:',/)
TYPE 1388
TYPE 1162
1162 FORMAT(/,' RPTD - Yields the following counters:',/)
TYPE 1392
TYPE 1163
1163 FORMAT(/,' RPTE - Yields the following counters:',/)
TYPE 1410
TYPE 1164
1164 FORMAT(/,' RPTS - In response to the question: "Summary',
#' every:",',/,' Enter the number of minutes to be included in',
#' each summary.',
#//,' ALL - Yields all reports descibed above.',//,
#' Note: you may enter any or all of the options',/,
#' described above, one per line. after the last put an extra',/,
#' carraige return.',//)
GO TO 1140
1168 DO 1172 I=1,JOPTS
IF(ANS.NE.OPTNAM(I))GO TO 1172
OPTBIT=OPTBIT.OR.BITS(I)
GO TO 1140
1172 CONTINUE
TYPE 1176,ANS
1176 FORMAT(' ? ',A5,' is not an option',/)
GO TO 1140
1180 IF(OPTBIT.EQ.0)GO TO 1140
IF((OPTBIT.AND.OPT(NSUM)).EQ.0)GO TO 1188
TYPE 1184
1184 FORMAT ('+Summary every: '$)
ACCEPT 1124,IEVERY
IF (IEVERY.EQ.0) IEVERY=60
IF(IEVERY.LT.0)IEVERY=1450
1188 TYPE 1192
1192 FORMAT(/,' Output files:',$)
FILEX='[email protected]'
DO 1240 I=0,NSUM-1
C INCREMENT ALPHAMERIC FILENAME
FILEY(2)=FILEY(2)+"4000000000
IF(FILEY(2).EQ.'F.DAT') FILEY(2)='S.DAT'
IF((OPTBIT.AND.2**I).EQ.0)GO TO 1240
TYPE 1196,FILEX
1196 FORMAT('+ ',A10,$)
IP1=I+1
OPEN(UNIT=IP1,DEVICE='DSK',
#FILE=FILEX,ACCESS='SEQOUT',MODE='ASCII')
GO TO (1200,1208,1216,1224,1230,1232),IP1
1200 WRITE(IP1,1204)FILI(1),TITLE
1204 FORMAT('1',37X,'RPTA - Resource utilization for ',A5,
#T115,3A5)
GO TO 1240
1208 WRITE(IP1,1212)FILI(1),TITLE
1212 FORMAT('1',33X,'RPTB - PQ1 requeue data for ',A5,
#T115,3A5)
GO TO 1240
1216 WRITE(IP1,1220)FILI(1),TITLE
1220 FORMAT('1',41X,'RPTC - Processor queue data for ',A5,
#T115,3A5)
GO TO 1240
1224 WRITE(IP1,1228)FILI(1),TITLE
1228 FORMAT('1',25X,'RPTD - Special queue data for ',A5,T115,3A5)
GO TO 1240
1230 WRITE(IP1,1231)FILI(1),TITLE
1231 FORMAT('1',25X,'RPTE - Class percentages
1 FOR ',A5,T115,3A5)
GO TO 1240
1232 WRITE(IP1,1236)FILI(1),TITLE
1236 FORMAT('1',25X,'RPTS - Summary for ',A5,
#T115,3A5)
1240 CONTINUE
TYPE 1324
IF(OPTBIT.EQ.0)GO TO 1140
C
C MAIN LOOP
C
NMINS=0
NMIN=0
1248 READ (20,1252,END=1316) (K(I),I=1,NREG),(KD1(I),KD2(I),KD3(I),
#KD4(I),I=1,NSPC),(K(I),I=NCLS,NALL)
1252 FORMAT(100I)
KX=K(1)
KY=K(2)
IF (KX.NE.25) GOTO 1249
VLINES=KY
GOTO 1248
1249 IF (KX.LT.IF1) GOTO 1248
IF (KX.EQ.IF1 .AND. KY.LT.IF2) GOTO 1248
IF (KX.EQ.IT1 .AND. KY.GT.IT2) GOTO 1316
IF (KX.GT.IT1) GOTO 1316
K1=KX
K2=KY
KB=MOD(K2,10)
KA=K2/10
IF (VMAJOR.NE.VLINES) GOTO 1900
DO 1251 I=1,NUSED
1251 ZK(I)=K(IPRI(I))
KSTOP=NPR(4)-1
DO 1250 I=KSTOP-2,KSTOP
ZK(I)=ZK(I)/60.0
1250 K(IPRI(I))=ZK(I)+0.5
ZK(3)=100.0-ZK(3)
K(IPRI(3))=100-K(IPRI(3))
ISAVE=NCLS
DO 1253 I=NCLS,NALL
IF(K(I).EQ.0)GO TO 1253
IF(I.GT.ISAVE) ISAVE=I
1253 CONTINUE
DO 1254 I=1,NSPC
DK(I)=DFLOAT(KD3(I))*34359738368.D0+DFLOAT(KD4(I))
ZKD2(I)=KD2(I)
IF(I.GT.1)GO TO 1255
ZKD2(I)=KD2(I)/60.
DK(I)=DK(I)/3600.D0
1255 ZMN(I)=0
ZSTD(I)=0
IF(KD1(I).EQ.0)GO TO 1254
ZMN(I)=ZKD2(I)/KD1(I)
IF(KD1(I).GT.1)ZSTD(I)=(DK(I)-(ZKD2(I)*ZKD2(I))/KD1(I))/
#(KD1(I)-1)
IF(ZSTD(I).LT.0)ZSTD(I)=0
ZSTD(I)=SQRT(ZSTD(I))
1254 CONTINUE
C
C OPTION HANDLING
C
1256 IDONE=ISAVE-NCLS+1
INUM=IDONE+NPR(5)
IF(INUM.GT.ISUM) ISUM=INUM
IF(INUM.GT.IPUM) IPUM=INUM
DO 1288 J=1,NOPTS
IF(.NOT.OPTION(OPT(J)))GO TO 1288
IF(LINCNT(J).LE.55)GO TO 1272
IF(LINCNT(J).NE.99999)WRITE(J,1372)TITLE
LINCNT(J)=0
IF(J.NE.1.AND.J.NE.4)WRITE(J,1260)(HD(I),I=NPR(J),NPR(J+1)-1)
IF(J.EQ.1)WRITE(J,1264)(HD(I),I=NPR(J),NPR(J+1)-1)
IF(J.EQ.4)WRITE(4,1268)(HD(I),
#I=NPR(J),NPR(J+1)-1)
1260 FORMAT(' Time',3X,18(A6,1X))
1264 FORMAT(' Time',6X,18(A10,1X))
1268 FORMAT(23X,A10,23X,A10,/,
#' TIME',1X,2(6X,'Number',7X,'Mean',7X,'STDV'))
C PRINT DATA LINE
1272 IF(J.EQ.5)GO TO 1290
IF(J.NE.1.AND.J.NE.4)WRITE(J,1276)K1,KA,KB,
#(K(IPRI(I)),I=NPR(J),NPR(J+1)-1)
IF(J.EQ.1)WRITE(J,1280)K1,KA,KB,
#(K(IPRI(I)),I=NPR(J),NPR(J+1)-1)
IF(J.EQ.4)WRITE(J,1284)K1,KA,KB,(KD1(I),ZMN(I),
#ZSTD(I),I=1,NSPC)
1276 FORMAT(I3,':',2I1,18(I6,1X))
1280 FORMAT(I3,':',2I1,18(2X,I7,2X))
1284 FORMAT(I3,':',2I1,2(I10,2X,2F11.2))
GOTO 1287
1290 II=0
DO 1291 I=NPR(J),INUM-1
II=II+1
PRTK(II)=ZK(I)/36.0
1291 CONTINUE
WRITE(J,1292)K1,KA,KB,
1(PRTK(I),I=1,IDONE)
1292 FORMAT(I3,':',2I1,1X,16F7.1)
1287 LINCNT(J)=LINCNT(J)+1
1288 CONTINUE
C
C GATHER STATS
C
NMIN=NMIN+1
NMINS=NMINS+1
DO 1294 I=1,NUSED
ZKI=ZK(I)
KI=K(IPRI(I))
TOT(I)=TOT(I)+ZKI
TOTS(I)=TOTS(I)+ZKI
X2(I)=X2(I)+ZKI*ZKI
X2S(I)=X2S(I)+ZKI*ZKI
IF(MIN(I).GT.KI)MIN(I)=KI
IF(MINS(I).GT.KI)MINS(I)=KI
IF(MAX(I).LT.KI)MAX(I)=KI
IF(MAXS(I).LT.KI)MAXS(I)=KI
1294 CONTINUE
IF(.NOT.OPTION(OPT(4).OR.OPT(NSUM)))GO TO 1297
DO 1295 I=1,NSPC
KD1TT(I)=KD1TT(I)+KD1(I)
KD1TTS(I)=KD1TTS(I)+KD1(I)
ZD2TT(I)=ZD2TT(I)+ZKD2(I)
ZD2TTS(I)=ZD2TTS(I)+ZKD2(I)
DKTT(I)=DKTT(I)+DK(I)
DKTTS(I)=DKTTS(I)+DK(I)
IF(Z2MIN(I).GT.ZMN(I))Z2MIN(I)=ZMN(I)
IF(Z2MINS(I).GT.ZMN(I))Z2MINS(I)=ZMN(I)
IF(Z2MAX(I).LT.ZMN(I))Z2MAX(I)=ZMN(I)
IF(Z2MAXS(I).LT.ZMN(I))Z2MAXS(I)=ZMN(I)
1295 CONTINUE
C
C SUMMARY
C
1297 NPR(6)=IPUM
IF(.NOT.OPTION(OPT(NSUM)))GO TO 1248
IF(NMIN.LT.1)GO TO 1248
IF (MOD(60*K1+K2,IEVERY).NE.0)GO TO 1248
DO 1298 I=NPR(5),IPUM-1
MIN(I)=MIN(I)/36
MAX(I)=MAX(I)/36
X2(I)=X2(I)/1296.0
1298 TOT(I)=TOT(I)/36.0
IF(LINCNT(NSUM)+NPR(NSUM)+10.LE.55)GO TO 1300
CHR=' '
IF(LINCNT(NSUM).NE.99999)WRITE(NSUM,1372)TITLE
LINCNT(NSUM)=0
WRITE(NSUM,1299)CHR,K1,KA,KB,FILI(1),NMIN
1299 FORMAT(A1,' Time',T24,'Mean',T32,'Std. Dev.',T45,'Min',T55,
#'Max',T61,'Total N',//,I3,':',2I1,1X,A5,' NMIN=',I4,/)
1300 CALL SUMARY(NSUM,1,NPR(4)-1,NMIN,TOT,
#X2,MAX,MIN,K1,KA,KB,FILI(1),HD)
CALL ZSUMRY(NSUM,NSPC,NMIN,KD1TT,ZD2TT,DKTT,Z2MIN,
#Z2MAX,K1,KA,KB,FILI(1),HD)
CALL SUMARY(NSUM,NPR(5),NPR(6)-1,NMIN,TOT,
#X2,MAX,MIN,K1,KA,KB,FILI(1),HD)
LINCNT(NSUM)=LINCNT(NSUM)+NPR(NSUM)+9
NMIN=0
IPUM=0
DO 1304 I=1,NUSED
TOT(I)=0
X2(I)=0
MAX(I)=0
MIN(I)=1000000
1304 CONTINUE
DO 1306 I=1,NSPC
KD1TT(I)=0
ZD2TT(I)=0
DKTT(I)=0
Z2MIN(I)=0
1306 Z2MAX(I)=0
GO TO 1248
C
C WRAP UP FOR INDIVIDUAL OPTIONS
C
1316 NPR(6)=ISUM
DO 1315 I=NPR(5),ISUM-1
MINS(I)=MINS(I)/36
MAXS(I)=MAXS(I)/36
X2S(I)=X2S(I)/1296.0
1315 TOTS(I)=TOTS(I)/36.0
IF(NMINS.LT.1)GO TO 1360
DO 1340 I=1,NOPTS
IF(.NOT.OPTION(OPT(I)))GO TO 1340
IF(LINCNT(I)+NPR(I+1)-NPR(I)+6.LE.55)GO TO 1320
C PRINT HEADER
IF(LINCNT(I).NE.99999)WRITE(I,1372)TITLE
LINCNT(I)=0
C PRINT SUMARY
1320 WRITE(I,1324)
1324 FORMAT(//)
LINCNT(I)=LINCNT(I)+5
IF(I.EQ.4)GO TO 1332
WRITE(I,1328)LF,K1,KA,KB,FILI(1),NMINS
1328 FORMAT(A1,'Totalized summary',/,' Time',T23,'Mean',T32,
#'Std. Dev.',T45,'Min',T55,'Max',//,
#I3,':',2I1,1X,A5,' NMIN=',I4,/)
II=I
CALL SUMARY(II,NPR(I),NPR(I+1)-1,NMINS,TOTS,X2S,MAXS,MINS,
#K1,KA,KB,FILI(1),HD)
LINCNT(I)=LINCNT(I)+NPR(I+1)-NPR(I)
GO TO 1340
1332 WRITE(I,1329)LF,K1,KA,KB,FILI(1),NMINS
1329 FORMAT(A1,'Totalized summary',/,' Time',T23,'Mean',T32,
#'Std. Dev.',T45,'Min',T55,'Max',T61,'Total N',//,
#I3,':',2I1,1X,A5,' NMIN=',I4,/)
CALL ZSUMRY(4,NSPC,NMINS,KD1TTS,ZD2TTS,DKTTS,Z2MINS,
#Z2MAXS,K1,KA,KB,FILI(1),HD)
LINCNT(4)=LINCNT(4)+7
1340 CONTINUE
C
C WRAP UP FOR SUMMARY
C
1344 IF(.NOT.OPTION(OPT(NSUM)))GO TO 1360
IF(MOD(60*K1+K2,IEVERY).EQ.0)GO TO 1352
IF(NMIN.LT.1)GO TO 1352
DO 1343 I=NPR(5),IPUM-1
MIN(I)=MIN(I)/36
MAX(I)=MAX(I)/36
X2(I)=X2(I)/1296.0
1343 TOT(I)=TOT(I)/36.0
IF(LINCNT(NSUM)+NPR(NSUM)+9.LE.55)GO TO 1348
C PRINT HEADER
IF(LINCNT(NSUM).NE.99999)WRITE(NSUM,1372)TITLE
LINCNT(NSUM)=0
WRITE(NSUM,1324)
LINCNT(NSUM)=LINCNT(NSUM)+2
1348 WRITE(NSUM,1299)LF,K1,KA,KB,FILI(1),NMIN
CALL SUMARY(NSUM,1,NPR(4)-1,NMIN,TOT,X2,
#MAX,MIN,K1,KA,KB,FILI(1),HD)
LINCNT(NSUM)=LINCNT(NSUM)+NPR(NSUM)+10
CALL ZSUMRY(NSUM,NSPC,NMIN,KD1TT,ZD2TT,DKTT,Z2MIN,
#Z2MAX,K1,KA,KB,FILI(1),HD)
LINCNT(NSUM)=LINCNT(NSUM)+9
CALL SUMARY(NSUM,NPR(5),IPUM-1,NMIN,TOT,X2,
1MAX,MIN,K1,KA,KB,FILI(1),HD)
1352 IF(LINCNT(NSUM)+NPR(NSUM)+9.LE.55)GO TO 1356
C PRINT HEADER
IF(LINCNT(NSUM).NE.99999)WRITE(NSUM,1372)TITLE
LINCNT(NSUM)=0
WRITE(NSUM,1324)
LINCNT(NSUM)=LINCNT(NSUM)+2
1356 WRITE(NSUM,1329)LF,K1,KA,KB,FILI(1),NMINS
CALL SUMARY(NSUM,1,NPR(4)-1,NMINS,TOTS,X2S,
#MAXS,MINS,K1,KA,KB,FILI(1),HD)
LINCNT(NSUM)=LINCNT(NSUM)+NPR(NSUM)
CALL ZSUMRY(NSUM,NSPC,NMINS,KD1TTS,ZD2TTS,DKTTS,Z2MINS,
#Z2MAXS,K1,KA,KB,FILI(1),HD)
LINCNT(NSUM)=LINCNT(NSUM)+9
CALL SUMARY(NSUM,NPR(5),NPR(6)-1,NMINS,TOTS,X2S,
1MAXS,MINS,K1,KA,KB,FILI(1),HD)
C
C INSURE ENOUGH SPACE FOR KEY
C
1360 DO 1364 I=1,NSUM-1
IF(OPTION(OPT(I)).AND.(LINCNT(I)+NPR(I+1)-NPR(I)+2).GT.55)
#WRITE(I,1372)TITLE
1364 CONTINUE
IF(OPTION(OPT(NSUM)).AND.LINCNT(NSUM)+NPR(NSUM)+2.GT.55)
#WRITE(NSUM,1372)TITLE
1368 FORMAT('1')
1372 FORMAT('1',T115,3A5)
DO 1376 I=1,NSUM
1376 IF(OPTION(OPT(I)))WRITE(I,1324)
IF(OPTION(OPT(1)))WRITE(1,1380)
IF(OPTION(OPT(NSUM)))WRITE(NSUM,1380)
1380 FORMAT(
#' Lines - Number of dial up lines active',/,
#' Jobs - Total of all jobs',/,
#' CPU-Min(%) - Percent CPU utilized in last minute',/,
#' Ovrhead(%) - Monitor overhead',/,
#' DSK-Min - # of 128 word blocks read & written on',
#1X,'public F.S. in last min',/,
#' SWP-Min - # of 128 word blocks swapped to and from',
#1x,'core in the last min',/,
#' TTY-Buf(%) - Percent of teletype buffer space in use',/,
#' C.B.(%) - Percent of 4 word core blocks used',/,
#' SWAP-K(%) - Percent of available swapping space used')
IF(OPTION(OPT(2)))WRITE(2,1384)
IF(OPTION(OPT(NSUM)))WRITE(NSUM,1384)
1384 FORMAT(
#' DTASL - DTA generated sleeps',/,
#' MTASL - MTA generated sleeps',/,
#' EWCNT - EW satisfied',/,
#' TISJB - TTY input satisfied',/,
#' TOSJB - TTY output satisfied',/,
#' PISJB - PTY input satisfied',/,
#' POSJB - PTY output satisfied',/,
#' REQSS - Requeues from SS into PQ1',/,
#' REQWK - Requeues from wake into PQ1',/,
#' REQJSD - Requeues from DAEMON satisfied into PQ1',/,
#' REQPQ1 - Total requeues into PQ1')
IF(OPTION(OPT(3)))WRITE(3,1388)
IF(OPTION(OPT(NSUM)))WRITE(NSUM,1388)
1388 FORMAT(
#' XPQRP1 - Jobs in PQ1 which expired quantum run time',/,
#' XPQRP2 - Jobs in PQ2 which expired quantum run time',/,
#' XPQRHP - Jobs in HPQ which expired quantum run time',/,
#' XPICP1 - Jobs in PQ1 which expired incore protect',/,
#' XPICP2 - Jobs in PQ2 which expired incore protect',/,
#' XPICHP - Jobs in HPQ which expired incore protect',/,
#' SWPKP1 - Number of K swapped in for PQ1 jobs',/,
#' SWPKP2 - Number of K swapped in for PQ2 jobs',/,
#' SWPKHP - Number of K swapped in for HPQ jobs',/,
#' SWPJP1 - Number of PQ1 jobs swapped in',/,
#' SWPJP2 - Number of PQ2 jobs swapped in',/,
#' SWPJHP - Number of HPQ jobs swapped in',/,
#' RNTPQ1 - Seconds charged to PQ1',/,
#' RNTPQ2 - Seconds charged to PQ2',/,
#' RNTHPQ - Seconds charged to HPQS')
IF(OPTION(OPT(4)))WRITE(4,1392)
IF(OPTION(OPT(NSUM)))WRITE(NSUM,1392)
1392 FORMAT(
#' Swap times - Number of seconds for swapping in jobs in PQ1 an',
#'d CMQ'/,
#' Waste pags - pages of swapable jobs not in processor queue')
1400 IF(OPTION(OPT(5)))WRITE(5,1410)
IF(OPTION(OPT(NSUM)))WRITE(NSUM,1410)
1410 FORMAT( ' CLAS N - Percent runtime for class N')
CALL EXIT
C
C HERE IF VERSION NUMBERS DO NOT MATCH
C
1900 TYPE 1901,VLINES,VMAJOR,K1,KA,KB
1901 FORMAT (' ? Version number of data file ('I2,
2 ') does not match LNSRPT ('I2,') at time 'I3,':'2I1)
CALL EXIT
END
SUBROUTINE SUMARY(IUNIT,NPRA,NPRB,NMIN,TOT,X2,MAX,MIN,K1,KA,KB,
#DATE,HD)
DOUBLE PRECISION HD
DIMENSION HD(1),TOT(1),X2(1),MAX(1),MIN(1)
DO 2108 I=NPRA,NPRB
AMEAN=TOT(I)/NMIN
STDV=0
IF(NMIN.GT.1)STDV=(X2(I)-(TOT(I)*TOT(I))/NMIN)/(NMIN-1)
IF(STDV.LT.0)STDV=0
STDV=SQRT(STDV)
MINP=MIN(I)
MAXP=MAX(I)
2107 WRITE(IUNIT,2112)HD(I),AMEAN,STDV,MINP,MAXP
2108 CONTINUE
2112 FORMAT(7X,A10,2F10.2,2I10)
RETURN
END
SUBROUTINE ZSUMRY(IUNIT,NSPC,NMIN,KD1TT,ZD2TT,DKTT,Z2MIN,
#Z2MAX,K1,KA,KB,DATE,HD)
DOUBLE PRECISION HD,DKTT
DIMENSION HD(1),DKTT(1)
DIMENSION KD1TT(1),ZD2TT(1),Z2MIN(1),Z2MAX(1)
DO 3104 I=1,NSPC
AMEAN=0
STDV=0
IF (KD1TT(I).NE.0) AMEAN=ZD2TT(I)/KD1TT(I)
IF(KD1TT(I).GT.1)STDV=(DKTT(I)-(ZD2TT(I)*DBLE(ZD2TT(I)))/
#KD1TT(I))/(KD1TT(I)-1)
IF(STDV.LT.0)STDV=0
STDV=SQRT(STDV)
WRITE(IUNIT,3108)HD(35+I),AMEAN,STDV,Z2MIN(I),Z2MAX(I),KD1TT(I)
3104 CONTINUE
3108 FORMAT(7X,A10,2F10.2,2F10.2,I10)
RETURN
END