[613] | 1 | ZU ;SFISC/RWF - For MSM-NT and MSM-UNIX, TIE all User terminals to this routine!! ;06/20/2000 11:31
|
---|
| 2 | ;;8.0;KERNEL;**13,42,49,94,107,162**;Jul 10, 1995
|
---|
| 3 | ;FOR MSM-NT and MSM-UNIX v4.3 or greater
|
---|
| 4 | EN N $ESTACK S $ECODE="",$ETRAP="D ERR^ZU Q:$QUIT 0 Q" ;,ZUGUI2=$$GUI()
|
---|
| 5 | ;The next line keeps sign-on users from taking the last slot
|
---|
| 6 | ;It can be commented out if not needed.
|
---|
| 7 | JOBCHK X ^%ZOSF("AVJ") I Y<3 W $C(7),!!,"** TROUBLE ** - ** CALL IRM NOW! **" G HALT
|
---|
| 8 | D:+$G(^%ZTSCH("LOGRSRC")) LOGRSRC^%ZOSV("$LOGIN$")
|
---|
| 9 | ;Bump up the partition size, Task partition size if file 14.7
|
---|
| 10 | D GETENV^%ZOSV S Y=$P(Y,"^",4),%=$O(^%ZIS(14.7,"B",Y,0)),Y=$G(^%ZIS(14.7,+%,0)),%K=$P(Y,"^",5) I %K>0 D INT^%PARTSIZ
|
---|
| 11 | G ^XUS ;G ^XUSG:$G(ZUGUI1),^XUS
|
---|
| 12 | ;
|
---|
| 13 | G ;Entry point for GUI device.
|
---|
| 14 | S ZUGUI1=1 G EN
|
---|
| 15 | ;
|
---|
| 16 | ERR ;Come here on error.
|
---|
| 17 | I $ZE["STKOVR" S $ET="Q:$ST>"_($ST-8)_" D ERR2^ZU" Q
|
---|
| 18 | ERR2 S $ETRAP="D UNWIND^ZU" L B 0 ;Unlock, Turn off break
|
---|
| 19 | Q:$ECODE["<PROG>"
|
---|
| 20 | I $G(IO)]"",$D(IO(1,IO)),$E($G(IOST))="P" U IO W @$S($D(IOF):IOF,1:"#")
|
---|
| 21 | I $G(IO(0))]"" U IO(0) W !!,"RECORDING THAT AN ERROR OCCURRED ---",!!?15,"Sorry 'bout that",!,*7,!?10,"$STACK=",$STACK,", $ECODE=",$ECODE,!?10,"$ZERROR=",$ZERROR
|
---|
| 22 | D ^%ZTER
|
---|
| 23 | I $EC'["<INRPT>" S XUERF="",$EC="" G ^XUSCLEAN
|
---|
| 24 | CTRLC I $D(IO)=11 U IO(0) C:IO'=IO(0) IO S IO=IO(0)
|
---|
| 25 | W !,"--Interrupt Acknowledged",!
|
---|
| 26 | D KILL1^XUSCLEAN ;Clean up symbol table
|
---|
| 27 | S $ECODE=",U<<POP>>,"
|
---|
| 28 | Q
|
---|
| 29 | ;
|
---|
| 30 | UNWIND ;Unwind the stack
|
---|
| 31 | Q:$ESTACK>1 G CONT:$ECODE["<<HALT>>",CTRLC2:$ECODE["<<POP>>"
|
---|
| 32 | S $ECODE=""
|
---|
| 33 | Q
|
---|
| 34 | ;
|
---|
| 35 | CTRLC2 S $ECODE="" G:$G(^XUTL("XQ",$J,"T"))<2 ^XUSCLEAN
|
---|
| 36 | S ^XUTL("XQ",$J,"T")=1,XQY=$G(^(1)),XQY0=$P(XQY,"^",2,99)
|
---|
| 37 | G:$P(XQY0,"^",4)'="M" CTRLC2
|
---|
| 38 | S XQPSM=$P(XQY,"^",1),XQY=+XQPSM,XQPSM=$P(XQPSM,XQY,2,3)
|
---|
| 39 | G:'XQY ^XUSCLEAN
|
---|
| 40 | S $ECODE="",$ETRAP="S %ZTER11S=$STACK D ERR^ZU Q:$QUIT 0 Q" G M1^XQ
|
---|
| 41 | ;
|
---|
| 42 | HALT I $D(^XUTL("XQ",$J)) D:$D(DUZ)#2 BYE^XUSCLEAN
|
---|
| 43 | D:+$G(^%ZTSCH("LOGRSRC")) LOGRSRC^%ZOSV("$LOGOUT$")
|
---|
| 44 | I '$ESTACK G CONT
|
---|
| 45 | S $ETRAP="D UNWIND^ZU" ;Set new trap
|
---|
| 46 | S $ECODE=",U<<HALT>>," ;Cause error to unwind stack
|
---|
| 47 | Q
|
---|
| 48 | CONT ;
|
---|
| 49 | S $ECODE="",$ETRAP=""
|
---|
| 50 | HALT
|
---|
| 51 | ;
|
---|
| 52 | GUI() ;Test if under GUI
|
---|
| 53 | Q "" ;Just say No.
|
---|
| 54 | S $ZT="GUIX",X="" G:$PD'=1 GUIX
|
---|
| 55 | S X=$G(^$DI($PD,"PLATFORM"))
|
---|
| 56 | GUIX Q X
|
---|