source: IHS-VA_UTILITIES-XB/XBFDINFO.m@ 641

Last change on this file since 641 was 641, checked in by Sam Habiel, 15 years ago

Initial commit of XB, move away from sf.net.
Includes kids file and documentation.

File size: 2.2 KB
Line 
1XBFDINFO(FILE,FIELD,ROOT) ; IHS/ADC/GTH - RETURN FIELD INFORMATION ; [ 02/07/97 3:02 PM ]
2 ;;4.0;XB;;Jul 20, 2009;Build 2
3 ;
4 ; ATTENTION PROGRAMMERS: Use line label FLD() for entry.
5 ; Do not use the first line for entry.
6 ;
7 ; Given a file/subfile number, a field number, and an array
8 ; root, this routine will return information about the
9 ; specified field. The information will be returned as
10 ; subscripted variables from the root passed by the caller.
11 ;
12 ; The field information returned will be a subset of the
13 ; following:
14 ;
15 ; ROOT("NAME") = name of field
16 ; ROOT("NODE") = node in data global
17 ; ROOT("PIECE") = piece in node
18 ; ROOT("TYPE") = FileMan field type or "M" for multiple,
19 ; or "C" for computed
20 ; ROOT("SFILE") = subfile number if the field is a multiple
21 ; ROOT("PFILE") = file number of pointed to file
22 ; ROOT("PGBL") = gbl of pointed to file
23 ; ROOT("DINUM") = existance indicates DINUM pointer
24 ;
25 ; ROOT("VPFILE",file) = variable pointer prefix. 'file' is
26 ; pointed to file
27 ; ROOT("VPGBL",file) = variable pointer gbl of pointed to
28 ; file. 'file' is pointed to file
29 ;
30 ; Formal list:
31 ;
32 ; 1) FILE = file/subfile number (call by value)
33 ; 2) FIELD = field number (call by value)
34 ; 3) ROOT = array root (call by reference)
35 ;
36START ;
37 KILL ROOT
38 NEW W,X,Y,Z
39 Q:FILE'=+FILE
40 Q:FIELD'=+FIELD
41 Q:'$D(^DD(FILE,FIELD,0)) S X=^(0)
42 S ROOT("NAME")=$P(X,"^",1)
43 I $P(X,"^",2)["C" S ROOT("TYPE")="C" Q
44 S ROOT("NODE")=$S(FIELD=.001:"",1:$P($P(X,"^",4),";",1))
45 S ROOT("PIECE")=$S(FIELD=.001:"",1:$P($P(X,"^",4),";",2))
46 S Y=$P(X,"^",2)
47 S ROOT("TYPE")=$S(Y["F":"F",Y["C":"C",Y["D":"D",Y["K":"K",Y["N":"N",Y["P":"P",Y["S":"S",Y["V":"V",Y["K":"K",Y["W":"W",1:"?")
48 I +$P(X,"^",2) S ROOT("SFILE")=+$P(X,"^",2),ROOT("TYPE")="M" I 1
49 E S:Y["P" ROOT("PFILE")=+$P(Y,"P",2),ROOT("PGBL")=$P(X,"^",3),@($S($P(X,"^",5,99)["DINUM"&(FIELD=.01):"ROOT(""DINUM"")",1:"Z"))=""
50 I Y["V" F Z=0:0 S Z=$O(^DD(FILE,FIELD,"V","B",Z)) Q:Z'=+Z S W=$O(^(Z,"")),ROOT("VPFILE",Z)=$P(^DD(FILE,FIELD,"V",W,0),"^",4),ROOT("VPGBL",Z)=^DIC(Z,0,"GL")
51 Q
52 ;
53FLD(FILE,FIELD,ROOT) ;PEP - Return information about a field.
54 G START
55 ;
Note: See TracBrowser for help on using the repository browser.