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