Annotation of freem_fileman/DDS0.m, revision 1.1.1.1
1.1 snw 1: DDS0 ;SFISC/MLH-SETUP, CLEANUP ;09:38 AM 30 Nov 1994
2: ;;21.0;VA FileMan;;Dec 28, 1994
3: ;Per VHA Directive 10-93-142, this routine should not be modified.
4: ;
5: EN(DDSFILE,DR,DA) ;Initial setup
6: S U="^"
7: D INIT^DDGLIB0() Q:$G(DIERR)
8: D FORM(.DDSFILE,DR) Q:$G(DIERR)
9: ;
10: ;Compile the form if not already compiled
11: S DDSREFS=$$REF(DDS)
12: I '$$COMPILED(DDS) D EN^DDSZ(DDS) Q:$G(DIERR)
13: S:$P(^DIST(.403,+DDS,0),U,10) DA="NOREC"
14: ;
15: D FRSTPG(DDS,.DA,$G(DDSPAGE)) Q:$G(DIERR)
16: D REC(DDP,.DA) Q:$G(DIERR)
17: D INIT
18: Q
19: ;
20: FORM(DDSFILE,DR) ;Form lookup
21: ;Output:
22: ; DDS = Form number^Form name
23: ; DDP = File number (or 0)
24: ; DDSPG = First page to go to on form
25: ; DIERR
26: ;
27: I $D(DDSFILE)[0 D BLD^DIALOG(201,"DDSFILE") Q
28: ;
29: N DIC,X,Y
30: ;
31: S DDP=$S(DDSFILE=+DDSFILE:DDSFILE,1:+$P($G(@(DDSFILE_"0)")),U,2))
32: S X=$S(DR:DR,1:$P($P(DR,"[",2),"]"))
33: S DIC="^DIST(.403,",DIC(0)="FNX",D="F"_DDP
34: D IX^DIC K DIC
35: ;
36: I Y<0 D BLD^DIALOG(3021,X) Q
37: I '$O(^DIST(.403,+Y,40,"B","")) D BLD^DIALOG(3022,X) Q
38: S DDS=Y
39: ;
40: I $D(DDSFILE(1))#2 S DDP=$S(DDSFILE(1)=+DDSFILE(1):DDSFILE(1),1:+$P($G(@(DDSFILE(1)_"0)")),U,2))
41: Q
42: ;
43: FRSTPG(DDS,DA,DDSPAGE) ;Get first page of form
44: ;Output:
45: ; DDSPG
46: ; DDSSEL = 1, if DA is null and there is a record selection page
47: ; DIERR
48: ;
49: N P
50: I $G(DA)!($G(DA)="NOREC") D
51: . S P=$S($G(DDSPAGE):DDSPAGE,1:1)
52: . S DDSPG=$O(^DIST(.403,+DDS,40,"B",P,""))
53: . I $D(^DIST(.403,+DDS,40,+DDSPG,0))[0 D BLD^DIALOG(3023,"number "_P)
54: E D PG^DDSRSEL D:'$G(DDSSEL) BLD^DIALOG(202,"record")
55: Q
56: ;
57: REC(DDP,DA) ;Check record and lock
58: ;Output:
59: ; DIE = Global root
60: ; DDSDA = DA,DA(1),...,
61: ; DDSDAORG = Original DA array
62: ; DDSDL = Level number (top=0)
63: ; DDSDLORG = Original level number
64: ; DDSFLORG = Orig DDP^Orig DIE
65: ; D0,D1,etc.
66: ; DIERR
67: ;
68: I '$G(DA) D Q
69: . S DIE="",(DDSDL,DDSDLORG)=0,DDSDA="0,"
70: . S:'$D(DA) DA="" S DDSDAORG=DA
71: ;
72: D GL^DDS10(DDP,.DA,.DIE,.DDSDL,.DDSDA,1) Q:$G(DIERR)
73: ;
74: I $D(DIOVRD)[0 D Q:$G(DIERR)
75: . N DDSTOP S DDSTOP=$$FNO^DILIBF(DDP)
76: . Q:$P($G(^DD(DDSTOP,0,"DI")),U,2)'["Y"
77: . N P S P("FILE")=$P(@(DIE_"0)"),U)
78: . D BLD^DIALOG(405,DDSTOP,.P)
79: ;
80: S DDSDLORG=DDSDL
81: K DDSDAORG S (DDSDAORG,@("D"_DDSDL))=DA
82: F DDSI=1:1:DDSDL S (DDSDAORG(DDSI),@("D"_(DDSDL-DDSI)))=DA(DDSI)
83: S DDSFLORG=$G(DDP)_$G(DIE)
84: K DDSI
85: Q
86: ;
87: INIT ;Initialize some variables
88: ; DDSHBX = $Y of first line of help area
89: ; DDSREFT = Global reference of temporary global location
90: ; DDSFDO = 1 if entire form is display-only
91: ; DDSCHG = Change flag
92: ; DDSKM = Flag to keep whatever's in help area
93: ; DDSH = Flag to indicate help area is empty
94: ; DDSSC = Array to indicate what pages are on the screen
95: ;
96: S DDSHBX=IOSL-7
97: S DDXY=IOXY_" S $X=DX,$Y=DY"
98: ;
99: K DDH,DDSSC,DDSCHANG,DDSSAVE
100: S DDSH=1,(DDH,DDM,DDSCHG,DDSSC)=0,DDACT="N"
101: S DDSREFT="^TMP(""DDS"",$J,"_+DDS_")"
102: ;
103: N %,%H,%I,X
104: D NOW^%DTC
105: S $P(^DIST(.403,+DDS,0),U,6)=$E(%,1,12)
106: Q
107: ;
108: END I $D(DDSHBX) S DX=0,DY=IOSL-1 X IOXY
109: D KILL^DDGLIB0($G(DDSPARM))
110: ;
111: I $D(^TMP("DDS",$J,"LOCK")) D
112: . N I
113: . S I="" F S I=$O(^TMP("DDS",$J,"LOCK",I)) Q:I="" L -@I
114: . K ^TMP("DDS",$J,"LOCK")
115: ;
116: K:'$G(DA) DA
117: I $D(DA),$D(DDSDAORG)#2,$D(DDSDLORG)#2 D
118: . K DA,D0
119: . S DA=DDSDAORG
120: . F DDSI=1:1:DDSDLORG S DA(DDSI)=DDSDAORG(DDSI) K @("D"_DDSI)
121: ;
122: K:$G(DDSPARM)'["E" DIERR,^TMP("DIERR",$J)
123: K:$D(DDSREFT)#2 @DDSREFT,DDSREFT
124: K ^TMP("DDSH",$J),^TMP("DDSWP",$J)
125: K DDACT,DDH,DDM,DDO,DDP,DDQ,DDS,DDSDDP
126: K DDSBK,DDSBR,DDSCHG,DDSDA,DDSDAORG,DDSDL
127: K DDSDLORG,DDSDN,DDSEXT,DDSFDO,DDSFLD,DDSFLORG,DDSGL,DDSH,DDSI
128: K DDSKM,DDSLN,DDSNP,DDSO,DDSOLD,DDSORD,DDSOPB,DDSOSV,DDSPTB,DDSPG
129: K DDSPX,DDSPY,DDSQ,DDSREP,DDSSC,DDSSP,DDSTP,DDSU,DDSX
130: K DDSHBX,DDSREFS,DDXY
131: K DIC,DIR,DIR0N,DIROUT,DIRUT,DUOUT,DY,DX
132: K A1,D,DDC,DDD,DI,DIEQ,DIK,DIW,DIY,DIZ,DS
133: Q
134: ;
135: COMPILED(DDS) ;Return 1 if form is compiled
136: Q $D(@$$REF(DDS))>0
137: ;
138: REF(DDS) ;Return global reference for compiled global
139: ;Q "^DIST(.403,""AZ"","_+DDS_")"
140: Q "^DIST(.403,"_+DDS_",""AZ"")"
141: ;
142: IXF ;
143: N D0,DA,DIC,DP,Y S DIC="^DD("_DDGFDD_",",DIC(0)="EMN" D ^DIC
144: I Y'>0 K X
145: E S X=+$P(Y,"E")
146: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>