File:  [Coherent Logic Development] / freem_fileman / Attic / DDS41.m
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Mon Apr 28 14:10:44 2025 UTC (5 weeks, 4 days ago) by snw
Branches: CoherentLogicDevelopment
CVS tags: start
Initial commit

DDS41	;SFISC/MKO-VERIFY DATA ;07:42 AM  25 Oct 1994
	;;21.0;VA FileMan;;Dec 28, 1994
	;Per VHA Directive 10-93-142, this routine should not be modified.
	N DDO
	K DDSERROR,DDS4DONE,DDS4ERR
	S DDS4PG=DDSPG
	;
	;Set DA,DIE,DDP array to its original value
	I $G(DDSPTB)_$G(DDSREP)]"" N DIE,DDP,DDSDA,DA,DDSDL D
	. S DA=DDSDAORG,DDSDL=DDSDLORG,DDSDA=DA_","
	. F DDSI=1:1:DDSDL S DA(DDSI)=DDSDAORG(DDSI),DDSDA=DDSDA_DA(DDSI)_","
	. S DDP=$P($G(DDSFLORG),U),DIE=U_$P($G(DDSFLORG),U,2) S:DIE=U DIE=""
	;
	D LDALL
	I $G(DIERR) D  G END
	. N P
	. S P(1)=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U),P(2)=$P($G(^(1)),U)
	. S:P(2)="" P(2)="unnamed"
	. D BLD^DIALOG(3041,.P),ERR^DDSMSG
	. S DDS4ERR=1
	;
	D LP
	;
	S DDSPG=DDS4PG,DDS4VC=$G(^DIST(.403,+DDS,20))
	I DDS4VC'?."^"  K @DDSREFT@("MSG") X DDS4VC
	I $G(@DDSREFT@("MSG"))>0!$G(DIERR) D PRNT
	;
END	S Y='$D(DDSERROR)&'$G(DDS4ERR)
	K DDS4B,DDS4DA,DDS4DONE,DDS4ERR,DDS4FLD,DDS4PG,DDS4TP
	K DDS4VC,DDSCAP,DDSDD,DDSERROR,DDSI,DDSPID
	K DDSREQ,DIERR,DV
	Q
	;
LDALL	;Load all pages
	S (DDSPG,DDS4PG1)=$O(^DIST(.403,+DDS,40,"B",$S($G(DDSPAGE)]"":DDSPAGE,1:1),""))
	S Y=1
	F  D ^DDS1(DDSPG) Q:$G(DIERR)  S DDSPG=$$NP^DDS5(.Y) Q:DDSPG=DDS4PG1!'Y
	K DDS4PG1
	Q
	;
LP	;Loop through all pages/blocks
	S DX=0,DY=IOSL-1 X IOXY
	W "Verifying ..."_$P(DDGLCLR,DDGLDEL)
	;
	S DDSPG=0
	F  S DDSPG=$O(@DDSREFT@(DDSPG)) Q:'DDSPG  D
	. S DDS4B=0
	. F  S DDS4B=$O(@DDSREFT@(DDSPG,DDS4B)) Q:'DDS4B  D
	.. I '$D(DDS4DONE(DDS4B)),$P(@DDSREFS@(DDSPG,DDS4B),U,5)="e" D
	... S DDSPID=$S($P($G(^DIST(.403,+DDS,40,DDSPG,1)),U)]"":$P(^(1),U),1:"Page "_$P(^(0),U))
	... D VB
	Q
	;
VB	;Loop through all fields on block
	N DDP
	S DDS4DONE(DDS4B)="",DDP=$P(^DIST(.404,DDS4B,0),U,2)
	S DDO=0 F  S DDO=$O(^DIST(.404,DDS4B,40,DDO)) Q:'DDO  D VF
	Q
	;
