Annotation of freem_fileman/DICF1.m, revision 1.1
1.1 ! snw 1: DICF1 ;SEA/TOAD-VA FileMan: Finder, Part 2 (Transform) ;11/17/94 12:21 ;
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4:
! 5: XFORM(DIFLAGS,DIVALUE,DISCREEN,DILVA,DILIST)
! 6: ; FIND--produce array of values and screens by transforming input
! 7: ; subroutine, DIVALUE, DINDEX, & DISCREEN passed by reference
! 8: BASIC
! 9: N DISNAME S DISNAME="DILVA(""S"")"
! 10: N DIVNAME S DIVNAME="DILVA(""V"")"
! 11: S @DIVNAME=DIVALUE
! 12: S @DISNAME=DISCREEN
! 13: SETLONG
! 14: N DILONG S DILONG=$S(DIFLAGS["Q":0,1:$L(DIVALUE)>29&(DIFLAGS'["U")*4)
! 15: I DILONG N DISNAMES S DISNAMES=DISNAME,DISNAME=$NA(@DISNAME@(0))
! 16: N DISNAMEX S DISNAMEX=$NA(@DILIST("LVA")@("S"))
! 17: I DILONG S DISNAMEX=$NA(@DISNAMEX@(0))
! 18: I DILONG N DIVNAMES S DIVNAMES=DIVNAME,DIVNAME=$NA(@DIVNAME@(0))
! 19: N DIVNAMEX S DIVNAMEX=$NA(@DILIST("LVA")@("V"))
! 20: I DILONG S DIVNAMEX=$NA(@DIVNAMEX@(0))
! 21: S @DIVNAME@(1+DILONG)=DIVALUE
! 22: S @DISNAME@(1+DILONG)=DISCREEN
! 23: I DIFLAGS["Q" Q
! 24: LOWER
! 25: I DIVALUE?.E1L.E N DILOWER,DIUPPER D
! 26: . S DILOWER="abcdefghijklmnopqrstuvwxyz"
! 27: . S DIUPPER="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
! 28: . N DITEMP S DITEMP=$TR(DIVALUE,DILOWER,DIUPPER)
! 29: . S @DIVNAME@(2+DILONG)=DITEMP
! 30: . S @DISNAME@(2+DILONG)=DISCREEN
! 31:
! 32: COMMA N DIREF I DIVALUE[",",DIFLAGS'["X" D
! 33: . S DIFLAGS=DIFLAGS_"g"
! 34: . N DISTEMP S DISTEMP=""
! 35: . N DIPART1 S DIPART1=" I %?.E1P1"""
! 36: . N DIPART2 S DIPART2=""".E!(D'=""B""&(%?1"""
! 37: . N DIPART3 S DIPART3=""".E))"
! 38: . N DIOUT S DIOUT=0
! 39: 21 . N DIPIECE,DIVPIECE F DIPIECE=2:1 D I DIOUT Q
! 40: . . S DIVPIECE=$P(DIVALUE,",",DIPIECE)
! 41: . . I DIVPIECE["""" Q
! 42: . . I $E(DIVPIECE)=" " S DIVPIECE=$E(DIVPIECE,2,$L(DIVPIECE))
! 43: . . I DIVPIECE="" S DIOUT=1 Q
! 44: . . I $L(DIVPIECE)*2+$L(DISTEMP)+33+14+34>255 S DIOUT=1 Q
! 45: . . S DISTEMP=DISTEMP_DIPART1_DIVPIECE_DIPART2_DIVPIECE_DIPART3
! 46: 22 . I DISTEMP="" Q
! 47: . S DISTEMP="S %=DIFIELD"_DISTEMP
! 48: . S DIREF=$NA(@DISNAMEX@(1+DILONG))
! 49: . N DISOLD I @DIREF="" S DISOLD=""
! 50: . E S DISOLD=" X "_DIREF
! 51: . S @DIVNAME@(3+DILONG)=$P(DIVALUE,",")
! 52: . S @DISNAME@(3+DILONG)=DISTEMP_DISOLD
! 53: 23 . I DIVALUE'?.E1L.E Q
! 54: . S DIREF=$NA(@DISNAMEX@(2+DILONG))
! 55: . I @DIREF="" S DISOLD=""
! 56: . E S DISOLD=" X "_DIREF
! 57: . S @DIVNAME@(4+DILONG)=$TR($P(DIVALUE,","),DILOWER,DIUPPER)
! 58: . S @DISNAME@(4+DILONG)=$TR(DISTEMP,DILOWER,DIUPPER)_DISOLD
! 59:
! 60: LONG I 'DILONG Q
! 61: I DIFLAGS'["g" S DIFLAGS=DIFLAGS_"g"
! 62: N DINODE,DISLONG,DISPART,DISXACT
! 63: F DINODE=5:1:8 I $D(@DIVNAME@(DINODE))#2 D
! 64: . S @DIVNAMES@(DINODE)=$E(@DIVNAME@(DINODE),1,30)
! 65: . S DIREF=$NA(@DISNAMEX@(DINODE))
! 66: . I @DIREF="" S DISLONG=""
! 67: . E S DISLONG=" X "_DIREF
! 68: . S DIREF=$NA(@DIVNAMEX@(DINODE))
! 69: . S DISPART="I $P(DIFIELD,"_DIREF_")="""""_DISLONG
! 70: . S DISXACT="I $P(DIFIELD,U)="_DIREF_DISLONG
! 71: L10 . I DIFLAGS["X" S @DISNAMES@(DINODE)=DISXACT Q
! 72: . I DIFLAGS'["O" S @DISNAMES@(DINODE)=DISPART Q
! 73: . S @DISNAMES@(DINODE)=DISXACT
! 74: . S @DISNAMES@(DINODE,2)=DISPART
! 75: Q
! 76:
! 77: SPECIAL(DIFILE,DIEN,DIFLAGS,DIROOT,DIVALUE,DINDEX,DICOUNT,DIFAIL,DISCREEN,DIDENT,DIOUT,DILIST)
! 78: ; FIND--check the pick value for special formats
! 79: ; proc, DICOUNT, DIDENT, & DIFAIL by reference
! 80: S DIOUT=0
! 81: I U[DIVALUE S DIFAIL=1,DIOUT=1 Q
! 82: I DIVALUE'?.ANP S DIFAIL=1,DIOUT=1 D ERR^DICF6(204,"","","",DIVALUE) Q
! 83: 11 I DIVALUE=" " D S DIOUT=1 Q
! 84: . N DINODE S DINODE=$G(^DISV(DUZ,$E(DIROOT("Q"),1,28)))
! 85: . N DINODEL S DINODEL=$L(DINODE,",")
! 86: . I $P(DINODE,",",1,DINODEL-1)'=$E(DIROOT("Q"),29,9999) S DIFAIL=1 Q
! 87: . N DIENTRY S DIENTRY=$P(DINODE,",",DINODEL)
! 88: . I 'DIENTRY S DIFAIL=1 Q
! 89: . S DIEN=DIENTRY_DIEN
! 90: . D ENTRY
! 91: . I DICOUNT'>DICOUNT(0) S DIFAIL=1 Q
! 92: 12 I DIVALUE?1"`"1.N D S DIOUT=1 Q
! 93: . N DIENTRY S DIENTRY=$E(DIVALUE,2,$L(DIVALUE))
! 94: . S DIEN=DIENTRY_DIEN
! 95: . D ENTRY
! 96: . S $P(DIEN,",")=""
! 97: . I DICOUNT'>DICOUNT(0) S DIFAIL=1
! 98: 13 I $S(DIVALUE?1.N:1,DIVALUE'?.NP:0,1:+DIVALUE=DIVALUE) D Q:DICOUNT>DICOUNT(0)
! 99: . N DI001 S DI001=$D(^DD(DIFILE,.001))
! 100: . N DI01FLAG S DI01FLAG=$P($G(^DD(DIFILE,.01,0)),U,2)
! 101: . I $D(@DIROOT@(DIVALUE)) D I DICOUNT>DICOUNT(0) Q
! 102: . . I DIFLAGS'["A",'DI001,DI01FLAG["N"!($O(@DIROOT@("A["))'="") Q
! 103: . . S DIEN=DIVALUE_DIEN
! 104: . . D ENTRY
! 105: . . S $P(DIEN,",")=""
! 106: . . I DIFLAGS["q" S DIOUT=1
! 107: Q
! 108:
! 109: ENTRY D ENTRY^DICF3(DIFILE,.DIEN,.DIFLAGS,.DIROOT,.DIVALUE,DINDEX,.DICOUNT,.DISCREEN,.DIDENT,.DILIST)
! 110: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>