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  Sep 23, 2025@19:53:54                                                                                                                                                                                                    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