1 | DDUCHK2 ;SFISC/RWF/SO-CHECK DD (FIELDS) ;11:46 AM 5 Mar 2004
|
---|
2 | ;;22.0;VA FileMan;**100,130**;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | CHK6 ;W !?5,"Checking FIELDs"
|
---|
5 | F DDUCFE=0:0 S DDUCFE=+$O(^DD(DDUCFI,DDUCFE)) Q:DDUCFE'>0 D FIELD Q:$D(DIRUT) D FIVE,DXREF^DDUCHK3,XREF^DDUCHK3,COMP^DDUCHK3
|
---|
6 | ;D CHKSB,CHKGL
|
---|
7 | Q
|
---|
8 | FIELD ;W "."
|
---|
9 | I $D(^DD(DDUCFI,DDUCFE,0))[0 W !?5,"*Field: ",DDUCFE," is missing its zero node." Q ;22*100,22*130
|
---|
10 | S DDUCX=^DD(DDUCFI,DDUCFE,0),DDUCX2=$P(DDUCX,U,2),DDUCX4=$P(DDUCX,U,4),DDUCXN=$P(DDUCX,U)
|
---|
11 | I $P(DDUCX,U,5,999)["$N(",$P(DDUCX,U,5,999)'["$$N(" W !?5,"*Field: ",DDUCFE,"'s Input Transform contains $Next."
|
---|
12 | ;I DDUCX2["F",DDUCX4[";E1",$S($D(^DD(DDUCFI,DDUCFE,9)):^(9),1:"")'="@" D WHO W "doesn't have the correct protection for a field with executable code." I DDUCFIX S ^DD(DDUCFI,DDUCFE,9)="@" W !?10,"^DD(",DDUCFI,",",DDUCFE,",9) = ""@"" was set."
|
---|
13 | D @$S(+DDUCX2:"MULT",DDUCX2["P":"PT",DDUCX2["V":"VP",1:"Q") Q
|
---|
14 | Q
|
---|
15 | FIVE K DDUCXX F DDUCY=0:0 S DDUCY=$O(^DD(DDUCFI,DDUCFE,5,DDUCY)) Q:DDUCY'>0 S DDUCX=^(DDUCY,0) I $D(^DD(+DDUCX,+$P(DDUCX,U,2),1,+$P(DDUCX,U,3),0))#2 S DDUCXX(DDUCX)=""
|
---|
16 | Q:'DDUCFIX
|
---|
17 | K ^DD(DDUCFI,DDUCFE,5)
|
---|
18 | S DDUCX="" F DDUCY=1:1 S DDUCX=$O(DDUCXX(DDUCX)) Q:DDUCX="" S ^DD(DDUCFI,DDUCFE,5,DDUCY,0)=DDUCX
|
---|
19 | Q
|
---|
20 | VP F DDUCY=0:0 S DDUCY=$O(^DD(DDUCFI,DDUCFE,"V",DDUCY)) Q:DDUCY'>0 S DDUCRFI=$S($D(^DD(DDUCFI,DDUCFE,"V",DDUCY,0)):^(0),1:"") I DDUCRFI D PT1
|
---|
21 | Q
|
---|
22 | PT N DDUERR S DDUCRFI=+$P(DDUCX2,"P",2),DDUERR=0 D Q:DDUERR
|
---|
23 | . I $D(^DD(DDUCRFI,0))[0 W !?5,"*Field: ",DDUCFE," (",DDUCXN,") points to missing file: ",DDUCRFI S DDUERR=1 Q
|
---|
24 | . N DDUCGL,DDUCNA,DDUCHDR
|
---|
25 | . S DDUCGL=$G(^DIC(DDUCRFI,0,"GL"))
|
---|
26 | . I DDUCGL="" W !?5,"*Field: ",DDUCFE," (",DDUCXN,") points to File: "_DDUCRFI_", is missing file's ""GL"" (Global Location) node." S DDUERR=1 Q
|
---|
27 | . S DDUCHDR=DDUCGL_"0)",DDUCHDR=$G(@DDUCHDR)
|
---|
28 | . I DDUCHDR="" W !?5,"*Field: ",DDUCFE," (",DDUCXN,") points to File: "_DDUCRFI_", missing File header node." S DDUERR=1
|
---|
29 | . Q
|
---|
30 | PT1 I $D(^DD(+DDUCRFI,0,"PT",DDUCFI,DDUCFE))[0 D WHO W "is missing its 'PT' node in the pointed-to-file." I DDUCFIX S ^DD(+DDUCRFI,0,"PT",DDUCFI,DDUCFE)="" W !?10,"^DD(",+DDUCRFI,",0,""PT"",",DDUCFI,",",DDUCFE,") = """" was set."
|
---|
31 | Q Q ;QUIT TAG
|
---|
32 | MULT ;Work subfile
|
---|
33 | D PAGE^DDUCHK Q:$D(DIRUT)
|
---|
34 | I $D(^DD(+DDUCX2,0))[0 W !?5,"*Field: ",DDUCFE," (",DDUCXN,") missing subfile: ",+DDUCX2 Q
|
---|
35 | S DDUCUP=$S($D(^DD(+DDUCX2,0,"UP")):^("UP"),1:"") I DDUCUP'=DDUCFI D WHO W "Bad 'UP' pointer in subfile #",+DDUCX2 I DDUCFIX S ^DD(+DDUCX2,0,"UP")=DDUCFI W !?10,"^DD(",+DDUCX2,",0,""UP"") = ",DDUCFI," was set."
|
---|
36 | D PUSH S DDUCFI=+DDUCX2 W !?3,"Checking subfile ",DDUCFI D CHK^DDUCHK,POP W !?3,"Returning to ",$S('DDUCSTK:"main ",1:"sub"),"file",$S('DDUCSTK:" "_DDUCFILE_".",1:" "_DDUCFI)
|
---|
37 | Q
|
---|
38 | PUSH S DDUCSTK=DDUCSTK+1,DDUCSTK(DDUCSTK,1)=DDUCFI,DDUCSTK(DDUCSTK,2)=DDUCFE Q
|
---|
39 | POP S DDUCFI=DDUCSTK(DDUCSTK,1),DDUCFE=DDUCSTK(DDUCSTK,2),DDUCSTK=DDUCSTK-1 Q
|
---|
40 | WHO W !?8,"Field: ",DDUCFE," (",DDUCXN,") " Q
|
---|
41 | ;
|
---|
42 | CHKSB ;Check for duplicate "SB" x-refs ;22*130
|
---|
43 | N DDUCSB
|
---|
44 | S DDUCSB=0
|
---|
45 | F S DDUCSB=+$O(^DD(DDUCFI,"SB",DDUCSB)) Q:'DDUCSB D
|
---|
46 | . N DDUCFE,DDUCSAV,DDUNFE
|
---|
47 | . S DDUCFE=0
|
---|
48 | . F S DDUCFE=+$O(^DD(DDUCFI,"SB",DDUCSB,DDUCFE)) Q:'DDUCFE D CHKSBA I '$D(DDUNFE),$O(^DD(DDUCFI,"SB",DDUCSB,DDUCFE)) D
|
---|
49 | .. N DDUCFE1,DDUCX
|
---|
50 | .. ;Is the TYPE "WP"?
|
---|
51 | .. S DDUCX=$O(^DD(DDUCFI,"SB",DDUCSB,DDUCFE)) I $D(^DD(DDUCFI,DDUCX,0)),$P(^DD(DDUCFI,DDUCX,0),U,4)["WP" Q
|
---|
52 | .. S DDUCSAV(DDUCFE)=""
|
---|
53 | .. S DDUCFE1=DDUCFE
|
---|
54 | .. F S DDUCFE1=+$O(^DD(DDUCFI,"SB",DDUCSB,DDUCFE1)) Q:'DDUCFE1 S DDUCSAV(DDUCFE1)=""
|
---|
55 | . N X1,X2
|
---|
56 | . S X1=0
|
---|
57 | . F S X1=$O(DDUCSAV(X1)) Q:'X1 D
|
---|
58 | .. I '$D(X2) W !?5,"*Duplicate Fields represent Sub-file: "_DDUCSB,!?7 S X2=1
|
---|
59 | .. W "field: "_X1_"; "
|
---|
60 | Q
|
---|
61 | ;
|
---|
62 | CHKSBA ;Check if Feidl exists
|
---|
63 | I '$D(^DD(DDUCFI,DDUCFE,0))#2 W !?7,"*Field: "_DDUCFE_", File: "_DDUCFI_", ""SB"" subscript for subfile: "_DDUCSB_" is missing." S DDUNFE=1 Q
|
---|
64 | Q
|
---|
65 | ;
|
---|
66 | CHKGL ;Check for duplicate "GL" nodes ;22*130
|
---|
67 | N DDUCN
|
---|
68 | S DDUCN=""
|
---|
69 | F S DDUCN=$O(^DD(DDUCFI,"GL",DDUCN)) Q:DDUCN="" D
|
---|
70 | . N DDUCP
|
---|
71 | . S DDUCP=0
|
---|
72 | . F S DDUCP=+$O(^DD(DDUCFI,"GL",DDUCN,DDUCP)) Q:'DDUCP D
|
---|
73 | .. N DDUCFE2,DDUCSAV
|
---|
74 | .. S DDUCFE2=0
|
---|
75 | .. F S DDUCFE2=+$O(^DD(DDUCFI,"GL",DDUCN,DDUCP,DDUCFE2)) Q:'DDUCFE2 I $O(^DD(DDUCFI,"GL",DDUCN,DDUCP,DDUCFE2)) D
|
---|
76 | ... S DDUCSAV(DDUCN_";"_DDUCP,DDUCFE2)=""
|
---|
77 | ... N X
|
---|
78 | ... S X=0
|
---|
79 | ... S X=$O(^DD(DDUCFI,"GL",DDUCN,DDUCP,DDUCFE2)) Q:'X S DDUCSAV(DDUCN_";"_DDUCP,X)=""
|
---|
80 | .. N X1,X2
|
---|
81 | .. S X1="" ;Global Location
|
---|
82 | .. F S X1=$O(DDUCSAV(X1)) Q:X1="" D
|
---|
83 | ... I '$D(X2) W !?5,"*Duplication at global location subscript: "_$P(X1,";")_", piece: "_$P(X1,";",2),!?9 S X2=1
|
---|
84 | ... N X3
|
---|
85 | ... S X3=0 ;Field #
|
---|
86 | ... F S X3=$O(DDUCSAV(X1,X3)) Q:'X3 W "field: "_X3_"; "
|
---|
87 | Q
|
---|