Annotation of freem_fileman/DIDU2.m, revision 1.1

1.1     ! snw         1: DIDU2  ;SEA/TOAD-VA FileMan: DD Tools, Header Nodes ;10/21/94  12:08 ;
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        
        !             5: HEADER(DIFILE,DIENS,DIMSGA)    ;
        !             6:        ;ENTRY POINT--return the value a file's Header Node should have
        !             7:        ;extrinsic function, DIENS passed by reference
        !             8:        I '$D(DIQUIET) N DIQUIET S DIQUIET=1
        !             9:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
        !            10:        N DIROOT D HINPUT(.DIFILE,.DIENS,.DIMSGA,.DIROOT) I $G(DIERR) D  Q ""
        !            11:        . D CLOSE
        !            12:        N DIHEADER S DIHEADER=$$PIECES12(DIFILE,DIROOT) I $G(DIERR) D  Q ""
        !            13:        . D CLOSE
        !            14:        N DIRECENT S DIRECENT=$O(@DIROOT@(" "),-1) I DIRECENT="" S DIRECENT=0
        !            15:        N DICOUNT,DIRECORD S DICOUNT=0,DIRECORD=0
        !            16:        F  S DIRECORD=$O(@DIROOT@(DIRECORD)) Q:'DIRECORD  S DICOUNT=DICOUNT+1
        !            17:        Q DIHEADER_U_DIRECENT_U_DICOUNT
        !            18:        
        !            19: HINPUT(DIFILE,DIENS,DIMSGA,DIROOT)     ;
        !            20:        ;evaluate input variables for HEADER call
        !            21:        I $G(DIMSGA)'="" D
        !            22:        . K @DIMSGA@("DIERR"),@DIMSGA@("DIHELP"),@DIMSGA@("DIMSG")
        !            23:        S DIFILE=$G(DIFILE) I DIFILE="" D ERR(202,"","","","FILE") Q
        !            24:        I $G(^DD(DIFILE,.01,0))="" D  Q
        !            25:        . I '$D(^DD(DIFILE)) D ERR(401,DIFILE) Q
        !            26:        . I '$D(^DD(DIFILE,.01)) D ERR(406,DIFILE) Q
        !            27:        . E  D ERR(502,DIFILE,"",.01)
        !            28:        S DIENS=$G(DIENS) I DIENS="" S DIENS=","
        !            29:        I '$$IEN^DIDU1(DIENS) D  Q
        !            30:        . I '$$IEN^DIDU1(DIENS_",") D ERR(202,"","","","IENS") Q
        !            31:        . E  D ERR(304,"",DIENS)
        !            32:        S DIROOT=$G(DIFILE("ROOT")) I DIROOT="" D
        !            33:        . S DIROOT=$$ROOT^DILFD(DIFILE,DIENS,1,1) Q:DIROOT'=""!$G(DIERR)
        !            34:        . I '$D(^DD(DIFILE)) D ERR(401,DIFILE) Q
        !            35:        . E  D ERR(402,DIFILE,DIENS)
        !            36:        Q
        !            37:        
        !            38: PIECES12(DIFILE,DIROOT)        ;
        !            39:        ;return pieces 1 & 2 of the Header node
        !            40:        N DIPIECE1,DIPIECE2
        !            41:        N DINAME S DINAME=$O(^DD(DIFILE,0,"NM","")) I DINAME="" D  Q ""
        !            42:        . D ERR(408,DIFILE)
        !            43:        N DIPARENT S DIPARENT=$G(^DD(DIFILE,0,"UP"))
        !            44:        
        !            45: P1     I DIPARENT'="" D  ;subfile
        !            46:        . S DIPIECE1=""
        !            47:        . I $P(^DD(DIFILE,.01,0),U,2)["W" D  Q
        !            48:        . . D ERR(407,DIFILE)
        !            49:        . N DIFIELD S DIFIELD=$O(^DD(DIPARENT,"B",DINAME,""))
        !            50:        . I DIFIELD="" D  Q
        !            51:        . . D ERR(501,DIFILE,"","",DINAME)
        !            52:        . N DINODE S DINODE=$G(^DD(DIPARENT,DIFIELD,0)) I DINODE="" D  Q
        !            53:        . . D ERR(502,DIFILE,"",DIFIELD)
        !            54:        . S DIPIECE2=$P(DINODE,U,2) I DIPIECE2="" D  Q
        !            55:        . . D ERR(502,DIFILE,"",DIFIELD)
        !            56:        
        !            57: P2     E  D  ;root file
        !            58:        . S DIPIECE1=DINAME
        !            59:        . S DIPIECE2=DIFILE_$$CODES(DIFILE,DIROOT) I $G(DIERR) Q
        !            60:        I $G(DIERR) Q ""
        !            61:        Q DIPIECE1_U_DIPIECE2
        !            62:        
        !            63: CODES(DIFILE,DIROOT)   ;
        !            64:        ;collect the file characteristics codes
        !            65:        N DIFIELD S DIFIELD=$P($G(^DD(DIFILE,.01,0)),U,2) I DIFIELD="" D  Q ""
        !            66:        . I '$D(^DD(DIFILE,.01)) D ERR(501,DIFILE,"","",.01) Q
        !            67:        . E  D ERR(510,DIFILE,"",DIFIELD)
        !            68:        N DICODES S DICODES=""
        !            69:        N DITYPE F DITYPE="D","S","P","V" I DIFIELD[DITYPE S DICODES=DITYPE Q
        !            70:        I $D(^DD(DIFILE,0,"ID")) S DICODES=DICODES_"I"
        !            71:        I $D(^DD(DIFILE,0,"SCR"))#2 S DICODES=DICODES_"s"
        !            72:        N DINODE S DINODE=$G(@DIROOT@(0))
        !            73:        I DINODE["A" S DICODES=DICODES_"A"
        !            74:        I DINODE["O" S DICODES=DICODES_"O"
        !            75:        Q DICODES
        !            76:        
        !            77: CLOSE  D CALLOUT^DIEFU($G(DIMSGA)):$G(DIMSGA)'="" Q
        !            78:        
        !            79: ERR(DIERN,DIFILE,DIIENS,DIFIELD,DI1,DI2,DI3)   ;
        !            80:        ;log an error
        !            81:        N DIPE
        !            82:        N DI F DI="FILE","IENS","FIELD",1:1:3 S DIPE(DI)=$G(@("DI"_DI))
        !            83:        D BLD^DIALOG(DIERN,.DIPE,.DIPE)
        !            84:        Q
        !            85:        

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