1 | DIM4 ;SFISC/JFW,GFT,TOAD-FileMan: M Syntax Checker, Commands ;5/6/97 09:10
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;12279;3292224;3060;
|
---|
5 | ;
|
---|
6 | BK ; BREAK and QUIT (B^DIM and Q^DIM)
|
---|
7 | I %ARG]"" S %=%ARG D ^DIM1 G ER:%ERR
|
---|
8 | G GC^DIM
|
---|
9 | ;
|
---|
10 | CL ; CLOSE (C^DIM)
|
---|
11 | G ER:%ERR I %ARG]"" F %Z=0:0 D S S %=%A D ^DIM1 G:%ARG=""!%ERR GC^DIM
|
---|
12 | G GC^DIM
|
---|
13 | ;
|
---|
14 | IX ; IF and XECUTE (I^DIM and X^DIM)
|
---|
15 | G GC^DIM:%ARG=""!%ERR D S S %L=":" D S1 I %C=%L S %=%A1 D ^DIM1 G ER:%A1=""!%ERR
|
---|
16 | S %=%A D ^DIM1 G IX
|
---|
17 | ;
|
---|
18 | ST ; SET and MERGE (S^DIM and M^DIM)
|
---|
19 | G GC^DIM:%ARG=""!%ERR D S G ER:%ERR!(%A=""&(%C=","))
|
---|
20 | I %A?1"@".E S %=%A D ^DIM1 G ST
|
---|
21 | S %L="=" D S1 G ER:(%A="")!(%A1="") S %=%A1 G ER:%COM="M"&'$$GLVN(%) D ^DIM1 G ER:%ERR
|
---|
22 | I %A?1"(".E1")" S %A=$E(%A,2,$L(%A)-1) G ER:%COM="M",STM
|
---|
23 | D VV G ST
|
---|
24 | ;
|
---|
25 | STM ; SET (x,y)=... (ST)
|
---|
26 | G ST:%ERR!(%A=""),ER:%A?1",".E S %L="," D S1 G ER:%ERR!(%C=%L&(%A1=""))
|
---|
27 | D VV S %A=%A1 G STM
|
---|
28 | ;
|
---|
29 | RD ; READ (R^DIM)
|
---|
30 | G GC^DIM:%ARG=""!%ERR D S G ER:%ERR!(%C=","&(%A=""))
|
---|
31 | I "!#?"[$E(%A,1) S %I=0 D FRM G RD
|
---|
32 | I %A?1"""".E G ER:$P(%A,"""",3)'="" S %=%A D ^DIM1 G RD
|
---|
33 | I %A?1"*".E S %A=$E(%A,2,999)
|
---|
34 | I $E(%A)="^","^TMP^XTMP^"'[$P(%A,"(") G ER
|
---|
35 | F %L=":","#" D G ER:%ERR
|
---|
36 | . D S1 Q:%ERR
|
---|
37 | . I %A="" S %ERR=1 Q
|
---|
38 | . I %A1="",%C=%L S %ERR=1 Q
|
---|
39 | . S %=%A1 D ^DIM1
|
---|
40 | D VV G ER:%ERR,RD
|
---|
41 | ;
|
---|
42 | WR ; WRITE (W^DIM)
|
---|
43 | G GC^DIM:%ARG=""!%ERR D S G ER:%ERR!(%A=""&(%C=","))
|
---|
44 | I "!#?/"[$E(%A) S %I=0 D FRM G WR
|
---|
45 | S:%A?1"*".E %A=$E(%A,2,999) S %=%A D ^DIM1 G WR
|
---|
46 | ;
|
---|
47 | FRM ; format (RD and WR)
|
---|
48 | S %I=%I+1,%C=$E(%A,%I) Q:%C="" G FRM:"!#"[%C
|
---|
49 | S %=$E(%A,%I+1,999) I %]"",%C="?" D ^DIM1 Q
|
---|
50 | I %C="/",%COM="W" S:%?1"?".E %="A"_$E(%,2,999) I %?1AN.E D ^DIM1 Q
|
---|
51 | S %ERR=1 Q
|
---|
52 | ;
|
---|
53 | S ; split at first comma: end of first argument (*)
|
---|
54 | S (%A,%C)="" Q:%ERR S (%ERR,%I)=0
|
---|
55 | INC D %INC D QT:%C="""",P:%C="(" Q:%ERR G OUT:","[%C,INC
|
---|
56 | QT D %INC Q:%C="""" G QT:%C]"" S %ERR=1 Q
|
---|
57 | P S %P=1 F %J=0:0 D %INC D QT:%C="""" S %P=%P+$S(%C="(":1,%C=")":-1,1:0) Q:'%P I %C="" S %ERR=1 Q
|
---|
58 | Q
|
---|
59 | OUT S %A=$E(%ARG,1,%I-1),%ARG=$E(%ARG,%I+1,999) Q
|
---|
60 | %INC S %I=%I+1,%C=$E(%ARG,%I) Q
|
---|
61 | ;
|
---|
62 | S1 ; split at first instance of %L (*)
|
---|
63 | S (%A1,%C)="" Q:%ERR S (%ERR,%I)=0
|
---|
64 | INCR D %INC1 D QT1:%C="""",P1:%C="(" Q:%ERR G OUT1:%L[%C,INCR
|
---|
65 | OUT1 S %A1=$E(%A,%I+1,999),%A=$E(%A,1,%I-1) Q
|
---|
66 | QT1 D %INC1 Q:%C="""" G QT1:%C]"" S %ERR=1 Q
|
---|
67 | P1 S %P=1 F %J=0:0 D %INC1 D QT1:%C="""" S %P=%P+$S(%C="(":1,%C=")":-1,1:0) Q:'%P I %C="" S %ERR=1 Q
|
---|
68 | Q
|
---|
69 | %INC1 S %I=%I+1,%C=$E(%A,%I) Q
|
---|
70 | ;
|
---|
71 | VV ; glvn or setleft (ST, STM, and RD)
|
---|
72 | S %=%A Q:%ERR
|
---|
73 | I %]"",$$GLVN(%)=0 D
|
---|
74 | .I %COM'="S" S %ERR=1 Q
|
---|
75 | .I %["(",(%?1"$P".E)!(%?1"$E".E) Q
|
---|
76 | .I %="$X"!(%="$Y") Q
|
---|
77 | .I %="$D"!(%="$DEVICE")!(%="$K")!(%="$KEY")!(%="$EC")!(%="$ECODE")!(%="$ET")!(%="$ETRAP") S %ERR=1 Q ; SAC
|
---|
78 | .S %ERR=1
|
---|
79 | D ^DIM1:'%ERR Q
|
---|
80 | ;
|
---|
81 | GLVN(%) ; glvn (not counting subscript syntax)
|
---|
82 | I %?.1"^"1U.UN Q 1
|
---|
83 | I %?.1"^"1U.UN1"("1.E1")" Q 1
|
---|
84 | I %?.1"^"1"%".UN Q 1
|
---|
85 | I %?.1"^"1"%".UN1"("1.E1")" Q 1
|
---|
86 | I %?1"^("1.E1")" Q 1
|
---|
87 | I %?1"^$"1.U1"("1.E1")" Q 1
|
---|
88 | I %?1"@"1.E Q 1
|
---|
89 | Q 0
|
---|
90 | ;
|
---|
91 | ER G ER^DIM
|
---|