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>