| 1 | * | 
|---|
| 2 | * $Id: mnpars.F,v 1.1.1.1 2003-06-11 14:18:28 cmv Exp $ | 
|---|
| 3 | * | 
|---|
| 4 | * $Log: not supported by cvs2svn $ | 
|---|
| 5 | * Revision 1.1.1.1  1996/03/07 14:31:31  mclareni | 
|---|
| 6 | * Minuit | 
|---|
| 7 | * | 
|---|
| 8 | * | 
|---|
| 9 | #include "minuit/pilot.h" | 
|---|
| 10 | SUBROUTINE MNPARS(CRDBUF,ICONDN) | 
|---|
| 11 | #include "minuit/d506dp.inc" | 
|---|
| 12 | CC        Called from MNREAD and user-callable | 
|---|
| 13 | CC    Implements one parameter definition, that is: | 
|---|
| 14 | CC       parses the string CRDBUF and calls MNPARM | 
|---|
| 15 | C | 
|---|
| 16 | C output conditions: | 
|---|
| 17 | C        ICONDN = 0    all OK | 
|---|
| 18 | C        ICONDN = 1    error, attempt to define parameter is ignored | 
|---|
| 19 | C        ICONDN = 2    end of parameter definitions | 
|---|
| 20 | C | 
|---|
| 21 | #include "minuit/d506cm.inc" | 
|---|
| 22 | C | 
|---|
| 23 | DIMENSION PLIST(MAXP) | 
|---|
| 24 | CHARACTER CNAMK*10, CRDBUF*(*) , CELMNT*20 , COMAND*(MAXCWD) | 
|---|
| 25 | C | 
|---|
| 26 | LENBUF = LEN(CRDBUF) | 
|---|
| 27 | C                     find out whether fixed or free-field format | 
|---|
| 28 | KAPO1 = INDEX(CRDBUF,'''') | 
|---|
| 29 | IF (KAPO1 .EQ. 0)  GO TO 150 | 
|---|
| 30 | KAPO2 = INDEX(CRDBUF(KAPO1+1:),'''') | 
|---|
| 31 | IF (KAPO2 .EQ. 0)  GO TO 150 | 
|---|
| 32 | C          new (free-field) format | 
|---|
| 33 | KAPO2 = KAPO2 + KAPO1 | 
|---|
| 34 | C                             skip leading blanks if any | 
|---|
| 35 | DO 115 ISTART=1, KAPO1-1 | 
|---|
| 36 | IF (CRDBUF(ISTART:ISTART) .NE. ' ')  GO TO 120 | 
|---|
| 37 | 115    CONTINUE | 
|---|
| 38 | GO TO 210 | 
|---|
| 39 | 120 CONTINUE | 
|---|
| 40 | C                               parameter number integer | 
|---|
| 41 | CELMNT = CRDBUF(ISTART:KAPO1-1) | 
|---|
| 42 | READ (CELMNT,'(BN,F20.0)',ERR=180) FK | 
|---|
| 43 | K = FK | 
|---|
| 44 | IF (K .LE. 0)  GO TO 210 | 
|---|
| 45 | CNAMK = 'PARAM '//CELMNT | 
|---|
| 46 | IF (KAPO2-KAPO1 .GT. 1) CNAMK = CRDBUF(KAPO1+1:KAPO2-1) | 
|---|
| 47 | C  special handling if comma or blanks and a comma follow 'name' | 
|---|
| 48 | DO 135 ICY= KAPO2+1,LENBUF | 
|---|
| 49 | IF (CRDBUF(ICY:ICY) .EQ. ',') GO TO 139 | 
|---|
| 50 | IF (CRDBUF(ICY:ICY) .NE. ' ') GO TO 140 | 
|---|
| 51 | 135 CONTINUE | 
|---|
| 52 | UK = 0. | 
|---|
| 53 | WK = 0. | 
|---|
| 54 | A  = 0. | 
|---|
| 55 | B = 0. | 
|---|
| 56 | GO TO 170 | 
|---|
| 57 | 139 CONTINUE | 
|---|
| 58 | ICY = ICY+1 | 
|---|
| 59 | 140 CONTINUE | 
|---|
| 60 | IBEGIN = ICY | 
|---|
| 61 | CALL MNCRCK(CRDBUF(IBEGIN:),MAXCWD,COMAND,LNC, | 
|---|
| 62 | +                             MAXP,PLIST,LLIST, IERR,ISYSWR) | 
|---|
| 63 | IF (IERR .GT. 0)  GO TO 180 | 
|---|
| 64 | UK = PLIST(1) | 
|---|
| 65 | WK = 0. | 
|---|
| 66 | IF (LLIST .GE. 2)  WK = PLIST(2) | 
|---|
| 67 | A = 0. | 
|---|
| 68 | IF (LLIST .GE. 3)  A = PLIST(3) | 
|---|
| 69 | B = 0. | 
|---|
| 70 | IF (LLIST .GE. 4)  B = PLIST(4) | 
|---|
| 71 | GO TO 170 | 
|---|
| 72 | C          old (fixed-field) format | 
|---|
| 73 | 150 CONTINUE | 
|---|
| 74 | READ (CRDBUF, 158,ERR=180)  XK,CNAMK,UK,WK,A,B | 
|---|
| 75 | 158 FORMAT (BN,F10.0, A10, 4F10.0) | 
|---|
| 76 | K = XK | 
|---|
| 77 | IF (K .EQ. 0)  GO TO 210 | 
|---|
| 78 | C          parameter format cracked, implement parameter definition | 
|---|
| 79 | 170 CALL MNPARM(K,CNAMK,UK,WK,A,B,IERR) | 
|---|
| 80 | ICONDN = IERR | 
|---|
| 81 | RETURN | 
|---|
| 82 | C          format or other error | 
|---|
| 83 | 180 CONTINUE | 
|---|
| 84 | ICONDN = 1 | 
|---|
| 85 | RETURN | 
|---|
| 86 | C        end of data | 
|---|
| 87 | 210 CONTINUE | 
|---|
| 88 | ICONDN = 2 | 
|---|
| 89 | RETURN | 
|---|
| 90 | END | 
|---|