C********************************************************************* C C PROGRAM MJP C *********** C C THIS ROUTINE PRODUCES A MONTHLY TASK ACTIVITY REPORT C SORTED BY... C C A) INCREASING UIC NUMBER C B) SORTED TASK NAME C C RECORDS ASSOCIATED WITH UIC'S WHOSE GROUP NUMBER C IS LESS THAN OR EQUAL TO 7 ARE BUNCHED C TOGETHER INTO ONE UIC -- [0,0]. C C INPUTS; C C A) INPUT FILENAME C B) JOB-UIC INFORMATION FILENAME C C) MONTH (1 TO 12) C C********************************************************************* C LOGICAL*1 PUIC(2),CARD(80),IEND,OLD,UICP(6),TASK(3), * D1UIC(2),I1TASK(3) C INTEGER*2 PMMDD,PHHMM,PTASK,PRCRD(16),UIC,D2UIC,UICS(500) C INTEGER*4 PB(8),LIST(6),SLIST(6),CPU,ELAPS,DBQ, * LPQ,MTQ,OTQ,I4UIC,NUIC,JUIC,COUNT C EQUIVALENCE (PB,PRCRD,PMMDD), (PRCRD(2),PHHMM), * (PRCRD(3),PUIC,UIC),(PRCRD(4),PTASK), * (PB(3),LIST,CPU), (PB(4),ELAPS), * (PB(5),DBQ), (PB(6),LPQ), * (PB(7),MTQ), (PB(8),OTQ), * (D1UIC,D2UIC) C DATA LEN,KNT /6,0/, IEND,OLD/.FALSE.,.FALSE./ DATA NUICS/0/ C 9000 FORMAT (80A1) 9010 FORMAT (' PROGMMDD.ACL FILENAME >',$) 9020 FORMAT (' UIC TO JOB REF. FILENAME >',$) 9030 FORMAT (' MONTH >',$) 9040 FORMAT (1H1,10X,'UIC=[',3A1,',',3A1,'] ',80A1, * //) 9050 FORMAT (2O3) 9100 FORMAT (5X,3A1,2F12.1,6I12) 9120 FORMAT (1X,I7,2F12.1,6I12) C C----- C OPEN THE FILES C----- WRITE (1,9010) READ (1,9000) CARD CALL TRIM (CARD) CALL ASSIGN (2,CARD) C WRITE (1,9020) READ (1,9000) CARD CALL TRIM (CARD) CALL ASSIGN (3,CARD) C WRITE (1,9030) READ (1,*) MONTH C CALL ASSIGN (6,'MJP.PRT') C C-------------------------------------------------------------------- C READ THROUGH THE INPUT FILE AND BUILD THE RANDOM FILE. C C COUNT=0 C NP=1 DO 200 NE=1,300 READ (5,9450,END=300) D1UIC(2),D1UIC(1) 9450 FORMAT (2O3) UICS(I)=D2UIC 200 CONTINUE 300 NE=NE-1 KUIC=UICS(NP) D2UIC=KUIC C 1000 READ (2,END=2000) PB COUNT=COUNT+1 C M=PMMDD/100 IF (M.NE.MONTH) GO TO 1000 1080 IF (PUIC(2).GT."7) GO TO 1100 PUIC(1)=0 PUIC(2)=0 C 1100 I4UIC=UIC KD=1 CALL R50ASC (3,PTASK,I1TASK) IF (UIC.EQ.KUIC) WRITE (6,9550) I1TASK,PMMDD,PHHMM,D1UIC(2), * D1UIC(1),CPU,ELAPS,(LIST(I),I=3,LEN) 9550 FORMAT (1X,3A1,2X,2I10,' [',O3,',',O3,']',6I12) C CALL SUM (KD,I4UIC,PTASK,LEN,LIST) GO TO 1000 C C-------------------------------------------------------------------- C SORT THE DATA AND ON A NEW PAGE FOR EACH UIC, REPORT. C C 2000 IF (NP.EQ.1) STOP NP=NP+1 KUIC=UICS(NP) D2UIC=KUIC REWIND 2 IF (NP.GT.0) GO TO 1000 KD=0 C CALL SUM (KD,I4UIC,PTASK,LEN,LIST) C C PRINT A TABLE OF THE UICS C DO 2020 I=1,NUICS D2UIC=UICS(I) WRITE (6,9400) D1UIC(2),D1UIC(1) 2020 CONTINUE 9400 FORMAT (' [',O3,',',O3,']') C WRITE (6,*) 'COUNT=',COUNT IF (COUNT.GT.0) STOP C 3000 KD=-1 CALL SUM (KD,I4UIC,PTASK,LEN,LIST) IF (KD.EQ.-1) GO TO 3100 IEND=.TRUE. GO TO 5000 C 3100 IF (OLD) GO TO 3200 NUIC=I4UIC OLD=.TRUE. C 3200 IF (I4UIC.NE.NUIC) GO TO 5000 C KNT=KNT+1 IF (KNT.GT.1) GO TO 4000 C C------------------------ C NEW PAGE > C SCAN THROUGH THE UIC > JOB CROSS REF FILE C 3300 READ (3,9050,END=3400) D1UIC(2),D1UIC(1) JUIC=D2UIC READ (3,9000) CARD IF (JUIC.NE.NUIC) GO TO 3300 GO TO 3600 3400 DO 3500 I=1,80 3500 CARD(I)=1H 3600 REWIND 3 CALL UICPRT (NUIC,UICP) WRITE (6,9040) UICP,CARD C DO 3700 I=1,LEN 3700 SLIST(I)=0 C C----- C PRINT THE CURRENT TASK INFO C----- 4000 CALL R50ASC (3,PTASK,TASK) CSEC=CPU/60. ESEC=ELAPS/60. C WRITE (6,9100) TASK,CSEC,ESEC,(LIST(I),I=3,LEN) C DO 4100 I=1,LEN SLIST(I)=SLIST(I)+LIST(I) 4100 CONTINUE GO TO 3000 C C----- C END OF THIS UIC, PRINT THE SUMMARY LINE C----- 5000 CSEC=SLIST(1)/60. ESEC=SLIST(2)/60. WRITE (6,9120) KNT,CSEC,ESEC,(SLIST(I),I=3,LEN) C IF (IEND) STOP C KNT=1 NUIC=I4UIC GO TO 3300 C END