Annotation of freem_fileman/DDS6.m, revision 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>