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

BGULIST1.m

Go to the documentation of this file.
BGULIST1 ; IHS/OIT/MJL - GENERAL FILE LISTER ;  [ 03/29/2006  2:28 PM ]
 ;;1.5;BGU;**2**;MAY 26, 2005
 ;
GETITEM ;
 S BGUOFL=0,BGULEV=2,BGUDSET=0,BGUTVSET=0
 D
 .I BGUIEN'="",BGUCRFS="" S BGUICNT=1,BGUICNT1=1 D  D:$D(BGUSF) SFLDS Q
 ..S BGUSTART=0,BGUSUB(1)=BGUIEN,BGUSUB(2)=$$BEGIN(BGUBEGIN),BGUCNT=0 F  D GETITEM1 Q:BGUSUB(2)=""  I $$END(BGUSUB(2)) S BGULAST="" Q
 .I BGUCRFS'="" D  Q
 ..S BGUCHNG=0,BGUSUB(1)=$S(BGULDIR=BGUDIR:BGULSIEN,BGUICNT=0:BGUFIEN,1:BGULSIEN)
 ..F  S BGUSUB(1)=$$DOLRO(BGUCGREF,BGUDIR1),BGULSIEN=BGUSUB(1) Q:BGUSUB(1)=""  D  I BGUICNT#BGUMAX=0,BGUICNT Q
 ...D COUNT S BGULEV=2,BGUSUB(2)="" F  D GETITEM1 Q:BGUSUB(2)=""
 ...D:$D(BGUSF) SFLDS D:BGUSCR'="" SCRN:$D(BGUV) S:BGUICNT=1 BGUFIEN=BGUSUB(1)
 ..I BGUSUB(1)="" S BGUCHNG=1 S:BGUDIR1<1 BGUFIEN=""
 .D COUNT S BGUSUB(2)="" F  D GETITEM1 Q:BGUSUB(2)=""
 .I $D(BGUSF),$D(BGUV) D SFLDS
 .D:BGUSCR'="" SCRN:$D(BGUV)
 S:BGUDSET<0 BGUDSET=0
 I BGUDSET,BGUCNDS'="",'BGUTVSET D RMV
 K BGUDAT,BGUDATP,BGUDCK,BGUGOTD,BGUOFL,BGUREF,BGUSVCNT,BGUV,BGUXAR2
 Q
 ;
 ; Used to be appended to GETITEM+4
 ; I BGUEND'="",BGUSUB(2)]]BGUEND S BGULAST="" Q
