Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ZUGTM

ZUGTM.m

Go to the documentation of this file.
  1. ZU ;SF/JLI,RWF - For GT.M, TIE ALL TERMINALS TO THIS ROUTINE!! ;11/24/2003 11:34
  1. ;;8.0;KERNEL;**275,419**;Jul 10, 1995;Build 5
  1. ; for GT.M for VMS & Unix, version 4.3
  1. ;
  1. ;The env var ZINTRRUPT should be set to catch all interrupts.
  1. EN ;See that escape processing is off, Conflict with Screenman
  1. U $P:(NOCENABLE:NOESCAPE)
  1. N $ESTACK,$ETRAP S $ETRAP="D ERR^ZU Q:$QUIT -9 Q"
  1. S $ZINTERRUPT="I $$JOBEXAM^ZU($ZPOSITION)"
  1. D:+$G(^%ZTSCH("LOGRSRC")) LOGRSRC^%ZOSV("$LOGIN$")
  1. D COUNT^XUSCNT(1)
  1. G ^XUS
  1. ;
  1. ;
  1. ERR ;Come here on error
  1. ; handle stack overflow errors specifically
  1. I $P($ZS,",",3)["STACKCRIT"!("STACKOFLOW"[$P($ZS,",",3)) S $ET="Q:$ST>"_($ST-8)_" G ERR2^ZU" Q
  1. ;
  1. ERR2 ;
  1. S $ETRAP="D UNWIND^ZU" L ;Backup Trap
  1. U $P:NOCENABLE
  1. Q:$ECODE["<PROG>"
  1. I $P($ZS,",",2,3)["^XUS1A:2, %GTM-E-IOWRITERR" G HALT
  1. ;
  1. D ^%ZTER K %ZT ; Capture symbol table first!
  1. ;
  1. I $G(IO)]"",$D(IO(1,IO)),$E($G(IOST))="P" D
  1. . U IO
  1. . W @$S($D(IOF):IOF,1:"#")
  1. I $G(IO(0))]"" D
  1. . U IO(0)
  1. . W !!,"RECORDING THAT AN ERROR OCCURRED ---"
  1. . W !!?15,"Sorry 'bout that"
  1. . W !,*7
  1. . W !?10,"$STACK=",$STACK," $ECODE=",$ECODE
  1. . W !?10,"$ZSTATUS=",$ZSTATUS
  1. ;
  1. ;
  1. I $G(DUZ)'>0 G HALT
  1. S $ET="D HALT^ZU"
  1. ;
  1. I $P($ZS,",",3)'["-CTRLC" S XUERF="" G ^XUSCLEAN ;419
  1. CTRLC U $P
  1. W !,"--Interrupt Acknowledged",!
  1. D KILL1^XUSCLEAN ;Clean up symbol table
  1. S $ECODE=",<<POP>>,"
  1. Q
  1. ;
  1. UNWIND ;Unwind the stack
  1. Q:$ESTACK>1 G CTRLC2:$ECODE["<<POP>>"
  1. S $ECODE=""
  1. Q
  1. ;
  1. CTRLC2 S $ECODE="" G:$G(^XUTL("XQ",$J,"T"))<2 ^XUSCLEAN
  1. S ^XUTL("XQ",$J,"T")=1,XQY=$G(^(1)),XQY0=$P(XQY,"^",2,99)
  1. G:$P(XQY0,"^",4)'="M" HALT
  1. S XQPSM=$P(XQY,"^",1),XQY=+XQPSM,XQPSM=$P(XQPSM,XQY,2,3)
  1. G:'XQY ^XUSCLEAN
  1. S $ECODE="",$ETRAP="D ERR^ZU Q:$QUIT 0 Q"
  1. U $P:NOESCAPE
  1. G M1^XQ
  1. ;
  1. HALT I $D(^XUTL("XQ",$J)) D:$G(DUZ)>0 BYE^XUSCLEAN
  1. D COUNT^XUSCNT(-1)
  1. D:+$G(^%ZTSCH("LOGRSRC")) LOGRSRC^%ZOSV("$LOGOUT$")
  1. HALT
  1. ;
  1. JOBEXAM(%ZPOS) ;
  1. N %reference S %reference=$REFERENCE
  1. S ^XUTL("XUSYS",$J,0)=$H,^XUTL("XUSYS",$J,"INTERRUPT")=$G(%ZPOS)
  1. I %ZPOS["^" S ^XUTL("XUSYS",$J,"codeline")=$T(@%ZPOS)
  1. K ^XUTL("XUSYS",$J,"JE")
  1. I $G(^XUTL("XUSYS","COMMAND"))'="EXAM" ZSHOW "SD":^XUTL("XUSYS",$J,"JE")
  1. I $G(^XUTL("XUSYS","COMMAND"))="EXAM" ZSHOW "*":^XUTL("XUSYS",$J,"JE")
  1. I $G(^XUTL("XUSYS",$J,"CMD"))="HALT" ;To do.
  1. Q 1
  1. ;