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

KMPSGE.m

Go to the documentation of this file.
  1. KMPSGE ;OAK/KAK/JML - Master Routine ;9/1/2015
  1. ;;2.0;SAGG PROJECT;**1**;Jul 02, 2007;Build 67
  1. ;
  1. EN ;-- this routine can only be run as a TaskMan background job
  1. ;
  1. Q:'$D(ZTQUEUED)
  1. ;
  1. N CNT,COMPDT,HANG,KMPSVOLS,KMPSZE,LOC,MAXJOB,MGR,NOWDT,OS
  1. N PROD,PTCHINFO,QUIT,SESSNUM,SITENUM,TEMP,TEXT,UCI,UCIVOL
  1. N VOL,X,ZUZR,RESULT,XMZSENT
  1. ;
  1. ; maximum number of consecutively running jobs
  1. S MAXJOB=6
  1. ; hang time for LOOP and WAIT code
  1. S HANG=300
  1. ;
  1. S SESSNUM=+$H,U="^",SITENUM=$P($$SITE^VASITE(),U,3)
  1. ;
  1. S NOWDT=$$NOW^XLFDT
  1. ;
  1. S OS=$$MPLTF^KMPSUTL1
  1. I OS="UNK" D Q
  1. .S TEXT(1)=" SAGG Project for this M platform is NOT implemented !"
  1. .D MSG^KMPSLK(NOWDT,SESSNUM,.TEXT)
  1. ;
  1. S MGR=^%ZOSF("MGR"),PROD=$P(^%ZOSF("PROD"),",")
  1. S PROD=$S($P(^KMPS(8970.1,1,0),U,3)="":PROD,1:$P(^(0),U,3))
  1. S LOC=$P(^KMPS(8970.1,1,0),U,2)
  1. ;
  1. L +^XTMP("KMPS")
  1. S ^XTMP("KMPS",0)=$$FMADD^XLFDT($$DT^XLFDT,14)_U_NOWDT_U_"SAGG data"
  1. K ^XTMP("KMPS",SITENUM),^XTMP("KMPS","ERROR")
  1. K ^XTMP("KMPS","START"),^XTMP("KMPS","STOP")
  1. ;
  1. ; routine KMPSUTL will always be updated with patch release
  1. S X="KMPSUTL"
  1. X "ZL @X S PTCHINFO=$T(+2)"
  1. S PTCHINFO=$P(PTCHINFO,";",3)_" "_$P(PTCHINFO,";",5)
  1. ; session number^M platform^SAGG version_" "_patch^start date-time^
  1. ; -> completed date-time will be set in $$PACK
  1. S ^XTMP("KMPS",SITENUM,0)=SESSNUM_U_OS_U_PTCHINFO_U_NOWDT_U
  1. S X="ERR1^KMPSGE",@^%ZOSF("TRAP")
  1. S TEMP=SITENUM_U_SESSNUM_U_LOC_U_NOWDT_U_PROD
  1. ;
  1. ; KMPS*2.0*1 - Now analyzing all volumes, not just those in the SAGG PROJECT file
  1. ;
  1. ; NOTE: ^XINDEX incorrectly sees SYS("UCI" as an array. It is a global in the %SYS namespace
  1. S CNT=0
  1. S VOL=""
  1. F S VOL=$O(^|"%SYS"|SYS("UCI",VOL)) Q:VOL="" D
  1. .Q:$G(^|"%SYS"|SYS("UCI",VOL))]""
  1. .J START^%ZOSVKSE(TEMP_U_VOL)
  1. .S CNT=CNT+1
  1. .I CNT=MAXJOB S CNT=$$WAIT(HANG,MAXJOB)
  1. ;
  1. D EN^KMPSLK(SESSNUM,SITENUM)
  1. S QUIT=0
  1. D LOOP(HANG,SESSNUM,OS)
  1. I 'QUIT D
  1. .S RESULT=$$PACK(SESSNUM,SITENUM)
  1. .S XMZSENT=+RESULT,COMPDT=$P(RESULT,U,2)
  1. .S X=$$OUT^KMPSLK(NOWDT,OS,SESSNUM,SITENUM,XMZSENT,.TEXT)
  1. .D MSG^KMPSLK(NOWDT,SESSNUM,.TEXT,COMPDT)
  1. D END^KMPSLK
  1. Q
  1. ;
  1. LOOP(HANG,SESSNUM,OS) ;
  1. ;---------------------------------------------------------------------
  1. ; Loop until all volume sets complete
  1. ;
  1. ; HANG..... time to wait to see if all volume sets have completed
  1. ; OS....... type of operating system
  1. ; SESSNUM.. +$Horolog number of session
  1. ;---------------------------------------------------------------------
  1. N GBL,UCIVOL1,I
  1. ;
  1. F Q:'$D(^XTMP("KMPS","START"))!+$G(^XTMP("KMPS","STOP")) H HANG I (+$H>(SESSNUM+3)) D TOOLNG Q
  1. ;
  1. Q:QUIT
  1. ;
  1. I $D(^XTMP("KMPS","ERROR")) D Q
  1. .N J,JEND,OUT,TEXT,VOL
  1. .S QUIT=1
  1. .S TEXT(1)=" The SAGG Project has recorded an error on volume set(s):"
  1. .S OUT=0,VOL="",JEND=$S(OS="CVMS":2,OS="CWINNT":4,1:5)
  1. .F I=3:1 Q:OUT D
  1. ..S TEXT(I)=" "
  1. ..F J=1:1:JEND S VOL=$O(^XTMP("KMPS","ERROR",VOL)) S:VOL="" OUT=1 Q:VOL="" S TEXT(I)=TEXT(I)_VOL_" "
  1. .S (TEXT(2),TEXT(I))=""
  1. .S TEXT(I+1)=" See system error log for more details."
  1. .I OS["C" D
  1. ..S TEXT(I+2)=""
  1. ..S TEXT(I+3)=" Also run "_$S(OS="CVMS":"Integrity",1:"INTEGRIT")_" on the listed volume(s)."
  1. .D MSG^KMPSLK(NOWDT,SESSNUM,.TEXT)
  1. ;
  1. I $D(^XTMP("KMPS","STOP")) D Q
  1. .N TEXT
  1. .S QUIT=1
  1. .S TEXT(1)=" The SAGG Project collection routines have been STOPPED! No report"
  1. .S TEXT(2)=" has been generated."
  1. .D MSG^KMPSLK(NOWDT,SESSNUM,.TEXT)
  1. ;
  1. I '$D(^XTMP("KMPS",SITENUM,SESSNUM,NOWDT)) D Q
  1. .N TEXT
  1. .S QUIT=1
  1. .S TEXT(1)=" The SAGG Project collection routines did NOT obtain ANY global"
  1. .S TEXT(2)=" information. Please ensure that the SAGG PROJECT file is"
  1. .S TEXT(3)=" properly setup. Then use the 'One-time Option Queue' under"
  1. .S TEXT(4)=" Task Manager to re-run the 'SAGG Master Background Task'"
  1. .S TEXT(5)=" [KMPS SAGG REPORT] option."
  1. .D MSG^KMPSLK(NOWDT,SESSNUM,.TEXT)
  1. ;
  1. Q
  1. ;
  1. PACK(SESSNUM,SITENUM) ;
  1. ;---------------------------------------------------------------------
  1. ; PackMan ^XTMP global to KMP1-SAGG-SERVER at Albany FO
  1. ;
  1. ; SESSNUM.. +$Horolog number of session
  1. ; SITENUM.. site number
  1. ;
  1. ; Return:
  1. ; RETURN... number of SAGG data message^completed date-time
  1. ;---------------------------------------------------------------------
  1. ;
  1. N COMPDT,N,NM,RETURN,X,XMSUB,XMTEXT,XMY,XMZ
  1. S U="^",N=$O(^DIC(4,"D",SITENUM,0))
  1. S NM=$S($D(^DIC(4,N,0)):$P(^(0),U),1:SITENUM)
  1. ;
  1. I '$D(XMDUZ) N XMDUZ S XMDUZ=.5 S:'$D(DUZ) DUZ=.5
  1. ; PROTECTED VARIABLE -- REMOVING KILL: KMPS*2.0*1
  1. ; K:$G(IO)="" IO
  1. ;
  1. ; set completed date-time
  1. S COMPDT=$$NOW^XLFDT
  1. S $P(^XTMP("KMPS",SITENUM,0),U,5)=COMPDT
  1. ;
  1. S XMSUB=NM_" (Session #"_SESSNUM_") XTMP(""KMPS"") Global"
  1. ;
  1. I SITENUM=+SITENUM S XMTEXT="^XTMP(""KMPS"","_SITENUM_","
  1. E S XMTEXT="^XTMP(""KMPS"","""_SITENUM_""","
  1. S XMY("S.KMP1-SAGG-SERVER@FO-ALBANY.DOMAIN.EXT")=""
  1. D ENT^XMPG
  1. ;
  1. S RETURN=XMZ_U_COMPDT
  1. ;
  1. Q RETURN
  1. ;
  1. WAIT(HANG,MAXJOB) ;
  1. ;---------------------------------------------------------------------
  1. ; Wait here until less than MAXJOB volume sets are running
  1. ;
  1. ; HANG.... amount of time to wait
  1. ; MAXJOB.. maximum number of jobs allowed to run
  1. ;
  1. ; Return:
  1. ; RUN..... number of currently running jobs
  1. ;---------------------------------------------------------------------
  1. ;
  1. N RUN
  1. ;
  1. F H HANG S RUN=$$RUN Q:(RUN<MAXJOB)!+$G(^XTMP("KMPS","STOP"))
  1. ;
  1. Q RUN
  1. ;
  1. RUN() ;-- number of currently running jobs
  1. N RUN,VOL
  1. ;
  1. S RUN=0,VOL=""
  1. F S VOL=$O(^XTMP("KMPS","START",VOL)) Q:VOL="" S RUN=RUN+1
  1. ;
  1. Q RUN
  1. ;
  1. TOOLNG ;-- job has been running too long
  1. ;
  1. N TEXT
  1. ;
  1. S QUIT=1
  1. S TEXT(1)=" The SAGG Project collection routines have been running for more"
  1. S TEXT(2)=" than 3 days. No report has been generated."
  1. D MSG^KMPSLK(NOWDT,SESSNUM,.TEXT)
  1. Q
  1. ;
  1. ERR1 ;
  1. S KMPSZE=$ZE,ZUZR=$ZR,X="",@^%ZOSF("TRAP")
  1. D @^%ZOSF("ERRTN")
  1. K TEXT
  1. S TEXT(1)=" SAGG Project Error: "_KMPSZE
  1. S TEXT(2)=" See system error log for more details."
  1. S ^XTMP("KMPS","STOP")=""
  1. D MSG^KMPSLK(NOWDT,SESSNUM,.TEXT)
  1. G ^XUSCLEAN