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