Annotation of freem_fileman/DDS6.m, revision 1.1.1.1
1.1 snw 1: DDS6 ;SFISC/MKO-DELETIONS ;02:49 PM 9 Nov 1994
2: ;;21.0;VA FileMan;;Dec 28, 1994
3: ;Per VHA Directive 10-93-142, this routine should not be modified.
4: ;Enter here if user deleted record from the .01 of the (sub)record
5: ;(called from DDS01)
6: ;In: DDSU array, DDSOLD, DDSFLD
7: D D
8: I 'Y D
9: . S @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"D")=DDSOLD
10: . S:$D(DDSU("X"))#2 @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"X")=DDSU("X")
11: E D
12: . I $D(DDSREP) D
13: .. D DEL^DDSM1(DDSDA)
14: . E D K I $D(DDSPTB) D
15: .. S DDACT="NB"
16: .. S $P(@DDSREFT@(DDSPG,DDSBK),U)=""
17: .. D DB^DDSR(DDSPG,DDSBK)
18: .. D RPF^DDS7
19: . E S DDACT="Q",DA=""
20: ;
21: I '$P(DDSSC(DDSSC),U,4),'$D(DDSREP) D
22: . D PG^DDSRSEL
23: . D:$G(DDSSEL) PUT^DDSVALF(1,1,$P(^DIST(.403,+DDS,21),U),"")
24: Q
25: ;
26: DM ;Enter here if user deleted record from the Select prompt
27: ;(called from DDS5)
28: ;In: DDSU array, DDSOLD, DDSFLD
29: ;
30: ;Get DA and DIE for subfile level and delete
31: D DDA^DDS5(DDSOLD,.DA,.DDSDL)
32: D
33: . N DIE,DDSDA
34: . S DIE=U_$P(DDSU("M"),U,2)
35: . S DDSDA=DA_"," F DDSI=1:1:DDSDL S DDSDA=DDSDA_DA(DDSI)_","
36: . K DDSI
37: . D D
38: . D:Y K
39: ;
40: I 'Y D
41: . S @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"D")=DDSOLD
42: . S:$D(DDSU("X"))#2 @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"X")=DDSU("X")
43: . D UDA^DDS5(.DA,.DDSDL)
44: E D
45: . D LST^DDS5(.DA,.DDSDL,DDP,DDSDA,DDSFLD)
46: . D UDA^DDS5(.DA,.DDSDL)
47: Q
48: ;
49: D ;Delete the subrecord
50: ;In: DA array, DIE, DDSDL; Out: Y=1 if successful
51: N DR,DDS6DA,DDSI
52: D:DDM CLRMSG^DDS
53: S DDM=1
54: ;
55: K DIR S DIR(0)="YO"
56: D BLD^DIALOG(8080,$$EZBLD^DIALOG(8078+(DDSDL>0)),"","DIR(""A"")")
57: D BLD^DIALOG(9038,"","","DIR(""?"")")
58: ;
59: S DIR0=IOSL-1_U_($L(DIR("A"))+1)_"^3^"_(IOSL-3)_"^0"
60: D ^DIR K DIR
61: D CLRMSG^DDS
62: I X=""!$D(DIRUT)!'Y S Y=0 K DIRUT,DUOUT,DIROUT,DTOUT Q
63: ;
64: S DDS6DA=DA N D0
65: F DDSI=1:1 Q:$D(DA(DDSI))[0 S DDS6DA(DDSI)=DA(DDSI) N @("D"_DDSI)
66: W $P(DDGLVID,DDGLDEL,9) S X=IOM X $G(^%ZOSF("RM"))
67: S DR=".01///@" D ^DIE K DI
68: W $P(DDGLVID,DDGLDEL,8) S X=0 X ^%ZOSF("RM")
69: ;
70: ;I $D(DA) H 2 W $P(DDGLCLR,DDGLDEL,2) D R^DDSR S Y=0 Q
71: I $D(DA) S:$Y>(DDSHBX+1) DDSKM=1,DDM=1 S Y=0 Q
72: ;
73: S Y=1,DA=DDS6DA
74: I '$G(DDSCHANG),$G(DDSPARM)["C" S DDSCHANG=1
75: F DDSI=1:1 Q:$D(DDS6DA(DDSI))[0 S DA(DDSI)=DDS6DA(DDSI)
76: Q
77: ;
78: K ;Remove all data pertaining to the (sub)record from DDSREFT
79: ;In: DDSDA, DIE at subfile level
80: ;
81: N B,P,FN,PAT,PDA
82: S PAT=".E1"""_DDSDA_""""
83: S PDA=$P(DDSDA,",",2,999)
84: S P=0
85: F S P=$O(@DDSREFT@(P)) Q:'P D
86: . S B=0 F S B=$O(@DDSREFT@(P,B)) Q:'B D
87: .. S FN="F"_$P(@DDSREFS@(P,B),U,3),DDS6DA=" "
88: .. F S DDS6DA=$O(@DDSREFT@(P,B,DDS6DA)) Q:'DDS6DA D
89: ... I DDS6DA?@PAT,$P(@DDSREFT@(P,B,DDS6DA,"GL"),DIE)="" D
90: .... K @DDSREFT@(P,B,DDS6DA)
91: .... K @DDSREFT@(FN,DDS6DA)
92: ... E I DDS6DA=PDA,DIE=@DDSREFT@(P,B,PDA,"GL") D DELP
93: K DDS6DA
94: Q
95: ;
96: DELP ;Delete subrecord from parent's list
97: N R,S
98: S S=$G(@DDSREFT@(P,B,PDA,"B",DDSDA)) Q:'S
99: K @DDSREFT@(P,B,PDA,"B",DDSDA)
100: ;
101: F S=S:1 Q:$D(@DDSREFT@(P,B,PDA,S+1))[0 D
102: . S R=@DDSREFT@(P,B,PDA,S+1)
103: . S @DDSREFT@(P,B,PDA,S)=R
104: . S @DDSREFT@(P,B,PDA,"B",R)=S
105: K @DDSREFT@(P,B,PDA,S)
106: Q
107: ;
108: DEL ;Delete (sub)records added between saves
109: ;(user quit without saving)
110: N DA,DIK
111: S DDSI=0
112: F S DDSI=$O(@DDSREFT@("ADD",DDSI)) Q:'DDSI D
113: . K DA
114: . S DA=$P(@DDSREFT@("ADD",DDSI),U),DIK=U_$P(^(DDSI),U,2)
115: . F DDSX=2:1:$L(DA,",")-1 S DA(DDSX-1)=$P(DA,",",DDSX)
116: . S DA=+DA
117: . D ^DIK
118: K DDSI,DDSX
119: Q
120: ;#8078 record
121: ;#8079 subrecord
122: ;#8080 WARNING: DELETIONS ARE DONE...
123: ;#9038 Enter 'Y' to delete...
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>