TMGDIT0 ;SFISC/XAK-PREPARE TO XFR ;09:21 AM  Jul 19, 1988
        ;;22.0;VA FileMan;;Mar 30, 1999
        ;Per VHA Directive 10-93-142, this routine should not be modified.
 ;"Copied from FM, for customization

        K Y,DIC
        S DIT=DDF(1)
        S DIC=L
        S DIC(0)="EQLAM"
        S X="DATA INTO WHICH "
        D LK  ;"--> ^DIC  Asks for destination record, and creates new if needed. Y=destination record
        G Q:Y<0  ;"abort if requested
        S DFR=+Y
        S DTO(1)=DIC_+Y_","  ;"DTO is DESTINATION info array
        ;"At this point we have:
        ;" DTO=^VA(200,
        ;" DTO(1) = ^VA(200,166,
        S DIC(0)="EQAM",X="FROM ",DIC("S")="I Y-"_+Y
        D LK  ;"--> ^DIC  Asks for source record.
        G Q:Y<0  ;"abort if requested
S       S %=2 ;"default to NO delete
        ;"//ktW !,"   WANT TO DELETE THIS ENTRY AFTER IT'S TRANSFERRED"
        ;"//ktD YN^DICN  ;"%=1 for YES, %=2 for NO
        G Q:%<0 ;"abort if requested
        S DH=2-%  ;"DH=1 for delete, DH=0 for NO delete
        I '% do  goto S  ;"loop back
        . do F^TMGDIT
        S ^UTILITY("DIT",$J,+Y)=DFR_";"_$E(DIC,2,999)
        S DTO=0
        S (D0,DA)=+Y
        S DIK=DIC
        S DFR(1)=DIC_DA_","
        K DIC
        D WAIT^DICD  ;"Let me put you on hold...
GO      D GO^DITR  ;"Find fields to XRef
        S DIT=DH
        D KL^TMGDIT
        D ^DIK:DH  ;"kill record if prev requested (I think)
        S DA=DFR
        K DFR
        D IX1^DIK

        S DH=DIT
        set %=2 ;"//kt added
        ;"//ktD ASK^DITP  ;"Ask, redirect pointers?  %: 1=yes, 2=no
        ;"//ktD PTS^DITP:%=1
Q       G Q^TMGDIT
        ;
LK      S DIC("A")="TRANSFER "_X_DFL
        G ^DIC
        ;
EN      ; PROGRAMMER CALL
        ; DIT("F") = GLOBAL ROOT OR FILE # OF FILE TO TRANSFER FROM
        ; DIT("T") = GLOBAL ROOT OR FILE # OF FILE TO TRANSFER TO
        ; DA("F")  = ENTRY # IN FILE TO TRANSFER FROM
        ; DA("T")  = ENTRY # IN FILE TO TRANSFER TO
        ;" //kt: Note: this does not delete the FROM record
        ;
        I '$D(DIT("F"))!'$D(DIT("T"))!'$D(DA("F"))!'$D(DA("T")) G FIN
        S DDF(1)=DIT("F")
        S DDT(0)=DIT("T")
        I 'DDF(1) do  goto FIN:'DDF(1)
        . set DDF(1)=$piece($get(@(DDF(1)_"0")),"^",2)
        . if DDF(1)="" set DDF(1)=0
        . ;"S DDF(1)=$S($D(@(DDF(1)_"0)"))#2:+$P(^(0),U,2),1:0)
        . Q:'DDF(1)
        . S DFR(1)=DIT("F")
        I 'DDT(0) do  G FIN:'DDT(0) goto C
        . S DDT(0)=$S($D(@(DDT(0)_"0)"))#2:+$P(^(0),U,2),1:0)
        . quit:'DDT(0)
        . S DTO(1)=DIT("T")
        G FIN:'$D(^DIC(+DDF(1),0,"GL"))
        S DFR(1)=^("GL")
        G FIN:'$D(^DIC(+DDT(0),0,"GL"))
        S DTO(1)=^("GL")
C       S DB=DA("F")
        S (DB1,DFR)=DA("T")
        S DIK=DTO(1)
        I $D(DA(1)) F I=1:1 G:'$D(DA(I)) SET do
        . S DRF(I)=$P(DA(I),",",1)_",1,"
        . S DOT(I)=$P(DA(I),",",2)_",1,"

DON     K DRF,DOT
        S DFR(1)=DFR(1)_DB_","
        S DTO(1)=DTO(1)_DB1_","
        S DKP=1,DMRG=1,DTO=0,DH=0
        G GO

SET     F I=I-1:-1 G:I'>0 DON do
        . S DFR(1)=DFR(1)_DRF(I)
        . S DTO(1)=DTO(1)_DOT(I)
FIN     ;
        K DDF,DFR,DDT,DTO
        Q
