Annotation of freem_fileman/DDS41.m, revision 1.1.1.1
1.1 snw 1: DDS41 ;SFISC/MKO-VERIFY DATA ;07:42 AM 25 Oct 1994
2: ;;21.0;VA FileMan;;Dec 28, 1994
3: ;Per VHA Directive 10-93-142, this routine should not be modified.
4: N DDO
5: K DDSERROR,DDS4DONE,DDS4ERR
6: S DDS4PG=DDSPG
7: ;
8: ;Set DA,DIE,DDP array to its original value
9: I $G(DDSPTB)_$G(DDSREP)]"" N DIE,DDP,DDSDA,DA,DDSDL D
10: . S DA=DDSDAORG,DDSDL=DDSDLORG,DDSDA=DA_","
11: . F DDSI=1:1:DDSDL S DA(DDSI)=DDSDAORG(DDSI),DDSDA=DDSDA_DA(DDSI)_","
12: . S DDP=$P($G(DDSFLORG),U),DIE=U_$P($G(DDSFLORG),U,2) S:DIE=U DIE=""
13: ;
14: D LDALL
15: I $G(DIERR) D G END
16: . N P
17: . S P(1)=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U),P(2)=$P($G(^(1)),U)
18: . S:P(2)="" P(2)="unnamed"
19: . D BLD^DIALOG(3041,.P),ERR^DDSMSG
20: . S DDS4ERR=1
21: ;
22: D LP
23: ;
24: S DDSPG=DDS4PG,DDS4VC=$G(^DIST(.403,+DDS,20))
25: I DDS4VC'?."^" K @DDSREFT@("MSG") X DDS4VC
26: I $G(@DDSREFT@("MSG"))>0!$G(DIERR) D PRNT
27: ;
28: END S Y='$D(DDSERROR)&'$G(DDS4ERR)
29: K DDS4B,DDS4DA,DDS4DONE,DDS4ERR,DDS4FLD,DDS4PG,DDS4TP
30: K DDS4VC,DDSCAP,DDSDD,DDSERROR,DDSI,DDSPID
31: K DDSREQ,DIERR,DV
32: Q
33: ;
34: LDALL ;Load all pages
35: S (DDSPG,DDS4PG1)=$O(^DIST(.403,+DDS,40,"B",$S($G(DDSPAGE)]"":DDSPAGE,1:1),""))
36: S Y=1
37: F D ^DDS1(DDSPG) Q:$G(DIERR) S DDSPG=$$NP^DDS5(.Y) Q:DDSPG=DDS4PG1!'Y
38: K DDS4PG1
39: Q
40: ;
41: LP ;Loop through all pages/blocks
42: S DX=0,DY=IOSL-1 X IOXY
43: W "Verifying ..."_$P(DDGLCLR,DDGLDEL)
44: ;
45: S DDSPG=0
46: F S DDSPG=$O(@DDSREFT@(DDSPG)) Q:'DDSPG D
47: . S DDS4B=0
48: . F S DDS4B=$O(@DDSREFT@(DDSPG,DDS4B)) Q:'DDS4B D
49: .. I '$D(DDS4DONE(DDS4B)),$P(@DDSREFS@(DDSPG,DDS4B),U,5)="e" D
50: ... S DDSPID=$S($P($G(^DIST(.403,+DDS,40,DDSPG,1)),U)]"":$P(^(1),U),1:"Page "_$P(^(0),U))
51: ... D VB
52: Q
53: ;
54: VB ;Loop through all fields on block
55: N DDP
56: S DDS4DONE(DDS4B)="",DDP=$P(^DIST(.404,DDS4B,0),U,2)
57: S DDO=0 F S DDO=$O(^DIST(.404,DDS4B,40,DDO)) Q:'DDO D VF
58: Q
59: ;
60: VF ;Check for required fields
61: Q:$D(^DIST(.404,DDS4B,40,DDO,0))[0 S DDS4TP=$P(^(0),U,3)
62: Q:DDS4TP=1 Q:DDS4TP=4
63: S DDSCAP=$P(^DIST(.404,DDS4B,40,DDO,0),U,2)_$S($P(^(0),U,4)]"":" ("_$P(^(0),U,4)_")",1:"")
64: ;
65: I DDS4TP=2 N DDP D
66: . S DDP=0,DDS4FLD=DDO_","_DDS4B
67: . K DV
68: ;
69: E D Q:DDS4FLD'=+$P(DDS4FLD,"E")!(DDS4FLD=.01)
70: . S DDS4FLD=$G(^DIST(.404,DDS4B,40,DDO,1))
71: . S DDSDD=$G(^DD(DDP,DDS4FLD,0)),DV=$P(DDSDD,U,2)
72: . S:DDSCAP="" DDSCAP=$S($G(^DD(DDP,DDS4FLD,.1))]"":^(.1),1:$P(DDSDD,U))
73: ;
74: S DDS4DA=" "
75: F S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4DA)) Q:DDS4DA="" D
76: . I $P(@DDSREFT@(DDSPG,DDS4B,DDS4DA),U,6)<2 D VR Q
77: . N DDS4PDA S DDS4PDA=DDS4DA N DDS4DA
78: . S DDS4DA=""
79: . F S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4PDA,"B",DDS4DA)) Q:'DDS4DA D VR
80: Q
81: ;
82: VR ;Check that value is non-null for record
83: S DDSREQ=$P($G(^DIST(.404,DDS4B,40,DDO,4)),U)
84: S:$P($G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"A")),U)]"" DDSREQ=$P(^("A"),U)
85: ;
86: I DDSREQ'=1,$G(DV)'["R" Q
87: ;
88: ;Required WP fields (quit if mult)
89: I DDP,$D(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M")) D:'^("M") Q
90: . I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"F")) S DDS4REF=$NA(^("D"))
91: . E S DDS4REF=$P(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M"),U,2),DDS4REF=U_$E(DDS4REF,1,$L(DDS4REF)-1)_")"
92: . S (DDS4VAL,DDS4I)=0
93: . F S DDS4I=$O(@DDS4REF@(DDS4I)) Q:'DDS4I I $G(@DDS4REF@(DDS4I,0))'?." " S DDS4VAL=1 Q
94: . D:'DDS4VAL LDERR
95: . K DDS4REF,DDS4I,DDS4VAL
96: ;
97: I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"D"))="" D LDERR
98: Q
99: ;
100: LDERR ;Call ^DIALOG to load error
101: N P
102: I $D(DDS4ERR)[0 S DDS4ERR=1 D BLD^DIALOG(3091)
103: S P(1)=DDSPID,P(2)=DDSCAP,P(3)=""
104: I $L(DDS4DA,",")>2 D
105: . N Y,C
106: . S P(3)=$P(@(@DDSREFT@(DDSPG,DDS4B,$G(DDS4PDA,DDS4DA),"GL")_+DDS4DA_",0)"),U)
107: . Q:P(3)=""
108: . S Y=P(3),C=$P(^DD(DDP,.01,0),U,2) D Y^DIQ S P(3)=Y
109: . S P(3)="(Subrecord: "_P(3)_")"
110: D BLD^DIALOG(3092,.P)
111: Q
112: ;
113: PRNT ;
114: S (DDSABT,DX,DY)=0,$X=0,$Y=0 X IOXY
115: W $P(DDGLCLR,DDGLDEL,2)
116: ;
117: I $G(DIERR) D
118: . S DDSI=0
119: . F S DDSI=$O(^TMP("DIERR",$J,DDSI)) Q:'DDSI!DDSABT D
120: .. S DDSJ=0
121: .. F S DDSJ=$O(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ)) Q:'DDSJ!DDSABT D
122: ... D:$G(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ))]"" WLIN(^(DDSJ))
123: G:DDSABT PRNTEND
124: ;
125: I $D(@DDSREFT@("MSG")) D
126: . S DDSI=0
127: . F S DDSI=$O(@DDSREFT@("MSG",DDSI)) Q:'DDSI!DDSABT D
128: .. D:@DDSREFT@("MSG",DDSI)]"" WLIN(^(DDSI))
129: ;
130: D EOP
131: ;
132: PRNTEND W $P(DDGLCLR,DDGLDEL,2)
133: K DDSABT,DDSI,DDSJ
134: K @DDSREFT@("MSG"),^TMP("DIERR",$J)
135: Q
136: ;
137: WLIN(DDSX) ;
138: ;Write a single line, wrap at word boundaries
139: S DDSWIDTH=IOM-1
140: F Q:DDSX=""!DDSABT D
141: . F DDSSP=$L(DDSX," "):-1:1 I $L($P(DDSX," ",1,DDSSP))<DDSWIDTH D Q
142: .. I $Y+4>IOSL D EOP I 'Y S DDSABT=1 Q
143: .. W !,$P(DDSX," ",1,DDSSP)
144: .. S DDSX=$P(DDSX," ",DDSSP+1,999)
145: K DDSWIDTH
146: Q
147: EOP ;
148: N X
149: S DX=0,DY=IOSL-1 X IOXY
150: R "Press RETURN to continue: ",X:DTIME
151: S Y=X'[U&$T
152: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>