Annotation of freem_fileman/DIEV.m, revision 1.1.1.1

1.1       snw         1: DIEV   ;SFISC/DPC-DATA VALIDATOR ;11/28/94  13:48
                      2:        ;;21.0;VA FileMan;;Dec 28, 1994
                      3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
                      4: VAL(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVAL,DIEVANS,DIEVFAR,DIOUTAR)      ;
                      5: VALX   ;
                      6:        N DIEV0,DIEVP2,DA,D,I,C K DIEVANS
                      7:        I '$D(DIQUIET) N DIQUIET S DIQUIET=1
                      8:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
                      9:        S DIEVFLG=$G(DIEVFLG) I '$$VERFLG^DIEFU(DIEVFLG,"HFERY") G OUT
                     10:        D FLDVAL G:$G(DIEVAL)=U OUT
                     11:        D DA^DIEFU(DIEVIEN,.DA)
                     12:        S C=$L(DIEVIEN,",")-1 F I=1:1:C S D="D"_(C-I) N @D S @D=$P(DIEVIEN,",",I)
                     13:        D AUXVAL(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVAL,.DIEVANS,.DIEV0,.DIEVP2)
                     14:        I $G(DIEVANS)=U!("@"[DIEVAL) G OUT
                     15: MINVAL ;
                     16:        D INT(DIEVF,DIEVFLD,DIEVFLG,DIEVAL,.DIEVANS,$G(DIEV0),$G(DIEVP2))
                     17:        I DIEVANS=U D ERR
                     18: OUT    S DIEVANS=$G(DIEVANS,U)
                     19:        I DIEVFLG["F",DIEVANS'=U D FDA
                     20:        I $G(DIOUTAR)]"" D CALLOUT^DIEFU(DIOUTAR)
                     21:        Q
                     22:        ;
                     23: FLDVAL ;
                     24:        N DIEVOUT S DIEVOUT=0
                     25:        I '$$VFILE^DIEFU(DIEVF,"D") S DIEVAL=U Q
                     26:        I '$$VFIELD^DIEFU(DIEVF,DIEVFLD,"D") S DIEVAL=U Q
                     27:        S DIEV0=^DD(DIEVF,DIEVFLD,0),DIEVP2=$P(DIEV0,U,2)
                     28:        D DTYPE
                     29:        I DIEVOUT=1 S DIEVAL=U
                     30:        Q
                     31:        ;
                     32: AUXVAL(DIEVF,DIEVIEN,DIEVFLD,DIEVFLG,DIEVAL,DIEVANS,DIEV0,DIEVP2)      ;
                     33:        N DIEVOUT S DIEVOUT=0
                     34:        I '$D(DIOVRD),$P($G(^DD($$FNO^DILIBF(DIEVF),0,"DI")),U,2)="Y",DIEVFLG'["Y" D  G AUXERR
                     35:        . N INT,EXT S INT(1)=$$FILENM^DIEFU(DIEVF),EXT("FILE")=DIEVF
                     36:        . D BLD^DIALOG(405,.INT,.EXT)
                     37:        I $P(DIEV0,U,5,99)["DINUM","@"'[DIEVAL D  G AUXERR
                     38:        . N EXT,INT S EXT("FILE")=DIEVF,EXT("FIELD")=DIEVFLD,(INT(1),EXT(1))="DINUMed"
                     39:        . D BLD^DIALOG(520,.INT,.EXT)
                     40:        I $E(DIEVAL)="?"!(DIEVP2["V"&(DIEVAL[".?")) N P S P(1)=DIEVF,P(2)=DIEVFLD D BLD^DIALOG(1610,"",.P) G AUXERR
                     41:        I DIEVFLG["R" G:'$$VENTRY^DIEFU(DIEVF,DIEVIEN,"D9") AUXERR
                     42:        I DIEVP2["I",$$DATA(DIEVF,DIEVFLD) N P S P("FIELD")=DIEVFLD,P("FILE")=DIEVF D BLD^DIALOG(710,.P,.P) G AUXERR
                     43:        I "@"[DIEVAL D DELETE G:DIEVOUT AUXERR Q
                     44:        I DIEVFLG["I" D
                     45:        . S DIEVANS=DIEVAL
                     46:        . I DIEVFLG["E" S DIEVANS(0)=$$EXTERNAL^DIQGU(DIEVF,DIEVFLD,"",DIEVAL)
                     47:        Q
                     48: AUXERR S DIEVANS=U
                     49:        Q
                     50:        ;
                     51: DTYPE  ;
                     52:        I DIEVP2 D  S DIEVOUT=1 Q
                     53:        . N T,INT,EXT D DTYP^DIOU(DIEVF,DIEVFLD,.T)
                     54:        . I T=5 S INT(1)="word-processing",EXT("FIELD")=DIEVFLD,EXT("FILE")=DIEVF D BLD^DIALOG(520,.INT,.EXT) Q
                     55:        . S INT(1)="multi-valued",EXT("FIELD")=DIEVFLD,EXT("FILE")=DIEVF D BLD^DIALOG(520,.INT,.EXT)
                     56:        I DIEVP2["C" N INT,EXT S INT(1)="computed",EXT("FIELD")=DIEVFLD,EXT("FILE")=DIEVF D BLD^DIALOG(520,.INT,.EXT) S DIEVOUT=1 Q
                     57:        Q
                     58:        ;
                     59: DELETE ;
                     60:        I $D(^DD(DIEVF,DIEVFLD,"DEL")) D
                     61:        . N DIEVECNT S DIEVECNT=$G(DIERR)
                     62:        . N I S I="" F  S I=$O(^DD(DIEVF,DIEVFLD,"DEL",I)) Q:I=""  X $G(^(I,0)) I  S DIEVOUT=1
                     63:        . I DIEVECNT'=$G(DIERR) S DIEVOUT=1 D HKERR^DILIBF(DIEVF,$G(DIEVIEN),DIEVFLD,"DEL node")
                     64:        I DIEVP2["R" D
                     65:        . I DIEVFLD'=.01 S DIEVOUT=1 Q
                     66:        . I '$D(^DD(DIEVF,0,"UP")) Q
                     67:        . I $P($G(@$$ROOT^DILFD(DIEVF,DIEVIEN,1)@(0)),U,4)=1 S DIEVOUT=1
                     68:        I 'DIEVOUT S DIEVANS="" S:DIEVFLG["E" DIEVANS(0)=""
                     69:        E  D
                     70:        . N INT,EXT
                     71:        . S INT(1)=$$FLDNM^DIEFU(DIEVF,DIEVFLD),INT(2)=$$FILENM^DIEFU(DIEVF)
                     72:        . S EXT("FILE")=DIEVF,EXT("FIELD")=DIEVFLD
                     73:        . D BLD^DIALOG(712,.INT,.EXT)
                     74:        Q
                     75:        ;
                     76: DATA(DIEVF,DIEVFLD)    ;
                     77:        N DIEVNODE,DIEVSPOT,N S DIEVSPOT=" ",N=0
                     78:        D GLRF^DIOU(DIEVF,DIEVFLD,.DIEVNODE,.DIEVSPOT)
                     79:        I +DIEVSPOT D
                     80:        . I $P($G(@DIEVNODE),U,DIEVSPOT)'="" S N=1
                     81:        E  I $E(DIEVSPOT)="E" D
                     82:        . N F,T
                     83:        . S F=$P($P(DIEVSPOT,"E",2),",",1),T=$P(DIEVSPOT,",",2)
                     84:        . I $TR($E($G(@DIEVNODE),F,T)," ")'="" S N=1
                     85:        Q N
                     86:        ;
                     87: INT(%B1,%B2,DIEVFLG,X,DIEVANS,%B3,%B)  ;
                     88:        N %A,%E,%C,DIR,DIC,Y,DIE,%J,%T,%BA,DP,DIFLD,DDH,%BU,%I,%K,DQ,DIFILE,C,DIEVECNT
                     89:        I $G(%B3)="" S %B3=^DD(%B1,%B2,0),%B=$P(%B3,U,2)
                     90:        I %B["V" D VP^DIEV1(%B1,%B2,DIEVFLG,X,%B3,.DIEVANS) Q
                     91:        I %B["N" D  Q:$G(DIEVANS)=U
                     92:        . I $L($P(X,"."))>24 S DIEVANS=U Q
                     93:        I %B["S" S X=$$UP^DILIBF(X)
                     94:        S %A=%B1_","_%B2_",V",%E=0,DIR("V")="",%T=$E(%B1)
                     95:        S DIEVECNT=$G(DIERR)
                     96:        D 1^DIR1
                     97:        I DIEVECNT'=$G(DIERR) S DIEVANS=U D HKERR^DILIBF(%B1,$G(DIEVIEN),%B2,"screen on a pointer or set of codes or in an input transform") Q
                     98:        I %E S DIEVANS=U Q
                     99:        S DIEVANS=$S(%B'["P":Y,1:$P(Y,U))
                    100:        I DIEVFLG["E" D
                    101:        . I %B["S"!(%B["D") S DIEVANS(0)=$P(Y(0),U)
                    102:        . E  I %B["P" S DIEVANS(0)=Y(0,0)
                    103:        . E  I %B["O" D
                    104:        . . S Y=X
                    105:        . . S DIEVECNT=$G(DIERR)
                    106:        . . X $G(^DD(%B1,%B2,2))
                    107:        . . I DIEVECNT'=$G(DIERR) D HKERR^DILIBF(%B1,$G(DIEVIEN),%B2,"output transform") Q
                    108:        . . S DIEVANS(0)=Y
                    109:        . . Q
                    110:        . E  S DIEVANS(0)=X
                    111:        . Q
                    112:        Q
                    113:        ;
                    114: FDA    ;
                    115:        I $G(DIEVFAR)="" D BLD^DIALOG(202,"FDA") Q
                    116:        D LOAD^DIEF1(DIEVF,DIEVIEN,DIEVFLD,"",DIEVANS,DIEVFAR)
                    117:        Q
                    118:        ;
                    119: ERR    ;
                    120:        N INT,EXT
                    121:        S INT(1)=$$FLDNM^DIEFU(DIEVF,DIEVFLD),INT(2)=$$FILENM^DIEFU(DIEVF),(INT(3),EXT(3))=DIEVAL
                    122:        S EXT("FILE")=DIEVF,EXT("FIELD")=DIEVFLD,EXT("IENS")=$G(DIEVIEN)
                    123:        D BLD^DIALOG(701,.INT,.EXT)
                    124:        I DIEVFLG["H" D GET^DIEH(DIEVF,"",DIEVFLD,"?b") ;DA() and D0,D1,etc. passed thru symbol table
                    125:        Q
                    126:        ;
                    127: CHKX   ;
                    128:        N DIEV0,DIEVP2 K DIEVANS
                    129:        I '$D(DIQUIET) N DIQUIET S DIQUIET=1
                    130:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
                    131:        S DIEVFLG=$G(DIEVFLG) I '$$VERFLG^DIEFU(DIEVFLG,"HE") G OUT
                    132:        D FLDVAL I $G(DIEVAL)=U D OUT Q
                    133:        D MINVAL
                    134:        Q

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