Annotation of freem_fileman/DDS10.m, revision 1.1
1.1 ! snw 1: DDS10 ;SFISC/MKO-BLOCK SETUP ;09:48 AM 18 Nov 1994
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: ;
! 5: SET(DDS1B,DDS1E,DA,DDP,DIE,DL,DDSDA) ;Get values for pointed-to block
! 6: ;In:
! 7: ; DDS1B = Block number or [Block name] (by ref)
! 8: ; DDS1E = 1, if we're loading a pointed-to block and we want
! 9: ; interactive dialog (DIC(0)["E") in the lookup
! 10: ; DA = Record array
! 11: ;Returns:
! 12: ; DDS1B = Block number
! 13: ; DDP = File number of block
! 14: ; DIE = Global root based on DDP and DA
! 15: ; DL = Level number (top=0)
! 16: ; DDSDA = DA,DA(1),...,
! 17: ;
! 18: D BK(.DDS1B,.DDP) Q:$G(DIERR)
! 19: D GDA(DDS1B,DDS1E,.DA) Q:$G(DIERR)
! 20: D GL(DDP,.DA,.DIE,.DL,.DDSDA,1) Q:$G(DIERR)
! 21: Q
! 22: ;
! 23: BK(DDSBK,DDP) ;Lookup block, get file number
! 24: ;Input:
! 25: ; DDSBK = Block number or [Block name] (by ref)
! 26: ;Returns:
! 27: ; DDSBK = Block number
! 28: ; DDP = File number
! 29: ; DIERR
! 30: ;
! 31: I DDSBK=+$P(DDSBK,"E") D Q
! 32: . I $D(^DIST(.404,DDSBK,0))[0 D BLD^DIALOG(3051,"#"_DDSBK) Q
! 33: . S DDP=+$P(^DIST(.404,DDSBK,0),U,2)
! 34: I DDSBK?1"["1.E1"]" D Q
! 35: . N X,Y,DIC
! 36: . S X=$E(DDSBK,2,$L(DDSBK)-1),DIC="^DIST(.404,",DIC(0)="FZ"
! 37: . D ^DIC I Y<0 D BLD^DIALOG(3051,"named "_X) Q
! 38: . S DDSBK=+Y,DDP=+$P(Y(0),U,2)
! 39: D BLD^DIALOG(3051,"#"_DDSBK)
! 40: Q
! 41: ;
! 42: GDA(DDS1B,DDS1E,DA) ;Find new DA
! 43: ;Input:
! 44: ; DDS1B = Block number
! 45: ; DDS1E = 1:Interactive lookup
! 46: ; DDSDAORG = Original DA array
! 47: ; DDSDLORG = Original DL
! 48: ; DDSPG
! 49: ;Returns:
! 50: ; DA = Record number
! 51: ; DIERR
! 52: ;
! 53: N DDSDA,DDSI,X
! 54: ;
! 55: ;Set DA array to its original value
! 56: S DA=DDSDAORG
! 57: F DDSI=1:1:DDSDLORG S DA(DDSI)=DDSDAORG(DDSI)
! 58: D DDSDA(.DA,DDSDLORG,.DDSDA)
! 59: ;
! 60: ;Xecute each PTB node
! 61: F DDSI=1:1 Q:DA=""!'$D(@DDSREFS@(DDSPG,DDS1B,"PTB",DDSI)) X ^(DDSI) S:$G(X)'>0 DA=""
! 62: ;
! 63: ;Kill descendants of DA
! 64: I '$G(DIERR) S DDSI=DA K DA S DA=DDSI
! 65: S:DA'>0!$G(DIERR) DA=""
! 66: Q
! 67: ;
! 68: GL(F,DA,DIE,DL,DDSDA,DDSL) ;Get global root, level, and IEN
! 69: ;Input variables:
! 70: ; F = file #
! 71: ; DA = array
! 72: ; DDSL = flag to lock record
! 73: ;Returns:
! 74: ; DIE = global root of file (null if error)
! 75: ; DL = level (top=0) (null if error)
! 76: ; DDSDA = IEN
! 77: ; DIERR = Error flag
! 78: ;
! 79: I '$D(^DD(F)) D BLD^DIALOG(401,F) S (DIE,DL)="" Q
! 80: I $D(^DIC(F,0,"GL"))#2 S DIE=^("GL"),DL=0
! 81: E D SUBGL Q:$G(DIERR)
! 82: ;
! 83: Q:'$G(DA)
! 84: D DDSDA(.DA,DL,.DDSDA)
! 85: ;
! 86: N DDSP S DDSP("FILE")=F,DDSP("IEN")=DDSDA
! 87: ;
! 88: I $D(@(DIE_DA_",0)"))[0 D BLD^DIALOG(601,"",.DDSP)
! 89: I $D(@(DIE_DA_",-9)")) D BLD^DIALOG(602,"",.DDSP)
! 90: ;
! 91: I $G(DDSL),$D(^TMP("DDS",$J,"LOCK",DIE_DA_")"))[0 D Q:$G(DIERR)
! 92: . L +@(DIE_DA_")"):0 E D BLD^DIALOG(110,"",.DDSP) Q
! 93: . S ^TMP("DDS",$J,"LOCK",DIE_DA_")")=""
! 94: Q
! 95: ;
! 96: SUBGL ;Get root and level for subfile
! 97: N D,I,S,U1
! 98: S D=F
! 99: F DL=0:1 Q:$D(^DD(D,0,"UP"))[0 S U1=^("UP") G:'$D(^DD(U1,"SB",D)) SUBER G:$D(^DD(U1,$O(^(D,"")),0))[0 SUBER S S(DL+1)=""""_$P($P(^(0),U,4),";")_"""",D=U1
! 100: G:$D(^DIC(D,0,"GL"))[0 SUBER S DIE=^("GL")
! 101: F I=DL:-1:1 G:$D(DA(I))[0 SUBER S DIE=DIE_DA(I)_","_S(I)_","
! 102: Q
! 103: ;
! 104: SUBER ;Come here if an error is encountered in GL
! 105: S (DIE,DL)=""
! 106: D BLD^DIALOG(309)
! 107: Q
! 108: ;
! 109: DDSDA(DA,DL,DDSDA) ;Determine DDSDA
! 110: ;Input:
! 111: ; DA = Record array
! 112: ; DL = Level number (top=0)
! 113: ;Output:
! 114: ; DDSDA = DA,DA(1),...,
! 115: ;
! 116: N I
! 117: I DA="" S DDSDA="" Q
! 118: S DDSDA=DA_"," F I=1:1:DL S DDSDA=DDSDA_DA(I)_","
! 119: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>