Annotation of freem_fileman/USER/DDSVAL.m, revision 1.1

1.1     ! snw         1: DDSVAL ;SFISC/MKO-GET,PUT FOR DD IELDS ;01:27 PM  20 Oct 1994
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        ;
        !             5: GET(DDSFILE,DA,DDSFLD,DDSER,DDSPARM)   ;Get value for file/field
        !             6:        N DDP,DIE,DDSANS,DDSTMP,X
        !             7:        N DDSVDA,DDSVDDL0,DDSVDL,DDSVDV,DDSVND,DDSVPC
        !             8:        K DIERR,^TMP("DIERR",$J)
        !             9:        ;
        !            10:        S DDSANS=""
        !            11:        I $G(DDSPARM)'["I",$G(DDSPARM)'["E" S DDSPARM=$G(DDSPARM)_"I"
        !            12:        ;
        !            13:        D GDIE() G:$G(DIERR) GETQ
        !            14:        ;
        !            15:        I DDSFLD[":",$$FIND^DDSLIB(DDSFLD,":") D  G GETQ
        !            16:        . S DDSANS=$$REL^DDSVALM(DDP,.DA,DDSFLD,DDSPARM)
        !            17:        ;
        !            18:        S DDSFLD=$$FIELD(DDP,DDSFLD) G:$G(DIERR) GETQ
        !            19:        ;
        !            20:        S:$D(DDSREFT)#2 DDSTMP=$NA(@DDSREFT@("F"_DDP,DDSVDA,DDSFLD))
        !            21:        I $D(DDS),$D(DDSREFT)#2,$D(@DDSTMP@("D")) D
        !            22:        . I $D(@DDSTMP@("M")),'^("M") D  Q
        !            23:        .. S DDSANS=$NA(^TMP("DDSWP",$J,DDP,DDSVDA,DDSFLD))
        !            24:        .. M @DDSANS=@DDSTMP@("D")
        !            25:        . S DDSANS=$G(@DDSTMP@("D")) I DDSPARM["E",$D(^("X"))#2 S DDSANS=^("X")
        !            26:        E  D
        !            27:        . D GNDPC Q:$G(DIERR)
        !            28:        . I DDSVPC=0,DDSVDV["W" D GETWP^DDSVALM Q
        !            29:        . S DDSANS=$$GVAL(DIE,DA,DDSVND,DDSVPC)
        !            30:        . I DDSPARM["E" S DDSANS=$$EXTERNAL^DILFD(DDP,DDSFLD,"",DDSANS)
        !            31:        ;
        !            32: GETQ   D:$G(DIERR) ERR^DDSVALM("$$GET^DDSVAL")
        !            33:        Q DDSANS
        !            34:        ;
        !            35: PUT(DDSFILE,DA,DDSFLD,DDSVAL,DDSER,DDSPARM)    ;Put value for file/field
        !            36:        N DDP,DDSVDA,DDSV0,DDSV02,DDSVDL,DIE
        !            37:        K DIERR,^TMP("DIERR",$J)
        !            38:        ;
        !            39:        S:$D(DDSVAL)[0 DDSVAL=""
        !            40:        I $G(DDSPARM)'["I",$G(DDSPARM)'["E" S DDSPARM=$G(DDSPARM)_"E"
        !            41:        ;
        !            42:        D GDIE($D(DDS)#2) G:$G(DIERR) PUTQ G:'$G(DDSVDA) PUTQ
        !            43:        S DDSFLD=$$FIELD(DDP,DDSFLD) G:$G(DIERR) PUTQ
        !            44:        I DDSFLD=.01,"@"[DDSVAL D BLD^DIALOG(3086) G PUTQ
        !            45:        ;
        !            46:        S DDSV0=^DD(DDP,DDSFLD,0),DDSV02=$P(DDSV0,U,2)
        !            47:        I +DDSV02 D
        !            48:        . D MULT^DDSVALM
        !            49:        E  D VALPUT
        !            50:        ;
        !            51: PUTQ   D:$G(DIERR) ERR^DDSVALM("PUT^DDSVAL")
        !            52:        Q
        !            53:        ;
        !            54: VALPUT ;Validate and put
        !            55:        N DDSVY
        !            56:        I DDSPARM["E" D
        !            57:        . D VAL^DIE(DDP,DDSVDA,DDSFLD,"ER",DDSVAL,.DDSVY)
        !            58:        E  D
        !            59:        . D AUXVAL^DIEV(DDP,DDSVDA,DDSFLD,"EIR",DDSVAL,.DDSVY,DDSV0,DDSV02)
        !            60:        Q:$G(DIERR)
        !            61:        I DDSVY=DDSVY(0),'$D(@DDSREFT@("F"_DDP,DDSVDA,DDSFLD,"X")) K DDSVY(0)
        !            62:        ;
        !            63:        I $D(DDS) D
        !            64:        . S:'$D(@DDSREFT@("F"_DDP,DDSVDA,DDSFLD)) ^("GL")=DIE
        !            65:        . D UPDATE(DDP,DDSVDA,.DA,DDSFLD,DDSPG,.DDSVY)
        !            66:        . S DDSCHG=1
        !            67:        E  D
        !            68:        . N DDSFDA
        !            69:        . S DDSFDA(DDP,DDSVDA,DDSFLD)=DDSVY
        !            70:        . D FILE^DIE("","DDSFDA")
        !            71:        Q
        !            72:        ;
        !            73: UPDATE(DDP,DDSVDA,DA,FLD,PG,Y) ;Store value, repaint
        !            74:        N DX,DY,BK,DDO,LEN,EXT,PAGE,RJ,VAL
        !            75:        S (EXT,@DDSREFT@("F"_DDP,DDSVDA,FLD,"D"))=Y,^("F")=3 S:$D(Y(0))#2 (EXT,^("X"))=Y(0)
        !            76:        ;
        !            77:        D:FLD=.01
        !            78:        . S PAGE=0 F  S PAGE=$O(@DDSREFS@("F"_DDP,FLD,"L",PAGE)) Q:'PAGE  D
        !            79:        .. S BK=0 F  S BK=$O(@DDSREFS@("F"_DDP,FLD,"L",PAGE,BK)) Q:'BK  D
        !            80:        ... D:$P($G(@DDSREFS@(PAGE,BK)),U,8)
        !            81:        .... N DDSPTB S DDSPTB=$G(@DDSREFS@(PAGE,BK,"PTB"))
        !            82:        .... D:DDSPTB]"" RPF^DDS7(DDP,DDSPTB,DDSVDA,.DA)
        !            83:        ;
        !            84:        S BK=0 F  S BK=$O(@DDSREFS@("F"_DDP,FLD,"L",PG,BK)) Q:'BK  D
        !            85:        . S DDO=0 F  S DDO=$O(@DDSREFS@("F"_DDP,FLD,"L",PG,BK,DDO)) Q:'DDO  D
        !            86:        .. S LEN=$G(@DDSREFS@(PG,BK,DDO,"D")) Q:LEN=""
        !            87:        .. S DY=+LEN,DX=$P(LEN,U,2),RJ=$P(LEN,U,10),LEN=$P(LEN,U,3)
        !            88:        .. S:$D(DDSREP)#2 DY=DY+$P(DDSREP,U,3)-1
        !            89:        .. S VAL=$P(DDGLVID,DDGLDEL)_$E(EXT,1,LEN)_$P(DDGLVID,DDGLDEL,10)
        !            90:        .. X IOXY
        !            91:        .. W $S(RJ:$J("",LEN-$L(EXT))_VAL,1:VAL_$J("",LEN-$L(EXT)))
        !            92:        ;
        !            93:        D:$D(@DDSREFS@("PT",DDP,FLD)) RPB^DDS7(DDP,FLD,PG)
        !            94:        D:$D(@DDSREFS@("COMP",DDP,FLD,PG)) RPCF^DDSCOMP(PG)
        !            95:        Q
        !            96:        ;
        !            97: GDIE(DDSVL)    ;In:
        !            98:        ;  DDSFILE = File # or root
        !            99:        ;  DA      = Record array
        !           100:        ;  DDSVL   = Flag to lock record
        !           101:        ;Returns:
        !           102:        ;  DIE    = Global root of file
        !           103:        ;  DDP    = File #
        !           104:        ;  DDSVDL = Level #
        !           105:        ;  DDSVDA = DA,DA(1),...,
        !           106:        S DDP=$S(DDSFILE=+DDSFILE:DDSFILE,1:+$P($G(@(DDSFILE_"0)")),U,2))
        !           107:        I DDP=0 D BLD^DIALOG(202,"file") Q
        !           108:        D GL^DDS10(DDP,.DA,.DIE,.DDSVDL,.DDSVDA,$G(DDSVL))
        !           109:        Q
        !           110:        ;
        !           111: GNDPC  ;In:
        !           112:        ;  DDP    = File #
        !           113:        ;  DDSFLD = Field #
        !           114:        ;Returns:
        !           115:        ;  DDSVDDL0 = 0 node of DD
        !           116:        ;  DDSVND   = Node where data resides
        !           117:        ;  DDSVPC   = Piece where data resides
        !           118:        ;  DDSVDV   = Field specifications
        !           119:        ;  X        = Pointed to file root or set of codes
        !           120:        I $G(DDSFLD)="" D BLD^DIALOG(202,"field") Q
        !           121:        S DDSVDDL0=$G(^DD(DDP,DDSFLD,0))
        !           122:        I DDSVDDL0?."^" D  Q
        !           123:        . N I,E
        !           124:        . S (I("FILE"),E("FILE"))=DDP,I(1)="#"_DDSFLD,E("FIELD")=DDSFLD
        !           125:        . D BLD^DIALOG(501,.I,.E)
        !           126:        ;
        !           127:        S DDSVPC=$P(DDSVDDL0,U,4)
        !           128:        S DDSVND=$P(DDSVPC,";"),DDSVPC=$P(DDSVPC,";",2)
        !           129:        S DDSVDV=$P(DDSVDDL0,U,2),X=$P(DDSVDDL0,U,3)
        !           130:        ;
        !           131:        N P S P("FILE")=DDP,P("FIELD")=DDSFLD
        !           132:        I DDSVPC=" " D
        !           133:        . D BLD^DIALOG(520,"computed",.P)
        !           134:        I DDSVPC=0 D
        !           135:        . S DDSVDV=+DDSVDV_$P($G(^DD(+DDSVDV,.01,0)),U,2)
        !           136:        . D:DDSVDV'["W" BLD^DIALOG(520,"multiple",.P)
        !           137:        Q
        !           138:        ;
        !           139: GVAL(DIE,DA,ND,PC)     ;Get value
        !           140:        N LN,Y
        !           141:        S LN=$G(@(DIE_"DA,ND)"))
        !           142:        I $E(PC)'="E" S Y=$P(LN,U,PC)
        !           143:        E  S Y=$E(LN,+$E(PC,2,999),$P(PC,",",2)) S:Y?." " Y=""
        !           144:        Q Y
        !           145:        ;
        !           146: FIELD(DDP,FLD) ;Get field number
        !           147:        N F,P
        !           148:        S:$E(FLD)="""" FLD=$$UQT^DDSLIB($E(FLD,1,$$AFTQ^DDSLIB(FLD)-1))
        !           149:        ;
        !           150:        S F=FLD,P("FILE")=DDP
        !           151:        I FLD'=+$P(FLD,"E") D  Q:$G(DIERR) ""
        !           152:        . S F=$O(^DD(DDP,"B",FLD,""))
        !           153:        . I F="" S P(1)=FLD D BLD^DIALOG(501,.P)
        !           154:        ;
        !           155:        I $D(^DD(DDP,F,0))[0 S P(1)="#"_F D BLD^DIALOG(501,.P) Q ""
        !           156:        Q F

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