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