Annotation of freem_fileman/DICU1.m, revision 1.1
1.1 ! snw 1: DICU1 ;SEA/TOAD-VA FileMan: Lookup Tools, Get IDs ;11/4/94 08:33 ;
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4:
! 5: IDENTS(DIFILE,DIFIELD,DIROOT,DIDS,DIWRITE,DIDENT)
! 6: ; ENTRY POINT--return array of identifiers and code to build them
! 7: ; proc, DIDENT by reference
! 8: N DICODE,DICRSR,DIDEF,DIEFROM,DIETO
! 9: N DINODE,DIOUTI,DIPIECE,DISTORE,DITYPE,DIUSEKEY
! 10: S DIUSEKEY=DIFIELD'=.01!(DIFILE'=$G(DIFILE("INDEX"),DIFILE))
! 11: S DIDENT=DIUSEKEY*.01
! 12: I DIDS'="" S DICRSR=1
! 13: F D Q:DIDENT=""!$G(DIERR)
! 14: . I 'DIUSEKEY D
! 15: . . I DIDS'="" S DIDENT=$P(DIDS,";",DICRSR),DICRSR=DICRSR+1 Q
! 16: . . S DIDENT=$O(^DD(DIFILE,0,"ID",DIDENT)) Q
! 17: . I DIUSEKEY S DIUSEKEY=0
! 18: . I DIDENT="" S DIOUTI=1 D Q:DIOUTI
! 19: . . Q:DIDS=""
! 20: . . S DIDS=""
! 21: . . S DIDENT=$O(^DD(DIFILE,0,"ID"," "),-1),DIDENT=$O(^(DIDENT))
! 22: . . S DIOUTI=DIDENT=""
! 23: . . Q
! 24: . I DIDS="",DIFIELD=DIDENT,DIFILE=DIFILE("INDEX") Q
! 25: IDFIELD .
! 26: . I DIDENT D Q:$G(DIERR)
! 27: . . S DINODE=$G(^DD(DIFILE,0,"ID",DIDENT))
! 28: . . I DIDS="",DINODE="W """"" Q
! 29: . . D GET(DIFILE,DIDENT,.DIDEF,.DICODE)
! 30: . . Q:$G(DIERR)
! 31: . . S DITYPE=$P(DIDEF,U,2)
! 32: . . I DIDEF="" Q
! 33: . . S DIDENT(DIDENT)=DICODE
! 34: . . I DITYPE["D" S DITYPE="D"
! 35: . . E I DITYPE["S" S DITYPE="S"
! 36: . . S DIDENT(DIDENT,"TYPE")=DITYPE
! 37: . . I DITYPE["S" S DIDENT(DIDENT,"CODE")=";"_$P(DIDEF,U,3)
! 38: . . Q
! 39: IDWRITE .
! 40: . E D
! 41: . . S DICODE=$G(^DD(DIFILE,0,"ID",DIDENT))
! 42: . . I DICODE'="" S DIDENT(DIDENT)="N DIMSG "_DICODE
! 43: . . Q
! 44: . Q
! 45: Q:$G(DIERR)
! 46: I DIWRITE'="" S DIDENT("ZZZ ID")="N DIMSG "_DIWRITE
! 47: Q
! 48:
! 49: GET(DIFILE,DIFIELD,DIDEF,DICODE)
! 50: N DINODE,DIPIECE,DISTORE,DIEFROM,DIETO
! 51: I DIFIELD=.001 S DICODE="DIEN",DIDEF="" Q
! 52: S DIDEF=$G(^DD(DIFILE,DIFIELD,0))
! 53: I DIDEF="" D ERR(501,DIFILE,"","",DIFIELD) Q
! 54:
! 55: G1 N DITYPE S DITYPE=$P(DIDEF,U,2)
! 56: I DITYPE["C"!DITYPE D Q
! 57: . I DITYPE["C" S DITYPE="Computed"
! 58: . E D
! 59: . . I $P($G(^DD(+DITYPE,.01,0)),U,2)["W" S DITYPE="Word-processing"
! 60: . . E S DITYPE="Multiple"
! 61: . D ERR(520,DIFILE,"",DIFIELD,DITYPE)
! 62:
! 63: G2 S DISTORE=$P(DIDEF,U,4)
! 64: S DINODE=$P(DISTORE,";")
! 65: S DIPIECE=$P(DISTORE,";",2)
! 66: I DINODE="",$P(DIPIECE,"E")'="",'DIPIECE S (DICODE,DIDEF)="" Q
! 67: S DINODE="$G(@DIROOT@(+DIEN,"""_DINODE_"""))"
! 68: I DIPIECE S DICODE="$P("_DINODE_",U,"_DIPIECE_")"
! 69: E D
! 70: . S DIEFROM=$P($E(DIPIECE,2,9999),",")
! 71: . S DIETO=$P(DIPIECE,",",2)
! 72: . S DICODE="$E("_DINODE_","_DIEFROM_","_DIETO_")"
! 73: Q
! 74:
! 75: INDEX(DIFILE,DINDEX,DIROOT)
! 76: ; lookup data on a file's index
! 77: S DINDEX("CODE")=""
! 78: S DINDEX("FIELD")=""
! 79: S DINDEX("TYPE")=""
! 80: S DIFILE("INDEX")=$O(^DD(DIFILE,0,"IX",DINDEX,""))
! 81: I DIFILE("INDEX") D
! 82: . S DINDEX("FIELD")=$O(^DD(DIFILE,0,"IX",DINDEX,DIFILE("INDEX"),""))
! 83: I1 I DINDEX("FIELD") N DIXNODE D
! 84: . N DIXGET
! 85: . D GET(DIFILE("INDEX"),DINDEX("FIELD"),.DIXNODE,.DIXGET)
! 86: . S DINDEX("GET")=DIXGET
! 87: . S DINDEX("TYPE")=$P(DIXNODE,U,2)
! 88: I DINDEX("TYPE")["D" S DINDEX("TYPE")="D"
! 89: I DINDEX("TYPE")["S" D
! 90: . S DINDEX("TYPE")="S"
! 91: . S DINDEX("CODE")=";"_$P(DIXNODE,U,3)
! 92: S DINDEX("NODE")=DIXNODE
! 93: I DINDEX("TYPE")["P" D
! 94: . S DINDEX("TYPE")="P"
! 95: . S DINDEX("PTR")=+$P($P(DIXNODE,U,2),"P",2)
! 96: Q
! 97:
! 98: BOTH(DIFILE,DIFLAGS,DIROOT,DINDEX,DIFIELDS,DIWRITE,DIDENT)
! 99: ; IXANDID^DICL--get index and identifier info
! 100: D INDEX(.DIFILE,.DINDEX,DIROOT) Q:$G(DIERR)
! 101: Q:DIFLAGS["f"
! 102: D IDENTS(.DIFILE,DINDEX("FIELD"),DIROOT,DIFIELDS,DIWRITE,.DIDENT)
! 103: Q
! 104:
! 105: ERR(DIERN,DIFILE,DIENS,DIFIELD,DI1)
! 106: N DIPE
! 107: S DIPE("FILE")=$G(DIFILE)
! 108: S DIPE("IEN")=$G(DIENS)
! 109: S DIPE("FIELD")=$G(DIFIELD)
! 110: S DIPE(1)=$G(DI1)
! 111: D BLD^DIALOG(DIERN,.DIPE,.DIPE)
! 112: Q
! 113:
! 114:
! 115: FIELD(DIFILE,DIFIELD,DINDEX)
! 116: ; return code to fetch field value prior to screen execution
! 117: I DIFIELD=.01 Q "DIKEY"
! 118: N DISTORE S DISTORE=$P(DINDEX(0,"DEF"),U,4)
! 119: N DINODE S DINODE=$P(DISTORE,";")
! 120: N DIPIECE S DIPIECE=$P(DISTORE,";",2)
! 121: I 'DINODE,$P(DIPIECE,"E")'="",'DIPIECE Q "X"
! 122: I DINODE=0 S DINODE="DINODE"
! 123: E S DINODE="$G(@DIROOT@(+DIEN,"""_DINODE_"""))"
! 124: N DICODE I DIPIECE S DICODE="$P("_DINODE_",U,"_DIPIECE_")"
! 125: E D
! 126: . N DIEFROM S DIEFROM=$P($E(DIPIECE,2,9999),",")
! 127: . N DIETO S DIETO=$P(DIPIECE,",",2)
! 128: . S DICODE="$E("_DINODE_","_DIEFROM_","_DIETO_")"
! 129: Q DICODE
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>