Annotation of freem_fileman/DIDU1.m, revision 1.1.1.1

1.1       snw         1: DIDU1  ;SEA/TOAD-VA FileMan: DD Tools, IENS Check ;7/17/94  17:28 ;
                      2:        ;;21.0;VA FileMan;;Dec 28, 1994
                      3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
                      4:        
                      5: IEN(DIENS,DIFLAGS)     ;
                      6:        ;ENTRY POINT--return whether the IEN String is valid
                      7:        ;extrinsic function, all passed by value
                      8:        I $G(DIENS)="" Q 0
                      9:        I $G(DIFLAGS,"N")'="N" Q 0
                     10:        S DIFLAGS=$G(DIFLAGS)
                     11:        N DICHAR,DICRSR,DIPIECE,DISEQ,DIOUT,DIVALID
                     12:        S DIPIECE="",DISEQ="",DIOUT=0,DIVALID=1
                     13:        F DICRSR=1:1 D  I DIOUT Q
                     14:        .S DIPIECE=$P(DIENS,",",DICRSR)
                     15:        .I DIPIECE="" D  Q
                     16:        ..I $P(DIENS,",",DICRSR,999)="" S DIOUT=1 Q
                     17: I1     ..I DICRSR=1 Q
                     18:        ..S DIOUT=1,DIVALID=0
                     19:        ..Q
                     20:        .I +DIPIECE=DIPIECE S DIVALID=DIPIECE>0,DIOUT='DIVALID Q
                     21:        .I DIFLAGS["N" S DIVALID=0,DIOUT=1 Q
                     22:        .S DICHAR=$E(DIPIECE,1,2) I DICHAR'="?+" S DICHAR=$E(DICHAR)
                     23:        .I DICHAR'="+",DICHAR'="?",DICHAR'="?+" S DIOUT=1,DIVALID=0 Q
                     24:        .I $P(DIPIECE,DICHAR,2,9999)?1N.N D  Q
                     25:        ..S DISEQ=$P(DIPIECE,DICHAR,2,999)
                     26:        ..S DIOUT=+DISEQ'=DISEQ!$D(DISEQ(DISEQ)),DIVALID='DIOUT Q
                     27: I2     .S DIOUT=1,DIVALID=0
                     28:        .Q
                     29:        Q $E(DIENS,$L(DIENS))=","&DIVALID
                     30:        ;
                     31: PROOT(DIFILE,DIENS)    ;
                     32:        ;ENTRY POINT--return the global root of a subfile's parent
                     33:        ;extrinsic function, all passed by value
                     34:        Q $$ROOT^DILFD($$PARENT(DIFILE),$P(DIENS,",",2,999),1)
                     35:        ;
                     36: PARENT(DIFILE) ;
                     37:        ;ENTRY POINT--return the file number of a subfile's parent
                     38:        ;extrinsic function, all passed by value
                     39:        Q $G(^DD(DIFILE,0,"UP"))
                     40:        ;
                     41: PARENTS(DIFILE,DIRULE) ;
                     42:        ;IEN--return the file's parents
                     43:        ;procedure, passed by ref
                     44:        N DIBACK,DIOUT,DIMOM,DITEMP
                     45:        S DIOUT=0,DIMOM=DIFILE
                     46:        S DITEMP=DIFILE K DIFILE S (DIFILE,DIFILE("C"))=DITEMP
                     47:        S DIFILE("L")=$$LEVEL(DIFILE)
                     48:        S DIFILE(1)=DIFILE
                     49:        I '$D(DIRULE("L",DIFILE)) S DIRULE("L",DIFILE)=DIFILE("L")
                     50:        F DIBACK=2:1 D  I DIOUT Q
                     51:        .S DITEMP=DIMOM
                     52:        .S DIMOM=$G(DIRULE("UP",DITEMP))
                     53: PA1    .I DIMOM="" D  I DIOUT Q
                     54:        ..S DIMOM=$G(^DD(DITEMP,0,"UP"))
                     55:        ..I DIMOM="" S DIOUT=1 Q
                     56:        ..S DIRULE("UP",DITEMP)=DIMOM
                     57:        ..I '$D(DIRULE("L",DIMOM)) S DIRULE("L",DIMOM)=DIFILE("L")-DIBACK+1
                     58:        ..Q
                     59:        .S DIFILE(DIBACK)=DIMOM
                     60:        .Q
                     61:        Q
                     62:        ;
                     63: LEVEL(DIFILE)  ;
                     64:        ;IEN--return the file's level (# parents +1)
                     65:        ;function, pass by value
                     66:        N DIMOM
                     67:        I '$G(DIFILE) Q 0
                     68:        S DIMOM=$G(^DD(DIFILE,0,"UP"))
                     69:        I DIMOM="" Q 1
                     70:        Q $$LEVEL(DIMOM)+1
                     71:        ;

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