VF	;Check for required fields
	Q:$D(^DIST(.404,DDS4B,40,DDO,0))[0  S DDS4TP=$P(^(0),U,3)
	Q:DDS4TP=1  Q:DDS4TP=4
	S DDSCAP=$P(^DIST(.404,DDS4B,40,DDO,0),U,2)_$S($P(^(0),U,4)]"":" ("_$P(^(0),U,4)_")",1:"")
	;
	I DDS4TP=2 N DDP D
	. S DDP=0,DDS4FLD=DDO_","_DDS4B
	. K DV
	;
	E  D  Q:DDS4FLD'=+$P(DDS4FLD,"E")!(DDS4FLD=.01)
	. S DDS4FLD=$G(^DIST(.404,DDS4B,40,DDO,1))
	. S DDSDD=$G(^DD(DDP,DDS4FLD,0)),DV=$P(DDSDD,U,2)
	. S:DDSCAP="" DDSCAP=$S($G(^DD(DDP,DDS4FLD,.1))]"":^(.1),1:$P(DDSDD,U))
	;
	S DDS4DA=" "
	F  S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4DA)) Q:DDS4DA=""  D
	. I $P(@DDSREFT@(DDSPG,DDS4B,DDS4DA),U,6)<2 D VR Q
	. N DDS4PDA S DDS4PDA=DDS4DA N DDS4DA
	. S DDS4DA=""
	. F  S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4PDA,"B",DDS4DA)) Q:'DDS4DA  D VR
	Q
	;
VR	;Check that value is non-null for record
	S DDSREQ=$P($G(^DIST(.404,DDS4B,40,DDO,4)),U)
	S:$P($G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"A")),U)]"" DDSREQ=$P(^("A"),U)
	;
	I DDSREQ'=1,$G(DV)'["R" Q
	;
	;Required WP fields (quit if mult)
	I DDP,$D(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M")) D:'^("M")  Q
	. I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"F")) S DDS4REF=$NA(^("D"))
	. E  S DDS4REF=$P(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M"),U,2),DDS4REF=U_$E(DDS4REF,1,$L(DDS4REF)-1)_")"
	. S (DDS4VAL,DDS4I)=0
	. F  S DDS4I=$O(@DDS4REF@(DDS4I)) Q:'DDS4I  I $G(@DDS4REF@(DDS4I,0))'?." " S DDS4VAL=1 Q
	. D:'DDS4VAL LDERR
	. K DDS4REF,DDS4I,DDS4VAL
	;
	I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"D"))="" D LDERR
	Q
	;
LDERR	;Call ^DIALOG to load error
	N P
	I $D(DDS4ERR)[0 S DDS4ERR=1 D BLD^DIALOG(3091)
	S P(1)=DDSPID,P(2)=DDSCAP,P(3)=""
	I $L(DDS4DA,",")>2 D
	. N Y,C
	. S P(3)=$P(@(@DDSREFT@(DDSPG,DDS4B,$G(DDS4PDA,DDS4DA),"GL")_+DDS4DA_",0)"),U)
	. Q:P(3)=""
	. S Y=P(3),C=$P(^DD(DDP,.01,0),U,2) D Y^DIQ S P(3)=Y
	. S P(3)="(Subrecord: "_P(3)_")"
	D BLD^DIALOG(3092,.P)
	Q
	;
PRNT	;
	S (DDSABT,DX,DY)=0,$X=0,$Y=0 X IOXY
	W $P(DDGLCLR,DDGLDEL,2)
	;
	I $G(DIERR) D
	. S DDSI=0
	. F  S DDSI=$O(^TMP("DIERR",$J,DDSI)) Q:'DDSI!DDSABT  D
	.. S DDSJ=0
	.. F  S DDSJ=$O(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ)) Q:'DDSJ!DDSABT  D
	... D:$G(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ))]"" WLIN(^(DDSJ))
	G:DDSABT PRNTEND
	;
	I $D(@DDSREFT@("MSG")) D
	. S DDSI=0
	. F  S DDSI=$O(@DDSREFT@("MSG",DDSI)) Q:'DDSI!DDSABT  D
	.. D:@DDSREFT@("MSG",DDSI)]"" WLIN(^(DDSI))
	;
	D EOP
	;
PRNTEND	W $P(DDGLCLR,DDGLDEL,2)
	K DDSABT,DDSI,DDSJ
	K @DDSREFT@("MSG"),^TMP("DIERR",$J)
	Q
	;
WLIN(DDSX)	;
	;Write a single line, wrap at word boundaries
	S DDSWIDTH=IOM-1
	F  Q:DDSX=""!DDSABT  D
	. F DDSSP=$L(DDSX," "):-1:1 I $L($P(DDSX," ",1,DDSSP))<DDSWIDTH D  Q
	.. I $Y+4>IOSL D EOP I 'Y S DDSABT=1 Q
	.. W !,$P(DDSX," ",1,DDSSP)
	.. S DDSX=$P(DDSX," ",DDSSP+1,999)
	K DDSWIDTH
	Q
EOP	;
	N X
	S DX=0,DY=IOSL-1 X IOXY
	R "Press RETURN to continue: ",X:DTIME
	S Y=X'[U&$T
	Q

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