*                                                                       GRPH0001
* CPV MULTIPROGRAMMING DIAGRAM - V. HUBER                               GRPH0002
*                                                                       GRPH0003
*     ASSIGN F:1 TO :ACCTLG (CPV & UTS)                                 GRPH0004
*     ASSIGN F:2 TO UTSPM (UTS ONLY) RUNNING CPU DISPLAY ONLY           GRPH0005
*     ASSIGN F:2 TO STATS (CPV ONLY) RUNNING CPU DISPLAY ONLY
*     IT IS BEST TO DELETE :ACCTLG JUST PRIOR TO RUN                    GRPH0006
*                                                                       GRPH0007
*                                                                       GRPH0008
*     D A T A    S T R U C T U R E S                                    GRPH0009
*                                                                       GRPH0010
* DATA IS THE ARRAY THAT CONTAINS THE ONTIME,OFTIME                     GRPH0011
*     NAME AND NEXT INFORMATION.  THIS IS A LINKED LIST                 GRPH0012
*     EACH LIST OF WHICH REPRESENTS THE JOBS RUN IN ONE                 GRPH0013
*     PARTITION.  HEADS OF CHAINS ARE POINTED TO BY                     GRPH0014
*     THE VECTOR PART                                                   GRPH0015
* PART IS A VECTOR WHOSE ELEMENTS ARE SUBSCRIPTS INTO                   GRPH0016
*     THE DATA ARRAY.  IN EACH CASE, THE FIRST ELEMENT                  GRPH0017
*     IS THAT WHOSE START TIME IS THE LOWEST.  THIS IS                  GRPH0018
*     TRUE AT ALL TIMES, EVEN IN THE GRAPHING.  THIS IS                 GRPH0019
*     ACCOMPLISHED BY ADJUSTING THE CAHAINS TO POINT                    GRPH0020
*     AROUND THOSE JOBS IN EACH PARTITION WHOSE TIMES HAVE PASS         GRPH0021
*     ED.  BUT MORE ABOUT THIS LATER.                                   GRPH0022
*     IS READ.  SEE UTS SYS MAN. GUIDE FOR FORMAT.                      GRPH0024
* PARTBUF IS A VECTOR THAT IS PRINTED ONCE EACK MINUTE.                 GRPH0025
*     ITS CONTENTS CAN BE EITHER BLANKS(NO JOB RUNNING                  GRPH0026
*     IN THAT PARTITION) OR A DOT  (JOB CURRENTLY EXECUTING)            GRPH0027
* GRAPH CHOOSES THOSE ITEMS TO BE GRAPHED FROM UTSPM DISPLAY            GRPH0028
* NAMES (WHICH INCLUDES SYMBOL) CONTAINS NAMES AND                      GRPH0029
*     ASSOCIATED SYMBOL OF UTSPM DISPLAY                                GRPH0030
* UTSPM IS A REAL VECTOR WHOSE ITH COMPONENT IS                         GRPH0031
*     THE ITH VALUE OF THE CURRENT UTSPM STATISTIC                      GRPH0032
*     AS DEFINED IN NAMES                                               GRPH0033
* TABS IS A VECTOR WHOSE ITH COMPONENT IS THE TAB VALUE                 GRPH0034
*     OF THE ITH COMPONENT OF UTSPM.  CONVERSION FROM REAL              GRPH0035
*     PERCENTAGE TO TAB VALUE IS PERFORMED BY SUBROUTINE                GRPH0036
*     CONVERT                                                           GRPH0037
* DATE IS A 2 COLUMN ARRAY USED TO CALCULATE JULIAN DATE                GRPH0038
*     FROM 'MONTH DAY'  AND VICE-VERSA.  VALUES ARE SET                 GRPH0039
*     BY DATA STATEMENT IN BURST.  LEAP YEAR IS RECOGNIZED.             GRPH0040
*  WAITSEL CHOOSES THOSE ITEMS WHICH ARE TO BE                          GRPH0041
*     ADDED TO DETERMINE TOTAL WAIT                                     GRPH0042
*                                                                       GRPH0043
*     S U B R O U T I N E S                                             GRPH0044
*                                                                       GRPH0045
*     FROM THE ACCTLG.  IT AND SUMMARY ARE PART OF THE                  GRPH0047
*     SAME SUBROUTINE                                                   GRPH0048
*                                                                       GRPH0049
*     HEADING WRITES THE PAGE HEADER USED AT THE TOP                    GRPH0050
*     OF EACH PAGE DURING THE GRAPHING.                                 GRPH0051
*                                                                       GRPH0052
*     CONVERT FIGURES THE TAB VALUES FROM REAL PER-                     GRPH0053
*     CENTAGES PASSED TO IT AS ARGUMENTS                                GRPH0054
*                                                                       GRPH0055
*     PRINTOUT PRODUCES A QUICK SUMMARY OF THE JOBS RUN                 GRPH0056
*     IN EACH PARTITION.  USED ONLY FOR ERRORS AND DEBUGGING.           GRPH0057
*                                                                       GRPH0058
*     GETPM READS IN UTSPM/STATS DISPLAY & CALCULATES TIME
*     INTERVAL.  TIME CROSSING MIDNIGHT IS HANDLED;                     GRPH0060
*     RECOGNIZED WHEN DAY OF DISPLAY IS GREATER THAN                    GRPH0061
*     EARLIEST DATE FROM ACCOUNTING LOG WHICH IS                        GRPH0062
*     RECORDED IN GLOBAL CELL 'DAY1'                                    GRPH0063
*                                                                       GRPH0064
*     SELECT SETS VALUES OF GRAPH VECTOR AS REQUESTED                   GRPH0065
*     BY THE USER.                                                      GRPH0066
*                                                                       GRPH0067
*                                                                       GRPH0068
*                                                                       GRPH0070
*                                                                       GRPH0071
*     A S S U M P T I O N S                                             GRPH0072
*                                                                       GRPH0073
*     NONE                                                              GRPH0074
*                                                                       GRPH0075
*                                                                       GRPH0076
*                                                                       GRPH0077
*                                                                       GRPH0078
      IMPLICIT INTEGER(A-Z)                                             GRPH0079
      REAL TOTWAIT,UTSPM,TUTSPM,AUTSPM,TOTIME,AVGWAIT,ELAPTIME          GRPH0080
      LOGICAL FIRSTIME,GRAPH,WAITSEL,STILLON                            GRPH0081
      LOGICAL PRINT2                                                    GRPH0082
      LOGICAL NONUM                                                     GRPH0083
*                                                                       GRPH0084
      DIMENSION NAMES(10,4),SYMBOL(10)                                  GRPH0085
      DIMENSION UTSPM(9),TUTSPM(9),TABS(10),AUTSPM(9)                   GRPH0086
      DIMENSION GRAPH(9),DATE(16),WAITSEL(9)                            GRPH0087
      DIMENSION DATA(4,3)                                               GRPH0088
      DIMENSION PART(16),STILLON(16),LASTJOB(16)                        GRPH0089
      INTEGER MINSEC(4)                                                 GRPH0090
      DIMENSION PARTBUF(16),ANSBUF(72)                                  GRPH0091
      DIMENSION BUFF(0:40)                                              GRPH0092
      DIMENSION PATCH(20)                                               GRPH0093
*                                                                       GRPH0094
      DATA PATCH/20*0/                                                  GRPH0095
      DATA TABS,SECFLAG/10*140,1/                                       GRPH0096
      DATA LPPAGE/30/                                                   GRPH0097
      DATA SIXTY/60/                                                    GRPH0098
      DATA ONTIME,OFTIME,NAME,NEXT/1,2,3,4/                             GRPH0099
