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>