1 | DIFROMSD ;SFISC/DCL-DIFROM SERVER DD LIST(KIDS/BUILD FILE) ;08:33 AM 6 Sep 1994
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | DD(DIFRFILE,DIFRFLG,DIFRTA) ;FILENUMBER, TARGET ARRAY ROOT FOR SUB DD NRS
|
---|
6 | ;FILE, FLAGS, TARGET ARRAY
|
---|
7 | ;FILE = File number
|
---|
8 | ;FLAG = "W" Include Word Processing DD numbers
|
---|
9 | ;DIFRTA = Target Array in closed array root format where informaiton
|
---|
10 | ; is returned.
|
---|
11 | ; Returns a list of sub DD numbers. A flag allows wp DD
|
---|
12 | ; numbers to also be returned.
|
---|
13 | N DIFRFD,DIFRFE,DIFRFW,DIFRNM,DIFRX
|
---|
14 | S DIFRFW=$G(DIFRFLG)'["W"
|
---|
15 | F S @DIFRTA@(DIFRFILE,DIFRFILE)=$O(^DD(DIFRFILE,0,"NM",""))_" "_$S($D(^DIC(DIFRFILE,0)):"(File-top level)",1:"(sub-file)"),DIFRFE=0
|
---|
16 | E F S DIFRFE=$O(@DIFRTA@(DIFRFILE,DIFRFE)) Q:DIFRFE'>0 D
|
---|
17 | .S DIFRFD=0
|
---|
18 | .F S DIFRFD=$O(^DD(DIFRFE,"SB",DIFRFD)) Q:DIFRFD'>0 D
|
---|
19 | ..I DIFRFW,$P(^DD(DIFRFD,.01,0),"^",2)["W" Q
|
---|
20 | ..I DIFRFILE-DIFRFE!'$D(DIFRFA) S @DIFRTA@(DIFRFILE,DIFRFD)=$O(^DD(DIFRFD,0,"NM",""))_" (sub-file)"
|
---|
21 | ..Q
|
---|
22 | .Q
|
---|
23 | Q
|
---|
24 | ;
|
---|
25 | DDIOLDD(DIFRFILE,DIFRFLG) ;
|
---|
26 | ;FILE,FLAGS
|
---|
27 | ;FILE = File number
|
---|
28 | ;FLAGS = None
|
---|
29 | ; Returns a list of all the valid DD numbers within a file
|
---|
30 | ; via a call to DDIOL.
|
---|
31 | N I,X,Y
|
---|
32 | K ^TMP("DIFROMSP",$J)
|
---|
33 | D DD(DIFRFILE,"","^TMP(""DIFROMSP"",$J)")
|
---|
34 | S (I,X)=0 F S I=$O(^TMP("DIFROMSP",$J,DIFRFILE,I)) Q:I'>0 S Y=^(I),X=X+1,^TMP("DIFROMSP",$J,"DDIOL",X,0)=I_$J("",(20-$L(I)))_Y
|
---|
35 | D EN^DDIOL("","^TMP(""DIFROMSP"",$J,""DDIOL"")")
|
---|
36 | K ^TMP("DIFROMSP",$J)
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | CHKDD(DIFRFILE,DIFRDD,DIFRFLG) ; $$ EXTRINSIC FUNCTION $$
|
---|
40 | ;Extrinsic; Pass file and DD numbers returns 1 if OK
|
---|
41 | ; and 0 if not DD not part of File
|
---|
42 | ;FILE,DD#
|
---|
43 | ;FILE = File number
|
---|
44 | ;DD# = File or sub-file number.
|
---|
45 | ; Used to determine if
|
---|
46 | ; the value in DD# is valid for FILE.
|
---|
47 | ;FLAGS = "N"umber_"^"_"N"ame of field returned
|
---|
48 | ; Default returns a 1 (true) or 0 (false).
|
---|
49 | Q:$G(DIFRDD)="" 0
|
---|
50 | Q:$G(DIFRFILE)="" 0
|
---|
51 | N DIFRARAY,N
|
---|
52 | S N=$G(DIFRFLG)["N"
|
---|
53 | D DD(DIFRFILE,"","DIFRARAY")
|
---|
54 | I $D(DIFRARAY(DIFRFILE,DIFRDD)) Q:N DIFRDD_"^"_DIFRARAY(DIFRFILE,DIFRDD) Q 1
|
---|
55 | Q 0
|
---|
56 | ;
|
---|
57 | DDIOLFLD(DIFRDD,DIFRFLG) ;
|
---|
58 | ;FILE/SUB_FILE,FLAGS
|
---|
59 | ;FILE = File or sub-file number
|
---|
60 | ;FLAGS = "M"ultiple fields excluded
|
---|
61 | ; "W"ord processing fields excluded
|
---|
62 | ; Returns a list of valid field numbers within a file or
|
---|
63 | ; sub-file via a call to DDIOL.
|
---|
64 | N I,M,W,X,Y,Z
|
---|
65 | S M=$G(DIFRFLG)["M",W=$G(DIFRFLG)["W"
|
---|
66 | K ^TMP("DIFROMSP",$J)
|
---|
67 | S (I,X)=0 F S X=$O(^DD(DIFRDD,X)) Q:X'>0 S Y=$G(^(X,0)) D
|
---|
68 | .I $P(Y,"^",2) D Q:Y=""
|
---|
69 | ..S Z=$P(^DD(+$P(Y,"^",2),.01,0),"^",2)
|
---|
70 | ..I M,Z'["W" S Y="" Q
|
---|
71 | ..I W,Z["W" S Y="" Q
|
---|
72 | ..S $P(Y,"^")=$P(Y,"^")_$S(Z["W":" (word-processing)",1:" (multiple)")
|
---|
73 | ..Q
|
---|
74 | .S I=I+1,^TMP("DIFROMSP",$J,I,0)=X_$J("",(12-$L(X)))_$P(Y,"^")
|
---|
75 | D EN^DDIOL("","^TMP(""DIFROMSP"",$J)")
|
---|
76 | K ^TMP("DIFROMSP",$J)
|
---|
77 | Q
|
---|
78 | ;
|
---|
79 | FLDCHK(DIFRDD,DIFRFLD,DIFRFLG) ; $$ EXTRINSIC FUNCTION $$
|
---|
80 | ;Check if field exist; return 1/FIELD#_NAME, true, or 0, false.
|
---|
81 | ;FILE/SUB_FILE,FIELD,FLAGS
|
---|
82 | ;FILE/SUB_FILE = File or sub-file number
|
---|
83 | ;FIELD = Field number
|
---|
84 | ; If FIELD is valid, returns 1; Otherwise 0 is returned.
|
---|
85 | ;FLAGS = "M"ultiple fields excluded
|
---|
86 | ; "W"ord processing fields excluded
|
---|
87 | ; "N"umber_"^"_"N"ame of field returned.
|
---|
88 | ; Default is to return 1 or 0.
|
---|
89 | ;
|
---|
90 | Q:$G(DIFRDD)="" 0
|
---|
91 | Q:$G(DIFRFLD)="" 0
|
---|
92 | N M,N,W,Z
|
---|
93 | S M=$G(DIFRFLG)["M",W=$G(DIFRFLG)["W",N=$G(DIFRFLG)["N"
|
---|
94 | I $P($G(^DD(DIFRDD,DIFRFLD,0)),"^",2) S Z=$P(^DD(+$P(^(0),"^",2),.01,0),"^",2) D Q:N $S(Z:DIFRFLD_"^"_$P(^DD(DIFRDD,DIFRFLD,0),"^"),1:Z) Q Z
|
---|
95 | .I M,Z'["W" S Z=0 Q
|
---|
96 | .I W,Z["W" S Z=0 Q
|
---|
97 | .S Z=1
|
---|
98 | .Q
|
---|
99 | I $D(^DD(DIFRDD,DIFRFLD,0))#2 Q:N DIFRFLD_"^"_$P(^(0),"^") Q 1
|
---|
100 | Q 0
|
---|