1 | DIM ;SFISC/JFW,GFT,TOAD-FileMan: M Syntax Checker, Main ;5/6/97 08:34
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;12275;2236006;1898;
|
---|
5 | ;
|
---|
6 | S %X=X,%END="",%ERR=0,%LAST="" G ER:X'?.ANP
|
---|
7 | ;
|
---|
8 | GC ; get next command on line (*)
|
---|
9 | G ER:%ERR,LAST:";"[$E(%X),ER:"BCDEFGHIKLMNOQRSUWXZ"'[$E(%X)
|
---|
10 | S %LAST=%X D SEP G ER:%ERR S %COM=$P(%ARG,":") ; command word
|
---|
11 | I $L(%COM)>1 D G ER:%ERR
|
---|
12 | . I $T(COMMAND)'[(";"_%COM_";"),%COM'?1"Z"1.U S %ERR=1
|
---|
13 | . E S %COM=$E(%COM)
|
---|
14 | S %=$P(%ARG,":",2,99),%COM(1)=% I %ARG[":",%="" G ER ; command postcond
|
---|
15 | I %]"" D ^DIM1 G ER:%ERR
|
---|
16 | D SEP G ER:%ERR I %ARG="","CDGMORSUWXZ"[%COM G ER ; argument list
|
---|
17 | S %END=%ARG G @%COM
|
---|
18 | ;
|
---|
19 | B G GC:%ARG=""&(%COM(1)=""),BK^DIM4
|
---|
20 | C G CL^DIM4
|
---|
21 | D G DG^DIM3
|
---|
22 | E G GC:%ARG=""&(%COM(1)=""),ER
|
---|
23 | F G ER:%COM(1)]"",GC:%ARG="",FR^DIM3
|
---|
24 | G G DG^DIM3
|
---|
25 | H G GC:%ARG=""&(%COM(1)="")&(%X]""),HN^DIM3:%ARG]"",ER Q
|
---|
26 | I G ER:%COM(1)]"",IX^DIM4
|
---|
27 | K G GC:%ARG=""&(%COM(1)="")&(%X]""),KL^DIM3:%ARG]"",ER
|
---|
28 | L G LK^DIM3
|
---|
29 | M G S
|
---|
30 | N G ER:%ARG=""&(%X=""),K
|
---|
31 | O G OP^DIM3
|
---|
32 | Q G ER:%ARG]"",GC:%ARG=""&(%COM(1)=""),BK^DIM4
|
---|
33 | R G RD^DIM4
|
---|
34 | S G ST^DIM4
|
---|
35 | U G OP^DIM3
|
---|
36 | W G WR^DIM4
|
---|
37 | X G IX^DIM4
|
---|
38 | Z G GC
|
---|
39 | ;
|
---|
40 | SEP ; remove first " "-piece of %X into %ARG: parse commands (GC)
|
---|
41 | F %I=1:1 S %C=$E(%X,%I) D:%C="""" Q:" "[%C
|
---|
42 | . N %OUT S %OUT=0 F D Q:%OUT!%ERR
|
---|
43 | . . S %I=%I+1,%C=$E(%X,%I) I %C="" S %ERR=1 Q
|
---|
44 | . . Q:%C'="""" S %I=%I+1,%C=$E(%X,%I) Q:%C="""" S %OUT=1
|
---|
45 | S %ARG=$E(%X,1,%I-1),%I=%I+1,%X=$E(%X,%I,999)
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | COMMAND ;;BREAK;CLOSE;DO;ELSE;FOR;GOTO;HALT;HANG;IF;KILL;LOCK;MERGE;NEW;OPEN;QUIT;READ;SET;USE;WRITE;XECUTE;
|
---|
49 | ;
|
---|
50 | LAST ; check to ensure no trailing "," or " " at end of command (GC)
|
---|
51 | S %L=$L(%LAST),$E(%LAST,%L+1-$L(%X),%L)=""
|
---|
52 | I $E(%END,$L(%END))="," G ER
|
---|
53 | I $E(%X)="",$E(%LAST,%L)=" " G ER
|
---|
54 | G END
|
---|
55 | ;
|
---|
56 | ER K X
|
---|
57 | END K %,%A,%A1,%A2,%ARG,%C1,%C,%COM,%END,%ERR,%H,%I,%L,%LAST,%P,%X,%Z Q
|
---|