* THE ABOVE ARE USED AS SYMBOLIC SUBSCRIPTS INTO DATA                   GRPH0100
      DATA DOT/' .  '/                                                  GRPH0101
      DATA BLANKS/'    '/                                               GRPH0102
      DATA LINENO,PARTNUM,TIMEON,TIMEOFF/12,32,15,16/                   GRPH0103
      DATA EXTACT,YES,MINS/5,'Y','M'/                                   GRPH0104
      DATA ((NAMES(I,J),J=1,4),I=1,10)  /                               GRPH0105
     & 'ON-LINE EXEC','-   ',                                           GRPH0106
     & 'ON-LINE SERV','/   ',                                           GRPH0107
     & 'BATCH EXEC  ','.   ',                                           GRPH0108
     & 'BATCH SERV  ',':   ',                                           GRPH0109
     & 'MONITOR SERV','*   ',                                           GRPH0110
     & 'IDLE        ','''   ',                                          GRPH0111
     & 'SWAP WAIT   ','#   ',                                           GRPH0112
     & 'I/O WAIT    ','=   ',                                           GRPH0113
     & 'SWP&I/O WAIT',',   ',                                           GRPH0114
     & 'TOTAL WAIT  ','+   '/                                           GRPH0115
      DATA MINSEC/'MINUTE *','SECOND *'/                                GRPH0117
      DATA SECPDAY/86400/                                               GRPH0118
      DATA CFLAG/1/                                                     GRPH0119
*                                                                       GRPH0120
      DATA ONLINEFLAG/1/                                                GRPH0121
*                                                                       GRPH0122
* DATA FOR SYSTEM SUMMARIES                                             GRPH0123
*                                                                       GRPH0124
      REAL MSPIOTOTS(3)                                                 GRPH0125
      DIMENSION CPUTOTS(5,3),IOTOTS(4,3),IOTIME(3),PARTOTS(16,10)       GRPH0126
      REAL CPUTOTS,IOTOTS,IOTIME,PARTOTS,WAITIME,ETMF,TOTCPU            GRPH0127
      REAL AVONLINE,TOTONLINE,AVBATCH,TOTBATCH,AV,TOT,CORETOTS          GRPH0128
      REAL ETMF,SERVPCAL,CALPACC,ACCPMIN,CALPMIN,MSECPIO                GRPH0129
      GLOBAL CPUTOTS,IOTOTS,IOTIME,PARTOTS,USERTOTS,DOUG                GRPH0130
*                                                                       GRPH0131
* ACCESS FOR ABOVE:                                                     GRPH0132
*   CPUTOTS & IOTOTS: COL. IS <ONLINE,BATCH,TOTAL>                      GRPH0133
*   CPUTOTS           ROW IS <PEXEC,PSERV,UEXEC,USERV,TOTAL>            GRPH0134
*   IOTOTS            ROW IS <TAPE,RAD,DISC,TOTAL,CORESIDENCY>          GRPH0135
*   IOTIME            '                    '                            GRPH0136
*   PARTOTS           ROW IS PARTITION #                                GRPH0137
*                     COL IS <IOWAIT,CPU,MSECPIO,STDEV,                 GRPH0138
*                                                                       GRPH0140
      WAITIME(USER)=(IOTOTS(1,USER)*IOTIME(1)                           GRPH0141
     &             +IOTOTS(2,USER)*IOTIME(2)                            GRPH0142
     &              +IOTOTS(3,USER)*IOTIME(3))/60000.                   GRPH0143
*                                                                       GRPH0144
      DIMENSION CORETOTS(3),COREMEANS(3),COREDEVS(3),USERTOTS(3)        GRPH0145
      DIMENSION MSPIOMEANS(3),MSPIODEVS(3)                              GRPH0146
      REAL CORETOTS,COREMEANS,COREDEVS,MSPIOMEANS,MSPIODEVS             GRPH0147
      GLOBAL CORETOTS,COREMEANS,COREDEVS,MSPIOMEANS,MSPIODEVS           GRPH0148
      REAL CPUTOTS,IOTOTS,IOTIME,PARTOTS,CORETOTS,MSPIOTOTS             GRPH0149
      DATA IOTIME/5.,20.,50./                                           GRPH0150
*                                                                       GRPH0151
      EQUIVALENCE(NAMES(1,4),SYMBOL(1))                                 GRPH0152
      COMMON/LABELED/PART,NEXT                                          GRPH0153
      GLOBAL SECFLAG,DAY1,LPPAGE,NCOPIES,LOTIME,LOWID,TCALS             GRPH0154
      GLOBAL BUFF,PATCH,ONLINEFLAG,DATA,DBFLAG,GRAPH,SAVEFREE,CFLAG     GRPH0155
      GLOBAL NCOPIES,VERSION,STATSOK,LOWID,HR,MIN                       GRPH0156
      DATA   NCOPIES,VERSION,STATSOK,LOWID,HR,MIN/1,1,1,0,0,0/          GRPH0157
*                                                                       GRPH0158
*                                                                       GRPH0159
*                                                                       GRPH0160
*                                                                       GRPH0161
*                                                                       GRPH0163
* ------  I N I T I A L I Z E    ---------                              GRPH0164
*                                                                       GRPH0165
*                                                                       GRPH0166
*                                                                       GRPH0167
*                                                                       GRPH0168
*                                                                       GRPH0169
*                                                                       GRPH0170
      FREE=1                                                            GRPH0171
      CALL INIT(FREE)                                                   GRPH0172
      SAVEFREE=FREE                                                     GRPH0173
      DO 2 I=1,5                                                        GRPH0174
      DO 2 J=1,3                                                        GRPH0175
2     CPUTOTS(I,J)=0                                                    GRPH0176
      DO 4 I=1,4                                                        GRPH0177
      DO 4 J=1,3                                                        GRPH0178
4     IOTOTS(I,J)=0                                                     GRPH0179
      DO 6 I=1,16                                                       GRPH0180
      DO 6 J=1,10                                                       GRPH0181
6     PARTOTS(I,J)=0                                                    GRPH0182
      DO 8 I=1,3                                                        GRPH0183
      USERTOTS(I)=0                                                     GRPH0184
      NUTSPM=9                                                          GRPH0186
      FIRSTIME=.TRUE.                                                   GRPH0187
      TCALS=0                                                           GRPH0188
      NOGRAPH=NEVERGRAPH=0                                              GRPH0189
      TEN=CONVERT(10.)                                                  GRPH0190
      PRINT2=.FALSE.                                                    GRPH0191
      ESEC=TOFF=TOTMINS=TIME=-1                                         GRPH0192
      SSEC=DAY1=TON=1000000                                             GRPH0193
      DO 10 I=1,16                                                      GRPH0194
      DATE(I)=370                                                       GRPH0195
10    PART(I)=LASTJOB(I)=0                                              GRPH0196
*                                                                       GRPH0197
      DO 20 I=1,NUTSPM                                                  GRPH0198
      UTSPM(I)=TUTSPM(I)=0.                                             GRPH0199
20    WAITSEL(I)=GRAPH(I)=.FALSE.                                       GRPH0200
* SELECT BATCHEXEC, MON SERV, SW WAIT TO GRAPH                          GRPH0201
      GRAPH(1)=GRAPH(3)=GRAPH(5)=GRAPH(8)=.TRUE.                        GRPH0202
* SELECT COMPONENTS OF WAIT                                             GRPH0203
      WAITSEL(9)=WAITSEL(6)=WAITSEL(7)=WAITSEL(8)=.TRUE.                GRPH0204
      BIN=1                                                             GRPH0205
      BLOGS=BATACCPT=OLOGS=TLOGS=0                                      GRPH0206
      OUTPUT 'GRAPHER E00 HERE'                                         GRPH0207
      READ(105,30) ANS                                                  GRPH0209
30    FORMAT(A1)                                                        GRPH0210
      IF (ANS.NE.YES) GO TO 40                                          GRPH0211
*                                                                       GRPH0212
*    ---- TELL USER HOW TO RUN GRAPHER  -------                         GRPH0213
*                                                                       GRPH0214
      OUTPUT 'TO RUN GRAPHER'                                           GRPH0215
      OUTPUT ' SET F:1 /ACCTLG'                                         GRPH0216
      OUTPUT ' SET F:2 /STATSLO'                                        GRPH0217
      OUTPUT ' GRAPH.'                                                  GRPH0218
      OUTPUT ' WHERE STATSLO IS OUTPUT (EBCDIC, NOT HISTORY FILE)'      GRPH0219
      OUTPUT ' OF STATS CONTAINING CPU (AND ANY OTHER) DISPLAY.'        GRPH0220
      OUTPUT ' OMIT F:2 ASSIGNMENT IF NO STATSLO IS PRESENT.'           GRPH0221
      OUTPUT ' ANY TIME INTERVAL IS PERMISSABLE FOR STATS'              GRPH0222
      OUTPUT ' SEE 890804-11 FOR FURTHER DETAILS'                       GRPH0223
      OUTPUT ' '                                                        GRPH0224
      OUTPUT 'GRAPHER HAS SEVERAL EXECUTION PARAMETERS'                 GRPH0225
      OUTPUT 'THESE ARE SET AT COMPILE TIME ONLY AND ARE ALSO GLOBAL.'  GRPH0226
      OUTPUT 'THIS ENABLES THEM TO BE PERMAENTLY ALTERED WITH GENMD'    GRPH0227
      OUTPUT 'TO SUIT YOUR NEEDS.'                                      GRPH0228
      OUTPUT ' TO USE GENMD:'                                           GRPH0229
      OUTPUT ' GENMD.X GRAPH'                                           GRPH0230
      OUTPUT ' E T C .'                                                 GRPH0232
      OUTPUT ' END'                                                     GRPH0233
      OUTPUT ' '                                                        GRPH0234
      OUTPUT 'IN ADDITION, THE GRAPHER PARAMETERS CAN BE MODIFIED'      GRPH0235
      OUTPUT 'AT RUNTIME BY THE USER FOR THAT PARTICULAR RUN.'          GRPH0236
      OUTPUT 'THIS IS DONE USING THE ''NAMELIST'' OPTION'               GRPH0237
      OUTPUT 'THE FORM OF THIS COMMAND IS AS FOLLOWS:'                  GRPH0238
      OUTPUT ' <VARIABLE> = <VALUE> |;<VARIABLE> = <VALUE>.....~'       GRPH0239
      OUTPUT ' TERMINATE WITH AN ASTERISK, USE AS '                     GRPH0240
      OUTPUT ' MANY LINES AS NECESSARY.'                                GRPH0241
      OUTPUT ' '                                                        GRPH0242
      OUTPUT ' '                                                        GRPH0243
      OUTPUT 'THE GRAPHER PARAMETERS ARE AS FOLLOWS'                    GRPH0244
      OUTPUT 'DOUG'                                                     GRPH0245
      OUTPUT ' 0 = BURST SHEETS'                                        GRPH0246
      OUTPUT '     1 SET OF 1 LINE SUMMARIES'                           GRPH0247
      OUTPUT '     NO PROFILES'                                         GRPH0248
      OUTPUT ' 1 = BURST SHEETS'                                        GRPH0249
      OUTPUT '     2 SETS OF 1 LINE SUMMARIES'                          GRPH0250
      OUTPUT '     PROFILES'                                            GRPH0251
      OUTPUT ' 2 = SAME AS 1, BUT NO BURST SHEETS'                      GRPH0252
      OUTPUT '     SAVES QUITE A BIT OF PAPER & TIME'                   GRPH0253
      OUTPUT ' '                                                        GRPH0254
      OUTPUT 'SECFLAG'                                                  GRPH0255
      OUTPUT ' 0 = MINUTES IN ACCTLG'                                   GRPH0256
      OUTPUT ' 1 = SECONDS IN ACCTLG'                                   GRPH0257
      OUTPUT '     TO GET SECONDS, RESYSGEN AFTER RE-ASSEMBLING'        GRPH0258
      OUTPUT '     JOBR, ACCTSUM, LOGON & TEL SETTING'                  GRPH0259
      OUTPUT '     "FORSEC" TO 1'                                       GRPH0260
      OUTPUT '      CP-V ONLY'                                          GRPH0261
      OUTPUT ' '                                                        GRPH0262
      OUTPUT 'CFLAG'                                                    GRPH0263
      OUTPUT ' 0 = SUPPRESS PROFILE DISPLAY'                            GRPH0264
      OUTPUT ' 1 = PRODUCE'                                             GRPH0265
      OUTPUT '     THIS IS ONE OF THE MOST ILLUMINATING'                GRPH0266
      OUTPUT '      DISPLAYS IN GRAPHER'                                GRPH0267
      OUTPUT ' '                                                        GRPH0268
      OUTPUT 'LOWID'                                                    GRPH0269
      OUTPUT ' ID BELOW WHICH BATCH RECORDS IGNORED'                    GRPH0270
      OUTPUT ' ON-LINE RECORDS NOT IGNORED THIS WAY'                    GRPH0271
      OUTPUT ' '                                                        GRPH0272
      OUTPUT 'HR,MIN'                                                   GRPH0273
      OUTPUT ' HR & MIN BELOW WHICH BATCH RECORDS IGNORED'              GRPH0274
      OUTPUT ' ON-LINE RECORDS NOT IGNORED THIS WAY'                    GRPH0275
      OUTPUT ' DO NOT USE IF GRAPHING MORE THAN 1 DAY'                  GRPH0276
      OUTPUT ' '                                                        GRPH0277
      OUTPUT ' 0 = REJECT ALL ON-LINE RECORDS'                          GRPH0279
      OUTPUT ' 1 = ACCEPT'                                              GRPH0280
      OUTPUT ' '                                                        GRPH0281
      OUTPUT 'NCOPIES - # COPIES OF OUTPUT'                             GRPH0282
      OUTPUT ' '                                                        GRPH0283
      OUTPUT 'STATSOK'                                                  GRPH0284
      OUTPUT ' 0 = CHOOSE EACH STATS STATISTIC TO BE GRAPHED'           GRPH0285
      OUTPUT ' 1 = ACCEPT DEFAULT (BATCH & ON-LINE CPU, MON SERV,'      GRPH0286
      OUTPUT '     IOWAIT, TOTAL WAIT'                                  GRPH0287
      OUTPUT ' '                                                        GRPH0288
      OUTPUT 'VERSION'                                                  GRPH0289
      OUTPUT ' 0 = UTS'                                                 GRPH0290
      OUTPUT ' 1 = CPV'                                                 GRPH0291
      OUTPUT '      MEANING USE LDEV CAPABILITY FOR WRITING'            GRPH0292
      OUTPUT '      BOTH SINGLE & MULTIPLE COPIES; MUCH FASTER.'        GRPH0293
      OUTPUT '      FOR UTS SYSTEM DESIRING ONLY 1 COPY:'               GRPH0294
      OUTPUT '          SET F:6 LP;VFC'                                 GRPH0295
      OUTPUT '  *** WARNING ***'                                        GRPH0296
      OUTPUT '   BE SURE ASSEMBLY FLAG ''CPV'' IS SET PROPERLY'         GRPH0297
      OUTPUT '   IN GRPGSI'                                             GRPH0298
      OUTPUT ' '                                                        GRPH0299
      OUTPUT 'LPPAGE - # LINES PER PAGE (GENMD ONLY)'                   GRPH0300
      OUTPUT ' '                                                        GRPH0302
      OUTPUT 'YOU WILL NOW SEE THE DEFAULT VALUES'                      GRPH0303
      OUTPUT 'MAKE ANY CHANGES VIA NAMELIST FOLLOWING THIS PROMPT:'     GRPH0304
      OUTPUT ' CHANGE DEFAULTS:'                                        GRPH0305
      OUTPUT 'IF NO CHANGES, TYPE AN ASTERICK'                          GRPH0306
      OUTPUT 'GOOD LUCK'                                                GRPH0307
      OUTPUT ' '                                                        GRPH0308
      OUTPUT ' '                                                        GRPH0309
40    OUTPUT DOUG,SECFLAG,CFLAG,LOWID,HR,MIN,ONLINEFLAG,                GRPH0310
     &   NCOPIES,STATSOK,VERSION                                        GRPH0311
      OUTPUT 'CHANGE DEFAULTS:'                                         GRPH0312
      NAMELIST DOUG,SECFLAG,CFLAG,LOWID,HR,MIN,ONLINEFLAG,              GRPH0313
     &   NCOPIES,STATSOK,VERSION                                        GRPH0314
      INPUT                                                             GRPH0315
      OUTPUT 'INPUT ACCEPTED',' '                                       GRPH0316
      LOTIME=60*(HR*60+MIN)                                             GRPH0317
      IF (VERSION.GT.0) CALL LDEV                                       GRPH0318
*                                                                       GRPH0319
* ------ P R I N T   T I T L E   P A G E   --------                     GRPH0320
*                                                                       GRPH0321
*                                                                       GRPH0322
      WRITE(6,240)                                                      GRPH0323
50    FORMAT('1',10/,T30,'C P-V   M U L T I P R O G R A M M I N G ',    GRPH0325
     &       '  D I A G R A M ',///)                                    GRPH0326
55    OUTPUT 'TITLE & DESC.'                                            GRPH0327
      WRITE(6,60)                                                       GRPH0328
60    FORMAT('1',/////,T30,'T I T L E ',/)                              GRPH0329
      READ(105,630)ANSBUF                                               GRPH0330
      I=72                                                              GRPH0331
70    IF(ANSBUF(I).NE.BLANKS)NCHARS=I;GOTO 80                           GRPH0332
      I=I-1                                                             GRPH0333
      IF(I.GE.1)GOTO 70                                                 GRPH0334
80    IF(NCHARS.GT.33)GOTO 90                                           GRPH0335
      WRITE(6,100)(ANSBUF(I),I=1,NCHARS)                                GRPH0336
      GOTO 115                                                          GRPH0337
90    WRITE(6,110)(ANSBUF(I),I=1,NCHARS)                                GRPH0338
100   FORMAT(T40,72(A1,1X))                                             GRPH0339
110   FORMAT(T40,72A1)                                                  GRPH0340
S 115 NOP                                                               GRPH0341
      WRITE(6,120)                                                      GRPH0342
120   FORMAT(///,T30,'D E S C R I P T I O N ',/)                        GRPH0343
130   READ(105,630,END=150)ANSBUF                                       GRPH0344
      WRITE(6,140)ANSBUF                                                GRPH0345
140   FORMAT(T40,72A1)                                                  GRPH0346
150   WRITES=-1                                                         GRPH0348
*                                                                       GRPH0349
*                                                                       GRPH0350
*---- INITILAIZE GRAPH                                                  GRPH0351
*                                                                       GRPH0352
      IF(STATSOK.EQ.0)CALL SELECT(GRAPH,NAMES,NUTSPM)                   GRPH0353
*                                                                       GRPH0354
*                                                                       GRPH0355
* END OF TITLE PAGE                                                     GRPH0356
*                                                                       GRPH0357
*        FREE IS USED TO MARK AVAILABLE ROWS IN DATA                    GRPH0358
*                                                                       GRPH0359
*                                                                       GRPH0360
*                                                                       GRPH0361
* --- R E A D   I N   A N D   C H A I N   D A T A   ----                GRPH0362
*                                                                       GRPH0363
*                                                                       GRPH0364
*                                                                       GRPH0365
*                                                                       GRPH0366
*                                                                       GRPH0367
*                                                                       GRPH0368
*                                                                       GRPH0369
      GOTO(610,170,230,610),ENDACTION                                   GRPH0371
170   TLOGS=TLOGS+1                                                     GRPH0372
*                                                                       GRPH0373
*                                                                       GRPH0374
*                                                                       GRPH0375
S     LB,1     BUFF+12     GET LINE NUMBER OF USER                      GRPH0376
S     STW,1    BATCH       SAVE                                         GRPH0377
S     LH,1     BUFF+19     GET SYSID                                    GRPH0378
S     STW,1    ID          SAVE                                         GRPH0379
*                                                                       GRPH0380
* IF NO NAME, USE SYSID                                                 GRPH0381
*                                                                       GRPH0382
      IF(BUFF(EXTACT).EQ.0.OR.BUFF(EXTACT).EQ.BLANKS)                   GRPH0383
     &               ENCODE (4,173,BUFF(EXTACT)) ID                     GRPH0384
173   FORMAT(Z4)                                                        GRPH0385
*                                                                       GRPH0386
*                                                                       GRPH0387
      IF(BATCH.GE.255)BLOGS=BLOGS+1;  GO TO 175                         GRPH0388
      OLOGS=OLOGS+1                                                     GRPH0389
      IF(ONLINEFLAG.GT.0) CALL BURST                                    GRPH0390
      GOTO 160                                                          GRPH0391
S175   LI,1     1         INDEX FOR PARTITION                           GRPH0392
S     STW,2    PNO       SAVE                                           GRPH0394
S     INT,1 BUFF+14                                                     GRPH0395
S     STW,1 SDATE                                                       GRPH0396
S     INT,1 BUFF+18                                                     GRPH0397
S     STW,1 EDATE                                                       GRPH0398
      IF (SDATE.EQ.0.OR.EDATE.EQ.0)                                     GRPH0399
     &   OUTPUT 'BAD DATE',OLOGS,BLOGS,OLOGS+BLOGS;                     GRPH0400
     &   SAVEDOUG=DOUG; DOUG=1;                                         GRPH0401
     &   CALL BURST;    DOUG=SAVEDOUG;                                  GRPH0402
     &   OUTPUT(6) 'THAT WAS A BAD LOG....','1';                        GRPH0403
     &   GO TO 160                                                      GRPH0404
      STIME=BUFF(TIMEON)                                                GRPH0405
      ETIME=BUFF(TIMEOFF)                                               GRPH0406
      IF(SECFLAG.EQ.0)STIME=STIME*60;ETIME=ETIME*60                     GRPH0407
      IF(ID.LT.LOWID.OR.STIME.LT.LOTIME)GOTO    160                     GRPH0408
*                                                                       GRPH0409
*                                                                       GRPH0410
* SEE IF PLACE TO BE CHAINED IS PART VECTOR                             GRPH0411
*                                                                       GRPH0412
*     DATA(NEXT,FREE)=0                                                 GRPH0413
      BATACCPT=BATACCPT+1                                               GRPH0414
      IF(PART(PNO).EQ.0)PART(PNO)=FREE;GOTO 190                         GRPH0415
*                                                                       GRPH0416
* NO, IT IS IN DATA; GET LAST EELEMENT                                  GRPH0417
*                                                                       GRPH0418
      INDEX=LASTJOB(PNO)                                                GRPH0419
*                                                                       GRPH0420
* MAKE SURE IT THE LAST                                                 GRPH0421
*                                                                       GRPH0422
180   IF(DATA(NEXT,INDEX).GT.0)INDEX=DATA(NEXT,INDEX);GOTO 180          GRPH0423
*                                                                       GRPH0424
      DATA(NEXT,INDEX)=FREE                                             GRPH0425
*                                                                       GRPH0426
*                                                                       GRPH0427
* ---- JOB IS CHAINED, NOW INITALIZE HIS SPOT IN 'DATA'                 GRPH0428
*                                                                       GRPH0429
190   IF(SDATE.EQ.EDATE.AND.STIME.GT.ETIME)ETIME=STIME;  OUTPUT '**'    GRPH0430
      DATA(ONTIME,FREE)=STIME                                           GRPH0431
      DATA(OFTIME,FREE)=ETIME                                           GRPH0432
      IF(SDATE.LT.DATE(PNO))DATE(PNO)=SDATE                             GRPH0433
      IF(SDATE.LT.DAY1)DAY1=SDATE                                       GRPH0434
210   DATA(NAME,FREE  )=BUFF(EXTACT)                                    GRPH0435
*                                                                       GRPH0436
* SET LASTJOB HERE SO CAN FIND END OF CHAIN EASILY                      GRPH0437
*                                                                       GRPH0438
      LASTJOB(PNO)=FREE                                                 GRPH0439
      FREE=FREE+1                                                       GRPH0441
      J=FREE-1                                                          GRPH0442
220   FORMAT(' JOB ',A4,' ENTERED INTO P',                              GRPH0443
     &       I2,' AT',I8,' OFF AT',I8)                                  GRPH0444
      CALL BURST                                                        GRPH0445
      GOTO 160                                                          GRPH0446
*                                                                       GRPH0447
*                                                                       GRPH0448
*                                                                       GRPH0449
*     E N D    O F    F I R S T   P A R T                               GRPH0450
*                                                                       GRPH0451
*                                                                       GRPH0452
*                                                                       GRPH0453
*                                                                       GRPH0454
*                                                                       GRPH0455
*                                                                       GRPH0456
*                                                                       GRPH0457
230   WRITE(108,907) TLOGS,OLOGS,BLOGS,BATACCPT                         GRPH0458
*                                                                       GRPH0459
*   PRODUCE LINI BY LINE SUMMARY OF JOBS                                GRPH0460
*                                                                       GRPH0461
      CALL SUMMARY                                                      GRPH0462
*                                                                       GRPH0464
240   FORMAT('1')                                                       GRPH0465
*                                                                       GRPH0466
*                                                                       GRPH0467
*                                                                       GRPH0468
*                                                                       GRPH0469
*                                                                       GRPH0470
*                                                                       GRPH0471
*                                                                       GRPH0472
      IF(FREE.GT.0)GOTO 250                                             GRPH0473
      OUTPUT'NO BATCH JOBS'                                             GRPH0474
      STOP                                                              GRPH0475
*                                                                       GRPH0476
*                                                                       GRPH0477
*                                                                       GRPH0478
*                                                                       GRPH0479
*   ----- PROVIDE FOR TIME CROSSING MIDNIGHT -----                      GRPH0480
*                                                                       GRPH0481
*                                                                       GRPH0482
*                                                                       GRPH0483
250   NPARTS=16                                                         GRPH0484
      DO 290 PNO=1,16                                                   GRPH0485
      INDEX=PART(PNO)                                                   GRPH0487
      TIME=DATA(ONTIME,INDEX)+(DATE(PNO)-DAY1)*SECPDAY                  GRPH0488
*                                                                       GRPH0489
* --- ABOVE INSURES THAT JOBS BEGINNING IN NON-DAY1                     GRPH0490
*     HAVE TIMES REFLECTING THIS -----                                  GRPH0491
*                                                                       GRPH0492
280   IF(TIME.GT.DATA(ONTIME,INDEX))                                    GRPH0493
     &         DATA(ONTIME,INDEX)=DATA(ONTIME,INDEX)+SECPDAY; GO TO 280 GRPH0494
      TIME=DATA(ONTIME,INDEX)                                           GRPH0495
      IF(TIME.GT.DATA(OFTIME,INDEX))                                    GRPH0496
     &         DATA(OFTIME,INDEX)=DATA(OFTIME,INDEX)+SECPDAY; GO TO 280 GRPH0497
      IF(DATA(ONTIME,INDEX).LT.SSEC)SSEC=DATA(ONTIME,INDEX)             GRPH0498
      IF(DATA(OFTIME,INDEX).GT.ESEC)ESEC=DATA(OFTIME,INDEX)             GRPH0499
      DATA(ONTIME,INDEX)=(DATA(ONTIME,INDEX)+30)/60                     GRPH0500
      DATA(OFTIME,INDEX)=(DATA(OFTIME,INDEX)+30)/60                     GRPH0501
      IF(DATA(ONTIME,INDEX).LT.TON)TON=DATA(ONTIME,INDEX)               GRPH0502
      IF(DATA(OFTIME,INDEX).GT.TOFF)TOFF=DATA(OFTIME,INDEX)             GRPH0503
      INDEX=DATA(NEXT,INDEX)                                            GRPH0504
      IF(INDEX.GT.0)GOTO 280                                            GRPH0505
290   CONTINUE                                                          GRPH0506
      TEN=CONVERT(10.)                                                  GRPH0507
*                                                                       GRPH0508
*     REMOVE ABOVE STMNT FOR 10%LINE...                                 GRPH0510
      WRITE(6,50)                                                       GRPH0511
      DO 293 I=1,10                                                     GRPH0512
      IF (.NOT.GRAPH(I)) GO TO 293                                      GRPH0513
      WRITE(6,297) (NAMES(I,J),J=1,4)                                   GRPH0514
293   CONTINUE                                                          GRPH0515
*                                                                       GRPH0516
      WRITE(6,298)                                                      GRPH0517
*                                                                       GRPH0518
      DO 296 I=2,4,2                                                    GRPH0519
      IF (.NOT.GRAPH(I).AND.GRAPH(I-1))                                 GRPH0520
     &   WRITE(6,299) (NAMES(I-1,J),J=1,3)                              GRPH0521
296   CONTINUE                                                          GRPH0522
*                                                                       GRPH0523
297   FORMAT(T40,3A4,2X,A1)                                             GRPH0524
298   FORMAT(///)
299   FORMAT(T45,3A4,' INCLUDES SERVICE TIME')                          GRPH0526
*                                                                       GRPH0527
      DO 300 I=1,NUTSPM                                                 GRPH0528
300   TABS(I)=140                                                       GRPH0529
      IF(NPARTS.GT.16)NPARTS=16                                         GRPH0530
      PRINT2=.FALSE.                                                    GRPH0531
      LASTH=60                                                          GRPH0532
*                                                                       GRPH0534
*                                                                       GRPH0535
*                                                                       GRPH0536
*                                                                       GRPH0537
*                                                                       GRPH0538
*  - - -   G R A P H    T H E    D A T A    - - - - - -                 GRPH0539
*                                                                       GRPH0540
*                                                                       GRPH0541
*                                                                       GRPH0542
*                                                                       GRPH0543
*                                                                       GRPH0544
      OUTPUT 'GRAPHING'                                                 GRPH0545
      DO 490 TIME=TON,TOFF                                              GRPH0546
      DO 310 I=1,16                                                     GRPH0547
310   STILLON(I)=.FALSE.                                                GRPH0548
*                                                                       GRPH0549
* CLEAR OUT THE BUFFERS                                                 GRPH0550
*                                                                       GRPH0551
320   NONUM=.FALSE.                                                     GRPH0552
      IF(PRINT2)NONUM=.TRUE.                                            GRPH0553
      PRINT2=.FALSE.                                                    GRPH0554
*                                                                       GRPH0555
330   PARTBUF(PNO)=BLANKS                                               GRPH0557
*                                                                       GRPH0558
*                                                                       GRPH0559
      DO 370 PNO=1,NPARTS                                               GRPH0560
340   INDEX=PART(PNO)                                                   GRPH0561
      IF(INDEX.EQ.0)GOTO 370                                            GRPH0562
      STIME=DATA(ONTIME,INDEX)                                          GRPH0563
      ETIME=DATA(OFTIME,INDEX)                                          GRPH0564
      EXTACC=DATA(NAME,INDEX)                                           GRPH0565
      IF(EXTACC.EQ.BLANKS)EXTACC=DOT                                    GRPH0566
350   FORMAT('AT T=',I8,' P=',I3,' NAME IS ',A4,                        GRPH0567
     &       ' ON AT',I8,' OFF AT',I8)                                  GRPH0568
*                                                                       GRPH0569
* ALLOW FOR CLOSED OR UNUSED PARTITIONS                                 GRPH0570
* PARTITION NOT STARTED UP YET                                          GRPH0571
*                                                                       GRPH0572
      IF(STIME.GT.TIME)GOTO 370                                         GRPH0573
*                                                                       GRPH0574
* CHECK FOR JOB HAVING BEEN ON FOR A WHILE                              GRPH0575
*                                                                       GRPH0576
      IF(STIME.LT.TIME)PARTBUF(PNO)=DOT;GOTO    360                     GRPH0577
*                                                                       GRPH0578
      PARTBUF(PNO)=EXTACC                                               GRPH0580
      STILLON(PNO)=.TRUE.                                               GRPH0581
*                                                                       GRPH0582
* NOW SEE IF NEXT GUY ALSO COMES ON IN THIS                             GRPH0583
      PARTBUF(PNO)=EXTACC                                               GRPH0584
      IF(STIME.EQ.DATA(ONTIME,DATA(NEXT,INDEX)))PRINT2=.TRUE.           GRPH0585
*                                                                       GRPH0586
* IN CASE GO THRU AGAIN, DON'T REPRINT NAME:                            GRPH0587
*                                                                       GRPH0588
      DATA(ONTIME,INDEX)=STIME-1                                        GRPH0589
*                                                                       GRPH0590
* IF GUY GOES OFF NOW, UNLINK HIM......                                 GRPH0591
*                                                                       GRPH0592
      IF(ETIME.EQ.TIME)PART(PNO)=DATA(NEXT,INDEX)                       GRPH0593
      GOTO 370                                                          GRPH0594
*                                                                       GRPH0595
* ONTIME<TIME                                                           GRPH0596
* SEE IF HE GOES OFF NOW                                                GRPH0597
*                                                                       GRPH0598
360   IF(ETIME.LT.TIME)OUTPUT                                           GRPH0599
     &'ERROR-ETIME<TIME AT S 360';GOTO 620                              GRPH0600
      STILLON(PNO)=.TRUE.                                               GRPH0601
*                                                                       GRPH0603
* HE IS OFF NOW                                                         GRPH0604
*                                                                       GRPH0605
      PARTBUF(PNO)=DOT                                                  GRPH0606
*                                                                       GRPH0607
* SINCE HE IS DONE, UNLINK HIM AND GO TO NEXT GUY                       GRPH0608
*                                                                       GRPH0609
      PART(PNO)=DATA(NEXT,INDEX)                                        GRPH0610
*                                                                       GRPH0611
* NOW SEE IF NEXT GUY IS ON NOW                                         GRPH0612
*                                                                       GRPH0613
      GOTO 340                                                          GRPH0614
370   CONTINUE                                                          GRPH0615
*                                                                       GRPH0616
*                                                                       GRPH0617
*                                                                       GRPH0618
*                                                                       GRPH0619
* AT 380, PARTBUF AND NAMEBUF ARE SET                                   GRPH0620
*   WE NOW READ IN & GRAPH THE CPU DISPLAY                              GRPH0621
*   IF TIME=T1, SOME OF UTSPM WAS LOST                                  GRPH0622
*     MAKE DOTS FOR GUYS ENDING&OTHER PARTS HAVING                      GRPH0623
*     >1JOB FOR THIS MINUTE                                             GRPH0624
*                                                                       GRPH0625
      DO 380 PNO=1,NPARTS                                               GRPH0626
380   IF(PARTBUF(PNO).EQ.BLANKS.AND.STILLON(PNO))                       GRPH0627
     &PARTBUF(PNO)=DOT                                                  GRPH0628
      IF(TIME.EQ.TON)GOTO 390                                           GRPH0629
      IF(TIME.EQ.T1.AND.FIRSTIME)GOTO 400                               GRPH0630
*                                                                       GRPH0631
* SEE IF TIME  HAS PASSED PRESENT INTERVAL OF UTSPM                     GRPH0632
*     IF SO, READ IN ANOTHER DISPLAY                                    GRPH0633
*                                                                       GRPH0634
      IF(TIME.GE.T2)GOTO 410                                            GRPH0635
      GOTO 440                                                          GRPH0636
390   CALL GETPM(T1,T2,UTSPM,ENDACTION)                                 GRPH0637
      IF(ENDACTION.EQ.1)GOTO 460                                        GRPH0638
*                                                                       GRPH0639
* SEE IF UTSPM STARTED EARLY; IF SO, PASS BY                            GRPH0640
*                                                                       GRPH0641
      IF(TIME.GE.T2)GOTO 390                                            GRPH0642
*                                                                       GRPH0643
* SEE IF UTSPM STARTED LATE; IF SO, COME BACK WHEN T1=TIME              GRPH0644
*                                                                       GRPH0645
      IF(TIME.LT.T1)GOTO 440                                            GRPH0646
*                                                                       GRPH0647
*                                                                       GRPH0648
      FIRSTIME=.FALSE.                                                  GRPH0650
*                                                                       GRPH0651
      T1=TIME                                                           GRPH0652
      GOTO 420                                                          GRPH0653
*                                                                       GRPH0654
*                                                                       GRPH0655
*                                                                       GRPH0656
410   CALL GETPM(T1,T2,UTSPM,ENDACTION)                                 GRPH0657
      IF(ENDACTION.EQ.1)GOTO 460                                        GRPH0658
      IF (TIME.GT.T2) GO TO 410                                         GRPH0659
*                                                                       GRPH0660
420   TOTWAIT=0.                                                        GRPH0661
*                                                                       GRPH0662
*  CALC TOT WAIT, TABS, TUTSPM                                          GRPH0663
*                                                                       GRPH0664
      DO 430 I=1,NUTSPM                                                 GRPH0665
      IF(WAITSEL(I))TOTWAIT=TOTWAIT+UTSPM(I)                            GRPH0666
      IF(GRAPH(I))TABS(I)=CONVERT(UTSPM(I))                             GRPH0667
430   TUTSPM(I)=TUTSPM(I)+UTSPM(I)*(T2-T1)                              GRPH0668
      TABS(NUTSPM+1)=CONVERT(TOTWAIT)                                   GRPH0669
      IF(.NOT.GRAPH(2).AND.GRAPH(1))                                    GRPH0670
     &   TABS(1)=CONVERT(UTSPM(1)+UTSPM(2))                             GRPH0671
     &   TABS(3)=CONVERT(UTSPM(3)+UTSPM(4))                             GRPH0673
*                                                                       GRPH0674
440   WRITES=WRITES+1                                                   GRPH0675
*                                                                       GRPH0676
* NOW WE WRITE                                                          GRPH0677
*                                                                       GRPH0678
      IF(MOD(WRITES,LPPAGE).EQ.0)CALL HEADING                           GRPH0679
      IF(.NOT.NONUM)GOTO 450                                            GRPH0680
      N=NUTSPM+1                                                        GRPH0681
      WRITE(6,650)TEN,N,(TABS(I),SYMBOL(I),I=1,N),                      GRPH0682
     &NPARTS,(PARTBUF(I),I=1,NPARTS)                                    GRPH0683
      GOTO 480                                                          GRPH0684
450   N=NUTSPM+1                                                        GRPH0685
      HR=MOD(TIME/60.,24)                                               GRPH0686
      MIN=MOD(TIME,60)                                                  GRPH0687
*                                                                       GRPH0688
      WRITE(6,640)HR,MIN,TEN,N,(TABS(I),SYMBOL(I),I=1,N),               GRPH0689
     &NPARTS,(PARTBUF(I),I=1,NPARTS)                                    GRPH0690
      GOTO 480                                                          GRPH0691
*                                                                       GRPH0692
*                                                                       GRPH0693
*                                                                       GRPH0694
*  T2 SO BIG => NO MORE READS                                           GRPH0696
      DO 470 I=1,NUTSPM+1                                               GRPH0697
470   TABS(I)=140                                                       GRPH0698
      LASTH=TIME/60;  LASTM=MOD(TIME,60)                                GRPH0699
      NOTOT=1                                                           GRPH0700
      GOTO 440                                                          GRPH0701
*                                                                       GRPH0702
* PRINT2>1 =>  MORE THAN 1 JOB IN THIS MIN.                             GRPH0703
*                                                                       GRPH0704
480   IF(PRINT2)GOTO 320                                                GRPH0705
490   CONTINUE                                                          GRPH0706
      IF(LASTH.EQ.60)LASTM=MOD(TOFF,60);                                GRPH0707
     &LASTH=FLOAT(TOFF)/60.                                             GRPH0708
500   TOTWAIT=AVGWAIT=0.                                                GRPH0709
*                                                                       GRPH0710
*                                                                       GRPH0711
*------- DONE;  CALC AVERAGES AND TOTALS                                GRPH0712
*                                                                       GRPH0713
*                                                                       GRPH0714
      DT=60*(LASTH-FIRSTH)+LASTM-FIRSTM                                 GRPH0715
      DO 510 I=1,NUTSPM                                                 GRPH0716
      AUTSPM(I)=TUTSPM(I)/DT                                            GRPH0717
510   TUTSPM(I)=TUTSPM(I)/100.                                          GRPH0719
      AVGWAIT=TOTWAIT/DT                                                GRPH0720
      TOTWAIT=TOTWAIT/100.                                              GRPH0721
      IF (TUTSPM(5).NE.0) WRITE(6,520)FIRSTH,FIRSTM,LASTH,LASTM,        GRPH0722
     &((NAMES(I,J),J=1,3),AUTSPM(I),TUTSPM(I),I=1,NUTSPM),              GRPH0723
     &(NAMES(NUTSPM+1,J),J=1,3),AVGWAIT,TOTWAIT                         GRPH0724
520   FORMAT('1',2/,T20,'UTSPM SUMMARY  FROM',I3,':',I2,                GRPH0725
     &       ' UNTIL',I3,':',I2,//,                                     GRPH0726
     &       T53,'AVG %',T60,'TOT-MINS',/                               GRPH0727
     &     (T40,3A4,2F7.1,/))                                           GRPH0728
      ELAPTIME=ESEC-SSEC                                                GRPH0729
540   STARTSEC=MOD(SSEC,60)                                             GRPH0730
      T=SSEC/60.                                                        GRPH0731
      STARTMIN=MOD(T,60)                                                GRPH0732
      STARTHR=T/60.                                                     GRPH0733
      ENDSEC=MOD(ESEC,60)                                               GRPH0734
      T=ESEC/60.                                                        GRPH0735
      ENDMIN=MOD(T,60)                                                  GRPH0736
      ENDHR=T/60.                                                       GRPH0737
      ELAPSEC=MOD(ELAPTIME,60)                                          GRPH0738
      T=ELAPTIME/60.                                                    GRPH0739
      ELAPMIN=MOD(T,60)                                                 GRPH0740
*                                                                       GRPH0742
* CALCULATE ALL TOTALS AND AVERAGES FROM UTSPM AND ACCTLG               GRPH0743
*                                                                       GRPH0744
      IF (TUTSPM(5).EQ.0) ELAPTIME=ELAPTIME/60.; GO TO 545              GRPH0745
*                                                                       GRPH0746
      AVONLINE=AUTSPM(1)+AUTSPM(2)                                      GRPH0747
      TOTONLINE=TUTSPM(1)+TUTSPM(2)                                     GRPH0748
      AVBATCH=AUTSPM(3)+AUTSPM(4)                                       GRPH0749
      TOTBATCH=TUTSPM(3)+TUTSPM(4)                                      GRPH0750
      AV=AVONLINE+AVBATCH                                               GRPH0751
      TOTCPU=TOTONLINE+TOTBATCH                                         GRPH0752
      ELAPTIME=ELAPTIME/60.                                             GRPH0753
*                                                                       GRPH0754
* ELAPTIME NOW CONTAINS (REAL) MINUTES OF ELAPSED TIME                  GRPH0755
*                                                                       GRPH0756
      ETMF = DT/TOTCPU                                                  GRPH0757
      WRITE(6,900) AVONLINE,TOTONLINE,AVBATCH,TOTBATCH,                 GRPH0758
     &             AV,TOTCPU,ETMF                                       GRPH0759
*                                                                       GRPH0760
S545  NOP                                                               GRPH0761
      IF (DOUG.NE.0.AND.CFLAG.EQ.1) OUTPUT 'PROFILES';  CALL CLUSTER    GRPH0762
*                                                                       GRPH0763
      WRITE(6,901) STARTHR,STARTMIN,STARTSEC,ELAPHR,                    GRPH0765
     &       ELAPMIN,ELAPSEC,ELAPTIME,                                  GRPH0766
     &       IOTIME,                                                    GRPH0767
     &       (IOTOTS(1,J),J=1,3),IOTOTS(1,3)/ELAPTIME,                  GRPH0768
     &       (IOTOTS(2,J),J=1,3),IOTOTS(2,3)/ELAPTIME,                  GRPH0769
     &       (IOTOTS(3,J),J=1,3),IOTOTS(3,3)/ELAPTIME,                  GRPH0770
     &       (IOTOTS(4,J),J=1,3),IOTOTS(4,3)/ELAPTIME                   GRPH0771
      SYSACC=IOTOTS(4,3)                                                GRPH0772
      SERVPCAL=(CPUTOTS(2,3)+CPUTOTS(4,3))*60000./TCALS                 GRPH0773
      CALPACC=FLOAT(TCALS)/SYSACC                                       GRPH0774
      ACCPMIN=FLOAT(SYSACC)/ELAPTIME                                    GRPH0775
      CALPMIN=TCALS/ELAPTIME                                            GRPH0776
      TOTWAIT=0.                                                        GRPH0777
      DO 550 I=1,3                                                      GRPH0778
      MSPIOTOTS(I)=CPUTOTS(5,I)*60000./IOTOTS(4,I)                      GRPH0779
550   TOTWAIT=TOTWAIT+WAITIME(I)                                        GRPH0780
*                                                                       GRPH0781
      WRITE(6,902) (WAITIME(I),I=1,3),                                  GRPH0782
     &              TCALS,SERVPCAL,CALPACC,ACCPMIN,CALPMIN              GRPH0783
*                                                                       GRPH0784
*                                                                       GRPH0785
*                                                                       GRPH0786
560   CONTINUE                                                          GRPH0787
      TOTCPU=TOTONLINE+TOTBATCH                                         GRPH0788
      MSECPIO=TOTCPU*60000./SYSACC                                      GRPH0789
      WRITE(6,903) ((CPUTOTS(I,J),J=1,3),I=1,5),                        GRPH0790
     &   MSPIOTOTS,                                                     GRPH0791
     &   ((CPUTOTS(1,I)+CPUTOTS(3,I))/                                  GRPH0792
     &     (CPUTOTS(2,I)+CPUTOTS(4,I)),I=1,3)                           GRPH0793
      WRITE(6,908) (ELAPTIME/CPUTOTS(5,I),I=1,3)                        GRPH0794
*                                                                       GRPH0795
      IF (DOUG.EQ.0) GO TO 565                                          GRPH0796
      WRITE(6,906) USERTOTS, MSPIOMEANS,MSPIODEVS,COREMEANS,COREDEVS    GRPH0797
*                                                                       GRPH0798
*                                                                       GRPH0799
*                                                                       GRPH0800
565   WRITE(6,904)                                                      GRPH0801
      DO 570 PNO=1,NPARTS                                               GRPH0802
      IF (PARTOTS(PNO,7).EQ.0) GO TO 570                                GRPH0803
      WRITE(6,905) PNO,PARTOTS(PNO,7),(PARTOTS(PNO,I),                  GRPH0804
     &   I=1,6),(PARTOTS(PNO,I),I=8,9)                                  GRPH0805
570   CONTINUE                                                          GRPH0806
*                                                                       GRPH0807
*                                                                       GRPH0808
*                                                                       GRPH0809
      OUTPUT 'FINISHED'                                                 GRPH0810
*                                                                       GRPH0812
* REWIND AND PRINT NCOPIES LOOP                                         GRPH0813
*                                                                       GRPH0814
580   IF(VERSION.GT.0) STOP                                             GRPH0815
*                                                                       GRPH0816
      DO 605 COPY=1,NCOPIES                                             GRPH0817
      REWIND 6                                                          GRPH0818
585   DO 590 IN=1,34                                                    GRPH0819
590   BUFF(IN)=BLANKS                                                   GRPH0820
      CALL BUFFER IN(6,0,BUFF,33,ENDACTION)                             GRPH0821
      GOTO(610,595,600,610),ENDACTION                                   GRPH0822
595   CALL BUFFER OUT(4,0,BUFF,33,ENDACTION)                            GRPH0823
      GOTO 585                                                          GRPH0824
600   OUTPUT COPY                                                       GRPH0825
605   CONTINUE                                                          GRPH0826
      STOP                                                              GRPH0827
610   OUTPUT'ERROR ON BUFFER IN',ENDACTION                              GRPH0828
      STOP                                                              GRPH0829
620   OUTPUT'RUNTIME ERROR'                                             GRPH0830
      CALL PRINTOUT                                                     GRPH0831
      GO TO 580                                                         GRPH0832
630   FORMAT(72A1)                                                      GRPH0833
650   FORMAT(TN,'''',N(TN,A1),T7,NA4)                                   GRPH0835
660   FORMAT(132A1)                                                     GRPH0836
*                                                                       GRPH0837
900   FORMAT(/,T50,3('* '),//,T40,'ONLINE',T53,2F7.1,//,                GRPH0838
     &         T40,'BATCH',T53,2F7.1,//,                                GRPH0839
     &         T40,'ALL',T53,2F7.1,//,                                  GRPH0840
     &       T40,'SYSTEM ETMF',T60,F7.3)                                GRPH0841
