File:  [Coherent Logic Development] / freem_fileman / USER / DIEFU.m
Revision 1.1: download - view: text, annotated - select for diffs
Mon Apr 28 14:13:20 2025 UTC (5 weeks, 5 days ago) by snw
Branches: MAIN
CVS tags: HEAD
Restructure repository

DIEFU	;SF/DPC-FILER UTILITIES ;11/25/94  11:24
	;;21.0;VA FileMan;;Dec 28, 1994
	;Per VHA Directive 10-93-142, this routine should not be modified.
INIZE	;
	N %,X,%H,DIE,DICS,DIC,%DT,DIK,%Y,%X,%D,%M,%I
	D DT^DICRW
	D CLEAN
	Q
CLEAN	;
	K DIRUT,DIROUT,DUOUT,DTOUT
	K ^TMP("DIERR",$J),^TMP("DIMSG",$J),^TMP("DIHELP",$J)
	K DIERR,DIHELP,DIMSG
	Q
	;
CALLOUT(DIOUTAR)	;
	I '$$VROOT(DIOUTAR) Q
	I $D(DIERR) D
	. S @DIOUTAR@("DIERR")=DIERR
	. M @DIOUTAR@("DIERR")=^TMP("DIERR",$J)
	. K ^TMP("DIERR",$J)
	. Q
	I $D(DIHELP) D
	. S @DIOUTAR@("DIHELP")=DIHELP
	. M @DIOUTAR@("DIHELP")=^TMP("DIHELP",$J)
	. K ^TMP("DIHELP",$J)
	. Q
	I $D(DIMSG) D
	. S @DIOUTAR@("DIMSG")=DIMSG
	. M @DIOUTAR@("DIMSG")=^TMP("DIMSG",$J)
	. K ^TMP("DIMSG",$J)
	. Q
	Q
	;
IEN(DIEFDA)	;
IENX	;
	I '$D(DIEFDA) Q 0
	N I,DIEFIEN S (I,DIEFIEN)="",DIEFDA(0)=$G(DIEFDA)
	F  S I=$O(DIEFDA(I)) Q:I=""  S DIEFIEN=DIEFIEN_DIEFDA(I)_","
	K DIEFDA(0)
	Q DIEFIEN
	;
DA(DAIEN,DATARG)	;
DAX	;
	K DATARG N I
	F I=1:1:$L(DAIEN,",")-1 S DATARG(I-1)=$P(DAIEN,",",I)
	I $D(DATARG(0)) S DATARG=DATARG(0) K DATARG(0)
	Q
	;
VROOT(DIEFAR)	;
	I DIEFAR'["(" Q 1
	I $E(DIEFAR,$L(DIEFAR))=")",$F(DIEFAR,")")>($F(DIEFAR,"(")+1) Q 1
	D BLD^DIALOG(202,"array root")
	Q 0
	;
