File:  [Coherent Logic Development] / freem_fileman / USER / DDSDFRM.m
Revision 1.1: download - view: text, annotated - select for diffs
Mon Apr 28 14:13:19 2025 UTC (3 months ago) by snw
Branches: MAIN
CVS tags: HEAD
Restructure repository

    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>