1 | XPDKEY ;SFISC/RWF,RSD - Tools to work on KEYS ;9/21/95 13:47
|
---|
2 | ;;8.0;KERNEL;**5**;Jul 10, 1995
|
---|
3 | Q
|
---|
4 | ;XPDOLD=current Key name, XPDNEW=new Key name
|
---|
5 | ;return 1 for success, 0 for failure
|
---|
6 | RENAME(XPDOLD,XPDNEW) ;EF. Rename a Security Key
|
---|
7 | Q:$D(XPDOLD)+$D(XPDNEW)'=2 0
|
---|
8 | N DA,DIERR,DIK,XPD,XPDKEY,XPDI
|
---|
9 | S XPDKEY=$O(^DIC(19.1,"B",XPDOLD,0)) Q:XPDKEY'>0 0
|
---|
10 | S XPD(19.1,XPDKEY_",",.01)=XPDNEW D UPDATE^DIE("","XPD")
|
---|
11 | I $D(DIERR) Q 0
|
---|
12 | S XPDI=0,DA=XPDKEY,DIK="^VA(200,XPDI,51,",DIK(1)=.01
|
---|
13 | F S XPDI=$O(^VA(200,"AB",XPDKEY,XPDI)) Q:'XPDI S DA(1)=XPDI D EN1^DIK
|
---|
14 | D LOCKS(XPDOLD,XPDNEW)
|
---|
15 | Q 1
|
---|
16 | ;
|
---|
17 | LOCKS(XPDOLD,XPDNEW) ;check file 19 for LOCKS and REVERSE/LOCK fields
|
---|
18 | N XPD,XPDI,X,Y
|
---|
19 | Q:$D(XPDOLD)+$D(XPDNEW)'=2
|
---|
20 | S XPDI=0
|
---|
21 | F S XPDI=$O(^DIC(19,XPDI)) Q:'XPDI S X=$G(^(XPDI,0)),Y=$G(^(3)) D:$L(X)
|
---|
22 | .K XPD
|
---|
23 | .S:$P(X,"^",6)=XPDOLD XPD(19,XPDI_",",3)=XPDNEW
|
---|
24 | .S:$P(Y,"^")=XPDOLD XPD(19,XPDI_",",3.01)=XPDNEW
|
---|
25 | .D:$D(XPD) UPDATE^DIE("","XPD")
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | DEL(XPDA) ; Delete a key.
|
---|
29 | N DA,DIK,XPD,XPDKEY,XPDI
|
---|
30 | Q:'$D(^DIC(19.1,+$G(XPDA),0)) S XPDKEY=$P(^(0),"^")
|
---|
31 | S XPDI=0,DA=XPDA
|
---|
32 | F S XPDI=$O(^VA(200,"AB",XPDA,XPDI)) Q:'XPDI D
|
---|
33 | . S DA(1)=XPDI,DIK="^VA(200,XPDI,51," D ^DIK
|
---|
34 | . S DIK="^VA(200,XPDI,52," D ^DIK
|
---|
35 | K DA S DA=XPDA,DIK="^DIC(19.1,"
|
---|
36 | D ^DIK,LOCKS(XPDKEY,"@")
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | LKUP(X) ;Lookup a in the KEY file.
|
---|
40 | Q:'$L(X) ""
|
---|
41 | I X?1N.NP Q $P($G(^DIC(19.1,X,0)),"^")
|
---|
42 | Q $O(^DIC(19.1,"B",X,0))
|
---|