Annotation of freem_fileman/DDS1.m, revision 1.1

1.1     ! snw         1: DDS1(DDSPG)    ;SFISC/MKO-LOAD PAGE ;09:37 AM  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:        ;Input:
        !             5:        ;  DDS     = Form number^Form name
        !             6:        ;  DDSPG   = Internal page number
        !             7:        ;  DA      = Record array
        !             8:        ;  DDSREFT = Global location where data (temporarily) is stored
        !             9:        ;  DDP     = Primary file number of form
        !            10:        ;  DIE     = Global root of form
        !            11:        ;  DDSDA   = DA,DA(1),... of form
        !            12:        ;  DDSDL   = Level number
        !            13:        ;Also needed for pointed-to blocks:
        !            14:        ;  DDSDAORG
        !            15:        ;  DDSDLORG
        !            16:        ;Returns:
        !            17:        ;  DIERR
        !            18:        ;
        !            19:        S U="^"
        !            20:        ;
        !            21:        ;Get header block
        !            22:        S DDS1B=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U,2)
        !            23:        I DDS1B]"" D BLK(DDSPG,DDS1B,"",1) G:$G(DIERR) END
        !            24:        ;
        !            25:        ;Get all other blocks on page
        !            26:        S DDS1BO="" F  S DDS1BO=$O(^DIST(.403,+DDS,40,DDSPG,40,"AC",DDS1BO)) Q:DDS1BO=""  S DDS1B=$O(^(DDS1BO,0)) Q:'DDS1B  D BLK(DDSPG,DDS1B,DDS1BO) G:$G(DIERR) END
        !            27:        ;
        !            28: END    K DDS1B,DDS1BO
        !            29:        Q
        !            30:        ;
        !            31: BLK(DDSPG,DDS1B,DDS1BO,DDS1H,DDS1E)    ;Load block
        !            32:        ;In:  DDS1H  = 1 if a header block
        !            33:        ;     DDS1E  = 1 if we're loading up a pointed-to block and
        !            34:        ;              we want interactive dialog (DIC(0)["E") in the lookup
        !            35:        ;
        !            36:        I $D(^DIST(.404,DDS1B,0))[0 D BLD^DIALOG(3051,"#"_DDS1B) Q
        !            37:        ;
        !            38:        N DDS1PTB,DDS1REP S DDS1PTB=""
        !            39:        I '$G(DDS1H) D
        !            40:        . S DDS1PTB=$G(^DIST(.403,+DDS,40,DDSPG,40,DDS1B,1)),DDS1REP=$G(^(2))
        !            41:        . K:DDS1REP<2 DDS1REP
        !            42:        ;
        !            43:        I DDS1PTB]"" N @$$D0(DDSDL),DA,DDP,DIE,DDSDL,DDSDA D  Q:$G(DIERR)
        !            44:        . I $G(DDS1REP)>1 D
        !            45:        .. D BK^DDS10(.DDS1B,.DDP) Q:$G(DIERR)
        !            46:        .. D GDA^DDS10(DDS1B,$G(DDS1E),.DA) Q:$G(DIERR)
        !            47:        .. S DDP=$G(^DD(DDP,0,"UP"))
        !            48:        .. D GL^DDS10(DDP,.DA,.DIE,.DDSDL,.DDSDA,1)
        !            49:        .. D GETD0(.DA,DDSDL)
        !            50:        . E  D
        !            51:        .. D SET^DDS10(DDS1B,$G(DDS1E),.DA,.DDP,.DIE,.DDSDL,.DDSDA)
        !            52:        .. Q:$G(DIERR)
        !            53:        .. I DA="",'$G(DDS1E),$P($G(@DDSREFT@(DDSPG,DDS1B)),U)]"" S DDSDA=$P(^(DDS1B),U),DA=+DDSDA
        !            54:        .. S D0=DA
        !            55:        ;
        !            56:        I $G(DA)]"",$G(@DDSREFT@(DDSPG,DDS1B,DDSDA))<1 D
        !            57:        . S $P(@DDSREFT@(DDSPG,DDS1B,DDSDA),U)=1
        !            58:        . I $G(DDS1REP)>1 D REP Q
        !            59:        . ;
        !            60:        . S @DDSREFT@(DDSPG,DDS1B,DDSDA,"GL")=DIE
        !            61:        . D ^DDS11(DDS1B)
        !            62:        ;
        !            63:        S $P(@DDSREFT@(DDSPG,DDS1B),U)=$G(DDSDA)
        !            64:        Q
        !            65:        ;
        !            66: REP    ;Load data for repeating block
        !            67:        N DDS1DDP,DDS1IND,DDS1INI,DDS1MUL,DDS1PDA,DDS1REF,DDS1RT,DDS1SEL
        !            68:        N DDS1SN,DDS1VAL
        !            69:        S DDS1REF=$NA(@DDSREFT@(DDSPG,DDS1B))
        !            70:        S DDS1DDP=$P(@DDSREFS@(DDSPG,DDS1B),U,3)
        !            71:        S DDS1IND=$P(DDS1REP,U,2) S:DDS1IND="" DDS1IND="B"
        !            72:        S DDS1INI=$P(DDS1REP,U,3)
        !            73:        S DDS1SEL=$P(@DDSREFS@(DDSPG,DDS1B),U,10)
        !            74:        S DDS1PDA=DDSDA
        !            75:        ;
        !            76:        S DDS1MUL=$O(^DD(DDP,"SB",DDS1DDP,""))
        !            77:        ;
        !            78:        S $P(@DDS1REF@(DDS1PDA),U,7,10)=DDP_U_DDS1MUL_U_DDS1SEL_U_DDS1IND
        !            79:        S @DDS1REF@(DDSDA,"GL")=$S(DDS1MUL:DIE_+DA_","""_$P($P(^DD(DDP,DDS1MUL,0),U,4),";")_""",",1:^DIC(DDS1DDP,0,"GL"))
        !            80:        ;
        !            81:        N DIE,DDP
        !            82:        S DIE=@DDS1REF@(DDSDA,"GL"),DDS1RT=$$CREF^DILF(DIE),DDP=DDS1DDP
        !            83:        S DDS1SN=0
        !            84:        ;
        !            85:        I DDS1MUL D
        !            86:        . D DDA^DDS5(0,.DA,.DDSDL)
        !            87:        . S DDSDA=","_DDSDA
        !            88:        . S:'$D(@DDS1RT@(DDS1IND)) DDS1IND="!IEN"
        !            89:        . I DDS1IND="!IEN" D
        !            90:        .. S DA=0 F  S DA=$O(@DDS1RT@(DA)) Q:'DA  D REPLD
        !            91:        . E  D
        !            92:        .. S DDS1VAL=""
        !            93:        .. F  S DDS1VAL=$O(@DDS1RT@(DDS1IND,DDS1VAL)) Q:DDS1VAL=""  D
        !            94:        ... S DA="" F  S DA=$O(@DDS1RT@(DDS1IND,DDS1VAL,DA)) Q:DA=""  D REPLD
        !            95:        ;
        !            96:        E  S DDS1VAL=DA N D0,DA,DDSDA D
        !            97:        . S DDSDA=",",DA=""
        !            98:        . F  S DA=$O(@DDS1RT@(DDS1IND,DDS1VAL,DA)) Q:DA=""  D REPLD
        !            99:        ;
        !           100:        ;
        !           101:        I DDS1INI="l"!(DDS1INI="n") D
        !           102:        . N N,T
        !           103:        . S N=DDS1INI="n"
        !           104:        . S DDS1SN=$O(@DDS1REF@(DDS1PDA," "),-1)+N
        !           105:        . S T=DDS1SN-DDS1REP+2-N
        !           106:        . S DDS1INI=$S(T<1:1_U_DDS1SN,1:T_U_(DDS1REP-'N))_U_DDS1SN
        !           107:        E  S DDS1INI="1^1^1"
        !           108:        ;
        !           109:        S $P(@DDS1REF@(DDS1PDA),U,2,6)=DDS1PDA_U_DDS1INI_U_+DDS1REP
        !           110:        ;
        !           111:        I DDS1MUL D
        !           112:        . D UDA^DDS5(.DA,.DDSDL)
        !           113:        . S DDSDA=$P(DDSDA,",",2,999)
        !           114:        Q
        !           115:        ;
        !           116: REPLD  ;Load data
        !           117:        S DDS1SN=DDS1SN+1,$P(DDSDA,",")=DA,@("D"_DDSDL)=DA
        !           118:        S @DDS1REF@(DDS1PDA,DDS1SN)=DDSDA
        !           119:        S @DDS1REF@(DDS1PDA,"B",DDSDA)=DDS1SN
        !           120:        D ^DDS11(DDS1B)
        !           121:        Q
        !           122:        ;
        !           123: D0(DL) ;Given DL, return string D0,D1,...,Dn
        !           124:        N I,S
        !           125:        S S="" F I=0:1:DL S S=S_"D"_I_","
        !           126:        S:S?.E1"," S=$E(S,1,$L(S)-1)
        !           127:        Q S
        !           128:        ;
        !           129: GETD0(DA,DL)   ;Given DA array, set D0,D1...
        !           130:        N I
        !           131:        S @("D"_DL)=DA
        !           132:        F I=1:1:DL-1 S @("D"_(DL-I))=DA(I)
        !           133:        Q

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