--- /dev/null
+*
+* $Id$
+*
+* $Log$
+* Revision 1.1.1.1 1996/04/01 15:03:25 mclareni
+* Mathlib gen
+*
+*
+#include "gen/pilot.h"
+ SUBROUTINE NODAUD (PARENT,TNODE,NEWNOD,NEWLFT,TREE)
+ INTEGER PARENT,TNODE,NEWNOD,TREE(4,1000),SON,NEWLFT
+ INTEGER SNODES(100)
+ INTEGER PNODES,MNODES
+ IF(100.GT.100) GOTO 200
+ PNODES=0
+ MNODES=100
+ PNODES=PNODES+1
+ IF(PNODES.GT.MNODES) GOTO 160
+ SNODES(PNODES)=PARENT
+ 10 IF(TNODE.GT.TREE(1,PARENT)) GOTO 40
+ IF(PNODES.LE.0) GOTO 150
+ PARENT=SNODES(PNODES)
+ IF(TREE(4,PARENT).GE.0) GOTO 20
+ SON=TREE(2,PARENT)
+ GOTO 30
+ 20 SON=TREE(3,PARENT)
+ 30 IF(SON.LE.0) GOTO 70
+ PARENT=SON
+ PNODES=PNODES+1
+ IF(PNODES.GT.MNODES) GOTO 160
+ SNODES(PNODES)=PARENT
+ GOTO 70
+ 40 IF(PNODES.LE.0) GOTO 150
+ PARENT=SNODES(PNODES)
+ IF(TREE(4,PARENT).LE.0) GOTO 50
+ SON=TREE(2,PARENT)
+ GOTO 60
+ 50 SON=TREE(3,PARENT)
+ 60 IF(SON.LE.0) GOTO 70
+ PARENT=SON
+ PNODES=PNODES+1
+ IF(PNODES.GT.MNODES) GOTO 160
+ SNODES(PNODES)=PARENT
+ 70 IF(SON.GE.0) GOTO 10
+ IF(TNODE.NE.-SON) GOTO 220
+ GOTO 80
+ 80 IF(TREE(4,PARENT).GE.0) GOTO 100
+ IF(SON.NE.TREE(3,PARENT)) GOTO 90
+ TREE(3,PARENT)=NEWNOD
+ GOTO 120
+ 90 TREE(2,PARENT)=NEWNOD
+ GOTO 120
+ 100 IF(SON.NE.TREE(2,PARENT)) GOTO 110
+ TREE(2,PARENT)=NEWNOD
+ GOTO 120
+ 110 TREE(3,PARENT)=NEWNOD
+ 120 SON=NEWNOD
+ 130 IF(TREE(2,PARENT).EQ.SON.AND.TREE(4,PARENT).LT.0.OR.TREE(3,PARENT
+ 1).EQ.SON.AND.TREE(4,PARENT).GT.0) GOTO 140
+ SON=PARENT
+ PNODES=PNODES-1
+ IF(PNODES.LT.0) GOTO 180
+ IF(PNODES.LE.0) GOTO 150
+ PARENT=SNODES(PNODES)
+ GOTO 130
+ 140 TREE(1,PARENT)=NEWLFT
+ 150 RETURN
+ 160 WRITE(6,170)
+ 170 FORMAT(' NODAUD STACK OVERFLOW')
+ STOP
+ 180 WRITE(6,190)
+ 190 FORMAT(' NODAUD STACK UNDERFLOW')
+ STOP
+ 200 WRITE(6,210)
+ 210 FORMAT(' NODAUD IMPOSSIBLE')
+ STOP
+ 220 WRITE(6,230) TNODE,TREE(SON,PARENT)
+ 230 FORMAT(' LOOKING FOR BUCKET ',I10,' BUT FOUND ',I10)
+ STOP
+ END