Annotation of freem_fileman/DDS11.m, revision 1.1
1.1 ! snw 1: DDS11(DDSBK,DDSNFO) ;SFISC/MLH,MKO-LOAD DATA ;08:46 AM 24 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 variables:
! 5: ; DDSBK = Block #
! 6: ; DDSPG = Page # (needed for form-only fields)
! 7: ; DDSREFT = Temporary global location
! 8: ; DDP = File number of block
! 9: ; DIE = Global root of block
! 10: ; DDSDA = DA,DA(1),...
! 11: ; DDSNFO = Flag means don't reload form only fields
! 12: ;
! 13: N X,Y
! 14: S DDS1REFD=$NA(@DDSREFT@("F"_DDP,DDSDA))
! 15: ;
! 16: S DDS1FO=0
! 17: F S DDS1FO=$O(^DIST(.404,DDSBK,40,DDS1FO)) Q:'DDS1FO D LD
! 18: ;
! 19: I DDP,DDSDA S @DDS1REFD@("GL")=DIE
! 20: ;
! 21: K DDS1REFD,DDS1FLD,DDS1FO,DDS1LN,DDS1ND,DDS1PC,DDS1DV
! 22: K DDS1D1,DDS1D2,DDS1D3
! 23: Q
! 24: ;
! 25: LD ;Load data for a field
! 26: ;
! 27: ;Get form only fields
! 28: I $P($G(^DIST(.404,DDSBK,40,DDS1FO,0)),U,3)=2,$P($G(^(20)),U)]"" D Q
! 29: . Q:$G(DDSNFO)
! 30: . N DDP
! 31: . S DDP=0,DDS1FLD=DDS1FO_","_DDSBK
! 32: . Q:"^1^3^"[(U_$G(@DDSREFT@("F0",DDSDA,DDS1FLD,"F"))_U)
! 33: . S Y=""
! 34: . I $D(@DDSREFT@("F0",DDSDA,DDS1FLD,"F"))[0,$G(^DIST(.404,DDSBK,40,DDS1FO,3))]"" D DEF(^(3),$G(^(3.1)))
! 35: . S (@DDSREFT@("F0",DDSDA,DDS1FLD,"D"),^("O"))=Y
! 36: ;
! 37: ;Get DD fields
! 38: S DDS1FLD=$G(^DIST(.404,DDSBK,40,DDS1FO,1)) Q:DDS1FLD?."^"
! 39: Q:"^1^3^"[(U_$G(@DDS1REFD@(DDS1FLD,"F"))_U)
! 40: ;
! 41: S DDS1LN=$G(^DD(DDP,DDS1FLD,0)) Q:DDS1LN?."^"
! 42: S DDS1PC=$P(DDS1LN,U,4),DDS1ND=$P(DDS1PC,";"),DDS1PC=$P(DDS1PC,";",2)
! 43: S DDS1DV=$P(DDS1LN,U,2),X=$P(DDS1LN,U,3)
! 44: ;
! 45: D @($S(DDS1FLD=.001:"L3",DDS1PC=0:"L2",1:"L1"))
! 46: ;
! 47: I DDS1DV["O"!(DDS1DV["P")!(DDS1DV["V")!(DDS1DV["D")!(DDS1DV["S") D
! 48: . Q:$D(@DDS1REFD@(DDS1FLD,"X"))
! 49: . D:Y]"" XFORM
! 50: . S @DDS1REFD@(DDS1FLD,"X")=Y
! 51: ;
! 52: I DDS1PC=0,DDS1DV,DDS1DV'["W",$D(@DDS1REFD@(DDS1FLD,"X"))[0 S ^("X")=Y
! 53: Q
! 54: ;
! 55: L1 ;Get non-multiple field
! 56: S DDS1LN=$G(@(DIE_"DA,DDS1ND)"))
! 57: I $E(DDS1PC)'="E" S Y=$P(DDS1LN,U,DDS1PC)
! 58: E S Y=$E(DDS1LN,+$E(DDS1PC,2,999),$P(DDS1PC,",",2)) S:Y?." " Y=""
! 59: ;
! 60: K @DDS1REFD@(DDS1FLD,"X")
! 61: I Y="",$D(@DDS1REFD@(DDS1FLD,"F"))[0,$D(^DIST(.404,DDSBK,40,DDS1FO,3))#2 D DEF(^(3),$G(^(3.1)))
! 62: S @DDS1REFD@(DDS1FLD,"D")=Y
! 63: Q
! 64: ;
! 65: L2 ;Get multiple field
! 66: S DDS1SUB=+$P(DDS1LN,U,2) Q:$D(^DD(DDS1SUB,.01,0))[0
! 67: S DDS1DV=DDS1SUB_$P(^DD(DDS1SUB,.01,0),U,2),X=$P(^(0),U,3)
! 68: S DDS1DIC=DIE_DA_","""_DDS1ND_""","
! 69: ;
! 70: D:DDS1DV'["W"
! 71: . I $D(^DIST(.404,DDSBK,40,DDS1FO,3))#2 D D L22
! 72: .. D DEF(^DIST(.404,DDSBK,40,DDS1FO,3),$G(^(3.1)),1)
! 73: .. S DDS1RN=$S($G(Y)="FIRST":$O(@(DDS1DIC_"0)")),$G(Y)="LAST":$O(@(DDS1DIC_""" "")"),-1),1:+$G(Y))
! 74: . E I $D(DUZ)#2,$L(DDS1DIC)<29,$D(^DISV(DUZ,DDS1DIC))#2 S DDS1RN=^(DDS1DIC) D L22
! 75: . E S DDS1RN=$S($D(@(DDS1DIC_"0)"))#2:$P(^(0),U,3),1:$O(^(0))) D L22
! 76: . E S (Y,@DDS1REFD@(DDS1FLD,"D"))=""
! 77: ;
! 78: S @DDS1REFD@(DDS1FLD,"M")=$S(DDS1DV["W":0,1:1)_DDS1DIC_U_DDS1SUB
! 79: K DDS1DIC,DDS1RN,DDS1SUB
! 80: Q
! 81: L22 ;
! 82: I DDS1RN>0,$D(@(DDS1DIC_+DDS1RN_",0)"))#2 S Y=$P(^(0),U),@DDS1REFD@(DDS1FLD,"D")=+DDS1RN
! 83: Q
! 84: ;
! 85: DEF(DDS1LN3,DDS1LN31,DDS1MULT) ;Get default
! 86: N DDS1PTR,DDS1OT
! 87: Q:DDS1LN3=""
! 88: I DDS1LN3'="!M" S Y=DDS1LN3
! 89: E I DDS1LN31'?."^" X DDS1LN31 S:$D(Y)[0 Y=""
! 90: Q:Y=""!$G(DDS1MULT)
! 91: ;
! 92: K DIR
! 93: I DDS1FLD["," D
! 94: . S DIR(0)=$P(^DIST(.404,DDSBK,40,DDS1FO,20),U)_$P(^(20),U,2,3)
! 95: . S:DIR(0)?1"DD".E DIR(0)=$P(DIR(0),U,2,999)
! 96: . I $E($P(DIR(0),U))="P" S DDS1PTR=1
! 97: E D
! 98: . S DIR(0)=DDP_","_DDS1FLD
! 99: . S DDS1PTR=$P($G(^DD(DDP,DDS1FLD,0)),U,2)
! 100: . S DDS1OT=DDS1PTR["O",DDS1PTR=DDS1PTR["P"
! 101: S DIR("V")="",(X,DIR("B"))=Y
! 102: D ^DIR
! 103: ;
! 104: I DDER S Y=""
! 105: I Y]"" D
! 106: . I $G(DDS1PTR) S Y=$P(Y,U)
! 107: . S $P(@DDSREFT@("F"_DDP,DDSDA,DDS1FLD,"F"),U)=3
! 108: . I $G(DDS1PTR),$G(DDS1OT),$D(^DD(DDP,DDS1FLD,2))#2 K Y(0),Y(0,0)
! 109: . S:$D(Y(0)) @DDSREFT@("F"_DDP,DDSDA,DDS1FLD,"X")=$S($D(Y(0,0))#2:Y(0,0),1:Y(0))
! 110: . S DDSCHG=1
! 111: K DDER,DIR
! 112: Q
! 113: ;
! 114: L3 ;Get number field
! 115: S (@DDS1REFD@(.001,"D"),Y)=DA
! 116: Q
! 117: ;
! 118: EXT(DDP,DDS1FLD,Y) ;Return external form of Y
! 119: N DDS1DV,X
! 120: S DDS1DV=$P(^DD(DDP,DDS1FLD,0),U,2),X=$P(^(0),U,3)
! 121: I DDS1DV'["O",DDS1DV'["P",DDS1DV'["V",DDS1DV'["D",DDS1DV'["S" Q Y
! 122: I DDS1DV'["O",Y="" Q ""
! 123: D XFORM
! 124: Q Y
! 125: ;
! 126: XFORM ;
! 127: N DDS1N
! 128: I DDS1DV["O",+DDS1FLD,$D(^DD(DDP,+DDS1FLD,2))#2 X ^(2) Q
! 129: I DDS1DV["P",@("$D(^"_X_"0))") S X=+$P(^(0),U,2) Q:'$D(^(Y,0)) S Y=$P(^(0),U),X=$P(^DD(X,.01,0),U,3),DDS1DV=$P(^(0),U,2) G XFORM
! 130: I DDS1DV["V",+$P(Y,"E"),$P(Y,";",2)["(",$D(@(U_$P(Y,";",2)_"0)"))#2 S X=+$P($P(^(0),U,2),"E") Q:$D(^(+$P(Y,"E"),0))[0 S Y=$P(^(0),U) I $D(^DD(+$P(X,"E"),.01,0))#2 S DDS1DV=$P(^(0),U,2),X=$P(^(0),U,3) G XFORM
! 131: I DDS1DV["D" X ^DD("DD")
! 132: I DDS1DV["S" S DDS1N=$P($P(";"_X,";"_Y_":",2),";",1) S:DDS1N]"" Y=DDS1N
! 133: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>