*                                                                       GRPH0842
901   FORMAT('1',16/,T20,'A C C O U N T I N G L O G',                   GRPH0843
     &       '   S U M M A R I E S ',///,                               GRPH0844
     &       T25,'INTERVAL BEGINNING ',2(I2,':'),I2,//,                 GRPH0845
     &       T25,'ELPASED TIME',7X,2(I2,':'),I2,2X,                     GRPH0846
     &           '(',F8.2,' MINS)',/,'1',                               GRPH0847
     &       T10,'I/O WAIT TIMES ASSUME FOLLOWING AV ACCESS TIMES:',/,  GRPH0848
     &       T15,'TAPE',T25,F4.0,' MSEC',/,                             GRPH0849
     &       T15,'RAD', T25,F4.0,' MSEC',/,                             GRPH0850
     &       T15,'DISC',T25,F4.0,' MSEC',//,                            GRPH0851
     &      T10,'TOTAL ACCESSES',/,                                     GRPH0852
     &       T25,'ONLINE',T36,'BATCH',T48,'ALL',T54,'PER MIN',/,        GRPH0853
     &       T15,'TAPE',T21,4F10.0,/,                                   GRPH0854
     &       T15,'RAD ',T21,4F10.0,/,                                   GRPH0855
     &       T15,'DISC',T21,4F10.0,/,                                   GRPH0856
*                                                                       GRPH0858
902   FORMAT(T10,'I/O WAIT TIMES:',/,                                   GRPH0859
     &       T25,'ONLINE',T36,'BATCH',T48,'ALL',/,                      GRPH0860
     &        T15,'ALL',T21,3F10.1,//,                                  GRPH0861
     &       T10,'TOTAL USER CALS',T31,I10,/,                           GRPH0862
     &       T15,'SERV/CAL',T31,F10.3,/,                                GRPH0863
     &       T15,'CALS/ACC',T31,F10.3,/,                                GRPH0864
     &       T15,'ACC/MIN',T31,F10.3,/,                                 GRPH0865
     &       T15,'CAL/MIN',T31,F10.3)                                   GRPH0866
*                                                                       GRPH0867
903   FORMAT(//,T10,'CPU TOTALS'/,                                      GRPH0868
     &        T25,'ONLINE',T36,'BATCH',T48,'ALL',/,                     GRPH0869
     &        T15,'P EXEC',T21,3F10.2,/,                                GRPH0870
     &        T15,'P SERV',T21,3F10.2,/,                                GRPH0871
     &        T15,'U EXEC',T21,3F10.2,/,                                GRPH0872
     &        T15,'U SERV',T21,3F10.2,/,                                GRPH0873
     &       T15,'ALL',T21,3F10.2,/,'1',3/,                             GRPH0874
     &       T10,'TOTAL CPU MSEC SEPERATING USER I/O OPERATIONS',/,     GRPH0875
     &       T25,'ONLINE',T36,'BATCH',T48,'ALL',/,                      GRPH0876
     &       T21,3F10.2,3/,                                             GRPH0877
     &      T10,'RATIO OF EXECUTION TO SERVICE',/,                      GRPH0878
     &       T25,'ONLINE',T36,'BATCH',T48,'ALL',/,                      GRPH0879
*                                                                       GRPH0881
904   FORMAT('1',/,T10,'PARTITION TOTALS',//,                           GRPH0882
     &       T4,'PART NO',T17,'JOBS',T25,'IOWAIT',T38,'CPU',            GRPH0883
     &       T43,'MSEC/ACC',T56,'STDEV',T63,'RUN-TIME',                 GRPH0884
     &       T77,'ETMF',T83,'AVG CORE',T96,'STDEV',/)                   GRPH0885
905   FORMAT(2I10,8F10.2)                                               GRPH0886
906   FORMAT('1',//,T10,'AVERAGE USER VALUES ',3/,                      GRPH0887
     &       T10,'TOTAL NUMBER OF USERS',/,                             GRPH0888
     &       T25,'ONLINE',T36,'BATCH',T48,'ALL',/,                      GRPH0889
     &       T15,'USERS',T21,3I10,//,                                   GRPH0890
     &       T10,'AVERAGE MSEC BETWEEN I/O ACCESSES:',/,                GRPH0891
     &       T25,'ONLINE',T36,'BATCH',T48,'ALL',/,                      GRPH0892
     &       T15,'MEAN',T21,3F10.2,/,                                   GRPH0893
     &        T15,'STDEV',T21,3F10.3,//,                                GRPH0894
     &        T10,'AVERAGE USER SIZE (PAGES)',/,                        GRPH0895
     &      T25,'ONLINE',T36,'BATCH',T48,'ALL',/,                       GRPH0896
     &      T15,'MEAN',T21,3F10.2,/,                                    GRPH0897
     &      T15,'STDEV',T21,3F10.3)                                     GRPH0898
907   FORMAT(/,I4,' TOTAL RECORDS',                                     GRPH0899
     &   /,I4,' ONLINE',                                                GRPH0900
     &   /,I4,' BATCH',                                                 GRPH0901
     &   /,I4,' BATCH ACCEPTED')                                        GRPH0902
909   FORMAT(' ELAPSED TIME(HH,MM,SS): ',2(I2,':'),I2,/,                GRPH0904
     &   3X,F8.2,' MINUTES',/,                                          GRPH0905
     &   ' BATCH CPU(MIN):',F8.2,/,                                     GRPH0906
     &   ' TOTAL CPU(MIN):',F8.2)                                       GRPH0907
      END                                                               GRPH0908
      SUBROUTINE BURST                                                  GRPH0909
      IMPLICIT INTEGER(A-Z)                                             GRPH0910
      REAL TRICK1,TRICK2,X1,X2,ETMF                                     GRPH0911
      REAL TOTCPU,MSECPIO,AVGCORE,CALSPMIN,SERVPCAL,CALPIO              GRPH0912
      REAL ELAPCPU,DIFFTIME,IOWAIT,TOTLATENCY,CORESIDENT                GRPH0913
      REAL TOTCPU                                                       GRPH0914
      LOGICAL FIRSTCALL                                                 GRPH0915
*                                                                       GRPH0916
*                                                                       GRPH0917
      DIMENSION BUFF(0:38)                                              GRPH0918
      DIMENSION ACCOUNT(2),NAME(3),EXTACC(6),MONTH(13,2)                GRPH0919
      DIMENSION ORGINVEC(0:3),FRSVEC(0:8,4)                             GRPH0920
*                                                                       GRPH0921
*                                                                       GRPH0922
      DATA BLANKS,STAR,NFRS/'    ','*   ',8/                            GRPH0923
      DATA MONTH/0,31,59,90,120,151,181,212,243,273,304,334,365,        GRPH0924
     &           'JAN','FEB','MAR','APR','MAY','JUN','JUL',             GRPH0925
      DATA ((FRSVEC(I,J),J=1,4),I=0,8)  /                               GRPH0927
     &           0,'NORM','AL E','XIT ',                                GRPH0928
     &           1,'ILLE','GAL ','TRAP',                                GRPH0929
     &           2,'I/O ','ERRO','R   ',                                GRPH0930
     &           4,'LIMI','T ER','ROR ',                                GRPH0931
     &           8,'CHKP','T   ','    ',                                GRPH0932
     &          16,'E,ID','    ','    ',                                GRPH0933
     &          32,'X,ID','    ','    ',                                GRPH0934
     &          64,'M:XX','X   ','    ',                                GRPH0935
     &         128,'M:ER','R   ','    '/                                GRPH0936
      DATA ORGINVEC/'CR  ','TJE ','RBT '/                               GRPH0937
      DATA FIRSTCALL/.TRUE./                                            GRPH0938
      DATA DOUG/1/                                                      GRPH0939
      DATA BATABRT/0/                                                   GRPH0940
*                                                                       GRPH0941
*                                                                       GRPH0942
* DATA FOR SYSTEM SUMMARIES                                             GRPH0943
*                                                                       GRPH0944
      DIMENSION CPUTOTS(5,3),IOTOTS(4,3),IOTIME(3),PARTOTS(16,10)       GRPH0945
      DIMENSION CORETOTS(3),COREMEANS(3),COREDEVS(3)                    GRPH0946
      DIMENSION MSPIOMEANS(3),MSPIODEVS(3),USERTOTS(3)                  GRPH0947
      REAL CORETOTS,COREMEANS,COREDEVS,MSPIOMEANS,MSPIODEVS             GRPH0948
      GLOBAL CORETOTS,COREMEANS,COREDEVS,MSPIOMEANS,MSPIODEVS           GRPH0949
      REAL CPUTOTS,IOTOTS,IOTIME,PARTOTS,CORETOTS                       GRPH0950
      DATA IOTIME/5.,20.,50./                                           GRPH0951
      GLOBAL CPUTOTS,IOTOTS,IOTIME,PARTOTS,CORETOTS,USERTOTS            GRPH0952
*                                                                       GRPH0953
* ACCESS FOR ABOVE:                                                     GRPH0954
*   CPUTOTS & IOTOTS: COL. IS <ONLINE,BATCH,TOTAL>                      GRPH0955
*   CPUTOTS           ROW IS <CPUSER(1),CPUSER(2),CPUSER(3),CPUSER(4),  GRPH0956
*                            TOTAL>                                     GRPH0957
*   IOTOTS            ROW IS <TAPE,RAD,DISC,TOTAL>                      GRPH0958
*   IOTIME            '                    '                            GRPH0959
*   PARTOTS           ROW IS PNO       #                                GRPH0960
*                     COL IS <IOWAIT,CPU,MSECPIO,STDEV,                 GRPH0961
*                             RUNTIME,ETMF,JOBS,                        GRPH0962
*                            AVCORE,DEVCORE,UNUSED>                     GRPH0963
*                                                                       GRPH0964
*                                                                       GRPH0965
      DIMENSION CPUSER(4),IOUSER(3)                                     GRPH0966
      REAL CPUSER,IOUSER,WAITIME                                        GRPH0967
      WAITIME(DVNO)=IOUSER(DVNO)*IOTIME(DVNO)/60000.                    GRPH0968
*                                                                       GRPH0969
      GLOBAL MONTH,BUFF,SECFLAG                                         GRPH0970
      GLOBAL TAPETIME,RADTIME,DISCTIME,DOUG,ONLINEFLAG,TCALS,LPPAGE     GRPH0971
*                                                                       GRPH0972
*                                                                       GRPH0974
*                                                                       GRPH0975
      ACCOUNT(1)=BUFF(0);ACCOUNT(2)=BUFF(1)                             GRPH0976
      DO 10 I=2,4                                                       GRPH0977
10    NAME(I-1)=BUFF(I)                                                 GRPH0978
*                                                                       GRPH0979
      DO 20 I=5,10                                                      GRPH0980
20    EXTACC(I-4)=BUFF(I)                                               GRPH0981
*                                                                       GRPH0982
S     LB,1 BUFF+12                                                      GRPH0983
S     STW,1 BATCH                                                       GRPH0984
      USER=2                                                            GRPH0985
      IF (BATCH.LT.255) USER=1                                          GRPH0986
*                                                                       GRPH0987
S     LI,2 1                                                            GRPH0988
S     LB,1 BUFF+12,2                                                    GRPH0989
S     STW,1 PRIORITY                                                    GRPH0990
*                                                                       GRPH0991
S     LI,2 2                                                            GRPH0992
S     LB,1 BUFF+12,2                                                    GRPH0993
S     STW,1 FRS                                                         GRPH0994
*                                                                       GRPH0995
S     STW,1 ORIGIN                                                      GRPH0997
*                                                                       GRPH0998
S     LW,1 BUFF+13                                                      GRPH0999
S     STW,1 VERSION                                                     GRPH1000
S     LI,1 X'40'                                                        GRPH1001
S     STB,1 VERSION                                                     GRPH1002
*                                                                       GRPH1003
S     LH,1 BUFF+14                                                      GRPH1004
S     STW,1 YEAR                                                        GRPH1005
S     INT,1 BUFF+14                                                     GRPH1006
S     STW,1 DAY                                                         GRPH1007
*                                                                       GRPH1008
      STARTIME=BUFF(15)                                                 GRPH1009
      DTIME=BUFF(16)                                                    GRPH1010
      IF(SECFLAG.EQ.0)STARTIME=STARTIME*60.;DTIME=DTIME*60.             GRPH1011
      IF(DTIME.LT.STARTIME)DTIME=DTIME+24*60*60                         GRPH1012
      DTIME=DTIME-STARTIME                                              GRPH1013
*                                                                       GRPH1014
S     LH,1 BUFF+19                                                      GRPH1015
S     STW,1 SYSID                                                       GRPH1016
*                                                                       GRPH1017
S     LI,3 3                                                            GRPH1018
S     STW,1 SPINDLES                                                    GRPH1020
*                                                                       GRPH1021
S     INT,1 BUFF+20                                                     GRPH1022
S     STW,1 CARDSOUT                                                    GRPH1023
*                                                                       GRPH1024
S     LH,1 BUFF+20                                                      GRPH1025
S     STW,1 CARDSIN                                                     GRPH1026
*                                                                       GRPH1027
S     LH,1 BUFF+21                                                      GRPH1028
S     STW,1 PAGESOUT                                                    GRPH1029
S     INT,1 BUFF+21                                                     GRPH1030
S     AWM,1 PAGESOUT                                                    GRPH1031
S     LH,1 BUFF+22                                                      GRPH1032
S     AWM,1 PAGESOUT                                                    GRPH1033
*                                                                       GRPH1034
S     LI,2 3                                                            GRPH1035
S     LB,1 BUFF+22,2                                                    GRPH1036
S     STW,1 TAPES                                                       GRPH1037
*                                                                       GRPH1038
      TOTIOS=0                                                          GRPH1039
      DO 30 I=23,25                                                     GRPH1040
      IOUSER(I-22)=BUFF(I)                                              GRPH1041
*                                                                       GRPH1043
      CALS=BUFF(26)                                                     GRPH1044
      TCALS=TCALS+CALS                                                  GRPH1045
      PERMRAD=BUFF(27)                                                  GRPH1046
      PERMDISC=BUFF(28)                                                 GRPH1047
      CPUXCORE=BUFF(29)                                                 GRPH1048
      CPUSER(1)=BUFF(30)/30000.                                         GRPH1049
      CPUSER(2)=BUFF(31)/30000.                                         GRPH1050
      CPUSER(3)=BUFF(33)/30000.                                         GRPH1051
      CPUSER(4)=BUFF(34)/30000.                                         GRPH1052
*                                                                       GRPH1053
*                                                                       GRPH1054
*                                                                       GRPH1055
*                                                                       GRPH1056
      TEMPRAD=BUFF(35)                                                  GRPH1057
      TEMPDISC=BUFF(36)                                                 GRPH1058
*                                                                       GRPH1059
S     LB,1 BUFF+32                                                      GRPH1060
S     STW,1 MAXCORE                                                     GRPH1061
S     LI,2 1                                                            GRPH1062
S     LB,1 BUFF+32,2                                                    GRPH1063
S     STW,1 PNO                                                         GRPH1064
      PEAKRAD=BUFF(35)                                                  GRPH1066
*                                                                       GRPH1067
      YEAR=YEAR+1900                                                    GRPH1068
      IF(MOD(YEAR,4).NE.0.OR..NOT.FIRSTCALL)GOTO 50                     GRPH1069
      DO 40 I=3,12                                                      GRPH1070
40    MONTH(I,1)=MONTH(I,1)+1                                           GRPH1071
50    DO 60 I=2,13                                                      GRPH1072
60    IF(MONTH(I,1).GE.DAY)GOTO 70                                      GRPH1073
      OUTPUT'DAY?',DAY                                                  GRPH1074
70    I=I-1                                                             GRPH1075
      DAY=DAY-MONTH(I,1)                                                GRPH1076
*                                                                       GRPH1077
      FIRSTCALL=.FALSE.                                                 GRPH1078
      DOUGTAB=57                                                        GRPH1079
      IF (DOUG.EQ.0) DOUGTAB=140                                        GRPH1080
80    IF (DOUG.NE.2) WRITE(6,90)ACCOUNT,NAME,EXTACC,MONTH(I,2),         GRPH1081
     &                    DAY,YEAR,VERSION                              GRPH1082
90    FORMAT('1',T2,'JOB   ',2A4,1X,3A4,1X,6A4,T57,'DATE ',             GRPH1083
     &       A4,I2,',',I4,T78,'CPV VERSION  ',T91,A4)                   GRPH1084
*                                                                       GRPH1085
      T=STARTIME/60.;SSEC=MOD(STARTIME,60);SMIN=MOD(T,60);SHR=T/60.     GRPH1086
      T=DTIME/60.;DSEC=MOD(DTIME,60);DMIN=MOD(T,60);DHR=T/60.           GRPH1087
100   IF(FRS.EQ.FRSVEC(I,1))FRS=I;GOTO 110                              GRPH1089
      OUTPUT'FRS?',FRS                                                  GRPH1090
110   ABORTIND=STAR                                                     GRPH1091
      IF (FRS.NE.0) BATABRT=BATABRT+1                                   GRPH1092
      IF(FRS.EQ.0)ABORTIND=BLANKS                                       GRPH1093
      IF (DOUG.NE.2) WRITE(6,120)SHR,SMIN,SSEC,SYSID,PRIORITY,          GRPH1094
     &ORGINVEC(ORIGIN),DHR,DMIN,DSEC,(FRSVEC(FRS,I),I=2,4),             GRPH1095
     &PNO                                                               GRPH1096
120   FORMAT(/,T2,'ON AT ',2(I2,':'),I2,T30,'SYSID ',Z3,                GRPH1097
     &       T57,'PRIORITY',I3,T78,'ORIGIN',T93,A4,/,                   GRPH1098
     &       T4,'FOR ',2(I2,':'),I2,T30,'FINAL RUN STATUS (FRS)',T57,3A4GRPH1099
     &       T78,'PARTITION ',T93,I2)                                   GRPH1100
*                                                                       GRPH1101
*                                                                       GRPH1102
* THE FOLLOWING FORMULAE ARE USED:                                      GRPH1103
*                                                                       GRPH1104
*   MEAN                                                                GRPH1105
*     =SUM(X)/N       (N= # MEASUREMENTS)                               GRPH1106
*                                                                       GRPH1107
*   STANDARD DEVIATION                                                  GRPH1108
*     =SQRT(SUM(X-U)**2/N)       U=MEAN                                 GRPH1109
*     =SQRT((SUMX**2)/N-(SUM(X)/N)**2)                                  GRPH1110
*     =SQRT((SUM(X)**2)/N-MEAN**2)                                      GRPH1111
*                                                                       GRPH1112
*                                                                       GRPH1113
*   CORETOTS  ARE THE RESIDENCY VALUES INDEXED BY USER                  GRPH1114
*     1=ONLINE                                                          GRPH1115
*     2=BATCH                                                           GRPH1116
*     3=TOTAL                                                           GRPH1117
*                                                                       GRPH1118
*                                                                       GRPH1119
*   USERTOTS  ARE THE NUMBER OF USERS INDEXED BY USER                   GRPH1120
*                                                                       GRPH1121
*                                                                       GRPH1122
*                                                                       GRPH1123
* TABULATE TOTALS FOR CPU,IO AND PARTITIONS                             GRPH1124
*                                                                       GRPH1125
      TOTCPU=0                                                          GRPH1126
      DO 123 I=1,4                                                      GRPH1127
      TOTCPU=TOTCPU+CPUSER(I)                                           GRPH1128
      IF(CPUSER(2)+CPUSER(4).GT.(CPUSER(1)+CPUSER(3))*10.)GOTO 123      GRPH1129
      CPUTOTS(I,USER)=CPUTOTS(I,USER)+CPUSER(I)                         GRPH1130
      CPUTOTS(5,USER)=CPUTOTS(5,USER)+CPUSER(I)                         GRPH1131
      CPUTOTS(5,3)=CPUTOTS(5,3)+CPUSER(I)                               GRPH1132
      CPUTOTS(I,3)=CPUTOTS(I,3)+CPUSER(I)                               GRPH1133
123   CONTINUE                                                          GRPH1134
      IOWAIT=0                                                          GRPH1136
      DO 125 I=1,3                                                      GRPH1137
      IOWAIT=IOWAIT+WAITIME(I)                                          GRPH1138
      IOTOTS(I,USER)=IOTOTS(I,USER)+IOUSER(I)                           GRPH1139
      IOTOTS(4,USER)=IOTOTS(4,USER)+IOUSER(I)                           GRPH1140
      IOTOTS(4,3)=IOTOTS(4,3)+IOUSER(I)                                 GRPH1141
125   IOTOTS(I,3)=IOTOTS(I,3)+IOUSER(I)                                 GRPH1142
*                                                                       GRPH1143
      ETMF=(DTIME/60.)/TOTCPU                                           GRPH1144
*     CALL RWHIST(ETMF,IOWAIT,TOTCPU,USER)                              GRPH1145
*                                                                       GRPH1146
      CORESIDENCY=TOTCPU+IOWAIT                                         GRPH1147
*                                                                       GRPH1148
*  THE ABOVE, WHEN TOTALED & DIV INTO A JOB, GIVES ITS WEIGHT           GRPH1149
*     IT WOULD FORM EXCELLENT BASIS FOR OBTAINING WEIGHTED VALUES       GRPH1150
*                                                                       GRPH1151
      CORETOTS(USER)=CORETOTS(USER)+CORESIDENCY                         GRPH1152
      CORETOTS(3)=CORETOTS(3)+CORESIDENCY                               GRPH1153
      USERTOTS(USER)=USERTOTS(USER)+1                                   GRPH1154
      USERTOTS(3)=USERTOTS(3)+1                                         GRPH1155
*                                                                       GRPH1156
* AND THAT FORMS THE TOTALS                                             GRPH1157
      IF (USER.EQ.1) GO TO 127                                          GRPH1159
      PARTOTS(PNO,1)=PARTOTS(PNO,1)+IOWAIT                              GRPH1160
      PARTOTS(PNO,2)=PARTOTS(PNO,2)+TOTCPU                              GRPH1161
      PARTOTS(PNO,10)=PARTOTS(PNO,10)+CORESIDENCY                       GRPH1162
      PARTOTS(PNO,5)=PARTOTS(PNO,5)+DTIME                               GRPH1163
      PARTOTS(PNO,7)=PARTOTS(PNO,7)+1                                   GRPH1164
*                                                                       GRPH1165
S127  NOP                                                               GRPH1166
      DIFFTIME=(DTIME/60.)-TOTCPU                                       GRPH1167
      IF (DOUG.NE.2) WRITE(6,140) TOTCPU,ETMF,CPUSER(1),DOUGTAB,IOWAIT, GRPH1168
     &             CPUSER(2),DOUGTAB,DIFFTIME,CPUSER(3),CPUSER(4)       GRPH1169
140   FORMAT(/,T2,'CPU',T10,'TOTAL',T30,F8.4,T57,                       GRPH1170
     &          'ELAPSED TIME/CPU TIME :',F8.2,/,                       GRPH1171
     &        T10,'PROCESSOR  EXECUTION',T30,F8.4,                      GRPH1172
     &          TN,'TOTAL IOWAIT TIME:',5X,F8.2,/,                      GRPH1173
     &        T10,'PROCESSOR SERVICE',T30,F8.4,                         GRPH1174
     &          TN,'ELAPSED TIME-CPU TIME :',F8.2,/,                    GRPH1175
     &        T10,'USER EXECUTION',T30,F8.4,/,                          GRPH1176
     &        T10,'USER SERVICE',T30,F8.4  )                            GRPH1177
*                                                                       GRPH1178
      AVGCORE=CPUXCORE/(TOTCPU*30000.)                                  GRPH1179
      IF (DOUG.NE.2) WRITE(6,150)MAXCORE,AVGCORE                        GRPH1180
     &       T10,'AVG (PAGES)',T23,F5.1)                                GRPH1182
*                                                                       GRPH1183
      CALSPMIN=CALS/TOTCPU                                              GRPH1184
      SERVPCAL=(CPUSER(2)+CPUSER(4))*60000./CALS                        GRPH1185
      CALPIO=CALS/TOTIOS*1.                                             GRPH1186
      MSECPIO=(TOTCPU*60*1000.)/TOTIOS                                  GRPH1187
      IF (DOUG.NE.2) WRITE(6,160)TOTIOS,IOUSER,CALS,                    GRPH1188
     &                 CALSPMIN,SERVPCAL,CALPIO,MSECPIO                 GRPH1189
160   FORMAT(/,T2,'IO',T5,'ACCESSES',T28,I10,/,                         GRPH1190
     &        T10,'TAPE',T18,I10,/,                                     GRPH1191
     &        T10,'RAD',T18,I10,/,                                      GRPH1192
     &        T10,'DISC',T18,I10,/,                                     GRPH1193
     &       T5,'CALS',T28,I10,/,                                       GRPH1194
     &        T10,'CALS/MIN',T18,F10.0,/,                               GRPH1195
     &        T10,'SERV/CAL',T18,F10.4,/,                               GRPH1196
     &        T10,'CALS/ACCESS',T22,F6.2,/,                             GRPH1197
     &      T5,'MSEC BETWEEN ACCESSES ',T28,F10.2)                      GRPH1198
*                                                                       GRPH1199
      IF (DOUG.NE.2) WRITE(6,170)TEMPRAD,PERMRAD,TEMPDISC,PERMDISC      GRPH1200
170   FORMAT(/,T2,'FILE SPACE',/,                                       GRPH1201
     &        T5,'RAD',T10,'TEMP',T18,I10,/,                            GRPH1202
     &         T10,'PERM',T18,I10,/,                                    GRPH1203
     &         T10,'PERM',T18,I10)                                      GRPH1205
*                                                                       GRPH1206
      IF (DOUG.NE.2) WRITE(6,180)TAPES,SPINDLES,CARDSIN,PAGESOUT,       GRPH1207
     &                CARDSOUT                                          GRPH1208
180   FORMAT(/,T2,'FACILITIES',/,                                       GRPH1209
     &        T5,'TAPE DRIVES',T18,I10,/,                               GRPH1210
     &        T5,'SPINDLES',T18,I10,/,                                  GRPH1211
     &        T5,'CARDS READ',T18,I10,/,                                GRPH1212
     &        T5,'PAGES PRINTED',T18,I10,/,                             GRPH1213
     &        T5,'CARDS PUNCHED',T18,I10)                               GRPH1214
*                                                                       GRPH1215
      TGRANS=TEMPRAD+TEMPDISC                                           GRPH1216
      PGRANS=PERMRAD+PERMDISC                                           GRPH1217
185   IF (USER.EQ.1) GO TO 187                                          GRPH1218
      WRITE(3)EXTACC(1),AVGCORE,MAXCORE,DHR,DMIN,DSEC,TOTCPU,           GRPH1219
     &MSECPIO,TGRANS,PGRANS,TAPES,PAGESOUT,ABORTIND,                    GRPH1220
     &SPINDLES,IOUSER                                                   GRPH1221
*                                                                       GRPH1222
187   IF (DOUG.EQ.0) RETURN                                             GRPH1223
      IF (USER.EQ.1.AND.ONLINEFLAG.EQ.0) RETURN                         GRPH1224
      IF(CPUSER(2)+CPUSER(4).GT.(CPUSER(1)+CPUSER(3))*10.)RETURN        GRPH1225
      WRITE(5) EXTACC(1),AVGCORE,DHR,DMIN,DSEC,TOTCPU,USER,             GRPH1226
     &         TOTIOS,IOUSER,SERVPCAL,CALPIO,MSECPIO,PNO,CORESIDENCY    GRPH1228
      RETURN                                                            GRPH1229
*                                                                       GRPH1230
*                                                                       GRPH1231
* S U M M A R Y                                                         GRPH1232
*                                                                       GRPH1233
*                                                                       GRPH1234
      ENTRY SUMMARY                                                     GRPH1235
      REWIND 3                                                          GRPH1236
      M=-1                                                              GRPH1237
190   READ(3,END=200)EXTACC(1),AVGCORE,MAXCORE,DHR,DMIN,DSEC,TOTCPU,    GRPH1238
     &MSECPIO,TGRANS,PGRANS,TAPES,PAGESOUT,ABORTIND,                    GRPH1239
     &SPINDLES,IOUSER                                                   GRPH1240
      M=M+1                                                             GRPH1241
      IF(MOD(M,LPPAGE).EQ.0)WRITE(6,210)                                GRPH1242
      WRITE(6,220)EXTACC(1),AVGCORE,MAXCORE,DHR,DMIN,DSEC,TOTCPU,       GRPH1243
     &MSECPIO,TGRANS,PGRANS,TAPES,SPINDLES,PAGESOUT,                    GRPH1244
     &IOUSER,ABORTIND                                                   GRPH1245
      GOTO 190                                                          GRPH1246
200   IF(DOUG.EQ.0) RETURN                                              GRPH1247
210   FORMAT('1',T2,'NAME',T9,'CORE',T20,'T I M E',T32,'MSEC/ACC',      GRPH1248
     &      T43,5('* '),' R E S O U R C E S',5(' *'),                   GRPH1249
     &      T7,' AVG,MAX ',T17,' TOT     CPU',                          GRPH1251
     &      T43,'TGRANS  PGRANS  TAPES   SPIND   PAGES',                GRPH1252
     &      T84,'TAPE   RAD  DISC',/)                                   GRPH1253
220   FORMAT(T2,A4,T7,I3,',',I3,T15,2(I2,':'),I2,F6.2,                  GRPH1254
     &      T32,F7.0,T40,5I8,2X,3I6,T105,A4)                            GRPH1255
*                                                                       GRPH1256
*                                                                       GRPH1257
*                                                                       GRPH1258
      REWIND 5                                                          GRPH1259
*                                                                       GRPH1260
      WRITE(108,225) BATABRT                                            GRPH1261
225   FORMAT(I4,' BATCH JOBS ABORTED')                                  GRPH1262
      M=-1                                                              GRPH1263
230   READ(5,END=240) EXTACC(1),AVGCORE,DHR,DMIN,DSEC,TOTCPU,USER,      GRPH1264
     &         CPUSER(3),CPUSER(4),CPUSER(1),CPUSER(2),ETMF,IOWAIT,CALS,GRPH1265
     &         TOTIOS,IOUSER,SERVPCAL,CALPIO,MSECPIO,PNO,CORESIDENCY    GRPH1266
      M=M+1                                                             GRPH1267
*                                                                       GRPH1268
* GET CORE, MSECPIO MEANS AND STDEVS                                    GRPH1269
*                                                                       GRPH1270
      IF (USER.EQ.1) GO TO 235                                          GRPH1271
*                                                                       GRPH1272
      PARTOTS(PNO,3)=PARTOTS(PNO,3)+MSECPIO                             GRPH1273
      PARTOTS(PNO,4)=PARTOTS(PNO,4)+MSECPIO**2                          GRPH1274
*                                                                       GRPH1275
      PARTOTS(PNO,8)=PARTOTS(PNO,8)+AVGCORE                             GRPH1276
      PARTOTS(PNO,9)=PARTOTS(PNO,9)+AVGCORE**2                          GRPH1277
*                                                                       GRPH1278
235   COREMEANS(USER)=COREMEANS(USER)+AVGCORE                           GRPH1279
      COREDEVS(USER)=COREDEVS(USER)+AVGCORE**2                          GRPH1280
*                                                                       GRPH1281
      COREMEANS(3)=COREMEANS(3)+AVGCORE                                 GRPH1282
      COREDEVS(3)=COREDEVS(3)+AVGCORE**2                                GRPH1283
*                                                                       GRPH1284
      MSPIOMEANS(USER)=MSPIOMEANS(USER)+MSECPIO                         GRPH1285
      MSPIODEVS(USER)=MSPIODEVS(USER)+MSECPIO**2                        GRPH1286
*                                                                       GRPH1287
      MSPIOMEANS(3)=MSPIOMEANS(3)+MSECPIO                               GRPH1288
      MSPIODEVS(3)=MSPIODEVS(3)+MSECPIO**2                              GRPH1289
*                                                                       GRPH1290
*                                                                       GRPH1291
      IF (MOD(M,LPPAGE).EQ.0) WRITE(6,250)                              GRPH1292
      WRITE(6,260)EXTACC(1),AVGCORE,MSECPIO,TOTCPU,DHR,DMIN,DSEC,       GRPH1293
     &            CALS,TOTIOS,IOUSER,SERVPCAL,CALPIO,                   GRPH1294
     &            IOWAIT,ETMF,CPUSER(3),CPUSER(4)                       GRPH1295
      GO TO 230                                                         GRPH1296
* CALC. PARTITION STDEV (MSECPIO) AND ETMF                              GRPH1298
*                                                                       GRPH1299
240   DO 245 PNO=1,16                                                   GRPH1300
      IF (PARTOTS(PNO,7).EQ.0) GO TO 245                                GRPH1301
      PARTOTS(PNO,3)=PARTOTS(PNO,3)/PARTOTS(PNO,7)                      GRPH1302
      PARTOTS(PNO,4)=SQRT(PARTOTS(PNO,4)/PARTOTS(PNO,7)-                GRPH1303
     &       PARTOTS(PNO,3)**2)                                         GRPH1304
      PARTOTS(PNO,8)=PARTOTS(PNO,8)/PARTOTS(PNO,7)                      GRPH1305
      PARTOTS(PNO,9)=SQRT(PARTOTS(PNO,9)/PARTOTS(PNO,7)-                GRPH1306
     &       PARTOTS(PNO,8)**2)                                         GRPH1307
      PARTOTS(PNO,5)=PARTOTS(PNO,5)/60.                                 GRPH1308
245   PARTOTS(PNO,6)=PARTOTS(PNO,5)/PARTOTS(PNO,2)                      GRPH1309
*                                                                       GRPH1310
      DO 247 I=1,3                                                      GRPH1311
      COREMEANS(I)=COREMEANS(I)/USERTOTS(I)                             GRPH1312
      MSPIOMEANS(I)=MSPIOMEANS(I)/USERTOTS(I)                           GRPH1313
      COREDEVS(I)=SQRT(COREDEVS(I)/USERTOTS(I)-COREMEANS(I)**2)         GRPH1314
247   MSPIODEVS(I)=SQRT(MSPIODEVS(I)/USERTOTS(I)-MSPIOMEANS(I)**2)      GRPH1315
*                                                                       GRPH1316
*                                                                       GRPH1317
*                                                                       GRPH1318
      RETURN                                                            GRPH1319
     &       '* * T I M E * *',T40,'CALS',T45,                          GRPH1321
     &       3'* ','A C C E S S E S',2' *',T72,'SERV/CAL',              GRPH1322
     &       T81,'CAL/AC',T88,'IOWAIT',T98,'ETMF'                       GRPH1323
     &       T105,'UEXEC',T112,'USERV',                                 GRPH1324
     &       /,                                                         GRPH1325
     &       T22,'TOTCPU',T30,'ELAPSED',T44,                            GRPH1326
     &       '   TOTAL   TAPE    RAD   DISC')                           GRPH1327
*                                                                       GRPH1328
260   FORMAT(T2,A4,F6.1,F8.2,F8.3,1X,2(I2,':'),I2,I7,I8,                GRPH1329
     &       3I7,3F7.2,F8.2,1X,                                         GRPH1330
     &       2F7.3)                                                     GRPH1331
*                                                                       GRPH1332
270   FORMAT(5/,T20,'IO ACTIVITY  ',TN,'INCLUDING TIMESHARING',         GRPH1333
     &       ///,T25,'UNIT',T42,'AVG ACCESS',T54,'# ACCESSES',//,       GRPH1334
     &       T25,'TAPE',T44,I8,T54,I10,/,                               GRPH1335
     &       T25,' RAD',T44,I8,T54,I10,/,                               GRPH1336
     &       T25,'DISC',T44,I8,T54,I10,//,T25,'TOTAL IO WAIT',          GRPH1337
     &       T44,F8.2,' MINS')                                          GRPH1338
280   FORMAT(T20,8'-',T36,8'-',T102,16'-',/,                            GRPH1339
     &       T20,F8.3,T36,I8,T102,2F8.3)                                GRPH1340
      END                                                               GRPH1341
      SUBROUTINE SELECT(GRAPH,NAMES,NUTSPM)                             GRPH1342
      LOGICAL GRAPH                                                     GRPH1344
      DIMENSION NAMES(10,4),GRAPH(NUTSPM)                               GRPH1345
10    FORMAT(A1)                                                        GRPH1346
20    FORMAT(' GRAPH ',3A4,'?')                                         GRPH1347
      DATA YES,NO,BLANKS/'Y','N','    '/                                GRPH1348
      OUTPUT 'CHOOSE STATISTICS?'                                       GRPH1349
      READ(105,10,END=50) ANS                                           GRPH1350
      IF(ANS.NE.YES) GO TO 50                                           GRPH1351
      IF(ANS.NE.YES)GOTO 50                                             GRPH1352
*                                                                       GRPH1353
      DO 30 I=1,NUTSPM                                                  GRPH1354
30    GRAPH(I)=.TRUE.                                                   GRPH1355
*                                                                       GRPH1356
      DO 40 I=1,NUTSPM                                                  GRPH1357
      WRITE(108,20)(NAMES(I,J),J=1,3)                                   GRPH1358
      READ(105,10)ANS                                                   GRPH1359
40    IF(ANS.EQ.NO)GRAPH(I)=.FALSE.                                     GRPH1360
50    RETURN                                                            GRPH1361
      END                                                               GRPH1362
      SUBROUTINE PRINTOUT                                               GRPH1363
      IMPLICIT INTEGER(A-Z)                                             GRPH1364
      DIMENSION DATA(4,2),PART(16)                                      GRPH1365
      GLOBAL DATA                                                       GRPH1367
      WRITE(6,50)                                                       GRPH1368
      DO 40 I=1,16                                                      GRPH1369
      IF(PART(I).EQ.0)GOTO 40                                           GRPH1370
      INDEX=PART(I)                                                     GRPH1371
      WRITE(6,10)I                                                      GRPH1372
10    FORMAT(//,T20,5'*',' P A R T I T I O N ',I3,1X,5'*',/,            GRPH1373
     &  2X,'NAME',T19,'ON',T28,'OFF',T32,'ELAP TIME')                   GRPH1374
20    IF(INDEX.EQ.0)GOTO 40                                             GRPH1375
      D=DATA(2,INDEX)-DATA(1,INDEX)                                     GRPH1376
      WRITE(6,30)DATA(3,INDEX),(DATA(J,INDEX),J=1,2),D                  GRPH1377
30    FORMAT(2X,A4,T10,3I10)                                            GRPH1378
      INDEX=DATA(NEXT,INDEX)                                            GRPH1379
      GOTO 20                                                           GRPH1380
40    CONTINUE                                                          GRPH1381
50    FORMAT('1')                                                       GRPH1382
      WRITE(6,50)                                                       GRPH1383
      RETURN                                                            GRPH1384
      END                                                               GRPH1385
      INTEGER FUNCTION CONVERT(X)                                       GRPH1386
      IMPLICIT INTEGER(A-Z)                                             GRPH1387
      REAL X                                                            GRPH1388
      TEMP=X*(FLOAT(UPRBOUND-LWRBOUND)/RANGE)+.5+LWRBOUND               GRPH1390
      IF(TEMP.GT.UPRBOUND)TEMP=UPRBOUND                                 GRPH1391
      IF(TEMP.LE.LWRBOUND)TEMP=150                                      GRPH1392
      CONVERT=TEMP                                                      GRPH1393
      RETURN                                                            GRPH1394
      END                                                               GRPH1395
      SUBROUTINE HEADING                                                GRPH1396
      IMPLICIT INTEGER(A-Z)                                             GRPH1397
      REAL X                                                            GRPH1398
      DIMENSION TABS(11,2)                                              GRPH1399
      DATA TABVAL,NUM/1,2/                                              GRPH1400
      X=-10.                                                            GRPH1401
      DO 10 I=1,11                                                      GRPH1402
      X=X+10.                                                           GRPH1403
      TABS(I,NUM)=X                                                     GRPH1404
10    TABS(I,TABVAL)=CONVERT(X)                                         GRPH1405
      TABS(1,TABVAL)=70                                                 GRPH1406
      WRITE(6,40) 70,CONVERT(50.)-13,CONVERT(100.)                      GRPH1407
      WRITE(6,30)((TABS(I,J),J=1,2),I=1,11)                             GRPH1408
      WRITE(6,20)((I),I=1,16)                                           GRPH1409
20    FORMAT('  TIME',9(' P',I1,1X),                                    GRPH1410
     &       7(' P',I2))                                                GRPH1411
     &       TN,I1,9(TN,I2),TN,I3)                                      GRPH1413
