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

BGUFLR.m

Go to the documentation of this file.
BGUFLR ; IHS/OIT/MJL - BGU FILER ;
 ;;1.5;BGU;;MAY 26, 2005
 ;
EN(BGUARRAY,BGUFILE,BGUDATA,BGUACTN,BGUFLAGS) ;PEP FROM REMOTE PROCEDURE BGU FILER
CTL ;
 I $G(BGUFILE)'="",$G(BGUACTN)'="" D
 .S D0=-1,BGUFILE=$$GETFID(BGUFILE),BGUDATA=$G(BGUDATA),BGUFLAGS=$G(BGUFLAGS)
 .D INIT
 .I BGUACTN="C" D CREATE Q
 .I BGUACTN="M" D MODIFY Q
 .I BGUACTN="D" D DELETE Q
 D
 .I $D(BGUEMSG) D ERROR Q
 .S BGUARRAY(1)=1,BGUARRAY(2)="OK"
 .Q:BGUACTN="D"
 .F BGUN=1:1:$L(BGURIENS,$C(175)) S BGUX=$P(BGURIENS,$C(175),BGUN),BGUX=$E(BGUX,1,$L(BGUX)-1) D
 ..S BGUNP=$L(BGUX,","),BGUNPP=BGUNP+1,BGUY="",$P(BGUY,BGUNP,",")="" F BGUN1=1:1:BGUNP S BGUIEN=$P(BGUX,",",BGUN1),$P(BGUY,",",BGUNPP-BGUN1)=$S(BGUIEN=+BGUIEN:BGUIEN,1:$G(BGUENTS($P(BGUIEN,"+",2))))
 ..S $P(BGURIENS,$C(175),BGUN)=BGUY
 .S BGUARRAY(2)=BGURIENS
 D KILL
 Q
 ;
INIT ;
 S BGUS1=$C(25),BGUS2="~",BGUIENC=1,BGUIENC(1)=1
 Q
 ;
CREATE ;
 D BLDFDA,FILE
 Q
 ;
MODIFY ;
 S BGUENTS=""
 D BLDFDA,FILE
 Q
 ;
DELETE ;
 S BGUFIELD=$P(BGUDATA,BGUS1,1),BGUIENS=$P(BGUDATA,BGUS1,2),DIK=$$GETGBL(BGUFILE),BGULEV=$L(BGUFIELD,"!"),BGUFILE1=BGUFILE
 I BGUIENS="" S BGUEMSG="",BGUARRAY(1000)="NO ENTRY SELECTED TO DELETE" Q
 S BGUN=0 F BGULEV1=1:1:BGULEV S BGUIEN=$P(BGUIENS,",",BGULEV1) Q:BGUIEN=""  S DA=BGUIEN I BGULEV1<BGULEV S DA(BGULEV1)=DA,DIK=DIK_DA_","_$$GETNODE(BGUFILE1,$P(BGUFIELD,"!",BGULEV1))_","
 I BGUIEN'="" D ^DIK Q
 S DA=0 F  S DA=$O(@(DIK_DA_")")) Q:'DA  D ^DIK
 Q
 ;
 ; Builds the FDA (FileMan Data Array)
