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

AZZMJOB.m

Go to the documentation of this file.
  1. AZZMJOB ; MURDERJOB; Kills jobs in mumps and unix ;[ 09/20/89 3:12 PM ]
  1. ; UPDATES ^XUTL AND ^XMB(3.7) GLOBALS, THEN GIVES OPPORTUNITY
  1. ; TO KILL JOBS. RECOMMEND PLACING UNDER THE "KJOB" OPTION.
  1. ; THIS HELPS TO CLEAR UP PROBLEM OF PEOPLE BEING UNABLE TO LOG IN
  1. ; WHEN THE SYSTEM THINKS THEY'RE ALREADY LOGGED IN. ALSO, KILLS
  1. ; JOB AT THE UNIX LEVEL IF JOB WILL NOT TERMINATE IN MUMPS.
  1. ; NOTE: THE USER RUNNING THIS ROUTINE MUST HAVE UNIX ROOT PRIVILEGES,
  1. ; OTHERWISER FUSER WILL MERELY LIST THE PIDS RATHER THAN KILLING THEM.
  1. ; Mike Remillard, DDS, ISC/BAO
  1. START ;
  1. K AZZMJ
  1. D ^AUKVAR
  1. ;-----> CLEAN UP ^XUTL GLOBAL (REMOVE NODES OF NONEXISTENT JOBS).
  1. S N=0 F S N=$O(^XUTL("XQ",N)) Q:'N S X=N X ^%ZOSF("JOBPARAM") S AZZMJ("HOLD")=$P(Y,U,1) X ^%ZOSF("UCI") K:(Y'=AZZMJ("HOLD"))&(AZZMJ("HOLD")'="UNKNOWN") ^XUTL("XQ",N)
  1. ;
  1. SET ;-----> SET UP AZZMJ("XUTL") ARRAY EQUALS: DUZ;IO#^JOB#
  1. S N=0 F I=1:1 S N=$O(^XUTL("XQ",N)) Q:'N S AZZMJ("XUTL",I)=^XUTL("XQ",N,"DUZ")_";"_^("IO")_U_N
  1. ;
  1. ;-----> SET UP AZZMJ("XMB") ARRAY EQUALS: DUZ;IO#^NAME
  1. S AZZMJ("NODE")=0,AZZMJ("PREV")="",X=""
  1. S N=0 F S N=$O(^XMB(3.7,N)) Q:'N D:$D(^XMB(3.7,N,100))
  1. .S AZZMJ("DUZ")=N,X=$P(^DIC(3,AZZMJ("DUZ"),0),U)
  1. .S AZZMJ("NAME")=$P(X,",",2)_" "_$P(X,",")
  1. .S M=0 F S M=$O(^XMB(3.7,N,100,M)) Q:'M D
  1. ..S AZZMJ("NODE")=AZZMJ("NODE")+1
  1. ..S AZZMJ("XMB",AZZMJ("NODE"))=AZZMJ("DUZ")_";"_M_U_AZZMJ("NAME")
  1. ;
  1. COMPARE ;
  1. ;-----> COMPARE AZZMJ("XMB") ARRAY TO AZZMJ("XUTL") ARRAY,
  1. ;-----> SCANNING FOR NODES WITH NO ACTIVE JOBS.
  1. S N=0 F S N=$O(AZZMJ("XMB",N)) Q:'N D
  1. .S M=0,$P(AZZMJ("XMB",N),U,3)="NO ACTIVE JOB"
  1. .F S M=$O(AZZMJ("XUTL",M)) Q:'M I $P(AZZMJ("XMB",N),U)=$P(AZZMJ("XUTL",M),U) S $P(AZZMJ("XMB",N),U,3)=$P(AZZMJ("XUTL",M),U,2)
  1. ;-----> NOW THE AZZMJ("XMB") ARRAY EQUALS: DUZ;IO#^NAME^JOB#
  1. ;
  1. DISPLAY ;
  1. D HEADER
  1. S N=0 K NN
  1. F S N=$O(AZZMJ("XMB",N)) Q:'N D:$Y>17 PROMPT Q:X="^" D:$Y>17 HEADER D
  1. .S NN=N,AZZMJ("NAME")=$P(AZZMJ("XMB",N),U,2)
  1. .W:AZZMJ("NAME")'=AZZMJ("PREV") !
  1. .S AZZMJ("PREV")=AZZMJ("NAME")
  1. .W !?4,AZZMJ("NAME"),?27,"DEVICE ",$P($P(AZZMJ("XMB",N),U),";",2)
  1. .W ?42,$J($P(AZZMJ("XMB",N),U,3),7)
  1. .I '+$P(AZZMJ("XMB",N),U,3) D REMOVE W ?62,"REMOVED"
  1. I '$D(NN) G NONE
  1. D:X'=U&('$D(AZZMJ("KILL"))) PROMPT
  1. I $D(AZZMJ("KILL")) G START
  1. W !!!?5,"Type ""D"" to Display this table again, or press <return> to quit. " R X:DTIME
  1. I X?1"D".E!(X?1"d".E) G START
  1. EXIT ;
  1. D ^AUCLS
  1. K AZZMJ,I,M,N,NN,X
  1. Q
  1. PROMPT ;
  1. F W ! Q:$Y>19
  1. R !!?10,"Type ""K"" to kill a job, or press <return> to continue. ",X:DTIME
  1. I X=""!(X="^") Q
  1. I "Kk"[X W !! D KILLJOB,^%AUCLS,^%SS R !!!?23,"Press <return> to continue. ",X:DTIME Q
  1. W !!?5,"Typing ""K"" will give you an opportunity to kill a particular job."
  1. W !?5,"You will be given an option to view the System Status first."
  1. G PROMPT
  1. ;
  1. REMOVE ;
  1. K ^XMB(3.7,$P(AZZMJ("XMB",N),";"),100,$P($P(AZZMJ("XMB",N),U),";",2))
  1. Q
  1. D ^AUCLS
  1. W ?9,"* * * CLEAR SIGN-ON ERRORS / KILL JOBS FOR "_$ZU(0)_" * * *"
  1. W !!!?10,"User",?28,"Device",?46,"Job#",?62,"Action"
  1. W !?3,"------------------",?25,"------------",?41,"---------------"
  1. W ?60,"----------"
  1. Q
  1. KILLJOB ;
  1. R !?10,"Do you wish to see the System Status first? N// ",X:DTIME
  1. I X?1"Y".E!(X?1"y".E)!(X?1"?".E) D ^AUCLS,^%SS
  1. I X="^" Q
  1. D ^AZZMJOB1 S X="^",AZZMJ("KILL")=""
  1. Q
  1. NONE ;
  1. W !!!!?32,"* * *"
  1. W !!!?5,"The IHS Kernel is not aware of any user on the system at this time."
  1. W !!?19,"(There may be users in programmer mode.)",!!!?32,"* * *"
  1. D PROMPT
  1. ;R !!!!?23,"Press <return> to continue. ",X:DTIME
  1. G EXIT