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