| 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
 | 
|---|