Annotation of freem_fileman/DICU1.m, revision 1.1.1.1

1.1       snw         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>