| 1 | DDS6 ;SFISC/MKO-DELETIONS ;2:09 PM  9 Feb 1996
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 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(DDSDA,DIE) 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(DDP,DDSPTB,DDSDA,.DA)
 | 
|---|
| 19 |  . E  S DDACT="Q",DA="",DDSDAORG=DA,DDSDA="0,"
 | 
|---|
| 20 |  . I '$D(DDSPTB),'$P(DDSSC(DDSSC),U,4),'$D(DDSREP) D
 | 
|---|
| 21 |  .. D PG^DDSRSEL
 | 
|---|
| 22 |  .. I $G(DDSSEL) D
 | 
|---|
| 23 |  ... D CLRDAT^DDSRSEL
 | 
|---|
| 24 |  ... D R^DDSR
 | 
|---|
| 25 |  ... D PUT^DDSVALF(1,1,$P(^DIST(.403,+DDS,21),U),"","","0,")
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 | DM ;Enter here if user deleted record from the Select prompt
 | 
|---|
| 29 |  ;(called from DDS5)
 | 
|---|
| 30 |  ;In:  DDSU array, DDSOLD, DDSFLD
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ;Get DA and DIE for subfile level and delete
 | 
|---|
| 33 |  D DDA^DDS5(DDSOLD,.DA,.DDSDL)
 | 
|---|
| 34 |  D
 | 
|---|
| 35 |  . N DIE,DDSDA
 | 
|---|
| 36 |  . S DIE=U_$P(DDSU("M"),U,2)
 | 
|---|
| 37 |  . S DDSDA=DA_"," F DDSI=1:1:DDSDL S DDSDA=DDSDA_DA(DDSI)_","
 | 
|---|
| 38 |  . K DDSI
 | 
|---|
| 39 |  . D D
 | 
|---|
| 40 |  . D:Y K(DDSDA,DIE)
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  I 'Y D
 | 
|---|
| 43 |  . S @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"D")=DDSOLD
 | 
|---|
| 44 |  . S:$D(DDSU("X"))#2 @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"X")=DDSU("X")
 | 
|---|
| 45 |  . D UDA^DDS5(.DA,.DDSDL)
 | 
|---|
| 46 |  E  D
 | 
|---|
| 47 |  . D LST^DDS5(.DA,.DDSDL,DDP,DDSDA,DDSFLD)
 | 
|---|
| 48 |  . D UDA^DDS5(.DA,.DDSDL)
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 | D ;Delete the subrecord
 | 
|---|
| 52 |  ;In: DA array, DIE, DDSDL; Out: Y=1 if successful
 | 
|---|
| 53 |  N DR,DDS6DA,DDSI
 | 
|---|
| 54 |  D:DDM CLRMSG^DDS
 | 
|---|
| 55 |  S DDM=1
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  K DIR S DIR(0)="YO"
 | 
|---|
| 58 |  D BLD^DIALOG(8080,$$EZBLD^DIALOG(8078+(DDSDL>0)),"","DIR(""A"")")
 | 
|---|
| 59 |  D BLD^DIALOG(9038,"","","DIR(""?"")")
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  S DIR0=IOSL-1_U_($L(DIR("A"))+1)_"^3^"_(IOSL-3)_"^0"
 | 
|---|
| 62 |  D ^DIR K DIR
 | 
|---|
| 63 |  D CLRMSG^DDS
 | 
|---|
| 64 |  I X=""!$D(DIRUT)!'Y S Y=0 K DIRUT,DUOUT,DIROUT,DTOUT Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  S DDS6DA=DA N D0
 | 
