source: FOIAVistA/trunk/r/VA_FILEMAN-ARJT-DI-DD-DM-DT-%DT-%RCR/DIFROMSP.m@ 767

Last change on this file since 767 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 4.4 KB
Line 
1DIFROMSP ;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 ;
5POINTERS(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 ;
17FP(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"
21F S @DIFRTA@(DIFRFILE,DIFRFILE)=$O(^DD(DIFRFILE,0,"NM",""))_" "_$S($D(^DIC(DIFRFILE,0)):"(File-top level)",1:"(sub-file)"),DIFRFE=0
22E 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 ;
31P(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 ;
54PGL(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
73TP(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 ;
91TL(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 ;
104FSF(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
Note: See TracBrowser for help on using the repository browser.