File:  [Coherent Logic Development] / freem_fileman / USER / DICU1.m
Revision 1.1: download - view: text, annotated - select for diffs
Mon Apr 28 14:13:20 2025 UTC (3 months ago) by snw
Branches: MAIN
CVS tags: HEAD
Restructure repository

    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>