|---|
| 67 |  F DDSI=1:1 Q:$D(DA(DDSI))[0  S DDS6DA(DDSI)=DA(DDSI) N @("D"_DDSI)
 | 
|---|
| 68 |  W $P(DDGLVID,DDGLDEL,9) S X=IOM X $G(^%ZOSF("RM"))
 | 
|---|
| 69 |  S DR=".01///@" D ^DIE K DI
 | 
|---|
| 70 |  W $P(DDGLVID,DDGLDEL,8) S X=0 X ^%ZOSF("RM")
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  ;I $D(DA) H 2 W $P(DDGLCLR,DDGLDEL,2) D R^DDSR S Y=0 Q
 | 
|---|
| 73 |  I $D(DA) S:$Y>(DDSHBX+1) DDSKM=1,DDM=1 S Y=0 Q
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  S Y=1,DA=DDS6DA
 | 
|---|
| 76 |  I '$G(DDSCHANG),$G(DDSPARM)["C" S DDSCHANG=1
 | 
|---|
| 77 |  F DDSI=1:1 Q:$D(DDS6DA(DDSI))[0  S DA(DDSI)=DDS6DA(DDSI)
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | K(DDSIEN,DIE) ;Remove all data pertaining to the (sub)record from @DDSREFT
 | 
|---|
| 81 |  ;In: DDSIEN = IENS of record being deleted
 | 
|---|
| 82 |  ;    DIE    = global root
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  N B,P,FN,PAT,PDA,IENS
 | 
|---|
| 85 |  S PAT=".E1"""_DDSIEN_""""
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  ;Loop through all pages/blocks in ^TMP
 | 
|---|
| 88 |  S P=0 F  S P=$O(@DDSREFT@(P)) Q:'P  D
 | 
|---|
| 89 |  . S B=0 F  S B=$O(@DDSREFT@(P,B)) Q:'B  D
 | 
|---|
| 90 |  .. ;Get file number of the block
 | 
|---|
| 91 |  .. S FN="F"_$P(@DDSREFS@(P,B),U,3)
 | 
|---|
| 92 |  .. ;
 | 
|---|
| 93 |  .. ;Loop through all records loaded for that block
 | 
|---|
| 94 |  .. S IENS=" "
 | 
|---|
| 95 |  .. F  S IENS=$O(@DDSREFT@(P,B,IENS)) Q:'IENS  D
 | 
|---|
| 96 |  ... ;
 | 
|---|
| 97 |  ... ;If the data pertains to the current or ancestor file, kill it
 | 
|---|
| 98 |  ... ;Get the parent IENS (also indicates the block is repeating)
 | 
|---|
| 99 |  ... S PDA=$P($G(@DDSREFT@(P,B,IENS)),U,2)
 | 
|---|
| 100 |  ... ;
 | 
|---|
| 101 |  ... I 'PDA,IENS?@PAT,$P(@DDSREFT@(P,B,IENS,"GL"),DIE)="" D
 | 
|---|
| 102 |  .... K @DDSREFT@(P,B,IENS)
 | 
|---|
| 103 |  .... K @DDSREFT@(FN,IENS)
 | 
|---|
| 104 |  ... E  I PDA,@DDSREFT@(P,B,IENS,"GL")=DIE D
 | 
|---|
| 105 |  .... D DELP(P,B,PDA,DDSIEN)
 | 
|---|
| 106 |  .... K @DDSREFT@(FN,DDSIEN)
 | 
|---|
| 107 |  Q
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 | DELP(P,B,PDA,IENS) ;Delete subrecord from parent's list
 | 
|---|
| 110 |  ;In: P    = page number
 | 
|---|
| 111 |  ;    B    = block number
 | 
|---|
| 112 |  ;    PDA  = parent IENS
 | 
|---|
| 113 |  ;    IENS = IENS of record to remove
 | 
|---|
| 114 |  N R,S
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  S S=$G(@DDSREFT@(P,B,PDA,"B",IENS)) Q:'S
 | 
|---|
| 117 |  K @DDSREFT@(P,B,PDA,"B",IENS)
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  F S=S:1 Q:$D(@DDSREFT@(P,B,PDA,S+1))[0  D
 | 
|---|
| 120 |  . S R=@DDSREFT@(P,B,PDA,S+1)
 | 
|---|
| 121 |  . S @DDSREFT@(P,B,PDA,S)=R
 | 
|---|
| 122 |  . S @DDSREFT@(P,B,PDA,"B",R)=S
 | 
|---|
| 123 |  K @DDSREFT@(P,B,PDA,S)
 | 
|---|
| 124 |  Q
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 | DEL ;Delete (sub)records added between saves
 | 
|---|
| 127 |  ;(user quit without saving)
 | 
|---|
| 128 |  N DA,DIK
 | 
|---|
| 129 |  S DDSI=0
 | 
|---|
| 130 |  F  S DDSI=$O(@DDSREFT@("ADD",DDSI)) Q:'DDSI  D
 | 
|---|
| 131 |  . K DA
 | 
|---|
| 132 |  . S DA=$P(@DDSREFT@("ADD",DDSI),U),DIK=U_$P(^(DDSI),U,2)
 | 
|---|
| 133 |  . F DDSX=2:1:$L(DA,",")-1 S DA(DDSX-1)=$P(DA,",",DDSX)
 | 
|---|
| 134 |  . S DA=+DA
 | 
|---|
| 135 |  . D ^DIK
 | 
|---|
| 136 |  K DDSI,DDSX
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 |  ;#8078  record
 | 
|---|
| 139 |  ;#8079  subrecord
 | 
|---|
| 140 |  ;#8080  WARNING: DELETIONS ARE DONE...
 | 
|---|
| 141 |  ;#9038  Enter 'Y' to delete...
 | 
|---|