VFILE(F,FLAG)	;
VFILEX	;
	I $P($G(^DD(F,.01,0)),U,2)]"",$P(^(0),U,2)'["W" Q 1
	I $G(FLAG)["D" N P S P("FILE")=F D BLD^DIALOG(401,.P,.P)
	Q 0
	;
VENTRY(DIEFF,DIEFIEN,DIEFFLG)	;
	N DIEFROOT,DIEFDA
	S DIEFFLG=$G(DIEFFLG),DIEFDA=$P(DIEFIEN,",")
	S DIEFROOT=$$ROOT^DIQGU(DIEFF,DIEFIEN,1,$S(DIEFFLG["D":1,1:0)) Q:DIEFROOT="" 0
	I $P($G(@DIEFROOT@(DIEFDA,0)),"^",1)="" D  Q 0
	. I DIEFFLG["D" N DIEFP S DIEFP("FILE")=DIEFF,DIEFP("IENS")=DIEFIEN D BLD^DIALOG(601,"",.DIEFP)
	I DIEFFLG["9" Q:'$$VMINUS9(DIEFF,DIEFIEN,DIEFFLG) 0
	Q 1
	;
VMINUS9(DIEFF,DIEFIEN,DIEFFLG)	;
	N DIEFTOP,DIEFROOT S DIEFFLG=$G(DIEFFLG)
	S DIEFTOP=$P(DIEFIEN,",",$L(DIEFIEN,",")-1),DIEFROOT=$$ROOT^DIQGU($$FNO^DILIBF(DIEFF),.DIEFTOP,1,$S(DIEFFLG["D":1,1:0))
	Q:DIEFROOT="" 0
	I $D(@DIEFROOT@(DIEFTOP,-9)) D  Q 0
	. I DIEFFLG["D" N DIEFP S DIEFP("FILE")=DIEFF,DIEFP("IENS")=DIEFIEN D BLD^DIALOG(602,"",.DIEFP)
	Q 1
	;
CHKFLD(DIEFF,DIEFFLD)	;
	I DIEFFLD'=+DIEFFLD S DIEFFLD=$$FLDNUM^DIEF1(DIEFF,DIEFFLD) Q:'DIEFFLD 0
	I '$$VFIELD(DIEFF,DIEFFLD,"D") Q 0
	Q DIEFFLD
	;
VFIELD(F,FLD,FLAG)	;
VFIELDX	;
	I $D(^DD(F,FLD)) Q 1
	I $G(FLAG)["D" N P S (P(1),P("FIELD"))=FLD,P("FILE")=F D BLD^DIALOG(501,.P,.P)
	Q 0
	;
DT(DIEFDT,DIEFX,DIEFY,DIEFDT0,DIOUTAR)	;
DTX	;
	I '$D(DIQUIET) N DIQUIET S DIQUIET=1
	I '$D(DIFM) N DIFM S DIFM=1 D INIZE
	N %DT,X,Y
	S DIEFDT=$G(DIEFDT)
	I $G(DIEFX)="" D BLD^DIALOG(202,"date being converted") G DTOUT
	I '$$VERFLG^DIEFU(DIEFDT,"FNPRSTXEe") G DTOUT
	I DIEFX?."?" D DT^DIEH1(DIEFDT) S DIEFY=-1 G DTOUT
	S %DT=DIEFDT,X=DIEFX S:$G(DIEFDT0)]"" %DT(0)=DIEFDT0 D ^%DT S DIEFY=Y
	I DIEFY=-1 D:DIEFDT'["e"  G DTOUT
	. N DIEFP
	. S DIEFP(1)=DIEFX,DIEFP(2)="date/time"
	. D BLD^DIALOG(330,.DIEFP,.DIEFP)
	I DIEFDT["E" D DD^%DT S DIEFY(0)=Y
DTOUT	I $G(DIOUTAR)]"" D CALLOUT^DIEFU(DIOUTAR)
	Q
	;
VERFLG(FLG,GDFLGS)	;
	N EI
	S EI=$TR(FLG,GDFLGS,"")
	I EI="" Q 1
	D BLD^DIALOG(301,EI,EI)
	Q 0
	;
XA(DIEFF,DIEFIEN,DIEFFLD,DIEFNVAL,DIEFOVAL)	;
	N DA
	S DIEFNVAL=$G(DIEFNVAL),DIEFOVAL=$G(DIEFOVAL)
	Q:DIEFNVAL=DIEFOVAL
	D DA(DIEFIEN,.DA)
	D XRFAUD^DIEF
	Q
	;
FILENM(F)	;
	N NM
	S NM=$P($G(^DIC($$FNO^DILIBF(F),0)),U)
	;I NM="" <DO ERROR>
	Q NM
	;
FLDNM(F,FLD)	;
	N NM,UP
	S NM=$P($G(^DD(F,FLD,0)),U,1)
	F  S UP=$G(^DD(F,0,"UP")) Q:'UP  D
	. S NM=NM_" in "_$P($G(^DD(F,0)),U,1)
	. S F=UP
	. Q
	;I NM="" <DO ERROR>
	Q NM

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>