<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Has anybody ever seen <font size="+1"><tt>SETNOD</tt></font>
      fail to insert the entire node list?  I just did.<br>
    </p>
    <p>Shortly after I put my 20's up on HECnet, I wrote a reoccurring
      batch job that fires once a week on Sundays to pull the latest
      node list (<font size="+1"><tt>T20.FIX</tt></font>) from <font
        size="+1"><tt>MIM::</tt></font>.  I use the highly venerable <font
        size="+1"><tt>FILCOM</tt></font> program to do a difference of
      it with the previous week's list.  I don't do anything in
      particular with the output except save it in case I feel like
      looking at it for some reason.</p>
    <p>The batch job always inserts the entire list, rewriting whatever
      might be in the monitor's data base.  I have always been
      unsatisfied with doing things that way because it seemed to me to
      be inefficient as the node list grew.   The HECnet node list count
      was 716 on 9-Jun-19 and it's now up to 884 as of the latest
      version that I've pulled, 30-Apr-21.  The other problem is the
      microscopic possibility that a node is in Tops-20's monitor
      database (a hash table) that isn't in the HECnet node list.</p>
    <p>Nodes can get removed, although I think that infrequent.  Nodes
      could get inserted outside of the batch job, but I think that most
      unlikely in my situation.  Nodes can get renamed, as evidenced by
      2.299 below, which went from <font size="+1"><tt>THEPIT</tt></font>
      to <font size="+1"><tt>THEARK</tt></font>.  None of this should
      or has broken anything.</p>
    <p>However, it's been in the back of my mind to do two enhancements,
      one to Tops-20 and one to <font size="+1"><tt>SETNOD</tt></font>. 
      The <font size="+1"><tt>NODE%</tt></font> <font size="+1"><tt>JSYS</tt></font>
      should have an additional feature to return the current monitor
      data base.  The <font size="+1"><tt>SETNOD</tt></font> program
      should be enhanced to take that to compute the set difference with
      the new list.  This would show additions, renames and deletions. 
      That would bring the update operation down from some hundred items
      to less than ten, on average.  This would obviously make more of a
      difference on huge DECnet's in the tens of thousands of nodes. 
      Another <font size="+1"><tt>NODE%</tt></font> feature should
      probably be to whack the entire monitor database except for the
      local node, which would be useful for trouble shooting.</p>
    <p>Last Sunday, the batch job failed with the following error:</p>
    <p><font size="+1"><tt>18:33:40 USER   SETNOD>*TAKE
          SYSTEM:NODE-DATA.TXT.0</tt><tt><br>
        </tt><tt>18:33:40 USER</tt><tt><br>
        </tt><tt>18:33:40 USER   [Fork SETNOD opening
          <SYSTEM>NODE-DATA.TXT.1 for reading]</tt><tt><br>
        </tt><tt>18:33:41 USER   SETNOD>*SAVE</tt><tt><br>
        </tt><tt>18:33:41 USER</tt><tt><br>
        </tt><tt>18:33:41 USER   [Fork SETNOD opening
          <SYSTEM>NODE-DATA.BIN.74 for reading, writing]</tt><tt><br>
        </tt><tt>18:33:41 USER   SETNOD>*INSERT</tt><tt><br>
        </tt><tt>18:33:41 USER</tt><tt><br>
        </tt><tt>18:33:41 USER   <b><font color="#ff0000">?SETNOD:
              Failed at node REACH</font></b></tt><tt><br>
        </tt><tt>18:33:41 USER   SETNOD></tt></font><br>
    </p>
    <p>I had a look at the <font size="+1"><tt>SETNOD</tt></font>
      source and the HECnet node list and have discovered and concluded
      a few things.  First, there doesn't seem to be anything
      syntactically wrong with <font size="+1"><tt>REACH::</tt></font>'s
      definition: "<font size="+1"><tt>set nod 2.298 name REACH</tt></font>". 
      Second, there don't appear to be any semantic issues.  2.298
      wasn't in use and it shouldn't matter if it was.<br>
    </p>
    <p></p>
    <p>In the case of <tt>INSERT</tt>, there are two kinds of errors
      from <font size="+1"><tt>NODE%</tt></font>, a general failure of
      the JSYS and an incomplete insertion.   The error is from the
      second case.  Unfortunately, <font size="+1"><tt>SETNOD</tt></font>
      isn't reporting enough information about the error, so I have to
      make some changes there.  It's also possible that <font size="+1"><tt>SETNOD</tt></font>
      is building an inconsistent database for the monitor to swallow;
      at least the <font size="+1"><tt>LIST</tt></font> command is
      giving me some odd results, viz:</p>
    <blockquote>
      <p><font size="+1"><tt>SETNOD>list arEA 2</tt><tt><br>
          </tt><tt><br>
          </tt><tt>[AREA 2]</tt><tt><br>
          </tt><tt>A2RTR        </tt><tt><br>
          </tt><tt><br>
          </tt><tt>TOTAL NODES FOUND: 1</tt><tt><br>
          </tt><tt><br>
          </tt><tt>SETNOD></tt></font></p>
    </blockquote>
    <p>That's clearly wrong, viz:</p>
    <blockquote>
      <p><font size="+1"><tt>!i dec</tt><tt><br>
          </tt><tt> Local DECNET node: VENTI2.  Nodes reachable: 7.</tt><tt><br>
          </tt><tt> Accessible DECNET nodes are:    A2RTR    BOINGO   
            LEGATO    TOMMYT    VENTI2    VENTI    ZITI</tt></font><br>
      </p>
    </blockquote>
    <p>The Exec output should probably be changed to say, "<font
        size="+1"><tt>Nodes reachable in local area</tt></font>" and "<font
        size="+1"><tt>Online nodes in area are:</tt></font>"<br>
    </p>
    <p>Anybody have any ideas?  Hunches?  Clues?<br>
    </p>
    <hr width="100%" size="2">
    <p><font size="+1"><tt>File 1) OLDF:[4,120]    created: 1241
          15-Apr-21</tt><tt><br>
        </tt><tt>File 2) NEWF:[1,1]      created: 0102 30-Apr-21</tt><tt><br>
        </tt><tt><br>
        </tt><tt>1)1     set nod 44.9 name OSMIUM       </tt><tt><br>
        </tt><tt>****</tt><tt><br>
        </tt><tt>2)1     set nod 2.292 name OSIRIS      </tt><tt><br>
        </tt><tt>2)      set nod 44.9 name OSMIUM       </tt><tt><br>
        </tt><tt>**************</tt><tt><br>
        </tt><tt>1)1     set nod 13.3 name RED          </tt><tt><br>
        </tt><tt>****</tt><tt><br>
        </tt><tt>2)1     <b><font color="#ff0000">set nod 2.298 name
              REACH </font></b>      </tt><tt><br>
        </tt><tt>2)      set nod 13.3 name RED          </tt><tt><br>
        </tt><tt>**************</tt><tt><br>
        </tt><tt>1)1     set nod 2.298 name RSX11M      </tt><tt><br>
        </tt><tt>1)      set nod 1.306 name RSX124      </tt><tt><br>
        </tt><tt>****</tt><tt><br>
        </tt><tt>2)1     set nod 1.306 name RSX124      </tt><tt><br>
        </tt><tt>**************</tt><tt><br>
        </tt><tt>1)1     set nod 42.5 name SPARKY       </tt><tt><br>
        </tt><tt>****</tt><tt><br>
        </tt><tt>2)1     set nod 2.291 name SPARK       </tt><tt><br>
        </tt><tt>2)      set nod 42.5 name SPARKY       </tt><tt><br>
        </tt><tt>**************</tt><tt><br>
        </tt><tt>1)1     set nod 2.299 name THEPIT      </tt><tt><br>
        </tt><tt>1)      set nod 35.70 name THOMAS      </tt><tt><br>
        </tt><tt>****</tt><tt><br>
        </tt><tt>2)1     set nod 2.299 name THEARK      </tt><tt><br>
        </tt><tt>2)      set nod 35.70 name THOMAS      </tt><tt><br>
        </tt><tt>**************</tt><tt><br>
        </tt><tt><br>
        </tt></font><br>
    </p>
  </body>
</html>