[613] | 1 | DDSDEL ;SFISC/MKO-DELETE FORMS FOR A FILE ;3:06 PM 2 Nov 1998
|
---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
| 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 DDSREF,DDSBLK,DDSBNAM,DDSFRM,DDSOFRM,DDSLN,DDSPDD,DDSPG
|
---|
| 8 | N %,DIK,DIOVRD,DA,D0,X,Y
|
---|
| 9 | I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
|
---|
| 10 | S DIOVRD=1
|
---|
| 11 | D SETUP,GETFORMS(DDSFILE,DDSREF)
|
---|
| 12 | ;
|
---|
| 13 | ;Delete forms
|
---|
| 14 | W:DDSECHO !?3,"Deleting the FORMS..."
|
---|
| 15 | S DDSFRM="",DIK="^DIST(.403,"
|
---|
| 16 | F S DDSFRM=$O(@DDSREF@("FRM",DDSFRM)) Q:'DDSFRM S DA=DDSFRM D ^DIK
|
---|
| 17 | K DIK,DA
|
---|
| 18 | ;
|
---|
| 19 | ;Delete blocks
|
---|
| 20 | W:DDSECHO !?3,"Deleting the BLOCKS..."
|
---|
| 21 | S DDSBLK="",DIK="^DIST(.404,"
|
---|
| 22 | F S DDSBLK=$O(@DDSREF@("BLK",DDSBLK)) Q:'DDSBLK D
|
---|
| 23 | . S DDSLN=@DDSREF@("BLK",DDSBLK)
|
---|
| 24 | . S DDSBNAM=$P(DDSLN,U),DDSOFRM=$P(DDSLN,U,2),DDSPDD=$P(DDSLN,U,3)
|
---|
| 25 | . ;
|
---|
| 26 | . I DDSOFRM,DDSPDD D
|
---|
| 27 | .. I DDSECHO D
|
---|
| 28 | ... W !!?3,$C(7)_"*** Warning ***"
|
---|
| 29 | ... W !!?3,"Block "_DDSBNAM_" (#"_DDSBLK_")"
|
---|
| 30 | ... W !?3,"was deleted from the Block file."
|
---|
| 31 | ... W !!?3,"I'm deleting pointers to that block from"
|
---|
| 32 | .. S DDSFRM=""
|
---|
| 33 | .. F S DDSFRM=$O(@DDSREF@("BLK",DDSBLK,DDSFRM)) Q:'DDSFRM D
|
---|
| 34 | ... W:DDSECHO !?6,"Form "_$P(^DIST(.403,DDSFRM,0),U)_" (#"_DDSFRM_") ..."
|
---|
| 35 | ... D DELBLK(DDSBLK,DDSFRM)
|
---|
| 36 | .. W:DDSECHO !!?3,"The above form(s) need to be redesigned.",!
|
---|
| 37 | . ;
|
---|
| 38 | . E I 'DDSOFRM D
|
---|
| 39 | .. S DA=DDSBLK D ^DIK
|
---|
| 40 | ;
|
---|
| 41 | QUIT ;Cleanup and quit
|
---|
| 42 | K @DDSREF
|
---|
| 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
|
---|