Annotation of freem_fileman/DDSDEL.m, revision 1.1

1.1     ! snw         1: DDSDEL ;SFISC/MKO-DELETE FORMS FOR A FILE ;07:36 AM  2 Aug 1994
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        ;
        !             5: FORM(DDSFILE,DDSECHO)  ;
        !             6:        ;Delete all forms/blocks associated with file DDSFILE
        !             7:        N %,DIK,DIOVRD,DA,D0,X,Y
        !             8:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
        !             9:        S DIOVRD=1
        !            10:        D SETUP,GETFORMS(DDSFILE,DDSREF)
        !            11:        ;
        !            12:        ;Delete forms
        !            13:        W:DDSECHO !?3,"Deleting the FORMS..."
        !            14:        S DDSFRM="",DIK="^DIST(.403,"
        !            15:        F  S DDSFRM=$O(@DDSREF@("FRM",DDSFRM)) Q:'DDSFRM  S DA=DDSFRM D ^DIK
        !            16:        K DIK,DA
        !            17:        ;
        !            18:        ;Delete blocks
        !            19:        W:DDSECHO !?3,"Deleting the BLOCKS..."
        !            20:        S DDSBLK="",DIK="^DIST(.404,"
        !            21:        F  S DDSBLK=$O(@DDSREF@("BLK",DDSBLK)) Q:'DDSBLK  D
        !            22:        . S DDSLN=@DDSREF@("BLK",DDSBLK)
        !            23:        . S DDSBNAM=$P(DDSLN,U),DDSOFRM=$P(DDSLN,U,2),DDSPDD=$P(DDSLN,U,3)
        !            24:        . ;
        !            25:        . I DDSOFRM,DDSPDD D
        !            26:        .. I DDSECHO D
        !            27:        ... W !!?3,$C(7)_"***  Warning  ***"
        !            28:        ... W !!?3,"Block "_DDSBNAM_" (#"_DDSBLK_")"
        !            29:        ... W !?3,"was deleted from the Block file."
        !            30:        ... W !!?3,"I'm deleting pointers to that block from"
        !            31:        .. S DDSFRM=""
        !            32:        .. F  S DDSFRM=$O(@DDSREF@("BLK",DDSBLK,DDSFRM)) Q:'DDSFRM  D
        !            33:        ... W:DDSECHO !?6,"Form "_$P(^DIST(.403,DDSFRM,0),U)_" (#"_DDSFRM_") ..."
        !            34:        ... D DELBLK(DDSBLK,DDSFRM)
        !            35:        .. W:DDSECHO !!?3,"The above form(s) need to be redesigned.",!
        !            36:        . ;
        !            37:        . E  I 'DDSOFRM D
        !            38:        .. S DA=DDSBLK D ^DIK
        !            39:        ;
        !            40: QUIT   ;Cleanup and quit
        !            41:        K @DDSREF,DDSREF
        !            42:        K DDSBLK,DDSBNAM,DDSFRM,DDSOFRM,DDSLN,DDSPDD,DDSPG
        !            43:        Q
        !            44:        ;
        !            45: SETUP  ;Setup local variables
        !            46:        S:$D(DDSECHO)[0 DDSECHO=0
        !            47:        S DDSREF="^TMP(""DDSDEL"","_$J_")"
        !            48:        K @DDSREF
        !            49:        Q
        !            50:        ;
        !            51: GETFORMS(FILE,REF)     ;
        !            52:        ;Get all forms and blocks associated with file number FILE
        !            53:        ;and all subfiles associated with FILE
        !            54:        ;Put results in
        !            55:        ;  @REF@("DD",file#)         = null
        !            56:        ;       ("FRM",form#)        = form name
        !            57:        ;       ("BLK",block#)       = block name^used on forms not being
        !            58:        ;                              deleted^dd of block is being deleted
        !            59:        ;       ("BLK",block#,form#) = null for all blocks that are found
        !            60:        ;                              on a form not being deleted
        !            61:        ;
        !            62:        N B,F,P,FNAM
        !            63:        ;Get DDs of file and subfiles
        !            64:        D DD(FILE,REF)
        !            65:        ;
        !            66:        ;Get all forms associated with file
        !            67:        S FNAM="" F  S FNAM=$O(^DIST(.403,"F"_FILE,FNAM)) Q:FNAM=""  D
        !            68:        . S F="" F  S F=$O(^DIST(.403,"F"_FILE,FNAM,F)) Q:F=""  D
        !            69:        .. Q:$D(^DIST(.403,F,0))[0
        !            70:        .. S @REF@("FRM",F)=$P(^DIST(.403,F,0),U)
        !            71:        ;
        !            72:        ;Get all blocks associated with each form
        !            73:        S F="" F  S F=$O(@REF@("FRM",F)) Q:F=""  D
        !            74:        . S P=0 F  S P=$O(^DIST(.403,F,40,P)) Q:'P  D
        !            75:        .. S B=$P($G(^DIST(.403,F,40,P,0)),U,2)
        !            76:        .. I B D SETBLK(B,REF)
        !            77:        .. S B=0 F  S B=$O(^DIST(.403,F,40,P,40,B)) Q:'B  D SETBLK(B,REF)
        !            78:        Q
        !            79:        ;
        !            80: SETBLK(B,REF)  ;
        !            81:        ;Put block info into @REF
        !            82:        N B0
        !            83:        S B0=$G(^DIST(.404,B,0)) Q:B0?."^"
        !            84:        S @REF@("BLK",B)=$P(B0,U)_U_$$OTHER(B,REF)_U_($D(@REF@("DD",+$P(B0,U,2)))#2)
        !            85:        Q
        !            86:        ;
        !            87: DELBLK(DDSBLK,DDSFRM)  ;
        !            88:        ;Delete block DDSBLK from form DDSFRM
        !            89:        N DIK,DA,D0
        !            90:        S DDSPG=0 F  S DDSPG=$O(^DIST(.403,DDSFRM,40,DDSPG)) Q:'DDSPG  D
        !            91:        . I $D(^DIST(.403,DDSFRM,40,DDSPG,40,"B",DDSBLK)) D
        !            92:        .. S DIK="^DIST(.403,"_DDSFRM_",40,"_DDSPG_",40,"
        !            93:        .. S DA(2)=DDSFRM,DA(1)=DDSPG,DA=DDSBLK
        !            94:        .. D ^DIK
        !            95:        Q
        !            96:        ;
        !            97: DD(F,REF,K)    ;
        !            98:        ;Put file # and all its subfile #s into array @REF@("DD")
        !            99:        ;Kill REF first if $G(K)=""
        !           100:        N SB
        !           101:        K:$G(K)="" @REF@("DD")
        !           102:        S @REF@("DD",F)=""
        !           103:        S SB="" F  S SB=$O(^DD(F,"SB",SB)) Q:SB=""  D DD(SB,REF,1)
        !           104:        Q
        !           105:        ;
        !           106: OTHER(B,REF)   ;
        !           107:        ;Is block B found on forms other than what's in @REF@("FRM",F)=""
        !           108:        ;If so, put form numbers in @REF@("BLK",B,F)
        !           109:        N F,O,C
        !           110:        S O=0,F=""
        !           111:        F C="AB","AC" F  S F=$O(^DIST(.403,C,B,F)) Q:F=""  D
        !           112:        . I $D(@REF@("FRM",F))[0 S O=1,@REF@("BLK",B,F)=""
        !           113:        Q O

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>