1 | TMGMDCPY ;ISC-SF/JLI - COPY ONE USER (PRIM & SEC MENUS, KEYS, FILES) TO ANOTHER USER ;01/23/96 11:18
|
---|
2 | ;;8.0;KERNEL;**19**;Jul 10, 1995
|
---|
3 |
|
---|
4 | ;"Copied from XWSMDCPY for decompilation and modification
|
---|
5 |
|
---|
6 | S XQBOSS=0
|
---|
7 | I $D(^XUSEC("XUMGR",DUZ)) S XQBOSS=1
|
---|
8 | I 'XQBOSS do
|
---|
9 | . W !!,?5,"Note: You must have been delegated these options and",!
|
---|
10 | . W ?11,"keys to transfer them from user to user.",!
|
---|
11 | ;"I 'XQBOSS,$O(^VA(200,DUZ,19.5,0))'>0 W !!,$C(7),"No Menus have been delegated to you to use this option",!,"If there are questions see your site manager's staff." Q
|
---|
12 | W !!
|
---|
13 |
|
---|
14 | S DIC("A")="Select the user to be COPIED FROM: "
|
---|
15 | S DIC=200,DIC(0)="AQEM"
|
---|
16 | D ^DIC Q:Y'>0 S XQUSR1=+Y
|
---|
17 |
|
---|
18 | S XQUSRPM=+$G(^VA(200,XQUSR1,201))
|
---|
19 | I XQUSRPM="" S XQUSRPM=0 W !,"The source user has no primary menu."
|
---|
20 |
|
---|
21 | I 'XQBOSS,XQUSRPM>0,'$D(^VA(200,DUZ,19.5,"B",XQUSRPM)) do
|
---|
22 | . W !,$C(7),"You are not able to give out this user's primary menu ",$P(^DIC(19,XQUSRPM,0),U)
|
---|
23 | . S XQUSRPM=0
|
---|
24 |
|
---|
25 | S XQUSEC(0)=""
|
---|
26 | F I=0:0 S I=$O(^VA(200,XQUSR1,203,I)) Q:I'>0 do ;"cycle through secondary menu options.
|
---|
27 | . S X=^(I,0)
|
---|
28 | . S XQUSEC(+X)=$P(X,U,2)
|
---|
29 | . I 'XQBOSS,'$D(^VA(200,DUZ,19.5,"B",+X)) do
|
---|
30 | . . W !,$C(7),"Skipping secondary menu ",$P(^DIC(19,+X,0),U)
|
---|
31 | . . K XQUSEC(+X)
|
---|
32 | ;"I XQUSRPM'>0,$O(XQUSEC(0))'>0 W !!,$C(7),"No Primary or Secondary Menus to copy -- quitting.",!! G EXIT
|
---|
33 |
|
---|
34 | S XQUSEK(0)=""
|
---|
35 | F I=0:0 S I=$O(^VA(200,XQUSR1,51,I)) Q:I'>0 do ;"cycle through keys
|
---|
36 | . S X=+^(I,0)
|
---|
37 | . I $D(^DIC(19,+X,0)) do
|
---|
38 | . . S XQUSEK(X)=X
|
---|
39 | . . I 'XQBOSS,'$D(^VA(200,DUZ,52,"B",X)) do
|
---|
40 | . . . W !,$C(7),"Not authorized to give ",$P(^DIC(19.1,X,0),U)," key -- skipping"
|
---|
41 | . . . K XQUSEK(X)
|
---|
42 | ;
|
---|
43 | ;Get recipient user
|
---|
44 | ;
|
---|
45 | S DIC("A")="Select a USER to be COPIED TO: ",DIC="^VA(200,",DIC(0)="AEMQ"
|
---|
46 | F XQI=0:0 D ^DIC Q:Y'>0 S XUSR(+Y)="",DIC("A")="Select ANOTHER USER: "
|
---|
47 | K DIC
|
---|
48 | ;
|
---|
49 | goto:$O(XUSR(0))'>0 EXIT
|
---|
50 |
|
---|
51 | R !!,"Do you want to QUEUE this job ? Y// ",X:DTIME
|
---|
52 | Q:'$T!(X[U)
|
---|
53 | S:X="" X="Y"
|
---|
54 | I "Yy"[$E(X) D TSK G EXIT
|
---|
55 | ;
|
---|
56 | DQ ; ;"Optional entry point for tasked job
|
---|
57 | F XQI=0:0 S XQI=$O(XUSR(XQI)) Q:XQI'>0 D COPY1 ;"Cycle through Dest users.
|
---|
58 |
|
---|
59 | EXIT ;
|
---|
60 | K %,D,D0,DA,DI,DISYS,DIC,DIE,DR,X,XQBOSS,XQI,XQJ,XQUSEK,XQUSR1,XUSR,XQUSEC,XQUSRPM,Y
|
---|
61 | Q
|
---|
62 | ;" ---------- Actual work below ----------------
|
---|
63 | COPY1 I XQUSRPM>0 do
|
---|
64 | . S DIE=200
|
---|
65 | . S DA=XQI
|
---|
66 | . S DR="201///"_$P(^DIC(19,XQUSRPM,0),U)
|
---|
67 | . D ^DIE
|
---|
68 | ;"XQI is dest user's IEN
|
---|
69 | S:'$D(^VA(200,XQI,203,0)) ^(0)="^200.03P"
|
---|
70 | S DLAYGO=200
|
---|
71 | F XQJ=0:0 S XQJ=$O(XQUSEC(XQJ)) Q:XQJ'>0 do
|
---|
72 | . S DIC="^VA(200,"_XQI_",203,"
|
---|
73 | . S DA(1)=XQI
|
---|
74 | . S DIC("P")=200.03
|
---|
75 | . S X=$P(^DIC(19,XQJ,0),U)
|
---|
76 | . S DIC(0)="ML"
|
---|
77 | . D ^DIC
|
---|
78 | . I Y>0,'$P(Y,U,3),XQUSEC(XQJ)'="" do
|
---|
79 | . . S DIE=DIC
|
---|
80 | . . S DIE("P")=200.03
|
---|
81 | . . S DA=+Y
|
---|
82 | . . S DR="2///"_XQUSEC(XQJ)_";"
|
---|
83 | . . D ^DIE
|
---|
84 | S:'$D(^VA(200,XQI,51,0)) ^(0)="^200.051P^"
|
---|
85 | S (DA,DA(1))=XQI F XQJ=0:0 S XQJ=$O(XQUSEK(XQJ)) Q:XQJ'>0 do
|
---|
86 | . S DIC="^VA(200,"_XQI_",51,"
|
---|
87 | . S DIC("P")=200.051
|
---|
88 | . S DIC(0)="ML"
|
---|
89 | . S X=$P(^DIC(19.1,XQUSEK(XQJ),0),U)
|
---|
90 | . D ^DIC
|
---|
91 | K DLAYGO
|
---|
92 | Q
|
---|
93 | ;
|
---|
94 | TSK S ZTRTN="DQ^XQSMDCPY" ;"the entry point for the task.
|
---|
95 | S ZTIO=""
|
---|
96 |
|
---|
97 | S ZTDESC="XQSMD Copy User"
|
---|
98 |
|
---|
99 | ;"Save pointer to source's primary menu (e.g. '215')
|
---|
100 | S ZTSAVE("XQUSRPM")=""
|
---|
101 |
|
---|
102 | ;"Save list of secondary menus. Format
|
---|
103 | ;" XQUSEC(MenuIEN)=Menu Synonym (piece 2) (or "")
|
---|
104 | ;" XQUSEC(MenuIEN)=Menu Synonym (piece 2) (or "")
|
---|
105 | S ZTSAVE("XQUSEC(")=""
|
---|
106 |
|
---|
107 | ;"Save list of keys. Format
|
---|
108 | ;" XQUSEK(KeyIEN)=KeyIEN
|
---|
109 | S ZTSAVE("XQUSEK(")=""
|
---|
110 |
|
---|
111 | ;"Save destination users. format:
|
---|
112 | ;" XUSR(+Y)=""
|
---|
113 | ;" XUSR(+Y)=""
|
---|
114 | S ZTSAVE("XUSR(")=""
|
---|
115 |
|
---|
116 | D ^%ZTLOAD ;"launch task.
|
---|
117 | Q
|
---|