Annotation of freem_fileman/DDSDFRM.m, revision 1.1.1.1

1.1       snw         1: DDSDFRM        ;SFISC/MKO-DELETE A FORM ;09:12 AM  18 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:        N %,DIC,DIOVRD,X,Y
                      6:        D INIT
                      7:        S (DDSDEL,DDSQUIT)=0
                      8:        ;
                      9:        S DDSFORM=$$FORM G:DDSFORM=-1 QUIT
                     10:        ;
                     11:        D GETBLKS
                     12:        D REPORT
                     13:        I $D(@DDSBLK) D ASKDEL G:DDSQUIT QUIT
                     14:        D ASKCONT G:DDSQUIT QUIT
                     15:        ;
                     16:        ;Delete form
                     17:        W !!,"Deleting form "_$P(DDSFORM,U,2)_" (IEN #"_+DDSFORM_") ..."
                     18:        S DIK="^DIST(.403,",DA=+DDSFORM
                     19:        D ^DIK K DIK,DA
                     20:        ;
                     21:        ;Delete blocks
                     22:        I DDSDEL D:'$G(DDSDEL(1)) DELPR D:$G(DDSDEL(1)) DELNPR
                     23:        W !!,"DONE!"
                     24:        D QUIT
                     25:        Q
                     26:        ;
                     27: EN(DDSFORM)    ;Delete form number DDSFORM
                     28:        N %,DA,DDSB,DDSBLK,DIC,DIK,DIOVRD,X,Y
                     29:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
                     30:        D INIT
                     31:        D GETBLKS
                     32:        ;
                     33:        ;Delete form
                     34:        S DIK="^DIST(.403,",DA=+DDSFORM
                     35:        D ^DIK K DIK,DA
                     36:        ;
                     37:        ;Delete blocks
                     38:        S DIK="^DIST(.404,"
                     39:        S DDSB="" F  S DDSB=$O(@DDSBLK@(DDSB)) Q:DDSB=""  D
                     40:        . Q:$P(@DDSBLK@(DDSB),U,2)
                     41:        . S DA=DDSB D ^DIK
                     42:        ;
                     43:        K @DDSBLK
                     44:        Q
                     45:        ;
                     46: INIT   ;Setup
                     47:        S DIOVRD=1
                     48:        S DDSBLK=$NA(^TMP("DDSDFRM",$J,"BLK"))
                     49:        K @DDSBLK
                     50:        Q
                     51:        ;
                     52: QUIT   ;Cleanup
                     53:        K @DDSBLK
                     54:        K DDSBLK,DDSDEL,DDSFILE,DDSFORM,DDSQUIT
                     55:        K DDH,DIRUT,DIROUT,DTOUT,DUOUT
                     56:        Q
                     57:        ;
                     58: FORM() ;Prompt for form
                     59:        ;Select file
                     60:        N D,DIC
                     61:        S DDS1="DELETE FORM FROM" D W^DICRW K DDS1 G:Y<0 FORMQ
                     62:        I '$D(@(DIC_"0)")) S Y=-1 G FORMQ
                     63:        S DDSFILE=Y
                     64:        ;
                     65:        ;Select form
                     66:        W ! K DIC
                     67:        S DIC="^DIST(.403,",DIC(0)="QEAM"
                     68:        S DIC(0)="QEA",D="F"_+DDSFILE
                     69:        S DIC("S")="I $P(^(0),U,8)=+DDSFILE"
                     70:        S DIC("A")="Select FORM to delete: "
                     71:        S DIC("W")=$P($T(DICW),";",3,999)
                     72: DICW   ;;N %G,%Y S %Y=Y,%G=^(0) W:$X>35 ! W ?35,"#"_Y S Y=$P(%G,U,5) W:Y]"" ?43," "_$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3) S Y=$P(%G,U,4) W:Y]"" ?53," User #"_Y S Y=$P(%G,U,8) W:Y]"" ?65," File #"_Y S Y=%Y
                     73:        D IX^DIC
                     74:        ;
                     75: FORMQ  Q Y
                     76:        ;
                     77: GETBLKS        ;Get all blocks on form
                     78:        ; @DDSBLK@(bk#)=Block name^flag (1=used on other forms)
                     79:        ;
                     80:        N P,B
                     81:        S P=0 F  S P=$O(^DIST(.403,+DDSFORM,40,P)) Q:'P  D
                     82:        . S B=$P(^DIST(.403,+DDSFORM,40,P,0),U,2)
                     83:        . I B]"",'$D(@DDSBLK@(B)) D
                     84:        .. S @DDSBLK@(B)=$P($G(^DIST(.404,B,0)),U)_U_$$COMMON(B,+DDSFORM)
                     85:        . S B=0
                     86:        . F  S B=$O(^DIST(.403,+DDSFORM,40,P,40,B)) Q:'B  D:'$D(@DDSBLK@(B))
                     87:        .. S @DDSBLK@(B)=$P($G(^DIST(.404,B,0)),U)_U_$$COMMON(B,+DDSFORM)
                     88:        Q
                     89:        ;
                     90: DELPR  ;Delete blocks with prompting
                     91:        N DDSB
                     92:        W ! K DIK,DIR,DIRUT
                     93:        S DIR(0)="YA",DIR("B")="NO"
                     94:        S DIR("?")="  Enter 'Y' to delete, 'N' to keep."
                     95:        S DIK="^DIST(.404,"
                     96:        ;
                     97:        S DDSB=""
                     98:        F  S DDSB=$O(@DDSBLK@(DDSB)) Q:DDSB=""!DDSQUIT  D
                     99:        . Q:$P(@DDSBLK@(DDSB),U,2)
                    100:        . S DIR("A")=$P(@DDSBLK@(DDSB),U)_$J("",30-$L($P(@DDSBLK@(DDSB),U)))_"Delete (Y/N)? "
                    101:        . D ^DIR S:$D(DIRUT) DDSQUIT=1 Q:'Y
                    102:        . S DA=DDSB D ^DIK
                    103:        K DA,DIR,DIK,DIRUT,DTOUT,DUOUT,DIROUT
                    104:        Q
                    105:        ;
                    106: DELNPR ;Delete blocks without prompting
                    107:        N DDSB
                    108:        W ! K DIK
                    109:        S DIK="^DIST(.404,"
                    110:        S DDSB=""
                    111:        F  S DDSB=$O(@DDSBLK@(DDSB)) Q:DDSB=""  D
                    112:        . Q:$P(@DDSBLK@(DDSB),U,2)
                    113:        . W !,"Deleting block "_$P(@DDSBLK@(DDSB),U)_" (IEN #"_DDSB_") ..."
                    114:        . S DA=DDSB D ^DIK
                    115:        K DIK,DA
                    116:        Q
                    117:        ;
                    118: ASKDEL ;Ask if user wants to delete all the blocks on this form
                    119:        K DIR W ! S DIR(0)="YA",DIR("B")="YES"
                    120:        S DIR("A",1)=""
                    121:        S DIR("A",2)="Delete all deletable blocks used on form "_$P(DDSFORM,U,2)
                    122:        S DIR("A")="from the BLOCK file (Y/N)? "
                    123:        S DIR("?",1)="  Enter 'Y' to delete blocks used on form"
                    124:        S DIR("?",2)="    "_$P(DDSFORM,U,2)_" from the BLOCK file."
                    125:        S DIR("?",3)="    (Only blocks not used on other forms can be deleted.)"
                    126:        S DIR("?",4)=""
                    127:        S DIR("?")="  Enter 'N' to delete the form but not the blocks."
                    128:        D ^DIR K DIR I $D(DIRUT) S DDSQUIT=1 Q
                    129:        S DDSDEL=Y Q:'DDSDEL
                    130:        ;
                    131:        ;Ask if user wants to delete without prompting
                    132:        W ! S DIR(0)="YA",DIR("B")="NO"
                    133:        S DIR("A",1)=""
                    134:        S DIR("A")="Delete blocks without prompting (Y/N)? "
                    135:        S DIR("?",1)="  Enter 'Y' to delete blocks from the BLOCK file"
                    136:        S DIR("?",2)="    without confirmation."
                    137:        S DIR("?",3)=""
                    138:        S DIR("?")="  Enter 'N' to confirm each delete."
                    139:        D ^DIR K DIR I $D(DIRUT) S DDSQUIT=1 Q
                    140:        S DDSDEL(1)=Y
                    141:        Q
                    142:        ;
                    143: ASKCONT        ;Final chance to abort
                    144:        K DIR S DIR(0)="YA",DIR("B")="NO"
                    145:        S DIR("A",1)=""
                    146:        S DIR("A")="Continue (Y/N)? "
                    147:        S DIR("?")="  Enter 'Y' to delete form.  Enter 'N' to exit."
                    148:        D ^DIR K DIR
                    149:        S:$D(DIRUT)!'Y DDSQUIT=1
                    150:        Q
                    151:        ;
                    152: REPORT ;Print report
                    153:        N B
                    154:        W !!! I '$D(@DDSBLK) W "There are no blocks on this form." Q
                    155:        W "  BLOCKS USED ON FORM """_$P(DDSFORM,U,2)_""" (IEN #"_+DDSFORM_")"
                    156:        W !!,"  Internal",?50,"Used on"
                    157:        W !,"  Entry Number   Block Name",?50,"Other Forms?   Deletable?"
                    158:        W !,"  ------------   ----------",?50,"------------   ----------"
                    159:        ;
                    160:        S B="" F  S B=$O(@DDSBLK@(B)) Q:B=""  D
                    161:        . W !,"  "_B,?17,$P(@DDSBLK@(B),U),?54
                    162:        . W $S($P(@DDSBLK@(B),U,2):"YES",1:"NO")
                    163:        . W ?68,$S($P(@DDSBLK@(B),U,2):"NO",1:"YES")
                    164:        Q
                    165:        ;
                    166: COMMON(B,F)    ;Is block B found on forms other than F
                    167:        N C,F1
                    168:        S C=0,F1=""
                    169:        F  S F1=$O(^DIST(.403,"AB",B,F1)) Q:F1=""  I F1'=F S C=1 Q
                    170:        I 'C S F1="" F  S F1=$O(^DIST(.403,"AC",B,F1)) Q:F1=""  I F1'=F S C=1 Q
                    171:        Q C

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