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