| 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 | 
|---|