1 | DIDU1 ;SEA/TOAD-VA FileMan: DD Tools, IENS Check ;10:39 AM 8 Jul 1998
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | IEN(DIENS,DIFLAGS) ;
|
---|
6 | ;ENTRY POINT--return whether the IEN String is valid
|
---|
7 | ;extrinsic function, all passed by value
|
---|
8 | I $G(DIENS)="" Q 0
|
---|
9 | I $G(DIFLAGS,"N")'="N" Q 0
|
---|
10 | S DIFLAGS=$G(DIFLAGS)
|
---|
11 | N DICHAR,DICRSR,DIPIECE,DISEQ,DIOUT,DIVALID
|
---|
12 | S DIPIECE="",DISEQ="",DIOUT=0,DIVALID=1
|
---|
13 | F DICRSR=1:1 D I DIOUT Q
|
---|
14 | .S DIPIECE=$P(DIENS,",",DICRSR)
|
---|
15 | .I DIPIECE="" D Q
|
---|
16 | ..I $P(DIENS,",",DICRSR,999)="" S DIOUT=1 Q
|
---|
17 | I1 ..I DICRSR=1 Q
|
---|
18 | ..S DIOUT=1,DIVALID=0
|
---|
19 | ..Q
|
---|
20 | .I +DIPIECE=DIPIECE S DIVALID=DIPIECE>0,DIOUT='DIVALID Q
|
---|
21 | .I DIFLAGS["N" S DIVALID=0,DIOUT=1 Q
|
---|
22 | .S DICHAR=$E(DIPIECE,1,2) I DICHAR'="?+" S DICHAR=$E(DICHAR)
|
---|
23 | .I DICHAR'="+",DICHAR'="?",DICHAR'="?+" S DIOUT=1,DIVALID=0 Q
|
---|
24 | .I $P(DIPIECE,DICHAR,2,9999)?1N.N D Q
|
---|
25 | ..S DISEQ=$P(DIPIECE,DICHAR,2,999)
|
---|
26 | ..S DIOUT=+DISEQ'=DISEQ!$D(DISEQ(DISEQ)),DIVALID='DIOUT Q
|
---|
27 | I2 .S DIOUT=1,DIVALID=0
|
---|
28 | .Q
|
---|
29 | Q $E(DIENS,$L(DIENS))=","&DIVALID
|
---|
30 | ;
|
---|
31 | PROOT(DIFILE,DIENS) ;
|
---|
32 | ;ENTRY POINT--return the global root of a subfile's parent
|
---|
33 | ;extrinsic function, all passed by value
|
---|
34 | Q $$ROOT^DILFD($$PARENT(DIFILE),$P(DIENS,",",2,999),1)
|
---|
35 | ;
|
---|
36 | PARENT(DIFILE) ;
|
---|
37 | ;ENTRY POINT--return the file number of a subfile's parent
|
---|
38 | ;extrinsic function, all passed by value
|
---|
39 | Q $G(^DD(DIFILE,0,"UP"))
|
---|
40 | ;
|
---|
41 | PARENTS(DIFILE,DIRULE) ;
|
---|
42 | ;IEN--return the file's parents
|
---|
43 | ;procedure, passed by ref
|
---|
44 | N DIBACK,DIOUT,DIMOM,DITEMP
|
---|
45 | S DIOUT=0,DIMOM=DIFILE
|
---|
46 | S DITEMP=DIFILE K DIFILE S (DIFILE,DIFILE("C"))=DITEMP
|
---|
47 | S DIFILE("L")=$$LEVEL(DIFILE)
|
---|
48 | S DIFILE(1)=DIFILE
|
---|
49 | I '$D(DIRULE("L",DIFILE)) S DIRULE("L",DIFILE)=DIFILE("L")
|
---|
50 | F DIBACK=2:1 D I DIOUT Q
|
---|
51 | .S DITEMP=DIMOM
|
---|
52 | .S DIMOM=$G(DIRULE("UP",DITEMP))
|
---|
53 | PA1 .I DIMOM="" D I DIOUT Q
|
---|
54 | ..S DIMOM=$G(^DD(DITEMP,0,"UP"))
|
---|
55 | ..I DIMOM="" S DIOUT=1 Q
|
---|
56 | ..S DIRULE("UP",DITEMP)=DIMOM
|
---|
57 | ..I '$D(DIRULE("L",DIMOM)) S DIRULE("L",DIMOM)=DIFILE("L")-DIBACK+1
|
---|
58 | ..Q
|
---|
59 | .S DIFILE(DIBACK)=DIMOM
|
---|
60 | .Q
|
---|
61 | Q
|
---|
62 | ;
|
---|
63 | LEVEL(DIFILE) ;
|
---|
64 | ;IEN--return the file's level (# parents +1)
|
---|
65 | ;function, pass by value
|
---|
66 | N DIMOM
|
---|
67 | I '$G(DIFILE) Q 0
|
---|
68 | S DIMOM=$G(^DD(DIFILE,0,"UP"))
|
---|
69 | I DIMOM="" Q 1
|
---|
70 | Q $$LEVEL(DIMOM)+1
|
---|
71 | ;
|
---|