NVSCLFIX ;ESEHSP/BDL - Insert dummy nodes to prevent block collisions ;MAR2016
;;1.0
START ;
D:$$DOIT($SYSTEM) COLFIX
Q
DOIT(NVSSYS) ;
N NVSANS,NVSHI S NVSANS=1
S NVSHI=$P($G(^XTMP("NVSCLFIX",NVSSYS)),"^",2)
S:+NVSHI NVSANS=($G(^TMP("DIERR",NVSHI))'["##########")
Q NVSANS
COLFIX ;
N NVSPROCS,NVSHPROC,NVSLPROC,NVSSUBS,NVSZINC,NVSXINC
S NVSXINC=$S($system.Version.GetBuildOS()'="VMS":50,1:500)
D:NVSXINC=500 DOVMS
S:NVSXINC=50 NVSHPROC=40000,NVSLPROC=1000
F NVSSUBS="DIERR","DIMSG","DIHELP" F NVSZINC=NVSLPROC:NVSXINC:NVSHPROC X "S $P(^TMP("""_NVSSUBS_""","_NVSZINC_"),""#"",2047)=NVSZINC"
S ^XTMP("NVSCLFIX",0)=($ZDATE($H+30,8)-17000000)_"^"_($ZDATE($H,8)-17000000)_"^Block Collision Prevention"
S ^XTMP("NVSCLFIX",$SYSTEM)=NVSLPROC_"^"_NVSHPROC
Q
DOVMS ;
S NVSPROCS=##class(%ResultSet).%New("%SYS.ProcessQuery:ListPids"),NVSHPROC=0,NVSLPROC=9999999999
D NVSPROCS.Execute()
While NVSPROCS.Next() { S:NVSPROCS.Pid>$G(NVSHPROC) NVSHPROC=NVSPROCS.Pid S:NVSPROCS.Pid<$G(NVSLPROC) NVSLPROC=NVSPROCS.Pid }
S:$L(NVSHPROC)>4 NVSHPROC=NVSHPROC\10000*10000+10000
S:$L(NVSLPROC)>4 NVSLPROC=NVSLPROC\10000*10000
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HNVSCLFIX 1151 printed Apr 09, 2024@21:20:38 Page 2
NVSCLFIX ;ESEHSP/BDL - Insert dummy nodes to prevent block collisions ;MAR2016
+1 ;;1.0
START ;
+1 if $$DOIT($SYSTEM)
DO COLFIX
+2 QUIT
DOIT(NVSSYS) ;
+1 NEW NVSANS,NVSHI
SET NVSANS=1
+2 SET NVSHI=$PIECE($GET(^XTMP("NVSCLFIX",NVSSYS)),"^",2)
+3 if +NVSHI
SET NVSANS=($GET(^TMP("DIERR",NVSHI))'["##########")
+4 QUIT NVSANS
COLFIX ;
+1 NEW NVSPROCS,NVSHPROC,NVSLPROC,NVSSUBS,NVSZINC,NVSXINC
+2
*** ERROR ***
SET NVSXINC=$SELECT($system.Version.GetBuildOS()'="VMS":50,1:500)
+3 if NVSXINC=500
DO DOVMS
+4 if NVSXINC=50
SET NVSHPROC=40000
SET NVSLPROC=1000
+5 FOR NVSSUBS="DIERR","DIMSG","DIHELP"
FOR NVSZINC=NVSLPROC:NVSXINC:NVSHPROC
XECUTE "S $P(^TMP("""_NVSSUBS_""","_NVSZINC_"),""#"",2047)=NVSZINC"
+6 SET ^XTMP("NVSCLFIX",0)=($ZDATE($HOROLOG+30,8)-17000000)_"^"_($ZDATE($HOROLOG,8)-17000000)_"^Block Collision Prevention"
+7 SET ^XTMP("NVSCLFIX",$SYSTEM)=NVSLPROC_"^"_NVSHPROC
+8 QUIT
DOVMS ;
+1 SET NVSPROCS=##class(%ResultSet).%New("%SYS.ProcessQuery:ListPids")
SET NVSHPROC=0
SET NVSLPROC=9999999999
+2 DO NVSPROCS.Execute()
+3
*** ERROR ***
+4 if $LENGTH(NVSHPROC)>4
SET NVSHPROC=NVSHPROC\10000*10000+10000
+5 if $LENGTH(NVSLPROC)>4
SET NVSLPROC=NVSLPROC\10000*10000
+6 QUIT