40    FORMAT('1',T30,'C P-V    M U L T P R O G R A M'                   GRPH1414
     &       ' M I N G    D I A G R A M ',//                            GRPH1415
     &       TN,'<',TN,'%   C P U   A C T I V I T Y',TN,'>')            GRPH1416
*                                                                       GRPH1417
      RETURN                                                            GRPH1418
      END                                                               GRPH1419
      SUBROUTINE GETPM(T1,T2,UTSPM,ENDACTION)                           GRPH1420
      IMPLICIT INTEGER(A-Z)                                             GRPH1421
      REAL UTSPM(9)                                                     GRPH1422
      DIMENSION MONTH(13,2),GRAPH(10),BUFF(20)                          GRPH1423
      GLOBAL MONTH,DAY1,GRAPH,BUFF                                      GRPH1424
      LOGICAL GRAPH                                                     GRPH1425
      DATA MINPDAY,INT,CPU/1440,' INT','CPU '/                          GRPH1426
*                                                                       GRPH1427
*                                                                       GRPH1428
* GET TO THE NEXT DISPLAY                                               GRPH1429
*                                                                       GRPH1430
10    CALL BUFFER IN(2,0,BUFF,20,ENDACTION)                             GRPH1431
      GO TO (999,20,400,999), ENDACTION                                 GRPH1432
