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),"