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

1.1     ! snw         1: DDGFU  ;SFISC/MKO-CALLED FROM THE FORMS ;09:50 AM  28 Sep 1994
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        ;
        !             5: VAL1   ;Data validation code
        !             6:        ;Form: DDS FIELD ADD
        !             7:        I $$GET^DDSVALF("BLOCK","DDGF FIELD ADD")]"",$$GET^DDSVALF("FIELD ORDER","DDGF FIELD ADD")]"",$$GET^DDSVALF("FIELD TYPE","DDGF FIELD ADD")]"" Q
        !             8:        ;
        !             9:        S DDGFT(1)=$C(7)_"Unable to save values."
        !            10:        S DDGFT(2)="All values must be filled in order to add a new field."
        !            11:        D HLP^DDSUTL(.DDGFT)
        !            12:        S DDSERROR=1
        !            13:        K DDGFT
        !            14:        Q
        !            15:        ;
        !            16: DDCAP  ;Caption, Post action on change
        !            17:        ;Form:  DDGF FIELD DD
        !            18:        N DDGFOPG
        !            19:        S DDGFOPG=$$OTHPG
        !            20:        D:DDSOLD="!M" PUT^DDSVAL(.4044,.DA,1.1,"")
        !            21:        ;
        !            22:        D:X="" CAPNULL(DDGFOPG)
        !            23:        D:X]"" UPDDC(DDGFOPG)
        !            24:        Q
        !            25:        ;
        !            26: OTHPG()        ;Return Other Parameters page#
        !            27:        N FLD,SUB,OPG
        !            28:        S FLD=$$GET^DDSVAL(.4044,.DA,4)
        !            29:        I FLD D
        !            30:        . S OPG=11
        !            31:        . S SUB=+$P($G(^DD(DDGFDD,FLD,0)),U,2)
        !            32:        . S:SUB OPG=$S(SUB_$P($G(^DD(SUB,.01,0)),U,2)'["W":21,1:31)
        !            33:        Q $G(OPG)
        !            34:        ;
        !            35:        ;
        !            36: FOCAP  ;Caption, Post action on change
        !            37:        ;Form:  DDGF FIELD FORM ONLY
        !            38:        D:X'="!M" PUT^DDSVAL(.4044,.DA,1.1,"")
        !            39:        ;
        !            40:        D:X="" CAPNULL(21)
        !            41:        D:X]"" UPDDC(21)
        !            42:        Q
        !            43:        ;
        !            44: COMPCAP        ;Caption, Post action on change
        !            45:        ;Form:  DDGF FIELD COMPUTED
        !            46:        D:X'="!M" PUT^DDSVAL(.4044,.DA,1.1,"")
        !            47:        ;
        !            48:        D:X="" CAPNULL(11)
        !            49:        D:X]"" UPDDC(11)
        !            50:        Q
        !            51:        ;
        !            52: CAPNULL(OPG)   ;Caption changed to null
        !            53:        N DC,SC
        !            54:        ;
        !            55:        ;Clear suppress colon
        !            56:        S SC=$$GET^DDSVALF("SUPPRESS COLON AFTER CAPTION?")
        !            57:        D PUT^DDSVALF("SUPPRESS COLON AFTER CAPTION?","","","","I")
        !            58:        Q:'$G(OPG)
        !            59:        ;
        !            60:        ;Clear caption coordinates
        !            61:        D PUT^DDSVALF("CAPTION COORDINATE",1,OPG,"")
        !            62:        ;
        !            63:        ;Move data to the left
        !            64:        S DC=$$GET^DDSVALF("DATA COORDINATE",1,OPG)
        !            65:        S $P(DC,",",2)=$P(DC,",",2)-$L(DDSOLD)-1-'SC
        !            66:        S:$P(DC,",",2)<1 $P(DC,",",2)=1
        !            67:        D PUT^DDSVALF("DATA COORDINATE",1,OPG,DC,"I")
        !            68:        Q
        !            69:        ;
        !            70: UPDDC(OPG)     ;Update data coordinates
        !            71:        N DC,COL
        !            72:        S DC=$$GET^DDSVALF("DATA COORDINATE",1,OPG)
        !            73:        S COL=$P(DC,",",2),COL=COL+$L(X)-$L(DDSOLD)
        !            74:        I DDSOLD="" D
        !            75:        . D PUT^DDSVALF("CAPTION COORDINATE",1,OPG,DC,"I")
        !            76:        . S COL=COL+2
        !            77:        S:COL<1 COL=1
        !            78:        S $P(DC,",",2)=COL
        !            79:        D PUT^DDSVALF("DATA COORDINATE",1,OPG,DC)
        !            80:        Q
        !            81:        ;
        !            82: POSTCH1        ;Field, Post Action On Change
        !            83:        ;Form: DDGF FIELD DD
        !            84:        ;
        !            85:        ;Determine new values for
        !            86:        ; a. caption (if caption is not !M)
        !            87:        ; b. caption coordinates (if ...)
        !            88:        ; c. data coordinates (if ...)
        !            89:        ; d. data length (kept within page boundaries)
        !            90:        ;
        !            91:        ;Input:
        !            92:        ; DDGFPG = Page number
        !            93:        ; DA(1)  = Block #
        !            94:        ; DA     = Field order number
        !            95:        ; X      = Field number
        !            96:        ;
        !            97:        Q:X=""
        !            98:        N FILE,FLD,DD,C,C0,CC,DC,SC,L,PLRC
        !            99:        ;
        !           100:        S FLD=X
        !           101:        S FILE=+$P(^DIST(.404,DA(1),0),U,2) Q:'FILE
        !           102:        S DD=$G(^DD(FILE,FLD,0)) Q:DD?."^"
        !           103:        ;
        !           104:        S (C,C0)=$$GET^DDSVALF("CAPTION",1,1)
        !           105:        I C'="!M" D
        !           106:        . S:C]"" CC=$$GET^DDSVALF("CAPTION COORDINATE",1,11)
        !           107:        . S DC=$$GET^DDSVALF("DATA COORDINATE",1,11)
        !           108:        ;
        !           109:        I $D(DDGFREF),$D(DDGFPG) S PLRC=$P($G(@DDGFREF@("F",DDGFPG)),U,4)
        !           110:        S PLRC=$S($G(PLRC)]"":PLRC-1,1:IOM-2)-$P($G(@DDGFREF@("F",DDGFPG,DA(1))),U,2)
        !           111:        S L=$$LENGTH(FILE,FLD) S:'L L=1
        !           112:        ;
        !           113:        I C'="!M",$P(DD,U)]"" D
        !           114:        . S C=$P(DD,U)
        !           115:        . I $P(DD,U,2),$P($G(^DD(+$P(DD,U,2),.01,0)),U,2)'["W" S C="Select "_C
        !           116:        . D PUT^DDSVALF("CAPTION",1,1,C)
        !           117:        . ;
        !           118:        . I C0="" D
        !           119:        .. S CC=DC
        !           120:        .. S $P(DC,",",2)=$P(DC,",",2)+2
        !           121:        .. D PUT^DDSVALF("CAPTION COORDINATE",1,11,CC)
        !           122:        . E  Q:$P(CC,",")'=$P(DC,",")
        !           123:        . ;
        !           124:        . S $P(DC,",",2)=$P(DC,",",2)+$L(C)-$L(C0)
        !           125:        . S:$P(DC,",",2)<1 $P(DC,",",2)=1
        !           126:        . D PUT^DDSVALF("DATA COORDINATE",1,11,DC)
        !           127:        ;
        !           128:        I C0'="!M",$P(DC,",",2)-2+L>PLRC S L=PLRC-$P(DC,",",2)+2
        !           129:        D PUT^DDSVALF("DATA LENGTH",1,11,L)
        !           130:        Q
        !           131:        ;
        !           132: HBVAL  ;Validate header block
        !           133:        Q:X=""  Q:'$O(@(DIE_DA_",40,""B"",X,"""")"))
        !           134:        S DDSERROR=1
        !           135:        D HLP^DDSUTL($C(7)_DDSEXT_" already exists on this page.")
        !           136:        Q
        !           137:        ;
        !           138: LENGTH(DIFILE,DIFLD)   ;Find the maximum length of field
        !           139:        ;Input:
        !           140:        ; DIFILE = File number
        !           141:        ; DIFLD  = Field number
        !           142:        ;
        !           143:        N DD,DIIT,DILEN,DITYPE
        !           144:        S DILEN=""
        !           145:        S DD=$G(^DD(DIFILE,DIFLD,0)) Q:DD?."^" DILEN
        !           146:        S DITYPE=$P(DD,U,2),DIIT=$P(DD,U,5,999)
        !           147:        ;
        !           148:        I DIIT["$L(X)>" S DILEN=+$P($P(DIIT,"$L(X)>",2,999),"E")
        !           149:        E  I DITYPE["N" S DILEN=+$P(DITYPE,"J",2)
        !           150:        E  I DITYPE["P" S DILEN=$$LENGTH(+$P(DITYPE,"P",2),.01)
        !           151:        ;
        !           152:        E  I DITYPE["S" D
        !           153:        . N DICODE,DICODEA,DIPC
        !           154:        . S DICODE=$P(DD,U,3)
        !           155:        . F DIPC=1:1 S DICODEA=$P(DICODE,";",DIPC) Q:DICODEA=""  D
        !           156:        .. S DILEN=$$MAX(DILEN,$L($P(DICODEA,":")),$L($P(DICODEA,":",2)))
        !           157:        ;
        !           158:        E  I DITYPE["D" D
        !           159:        . N DIDT
        !           160:        . S DIDT=$P($P(DIIT,"S %DT=""",2,999),"""")
        !           161:        . S DILEN=$S(DIDT["S"&(DIDT["T"):20,DIDT["T":17,1:11)
        !           162:        ;
        !           163:        E  I DITYPE["V" D
        !           164:        . N DIL,DIX
        !           165:        . S DIX=0 F  S DIX=$O(^DD(DIFILE,DIFLD,"V",DIX)) Q:'DIX  D
        !           166:        .. Q:'$G(^DD(DIFILE,DIFLD,"V",DIX,0))
        !           167:        .. S DIL=$G(DIL)+1
        !           168:        .. S DIL(DIL)=$$LENGTH(+^DD(DIFILE,DIFLD,"V",DIX,0),.01)
        !           169:        . S DILEN=$G(DIL(1))
        !           170:        . F DIL=1:1:$G(DIL)-1 S DILEN=$$MAX(DIL(DIL),DIL(DIL+1))
        !           171:        ;
        !           172:        E  I DITYPE D
        !           173:        . Q:$D(^DD(+DITYPE,.01,0))[0
        !           174:        . S DILEN=$S($P(^DD(+DITYPE,.01,0),U,2)["W":1,1:$$LENGTH(+DITYPE,.01))
        !           175:        ;
        !           176:        Q DILEN
        !           177:        ;
        !           178: MAX(X,Y,Z)     ;Return the maximum of two or three numbers
        !           179:        N M
        !           180:        S M=$S(X>Y:+X,1:+Y),M=$S(M>$G(Z):M,1:+$G(Z))
        !           181:        Q M

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