20    ENDACTION=0                                                       GRPH1433
      IF(BUFF(1).NE.INT) GO TO 10                                       GRPH1434
      DECODE(80,800,BUFF) H1,M1,MON,DAY,H2,M2                           GRPH1435
*                                                                       GRPH1436
* NOW FIND RECORD IDENTIFYING CPU DISPLAY                               GRPH1437
*                                                                       GRPH1438
30    CALL BUFFER IN(2,0,BUFF,20,ENDACTION)                             GRPH1439
      GO TO (999,40,400,999), ENDACTION                                 GRPH1440
40    ENDACTION=0                                                       GRPH1441
      IF(BUFF(2).NE.CPU) GO TO 30                                       GRPH1442
*                                                                       GRPH1443
* NOW READ IN THE CPU DISPLAY                                           GRPH1444
*                                                                       GRPH1445
      READ(2,801,END=400) UTSPM                                         GRPH1446
      DO 50 I=1,9                                                       GRPH1447
      IF(UTSPM(I).LT.100) GOTO 50                                       GRPH1448
      UTSPM(I)=0                                                        GRPH1449
50    CONTINUE                                                          GRPH1450
*                                                                       GRPH1451
* PROCEED                                                               GRPH1452
*                                                                       GRPH1453
      T2=60*H2+M2;T1=60*H1+M1                                           GRPH1454
      DO 200 I=1,13                                                     GRPH1455
