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