Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BARLNK

BARLNK.m

Go to the documentation of this file.
  1. BARLNK ; IHS/SD/LSL - LINK FILES ;
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;;OCT 26, 2005
  1. ;;
  1. EN ; EP
  1. SELECT ;
  1. ; Select links, hits, sorts, prints
  1. ; Select a file
  1. D HOME^%ZIS
  1. K DIC
  1. S DIC=$$DIC^XBDIQ1(90055.5)
  1. S DIC(0)="AEQML"
  1. D ^DIC
  1. Q:Y'>0
  1. S BARFN=+Y
  1. S $P(^BARDD(90055.5,BARFN,1,0),U,2)="90055.51A"
  1. K DIR
  1. ;
  1. PICK ; EP
  1. ; SELECT
  1. S DIR(0)="SO^J:Join;S:Sorts;P:Prints;W:Walk;E:Edit Items;L:List Items"
  1. S BARTYP("J")="Join(s)"
  1. S BARTYP("H")="Pick(s)"
  1. S BARTYP("S")="Sort(s)"
  1. S BARTYP("P")="Print(s)"
  1. D ^DIR
  1. I (Y="")!(Y="^") G SELECT
  1. D @Y
  1. G PICK
  1. ; *********************************************************************
  1. ;
  1. L ; EP
  1. I '$D(^BARRGIT(BARFN)) W !,"NOT BUILT YET !",! H 2 Q
  1. D LIST^BARLNRPT(BARFN)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. PICKQ ;
  1. Q
  1. ; *********************************************************************
  1. ;
  1. DDPULL(BARFN) ;
  1. ; build array of pointers from DD using truth test in BART
  1. K BARDD
  1. S BARDD=BARFN
  1. D PULLDD
  1. Q
  1. ; *********************************************************************
  1. ;
  1. PULLDD ; EP
  1. ; PULL DD
  1. K ^TMP("BARDD",$J)
  1. S BARFD=.001
  1. S BARFDC=0
  1. F S BARFD=$O(^DD(BARFN,BARFD)) Q:BARFD'>0 X BART I $T D
  1. . I BARTYP="J" S X=$P(@X,U,2)
  1. . S BARFDC=BARFDC+1
  1. . S ^TMP("BARDD",$J,BARFDC)=BARFD_"^"_+X
  1. . S ^TMP("BARDD",$J,"B",BARFD)=BARFDC
  1. Q
  1. ; *********************************************************************
  1. ;
  1. E ; EP
  1. ; Edit Items
  1. S XBSRCFL=+BARFN
  1. K DIC,DR,DA
  1. S DIC=$$DIC^XBDIQ1(90056.3)
  1. S DIC(0)="AEQML"
  1. D ^DIC
  1. I Y'>0 Q
  1. K ITM
  1. S ITMDA=+Y
  1. D DSPITM
  1. S DIE=DIC
  1. S DA=ITMDA
  1. S DR=".01;.04;.05;1.04"
  1. D ^DIE
  1. D DSPITM
  1. G E
  1. ; *********************************************************************
  1. ;
  1. DSPITM ; EP
  1. D ENP^XBDIQ1(90056.3,ITMDA,".01:1.04","ITM(")
  1. W !,"Field |File",?15,ITM(.01)
  1. W !,"Attribute",?15,ITM(.04)
  1. W !,"FM Path",?15,ITM(.05)
  1. W !,"Data Path",?15,ITM(1.04)
  1. W !
  1. Q
  1. ; *********************************************************************
  1. ;
  1. JDDSP ;
  1. ; display BARDD for joins field and file pointer
  1. D DDPULL(BARFN)
  1. W @IOF
  1. S X=$P(^DIC(BARDD,0),U)_" FILE Fields"
  1. W !,?10,X
  1. S BARFC=$O(^TMP("BARDD",$J,"A"),-1)
  1. S BARFCH=(BARFC\2)+(BARFC#2)
  1. F I=1:1:BARFCH D
  1. . S BARFD=$P(^TMP("BARDD",$J,I),U)
  1. . S BARFN0=$P(^TMP("BARDD",$J,I),U,2)
  1. . W !,$J(I,3),?5,$E($P(^DD(BARDD,BARFD,0),U),1,16)
  1. . W ?23,$E($P(^DIC(BARFN0,0),U),1,16)
  1. . S J=I+BARFCH
  1. . Q:'$D(^TMP("BARDD",$J,J))
  1. . S BARFD=$P(^TMP("BARDD",$J,J),U)
  1. . S BARFN0=$P(^TMP("BARDD",$J,J),U,2)
  1. . W ?40,$J(J,3),?45,$E($P(^DD(BARDD,BARFD,0),U),1,16)
  1. . W ?63,$E($P(^DIC(BARFN0,0),U),1,16)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. GDDSP ;
  1. ; display BARDD general 3 columns
  1. D DDPULL(BARFN)
  1. W @IOF
  1. S X=$P(^DIC(BARDD,0),U)_" FILE Fields"
  1. W !,?10,X
  1. S BARFC=$O(^TMP("BARDD",$J,"A"),-1)
  1. S BARFCH=BARFC\3
  1. S:(BARFC#3) BARFCH=BARFCH+1
  1. F I=1:1:BARFCH D
  1. . S BARFD=$P(^TMP("BARDD",$J,I),U)
  1. . W !,$J(I,3),?5,$E($P(^DD(BARDD,BARFD,0),U),1,16)
  1. . S J=I+BARFCH
  1. . Q:'$D(^TMP("BARDD",$J,J))
  1. . S BARFD=$P(^TMP("BARDD",$J,J),U)
  1. . W ?26,$J(J,3),?31,$E($P(^DD(BARDD,BARFD,0),U),1,16)
  1. . S J=2*BARFCH+I
  1. . Q:'$D(^TMP("BARDD",$J,J))
  1. . S BARFD=$P(^TMP("BARDD",$J,J),U)
  1. . W ?55,$J(J,3),?60,$E($P(^DD(BARDD,BARFD,0),U),1,16)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. LDDDSP ;
  1. ; display fields already tagged in with BARTYP in the link file
  1. D DDPULL(BARFN)
  1. K BAR,BARLNK,BARLDD
  1. S BARDD=BARFN
  1. S BARLDD=BARDD
  1. I '$D(^BARDD(90055.5,BARLDD)) Q
  1. K DIC
  1. S DIC=$$DIC^XBDIQ1(90055.51)
  1. S DIC("S")="I $P(^(0),U,3)[BARTYP"
  1. K ^TMP("BARLN",$J)
  1. D ENPM^XBDIQ1(.DIC,"BARDD,0",".01:99","^TMP(""BARLN"",$J,","I")
  1. S BARFD=0
  1. F BARFDC=1:1 S BARFD=$O(^TMP("BARLN",$J,BARFD)) Q:BARFD'>0 S BARLDD(BARFDC)=BARFD_"^"_^TMP("BARLN",$J,BARFD,.02,"I"),BARLDD("B",BARFD)=BARFDC
  1. S X=$P(^DIC(BARDD,0),U)_" FILE "_BARTYP(BARTYP)
  1. W ?10,X,!
  1. S BARFC=$O(BARLDD("A"),-1)
  1. S BARFCH=(BARFC\3)
  1. S:(BARFC#3) BARFCH=BARFCH+1
  1. F I=1:1:BARFCH D
  1. . S BARFD=$P(BARLDD(I),U),BARFN0=$P(BARLDD(I),U,2)
  1. . W !,$J(^TMP("BARDD",$J,"B",BARFD),3),?5,$E($P(^DD(BARLDD,BARFD,0),U),1,16)
  1. . S J=I+BARFCH
  1. . Q:'$D(BARLDD(J))
  1. . S BARFD=$P(BARLDD(J),U)
  1. . S BARFN0=$P(BARLDD(J),U,2)
  1. . W ?26,$J(^TMP("BARDD",$J,"B",BARFD),3),?31,$E($P(^DD(BARLDD,BARFD,0),U),1,16)
  1. . S J=I+(2*BARFCH)
  1. . Q:'$D(BARLDD(J))
  1. . S BARFD=$P(BARLDD(J),U)
  1. . S BARFN0=$P(BARLDD(J),U,2)
  1. . W ?55,$J(^TMP("BARDD",$J,"B",BARFD),3),?60,$E($P(^DD(BARLDD,BARFD,0),U),1,16)
  1. W !
  1. Q
  1. ; *********************************************************************
  1. ;
  1. ADD ;
  1. ; add pointer to link file entry
  1. ; for back pointers
  1. K DIC
  1. I '$D(^BARDD(90055.5,BARDD)) D
  1. . W !,"file not in join file"
  1. . K DIR
  1. . S DIR(0)="Y"
  1. . S DIR("B")="Y"
  1. . S DIR("A")="ADD File to link file "
  1. . D ^DIR
  1. . K DIR
  1. . Q:'Y
  1. . S DIC=90055.5
  1. . S X=$P(^DIC(BARDD,0),U)
  1. . S DIC(0)="XL"
  1. . D ^DIC
  1. I '$D(^BARDD(90055.5,BARDD)) W !,"FILE NOT AVAILABLE",! H 3 Q
  1. S $P(^BARDD(90055.5,BARDD,1,0),U,2)="90055.51A" ;add header
  1. S BARFC=$O(^TMP("BARDD",$J,"A"),-1)
  1. W !
  1. K DIR
  1. S DIR(0)="LO^1:"_BARFC
  1. S DIR("A")="Add field(s) to File "_BARTYP(BARTYP)_" entries: "
  1. D ^DIR
  1. K DIR
  1. S BARY=Y
  1. Q:(+Y'>0)
  1. S DIC=$$DIC^XBDIQ1(90055.51)
  1. S DIC("P")=$P(^DD(90055.5,1,0),"^",2)
  1. S DA(1)=BARDD
  1. S DIC(0)="XL"
  1. F BARI=1:1 S BARFDC=$P(BARY,",",BARI) Q:'BARFDC D
  1. . S X=$P(^TMP("BARDD",$J,BARFDC),U)
  1. . D ^DIC
  1. . S DA=+Y
  1. . S DA(1)=BARDD
  1. . S BARX=$$VAL^XBDIQ1(90055.51,.DA,.03)
  1. . I BARX[BARTYP Q
  1. . K DR
  1. . I BARTYP="J" S BARFP=$P(^TMP("BARDD",$J,BARFDC),U,2) D
  1. .. S X="`"_BARFP
  1. .. S DIC=$$DIC^XBDIQ1(90055.5)
  1. .. S DIC(0)="NXL"
  1. .. N DR
  1. .. D ^DIC
  1. . S DIE=$$DIC^XBDIQ1(90055.51)
  1. . S DR=".03////"_BARX_BARTYP
  1. . I BARTYP="J" S DR=DR_";.02////^S X=BARFP"
  1. . D ^DIE
  1. ;
  1. ADDQ ;
  1. Q
  1. ; *********************************************************************
  1. ;
  1. DELL ;del entries from link file
  1. Q
  1. K BAR,BARLNK,BARLDD
  1. S BARLDD=BARDD
  1. I '$D(^BARDD(90055.5,BARLDD)) Q
  1. K DIC
  1. S DIC=$$DIC^XBDIQ1(90055.51)
  1. S DIC("S")="I $P(^(0),U,3)[BARTYP"
  1. D ENPM^XBDIQ1(.DIC,"BARDD,0",".01:99","^TMP(""BARLNK"",$J,","I")
  1. S BARFD=0
  1. F BARFDC=1:1 S BARFD=$O(^TMP("BARLNK",$J,BARFD)) Q:BARFD'>0 S BARLDD(BARFDC)=BARFD_"^"_^TMP("BARLNK",$J,BARFD,.02,"I")
  1. S X=$P(^DIC(BARDD,0),U)_" FILE "_BARTYP(BARTYP)
  1. W !!,?10,X,!
  1. S BARFC=$O(BARLDD("A"),-1)
  1. S BARFCH=(BARFC\3)
  1. S:(BARFC#3) BARFCH=BARFCH+1
  1. F I=1:1:BARFCH D
  1. . S J=I
  1. . S BARFD=$P(BARLDD(I),U)
  1. . S BARFN0=$P(BARLDD(I),U,2)
  1. . W !,$J(J,3),?5,$E($P(^DD(BARLDD,BARFD,0),U),1,16)
  1. . S J=I+BARFCH
  1. . Q:'$D(BARLDD(J))
  1. . S BARFD=$P(BARLDD(J),U)
  1. . S BARFN0=$P(BARLDD(J),U,2)
  1. . W ?26,$J(J,3),?31,$E($P(^DD(BARLDD,BARFD,0),U),1,16)
  1. . S J=I+(2*BARFCH)
  1. . Q:'$D(BARLDD(J))
  1. . S BARFD=$P(BARLDD(J),U)
  1. . S BARFN0=$P(BARLDD(J),U,2)
  1. . W ?55,$J(J,3),?60,$E($P(^DD(BARLDD,BARFD,0),U),1,16)
  1. S BARFC=$O(BARLDD("A"),-1)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. QDELL ;EP - DELL ENTRIES
  1. ; for back pointers ;I BARTYP="B" D DELL^BARLNKB Q
  1. K DIR
  1. S DIR(0)="LO^1:"_BARFC
  1. S DIR("A")="Delete File "_BARTYP(BARTYP)_" Entries: "
  1. D ^DIR
  1. K DIR
  1. Q:+Y'>0
  1. S BARY=Y
  1. S DIE=$$DIC^XBDIQ1(90055.51)
  1. S DA(1)=BARLDD
  1. F BARI=1:1 S BARX=$P(BARY,",",BARI) Q:BARX'>0 S BARFD=+^TMP("BARDD",$J,BARX) I $D(BARLDD("B",BARFD)) S DA=BARFD D
  1. . S BARE=$$VAL^XBDIQ1(DIE,.DA,.03)
  1. . S BARE=$TR(BARE,BARTYP,"")
  1. . S:BARE="" BARE="-"
  1. . S DR=".03////^S X=BARE"
  1. . D ^DIE
  1. Q
  1. ; *********************************************************************
  1. ;
  1. B ;EP - Back pointers
  1. S BARTYP="B"
  1. S XBROU="DISPLAY^BARLNKB"
  1. D EN^BARLN0
  1. Q
  1. ; *********************************************************************
  1. ;
  1. J ;JOINS
  1. JOIN ;;S X=$P(^(BARFD,0),U,3) I ($P(^(0),U)'["*"),X]"",X'[":" S X="^"_X_"0)" I $D(@X)
  1. ;logic to select valid pointer fields only
  1. S BARTYP="J"
  1. S BART=$P($T(JOIN^BARLNK),";;",2)
  1. S XBROU="JLM^BARLNK"
  1. D EN^BARLN0
  1. Q
  1. ; *********************************************************************
  1. ;
  1. JLM ;sequence to generate Join list
  1. D LDDDSP,JDDSP
  1. Q
  1. ; *********************************************************************
  1. ;
  1. HSPLM ;sequence to generate hits,sorts,prints list
  1. D LDDDSP,GDDSP
  1. Q
  1. ; *********************************************************************
  1. ;
  1. H ;HITS (pointers and sets of codes) for selection
  1. HITS ;;S X=$P(^(BARFD,0),U,3) I X]"",($P(^(0),U)'["*")
  1. S BARTYP="H"
  1. S BART=$P($T(HITS^BARLNK),";;",2)
  1. S XBROU="HSPLM^BARLNK"
  1. D EN^BARLN0
  1. Q
  1. ; *********************************************************************
  1. ;
  1. S ;SORTS (almost all fields , not multiples)
  1. SORTS ;;S X=$P(^(BARFD,0),U,2) I (BARFD=.01)!((X'["A")&(X'["K")&(X'["M")&(X'["W")&(X'=+X)&(X'["F")&($P(^(0),U)'["*"))
  1. S BARTYP="S"
  1. S BART=$P($T(SORTS^BARLNK),";;",2)
  1. S XBROU="HSPLM^BARLNK"
  1. D EN^BARLN0
  1. Q
  1. ; *********************************************************************
  1. ;
  1. P ;PRINTS (almost all fields .. not multiples at this time)
  1. S BARTYP="P"
  1. S BART="S X=$P(^(BARFD,0),U) I ($P(^(0),U)'[""*"")"
  1. S XBROU="HSPLM^BARLNK"
  1. D EN^BARLN0
  1. Q
  1. ; *********************************************************************
  1. ;
  1. W ;Walk from this file and build item entries
  1. TOP ;
  1. S BARTGDA1=BARFN,BARLEV=1
  1. S XBSRCFL=BARFN
  1. S BARPATH="",BARFLPTH=""
  1. D WALK
  1. Q
  1. ; *********************************************************************
  1. ;
  1. WALK ;Given BARFN add the fields and then walk the join multiples
  1. D ^BARLNKW
  1. Q
  1. LMFUN ;