200    IF(MON.EQ.MONTH(I,2))INDEX=I;GOTO 300                            GRPH1456
      OUTPUT'MONTH?'                                                    GRPH1457
300    DAY=MONTH(INDEX,1)+DAY                                           GRPH1458
      T2=T2+(DAY-DAY1)*MINPDAY                                          GRPH1460
*                                                                       GRPH1461
      IF(T1.GT.T2)T2=T2+24*60                                           GRPH1462
      RETURN                                                            GRPH1463
400    ENDACTION=1                                                      GRPH1464
      RETURN                                                            GRPH1465
*                                                                       GRPH1466
*                                                                       GRPH1467
800   FORMAT(T16,I2,1X,I2,1X,A3,1X,I2,T36,I2,1X,I2)                     GRPH1468
801   FORMAT(T22,F4.1)                                                  GRPH1469
*                                                                       GRPH1470
*                                                                       GRPH1471
999   OUTPUT 'I/O ERROR READING UTSPMLO',ENDACTION                      GRPH1472
      GO TO 400                                                         GRPH1473
*                                                                       GRPH1474
      END                                                               GRPH1475
      SUBROUTINE CLUSTER                                                GRPH1476
      IMPLICIT INTEGER(A-Z)                                             GRPH1477
      REAL TOTDURATION,CPUTOTAL,CURDURATION                             GRPH1478
      REAL AVGCORE,TOTCPU,MSECPIO,IOWAIT,UEXEC,USERV                    GRPH1479
      REAL PEXEC,PSERV,ETMF,SERVPCAL,CALPIO,XT,CORETIME                 GRPH1480
      DIMENSION DATA(9,1)                                               GRPH1481
      DIMENSION GROUP(25,100),BUFF(5),CHAR(9),MSPIOSTEP(26),CORESTEP(26)GRPH1483
      DIMENSION CORESIDE(6),MSPIOSIDE(6),CPUSIDE(6),CPUSTEP(26)         GRPH1484
      DATA NGROUPS,CHAR/20,'0123456789AB',                              GRPH1485
     &   'CDEFGHIJKLMNOPQRSTUVWXYZ'/                                    GRPH1486
      DATA MSPIOSIDE/'  MSEC PER ACCESS  '/                             GRPH1487
      DATA CORESIDE/'  CORE  SIZE  (PAGES)  '/                          GRPH1488
      DATA CPUSIDE/'        CPU TIME       '/
      DATA MSPIOSTEP/0,5,10,15,20,25,30,35,40,45,50,                    GRPH1490
     &               60,70,80,90,100,150,200,500,1000,                  GRPH1491
     &               1000000,10000000/                                  GRPH1492
      DATA CORESTEP/0,5,10,15,20,25,30,35,40,45,50,                     GRPH1493
     &              55,60,65,70,75,80,85,90,95,500,200/                 GRPH1494
      DATA CPUSTEP/0,15,30,45,60,75,90,105,120,135,150,                 GRPH1495
     &             165,180,240,360,420,480,540,600,1000,1000000    /    GRPH1496
      DATA BLANKS/'    '/                                               GRPH1497
      EQUIVALENCE (XT,IT),(ITOTCPU,TOTCPU),(IIOWAIT,IOWAIT)             GRPH1498
      GLOBAL DNAME,DDUR,DCORE,DMSPIO,DCLINK,DMLINK,DGLINK               GRPH1499
      DATA DNAME,DDUR,DCORE,DMSPIO,DCLINK,DMLINK,DGLINK/                GRPH1500
     &     1,    2,   3,    4,     6,     7,     8/                     GRPH1501
      GLOBAL DCPU,DCPLINK,CPUCHAIN                                      GRPH1502
      DATA DCPU,DCPLINK/     5,     9/                                  GRPH1503
