Annotation of freem_fileman/DICF1.m, revision 1.1.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>