Annotation of freem_fileman/DIDU.m, revision 1.1.1.1

1.1       snw         1: DIDU   ;SEA/TOAD-VA FileMan: DD Tools, Format ;12/1/94  16:35
                      2:        ;;21.0;VA FileMan;;Dec 28, 1994
                      3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
                      4:        
                      5: EXTERNAL(DIFILE,DIFIELD,DIFLAGS,DINTERNL,DIMSGA)       
                      6: XTRNLX ; Branch from DILFD or DIQGU
                      7:        ; ENTRY POINT--convert DINTERNL to external format
                      8:        ; func, all passed by value
                      9:        I '$D(DIQUIET) N DIQUIET S DIQUIET=1
                     10:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
                     11: INPUT  
                     12:        I $G(DINTERNL)="" Q ""
                     13:        S DIMSGA=$G(DIMSGA) I DIMSGA'="" D
                     14:        . K @DIMSGA@("DIERR"),@DIMSGA@("DIHELP"),@DIMSGA@("DIMSG")
                     15:        S DIFILE=$G(DIFILE)
                     16:        I DIFILE'>0 D ERR(DIMSGA,202,"","","","FILE") Q ""
                     17:        S DIFLAGS=$G(DIFLAGS)
                     18:        I DIFLAGS'?.1(1"F",1"L",1"U") D ERR(DIMSGA,301,"","","",DIFLAGS) Q ""
                     19:        S DIFIELD=$G(DIFIELD)
                     20:        I DIFIELD'>0 D ERR(DIMSGA,202,"","","","FIELD") Q ""
                     21: PREP   
                     22:        N DICHAIN,DIDONE,DIEN,DIEXTRNL
                     23:        N DIHEAD,DINEXT,DINODE,DIOUT,DIROOT,DITYPE,DIXFORM
                     24:        S DICHAIN=0,DIDONE=0,DIEN="",DIEXTRNL=""
                     25:        S DIHEAD="",DINEXT="",DIOUT=0,DIXFORM=""
                     26:        N DIPREV S DIPREV=""
                     27:        N DIPREVF S DIPREVF=""
                     28:        I '$D(^DD(DIFILE)) D ERR(DIMSGA,401,DIFILE) Q ""
                     29:        S DINODE=$G(^DD(DIFILE,DIFIELD,0))
                     30:        I DINODE="" D ERR(DIMSGA,501,DIFILE,"",DIFIELD,DIFIELD) Q ""
                     31:        S DITYPE=$P(DINODE,U,2)
                     32: RESOLVE        
                     33:        F  D  I DIDONE!$G(DIERR)!DIOUT Q
                     34: XFORM  .
                     35:        . I DIFLAGS["U",DIXFORM'="",DITYPE'["P",DITYPE'["V" S DITYPE=DITYPE_"O"
                     36:        . I DITYPE["O" D  I DIDONE!$G(DIERR) Q
                     37:        . . I DIFLAGS["F",DICHAIN Q
                     38:        . . I DIFLAGS["L",DITYPE["P"!(DITYPE["V") Q
                     39:        . . I DIXFORM=""!(DIFLAGS'["U") S DIXFORM=$G(^DD(DIFILE,DIFIELD,2))
                     40:        . . I DIXFORM="" Q
                     41:        . . I DIFLAGS["U",DITYPE["P"!(DITYPE["V") Q
                     42:        . . N Y S Y=DINTERNL
                     43:        . . X DIXFORM
                     44:        . . I $G(DIERR) D ERR^DICF6(120,DIFILE,DIEN,"","Output Transform") Q
                     45:        . . S DIEXTRNL=Y
                     46:        . . S DIDONE=1
                     47: CHAIN  .
                     48:        . I DITYPE S DIOUT=1 Q
                     49:        . I DITYPE'["P",DITYPE'["V" S DIOUT=1 Q
                     50:        . I 'DINTERNL D  Q
                     51:        . . I 'DICHAIN D ERR(DIMSGA,330,"","","",DINTERNL,"pointer") Q
                     52:        . . D ERR(DIMSGA,630,DIFILE,"",DIFIELD,DIEN,DINTERNL,"pointer")
                     53:        . I DITYPE["P" S DIROOT=$P(DINODE,U,3),DINEXT=+$P($P(DINODE,U,2),"P",2)
                     54:        . I DITYPE["V" S DIROOT=$P(DINTERNL,";",2),DINEXT=""
                     55: 10     . S DIHEAD=$G(@(U_DIROOT_"0)")) ;***** Naked Set *****
                     56:        . I DIHEAD="" D  Q
                     57:        . . D HEADER(DIFILE,DIEN,DIFIELD,DITYPE,DICHAIN,DINTERNL,DINEXT)
                     58:        . I DITYPE["V" S DINEXT=$P(DIHEAD,U,2) I +DINEXT'=DINEXT D  Q
                     59:        . . D ERR(DIMSGA,404,"","","",$$CREF^DILF(U_DIROOT))
                     60:        . I '$D(^(+DINTERNL)) D  Q  ;***** Naked *****
                     61:        . . N DI S DI="pointer to File #"
                     62:        . . I 'DICHAIN D ERR(DIMSGA,330,"","","",DINTERNL,DI_DINEXT) Q
                     63:        . . D ERR(DIMSGA,630,DIFILE,DIFIELD,"",DIEN,DINTERNL,DI_DINEXT)
                     64: 20     . S DIEN=+DINTERNL
                     65:        . S DIPREV=DIFILE,DIFILE=DINEXT
                     66:        . S DINTERNL=$P($G(^(DIEN,0)),U) ;***** Naked *****
                     67:        . I DINTERNL="" D ERR(DIMSGA,603,DIFILE,"",.01,DIEN) Q
                     68:        . S DINODE=$G(^DD(DIFILE,.01,0))
                     69:        . S DITYPE=$P(DINODE,U,2)
                     70: 30     . I DITYPE="" D ERR(DIMSGA,510,DIFILE,"",.01) Q
                     71:        . S DIPREVF=DIFIELD,DIFIELD=.01
                     72:        . S DICHAIN=1
                     73:        I DIDONE Q DIEXTRNL
                     74: BAD    
                     75:        I $G(DIERR) Q ""
                     76:        I DITYPE["C" D ERRPTR("Computed") Q ""
                     77:        I DITYPE["W" D ERRPTR("Word Processing") Q ""
                     78:        I DITYPE S DITYPE=$P($G(^DD(+DITYPE,.01,0)),U,2) D  Q ""
                     79:        . I DITYPE["W" D ERRPTR("Word Processing") Q
                     80:        . D ERRPTR("Multiple") Q
                     81: CODES  
                     82:        I DITYPE["S" D  Q DIEXTRNL
                     83:        . N DICODES S DICODES=";"_$P(DINODE,U,3)
                     84:        . N DISTART S DISTART=$F(DICODES,";"_DINTERNL_":")
                     85:        . I 'DISTART S DIEXTRNL="" D  Q
                     86:        . . I 'DICHAIN D ERR(DIMSGA,730,DIFILE,"",DIFIELD,DINTERNL,"code") Q
                     87:        . . D ERR(DIMSGA,630,DIFILE,DIFIELD,"",DIEN,DINTERNL,"code")
                     88:        . S DIEXTRNL=$P($E(DICODES,DISTART,$L(DICODES)),";")
                     89: OTHER  
                     90:        I DITYPE["D",DINTERNL D  Q DIEXTRNL
                     91:        . S DIEXTRNL=$$FMTE^DILIBF(DINTERNL,"1U")
                     92:        . I DIEXTRNL'="" Q
                     93:        . I 'DICHAIN D ERR(DIMSGA,330,"","","",DINTERNL,"date") Q
                     94:        . D ERR(DIMSGA,630,DIFILE,"",DIFIELD,DIEN,DINTERNL,"date")
                     95:        Q DINTERNL
                     96:        
                     97: HEADER(DIFILE,DIEN,DIFIELD,DITYPE,DICHAIN,DINTERNL,DINEXT)     
                     98:        ; CHAIN--pick a header error and log it
                     99:        ; proc, all by val
                    100:        I DITYPE["P" D  Q
                    101:        . I 'DINEXT!'$D(^DD(DINEXT)) D ERR(DIMSGA,537,DIFILE,"",DIFIELD) Q
                    102:        . D ERR(DIMSGA,403,DINEXT)
                    103:        ; otherwise, it's a variable pointer
                    104:        I DICHAIN D ERR(DIMSGA,648,DIFILE,"",DIFIELD,DIEN,DINTERNL) Q
                    105:        D ERR(DIMSGA,348,"","","",DINTERNL)
                    106:        Q
                    107:        
                    108: ERR(DIMSGA,DIERN,DIFILE,DIIENS,DIFIELD,DI1,DI2,DI3)    
                    109:        ; error logging procedure
                    110:        N DIPE
                    111:        N DI F DI="FILE","IENS","FIELD",1:1:3 S DIPE(DI)=$G(@("DI"_DI))
                    112:        D BLD^DIALOG(DIERN,.DIPE,.DIPE,DIMSGA,"F")
                    113:        Q
                    114:        
                    115: ERRPTR(DITYPE) 
                    116:        ; error logging shell for errors 520 & 537
                    117:        I DICHAIN D ERR(DIMSGA,537,DIPREV,"",DIPREVF) Q
                    118:        D ERR(DIMSGA,520,DIFILE,"",DIFIELD,DITYPE)
                    119:        Q

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