DITMGM2C ;SFISC/EDE(OHPRD)TKW-CONTINUATION OF DITMGM2 ;10/7/98 10:38
;;22.0;VA FileMan;;Mar 30, 1999
;Per VHA Directive 10-93-142, this routine should not be modified.
;
ENTRY ; PROCESS ONE FILE/SUBFILE ENTRY
;
W:'$D(DITMGM2("NOTALK")) "."
I DITMGMDI D DINUM Q ; merge dinum entries
;
; ----- Transform DITMGMT
S DITMGM("DITMGMT")=DITMGMT
I 'DITMGMV S DITMGMT=$S(DITMGMFD=.01:"`",1:"/")_DITMGMT I 1
E S X=$P(DITMGMT,";",2),DITMGMT=$P(DITMGMT,";",1),X=+$P(@("^"_X_"0)"),U,2) D Q:X="" S DITMGMT=X_".`"_DITMGMT
. S X=$O(^DD(DITMGMFL,DITMGMFD,"V","B",X,0))
. Q:X=""
. S X=$P(^DD(DITMGMFL,DITMGMFD,"V",X,0),U,4)
. Q
; -----
;
I DITMGMMU D ENTRYM I 1
E D ENTRYS
S DITMGMT=DITMGM("DITMGMT") K DITMGM("DITMGMT")
Q
;
ENTRYS ;
;
S DITC="",DA=DITMGMN,D0=DA,DIE=DITMGMG,DR=DITMGMFD_"///"_DITMGMT
D ^DIE K DA,DIE,DITC,DR,D0
I $D(Y) S DITMGMEC=DITMGMEC+1,DITMGMRG("ERROR",DITMGMEC)="DIE"_U_DITMGMFL_U_DITMGMFD_U_DITMGMN_U_DITMGMF_U_DITMGMT
Q
;
ENTRYM ; PROCESS ONE SUBFILE ENTRY
S DITC="",DIE=DITMGMGM,DA=DITMGMN,DR=DITMGMFD_"///"_DITMGMT
D ^DITMU1 ; Set D0, D1, etc.
D ^DIE K DA,DIE,DITC,DR
D KILL^DITMU1 ; Kill D0, D1, etc.
I $D(Y) S DITMGMEC=DITMGMEC+1,DITMGMRG("ERROR",DITMGMEC)="DIE"_U_DITMGMFL_U_DITMGMFD_U_DITMGMN_U_DITMGMF_U_DITMGMT
Q
;
DINUM ; DINUM FILE
; Move the 'from' entry to it's new IEN location. Do a merge
; if there is already a record at that location.
;
N DIDA,DIK,DITMFROM S DITMFROM=$S(DITMGMMU:DITMGMGM,1:DITMGMG)
S $P(@(DITMFROM_DITMGMF_",0)"),U)=DITMGMT
I '$D(@(DITMFROM_DITMGMT_",0)")) D
. S @(DITMFROM_DITMGMT_",0)")=DITMGMT
. S $P(@(DITMFROM_"0)"),U,3,4)=DITMGMT_"^"_($P(@(DITMFROM_"0)"),U,4)+1)
. Q
S DIDA=$S('DITMGMMU:",",1:$$IEN^DIEFU(.DA)),DIDA("F")=DITMGMF_DIDA,DIDA("T")=DITMGMT_DIDA
D TRNMRG^DIT("M",DITMGMFL,"",DIDA("F"),DIDA("T"))
S $P(@(DITMFROM_DITMGMF_",0)"),U)=DITMGMF
D
. N DA D DA^DIEFU(DIDA("T"),.DA) Q:$D(DIERR)
. K DIK S DIK=$$ROOT^DIQGU(DITMGMFL,DIDA("T")) Q:$D(DIERR)
. N DIDA D IX1^DIK Q
D
. N DA D DA^DIEFU(DIDA("F"),.DA) Q:$D(DIERR)
. K DIK S DIK=$$ROOT^DIQGU(DITMGMFL,DIDA("F")) Q:$D(DIERR)
. N DIDA D ^DIK Q
Q
DITMGM2C ;SFISC/EDE(OHPRD)TKW-CONTINUATION OF DITMGM2 ;10/7/98 10:38
+1 ;;22.0;VA FileMan;;Mar 30, 1999
+2 ;Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;
ENTRY ; PROCESS ONE FILE/SUBFILE ENTRY
+1 ;
+2 IF '$DATA(DITMGM2("NOTALK"))
WRITE "."
+3 ; merge dinum entries
IF DITMGMDI
DO DINUM
QUIT
+4 ;
+5 ; ----- Transform DITMGMT
+6 SET DITMGM("DITMGMT")=DITMGMT
+7 IF 'DITMGMV
SET DITMGMT=$SELECT(DITMGMFD=.01:"`",1:"/")_DITMGMT
IF 1
+8 IF '$TEST
SET X=$PIECE(DITMGMT,";",2)
SET DITMGMT=$PIECE(DITMGMT,";",1)
SET X=+$PIECE(@("^"_X_"0)"),U,2)
Begin DoDot:1
+9 SET X=$ORDER(^DD(DITMGMFL,DITMGMFD,"V","B",X,0))
+10 IF X=""
QUIT
+11 SET X=$PIECE(^DD(DITMGMFL,DITMGMFD,"V",X,0),U,4)
+12 QUIT
End DoDot:1
IF X=""
QUIT
SET DITMGMT=X_".`"_DITMGMT
+13 ; -----
+14 ;
+15 IF DITMGMMU
DO ENTRYM
IF 1
+16 IF '$TEST
DO ENTRYS
+17 SET DITMGMT=DITMGM("DITMGMT")
KILL DITMGM("DITMGMT")
+18 QUIT
+19 ;
ENTRYS ;
+1 ;
+2 SET DITC=""
SET DA=DITMGMN
SET D0=DA
SET DIE=DITMGMG
SET DR=DITMGMFD_"///"_DITMGMT
+3 DO ^DIE
KILL DA,DIE,DITC,DR,D0
+4 IF $DATA(Y)
SET DITMGMEC=DITMGMEC+1
SET DITMGMRG("ERROR",DITMGMEC)="DIE"_U_DITMGMFL_U_DITMGMFD_U_DITMGMN_U_DITMGMF_U_DITMGMT
+5 QUIT
+6 ;
ENTRYM ; PROCESS ONE SUBFILE ENTRY
+1 SET DITC=""
SET DIE=DITMGMGM
SET DA=DITMGMN
SET DR=DITMGMFD_"///"_DITMGMT
+2 ; Set D0, D1, etc.
DO ^DITMU1
+3 DO ^DIE
KILL DA,DIE,DITC,DR
+4 ; Kill D0, D1, etc.
DO KILL^DITMU1
+5 IF $DATA(Y)
SET DITMGMEC=DITMGMEC+1
SET DITMGMRG("ERROR",DITMGMEC)="DIE"_U_DITMGMFL_U_DITMGMFD_U_DITMGMN_U_DITMGMF_U_DITMGMT
+6 QUIT
+7 ;
DINUM ; DINUM FILE
+1 ; Move the 'from' entry to it's new IEN location. Do a merge
+2 ; if there is already a record at that location.
+3 ;
+4 NEW DIDA,DIK,DITMFROM
SET DITMFROM=$SELECT(DITMGMMU:DITMGMGM,1:DITMGMG)
+5 SET $PIECE(@(DITMFROM_DITMGMF_",0)"),U)=DITMGMT
+6 IF '$DATA(@(DITMFROM_DITMGMT_",0)"))
Begin DoDot:1
+7 SET @(DITMFROM_DITMGMT_",0)")=DITMGMT
+8 SET $PIECE(@(DITMFROM_"0)"),U,3,4)=DITMGMT_"^"_($PIECE(@(DITMFROM_"0)"),U,4)+1)
+9 QUIT
End DoDot:1
+10 SET DIDA=$SELECT('DITMGMMU:",",1:$$IEN^DIEFU(.DA))
SET DIDA("F")=DITMGMF_DIDA
SET DIDA("T")=DITMGMT_DIDA
+11 DO TRNMRG^DIT("M",DITMGMFL,"",DIDA("F"),DIDA("T"))
+12 SET $PIECE(@(DITMFROM_DITMGMF_",0)"),U)=DITMGMF
+13 Begin DoDot:1
+14 NEW DA
DO DA^DIEFU(DIDA("T"),.DA)
IF $DATA(DIERR)
QUIT
+15 KILL DIK
SET DIK=$$ROOT^DIQGU(DITMGMFL,DIDA("T"))
IF $DATA(DIERR)
QUIT
+16 NEW DIDA
DO IX1^DIK
QUIT
End DoDot:1
+17 Begin DoDot:1
+18 NEW DA
DO DA^DIEFU(DIDA("F"),.DA)
IF $DATA(DIERR)
QUIT
+19 KILL DIK
SET DIK=$$ROOT^DIQGU(DITMGMFL,DIDA("F"))
IF $DATA(DIERR)
QUIT
+20 NEW DIDA
DO ^DIK
QUIT
End DoDot:1
+21 QUIT