cdc:nos2.source:opl871:dfsort
Table of Contents
DFSORT
Table Of Contents
Source Code
- DFSORT.txt
- *** THE *DFSORT* CONTROL STATEMENT SORTS THE *OUTPUT* FROM
- * THE DAYFILE DUMPING UTILITIES TO THE FILE SPECIFIED.
- *
- * THE CONTROL STATEMENT FORMAT IS -
- *
- * DFSORT(D=LFN1,L=LFN2,S=AAA,F=999,TN=NAME)
- *
- * LFN1 - NAME OF THE FILE TO SORT FROM. IF THIS
- * PARAMETER IS OMITTED, FILE *DAYFILE* IS
- * ASSUMED.
- *
- * LFN2 - NAME OF THE FILE TO WRITE TO. IF THIS
- * PARAMETER IS OMITTED, FILE *OUTPUT* IS
- * ASSUMED.
- *
- * AAA - LAST THREE CHARACTERS OF THE JOB SEQUENCE
- * NUMBER TO START THE SORT. IF THIS PARAMETER
- * IS OMITTED, THE SORT BEGINS WITH THE
- * CHARACTER STRING *AAA*.
- *
- * 999 - LAST THREE CHARACTERS OF THE JOB SEQUENCE
- * NUMBER TO STOP THE SORT. IF THIS PARAMETER
- * IS OMITTED, THE SORT ENDS WITH THE
- * CHARACTER STRING *999*.
- *
- * NAME - TEST NAME IS ONE OF THE FOLLOWING -
- * P - THE TEST JOB PASSED.
- * F - THE TEST JOB FAILED.
- * QAQ - TEST JOB NAME.
- OVERLAY(DFSORT,0,0)
- PROGRAM DFSORT(TAPE1,OUTPUT,TAPE2=OUTPUT,
- 1 TAPE3,TAPE4)
- COMMON /DATA/JOBS,JOBF,ITN
- DIMENSION JJOB(1000),III(1000),KK(1000)
- DIMENSION LINE(8)
- DIMENSION ICHAR(50)
- DIMENSION JOB(1000)
- DIMENSION TIMES(1000,4)
- DIMENSION IRUN(1000)
- DIMENSION MSG(1000,3)
- DIMENSION NTIME(3)
- DIMENSION MRUN(50,3)
- INTEGER SJOB
- INTEGER STIME
- INTEGER FJOB
- INTEGER FTIME
- REAL MSTIME
- REAL MTTIME
- 1000 FORMAT (BZ,8A10)
- 1001 FORMAT (50R1)
- 2000 FORMAT(1H1,19X,'DAYFILE SUMMARY - ',A10,2X,
- 1 ' (FROM ....',R3,'. TO ....',R3,'.)',11X,'PAGE',I4,/,
- 2 3X,' JOB',3X,' NAME ',3X,' CP TIME',3X,'SYS RSRCE',
- 3 3X,' MS USAGE',3X,' MT USAGE',
- 4 3X,' RUN ',5X,'LAST DAYFILE MESSAGE.'/
- 5 26X,'(SECS)',6X,'(UNTS)',6X,'(KUNS)',6X,'(KUNS)'//)
- 2001 FORMAT (2X,I4,1H.,3X,A10,4(3X,F9.3),3X,A10,5X,3A10)
- 2002 FORMAT (/,14X,'TOTALS',4(1X,F11.3))
- 2003 FORMAT (/,13X,'FINISH TIME - ',A10,2X,' AT END OF - ',A10,
- 1 /14X,'START TIME - ',A10,' AT START OF - ',A10)
- 2004 FORMAT (12X,'ELAPSED TIME - ',I2,' HR. ',I2,' MIN. ',I2,
- 1 ' SEC.',' (',I6,' SEC.)')
- 2005 FORMAT (1H1,19X,'DAYFILE SUMMARY - ',A10,40X,'PAGE',I4,/,
- 1 10X,'RUN',7X,' USED'//)
- 2006 FORMAT (10X,A10,I5)
- 2007 FORMAT(1H1,19X,' A C R SUMMARY - ',A10,2X,
- 1 '(FROM ....',R3,'. TO ....',R3,'.)',11X,'PAGE',I4)
- 2008 FORMAT (10X,4A10)
- 2009 FORMAT (BZ,I4,3A10,3A10)
- 2010 FORMAT(//36X,'NUMBER OF PASSES =',I4/)
- 2011 FORMAT(//36X,'NUMBER OF FAILS =',I4/)
- 2012 FORMAT(//36X,'TOTAL NUMBER =',I4/)
- 2013 FORMAT (2X,I4,1H.,3X,A10,3X,A10,3X,3A10,6X,A10)
- 2014 FORMAT (3X,' JOB',2X,' NAME ',3X,' TEST NAME ',
- 1 3X,'ACR MESSAGE ',22X,' TYPE ',/)
- 2015 FORMAT(3X,' JOB',2X,' NAME ',3X,' TEST NAME ',
- 1 3X,'ACR MESSAGE ',22X,' TYPE ',/,19X,'(TN=',A3,')')
- 3000 FORMAT (26X,F10.3,4X)
- 3001 FORMAT (1X,I2,1X,I2,1X,I2,1X)
- 3002 FORMAT (5X,I3,2X)
- ** ACCOUNTING CONSTANTS.
- DATA BFILL /10H /
- DATA IRUN /1000 * O"5555 5555 5555 5555 5555"/
- DATA NUECP /L"UECP"/
- DATA NSECS /R"SECS"/
- DATA NAESR /L"AESR"/
- DATA NUNTS /R"UNTS"/
- DATA NUEMS /L"UEMS"/
- DATA NKUNS /R"KUNS"/
- DATA NUEMT /L"UEMT"/
- DATA MASK1 /O"7700 0000 0000 0000 0000"/
- DATA MASK2 /O"7777 0000 0000 0000 0000"/
- DATA MASK3 /O"7777 7700 0000 0000 0000"/
- DATA MASK4R/O"0000 0000 0000 7777 7777"/
- DATA MASK4L/O"7777 7777 0000 0000 0000"/
- DATA MASK8 /O"7777 7777 7777 7777 0000"/
- DATA MASK9 /O"0077 7777 7700 0000 0000"/
- DATA MASK10 /O"0000 0000 0000 0000 0077"/
- DATA IQM1 /O"0021 0121 0100 0000 0000"/
- DATA IQM2 /O"0000 0000 0000 0000 0020"/
- *
- ** INITIALIZE CPU, MS, MT, SRU ACCUMULATORS.
- *
- DATA CPTIME /0.0/
- DATA MSTIME /0.0/
- DATA MTTIME /0.0/
- DATA SRTIME /0.0/
- DATA TIMES /4000 * 0.0/
- *
- ** INITIALIZE LAST DAYFILE MESSAGE TO *(NONE)*.
- *
- DATA MSG /1000 * 8H (NONE), 2000 * 1H /
- ** COMPILER TABLE.
- DATA MRUN(1,1) /L"COMPASS"/
- DATA MRUN(1,2) /O"7777 7777 7777 7700 0000"/
- DATA MRUN(1,3) /O"0000 0000 0000 0055 5555"/
- DATA MRUN(2,1) /L"SORTMRG"/
- DATA MRUN(2,2) /O"7777 7777 7777 7700 0000"/
- DATA MRUN(2,3) /O"0000 0000 0000 0055 5555"/
- DATA MRUN(3,1) /L"ALGOL"/
- DATA MRUN(3,2) /O"7777 7777 7700 0000 0000"/
- DATA MRUN(3,3) /O"0000 0000 0055 5555 5555"/
- DATA MRUN(4,1) /L"COBOL"/
- DATA MRUN(4,2) /O"7777 7777 7700 0000 0000"/
- DATA MRUN(4,3) /O"0000 0000 0055 5555 5555"/
- DATA MRUN(5,1) /L"RUN23"/
- DATA MRUN(5,2) /O"7777 7777 7700 0000 0000"/
- DATA MRUN(5,3) /O"0000 0000 0055 5555 5555"/
- DATA MRUN(6,1) /L"BASIC"/
- DATA MRUN(6,2) /O"7777 7777 7700 0000 0000"/
- DATA MRUN(6,3) /O"0000 0000 0055 5555 5555"/
- DATA MRUN(7,1) /L"FTN"/
- DATA MRUN(7,2) /O"7777 7700 0000 0000 0000"/
- DATA MRUN(7,3) /O"0000 0055 5555 5555 5555"/
- DATA MRUN(8,1) /L"RUN"/
- DATA MRUN(8,2) /O"7777 7700 0000 0000 0000"/
- DATA MRUN(8,3) /O"0000 0055 5555 5555 5555"/
- DATA MRUN(9,1) /L"FTN5"/
- DATA MRUN(9,2) /O"7777 7777 0000 0000 0000"/
- DATA MRUN(9,3) /O"0000 0000 5555 5555 5555"/
- DATA MRUN(10,1) /L"SYMPL"/
- DATA MRUN(10,2) /O"7777 7777 7700 0000 0000"/
- DATA MRUN(10,3) /O"0000 0000 0055 5555 5555"/
- CALL REMARK(' VERSION 3')
- REWIND 1
- REWIND 3
- REWIND 4
- CALL DATER(DATE)
- IJOB = 1
- ITNM = 0
- IF(ITN.EQ.0) GO TO 7
- IF((ITN.AND. .NOT.MASK3).EQ.0)ITNM = MASK3
- IF((ITN.AND. .NOT.MASK2).EQ.0)ITNM = MASK2
- IF((ITN.AND. .NOT.MASK1).EQ.0)ITNM = MASK1
- 7 CONTINUE
- STIME = 0
- JOBS = SHIFT(JOBS,-42).AND.O"777777"
- JOBF = SHIFT(JOBF,-42).AND.O"777777"
- ITIME = 1
- 1 READ(1,1000,END=10000) LINE
- 10000 IF(EOF(1)) 100,2,100
- ** CHANGE 00B TO BLANK(55B)
- 2 CONTINUE
- DECODE(50,1001,LINE(1)) (ICHAR(I),I=1,50)
- DO 201 L=1,50
- IF(ICHAR(L) .EQ. O"00") ICHAR(L) = O"55"
- 201 CONTINUE
- ENCODE(50,1001,LINE(1)) (ICHAR(I),I=1,50)
- ** DETERMINE JOB LIMITS.
- JOBN = SHIFT(LINE(2),-18).AND.O"777777"
- IF (ITIME.EQ.0) GO TO 21
- IF ((LINE(2).AND.MASK8).EQ.L"SYSTEM ") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"TELEX S") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"BATCHIOS") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"EXPORTLS") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"IAFEX S") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"MSSEXECS") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"NAM S") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"RBF S") GO TO 1
- IF ((LINE(2).AND.MASK8).EQ.L"MAGNET S") GO TO 1
- IF (LINE(3).EQ.6HINPUT.) GO TO 1
- ITIME = 0
- STIME = LINE(1)
- SJOB = LINE(2)
- 21 IF(JOBN.LT.JOBS) GO TO 1
- IF(JOBN.GT.JOBF) GO TO 1
- IF(STIME.NE.0) GO TO 23
- STIME = LINE(1)
- 23 FTIME = LINE(1)
- FJOB = LINE(2)
- ** ADD JOB NAME TO JOB LIST IF NOT IN.
- INJ=0
- DO 31 II=1,IJOB
- I = II
- IF(JOB(I).EQ.LINE(2)) GO TO 4
- 31 CONTINUE
- JOB(I) = LINE(2)
- ICNT = 60
- JB = LINE(3)
- ** DETERMINE JOB NAME LENGTH
- 32 JB = SHIFT(JB,6)
- ICNT = ICNT - 6
- IF((JB.AND.O"77").LT.R"A") GO TO 33
- IF((JB.AND.O"77").GT.R"9") GO TO 33
- IF(ICNT.NE.0) GO TO 32
- JJOB(I) = LINE(3)
- GO TO 34
- ** ADD BLANKS TO JOB NAME FIELD
- 33 N = ICNT + 6
- JB = SHIFT(JB,ICNT)
- JJOB(I) = (JB.AND.MASK(60-N)).OR.(SHIFT(MASK(N),N).AND.BFILL)
- 34 CONTINUE
- IJOB = IJOB+1
- INJ=1
- ** ENTER JOB TIMES.
- 4 IF((LINE(4).AND.MASK4R).NE.NSECS) GO TO 41
- IF((LINE(3).AND.MASK4L).NE.NUECP) GO TO 41
- DECODE(40,3000,LINE) TIME
- CPTIME = CPTIME+TIME
- TIMES(I,1) = TIMES(I,1)+TIME
- GO TO 44
- 41 IF((LINE(4).AND.MASK4R).NE.NUNTS) GO TO 42
- IF((LINE(3).AND.MASK4L).NE.NAESR) GO TO 42
- DECODE(40,3000,LINE) TIME
- SRTIME = SRTIME+TIME
- TIMES(I,2) = TIMES(I,2)+TIME
- GO TO 44
- 42 IF((LINE(4).AND.MASK4R).NE.NKUNS) GO TO 5
- IF((LINE(3).AND.MASK4L).NE.NUEMS) GO TO 43
- DECODE(40,3000,LINE) TIME
- MSTIME = MSTIME+TIME
- TIMES(I,3) = TIMES(I,3)+TIME
- GO TO 44
- 43 IF((LINE(3).AND.MASK4L).NE.NUEMT) GO TO 1
- DECODE(40,3000,LINE) TIME
- MTTIME = MTTIME+TIME
- TIMES(I,4) = TIMES(I,4)+TIME
- 44 GO TO 1
- ** DETERMINE RUN TYPE.
- 5 IF(INJ.EQ.0) GO TO 50
- IF(JOBN.GE.JOBS) GO TO 1
- 50 DO 51 J=1,50
- IF (MRUN(J,1).EQ.0) GO TO 6
- IF ((LINE(3).AND.MRUN(J,2)).NE.(MRUN(J,1).AND.MRUN(J,2)))
- 1 GO TO 51
- IRUN(I) = SHIFT(((MRUN(J,1).AND.MRUN(J,2)).OR.MRUN(J,3)),42)
- MRUN(J,1) = MRUN(J,1)+1
- GO TO 6
- 51 CONTINUE
- ** ENTER DAYFILE MESSAGE.
- 6 DO 61 J=1,3
- 61 MSG(I,J) = LINE(J+2)
- IF((LINE(3).AND.MASK9).NE.IQM1) GO TO 62
- ITAPE =4
- IF((LINE(4).AND.MASK10).EQ.IQM2) ITAPE = 3
- IF((JJOB(I).AND.ITNM).NE.(ITN)) GO TO 62
- WRITE(ITAPE,2009)I,JOB(I),JJOB(I),IRUN(I),(LINE(L),L=3,5)
- 62 CONTINUE
- GO TO 1
- ** PRINT JOB TABLES
- 100 LINES = 64
- J = IJOB-1
- IPAGE = 1
- DO 105 I=1,J
- IF (LINES.LT.60) GO TO 101
- WRITE(2,2000)DATE,JOBS,JOBF,IPAGE
- LINES = 4
- IPAGE = IPAGE+1
- 101 M = R"999"
- DO 102 K=1,J
- IF (JOB(K).EQ.0) GO TO 102
- IF ((SHIFT(JOB(K),-18).AND.O"777777").GE.M) GO TO 102
- L = K
- M = SHIFT(JOB(K),-18).AND.O"777777"
- 102 CONTINUE
- K = L
- WRITE(2,2001) I,JOB(K),(TIMES(K,L),L=1,4),IRUN(K),(MSG(K,L),
- 1 L=1,3)
- JOB(K) = 0
- III(K) = I
- 105 LINES = LINES+1
- ** LIST TOTALS.
- WRITE(2,2002) CPTIME,SRTIME,MSTIME,MTTIME
- WRITE(2,2003) FTIME,FJOB,STIME,SJOB
- DECODE(10,3001,STIME) NTIME
- ITIME = 3600*NTIME(1)+60*NTIME(2)+NTIME(3)
- DECODE(10,3001,FTIME) NTIME
- JTIME = 3600*NTIME(1)+60*NTIME(2)+NTIME(3)
- KTIME = JTIME-ITIME
- NTIME(1) = KTIME/3600
- ITIME = KTIME/60
- NTIME(2) = ITIME-(NTIME(1)*60)
- NTIME(3) = KTIME-(NTIME(2)*60)-(NTIME(1)*3600)
- WRITE(2,2004) NTIME,KTIME
- ** LIST RUN USAGE.
- WRITE(2,2005) DATE,IPAGE
- LINES = 4
- IPAGE = IPAGE+1
- DO 110 I=1,50
- IF (MRUN(I,1).EQ.0) GO TO 111
- J = (MRUN(I,1).AND.MRUN(I,2)) .OR. MRUN(I,3)
- K = MRUN(I,1).AND.O"777777"
- 110 WRITE(2,2006) J, K
- *
- ** AUTOMATIC CHECKOUT ROUTINES SUMMARY PROCESSOR.
- *
- 111 ENDFILE 3
- ENDFILE 4
- REWIND 3
- REWIND 4
- ITOT = 0
- IPASS = 0
- IFAIL = 0
- DO 112 I=1,1000
- KK(I)=0
- 112 CONTINUE
- ITAPE = 3
- DO 114 J=1,1000
- READ(ITAPE,2009,END=10001)I,JOB(I),JJOB(I),IRUN(I),(MSG(I,L)
- +,L=1,3)
- 10001 IF(EOF(ITAPE)) 115,113,115
- 113 IPASS = IPASS + 1
- ITOT = ITOT + 1
- KK(I) = III(I)
- 114 CONTINUE
- 115 IF(IPASS.EQ.0) GO TO 119
- LINES = 64
- J = J - 1
- DO 118 I = 1,J
- IF(LINES.LT.60) GO TO 116
- WRITE(2,2007)DATE,JOBS,JOBF,IPAGE
- IF(ITN.EQ.0)WRITE(2,2014)
- IF(ITN.NE.0)WRITE(2,2015)ITN
- LINES = 4
- IPAGE = IPAGE + 1
- 116 M = 1001
- DO 117 K=1,1000
- IF(KK(K).EQ.0) GO TO 117
- IF(KK(K).GE.M) GO TO 117
- L = K
- M = KK(K)
- 117 CONTINUE
- K = L
- WRITE(2,2013)KK(K),JOB(K),JJOB(K),(MSG(K,L),L=1,3),IRUN(K)
- KK(K) = 0
- LINES = LINES + 1
- 118 CONTINUE
- WRITE(2,2010)IPASS
- *
- 119 ITAPE = 4
- DO 121 J = 1,1000
- READ(ITAPE,2009,END=10002)I,JOB(I),JJOB(I),IRUN(I),(MSG(I,L)
- +,L=1,3)
- 10002 IF(EOF(ITAPE)) 122,120,122
- 120 IFAIL = IFAIL + 1
- ITOT = ITOT + 1
- KK(I) = III(I)
- 121 CONTINUE
- 122 IF(IFAIL.EQ.0)GO TO 126
- LINES = 64
- J = J - 1
- DO 125 I=1,J
- IF(LINES.LT.60) GO TO 123
- WRITE(2,2007)DATE,JOBS,JOBF,IPAGE
- IF(ITN.EQ.0)WRITE(2,2014)
- IF(ITN.NE.0)WRITE(2,2015)ITN
- LINES = 4
- IPAGE = IPAGE + 1
- 123 M = 1001
- DO 124 K = 1,1000
- IF(KK(K).EQ.0)GO TO 124
- IF(KK(K).GE.M)GO TO 124
- L = K
- M = KK(K)
- 124 CONTINUE
- K = L
- WRITE(2,2013)KK(K),JOB(K),JJOB(K),(MSG(K,L),L=1,3),IRUN(K)
- KK(K) = 0
- LINES = LINES + 1
- 125 CONTINUE
- WRITE(2,2011)IFAIL
- 126 IF(ITOT.EQ.0) GO TO 127
- WRITE(2,2007)DATE,JOBS,JOBF,IPAGE
- WRITE(2,2010)IPASS
- WRITE(2,2011)IFAIL
- WRITE(2,2012)ITOT
- 127 ENDFILE 2
- END
- SUBROUTINE DATER(I)
- CALL DATE(I)
- RETURN
- END
- IDENT PRESET
- ENTRY PRESET
- SYSCOM
- SPACE 4,10
- *CALL COMCMAC
- SPACE 4,10
- PRESET SB1 1
- SA1 ACTR
- SB4 X1
- SA4 ARGR
- SB5 PRSA
- RJ ARG PROCESS ARGUMENTS
- ZR X1,PRS1 IF NO ARGUMENT ERRORS
- MESSAGE (=C*DFSORT ARGUMENT ERROR.*)
- ABORT
- PRS1 SA1 D SET DAYFILE NAME
- SA2 L SET LIST FILE NAME
- BX6 X1
- LX7 X2
- SA6 ARGR
- SA7 A6+B1
- SX6 B1+B1 ARGUMENT COUNT = 2
- SA6 ACTR
- EQ =XDFSORT ENTER FORTRAN PROGRAM
- PRSA BSS 0
- VFD 12/0LD,18/D,30/D
- VFD 12/0LL,18/L,30/L
- VFD 12/0LS,18/JOBS,30/JOBS
- VFD 12/0LF,18/JOBF,30/JOBF
- VFD 12/0LTN,18/ITN,30/ITN
- CON 0
- D CON 0LDAYFILE
- L CON 0LOUTPUT
- SPACE 4
- ** COMMON DECKS.
- *CALL COMCARG
- *CALL COMCSYS
- SPACE 4
- USE /DATA/
- JOBS CON 0LAAA
- JOBF CON 0L999
- ITN CON 0
- SPACE 4
- END PRESET
cdc/nos2.source/opl871/dfsort.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator