[641] | 1 | XBFDINFO(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 | ;
|
---|
| 36 | START ;
|
---|
| 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 | ;
|
---|
| 53 | FLD(FILE,FIELD,ROOT) ;PEP - Return information about a field.
|
---|
| 54 | G START
|
---|
| 55 | ;
|
---|