| [2403] | 1 | * | 
|---|
|  | 2 | * $Id: mncomd.F,v 1.1.1.1 2003-06-11 14:18:26 cmv Exp $ | 
|---|
|  | 3 | * | 
|---|
|  | 4 | * $Log: not supported by cvs2svn $ | 
|---|
|  | 5 | * Revision 1.1.1.1  1996/03/07 14:31:29  mclareni | 
|---|
|  | 6 | * Minuit | 
|---|
|  | 7 | * | 
|---|
|  | 8 | * | 
|---|
|  | 9 | #include "minuit/pilot.h" | 
|---|
|  | 10 | SUBROUTINE MNCOMD(FCN,CRDBIN,ICONDN,FUTIL) | 
|---|
|  | 11 | #include "minuit/d506dp.inc" | 
|---|
|  | 12 | CC        Called by user.  'Reads' a command string and executes. | 
|---|
|  | 13 | CC     Equivalent to MNEXCM except that the command is given as a | 
|---|
|  | 14 | CC          character string. | 
|---|
|  | 15 | CC | 
|---|
|  | 16 | CC     ICONDN = 0: command executed normally | 
|---|
|  | 17 | CC              1: command is blank, ignored | 
|---|
|  | 18 | CC              2: command line unreadable, ignored | 
|---|
|  | 19 | CC              3: unknown command, ignored | 
|---|
|  | 20 | CC              4: abnormal termination (e.g., MIGRAD not converged) | 
|---|
|  | 21 | CC              5: command is a request to read PARAMETER definitions | 
|---|
|  | 22 | CC              6: 'SET INPUT' command | 
|---|
|  | 23 | CC              7: 'SET TITLE' command | 
|---|
|  | 24 | CC              8: 'SET COVAR' command | 
|---|
|  | 25 | CC              9: reserved | 
|---|
|  | 26 | CC             10: END command | 
|---|
|  | 27 | CC             11: EXIT or STOP command | 
|---|
|  | 28 | CC             12: RETURN command | 
|---|
|  | 29 | CC | 
|---|
|  | 30 | #include "minuit/d506cm.inc" | 
|---|
|  | 31 | DIMENSION PLIST(MAXP) | 
|---|
|  | 32 | CHARACTER COMAND*(MAXCWD) | 
|---|
|  | 33 | CHARACTER CLOWER*26, CUPPER*26 | 
|---|
|  | 34 | LOGICAL LEADER | 
|---|
|  | 35 | C | 
|---|
|  | 36 | EXTERNAL FCN,FUTIL | 
|---|
|  | 37 | CHARACTER*(*) CRDBIN | 
|---|
|  | 38 | CHARACTER*100 CRDBUF | 
|---|
|  | 39 | DATA CLOWER/'abcdefghijklmnopqrstuvwxyz'/ | 
|---|
|  | 40 | DATA CUPPER/'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ | 
|---|
|  | 41 | C | 
|---|
|  | 42 | LENBUF = LEN(CRDBIN) | 
|---|
|  | 43 | CRDBUF = CRDBIN | 
|---|
|  | 44 | ICONDN = 0 | 
|---|
|  | 45 | C     record not case-sensitive, get upper case, strip leading blanks | 
|---|
|  | 46 | LEADER = .TRUE. | 
|---|
|  | 47 | IPOS = 1 | 
|---|
|  | 48 | DO 110 I= 1, MIN(MAXCWD,LENBUF) | 
|---|
|  | 49 | IF (CRDBUF(I:I) .EQ. '''') GO TO 111 | 
|---|
|  | 50 | IF (CRDBUF(I:I) .EQ. ' ')  THEN | 
|---|
|  | 51 | IF (LEADER) IPOS = IPOS + 1 | 
|---|
|  | 52 | GO TO 110 | 
|---|
|  | 53 | ENDIF | 
|---|
|  | 54 | LEADER = .FALSE. | 
|---|
|  | 55 | DO 108 IC= 1, 26 | 
|---|
|  | 56 | IF (CRDBUF(I:I) .EQ. CLOWER(IC:IC)) CRDBUF(I:I)=CUPPER(IC:IC) | 
|---|
|  | 57 | 108      CONTINUE | 
|---|
|  | 58 | 110    CONTINUE | 
|---|
|  | 59 | 111 CONTINUE | 
|---|
|  | 60 | C                     blank or null command | 
|---|
|  | 61 | IF (IPOS .GT. LENBUF)  THEN | 
|---|
|  | 62 | WRITE (ISYSWR,'(A)') ' BLANK COMMAND IGNORED.' | 
|---|
|  | 63 | ICONDN = 1 | 
|---|
|  | 64 | GO TO 900 | 
|---|
|  | 65 | ENDIF | 
|---|
|  | 66 | C                                           . .   preemptive commands | 
|---|
|  | 67 | C               if command is 'PARAMETER' | 
|---|
|  | 68 | IF (CRDBUF(IPOS:IPOS+2) .EQ. 'PAR')    THEN | 
|---|
|  | 69 | ICONDN = 5 | 
|---|
|  | 70 | LPHEAD = .TRUE. | 
|---|
|  | 71 | GO TO 900 | 
|---|
|  | 72 | ENDIF | 
|---|
|  | 73 | C               if command is 'SET INPUT' | 
|---|
|  | 74 | IF (CRDBUF(IPOS:IPOS+6) .EQ. 'SET INP')  THEN | 
|---|
|  | 75 | ICONDN = 6 | 
|---|
|  | 76 | LPHEAD = .TRUE. | 
|---|
|  | 77 | GO TO 900 | 
|---|
|  | 78 | ENDIF | 
|---|
|  | 79 | C              if command is 'SET TITLE' | 
|---|
|  | 80 | IF (CRDBUF(IPOS:IPOS+6) .EQ. 'SET TIT')  THEN | 
|---|
|  | 81 | ICONDN = 7 | 
|---|
|  | 82 | LPHEAD = .TRUE. | 
|---|
|  | 83 | GO TO 900 | 
|---|
|  | 84 | ENDIF | 
|---|
|  | 85 | C               if command is 'SET COVARIANCE' | 
|---|
|  | 86 | IF (CRDBUF(IPOS:IPOS+6) .EQ. 'SET COV')   THEN | 
|---|
|  | 87 | ICONDN = 8 | 
|---|
|  | 88 | LPHEAD = .TRUE. | 
|---|
|  | 89 | GO TO 900 | 
|---|
|  | 90 | ENDIF | 
|---|
|  | 91 | C               crack the command . . . . . . . . . . . . . . . . | 
|---|
|  | 92 | CALL MNCRCK(CRDBUF(IPOS:LENBUF),MAXCWD,COMAND,LNC, | 
|---|
|  | 93 | +                            MAXP,  PLIST, LLIST, IERR,ISYSWR) | 
|---|
|  | 94 | IF (IERR .GT. 0) THEN | 
|---|
|  | 95 | WRITE (ISYSWR,'(A)') ' COMMAND CANNOT BE INTERPRETED' | 
|---|
|  | 96 | ICONDN = 2 | 
|---|
|  | 97 | GO TO 900 | 
|---|
|  | 98 | ENDIF | 
|---|
|  | 99 | C | 
|---|
|  | 100 | CALL MNEXCM(FCN,COMAND(1:LNC),PLIST,LLIST,IERR,FUTIL) | 
|---|
|  | 101 | ICONDN = IERR | 
|---|
|  | 102 | 900 RETURN | 
|---|
|  | 103 | END | 
|---|