XBPKDEL1	; IHS/ADC/GTH - DELETE RETIRED AND REPLACED PACKAGES ; [ 10/29/2002   7:42 AM ]
	;;4.0;XB;;Jul 20, 2009;Build 2
	; XB*3*8 - IHS/ASDST/GTH - 12-07-00 - New routine with patch 8.
	; XB*3*9 IHS/SET/GTH XB*3*9 10/29/2002 Use $GLOBAL.
	;
	; DECERT subroutine processes a list of retired/replaced
	; packages, and gives the user the opportunity to delete all
	; the package components, the routines, and globals, in the
	; namspace of the package.
	;
Q	Q
	; -------------------------------------------------------------
DECERT	;EP - Delete de-certified packages.
	I '$D(^DIC(0)) W !,*7,"Filemanager does not exist in this UCI!" Q
	I $S('$D(DUZ(0)):1,DUZ(0)'="@":1,1:0) W !,"PROGRAMMER ACCESS REQUIRED",! Q
	;
	W @IOF,!!,"You'll be given the opportunity to delete the following packages,",!,"Routines, and Globals in the indicated namespace, in 3 steps."
L1	;
	W !,"NAMESPACE--DESCRIPTION----------------------------RTNS-----GBLS------"
	;
	NEW C,G,L,R
	;
	F C=1:1 S L=$T(KILLEM+C),L=$P(L,";",3) Q:L="###"  D
	. W !,$P(L,"^",1),?11,$P(L,"^",2),?50,$J($$RSEL^ZIBRSEL($P(L,"^",1)_"*"),4),?59,$J($$CG($P(L,"^",1)),4)
	. I $Y>(IOSL-3),$$DIR^XBDIR("E","Press RETURN for the rest of the list") W @IOF
	.Q
	;
	Q:$G(XBLIST)
	;
	I '$$DIR^XBDIR("Y","Are you sure you want to continue","NO",$G(DTIME,300)) Q
	;
	W !!,"There will be 3 steps:"
	W !?10,"1)  Delete package via call to XBPKDEL;"
	W !?10,"2)  Delete Routines (not asked if 0 routines);"
	W !?10,"3)  Delete Globals (not asked if 0 globals)."
	W !,"Of course, your wisdom will be questioned if you do this w/o a full b/u...",!
	;
	Q:'$$DIR^XBDIR("E")
	;
	F C=1:1 S L=$T(KILLEM+C),L=$P(L,";",3) Q:L="###"  D  Q:$G(XBPKSTP)
	. W !!,$P(L,"^",1),?11,$P(L,"^",2)
	. S XBPKEY=1,XBPKNSP=$P(L,"^",1)
	. D DEL(XBPKNSP)
	. Q:$G(XBPKSTP)
	. D RTNS(XBPKNSP)
	. Q:$G(XBPKSTP)
	. D GBLS(XBPKNSP)
	. Q:$G(XBPKSTP)
	.Q
	;
	D EOJ^XBPKDEL
	Q
	;
	; -------------------------------------------------------------
DEL(XBPKNSP)	;
	W !,"Deleting the ",XBPKNSP," package components via call to XBPKDEL"
	NEW C,G,L,R
	S XBPKRUN=""
	D ^XBPKDEL
	Q
	; -------------------------------------------------------------
RTNS(XBPKNSP)	;
	NEW C,G,L,R,XB
	S XB=$$RSEL^ZIBRSEL(XBPKNSP_"*")
	Q:'XB
	I '$$DIR^XBDIR("Y","Delete "_XB_" routines in the "_XBPKNSP_" namespace","NO","","If you answer 'YES', the routines will be deleted") S:X=U XBPKSTP=1 Q
	W !,"Deleting ",XB," ",XBPKNSP," routines",!
	S X=""
	F  S X=$O(^TMP("ZIBRSEL",$J,X)) Q:X=""  W X,$J("",10-$L(X)) X ^%ZOSF("DEL")
	KILL ^TMP("ZIBRSEL",$J)
	Q
	; -------------------------------------------------------------
GBLS(XBPKNSP)	;
	NEW C,G,L,R,XB
	S XB=$$CG(XBPKNSP)
	Q:'XB
	I '$$DIR^XBDIR("Y","Delete "_XB_" globals in the "_XBPKNSP_" namespace","NO","","If you answer 'YES', the globals will be deleted") S:X=U XBPKSTP=1 Q
	W !,"Kill'ing ",$$CG(XBPKNSP)," ",XBPKNSP," globals",!
	S G="^"_XBPKNSP,L=$L(XBPKNSP)
	;I '$$KILLOK^ZIBGCHAR(G) KILL @G ;IHS/SET/GTH XB*3*9 10/29/2002
	I '$$KILLOK^ZIBGCHAR(XBPKNSP) KILL @G ;IHS/SET/GTH XB*3*9 10/29/2002
	;F  S G=$O(@G) Q:'($E(G,1,L)=XBPKNSP)  S G="^"_G W G,$J("",10-$L(G)) D ;IHS/SET/GTH XB*3*9 10/29/2002
	F  S G=$O(^$G(G)) Q:'($E(G,2,L+1)=XBPKNSP)  W G,$J("",10-$L(G)) D  ;IHS/SET/GTH XB*3*9 10/29/2002
	. I '$$KILLOK^ZIBGCHAR($E(G,2,$L(G))) KILL @G Q
	. W !,"<KILL UNSUCCESSFUL>: ",$$ERR^ZIBGCHAR($$KILLOK^ZIBGCHAR($E(G,2,$L(G))))
	.Q
	Q
	; -------------------------------------------------------------
CG(N)	; Count the globals in the N namespace.    
	NEW C,G,L,R
	S C=0,G="^"_N,L=$L(N)
	I $D(@G) S C=1
	;F  S G=$O(@G) Q:'($E(G,1,L)=N)  S G="^"_G,C=C+1 ;IHS/SET/GTH XB*3*9 10/29/2002
	F  S G=$O(^$G(G)) Q:'($E(G,2,L+1)=N)  S C=C+1 ;IHS/SET/GTH XB*3*9 10/29/2002
	Q C
	; -------------------------------------------------------------
LIST	;EP - List retired/replaced packages.
	NEW XBLIST
	S XBLIST=1
	W @IOF
	D L1
	Q
	; -------------------------------------------------------------
KILLEM	; Add the packages to be deleted, below: Namespace^Description
	;;AAPC^Ambulatory Patient Care Data Entry
	;;ACI^Injury Report
	;;ACHA^Community Health Nursing
	;;ADB^Diabetic Tracking System
	;;AMAL^Malpractice Claims
	;;APCM^PCC Table Maintenance
	;;AMCP^Women's Health/Pap Smear
	;;AMR^Management Status
	;;AMS^Management Referral
	;;APCQ^PCC Quality Assurance
	;;APCG^Family Genetic Linkage
	;;APCR^PCC Register
	;;APCS^PCC Surveillance
	;;APCT^PCC Clinic Training
	;;APHR^Physician Tracking
	;;ATA^Original Time and Attendance
	;;ALP^Mainframe to RPMS data insertion
	;;BRB^Institutional Review Board
	;;###
	;