*                                                                       GRPH1504
*                                                                       GRPH1506
      GLOBAL GTCPU,GTIOWAIT                                             GRPH1507
      DATA GTCPU,GTIOWAIT/3,4/                                          GRPH1508
*  SAME--                                                               GRPH1509
*                                                                       GRPH1510
*                                                                       GRPH1511
      CPUTOTAL=CORECHAIN=MSPIOCHAIN=CPUCHAIN=0                          GRPH1512
      TOTDURATION=CURDURATION=0.                                        GRPH1513
      REWIND 5                                                          GRPH1514
      FREE=SAVEFREE*4./9.+9                                             GRPH1515
      DO 10 I=1,NGROUPS+1                                               GRPH1516
      DO 10 J=1,100                                                     GRPH1517
10    GROUP(I,J)=0                                                      GRPH1518
*                                                                       GRPH1519
20    READ(5,END=200) NAME,AVGCORE,DHR,DMIN,DSEC,TOTCPU,USER,           GRPH1520
     &         UEXEC,USERV,PEXEC,PSERV,ETMF,IOWAIT,CALS,                GRPH1521
     &         TOT,A1,A2,A3,SERVPCAL,CALPIO,MSECPIO,PNO,CORETIME        GRPH1522
* CALC INDEXES                                                          GRPH1523
      CORE=AVGCORE/2                                                    GRPH1524
      IF (CORE.LE.0.OR.CORE.GT.100)                                     GRPH1525
     &   OUTPUT 'BAD CORE',CORE,CPU;                                    GRPH1526
     &   WRITE(6,903) NAME;                                             GRPH1527
     &   GO TO 20                                                       GRPH1528
      TOTDURATION=TOTDURATION+CORETIME                                  GRPH1529
      CPU=MSECPIO                                                       GRPH1530
      DO 25 I=2,NGROUPS+1                                               GRPH1531
25    IF (MSPIOSTEP(I).GT.CPU) CPU=I;   GO TO 27                        GRPH1532
      OUTPUT 'BAD CPU',CORE,CPU                                         GRPH1533
      WRITE(6,903) NAME;   GO TO 20                                     GRPH1534
27    FREE=FREE+1                                                       GRPH1535
*                                                                       GRPH1536
* NOW, EITHER ADD TO CHAIN OR START ONE                                 GRPH1537
*                                                                       GRPH1538
      IF(GROUP(CPU,CORE).GT.0) INDEX=GROUP(CPU,CORE)+1; GO TO 30        GRPH1539
*                                                                       GRPH1540
* FREE <- CPU AND IOWAIT                                                GRPH1541
* FREE+1 <- NAME AND START OF CHAIN                                     GRPH1542
*                                                                       GRPH1543
      DATA(GTCPU,FREE)=ITOTCPU                                          GRPH1544
      DATA(GTIOWAIT,FREE)=IIOWAIT                                       GRPH1545
      GROUP(CPU,CORE)=FREE                                              GRPH1546
      FREE=FREE+1                                                       GRPH1547
      DATA(DNAME,FREE)=NAME                                             GRPH1548
      DATA(DGLINK,FREE)=0                                               GRPH1549
      XT=CORETIME                                                       GRPH1550
      DATA(DDUR,FREE)=IT                                                GRPH1551
      DATA(DCORE,FREE)=IT                                               GRPH1553
      XT=MSECPIO                                                        GRPH1554
      DATA(DMSPIO,FREE)=IT                                              GRPH1555
      XT=TOTCPU*60.                                                     GRPH1556
      DATA(DCPU,FREE)=IT                                                GRPH1557
      CPUTOTAL=CPUTOTAL+XT                                              GRPH1558
      CALL INSERT(FREE,CORECHAIN,DCORE,DCLINK)                          GRPH1559
      CALL INSERT(FREE,MSPIOCHAIN,DMSPIO,DMLINK)                        GRPH1560
      CALL INSERT(FREE,CPUCHAIN,DCPU,DCPLINK)                           GRPH1561
      GO TO 20                                                          GRPH1562
*                                                                       GRPH1563
30    IF (DATA(DGLINK,INDEX).GT.0) INDEX=DATA(DGLINK,INDEX); GO TO 30   GRPH1564
      DATA(DGLINK,INDEX)=FREE                                           GRPH1565
      DATA(DNAME,FREE)=NAME                                             GRPH1566
      DATA(DGLINK,FREE)=0                                               GRPH1567
      XT=CORETIME                                                       GRPH1568
      DATA(DDUR,FREE)=IT                                                GRPH1569
      XT=AVGCORE                                                        GRPH1570
      DATA(DCORE,FREE)=IT                                               GRPH1571
      XT=MSECPIO                                                        GRPH1572
      DATA(DMSPIO,FREE)=IT                                              GRPH1573
      XT=TOTCPU*60.                                                     GRPH1574
      CPUTOTAL=CPUTOTAL+XT                                              GRPH1576
      CALL INSERT(FREE,CORECHAIN,DCORE,DCLINK)                          GRPH1577
      CALL INSERT(FREE,MSPIOCHAIN,DMSPIO,DMLINK)                        GRPH1578
      CALL INSERT(FREE,CPUCHAIN,DCPU,DCPLINK)                           GRPH1579
*                                                                       GRPH1580
* TOTAL UP TOTCPU AND IOWAIT FOR THIS CLASS                             GRPH1581
*                                                                       GRPH1582
      INDEX=GROUP(CPU,CORE)                                             GRPH1583
      IT=DATA(GTCPU,INDEX)                                              GRPH1584
      TOTCPU=TOTCPU+XT                                                  GRPH1585
      DATA(GTCPU,INDEX)=ITOTCPU                                         GRPH1586
      IT=DATA(GTIOWAIT,INDEX)                                           GRPH1587
      IOWAIT=IOWAIT+XT                                                  GRPH1588
      DATA(GTIOWAIT,INDEX)=IIOWAIT                                      GRPH1589
*                                                                       GRPH1590
      GO TO 20                                                          GRPH1591
*                                                                       GRPH1592
* AFTER CHAINS FORMED, OUTPUT GROUP MEMBERS                             GRPH1593
*                                                                       GRPH1594
200   WRITE(6,900)                                                      GRPH1595
*                                                                       GRPH1596
*                                                                       GRPH1597
*     OUTPUT 'VERIFY CORE CHAIN'                                        GRPH1599
*     OUTPUT (6) 'VERIFY CORE CHAIN'                                    GRPH1600
*     CALL VERIFY(CORECHAIN,DCORE,DCLINK)                               GRPH1601
*     OUTPUT 'VERIFY MSPIO CHAIN'                                       GRPH1602
*     OUTPUT (6) 'VERIFY MSPIO CHAIN'                                   GRPH1603
*     CALL VERIFY(MSPIOCHAIN,DMSPIO,DMLINK)                             GRPH1604
*     OUTPUT 'VERIFY CPU CHAIN'                                         GRPH1605
*     OUTPUT(6) 'VERIFY CPU CHAIN'                                      GRPH1606
*     CALL VERIFY(CPUCHAIN,DCPU,DCPLINK)                                GRPH1607
*     OUTPUT 'VERIFICATION COMPLETE'                                    GRPH1608
*     OUTPUT (6) 'VERIFICATION COMPLETE'                                GRPH1609
*                                                                       GRPH1610
*                                                                       GRPH1611
*                                                                       GRPH1612
      NWRITES=0                                                         GRPH1613
      GROUPNO=-1                                                        GRPH1614
      WRITE(6,907)                                                      GRPH1615
*                                                                       GRPH1616
      DO 300 CPU=1,NGROUPS+1                                            GRPH1617
      DO 300 CORE=1,100                                                 GRPH1618
      IF (GROUP(CPU,CORE).EQ.0) GROUP(CPU,CORE)=BLANKS; GO TO 300       GRPH1619
*                                                                       GRPH1620
      INDEX=GROUP(CPU,CORE)                                             GRPH1622
      ITOTCPU=DATA(GTCPU,INDEX)                                         GRPH1623
      IIOWAIT=DATA(GTIOWAIT,INDEX)                                      GRPH1624
      INDEX=INDEX+1                                                     GRPH1625
*                                                                       GRPH1626
      GROUPNO=MOD(GROUPNO+1,36)                                         GRPH1627
S     LW,1   GROUPNO                                                    GRPH1628
S     LB,2   CHAR,1                                                     GRPH1629
S     STB,2  TEMP                                                       GRPH1630
      GROUP(CPU,CORE)=TEMP                                              GRPH1631
      WRITE1=0                                                          GRPH1632
*                                                                       GRPH1633
* NOW BLOCK NAMES OF GROUP MEMBERS INTO BUF                             GRPH1634
*   5 AT A TIME UNTIL END-OF-CHAIN                                      GRPH1635
*                                                                       GRPH1636
40    DO 50 I=1,5                                                       GRPH1637
      BUFF(I)=DATA(DNAME,INDEX)                                         GRPH1638
      INDEX=DATA(DGLINK,INDEX)                                          GRPH1639
      IF(INDEX.EQ.0) GO TO 60                                           GRPH1640
50    CONTINUE                                                          GRPH1641
*                                                                       GRPH1642
* BUFFER FULL;  WRITE A RECORD - - -                                    GRPH1643
      NWRITES=NWRITES+1                                                 GRPH1645
      IF (MOD(NWRITES,LPPAGE).EQ.0) WRITE(6,907)                        GRPH1646
      IF (WRITE1.GT.0) WRITE(6,903) BUFF; GO TO 40                      GRPH1647
      WRITE1=1                                                          GRPH1648
      WRITE(6,901) 5,BUFF,TEMP,(MSPIOSTEP(I),I=CPU-1,CPU),              GRPH1649
     &   CORE*2,TOTCPU,IOWAIT,TOTCPU+IOWAIT,                            GRPH1650
     &   100.*(TOTCPU+IOWAIT)/TOTDURATION                               GRPH1651
      GO TO 40                                                          GRPH1652
60    NWRITES=NWRITES+1                                                 GRPH1653
      IF (MOD(NWRITES,LPPAGE).EQ.0) WRITE(6,907)                        GRPH1654
      IF (WRITE1.GT.0) WRITE(6,903) (BUFF(J),J=1,I); GO TO 300          GRPH1655
      WRITE1=1                                                          GRPH1656
      WRITE(6,901) I,(BUFF(J),J=1,I),TEMP,(MSPIOSTEP(I),I=CPU-1,CPU),   GRPH1657
     &   CORE*2,TOTCPU,IOWAIT,TOTCPU+IOWAIT,                            GRPH1658
     &   100.*(TOTCPU+IOWAIT)/TOTDURATION                               GRPH1659
