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