[613] | 1 | DDS10 ;SFISC/MKO-BLOCK SETUP ;21SEP2006
|
---|
| 2 | ;;22.0;VA FileMan;**147,151**;Mar 30, 1999;Build 10
|
---|
| 3 | ;Per VHA Directive 2004-038, 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,$P($G(^DIST(.403,+DDS,40,+$G(DDSPG),40,DDS1B,0)),U,4)'="d") Q:$G(DIERR) ;Don't LOCK record if block is display-only
|
---|
| 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 | I '$G(DA) S DDSDA="0," Q
|
---|
| 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 | . D LOCK^DILF(DIE_DA_")") E D BLD^DIALOG(110,"",.DDSP) Q ;**147
|
---|
| 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
|
---|