300   CONTINUE                                                          GRPH1660
*                                                                       GRPH1661
* THAT LISTS MEMBERS AND CHAR. OF EACH GROUP                            GRPH1662
* NOW GRAPH THE GROUPS                                                  GRPH1663
*                                                                       GRPH1664
      WRITE(6,908)                                                      GRPH1665
      WRITE(6,910)                                                      GRPH1666
      WRITE(6,909) (I+8,I=0,50,10)                                      GRPH1668
      CNTR=0                                                            GRPH1669
      DO 400 CPU=1,NGROUPS+1                                            GRPH1670
S     LW,1   CNTR                                                       GRPH1671
S     LB,2   MSPIOSIDE,1                                                GRPH1672
S     STB,2  TEMP                                                       GRPH1673
      CNTR=CNTR+1                                                       GRPH1674
      IF (MOD(CNTR,LPPAGE).EQ.0) WRITE(6,904) (I+8,I*2,I=0,50,10)       GRPH1675
400   WRITE(6,906) TEMP, MSPIOSTEP(CPU),(GROUP(CPU,I),I=1,100)          GRPH1676
*                                                                       GRPH1677
      IF (MOD(CNTR,LPPAGE).EQ.0) GO TO 500                              GRPH1678
      WRITE(6,909) (I+8,I=0,50,10)                                      GRPH1679
      WRITE(6,904) (I+6,I*2,I=0,50,10)                                  GRPH1680
      WRITE(6,910)                                                      GRPH1681
*                                                                       GRPH1682
*                                                                       GRPH1683
*                                                                       GRPH1684
* NOW PRINT PROFILES OF USER SIZE AND                                   GRPH1685
*   CPU-BOUNDEDNESS                                                     GRPH1686
*                                                                       GRPH1687
*                                                                       GRPH1688
*                                                                       GRPH1689
500   WRITE(6,905)                                                      GRPH1690
      WRITE(6,908)                                                      GRPH1691
      CALL PROFILE(MSPIOCHAIN,DMSPIO,DDUR,DMLINK,TOTDURATION,           GRPH1692
     &             MSPIOSTEP,21,MSPIOSIDE)                              GRPH1693
      WRITE(6,911)                                                      GRPH1694
*                                                                       GRPH1695
      WRITE(6,908)                                                      GRPH1696
      CALL PROFILE(CORECHAIN,DCORE,DDUR,DCLINK,TOTDURATION,             GRPH1697
     &             CORESTEP,21,CORESIDE)                                GRPH1698
      WRITE(6,912)                                                      GRPH1699
      WRITE(6,908)                                                      GRPH1700
      CALL PROFILE(CPUCHAIN,DCPU,DCPU,DCPLINK,CPUTOTAL,CPUSTEP,         GRPH1701
     $             21,CPUSIDE)                                          GRPH1702
      WRITE (6,913)                                                     GRPH1703
*                                                                       GRPH1704
*                                                                       GRPH1705
*                                                                       GRPH1706
*                                                                       GRPH1707
      RETURN                                                            GRPH1708
*                                                                       GRPH1709
*                                                                       GRPH1710
*                                                                       GRPH1711
900   FORMAT('1',10/,T20,'S Y S T E M   P R O F I L E ')                GRPH1712
901   FORMAT(N(1X,A4),T30,A1,T32,2I7,I6,3F9.2,F12.2)                    GRPH1713
904   FORMAT(11(TN,I3))                                                 GRPH1715
905   FORMAT(5/,T20,'COMPUTE BOUNDEDNESS VS. CORE')                     GRPH1716
906   FORMAT(1X,A1,I5,T8,100A1,T8,'.',T58,'.')                          GRPH1717
907   FORMAT('1',T7,'GROUP MEMBERS',                                    GRPH1718
     &   T27,'NAME',T33,'MSEC/ACC RANGE',T48,'CORE',                    GRPH1719
     &   T58,'CPU',T64,'IOWAIT',T71,'DURATION',T81,'% DURATION',/,      GRPH1720
     &   T2,25'-',T27,4'-',T33,14'-',T48,4'-',T58,3'-',                 GRPH1721
     &   T64,6'-',T71,8'-',T81,10'-',/)                                 GRPH1722
908   FORMAT('1')                                                       GRPH1723
909   FORMAT(T8,50'.',11(TN,'*'))                                       GRPH1724
910   FORMAT(T20,'USER SIZE IN PAGES')                                  GRPH1725
911   FORMAT(5/,T20,'COMPUTE BOUNDEDNESS VS. DURATION')                 GRPH1726
912   FORMAT(5/,T20,'CORE SIZE VS. DURATION')                           GRPH1727
913   FORMAT(5/,T20,'CPU TIME VS. TOTAL CPU TIME')                      GRPH1728
      END                                                               GRPH1729
      SUBROUTINE INSERT(NEWPNTR,START,VPOS,VLINK)                       GRPH1730
      IMPLICIT INTEGER(A-Z)                                             GRPH1731
      DIMENSION DATA(9,1)                                               GRPH1732
      GLOBAL DATA                                                       GRPH1733
      REAL NEW,X                                                        GRPH1734
      EQUIVALENCE (X,IX),(NEW,INEW)                                     GRPH1735
*                                                                       GRPH1736
*                                                                       GRPH1738
      IF (START.GT.0) GO TO 10                                          GRPH1739
*                                                                       GRPH1740
* FIRST MEMBER OF CHAIN - - -                                           GRPH1741
*                                                                       GRPH1742
      START=NEWPNTR                                                     GRPH1743
      DATA(VLINK,NEWPNTR)=0                                             GRPH1744
      RETURN                                                            GRPH1745
*                                                                       GRPH1746
* CHAIN UNTIL WE FIND BIGGER VPOS                                       GRPH1747
*   IF END-OF-CHAIN, SIMPLY ADD - - -                                   GRPH1748
*   WATCH OUT FOR THIS BEING LOWEST GUY - - -                           GRPH1749
*                                                                       GRPH1750
10    LAST=START                                                        GRPH1751
      INEW=DATA(VPOS,NEWPNTR)                                           GRPH1752
      IX=DATA(VPOS,START)                                               GRPH1753
      IF(NEW.GT.X) GO TO 20                                             GRPH1754
*                                                                       GRPH1755
* NEW GUY IS SAMLLEST - - -                                             GRPH1756
*                                                                       GRPH1757
      DATA(VLINK,NEWPNTR)=START                                         GRPH1758
      START=NEWPNTR                                                     GRPH1759
*                                                                       GRPH1761
* NOW WE CHAIN DOWM- - -                                                GRPH1762
*                                                                       GRPH1763
20    LINK=DATA(VLINK,LAST)                                             GRPH1764
      IF (LINK.GT.0) GO TO 30                                           GRPH1765
*                                                                       GRPH1766
* END-OF-CHAIN - - -                                                    GRPH1767
*                                                                       GRPH1768
      DATA(VLINK,LAST)=NEWPNTR                                          GRPH1769
      DATA(VLINK,NEWPNTR)=0                                             GRPH1770
      RETURN                                                            GRPH1771
*                                                                       GRPH1772
* COMPARE - - -                                                         GRPH1773
*                                                                       GRPH1774
30    IX=DATA(VPOS,LINK)                                                GRPH1775
      IF (NEW.GT.X) GO TO 40                                            GRPH1776
*                                                                       GRPH1777
* HERE IS WHERE WE INSERT - - -                                         GRPH1778
*                                                                       GRPH1779
      DATA(VLINK,NEWPNTR)=LINK                                          GRPH1780
      DATA(VLINK,LAST)=NEWPNTR                                          GRPH1781
      RETURN                                                            GRPH1782
* CHAIN - - -                                                           GRPH1784
*                                                                       GRPH1785
40    LAST=LINK                                                         GRPH1786
      GO TO 20                                                          GRPH1787
*                                                                       GRPH1788
      END                                                               GRPH1789
      SUBROUTINE VERIFY(START,VPOS,VLINK)                               GRPH1790
      IMPLICIT INTEGER(A-Z)                                             GRPH1791
      DIMENSION DATA(9,1)                                               GRPH1792
      GLOBAL DATA                                                       GRPH1793
      REAL NEW,OLD,RBUF                                                 GRPH1794
      DIMENSION IBUF(4),RBUF(4)                                         GRPH1795
      EQUIVALENCE (NEW,INEW),(OLD,IOLD),(IBUF,RBUF)                     GRPH1796
*                                                                       GRPH1797
* VERIG;FIES THAT CHAIN MEMBERS OF VLINK CHAIN                          GRPH1798
*  ARE ORDERED IN VPOS FIELS                                            GRPH1799
*                                                                       GRPH1800
      INDEX=START                                                       GRPH1801
      IF (START.EQ.0) OUTPUT 'NO CHAIN'; STOP                           GRPH1802
      OLD=-1                                                            GRPH1803
10    INEW=DATA(VPOS,INDEX)                                             GRPH1804
      IF (OLD.LE.NEW) GO TO 20                                          GRPH1805
      OUTPUT (6) 'UNORDERED CHAIN'                                      GRPH1807
20    IBUF(1)=DATA(2,INDEX)                                             GRPH1808
      IBUF(2)=DATA(3,INDEX)                                             GRPH1809
      IBUF(3)=DATA(4,INDEX)                                             GRPH1810
      IBUF(4)=DATA(5,INDEX)                                             GRPH1811
      WRITE(6,900) DATA(1,INDEX),RBUF,(DATA(I,INDEX),I=6,9)             GRPH1812
      OLD=NEW                                                           GRPH1813
      INDEX=DATA(VLINK,INDEX)                                           GRPH1814
      IF (INDEX.GT.0) GO TO 10                                          GRPH1815
      OUTPUT 'VERIFY EXIT **'                                           GRPH1816
      RETURN                                                            GRPH1817
900   FORMAT(2X,A4,4F12.2,4I6)                                          GRPH1818
      END                                                               GRPH1819
      SUBROUTINE PROFILE(START,VPOS,VJOBWT,VLINK,TOTDURATION,           GRPH1820
     &   STEP,NSTEPS,SIDETITLE)                                         GRPH1821
      IMPLICIT INTEGER (A-Z)                                            GRPH1822
      REAL TOTDURATION,OLD,X,CURDURATION,HIGHVAL,GROUPDURATION,RBUF     GRPH1823
      DIMENSION IBUF(4),RBUF(4)                                         GRPH1824
      EQUIVALENCE (X,IX),(IBUF,RBUF)                                    GRPH1825
      DIMENSION DATA(9,1),STEP(NSTEPS)                                  GRPH1826
      GLOBAL DATA                                                       GRPH1827
*                                                                       GRPH1828
* PROFILE PRINTS A CUMULATIVE HISTOGRAM IF TOTAL                        GRPH1830
*   DURATION (AS A PERCENT) VS. A (PARAMATERIZED)                       GRPH1831
*   JOB CHARACTERISTIC, SUCH AS JOB SIZE OR COMPUTE -                   GRPH1832
*   BOUNDEDNESS.                                                        GRPH1833
*                                                                       GRPH1834
* INPUT:                                                                GRPH1835
*   1 - POINTER TO CHAIN OF JOBS LINKED IN DATA WHICH                   GRPH1836
*        ARE ORDERED ON CHARACTERISTIC BEING PROFILED.                  GRPH1837
*   2 - STEP, A TABLE OF VALUES WHICH DEFINE GROUPS                     GRPH1838
*   3 - SIDETITLE - THE NAME OF CHARACTERISTIC BEING                    GRPH1839
*        PROFILED.  THIS IS PRINTED VERTICALLY;                         GRPH1840
*        PERCENTAGES ARE PRINTED HORIZONTALLY.                          GRPH1841
*                                                                       GRPH1842
*                                                                       GRPH1843
*                                                                       GRPH1844
*                                                                       GRPH1845
      WRITE(6,900)                                                      GRPH1846
      WRITE (6,904) (I/2+6,I,I=0,100,10)                                GRPH1847
      WRITE(6,902)   (I/2+8,I=0,100,10)                                 GRPH1848
*                                                                       GRPH1849
*                                                                       GRPH1850
      OLD=-1.                                                           GRPH1851
      CURDURATION=0.                                                    GRPH1852
      INDEX=START                                                       GRPH1853
*                                                                       GRPH1854
      DO 100 GROUP=1,NSTEPS                                             GRPH1855
      GROUPDUR=0.                                                       GRPH1856
      HIGHVAL=STEP(GROUP)                                               GRPH1857
S     LW,1   GROUP                                                      GRPH1858
S     LB,2   *SIDETITLE,1                                               GRPH1859
S     STB,2  SIDETAB                                                    GRPH1860
      IF (INDEX.EQ.0) GO TO 50                                          GRPH1861
*                                                                       GRPH1862
*                                                                       GRPH1863
10    IX=DATA(VPOS,INDEX)                                               GRPH1864
*                                                                       GRPH1865
* CHECK FOR VALUES IN ORDER - - -                                       GRPH1866
*                                                                       GRPH1867
      IF (OLD.LE.X) OLD=X;  GO TO 20                                    GRPH1868
      OUTPUT 'UNORDERED CHAIN'                                          GRPH1869
      OUTPUT 'TRY TO CONTINUE -'                                        GRPH1870
*                                                                       GRPH1871
*                                                                       GRPH1872
*                                                                       GRPH1873
20    IF (X.GT.HIGHVAL) GO TO 50                                        GRPH1874
*                                                                       GRPH1875
*                                                                       GRPH1877
      IX=DATA(VJOBWT,INDEX)                                             GRPH1878
      GROUPDUR=GROUPDUR+X                                               GRPH1879
      CURDURATION=CURDURATION+X                                         GRPH1880
      INDEX=DATA(VLINK,INDEX)                                           GRPH1881
      IF (INDEX.GT.0) GO TO 10                                          GRPH1882
*                                                                       GRPH1883
* END OF GROUP - - -                                                    GRPH1884
*                                                                       GRPH1885
50    TAB1=50.*GROUPDURATION/TOTDURATION                                GRPH1886
      TAB2=8+50.*CURDURATION/TOTDURATION                                GRPH1887
      WRITE(6,901) SIDETAB,STEP(GROUP),TAB1,TAB2                        GRPH1888
*                                                                       GRPH1889
100   CONTINUE                                                          GRPH1890
*                                                                       GRPH1891
* VERFIY THAT CHAIN FINSIHED - - -                                      GRPH1892
*                                                                       GRPH1893
      IF (INDEX.EQ.0) GO TO 150                                         GRPH1894
      OUTPUT 'WARNING - CHAIN INCOMPLETE'                               GRPH1895
      OUTPUT(6) 'INCOMPLETE CHAIN:'                                     GRPH1896
      CALL VERIFY(START,VPOS,VLINK)                                     GRPH1897
      OUTPUT (6) '---------------'                                      GRPH1898
110   IBUF(1)=DATA(2,INDEX)                                             GRPH1900
      IBUF(2)=DATA(3,INDEX)                                             GRPH1901
      IBUF(3)=DATA(4,INDEX)                                             GRPH1902
      IBUF(4)=DATA(5,INDEX)                                             GRPH1903
      WRITE(6,903) DATA(1,INDEX),RBUF,(DATA(I,INDEX),I=6,9)             GRPH1904
      INDEX=DATA(VLINK,INDEX)                                           GRPH1905
      IF (INDEX.GT.0) GO TO 110                                         GRPH1906
*                                                                       GRPH1907
*                                                                       GRPH1908
*                                                                       GRPH1909
*                                                                       GRPH1910
150   WRITE(6,902) (I/2+8,I=0,100,10)                                   GRPH1911
      WRITE(6,904) (I/2+6,I,I=0,100,10)                                 GRPH1912
      WRITE(6,900)                                                      GRPH1913
      RETURN                                                            GRPH1914
*                                                                       GRPH1915
900   FORMAT(T15,'PERCENTAGE OF TOTAL DURATION')                        GRPH1916
901   FORMAT(T2,A1,I5,T58,'.',T8,N'-',TN,'+',T8,'.')                    GRPH1917
902   FORMAT(T8,50'.',11(TN,'*'))                                       GRPH1918
903   FORMAT(2X,A4,4F12.2,4I6)                                          GRPH1919
904   FORMAT(11(TN,I3))                                                 GRPH1920
*                                                                       GRPH1921
