[796] | 1 | TMGXUP ;TMG/kst/Altered version of XUP ;03/25/06
|
---|
| 2 | ;;1.0;TMG-LIB;**1**;12/23/05
|
---|
| 3 |
|
---|
| 4 | ;"Customized version of Vista XUP module
|
---|
| 5 | ;"===================================================================================
|
---|
| 6 | ;"The following section started as essentially a copy of ^XUP code, to allow me to
|
---|
| 7 | ;" use just part of it to set up the programmers environment
|
---|
| 8 | ;"...As time has gone on, though, I have added more tweaks...
|
---|
| 9 | ;"===================================================================================
|
---|
| 10 | XUP()
|
---|
| 11 | ;"Purpose: Because this configurator will be working with the database,
|
---|
| 12 | ;" it must have a proper environment setup. And user must have
|
---|
| 13 | ;" proper access. So this function will set up everything needed.
|
---|
| 14 | ;"Output: Environmental variables are setup.
|
---|
| 15 | ;"Result: 1=OK to continue. 0=Abort
|
---|
| 16 |
|
---|
| 17 | ;"Consider:
|
---|
| 18 | ;"DT^DICRW: Required Variables
|
---|
| 19 | ;"Sets up the required variables of VA FileMan. There are no input variables;
|
---|
| 20 | ;"simply call the routine at this entry point.
|
---|
| 21 | ;"NOTE: This entry point kills the variables DIC and DIK.
|
---|
| 22 |
|
---|
| 23 | new result set result=cOKToCont
|
---|
| 24 | if $get(TMGDEBUG)>0 do DebugEntry^TMGDEBUG(.DBIndent,"^XUP")
|
---|
| 25 | if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Inside XML Scripter, setting up programmer environment.")
|
---|
| 26 |
|
---|
| 27 | ;"MSC/SGS: added to allow processes to be interrupted
|
---|
| 28 | set $ZINT="X ^%ZOSF(""INTERRUPT"")"
|
---|
| 29 | Set U="^"
|
---|
| 30 |
|
---|
| 31 | goto XLp2 ;"bypass next section
|
---|
| 32 | ;"--------------------------------------------------------------------
|
---|
| 33 | ;"Set up user info.
|
---|
| 34 | set DIC=200 ;"file 200 = ^VA(200,*)
|
---|
| 35 | set DIC(0)="MZ" ;" "AEQMZ"
|
---|
| 36 | set X="TMGXINST,BOT"
|
---|
| 37 | ;"set X="Dodd,Norman" ;"Note: came pre-installed in OpenVistA
|
---|
| 38 | do ^DIC
|
---|
| 39 | if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Y=",Y)
|
---|
| 40 | if Y<0 set result=cAbort goto XUPDone
|
---|
| 41 | kill DIC
|
---|
| 42 | set DUZ=+Y
|
---|
| 43 | set DUZ(0)=$piece(Y(0),U,4)
|
---|
| 44 | set DTIME=600
|
---|
| 45 | if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"DUZ(0)=",DUZ(0))
|
---|
| 46 | if DUZ(0)'="@" do goto XUPAbort
|
---|
| 47 | . do ShowError^TMGDEBUG(.PriorErrorFound,"Unable to setup a user with programmer's access privilages.")
|
---|
| 48 | ;"--------------------------------------------------------------------
|
---|
| 49 |
|
---|
| 50 | XLp2
|
---|
| 51 | new User,UName
|
---|
| 52 | set User=$get(^VA(200,1,0))
|
---|
| 53 | if User="" do goto XUPAbort
|
---|
| 54 | . do ShowError^TMGDEBUG(.PriorErrorFound,"Unable to access user #1 (expected to be IRM,MGR). The installer should be modified to log in as another user. Sorry. Quiting.")
|
---|
| 55 | set UName=$piece(User,"^",1)
|
---|
| 56 | if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Logging in as user: ",UName)
|
---|
| 57 | set LoggedUsr=UName ;" setup global-scope variable that script can access
|
---|
| 58 | set UName=$piece(User,"^",1)
|
---|
| 59 | kill DIC
|
---|
| 60 | set DUZ=1
|
---|
| 61 | set DUZ(0)=$piece(User,"^",4)
|
---|
| 62 | set DTIME=600
|
---|
| 63 | if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"DUZ(0)=",DUZ(0))
|
---|
| 64 | if DUZ(0)'="@" do
|
---|
| 65 | . if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Temporarily giving install-user '@' privilages.")
|
---|
| 66 | . set DUZ(0)="@"
|
---|
| 67 |
|
---|
| 68 | XLp3
|
---|
| 69 | do HOME^%ZIS ;"Reset Home Device IO Variables
|
---|
| 70 |
|
---|
| 71 | new $ESTACK,$ETRAP
|
---|
| 72 | set $ECODE="",$ETRAP="" ;"Clear and error trap
|
---|
| 73 | xecute ^%ZOSF("TYPE-AHEAD")
|
---|
| 74 |
|
---|
| 75 | kill ^UTILITY($J)
|
---|
| 76 | kill ^XUTL("XQ",$J)
|
---|
| 77 | do KILL1 ;"do KILL1^XUSCLEAN
|
---|
| 78 |
|
---|
| 79 | set DT=$$DT^XLFDT ;"DT is a system=wide date variable
|
---|
| 80 |
|
---|
| 81 | set XUEOFF=^%ZOSF("EOFF")
|
---|
| 82 | set XUEON=^%ZOSF("EON")
|
---|
| 83 | set U="^"
|
---|
| 84 | set XUTT=0
|
---|
| 85 | set XUIOP=""
|
---|
| 86 | do GETENV^%ZOSV
|
---|
| 87 | set XUENV=Y
|
---|
| 88 | set XUVOL=$piece(Y,U,2)
|
---|
| 89 | set XUCI=$piece(Y,U,1)
|
---|
| 90 |
|
---|
| 91 | ;"Get user info
|
---|
| 92 | if $get(DUZ)>0 do
|
---|
| 93 | . kill XUDUZ
|
---|
| 94 | . if $data(DUZ(0)) set XUDUZ=DUZ(0)
|
---|
| 95 | . do DUZ^XUP(DUZ)
|
---|
| 96 | . if $data(XUDUZ) set DUZ(0)=XUDUZ
|
---|
| 97 | . kill XUDUZ
|
---|
| 98 |
|
---|
| 99 | if ($get(DUZ)'>0)!(('$data(DUZ(0)))) do ASKDUZ^XUP goto:Y'>0 XUPAbort
|
---|
| 100 |
|
---|
| 101 | if '$data(XQUSER) set XQUSER=$S($data(^VA(200,DUZ,20)):$piece(^(20),"^",2),1:"Unk")
|
---|
| 102 | set DTIME=600 ;Set a temp DTIME
|
---|
| 103 |
|
---|
| 104 | ;"Getting Terminal Type
|
---|
| 105 | ;"if XUTT do ENQ^XUS1 G:$D(XUIOP(1)) ZIS2 S Y=0 D TT^XUS3 I Y>0 S XUIOP(1)=$P(XUIOP,";",2) G ZIS2
|
---|
| 106 | if 'XUTT goto ZIS2a
|
---|
| 107 | do ENQ^XUS1
|
---|
| 108 | if $data(XUIOP(1)) goto ZIS2
|
---|
| 109 | set Y=0
|
---|
| 110 | do TT^XUS3
|
---|
| 111 | if Y>0 set XUIOP(1)=$P(XUIOP,";",2)
|
---|
| 112 | goto ZIS2
|
---|
| 113 | ZIS2a
|
---|
| 114 | set X="`"_+$G(^VA(200,DUZ,1.2))
|
---|
| 115 | set DIC="^%ZIS(2,"
|
---|
| 116 | set DIC(0)="MQ"_$S(X]"`0":"",1:"AE")
|
---|
| 117 | do ^DIC
|
---|
| 118 | if Y'>0 goto XUPAbort
|
---|
| 119 | set XUIOP(1)=$P(Y,U,2)
|
---|
| 120 | if DIC(0)["A",$get(^VA(200,+DUZ,0))]"" set $piece(^VA(200,DUZ,1.2),U,1)=+Y
|
---|
| 121 |
|
---|
| 122 | ZIS2
|
---|
| 123 | set %ZIS="L" ;"will cause IO("ZIO") to contain static physical port name
|
---|
| 124 | set IOP="HOME;"_XUIOP(1)
|
---|
| 125 | do ^%ZIS ;"Set up device handler
|
---|
| 126 | if POP goto XUPAbort ;"POP has error from ^%ZIS
|
---|
| 127 | if $get(TMGDEBUG)>0 do DebugMsg^TMGDEBUG(DBIndent,"Using terminal type: ",IOST)
|
---|
| 128 | set DTIME=$$DTIME^XUP(DUZ,IOS)
|
---|
| 129 | set DUZ("BUF")=1
|
---|
| 130 | set XUDEV=IOS
|
---|
| 131 |
|
---|
| 132 | ;"Save info, Set last sign-on
|
---|
| 133 | do SAVE^XUS1
|
---|
| 134 | set $piece(^VA(200,DUZ,1.1),"^",1)=$$NOW^XLFDT ;DT
|
---|
| 135 |
|
---|
| 136 | ;"Setup error trap
|
---|
| 137 | if $$GET^XPAR("USR^SYS","XUS-XUP SET ERROR TRAP",1,"Q") set $ETRAP="D ERR^XUP"
|
---|
| 138 | ;do KILL1 ;"do KILL1^XUSCLEAN
|
---|
| 139 | set $piece(XQXFLG,U,3)="XUP"
|
---|
| 140 |
|
---|
| 141 | ;"D ^XQ1 ;<----- one major change made to this code...
|
---|
| 142 |
|
---|
| 143 | XUPDone
|
---|
| 144 | if $get(TMGDEBUG)>0 do DebugExit^TMGDEBUG(.DBIndent,"^XUP")
|
---|
| 145 | quit result
|
---|
| 146 |
|
---|
| 147 | XUPAbort
|
---|
| 148 | do KILL1 ;"do KILL1^XUSCLEAN
|
---|
| 149 | kill XQY,XQY0
|
---|
| 150 | if $$GET^XPAR("USR^SYS","XUS-XUP VPE",1,"Q"),$data(^%ZVEMS) xecute ^%ZVEMS ;"Run VPE
|
---|
| 151 |
|
---|
| 152 | set result=cAbort
|
---|
| 153 | goto XUPDone
|
---|
| 154 |
|
---|
| 155 | KILL1
|
---|
| 156 | ;"--------------------------------
|
---|
| 157 | ;"KILL1^XUSCLEAN is included and modified below.
|
---|
| 158 | ;"Purpose: To clean up ALL but kernel variables.
|
---|
| 159 | ;"-------------------------------
|
---|
| 160 | If $$BROKER^XWBLIB do
|
---|
| 161 | . set %2=$piece($text(VARLST^XWBLIB),";;",2)
|
---|
| 162 | . if %2]"" new @%2 ;"Protect Broker variables.
|
---|
| 163 |
|
---|
| 164 | new KWAPI,XGWIN,XGDI,XGEVENT
|
---|
| 165 | new XQAEXIT,XQAUSER,XQX1,XQAKILL,XQAID
|
---|
| 166 |
|
---|
| 167 | kill IO("C"),IO("Q")
|
---|
| 168 |
|
---|
| 169 | ;"Note: kill (x) mean kill everything EXCEPT x
|
---|
| 170 | ;"I can't kill everthing because it will crash my script--so I'll just not do it.
|
---|
| 171 | ;"kill (DISYS,IO,IOBS,IOF,IOM,ION,IOSL,IOST,IOT,IOS,IOXY,XRTL,%ZH0,XQVOL,XQY,XQY0,XQDIC,XQPSM,XQPT,XQAUDIT,XQXFLG,ZTSTOP,ZTQUEUED,ZTREQ,U,DUZ,DUZ,DTIME,DT)
|
---|
| 172 |
|
---|
| 173 | quit
|
---|
| 174 |
|
---|
| 175 | ;"===================================================================================
|
---|