GETITEM1 ;
 S BGUREF=$S(BGULEV#2:$$SETGREF(BGUGBL),1:$$SETAREF("BGUFGBL(BGUFILE,"))
 S BGUSUB(BGULEV)=$$DOLRO(BGUREF)
 I BGUSUB(BGULEV)="" S BGULEV=BGULEV-1 Q
 S BGUREF=$$SETGREF(BGUMGBL),BGUDAT=$$GETDATA()
 I BGULEV#2=0 S BGUGOTD=0 D:BGUDCK#2
 .S BGUXAR="BGUFLDS(BGUFILE,"_BGUARSBS_",""FN"")" S:$D(@BGUXAR) BGUDAT=$$GETVRS(BGUFILE,BGUDAT),BGUDATP=BGUYP
 .D:BGUGOTD
 ..S BGUSVCNT=BGUCNT,BGUCNT=BGUCNT+1 D:BGUCNT=1 FIRSTSET
 ..D SETDATA(BGUDAT,BGUICNT1,BGUCNT)
 ..I BGUDATP'="" S BGUCNT=BGUCNT+1 D SETDATA("P>"_BGUDATP,BGUICNT1,BGUCNT) S BGUDATP=""
 ..S BGUXAR1=BGUXAR,BGUXAR="BGUFLDS(BGUFILE,"_BGUARSBS_",""CF"")" D:$D(@BGUXAR) GETCF S BGUXAR=BGUXAR1
 ..I 'BGUOFL,$D(@("BGUOFILE(BGULEV,"_BGUARSBS_")")) D OFILE
 ..I BGUCNDS'="",BGULEV=BGUCMXL D CND^BGUCND S:BGUTV BGUTVSET=1 I 'BGUTV F  D RMV1 Q:BGUCNT=BGUSVCNT!'BGUCNT
 I BGUDCK>1 S BGULEV=BGULEV+1,BGUSUB(BGULEV)=$G(BGUSUB(BGULEV)) Q
 Q
 ;
OFILE ;
 S BGUOFL=1,BGULOOP=0,(BGUXAR2,BGUXRFSB)="",BGUXRSET=0
 S BGUPFIL1=BGUREF,BGUSLEV1=BGULEV M BGUSVSB1=BGUSUB
 F BGUN=2:1:$L(BGUARSBS,"BGUSUB") S BGUXAR2=BGUXAR2_"BGUSVSB1"_$P(BGUARSBS,"BGUSUB",BGUN)
 S BGUXAR2="BGUOFILE(BGUSLEV1,"_BGUXAR2_")"
 K BGUSUB
 F  D OFILE1 Q:'BGUXRFSB
 S BGUREF=BGUPFIL1,BGULEV=BGUSLEV1
 K BGUFRTN,BGULOOP,BGUSUB,BGUPFIL1,BGUSLEV1,BGUXAR1 M BGUSUB=BGUSVSB1
 K BGUSVSB1,BGUSVSB2,BGUXRF,BGUXRFSB,BGUXRSET
 S BGUOFL=0
 Q
 ;
OFILE1 ;
 S BGUOFN="" F  S BGUOFN=$O(@BGUXAR2@(BGUOFN)) Q:BGUOFN=""  D
 .S BGUX=@BGUXAR2@(BGUOFN),BGUOFILE=$P(BGUX,U),BGUIVS=$P(BGUX,U,2),BGUOVS=$P(BGUX,U,3),BGUFRTN=$P(BGUX,U,4),BGUXRF=0
 .F BGUN=1:1:$L(BGUIVS,"~") D  Q:BGUSUB(BGUN)=""
 ..S BGUX=$P(BGUIVS,"~",BGUN),BGUFILE1=BGUFILE,BGUFN1=BGUX
 ..I BGUN=1,$E(BGUX)="""" S BGUXRF=1
 ..S:BGUX[";" BGUFILE1=$P(BGUX,";",1),BGUFN1=$P(BGUX,";",2)
 ..S BGUSUB(BGUN)=$S(BGUFN1="?":"?",$E(BGUFN1)="""":$E(BGUFN1,2,$L(BGUFN1)-1),'BGUFN1:$G(@BGUFN1),BGUX["-L":$G(BGUV(BGUFILE1,+BGUFN1)),1:$G(BGUV(BGUFILE1,BGUFN1,"SUB"),$G(BGUV(BGUFILE1,BGUFN1))))
 .Q:BGUSUB(BGUN)=""  S BGULEV=BGUN
 .S BGUREF=$$SETAREF("BGUFGBL(BGUOFILE,"),BGUREF=$$SETGREF($$GETGBL(BGUOFILE))
 .I BGUFN1="?" D  Q
 ..S BGUSUB(BGUN)="",BGUSUB(BGUN)=$O(@BGUREF) S:'$D(BGUV(BGUOFILE,BGUOVS)) BGUV(BGUOFILE,BGUOVS)=BGUSUB(BGUN)
 ..S (BGUDAT,BGUV(BGUOFILE,BGUOVS,"SUB"))=BGUSUB(BGUN)
 ..S BGUDAT=BGUIVS_"->F"_BGUOFILE_":"_BGUASBS_$C(25)_BGUDAT,BGUCNT=BGUCNT+1
 ..D SETDATA(BGUDAT,BGUICNT1,BGUCNT)
 .S BGUDAT=$$GETDATA()
 .I BGUDCK S BGULOOP=0 D
 ..;I BGUDCK=10,$D(@($P(BGUXAR,",""FN""")_")")),$O(@BGUREF@($O(@BGUREF@("")),""))'="" D
 ..I BGUXRF D  Q
 ...I BGUXRFSB,'$D(BGUXRFSB(BGUOFILE)) Q
 ...D  I $D(BGUSVSB2) K BGUSUB M BGUSUB=BGUSVSB2 K BGUSVSB2
 ....I $D(BGUXRFSB(BGUOFILE,BGUOVS)),BGUXRFSB(BGUOFILE,BGUOVS)="" Q
 ....M BGUSVSB2=BGUSUB S BGUSUB(1)=$O(@BGUREF@($G(BGUXRFSB(BGUOFILE,BGUOVS))))
 ....I BGUSUB(1)="" S BGUXRFSB(BGUOFILE,BGUOVS)="" S:BGUXRFSB BGUXRFSB=BGUXRFSB-1 Q
 ....I $G(BGUXRFSB(BGUOFILE,BGUOVS))="" S BGUXRFSB=BGUXRFSB+1
 ....S BGUXRFSB(BGUOFILE,BGUOVS)=BGUSUB(1)
 ....S BGUSUB(2)="",BGUSUB(2)=$O(@BGUREF),BGUDCK=$D(@BGUREF) Q:'BGUDCK
 ....S BGUX=BGUARSBS,BGUARSBS="BGUSVSB2(1),0",BGUASBS=BGUASBS_",0,"_BGUXRFSB(BGUOFILE,BGUOVS)_",0",BGUDAT=BGUSUB(1)
 ....;S BGUX=BGUARSBS,BGUARSBS="BGUSVSB2(1),0",BGUDAT=BGUSUB(1)
 ....D GVSSDAT
 ....;S BGUARSBS=BGUX,BGUASBS=BGUSUB(1)_","_BGUSUB(2),BGUDAT=$$GETDATA()
 ..S BGUX=$P(BGUIVS,"~",1),BGUFILE1=BGUFILE,BGUFN1=BGUX
 ..S:BGUX[";" BGUFILE1=$P(BGUX,";",1),BGUFN1=$P(BGUX,";",2)
 ..I BGUXRFSB,'$D(BGUXRFSB(BGUFILE1,BGUFN1)) Q
 ..;I BGUXRFSB,$D(BGUXRFSB(BGUFILE1,BGUFN1)),BGUXRFSB(BGUFILE1,BGUFN1)="" Q
 ..I $D(BGUXRFSB(BGUFILE1,BGUFN1)),BGUXRFSB(BGUFILE1,BGUFN1)="" Q
 ..I BGUDCK=10,$D(@($P(BGUXAR,",""FN""")_")")),$O(@BGUREF@($O(@BGUREF@(""))))'="" D
 ...S BGUXAR=$P($Q(@($P(BGUXAR,",""FN"")")_")")),",""FN""")_",""FN"")",BGUREF=$Q(@$Q(@BGUREF))
 ...S BGUOLEV=BGULEV,BGUXX=$P(BGUREF,"(",2,999),BGUXX=$E(BGUXX,1,$L(BGUXX)-1) F BGULEV=1:1:$L(BGUXX,",") S BGUSUB(BGULEV)=$P(BGUXX,",",BGULEV)
 ...S BGUREF=$$SETAREF("BGUFGBL(BGUOFILE,"),BGUREF=$$SETGREF($$GETGBL(BGUOFILE)),BGUDAT=$$GETDATA(),BGULOOP=1
 ..F  D  Q:'BGULOOP
 ...D GVSSDAT
 ...S BGUXAR1=BGUXAR,BGUXAR="BGUFLDS(BGUOFILE,"_BGUARSBS_",""CF"")" D:$D(@BGUXAR) GETCF S BGUXAR=BGUXAR1
 ...Q:'BGULOOP
 ...S BGULOOP=0,BGULEV=BGUOLEV+1 F  D  Q:BGUQ
 ....S BGUQ=0,BGUREF=$$SETGREF($$GETGBL(BGUOFILE))
 ....I BGULEV#2=1 S BGUSUB(BGULEV)=$$DOLRO(BGUREF,BGUDIR1) D  Q
 .....I BGUSUB(BGULEV) S BGULEV=BGULEV+1,BGULOOP=1 Q
 .....S BGUSUB(BGULEV)=0,BGULEV=BGULEV-1 S:BGULEV=BGUOLEV BGUQ=1 Q
 ....S BGUQ=1,BGUDAT=$$GETDATA(),BGULEV=BGULEV-1 Q
 S:BGUXRFSB BGUXRSET=1
 Q
 ;
GVSSDAT ;
 S BGUGOTD=0,BGUXAR="BGUFLDS(BGUOFILE,"_BGUARSBS_",""FN"")"
 S BGUDAT=BGUIVS_"->F"_BGUOFILE_":"_BGUASBS_$C(25)_$P($$GETVRS(BGUOFILE,BGUDAT),$C(25),2)
 S:BGUYP'="" BGUDATP="P>"_BGUIVS_"->F"_BGUOFILE_":"_BGUASBS_$C(25)_$P(BGUYP,$C(25),2)
 I BGUGOTD S BGUCNT=BGUCNT+1 X:BGUFRTN'="" $TR(BGUFRTN,"|"_$C(31),"^,") D SETDATA(BGUDAT,BGUICNT1,BGUCNT) I BGUYP'="" S BGUCNT=BGUCNT+1 D SETDATA(BGUDATP,BGUICNT1,BGUCNT) S BGUDATP=""
 Q
 ;
DOLRO(BGUXREF,BGUDIRX) ;
 S BGUDIRX=$G(BGUDIRX,1),BGUY=$O(@BGUXREF,BGUDIRX)
 Q BGUY
 ;
GETDATA(BGUX) ;
 I $D(BGUX) S BGUDCK=$D(@BGUREF@(BGUX)),BGUY=$G(^(BGUX)) Q BGUY
 S BGUDCK=$D(@BGUREF),BGUY=$G(^(BGUSUB(BGULEV))) Q BGUY
 Q BGUY
 ;
GETGBL(BGUX) ;
 S:'BGUX BGUX=$O(^DIC("B",BGUX,"")) Q:BGUX="" BGUX
 S BGUX=$G(^DIC(BGUX,0,"GL"))
 Q BGUX
 ;
SETGREF(BGUX) ;
 S BGUY="",BGUSBS="",BGUASBS=""
 F BGUN=1:1:BGULEV D
 .S:BGUN>1 BGUY=BGUY_",",BGUASBS=BGUASBS_"," S BGUY=BGUY_"BGUSUB("_BGUN_")",BGUASBS=BGUASBS_BGUSUB(BGUN)
 .I BGUN>1 S:BGUN>2 BGUSBS=BGUSBS_"," S BGUSBS=BGUSBS_BGUSUB(BGUN)
 S BGUY=BGUX_BGUY_")"
 Q BGUY
 ;
SETAREF(BGUX) ;
 S BGUY=""
 F BGUN=2:2:BGULEV S:BGUN>2 BGUY=BGUY_"," S BGUY=BGUY_"BGUSUB("_BGUN_")"
 S BGUARSBS=BGUY,BGUY=BGUX_BGUY_")"
 Q BGUY
 ;
SETDATA(BGUX,BGUXN,BGUXN1) ;
 S ^TMP("BGULIST",BGUID,BGUXN,BGUXN1)=BGUX
 Q
 ;
 ; BGUISPTR - This is a pointer
GETVRS(BGUXFID,BGUX) ;
 S BGUY="",BGUYP=""
 S BGUGOTD=1,BGUXN="" F  S BGUXN=$O(@BGUXAR@(BGUXN)) Q:BGUXN=""  D  S BGUV(BGUXFID,BGUFN)=BGUX1
 .S BGUFN=$O(@BGUXAR@(BGUXN,"")),BGUPTR=@BGUXAR@(BGUXN,BGUFN),BGUISPTR=BGUPTR'=""
 .I +BGUXN=BGUXN D:BGUXN  S:'BGUXN BGUY=BGUX Q
 ..S BGUX1=$P(BGUX,U,BGUXN)
 ..I BGUX1'="",BGUISPTR S $P(BGUYP,U,BGUXN)=BGUX1,BGUX1=$$GETPTR(BGUX1)
 ..S $P(BGUY,U,BGUXN)=BGUX1
 .S BGUXNE1=$P(BGUXN,"E",2),BGUXNE2=$P(BGUXNE1,",",2),BGUXNE1=+BGUXNE1,BGUX1=$E(BGUX,BGUXNE1,BGUXNE2) S:BGUISPTR BGUX1=$$GETPTR(BGUX1) S $E(BGUY,BGUXNE1,BGUXNE2)=BGUX1
 S BGUY=BGUSBS_$C(25)_BGUY
 S:BGUYP'="" BGUYP=BGUSBS_$C(25)_BGUYP
 K BGUISPTR,BGUPTR,BGUX1,BGUXN,BGUXNE1,BGUXNE2
 Q BGUY
 ;
GETCF ;
 S X="GETCFET",@^%ZOSF("TRAP")
 S BGUFN="" F  S BGUFN=$O(@BGUXAR@(BGUFN)) Q:BGUFN=""  D
 .S BGUC=0 F BGUI=1:2:(BGULEV-1) S @("D"_BGUC)=BGUSUB(BGUI),BGUC=BGUC+1
 .S DA=BGUSUB(BGUI),X="",DICMX="" X @BGUXAR@(BGUFN) S BGUV(BGUOFILE,BGUFN)=X
 .S BGUCNT=BGUCNT+1
 .S:'BGUOFL X="SF:"_BGUFN_$C(25)_BGUV(BGUOFILE,BGUFN)
 .S:BGUOFL X=BGUIVS_"->F"_BGUOFILE_":SF:"_BGUFN_":"_BGUASBS_$C(25)_BGUV(BGUOFILE,BGUFN)
 .D SETDATA(X,BGUICNT1,BGUCNT)
 .F BGUI=0:1:(BGULEV/2-1) K @("D"_BGUI)
 .K BGUC,BGUI,DA,DICMX,X,Y
GETCFET ;
 Q
 ;
GETPTR(BGUX) ;
 S BGUV(BGUXFID,BGUFN,"SUB")=BGUX,BGUV(BGUXFID,BGUFN_"-P")=BGUX
 Q:BGUPTR="V" $P($G(@("^"_$P(BGUX,";",2)_""""_$P(BGUX,";")_""",0)")),U,1)
 S BGUYY=BGUX
 F BGUIDX=1:1:$L(BGUPTR,"\") S BGUYY=$P($G(@("^"_$P(BGUPTR,"\",BGUIDX)_""""_BGUYY_""",0)")),U,1)
 S:BGUYY="" BGUYY=BGUX
 K BGUIDX
 Q BGUYY
 ;
BEGIN(BGUX) ;
 I BGUX="" Q ""
 I BGUX=0 Q ""
 I BGUX,BGUX=+BGUX Q BGUX-1
 Q $E(BGUX,1,$L(BGUX)-1)_$C($A($E(BGUX,$L(BGUX)))-1)_"~"
 ;
END(BGUX) ;
 D
 .I BGUEND="" S BGUY=BGUX="" Q
 .I BGUX,BGUEND,BGUX=+BGUX,BGUEND=+BGUEND S BGUY=BGUX>BGUEND Q
 .S BGUY=BGUX]]BGUEND
 Q BGUY
 ;
FIRSTSET ;
 S BGUDAT=BGUTDLM_BGUSUB(1)_$C(20)_BGUDAT,BGUV(BGUFILE,.001)=BGUSUB(1),BGUDSET=BGUDSET+1 S:BGUCRFS'="" BGUV(BGUFILE,.0001)=BGUSVSUB(2)
 Q
 ;
COUNT ;
 S BGUICNT=BGUICNT+1,BGUICNT1=BGUICNT,BGUCNT=0 S:BGUDIR1<0 BGUICNT1=BGUMAX+1-BGUICNT1
 Q
 ;
SFLDS ;
 S BGUX="" F  S BGUX=$O(BGUSF(BGUX)) Q:BGUX=""  I $D(BGUV(BGUFILE,BGUX)) S BGUCNT=BGUCNT+1 D SETDATA("SF:"_BGUX_$C(25)_BGUV(BGUFILE,BGUX),BGUICNT1,BGUCNT)
 Q
 ;
SCRN ;
 X "S BGUSCRV="_BGUSCR I BGUSCRV K BGUSCRV Q
 D RMV
 Q
 ;
RMV ;
 K ^TMP("BGULIST",BGUID,BGUICNT1),BGUSCRV
 S BGUICNT=BGUICNT-1,BGUDSET=BGUDSET-1
 Q
RMV1 ;
 K ^TMP("BGULIST",BGUID,BGUICNT1,BGUCNT)
 S BGUCNT=BGUCNT-1 I BGUCNT<1 S BGUCNT=0
 Q