BLDFDA ;
 ; Build array BLDORD sorted in FileMan field order
 F BGUN=1:1:$L(BGUDATA,$C(175)) S BGUX=$P(BGUDATA,$C(175),BGUN),BGUFIELD=$P(BGUX,$C(20),1),BGUIENS=$P(BGUFIELD,BGUS1,2),BGUFIELD=$P(BGUFIELD,BGUS1,1) S:BGUIENS="" BGUIENS=0 D
 .I D0=-1,BGUIENS S D0=$P(BGUIENS,",",1)
 .S BGUSTR="" F BGUN1=1:1:$L(BGUFIELD,"!") S BGUSUB(BGUN1)=$P(BGUFIELD,"!",BGUN1) S:BGUN1>1 BGUSTR=BGUSTR_"," S BGUSTR=BGUSTR_"BGUSUB("_BGUN1_")"
 .;S @("BGUORD("_BGUSTR_","""_BGUIENS_""","_BGUN_")")=BGUX
 .S @("BGUORD("""_BGUIENS_""","_BGUSTR_","_BGUN_")")=BGUX
 S BGUFIELD=""
 S BGUXX="BGUORD",BGURIENS="",$P(BGURIENS,$C(175),$L(BGUDATA,$C(175)))="" F  S BGUXX=$Q(@BGUXX) Q:BGUXX=""  S BGUX=@BGUXX D
 .S BGUFSEG=$P(BGUX,$C(20),1),BGUDAT=$P(BGUX,$C(20),2),BGULFLDS=BGUFIELD,BGUFIELD=$P(BGUFSEG,BGUS1,1),BGUIENS=$P(BGUFSEG,BGUS1,2) D SETIEN S $P(BGURIENS,$C(175),$P($P(BGUXX,",",$L(BGUXX,",")),")"))=BGUIENST
 .I 'BGUWP S BGUFDA($$GETFILE(BGUFIELD),BGUIENST,BGULFLD)=BGUDAT Q
 .;MJL 12/26/01 - WORD PROCESSING FIELDS WEREN'T WORKING
 .I $P(BGUIENS,",",BGULEV+1)=""!(BGUDAT[$C(30)) S BGUFID=$$GETFILE($P(BGUFIELD,"!",1,BGULEV)),BGULFLD=$P(BGUFIELD,"!",BGULEV) D  Q
 ..F BGUN1=1:1:$L(BGUDAT,$C(30)) S BGUWPD(BGUFID,BGUIENST,+BGULFLD,BGUN1)=$P(BGUDAT,$C(30),BGUN1)
 .S BGUFID=$$GETFILE($P(BGUFIELD,"!",1,BGULEV)),BGULFLD=$P(BGUFIELD,"!",BGULEV),BGUWPD(BGUFID,BGUIENST,+BGULFLD,$P(BGUIENS,",",BGULEV+1))=BGUDAT
 Q
 ;
 ; Builds the IEN string for the FDA array
SETIEN ;
 I BGUACTN="C",BGUIENS,$E(BGUIENS)'="+" S BGUENTS(1)=+BGUIENS,$E(BGUIENS,1,$L(+BGUIENS))="+1"
 S:$E(BGUIENS)="" BGUIENS="+1"
 S BGUIENST="",BGULEV=$L(BGUFIELD,"!"),BGULFLD=$P(BGUFIELD,"!",BGULEV),BGUWP=$E(BGULFLD,$L(BGULFLD))="W",BGULEV=BGULEV-BGUWP
 F BGUN1=1:1:BGULEV S BGUIEN=$P(BGUIENS,",",BGUN1),BGUFLD=$P(BGUFIELD,"!",BGUN1),BGUIENSV=$P(BGUIEN,":",2) S:BGUIENSV'="" BGUIEN=$P(BGUIEN,":",1),BGUENTS(+BGUIEN)=BGUIENSV S BGUIENST=BGUIEN_","_BGUIENST
 Q
 ;
 ; Makes the update to FileMan
FILE ;
 ;
 D UPDATE^DIE(BGUFLAGS,"BGUFDA","BGUENTS","BGUEMSG")
 Q:'$D(BGUWPD)!($D(BGUEMSG))
 K BGUFDA,BGUIENS
 S BGUFID="" F  S BGUFID=$O(BGUWPD(BGUFID)) Q:BGUFID=""  S BGUIENS="" F  S BGUIENS=$O(BGUWPD(BGUFID,BGUIENS)) Q:BGUIENS=""  D
 .S BGUWIENS="" F BGUN=1:1:$L(BGUIENS,",")-1 S BGUIEN=$P(BGUIENS,",",BGUN),BGUWIENS=BGUWIENS_$S(BGUIEN["+":$G(BGUENTS($P(BGUIEN,"+",2)),1),1:BGUIEN)_","
 .S BGUFN="" F  S BGUFN=$O(BGUWPD(BGUFID,BGUIENS,BGUFN)) Q:BGUFN=""  Q:$D(BGUEMSG)  D WP^DIE(BGUFID,BGUWIENS,BGUFN,"","BGUWPD("_BGUFID_","""_BGUIENS_""","_BGUFN_")","BGUEMSG")
 K BGUWIENS,BGUWPD
 Q
 ;
 ; Input: FileMan name    Returns: FileMan file number
GETFID(BGUX) ;INTERNAL EP
 S:'BGUX BGUX=$O(^DIC("B",BGUX,"")) Q:BGUX="" ""
 I '$D(^DIC(BGUX)) Q ""
 Q BGUX
 ;
GETFILE(BGUX) ;
 Q:BGUX=+BGUX BGUFILE
 S BGUFILE1=BGUFILE
 F BGUNN=1:1:$L(BGUX,"!")-1 S BGUX1=$P(BGUX,"!",BGUNN),BGUFILE1=+$P(^DD(BGUFILE1,BGUX1,0),U,2) Q:'BGUFILE1
 Q:'BGUFILE1 BGUFILE
 Q BGUFILE1
 ;
GETGBL(BGUX) ;
 S:'BGUX BGUX=$O(^DIC("B",BGUX,"")) Q:BGUX="" BGUX
 S BGUX=$G(^DIC(BGUX,0,"GL"))
 Q BGUX
 ;
GETNODE(BGUX,BGUX1) ;
 S BGUFILE1=^DD(BGUFILE1,BGUX1,0),BGUX1=$P($P(BGUFILE1,U,4),";"),BGUFILE1=+$P(BGUFILE1,U,2)
 S:BGUX1?.E1A.E BGUX1=""""_BGUX1_""""
 Q BGUX1
 ;
 ; Send copy of error text returned from ^DIE to RPC broker.
ERROR ;
 S BGUARRAY(1)=-1
 S BGUN=1,BGUN1="" F  S BGUN1=$O(BGUEMSG("DIERR",BGUN1)) Q:'BGUN1  S BGUN2="" F  S BGUN2=$O(BGUEMSG("DIERR",BGUN1,"TEXT",BGUN2)) Q:'BGUN2  S BGUN=BGUN+1,BGUARRAY(BGUN)=BGUEMSG("DIERR",BGUN1,"TEXT",BGUN2)
 K BGUEMSG
 Q
 ;
KILL ;
 K BGUDAT,BGUDATA,BGUENTS,BGUFDA,BGUFID,BGUFIELD,BGUFILE,BGUFILE1,BGUFLAGS,BGUFLD,BGUFN,BGUFSEG,BGUIEN,BGUIENSV,BGUIENC,BGUIENS,BGUIENST,BGULEV,BGULEV1,BGULFLD,BGULFLDS,BGUN,BGUN1,BGUN2,BGUNN,BGUNP,BGUNPP,BGUORD,BGURIENS
 K BGUS1,BGUS2,BGUSTR,BGUSUB,BGUWIENS,BGUWP,BGUWPD,BGUX,BGUX1,BGUXX,BGUY,DA,DIK
 Q