1 | DDSZ ;SFISC/MKO-FORM COMPILER ;9:41 AM 19 Nov 2001
|
---|
2 | ;;22.0;VA FileMan;**94**;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;Prompt, compile
|
---|
6 | N DDSFRM,DDSDDP,DDSREFS
|
---|
7 | N C,DIC,X,Y
|
---|
8 | I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
|
---|
9 | ;
|
---|
10 | S DIC="^DIST(.403,",DIC(0)="AEQZ"
|
---|
11 | D ^DIC K DIC Q:Y=-1!'$D(^DIST(.403,+Y,0))
|
---|
12 | S DDSFRM=Y,DDSDDP=$P(Y(0),U,8)
|
---|
13 | ;
|
---|
14 | W !!,"Compiling "_$P(Y,U,2)_" (#"_+Y_") ...",!
|
---|
15 | D EN(DDSFRM,DDSDDP)
|
---|
16 | I $G(DIERR) W $C(7) D MSG^DIALOG("BW")
|
---|
17 | Q
|
---|
18 | ;
|
---|
19 | ALL ;Compile all forms
|
---|
20 | N DDSFRM,DDSDDP,DDSFNUM,DDSREFS
|
---|
21 | I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
|
---|
22 | W:'$D(DDSQUIET) !,"Compiling all forms ...",!
|
---|
23 | ;
|
---|
24 | S DDSFNUM=0
|
---|
25 | F S DDSFNUM=$O(^DIST(.403,DDSFNUM)) Q:'DDSFNUM D
|
---|
26 | . Q:$D(^DIST(.403,DDSFNUM,0))[0
|
---|
27 | . S DDSFRM=DDSFNUM_U_$P(^DIST(.403,DDSFNUM,0),U),DDSDDP=+$P(^(0),U,8)
|
---|
28 | . S DDSREFS=$$REF^DDS0(DDSFRM)
|
---|
29 | . W:'$D(DDSQUIET) !?3,$P(DDSFRM,U,2),?35,"(#"_+DDSFRM_")"
|
---|
30 | . D EN(DDSFRM,DDSDDP)
|
---|
31 | . I $G(DIERR),'$D(DDSQUIET) W !,$C(7) D MSG^DIALOG("BW") W !
|
---|
32 | Q
|
---|
33 | ;
|
---|
34 | EN(DDSFRM,DDSDDP,DDSREFS) ;Compile a form
|
---|
35 | N DDSDO,DDSPG,DDSNDD,DDSPGRP
|
---|
36 | ;
|
---|
37 | S:'$G(DDSDDP) DDSDDP=$P(^DIST(.403,+DDSFRM,0),U,8)
|
---|
38 | S:$G(DDSREFS)="" DDSREFS=$$REF^DDS0(DDSFRM)
|
---|
39 | K @DDSREFS
|
---|
40 | ;
|
---|
41 | ;Find page groups
|
---|
42 | D PGRP^DDSZ3(+DDSFRM,.DDSPGRP)
|
---|
43 | ;
|
---|
44 | S DDSPG=0,(DDSDO,DDSNDD)=1
|
---|
45 | F S DDSPG=$O(^DIST(.403,+DDSFRM,40,DDSPG)) Q:'DDSPG D PG(DDSFRM,DDSPG,DDSDDP,.DDSDO,.DDSNDD) Q:$G(DIERR)
|
---|
46 | I $G(DIERR) D ERR(DDSFRM,DDSREFS) Q
|
---|
47 | S $P(^DIST(.403,+DDSFRM,0),U,9,11)=+$G(DDSDO)_U_+$G(DDSNDD)_U_1
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | PG(DDSFRM,DDSPG,DDSDDP,DDSDO,DDSNDD) ;Compile a page
|
---|
51 | ;
|
---|
52 | Q:$D(^DIST(.403,+DDSFRM,40,DDSPG,0))[0
|
---|
53 | D:$P($G(^DIST(.403,+DDSFRM,40,DDSPG,1)),U,2)]"" ASUB^DDSZ3(DDSPG,DDSFRM)
|
---|
54 | ;
|
---|
55 | ;Get page coordinates
|
---|
56 | S DDSPX=$P(^DIST(.403,+DDSFRM,40,DDSPG,0),U,3)
|
---|
57 | S DDSPY=$P(DDSPX,",")-1,DDSPX=$P(DDSPX,",",2)-1
|
---|
58 | S:DDSPY<0 DDSPY=0 S:DDSPX<0 DDSPX=0
|
---|
59 | ;
|
---|
60 | ;Compile header block
|
---|
61 | S DDSB=$P($G(^DIST(.403,+DDSFRM,40,DDSPG,0)),U,2)
|
---|
62 | I DDSB]"" D BLK(DDSFRM,DDSPG,DDSDDP,DDSPY,DDSPX,DDSB,"",1,"",.DDSNDD,.DDSSCR,.DDSNAV,.DDSORD) G:$G(DIERR) END
|
---|
63 | ;
|
---|
64 | ;Compile all other blocks on page
|
---|
65 | S DDSBO="" F S DDSBO=$O(^DIST(.403,+DDSFRM,40,DDSPG,40,"AC",DDSBO)) Q:DDSBO="" S DDSB=$O(^(DDSBO,0)) Q:'DDSB D BLK(DDSFRM,DDSPG,DDSDDP,DDSPY,DDSPX,DDSB,DDSBO,"",.DDSDO,.DDSNDD,.DDSSCR,.DDSNAV,.DDSORD) G:$G(DIERR) END
|
---|
66 | ;
|
---|
67 | D:$D(DDSSCR)!$D(DDSORD) EN^DDSZ2(.DDSSCR,.DDSNAV,.DDSORD,.DDSRNAV)
|
---|
68 | ;
|
---|
69 | END K DDSB,DDSBO,DDSMUL,DDSNAV,DDSORD
|
---|
70 | K DDSP,DDSPX,DDSPY,DDSREP,DDSRNAV,DDSSCR
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | BLK(DDSFRM,DDSPG,DDSDDP,DDSPY,DDSPX,DDSB,DDSBO,DDSH,DDSDO,DDSNDD,DDSSCR,DDSNAV,DDSORD) ;
|
---|
74 | ;Compile block
|
---|
75 | ; DDSH = 1 if header block
|
---|
76 | ; DDSDO = killed if any edit blocks
|
---|
77 | ; DDSNDD = killed if any DD fields
|
---|
78 | ;
|
---|
79 | N DDP
|
---|
80 | I $D(^DIST(.404,DDSB,0))[0 D BLD^DIALOG(3051,"#"_DDSB) Q
|
---|
81 | S DDSDN=$P(^DIST(.404,DDSB,0),U,3),DDP=+$P(^(0),U,2)
|
---|
82 | ;
|
---|
83 | S DDSPTB=""
|
---|
84 | S:'$G(DDSH) DDSPTB=$G(^DIST(.403,+DDSFRM,40,DDSPG,40,DDSB,1))
|
---|
85 | ;
|
---|
86 | ;Get DDSBY,DDSBX,DDSTP
|
---|
87 | I $G(DDSH) S DDSBY=DDSPY,DDSBX=DDSPX,DDSTP="h",DDSREP=1
|
---|
88 | E D
|
---|
89 | . S DDSBX=$P(^DIST(.403,+DDSFRM,40,DDSPG,40,DDSB,0),U,3),DDSTP=$P(^(0),U,4) S DDSREP=$S($G(^(2)):^(2),1:1)
|
---|
90 | . K:DDSTP="e" DDSDO
|
---|
91 | . S DDSBY=$P(DDSBX,",")-1,DDSBX=$P(DDSBX,",",2)-1
|
---|
92 | . S:DDSBY<0 DDSBY=0 S:DDSBX<0 DDSBX=0
|
---|
93 | . S DDSBY=DDSBY+DDSPY,DDSBX=DDSBX+DDSPX
|
---|
94 | ;
|
---|
95 | ;Set @DDSREFS@(DDSPG,DDSB)
|
---|
96 | S @DDSREFS@(DDSPG,DDSB)=DDSBY_U_DDSBX_U_$P($G(^DIST(.404,DDSB,0)),U,2)_U_DDSDN_U_DDSTP_$S(DDSREP>1:U_U_+DDSREP,1:"")
|
---|
97 | ;
|
---|
98 | D:DDSPTB]"" PT^DDSPTR(DDSDDP,DDSPTB,DDSFRM,DDSPG,DDSB)
|
---|
99 | D EN^DDSZ1(DDSPG,DDSB,DDP,DDSBY,DDSBX,DDSBO,DDSTP,DDSREP,.DDSNDD,.DDSPGRP,.DDSSCR,.DDSNAV,.DDSORD,.DDSRNAV)
|
---|
100 | ;
|
---|
101 | K DDSBX,DDSBY,DDSDN,DDSPTB,DDSTP
|
---|
102 | Q
|
---|
103 | ;
|
---|
104 | ENGRP(DDSFRM) ;Compile a form and all forms that use any of the blocks
|
---|
105 | ;on that form
|
---|
106 | N DDSLST
|
---|
107 | D FRMLST(DDSFRM,.DDSLST)
|
---|
108 | ;
|
---|
109 | ;Compile all forms in DDSLST
|
---|
110 | S DDSFRM=0 F S DDSFRM=$O(DDSLST(DDSFRM)) Q:'DDSFRM D EN(DDSFRM)
|
---|
111 | Q
|
---|
112 | ;
|
---|
113 | DELGRP(DDSFRM) ;Uncompile a form and all forms that use any of the blocks
|
---|
114 | ;on that form
|
---|
115 | N DDSLST
|
---|
116 | D FRMLST(DDSFRM,.DDSLST)
|
---|
117 | ;
|
---|
118 | ;Uncompile all forms in DDSLST
|
---|
119 | S DDSFRM=0 F S DDSFRM=$O(DDSLST(DDSFRM)) Q:'DDSFRM D DEL(DDSFRM)
|
---|
120 | Q
|
---|
121 | ;
|
---|
122 | ENLIST(DDSROOT) ;Compile all forms in @DDSROOT
|
---|
123 | N DDSFRM
|
---|
124 | S DDSFRM=0 F S DDSFRM=$O(@DDSROOT@(DDSFRM)) Q:'DDSFRM D EN(DDSFRM)
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | FRMLST(DDSFRM,DDSLST) ;Build list of forms that contain blocks on this form
|
---|
128 | N DDSPG,DDSBK
|
---|
129 | S DDSPG=0 F S DDSPG=$O(^DIST(.403,DDSFRM,40,DDSPG)) Q:'DDSPG D
|
---|
130 | . D BLDLST($P($G(^DIST(.403,DDSFRM,40,DDSPG,0)),U,2),.DDSLST)
|
---|
131 | . S DDSBK=0 F S DDSBK=$O(^DIST(.403,DDSFRM,40,DDSPG,40,DDSBK)) Q:'DDSBK D
|
---|
132 | .. D BLDLST($P($G(^DIST(.403,DDSFRM,40,DDSPG,40,DDSBK,0)),U),.DDSLST)
|
---|
133 | Q
|
---|
134 | ;
|
---|
135 | BLDLST(DDSBK,DDSLST) ;Build list of forms that contain a given block
|
---|
136 | N DDSFRM
|
---|
137 | Q:'$G(DDSBK)
|
---|
138 | S DDSFRM=0 F S DDSFRM=$O(^DIST(.403,"AB",DDSBK,DDSFRM)) Q:'DDSFRM S DDSLST(DDSFRM)=""
|
---|
139 | S DDSFRM=0 F S DDSFRM=$O(^DIST(.403,"AC",DDSBK,DDSFRM)) Q:'DDSFRM S DDSLST(DDSFRM)=""
|
---|
140 | Q
|
---|
141 | ;
|
---|
142 | DELALL ;Delete compile global for all forms
|
---|
143 | N DDSFRM,DDSFNUM,DDSREFS
|
---|
144 | W:'$D(DDSQUIET) !,"Deleting compiled form data ...",!
|
---|
145 | ;
|
---|
146 | S DDSFNUM=0
|
---|
147 | F S DDSFNUM=$O(^DIST(.403,DDSFNUM)) Q:'DDSFNUM D
|
---|
148 | . Q:$D(^DIST(.403,DDSFNUM,0))[0
|
---|
149 | . S DDSFRM=DDSFNUM_U_$P(^DIST(.403,DDSFNUM,0),U)
|
---|
150 | . W:'$D(DDSQUIET) !?3,$P(DDSFRM,U,2),?35,"(#"_+DDSFRM_")"
|
---|
151 | . D DEL(DDSFRM)
|
---|
152 | Q
|
---|
153 | ;
|
---|
154 | DEL(DDSFRM) ;Delete compiled global
|
---|
155 | N DDSREFS
|
---|
156 | S DDSREFS=$$REF^DDS0(DDSFRM) K @DDSREFS
|
---|
157 | S $P(^DIST(.403,+DDSFRM,0),U,11)=""
|
---|
158 | Q
|
---|
159 | ;
|
---|
160 | ERR(DDSFRM,DDSREFS) ;Print error, kill compiled global
|
---|
161 | Q:'$G(DIERR)
|
---|
162 | N DDSNAM
|
---|
163 | S DDSNAM=$P(DDSFRM,U,2)
|
---|
164 | S:DDSNAM="" DDSNAM=$P($G(^DIST(.403,+DDSFRM,0)),U)
|
---|
165 | D BLD^DIALOG(3002,DDSNAM)
|
---|
166 | S $P(^DIST(.403,+DDSFRM,0),U,11)=""
|
---|
167 | K @DDSREFS
|
---|
168 | Q
|
---|