| 1 | * | 
|---|
| 2 | * $Id: mnwarn.F,v 1.1.1.1 2003-06-11 14:18:30 cmv Exp $ | 
|---|
| 3 | * | 
|---|
| 4 | * $Log: not supported by cvs2svn $ | 
|---|
| 5 | * Revision 1.1.1.1  1996/03/07 14:31:32  mclareni | 
|---|
| 6 | * Minuit | 
|---|
| 7 | * | 
|---|
| 8 | * | 
|---|
| 9 | #include "minuit/pilot.h" | 
|---|
| 10 | SUBROUTINE MNWARN(COPT,CORG,CMES) | 
|---|
| 11 | C     If COPT='W', CMES is a WARning message from CORG. | 
|---|
| 12 | C     If COPT='D', CMES is a DEBug message from CORG. | 
|---|
| 13 | C         If SET WARnings is in effect (the default), this routine | 
|---|
| 14 | C             prints the warning message CMES coming from CORG. | 
|---|
| 15 | C         If SET NOWarnings is in effect, the warning message is | 
|---|
| 16 | C             stored in a circular buffer of length MAXMES. | 
|---|
| 17 | C         If called with CORG=CMES='SHO', it prints the messages in | 
|---|
| 18 | C             the circular buffer, FIFO, and empties the buffer. | 
|---|
| 19 | #include "minuit/d506dp.inc" | 
|---|
| 20 | #include "minuit/d506cm.inc" | 
|---|
| 21 | CHARACTER COPT*1, CORG*(*), CMES*(*), CTYP*7 | 
|---|
| 22 | PARAMETER (MAXMES=10) | 
|---|
| 23 | CHARACTER     ORIGIN(MAXMES,2)*10, WARMES(MAXMES,2)*60 | 
|---|
| 24 | COMMON/MN7WRC/ORIGIN,              WARMES | 
|---|
| 25 | COMMON/MN7WRI/NFCWAR(MAXMES,2),ICIRC(2) | 
|---|
| 26 | CHARACTER ENGLSH*20 | 
|---|
| 27 | C | 
|---|
| 28 | IF (CORG(1:3).EQ.'SHO' .AND. CMES(1:3).EQ.'SHO')  GO TO 200 | 
|---|
| 29 | C             Either print warning or put in buffer | 
|---|
| 30 | IF (COPT .EQ. 'W')  THEN | 
|---|
| 31 | ITYP = 1 | 
|---|
| 32 | IF (LWARN) THEN | 
|---|
| 33 | WRITE (ISYSWR,'(A,A/A,A)') ' MINUIT WARNING IN ',CORG, | 
|---|
| 34 | +              ' ============== ',CMES | 
|---|
| 35 | RETURN | 
|---|
| 36 | ENDIF | 
|---|
| 37 | ELSE | 
|---|
| 38 | ITYP = 2 | 
|---|
| 39 | IF (LREPOR) THEN | 
|---|
| 40 | WRITE (ISYSWR,'(A,A/A,A)') ' MINUIT DEBUG FOR  ',CORG, | 
|---|
| 41 | +              ' ============== ',CMES | 
|---|
| 42 | RETURN | 
|---|
| 43 | ENDIF | 
|---|
| 44 | ENDIF | 
|---|
| 45 | C                 if appropriate flag is off, fill circular buffer | 
|---|
| 46 | IF (NWRMES(ITYP) .EQ. 0)  ICIRC(ITYP) = 0 | 
|---|
| 47 | NWRMES(ITYP) = NWRMES(ITYP) + 1 | 
|---|
| 48 | ICIRC(ITYP) = ICIRC(ITYP) + 1 | 
|---|
| 49 | IF (ICIRC(ITYP) .GT. MAXMES) ICIRC(ITYP) = 1 | 
|---|
| 50 | IC = ICIRC(ITYP) | 
|---|
| 51 | ORIGIN(IC,ITYP) = CORG | 
|---|
| 52 | WARMES(IC,ITYP) = CMES | 
|---|
| 53 | NFCWAR(IC,ITYP) = NFCN | 
|---|
| 54 | RETURN | 
|---|
| 55 | C | 
|---|
| 56 | C             'SHO WARnings', ask if any suppressed mess in buffer | 
|---|
| 57 | 200 CONTINUE | 
|---|
| 58 | IF (COPT .EQ. 'W') THEN | 
|---|
| 59 | ITYP = 1 | 
|---|
| 60 | CTYP = 'WARNING' | 
|---|
| 61 | ELSE | 
|---|
| 62 | ITYP = 2 | 
|---|
| 63 | CTYP = '*DEBUG*' | 
|---|
| 64 | ENDIF | 
|---|
| 65 | IF (NWRMES(ITYP) .GT. 0) THEN | 
|---|
| 66 | ENGLSH = ' WAS SUPPRESSED.  ' | 
|---|
| 67 | IF (NWRMES(ITYP) .GT. 1) ENGLSH = 'S WERE SUPPRESSED.' | 
|---|
| 68 | WRITE (ISYSWR,'(/1X,I5,A,A,A,A/)') NWRMES(ITYP), | 
|---|
| 69 | +    ' MINUIT ',CTYP,' MESSAGE', ENGLSH | 
|---|
| 70 | NM = NWRMES(ITYP) | 
|---|
| 71 | IC = 0 | 
|---|
| 72 | IF (NM .GT. MAXMES) THEN | 
|---|
| 73 | WRITE (ISYSWR,'(A,I2,A)')  ' ONLY THE MOST RECENT ', | 
|---|
| 74 | +          MAXMES,' WILL BE LISTED BELOW.' | 
|---|
| 75 | NM = MAXMES | 
|---|
| 76 | IC = ICIRC(ITYP) | 
|---|
| 77 | ENDIF | 
|---|
| 78 | WRITE (ISYSWR,'(A)') '  CALLS  ORIGIN         MESSAGE' | 
|---|
| 79 | DO 300 I= 1, NM | 
|---|
| 80 | IC = IC + 1 | 
|---|
| 81 | IF (IC .GT. MAXMES)  IC = 1 | 
|---|
| 82 | WRITE (ISYSWR,'(1X,I6,1X,A,1X,A)') | 
|---|
| 83 | +           NFCWAR(IC,ITYP),ORIGIN(IC,ITYP),WARMES(IC,ITYP) | 
|---|
| 84 | 300       CONTINUE | 
|---|
| 85 | NWRMES(ITYP) = 0 | 
|---|
| 86 | WRITE (ISYSWR,'(1H )') | 
|---|
| 87 | ENDIF | 
|---|
| 88 | RETURN | 
|---|
| 89 | END | 
|---|