File:  [Coherent Logic Development] / freem_fileman / USER / DICU.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: DICU	;SEA/TOAD-VA FileMan: Lookup Utilities ;10/13/94  11:50 ;
    2: 	;;21.0;VA FileMan;;Dec 28, 1994
    3: 	;Per VHA Directive 10-93-142, this routine should not be modified.
    4: 	;
    5: 	
    6: REQIDS(DIFILE,DITARGET)	;
    7: 	; return REQUIRED IDENTIFIERS file attribute
    8: 	; DIFILE = file#, DITARGET = target array
    9: 	N DIATTRBT S DIATTRBT="REQUIRED IDENTIFIERS"
   10: 	S @DITARGET@(DIATTRBT,.01)=""
   11: 	N DIFIELD
   12: 	S DIFIELD=0 F  S DIFIELD=$O(^DD(DIFILE,0,"ID",DIFIELD)) Q:'DIFIELD  D
   13: 	. I $D(^DD(DIFILE,"RQ",DIFIELD)) S @DITARGET@(DIATTRBT,DIFIELD)=""
   14: 	Q
   15: 	
   16: RID(DIFILE)	;
   17: 	; return a string listing a file's required identifiers
   18: 	; DIFILE = file#
   19: 	N DILIST S DILIST=".01"
   20: 	N DID S DID="" F  S DID=$O(^DD(DIFILE,0,"ID",DID)) Q:'DID  D
   21: 	. I $D(^DD(DIFILE,"RQ",DID)) S DILIST=DILIST_U_DID
   22: 	Q DILIST
   23: 	
   24: RECALL(DIFILE,DIEN,DIUSER)	;
   25: RECALLX	;input from DILFD
   26: 	;ENTRY POINT--save a user's selection for use with space-bar recall
   27: 	;procedure, all passed by value
   28: 	I '$D(DIQUIET) N DIQUIET S DIQUIET=1
   29: 	I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
   30: 30	S DIFILE=$G(DIFILE)
   31: 	I +DIFILE'=DIFILE!(DIFILE<0) D BLD^DIALOG(202,"file") Q
   32: 	S DIEN=$G(DIEN) I DIEN="" S DIEN=","
   33: 	I '$$IEN^DIDU1(DIEN) D BLD^DIALOG(202,"IEN string") Q
   34: 	S DIUSER=+$G(DIUSER)
   35: 	N DIOROOT,DIOUT S DIOUT=0 D  I DIOUT Q
   36: 	. I '$D(^DD(DIFILE)) D  Q
   37: 	. . S DIPE("FILE")=DIFILE
   38: 	. . D BLD^DIALOG(401,.DIPE,.DIPE)
   39: 	. . S DIOUT=1
   40: 32	. S DIOROOT=$$ROOT^DILFD(DIFILE,DIEN,"Q")
   41: 	. I DIOROOT'?1"^"1U.7UN1"(".ANP,DIOROOT'?1"^%".7UN1"(".ANP D  Q
   42: 	. . S DIPE("FILE")=DIFILE
   43: 	. . S DIPE("ROOT")=DIOROOT
   44: 	. . D BLD^DIALOG(402,.DIPE,.DIPE)
   45: 	. . S DIOUT=1
   46: 	S ^DISV(DIUSER,$E(DIOROOT,1,28))=$E(DIOROOT,29,$L(DIOROOT))_+DIEN
   47: 	Q
   48: 	;
   49: 	
   50: FILE(DIFILE,DIDA,DIFLAGS,DIROOT)	
   51: 	; entry point -- given a root, calculate the file # and DA
   52: 	; DO NOT USE UNTIL $QS & $QL AVAILABLE
   53: 	N DIGLOBAL I $G(DIFLAGS)'["O" S DIGLOBAL=DIROOT
   54: 	E  S DIGLOBAL=$$CREF^DIQGU(DIROOT),DIROOT=DIGLOBAL
   55: 	S DIFILE=+$P($G(@DIGLOBAL@(0)),U,2),DIDA=""
   56: 	N DA,DIENTRY S DA=1,DIENTRY=0
   57: 	
   58: LOOP	N DICHAR,DIL,DILEAD,DIQL,DIQS,DIQSL F  D  Q:'DIQL
   59: 	.
   60: STRIP	.
   61: 	. ; S DIQL=$QL(DIGLOBAL) Q:'DIQL
   62: 	. ; S DIQS=$QS(DIGLOBAL,DIQL)
   63: 	. N DIQSL S DIQSL=$L(DIQS)+1 I +DIQS'=DIQS S DIQSL=DIQSL+2
   64: 	. S DIL=$L(DIGLOBAL),DILEAD=DIL-DIQSL
   65: 	. S $E(DIGLOBAL,DILEAD+1,DIL-1)=""
   66: 	. S DICHAR=$E(DIGLOBAL,DILEAD)
   67: 	. I DICHAR="," S $E(DIGLOBAL,DILEAD)=""
   68: 	. E  I DICHAR="(" S $E(DIGLOBAL,DILEAD,DILEAD+1)=""
   69: 	. E  S DIGLOBAL="ERROR:  "_DIGLOBAL,DIQL=0
   70: 	.
   71: ENTRY	. I DIENTRY D
   72: 	. . S DIFILE(DA)=+$P($G(@DIGLOBAL@(0)),U,2)
   73: 	. . S DIROOT(DA)=DIGLOBAL
   74: 	. . S DIDA(DA)=DIQS,DA=DA+1
   75: 	. S DIENTRY='DIENTRY
   76: 	Q

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>