Annotation of freem_fileman/DITMGM2A.m, revision 1.1
1.1 ! snw 1: DITMGM2A ;SFISC/EDE(OHPRD),TKW-CONTINUATION OF ^DITMGM2 ;4/7/94 08:49
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: ;
! 5: FIELD ; PROCESS ONE FIELD IN ONE FILE/SUBFILE
! 6: S DITMGMPF=^UTILITY("DITMGMRG",$J,DITMGMFL,DITMGMFD)
! 7: S DITMGMX=$P(^DD(DITMGMFL,DITMGMFD,0),U,4),DITMGMNO=$P(DITMGMX,";",1),DITMGMPC=$P(DITMGMX,";",2),DITMGMDI=$S(DITMGMFD=.01&($P(^(0),U,5,99)["DINUM"):1,1:0)
! 8: S DITMGMV=$S($P(^DD(DITMGMFL,DITMGMFD,0),U,2)["V":1,1:0)
! 9: I DITMGMV D
! 10: . N % S %=$P(^DIC(DITMGMPF,0,"GL"),U,2) I %["""" S %=$$CONVQQ^DILIBF(%)
! 11: . S DITMGMF=DITMGMF_";"_%,DITMGMT=DITMGMT_";"_% Q
! 12: S DITMGMXR="",DITMGMX=0 F DITMGML=0:0 S DITMGMX=$O(^DD(DITMGMFL,DITMGMFD,1,DITMGMX)) Q:DITMGMX'=+DITMGMX D Q:DITMGMXR'=""
! 13: . S DITMGMXR=$P(^(DITMGMX,0),U,2),DITMGMTY=$P(^(0),U,3),DITMGMTZ=$P(^(0),U,1)
! 14: . I DITMGMTY="",'DITMGMMU Q
! 15: . I DITMGMTY="",DITMGMMU,DITMGMFL'=DITMGMTZ,'$D(^DD(DITMGMTZ,0,"UP")) Q
! 16: . S DITMGMXR=""
! 17: . Q
! 18: K DA I DITMGMXR="" D NOXREF Q
! 19: Q:'$D(@(DITMGMG_""""_DITMGMXR_""","""_DITMGMF_""")"))
! 20: S DITMGMN="" F DITMGML=0:0 S DITMGMN=$O(@(DITMGMG_""""_DITMGMXR_""","""_DITMGMF_""",DITMGMN)")) Q:DITMGMN="" D ENTRY:'DITMGMMU,MULTIPLE:DITMGMMU
! 21: Q
! 22: ;
! 23: MULTIPLE ; MULTIPLE WITH XREF TO FILE
! 24: N DIXR,DICNT,DIDA,DIEND,DITMGZZZ
! 25: S DITMGZZZ=DITMGMN,(DICNT,DIEND)=+$P(DITMGMGM,"DA(",2),DIDA(DICNT)=DITMGMN
! 26: S DIXR(DICNT)=DITMGMG_""""_DITMGMXR_""","""_DITMGMF_""","_DITMGMN_","
! 27: S DICNT=DICNT-1
! 28: M2 I DICNT=DIEND S DITMGMN=DITMGZZZ Q
! 29: S DIDA(DICNT)=$O(@(DIXR(DICNT+1)_+$G(DIDA(DICNT))_")"))
! 30: I 'DIDA(DICNT) S DICNT=DICNT+1 G M2
! 31: I DICNT=0 D G M2
! 32: . N DA F I=0:1:DIEND S DA(I)=DIDA(I)
! 33: . S DA=DA(0) K DA(0)
! 34: . N DIXR,DICNT,DIDA,DIEND D ENTRY
! 35: . Q
! 36: S DIXR(DICNT)=DIXR(DICNT+1)_DIDA(DICNT)_","
! 37: S DICNT=DICNT-1 G M2
! 38: ;
! 39: NOXREF ; FILES WITH NO REGULAR XREF ON POINTING FIELD
! 40: I DITMGMDI,'DITMGMMU S DITMGMN=$S($D(@(DITMGMG_DITMGMF_")")):DITMGMF,1:"") D:DITMGMN ENTRY Q ; If DINUM file xref not needed
! 41: I '$D(@(DITMGMG_"0)")) W:'$D(DITMGM2("NOTALK")) !,"No Data Global: ",DITMGMG Q
! 42: I '$D(^%ZTSK)!($P(@(DITMGMG_"0)"),U,4)<3001) D SEARCH Q ; If <= 3000 search gbl
! 43: W:'$D(DITMGM2("NOTALK")) !,"No REGULAR xref on ",DITMGMFL,",",DITMGMFD," Merging entries for this file will",!,"now occur via Taskman in background!"
! 44: ; SETUP CALL TO TASKMAN
! 45: K DITMGMZT S:$D(ZTSK) DITMGMZT=ZTSK
! 46: K ZTSAVE F %="DITMGMG","DITMGMGM","DITMGMNO","DITMGMPC","DITMGMF","DITMGMT","DITMGMFL","DITMGMFD","DITMGMDI","DITMGMXR","DITMGMMU","DITMGMV" S ZTSAVE(%)=""
! 47: S ZTRTN="ZTM^DITMGM2",ZTDESC="PROCESS POINTER FIELD #"_DITMGMFD_" IN FILE #"_DITMGMFL_" FROM "_DITMGMF_" TO "_DITMGMT
! 48: S ZTIO="",ZTDTH=DT D ^%ZTLOAD K ZTSK
! 49: S:$D(DITMGMZT) ZTSK=DITMGMZT
! 50: K DITMGMZT
! 51: Q
! 52: ;
! 53: SEARCH ; $O THRU DATA GBL
! 54: D SEARCH^DITMGM2B
! 55: Q
! 56: ;
! 57: ENTRY ; PROCESS ONE FILE/SUBFILE ENTRY
! 58: D ENTRY^DITMGM2B
! 59: Q
! 60: QUOTES ;
! 61: N %P,%Q S %W1="",%Q="""" F %P=1:1:$L(%W,%Q)-1 S %W1=%W1_$P(%W,%Q,%P)_%Q_%Q
! 62: S %W1=%W1_$P(%W,%Q,$L(%W,%Q))
! 63: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>