Transition to NewIO
[u/mrichter/AliRoot.git] / MICROCERN / kerset.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.2.4.1  2002/11/26 16:46:57  hristov
6 * Merging NewIO with v3-09-04
7 *
8 * Revision 1.2  2002/10/14 14:57:10  hristov
9 * Merging the VirtualMC branch to the main development branch (HEAD)
10 *
11 * Revision 1.1.2.1  2002/07/11 17:14:48  alibrary
12 * Adding MICROCERN
13 *
14 * Revision 1.1.1.1  1999/05/18 15:55:33  fca
15 * AliRoot sources
16 *
17 * Revision 1.1.1.1  1996/02/15 17:48:35  mclareni
18 * Kernlib
19 *
20 *
21 #include "kernnum/pilot.h"
22           SUBROUTINE KERSET(ERCODE,LGFILE,LIMITM,LIMITR)
23                     PARAMETER(KOUNTE  =  27)
24           CHARACTER*6         ERCODE,   CODE(KOUNTE)
25           LOGICAL             MFLAG,    RFLAG
26           INTEGER             KNTM(KOUNTE),       KNTR(KOUNTE)
27           DATA      LOGF      /  0  /
28           DATA      CODE(1), KNTM(1), KNTR(1)  / 'C204.1', 255, 255 /
29           DATA      CODE(2), KNTM(2), KNTR(2)  / 'C204.2', 255, 255 /
30           DATA      CODE(3), KNTM(3), KNTR(3)  / 'C204.3', 255, 255 /
31           DATA      CODE(4), KNTM(4), KNTR(4)  / 'C205.1', 255, 255 /
32           DATA      CODE(5), KNTM(5), KNTR(5)  / 'C205.2', 255, 255 /
33           DATA      CODE(6), KNTM(6), KNTR(6)  / 'C305.1', 255, 255 /
34           DATA      CODE(7), KNTM(7), KNTR(7)  / 'C308.1', 255, 255 /
35           DATA      CODE(8), KNTM(8), KNTR(8)  / 'C312.1', 255, 255 /
36           DATA      CODE(9), KNTM(9), KNTR(9)  / 'C313.1', 255, 255 /
37           DATA      CODE(10),KNTM(10),KNTR(10) / 'C336.1', 255, 255 /
38           DATA      CODE(11),KNTM(11),KNTR(11) / 'C337.1', 255, 255 /
39           DATA      CODE(12),KNTM(12),KNTR(12) / 'C341.1', 255, 255 /
40           DATA      CODE(13),KNTM(13),KNTR(13) / 'D103.1', 255, 255 /
41           DATA      CODE(14),KNTM(14),KNTR(14) / 'D106.1', 255, 255 /
42           DATA      CODE(15),KNTM(15),KNTR(15) / 'D209.1', 255, 255 /
43           DATA      CODE(16),KNTM(16),KNTR(16) / 'D509.1', 255, 255 /
44           DATA      CODE(17),KNTM(17),KNTR(17) / 'E100.1', 255, 255 /
45           DATA      CODE(18),KNTM(18),KNTR(18) / 'E104.1', 255, 255 /
46           DATA      CODE(19),KNTM(19),KNTR(19) / 'E105.1', 255, 255 /
47           DATA      CODE(20),KNTM(20),KNTR(20) / 'E208.1', 255, 255 /
48           DATA      CODE(21),KNTM(21),KNTR(21) / 'E208.2', 255, 255 /
49           DATA      CODE(22),KNTM(22),KNTR(22) / 'F010.1', 255,   0 /
50           DATA      CODE(23),KNTM(23),KNTR(23) / 'F011.1', 255,   0 /
51           DATA      CODE(24),KNTM(24),KNTR(24) / 'F012.1', 255,   0 /
52           DATA      CODE(25),KNTM(25),KNTR(25) / 'F406.1', 255,   0 /
53           DATA      CODE(26),KNTM(26),KNTR(26) / 'G100.1', 255, 255 /
54           DATA      CODE(27),KNTM(27),KNTR(27) / 'G100.2', 255, 255 /
55           LOGF  =  LGFILE
56              L  =  0
57           IF(ERCODE .NE. ' ')  THEN
58              DO 10  L = 1, 6
59                 IF(ERCODE(1:L) .EQ. ERCODE)  GOTO 12
60   10            CONTINUE
61   12         CONTINUE
62           ENDIF
63           DO 14     I  =  1, KOUNTE
64              IF(L .EQ. 0)  GOTO 13
65              IF(CODE(I)(1:L) .NE. ERCODE(1:L))  GOTO 14
66   13         IF(LIMITM.GE.0) KNTM(I)  =  LIMITM
67              IF(LIMITR.GE.0) KNTR(I)  =  LIMITR
68   14         CONTINUE
69           RETURN
70           ENTRY KERMTR(ERCODE,LOG,MFLAG,RFLAG)
71           LOG  =  LOGF
72           DO 20     I  =  1, KOUNTE
73              IF(ERCODE .EQ. CODE(I))  GOTO 21
74   20         CONTINUE
75           WRITE(*,1000)  ERCODE
76           CALL ABEND
77           RETURN
78   21      RFLAG  =  KNTR(I) .GE. 1
79           IF(RFLAG  .AND.  (KNTR(I) .LT. 255))  KNTR(I)  =  KNTR(I) - 1
80           MFLAG  =  KNTM(I) .GE. 1
81           IF(MFLAG  .AND.  (KNTM(I) .LT. 255))  KNTM(I)  =  KNTM(I) - 1
82           IF(.NOT. RFLAG)  THEN
83              IF(LOGF .LT. 1)  THEN
84                 WRITE(*,1001)  CODE(I)
85              ELSE
86                 WRITE(LOGF,1001)  CODE(I)
87              ENDIF
88           ENDIF
89           IF(MFLAG .AND. RFLAG)  THEN
90              IF(LOGF .LT. 1)  THEN
91                 WRITE(*,1002)  CODE(I)
92              ELSE
93                 WRITE(LOGF,1002)  CODE(I)
94              ENDIF
95           ENDIF
96           RETURN
97 1000      FORMAT(' KERNLIB LIBRARY ERROR. ' /
98      +           ' ERROR CODE ',A6,' NOT RECOGNIZED BY KERMTR',
99      +           ' ERROR MONITOR. RUN ABORTED.')
100 1001      FORMAT(/' ***** RUN TERMINATED BY CERN LIBRARY ERROR ',
101      +           'CONDITION ',A6)
102 1002      FORMAT(/' ***** CERN LIBRARY ERROR CONDITION ',A6)
103           END