- 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 Feb 18, 2025@23:43:56 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