cQ14 ;More Functions ;cQ14;
Q
;
date ;date
N %H,%J,%R S %H=1+$H,%J=%H\1461,%R=%H#1461,DJ=%J*4+1841+(%R\365),DD=%R#365,DM=1 I %R=1460 S DD=365,DJ=DJ-1
F %J=31,(%R>1154)+28,31,30,31,30,31,31,30,31,30 Q:%J'
"_INFO)
I 'ER,'$$TST^cQFILE(INFO) D
. S ER=$$OR^cQFILE(INFO) Q:ER S S=$ZCONVERT("Windows","U")
. F S ER=$$RF^cQFILE(INFO,.K) Q:ER I $ZCONVERT(K,"U")[S S OS=K Q
. S ER=$$CF^cQFILE(INFO)
OSZ Q OS
;
OSN() ;Get OS version number
;5.0 = W2K
;5.1 = XP
;5.2 = W2K3
;6.0 = Vista, W2008
;6.1 = W2008 R2
OSNZ Q $P($P($P($$OS,"[",2),"]")," ",2)
;
KOS() ;Get OS Kill command
S OS=$$OS,OSN=$$OSN
S K=$S(OS'["Windows":"",1:$S(OSN<5.1:$E($ZU(86))_":\DataM\Menu\Kill.exe",1:"Taskkill.exe"))
KOSZ Q K
;
KOSF() ;Get OS Forced Kill command
S K=$$KOS,OSN=$$OSN
S K=$S('$L(K):"",1:$S(OSN<5.1:K_" -f",1:K_" /F"))
KOSFZ Q K
;
KOSFI() ;Get OS Forced Kill image command
S K=$$KOSF,OSN=$$OSN
S K=$S('$L(K):"",1:$S(OSN<5.1:K,1:K_" /IM"))
KOSFIZ Q K
;
KOSFP() ;Get OS Forced Kill pid command
S K=$$KOSF,OSN=$$OSN
S K=$S('$L(K):"",1:$S(OSN<5.1:K,1:K_" /PID"))
KOSFPZ Q K
;
JOB(I) ;Get jobnumber
JOBZ Q $$ZJOB^cQZSTART($G(I))
;
BGJOB(J) ;Is this a backgrundjob ?
BGJOBZ Q $$BGJOB^cQZSTART($G(J))
;
INFO(E) N Y,Z S E=$G(E),Z=$P($ZU(86),"\",1,2)_"\temp",Y=$$JW^cQFILE("md "_Z)
S Z=Z_"\info"_$j I $L(E) S Z=Z_$S($E(E)'=".":".",1:"")_E
INFOZ Q Z
;
DINTMP ;Delete info files & ^TEMP
D DINFO,DTEMP
DINTMPZ Q
;
DINFO ;Delete info files
N K,ER,JOB,TEMP,i,job,maxpid,temp
S temp=$$INFO,ER=$$JW^cQFILE("DIR "_$P(temp,"info")_"info* > "_temp)
D JOBS^cQSYS S i="" F S i=$O(JOB(0,i)) Q:i="" S job(JOB(0,i))=i
K JOB S ER=$$OR^cQFILE(temp) Q:ER
F S ER=$$RF^cQFILE(temp,.K) Q:ER I K["info" D
. S JOB=$P(K,"info",2) Q:JOB=$J Q:$D(job(JOB))
. S TEMP=$P(temp,"info")_"info"_$P(K,"info",2),ER=$$DEL^cQFILE(TEMP)
DINFOZ Q
;
DTEMP ;delete ^TEMP entry if job doesn't exist
N JOB,i,job,maxpid
D JOBS^cQSYS S i="" F S i=$O(JOB(0,i)) Q:i="" S job(JOB(0,i))=i
S JOB="" F S JOB=$O(^TEMP($ZCVT($ZU(110),"U"),JOB)) Q:JOB="" I JOB?.N.1(1".".N),'$D(job(JOB\1)) K ^(JOB)
DTEMPZ Q
;
RME(M) ;Remove errors in ^ERROR with M in ^ERROR(vnr,0)
N I S M=$G(M) I '$L(M) Q
S I=0 F S I=$O(^ERROR(I)) Q:I="" I ^(I,0)[M K ^ERROR(I)
RMEZ Q
;
RNE ;Renum ^ERROR
D RN("^ERROR") S ^ERROR(0)=$O(^ERROR(""),-1)+1
RNEZ Q
;
RN(X) ;Renum global X
N I,J S I=0,X=$G(X) Q:'$L(X)
F J=1:1 S I=$O(@X@(I)) Q:I="" I I'=J M @X@(J)=@X@(I) K @X@(I)
RNZ Q
;
ANOW(X) S X($O(X(""),-1)+1)=""
S X($O(X(""),-1)+1)="*** Timestamp ***"
S X($O(X(""),-1)+1)=$P("Thurs\Fri\Satur\Sun\Mon\Tues\Wednes","\",$H#7+1)_"day "_$ZD($P($H,",",1),4)_" "_$ZT($P($H,",",2),1)_" system "_$ZCVT($ZU(110),"U")_" namespace "_$ZU(5)
ANOWZ Q
;
AEND(X) S X($O(X(""),-1)+1)="*** END OF MESSAGE ***"
AENDZ Q
;
V(J,A) ; Variables of Job J
; A = D (display), G (get into partition), S (Save in ^TEMP($J+.01,"VAR",P))
N % S $ZT="VE^"_$T(+0)
S %(1)=$G(J),%(2)=$G(A,"D") Q:'%(1) Q:%(1)=$J
;$$JP^cQJOB(pid,"active")=2 for an active job
I $$JP^cQJOB(%(1),"active")'=2 S %(3)="zzzz",%(4)="Job "_%(1)_" is not active." D VS Q
I $$JP^cQJOB(%(1),"state")="ZF" S %(3)="zzzz",%(4)="Job "_%(1)_" is calling out of caché. Variables cannot be fetched." D VS Q
S %(3)=$ZU(88,0,%(1))
I %(2)="G" K (%)
I %(2)="S" K ^TEMP($J+.01,"VAR",%(1))
F Q:$$JP^cQJOB(%(1),"active")'=2 S %(3)=$ZU(88,1,%(1),%(3)) Q:%(3)="" Q:$$JP^cQJOB(%(1),"active")'=2 S %(4)=$ZU(88,2,%(1),%(3)) D VS
I $$JP^cQJOB(%(1),"active")'=2 S %(3)="zzz",%(4)="Job "_%(1)_" died." D VS
VZ Q
;
VS S %(2)=$G(%(2)),%(3)=$G(%(3)),%(4)=$G(%(4))
I %(2)="D" W !,%(3),"=""",%(4),""""
I %(2)="G" S @%(3)=%(4)
I %(2)="S" S %(5)=$G(%(5))+1,^TEMP($J+.01,"VAR",$G(%(1),0),%(5))=%(3),^(%(5)+.01)=%(4)
VSZ Q
;
VE I $ZE["" S %(3)="ztrap",%(4)="Job "_$G(%(1),0)_" died."
E S %(3)="zerror",%(4)=$ZE_" for job "_$G(%(1),0)
D VS
VEZ Q
;
SMSIT(N,T) ;send SMS message T to N (N=gsmnumber1,gsmnumber2,...)
N B,C,DIR,E,I,M
S DIR=$E($$INFO)_":\DataM\Blat\",M=DIR_"mes"_$J_".txt"
S B=DIR_"blat.exe "_M,C=" -subject """_T_""" -q -noh2"
I +$G(^cLOG($ZCVT($ZU(110),"U"),"SMS"))=1 D
. ;send it via Blat to SMTP-server with GFI faxmaker module
. ;message body = sms contents
. S E=$$JW^cQFILE("echo "_T_" >"_M)
. S B=B_" -f SMSuser@datam.be -to ",C="@SMSmaker.com"_C
I +$G(^cLOG($ZCVT($ZU(110),"U"),"SMS"))=2 D
. ;send it via Blat to Exchange server with SMS-Faxination module
. ;subject = sms contents
. S E=$$JW^cQFILE("echo. >"_M)
. S B=B_" -f msmadm@daisy.terbeke.be -to IMCEASMS-",C="@terbeke.be"_C
F I=1:1:$L(N,",") S E=$$JW^cQFILE(B_$P(N,",",I)_C)
S E=$$JW^cQFILE("del "_M)
SMSITZ Q
;
SMST(S,T,debug,FROM) ; test sms
; S = server, T = to, debug = optional
S S=$G(S),T=$G(T),FROM=$G(FROM) I S=""!(T="") D Q
. W !,"Usage: D TST^"_$T(+0),"(smtp-server , to , debug)",!
. W !," smtp-server = FQDN or IP-address"
. W !," to = smsnumber@SMSmaker.com"
. W !," or"
. W !," to = IMCEASMS-smsnumber@company.be"
. W !," debug = 0 or 1 (show debug info)"
. W !," from = optional (SMSuser@company.be)",!
I '$L(FROM) S FROM="SMSuser@datam.be"
S SERVER=S,TO=T,CC="",BCC="",SUB="Test SMS"
S DATA(1)="Test line 1",DATA(2)="Test line 2",DTO=TO,DCC="",DBCC=""
S DFROM=FROM
S MSG=$$EMAIL^cA350(SERVER,FROM,TO,CC,BCC,SUB,.DATA,DFROM,DTO,DCC,DBCC)
W !,"Test-email has ",$S(MSG=0:"succesfully",1:"not")," been sent",!
I MSG'=0 W !,"Message: ",MSG
SMSTZ Q
;
M(M,N,X) ;Send message directly to smtp
;M = subject, N = vars with message (pass by reference)
;X=0 to support, X=1 to logging
N %DAT1,%TIM,CC,DFROM,DTO,FROM,HOST,IREF,MSG,SMTP,TO,UI1,UQC,UREF,USC
; if we are on the 'shadow' switch to the 'master', log the error - modified by MF - 08.04.2004
I $S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))'=$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))),$ZCVT($ZU(110),"U")=$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))) D
. I '$ZU(90,10,$ZU(5)_"M") Q
. S $ZT="ER^"_$T(+0)
. N X S %("nmspc")=$ZU(5) ZN %("nmspc")_"M" S X=$ZU(20,%("nmspc"))
S M=$G(M),X=+$G(X) S:'$D(Q) Q="EA" S:'$D(Q1) Q1="" S:'$D(D) D="\"
I M'[$ZCVT($ZU(110),"U") S M=$ZCVT($ZU(110),"U")_": "_M
F I=0,"DAM" I '$D(^DMS(I,"HOSTS")) S ^DMS(I,"HOSTS")="0\HOSTS",^DMS(I,"HOSTS",0)="Hosts\0\\\0\\\\\\Hôtes\\\\\\\\\\\\\\\\\\\\Hosts\"
F I=0,"DAM" I '$D(^DMS(I,"PAR")) S ^DMS(I,"PAR")="0\PAR",^DMS(I,"PAR",0)="Parameters\\\\\\\\\\Paramètres\\\\\\\\\\\\\\\\\\\\Parameters\"
S HOST=$$HOST^cA351("datam.be") I 'HOST S HOST=$$HOST^cA351("data-m.be") I 'HOST Q
S SMTP=$$SIG^cAFA1("HOSTS",HOST,103) I '$L(SMTP) Q
S FROM=$$SIG^cAFA1("PAR","MAIL",106) I '$L(FROM) S FROM="system@datam.be"
S (TO,DTO)=""
D DMS^cAN000("UQC","USC","MAIL.ADDR") S UREF=^DMC(UQC,USC,"DATA","REF"),IREF=^("INDEX")
I 'X D
. ;S K=$O(@IREF@(103,"SUPPORT")) I (K["SUPPORT")&(K["DATAMBE") S UI1=^(K),(DTO,TO)=$P($G(@UREF@(0)),D,3)
. I '$L(TO) S (DTO,TO)="ict_meldingen@vanhoecke.be"
I X D
. ;S K=$O(@IREF@(103,"LOGGING")) I (K["LOGGING")&(K["DATAMBE") S UI1=^(K),(DTO,TO)=$P($G(@UREF@(0)),D,3)
. I '$L(TO) S (DTO,TO)="ict_meldingen@vanhoecke.be"
S CC=$G(^cLOG($ZU(5),"ALERT","OPTIONAL"))
S K=$$SIG^cAFA1("PAR","MAIL",105) I '$L(K) S K=$ZCVT($ZU(110),"U")
S DFROM=K_" <"_FROM_">" D ANOW(.N),AEND(.N)
S MSG=$$EMAIL^cA350(SMTP,FROM,TO,CC,,M,.N,DFROM,DTO)
I $D(%("nmspc")) ZN %("nmspc") K %("nmspc") ; back to shadow
MZ Q
;
AL(P,M,B,X) ; Send Alert
;P=program, M=subject, M(x)=message, B=cc
;X=0 -> logging, X=1 -> support
N CC,C,I,J,K
S:'$D(Q) Q="EA" S:'$D(Q1) Q1="" S:'$D(D) D="\"
S P=$G(P,$T(+0)),S=$G(M,"Alert"),B=$G(B),X=+$G(X) I $O(M(""))="" Q
S I="" F S I=$O(M(I)) Q:I="" S M(I)=$TR(M(I),"\","/")
S C=$G(^cLOG($ZU(5),"ALERT","OPTIONAL"))
F J="B","C" I $L($G(@J)) F I=1:1:$L(@J,";") S K=$P(@J,";",I) I $$VE^cQ4(K) S CC=0,CC($O(CC(""),-1)+1)="\\"_K_"\1"
D ANOW(.M)
I X D D9001^cANEM0(P,S,.M,.CC) Q ; to support
I 'X D D9002^cANEM0(P,S,.M,.CC) Q ; to logging
ALZ Q
;
CNN() ;Get computername from Reflection
CNNZ Q $$CNN^cQZSTART()
;
CLN() ;Get clientname from Reflection
CLNZ Q $$CLN^cQZSTART()
;
PRUN(X) ;Is program X running under OS ? Returns ID is so, otherwise 0
N ER,FILE,SW,TLIST
S SW=0,X=$ZCONVERT($G(X),"U") I '$L(X) G PRUNZ
S FILE=$$INFO,TLIST=$E(FILE)_":\DataM\batch\tlist.exe" I $$TST^cQFILE(TLIST) G PRUNZ
S ER=$$JW^cQFILE(TLIST_" > "_FILE) I ER G PRUNZ
S ER=$$OR^cQFILE(FILE) I ER G PRUNZ
F S ER=$$RF^cQFILE(FILE,.K) Q:ER D I $ZCONVERT($E($P(K," ",2),1,$L(X)),"U")=X S SW=$P(K," ") Q
. F Q:$E(K)'=" " S $E(K)=""
S ER=$$CF^cQFILE(FILE)
PRUNZ Q SW
;
SP(X,V) ;Free space on harddisks
N A,B,C,I,ER,FILE,K,N K N
S FILE=$$INFO,X=$A($ZCONVERT($G(X),"U")),A=X,B=X I X=-1 S A=67,B=72
F I=A:1:B S ER=$$JW^cQFILE("DIR "_$C(I)_":\ /-C > "_FILE) I 'ER D
. S ER=$$OR^cQFILE(FILE) I ER Q
. F S ER=$$RF^cQFILE(FILE,.K) Q:ER S C=K
. S ER=$$CF^cQFILE(FILE)
. I C[" bytes " S N=$ZSTRIP($P($P(C," bytes ",1),")",2),"