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

INHRPC.m

Go to the documentation of this file.
  1. INHRPC ;cmi/anch/maw - INH RPC Utilities 4/11/2006 12:24:38 PM
  1. ;;3.01;BHL IHS Interfaces with GIS;**14,15**;JUL 01, 2001
  1. ;
  1. ;
  1. ;
  1. ;this routine will contain utilities needed to talk with the Visual GIS Monitor
  1. Q
  1. ;
  1. DEBUG(INHRET,INHSTR) ;-- run the serenji debugger
  1. ;D DEBUG^%Serenji("TAG^ROUTINE(INHRET,.INHSTR)")
  1. Q
  1. ;
  1. BACK(INHRET) ;-- get the background processes
  1. S X="MERR^INHRPC",@^%ZOSF("TRAP") ; m error trap
  1. N INHDA,INHI
  1. S INHI=0
  1. K ^INHTMP($J)
  1. S INHRET="^INHTMP("_$J_")"
  1. S ^INHTMP($J,INHI)="T00007BMXIEN^T00057Background Process^T00001Status^T00006Job^T00030Last Started^T00080StatusText"_$C(30)
  1. S INHDA=0 F S INHDA=$O(^INTHPC("ACT",INHDA)) Q:'INHDA D
  1. . N INHIEN
  1. . S INHIEN=0 F S INHIEN=$O(^INTHPC("ACT",INHDA,INHIEN)) Q:'INHIEN D
  1. .. S INHI=INHI+1
  1. .. N INHSTAT,INHTXTI,INHJOB,INHSTRT,INHNM
  1. .. S INHNM=$P($G(^INTHPC(INHIEN,0)),U)
  1. .. S INHSTAT=0
  1. .. S INHJOB=$P($G(^INTHPC(INHIEN,0)),U,4)
  1. .. S INHSTRT=$P($G(^INTHPC(INHIEN,0)),U,5)
  1. .. I INHSTRT S INHSTRT=$$FMTE^XLFDT(INHSTRT)
  1. .. I INHJOB,$D(^$JOB(INHJOB)),$D(^INRHB("RUN",INHIEN)) S INHSTAT=1
  1. .. I INHJOB,'$D(^$JOB(INHJOB)) S INHSTAT=0,INHJOB=""
  1. .. I '$D(^INRHB("RUN",INHIEN)) S INHSTAT=0,INHJOB=""
  1. .. S INHTXT=$P($G(^INRHB("RUN",INHIEN)),U,2)
  1. .. I INHTXT="" S INHTXT="Not Running"
  1. .. S ^INHTMP($J,INHI)=INHIEN_U_INHIEN_"-"_INHNM_U_INHSTAT_U_INHJOB_U_INHSTRT_U_INHTXT_$C(30)
  1. S ^INHTMP($J,INHI+1)=$C(31)
  1. Q
  1. ;
  1. STRT(INHRET,INHSTR) ;-- start the background process
  1. S X="MERR^INHRPC",@^%ZOSF("TRAP") ; m error trap
  1. N P,INDA,INHI
  1. S P="|"
  1. K ^INHTMP($J)
  1. S INHRET="^INHTMP("_$J_")"
  1. S INHI=0
  1. S ^INHTMP($J,INHI)="T00080Error"_$C(30)
  1. S INDA=$P(INHSTR,P)
  1. I $$VER(INDA) D Q
  1. . S INHI=INHI+1
  1. . S ^INHTMP($J,INHI)="Process is Already Running, Shutdown First"_$C(30)
  1. . S ^INHTMP($J,INHI+1)=$C(31)
  1. N INERR
  1. S INERR=$$OKTR(INDA)
  1. I 'INERR D Q
  1. . S INHI=INHI+1
  1. . S ^INHTMP($J,INHI)=$G(INERR)_$C(30)
  1. . S ^INHTMP($J,INHI+1)=$C(31)
  1. N INHYN
  1. S INHYN=$$A(INDA)
  1. I 'INHYN D Q
  1. . S INHI=INHI+1
  1. . S ^INHTMP($J,INHI)="Process did not Start"_$C(30)
  1. . S ^INHTMP($J,INHI+1)=$C(31)
  1. S INHI=INHI+1
  1. S ^INHTMP($J,INHI)=0_$C(30)
  1. S ^INHTMP($J,INHI+1)=$C(31)
  1. Q
  1. ;
  1. STOP(INHRET,INHSTR) ;-- stop the background process
  1. S X="MERR^INHRPC",@^%ZOSF("TRAP") ; m error trap
  1. N P,INDA,INHI
  1. S P="|"
  1. K ^INHTMP($J)
  1. S INHRET="^INHTMP("_$J_")"
  1. S INHI=0
  1. S ^INHTMP($J,INHI)="T00080Error"_$C(30)
  1. S INDA=$P(INHSTR,P)
  1. S INSRVR=+$P(^INTHPC(INDA,0),U,8) ; opened as client=0 or server=1
  1. N INHX
  1. F INHXX=1:1:100 K ^INRHB("RUN",INDA)
  1. S:$$VER(INDA)&INSRVR INHX=$$SRVRHNG^INHB(INDA) ; shut down "hung" active server
  1. H 2
  1. S INHI=INHI+1
  1. S ^INHTMP($J,INHI)=0_$C(30)
  1. S ^INHTMP($J,INHI+1)=$C(31)
  1. Q
  1. ;
  1. REF(INHRET,INHSTR) ;-- refresh the background process
  1. S X="MERR^INHRPC",@^%ZOSF("TRAP") ; m error trap
  1. N P,INDA,INHI
  1. S P="|"
  1. K ^INHTMP($J)
  1. S INHRET="^INHTMP("_$J_")"
  1. S INHI=0
  1. S INDA=$P(INHSTR,P)
  1. S ^INHTMP($J,INHI)="T00001Status^T00006Job^T00030Last Started^T00080Status Text^I00007Job Queue"_$C(30)
  1. S INHI=INHI+1
  1. N INHSTAT,INHTXTI,INHJOB,INHSTRT,INHNM,INHJQ
  1. S INHNM=$P($G(^INTHPC(INDA,0)),U)
  1. S INHSTAT=0
  1. S INHJOB=$P($G(^INTHPC(INDA,0)),U,4)
  1. S INHSTRT=$P($G(^INTHPC(INDA,0)),U,5)
  1. I INHSTRT S INHSTRT=$$FMTE^XLFDT(INHSTRT)
  1. I INHJOB,$D(^$JOB(INHJOB)),$D(^INRHB("RUN",INDA)) S INHSTAT=1
  1. I INHJOB,'$D(^$JOB(INHJOB)) S INHSTAT=0,INHJOB=""
  1. I '$D(^INRHB("RUN",INDA)) S INHSTAT=0,INHJOB=""
  1. S INHTXT=$P($G(^INRHB("RUN",INDA)),U,2)
  1. I INHTXT="" S INHTXT="Not Running"
  1. S INHJQ=0
  1. I INDA>2 S INHJQ=$$JOBCNT(INDA)
  1. S ^INHTMP($J,INHI)=INHSTAT_U_INHJOB_U_INHSTRT_U_INHTXT_U_INHJQ_$C(30)
  1. S ^INHTMP($J,INHI+1)=$C(31)
  1. Q
  1. ;
  1. JOBCNT(INHINDA) ;-- return the number of records
  1. N INHDST
  1. S INHDST=$P($G(^INTHPC(INHINDA,0)),U,7)
  1. I 'INHDST Q 0
  1. I '$D(^INLHDEST(INHDST)) Q 0
  1. N CNT,INHDA
  1. S CNT=0
  1. S INHDA="" F S INHDA=$O(^INLHDEST(INHDST,INHDA)) Q:INHDA="" D
  1. . N INHP
  1. . S INHP=0 F S INHP=$O(^INLHDEST(INHDST,INHDA,INHP)) Q:INHP="" D
  1. .. N INHH
  1. .. S INHH=0 F S INHH=$O(^INLHDEST(INHDST,INHDA,INHP,INHH)) Q:INHH="" D
  1. ... S CNT=CNT+1
  1. Q CNT
  1. ;
  1. MERR ; MUMPS ERROR TRAP
  1. N INHX
  1. X ("S INHX=$"_"ZE")
  1. S INHX="MUMPS error: """_INHX_""""
  1. D ERR(INHX)
  1. Q
  1. ;
  1. ERR(ERR) ; BMX ADO SCHEMA ERROR PROCESSOR
  1. N INHXX
  1. S INHXX="ERROR|"_ERR_$C(30)
  1. S @INHRET@(1)=INHXX
  1. S @INHRET@(2)=$C(31)
  1. Q
  1. ;
  1. A(DA) ;Startup a process
  1. ;DA = entry # in file 4004
  1. ;Returns 1 if started, 0 otherwise
  1. ;
  1. N INERR
  1. S INERR=$$OKTR(DA) I 'INERR Q INERR
  1. N JOB S JOB=$$REPLACE^UTIL(^INTHOS(1,1),"*","^INHB1("_DA_")")
  1. K ^INRHB("RUN",DA) X JOB F I=1:1:15 L +^INRHB("RUN",DA):0,-^INRHB("RUN",DA) Q:$D(^INRHB("RUN",DA))
  1. H 1 Q ''$D(^INRHB("RUN",DA))
  1. ;
  1. OKTR(X) ;See if OK to run process #X
  1. ;Returns 1 if OK, 0 otherwise
  1. Q:'$G(^INRHSITE(1,"ACT")) "Interface system not active - NO ACTION TAKEN."
  1. Q:'$P($G(^INTHPC(X,0)),"^",2) "Process not active - NO ACTION TAKEN."
  1. Q:+$G(^INTHPC(X,7)) "Process cannot be started manually - NO ACTION TAKEN."
  1. Q 1
  1. ;
  1. VER(DA) ;Verify entry DA is running
  1. ;Return 1 if running, 0 if not running, -1 if running but signaled to quit
  1. G:$G(^INTHOS(1,4))]"" VER1
  1. L +^INRHB("RUN",DA):1 I L -^INRHB("RUN",DA) Q 0
  1. Q:'$D(^INRHB("RUN",DA)) -1
  1. Q 1
  1. ;
  1. VER1 ;Come here when OS file has code to do the checking
  1. N X S X=$P(^INTHPC(DA,0),"^",4) Q:'X 0
  1. X "N DA "_^INTHOS(1,4) Q:'X 0
  1. Q:'$D(^INRHB("RUN",DA)) -1
  1. Q 1
  1. ;