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>