1 | DIFROMSP ;SFISC/DCL-DIFROM SERVER POINTER LIST ;5/18/98 08:29
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | POINTERS(DIFRFILE,DIFRFLG,DIFRPTA) ;FILENUMBER, POINTER X-REF TARGET ARRAY ROOT
|
---|
6 | ;FILE, FLAGS, TARGET ARRAY
|
---|
7 | S DIFRFLG=$G(DIFRFLG)
|
---|
8 | N DIFRDDNS,DIFRALL
|
---|
9 | S DIFRALL=DIFRFLG["A"
|
---|
10 | D FP(DIFRFILE,"","DIFRDDNS") ;ALL DD#s FOR FILE IN DIFRDDNS array
|
---|
11 | S DIFRDDNS=0
|
---|
12 | F S DIFRDDNS=$O(DIFRDDNS(DIFRFILE,DIFRDDNS)) Q:DIFRDDNS'>0 D
|
---|
13 | .D P(DIFRDDNS,DIFRFLG,$NA(@DIFRPTA@("P",DIFRFILE))) ;set "P" x-refs in target array
|
---|
14 | .Q
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | FP(DIFRFILE,DIFRFLG,DIFRTA) ;FILENUMBER, TARGET ARRAY ROOT FOR SUB DD NRS
|
---|
18 | ;FILE, FLAGS, TARGET ARRAY
|
---|
19 | N DIFRFD,DIFRFE,DIFRFW,DIFRNM,DIFRX
|
---|
20 | S DIFRFW=$G(DIFRFLG)'["W"
|
---|
21 | F S @DIFRTA@(DIFRFILE,DIFRFILE)=$O(^DD(DIFRFILE,0,"NM",""))_" "_$S($D(^DIC(DIFRFILE,0)):"(File-top level)",1:"(sub-file)"),DIFRFE=0
|
---|
22 | E F S DIFRFE=$O(@DIFRTA@(DIFRFILE,DIFRFE)) Q:DIFRFE'>0 D
|
---|
23 | .S DIFRFD=0
|
---|
24 | .F S DIFRFD=$O(^DD(DIFRFE,"SB",DIFRFD)) Q:DIFRFD'>0 D
|
---|
25 | ..I DIFRFW,$P(^DD(DIFRFD,.01,0),"^",2)["W" Q
|
---|
26 | ..I DIFRFILE-DIFRFE!'$D(DIFRFA) S @DIFRTA@(DIFRFILE,DIFRFD)=$O(^DD(DIFRFD,0,"NM",""))_" (sub-file)"
|
---|
27 | ..Q
|
---|
28 | .Q
|
---|
29 | Q
|
---|
30 | ;
|
---|
31 | P(DIFRPDD,DIFRFLG,DIFRPTA) ;DIFRPDD=DD#,DIFRPTA=TARGET ARRAY BY VALUE TO SET "P" X-REF
|
---|
32 | ;FILE/SUB-DD#,FLAGS,TARGET_ARRAY
|
---|
33 | N X,Y,PN,PIDF,PFILE,DIFRALL
|
---|
34 | S DIFRFLG=$G(DIFRFLG),DIFRALL=DIFRFLG["A"
|
---|
35 | I $G(U)'="^" N U S U="^"
|
---|
36 | S X=$S(DIFRALL:0,1:.01)
|
---|
37 | F S X=$O(^DD(DIFRPDD,X)) Q:X'>0 I $D(^(X,0)),'$P(^(0),U,2),$P(^(0),U,2)["P" S Y=^(0) D
|
---|
38 | .I 'DIFRALL,$D(^DD(DIFRPDD,0,"IX",X)) Q
|
---|
39 | .S PN=0
|
---|
40 | .S @DIFRPTA@(DIFRPDD,X,PN)=U_$P(Y,U,3)
|
---|
41 | .F Q:$P($G(^DD(+$P($P(Y,U,2),"P",2),.01,0)),U,2)'["P" S Y=^(0) D
|
---|
42 | ..S PN=PN+1
|
---|
43 | ..S @DIFRPTA@(DIFRPDD,X,PN)=U_$P(Y,U,3)
|
---|
44 | ..Q
|
---|
45 | .S PIDF=0,PFILE=+$P($P(Y,U,2),"P",2)
|
---|
46 | .F S PIDF=$O(^DD(PFILE,0,"ID",PIDF)) Q:PIDF'>0 D
|
---|
47 | ..S @DIFRPTA@(DIFRPDD,X,PN,"ID",PIDF)=""
|
---|
48 | ..Q
|
---|
49 | .;HERE FIND ALL REQUIRED ID OR ALL ID FOR POINTED TOO FILE
|
---|
50 | .;AND LIST IN @DIFRPTA@(DIFRPDD,X,PN,"ID",FILEDNUMBER)
|
---|
51 | .Q
|
---|
52 | Q
|
---|
53 | ;
|
---|
54 | PGL(DIFRFILE,DIFRFLG,DIFRTA) ; RETURN GL NODES FOR POINTERS IN TARGET ARRAY
|
---|
55 | ;FILE,FLAGS,TARGET ARRAY
|
---|
56 | N DIFR,DIFRD,DIFRF,DIFRPGL,DIFRX,DIKEY
|
---|
57 | Q:'$D(^DD(DIFRFILE))
|
---|
58 | Q:$G(DIFRTA)']""
|
---|
59 | D FSF(DIFRFILE,"","DIFRPGL")
|
---|
60 | S DIKEY=$O(^DD("KEY","AP",DIFRFILE,"P",0))
|
---|
61 | S (DIFR,DIFRD)=0
|
---|
62 | F S DIFRD=$O(DIFRPGL(DIFRFILE,DIFRD)) Q:DIFRD'>0 D
|
---|
63 | .S DIFRF=.01 ;Dont select .01 fields
|
---|
64 | .F S DIFRF=$O(^DD(DIFRD,DIFRF)) Q:DIFRF'>0 I $D(^(DIFRF,0)) S DIFRX=^(0) D
|
---|
65 | ..Q:$P(DIFRX,"^",2) ;Don't select Multiple/WP fields
|
---|
66 | ..I $D(^DD(DIFRD,0,"ID",DIFRF)) Q ;Don't select IDENTIFIER fields
|
---|
67 | ..I DIKEY,$O(^DD("KEY",DIKEY,2,"BB",DIFRF,DIFRD,0)) Q ;Don't select fields in Primary KEY
|
---|
68 | ..I $P(DIFRX,"^",2)["P"!($P(DIFRX,"^",2)["V") S @DIFRTA@("PGL",DIFRD,$$Q^DIQGU($P($P(DIFRX,"^",4),";")),$P($P(DIFRX,"^",4),";",2),DIFRF)=DIFRX Q
|
---|
69 | ..;SEND WHOLD NODE NOT $P(DIFRX,"^",2) Q
|
---|
70 | ..Q
|
---|
71 | .Q
|
---|
72 | Q
|
---|
73 | TP(DIFRFILE,DIFRFLG,DIFRTA) ; $$ Extrinsic Function - Test for Pointers OR Variable Pointers
|
---|
74 | ;Returns 1 or 0, if pointers in file
|
---|
75 | ;FILE,FLAGS,TARGET ARRAY
|
---|
76 | ;If target array exist the entire list of fields being exported will be
|
---|
77 | ;in array
|
---|
78 | N DIFR,DIFRTMP,DIFRD,DIFRF,DIFRX
|
---|
79 | S DIFRX=$G(DIFRTA)]""
|
---|
80 | D FSF(DIFRFILE,"","DIFRTMP")
|
---|
81 | S (DIFR,DIFRD)=0
|
---|
82 | F S DIFRD=$O(DIFRTMP(DIFRFILE,DIFRD)) Q:DIFRD'>0 D Q:DIFR
|
---|
83 | .S DIFRF=.01 ; Do not include .01 fields
|
---|
84 | .F S DIFRF=$O(^DD(DIFRD,DIFRF)) Q:DIFRF'>0 I $D(^(DIFRF,0)),'$P(^(0),"^",2),($P(^(0),"^",2)["P"!($P(^(0),"^",2)["V")),'$D(^DD(DIFRD,0,"ID",DIFRF)) S:'DIFRX DIFR=1 Q:DIFR D
|
---|
85 | ..S:DIFRX @DIFRTA@(DIFRD,DIFRF)=$S($P(^DD(DIFRD,DIFRF,0),"^",2)["P":"P",1:"V")
|
---|
86 | ..Q
|
---|
87 | .Q
|
---|
88 | Q:DIFRX $D(@DIFRTA)>9
|
---|
89 | Q DIFR
|
---|
90 | ;
|
---|
91 | TL(DIFRFILE,DIFRFLG,DIFRSA) ; $$ Extrinsic Function - Test for local fields
|
---|
92 | ;FILE,FLAGS,SOURCE_ARRAY - compares local DD with Transport DD
|
---|
93 | ;Returns 1 or 0, if local changes exist
|
---|
94 | ;RUN THIS AFTER DD IS INSTALLED ON TARGET SITE
|
---|
95 | N DIFR,DIFRD,DIFRF,DIFRTMP
|
---|
96 | D FSF(DIFRFILE,"","DIFRTMP")
|
---|
97 | S (DIFR,DIFRD)=0
|
---|
98 | F S DIFRD=$O(DIFRTMP(DIFRFILE,DIFRD)) Q:DIFRD'>0 D Q:DIFR
|
---|
99 | .S DIFRF=0
|
---|
100 | .F S DIFRF=$O(^DD(DIFRD,DIFRF)) Q:DIFRF'>0 I $D(^(DIFRF,0)),'$D(@DIFRSA@("^DD",DIFRFILE,DIFRD,DIFRF,0)) S DIFR=1 Q
|
---|
101 | .Q
|
---|
102 | Q DIFR
|
---|
103 | ;
|
---|
104 | FSF(DIFRFILE,DIFRFLG,DIFRTA) ;File-Sub-File List
|
---|
105 | ;FILE, FLAGS, TARGET ARRAY
|
---|
106 | N DIFRFD,DIFRFE,DIFRFW,DIFRNM,DIFRX
|
---|
107 | S DIFRFW=$G(DIFRFLG)'["W"
|
---|
108 | S @DIFRTA@(DIFRFILE,DIFRFILE)="",DIFRFE=0
|
---|
109 | F S DIFRFE=$O(@DIFRTA@(DIFRFILE,DIFRFE)) Q:DIFRFE'>0 D
|
---|
110 | .S DIFRFD=0
|
---|
111 | .F S DIFRFD=$O(^DD(DIFRFE,"SB",DIFRFD)) Q:DIFRFD'>0 D
|
---|
112 | ..I DIFRFW,$P(^DD(DIFRFD,.01,0),"^",2)["W" Q
|
---|
113 | ..I DIFRFILE-DIFRFE!'$D(DIFRFA) S @DIFRTA@(DIFRFILE,DIFRFD)=""
|
---|
114 | ..Q
|
---|
115 | .Q
|
---|
116 | Q
|
---|