]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/04/01 15:03:25 mclareni | |
6 | * Mathlib gen | |
7 | * | |
8 | * | |
9 | #include "gen/pilot.h" | |
10 | SUBROUTINE NODAUD (PARENT,TNODE,NEWNOD,NEWLFT,TREE) | |
11 | INTEGER PARENT,TNODE,NEWNOD,TREE(4,1000),SON,NEWLFT | |
12 | INTEGER SNODES(100) | |
13 | INTEGER PNODES,MNODES | |
14 | IF(100.GT.100) GOTO 200 | |
15 | PNODES=0 | |
16 | MNODES=100 | |
17 | PNODES=PNODES+1 | |
18 | IF(PNODES.GT.MNODES) GOTO 160 | |
19 | SNODES(PNODES)=PARENT | |
20 | 10 IF(TNODE.GT.TREE(1,PARENT)) GOTO 40 | |
21 | IF(PNODES.LE.0) GOTO 150 | |
22 | PARENT=SNODES(PNODES) | |
23 | IF(TREE(4,PARENT).GE.0) GOTO 20 | |
24 | SON=TREE(2,PARENT) | |
25 | GOTO 30 | |
26 | 20 SON=TREE(3,PARENT) | |
27 | 30 IF(SON.LE.0) GOTO 70 | |
28 | PARENT=SON | |
29 | PNODES=PNODES+1 | |
30 | IF(PNODES.GT.MNODES) GOTO 160 | |
31 | SNODES(PNODES)=PARENT | |
32 | GOTO 70 | |
33 | 40 IF(PNODES.LE.0) GOTO 150 | |
34 | PARENT=SNODES(PNODES) | |
35 | IF(TREE(4,PARENT).LE.0) GOTO 50 | |
36 | SON=TREE(2,PARENT) | |
37 | GOTO 60 | |
38 | 50 SON=TREE(3,PARENT) | |
39 | 60 IF(SON.LE.0) GOTO 70 | |
40 | PARENT=SON | |
41 | PNODES=PNODES+1 | |
42 | IF(PNODES.GT.MNODES) GOTO 160 | |
43 | SNODES(PNODES)=PARENT | |
44 | 70 IF(SON.GE.0) GOTO 10 | |
45 | IF(TNODE.NE.-SON) GOTO 220 | |
46 | GOTO 80 | |
47 | 80 IF(TREE(4,PARENT).GE.0) GOTO 100 | |
48 | IF(SON.NE.TREE(3,PARENT)) GOTO 90 | |
49 | TREE(3,PARENT)=NEWNOD | |
50 | GOTO 120 | |
51 | 90 TREE(2,PARENT)=NEWNOD | |
52 | GOTO 120 | |
53 | 100 IF(SON.NE.TREE(2,PARENT)) GOTO 110 | |
54 | TREE(2,PARENT)=NEWNOD | |
55 | GOTO 120 | |
56 | 110 TREE(3,PARENT)=NEWNOD | |
57 | 120 SON=NEWNOD | |
58 | 130 IF(TREE(2,PARENT).EQ.SON.AND.TREE(4,PARENT).LT.0.OR.TREE(3,PARENT | |
59 | 1).EQ.SON.AND.TREE(4,PARENT).GT.0) GOTO 140 | |
60 | SON=PARENT | |
61 | PNODES=PNODES-1 | |
62 | IF(PNODES.LT.0) GOTO 180 | |
63 | IF(PNODES.LE.0) GOTO 150 | |
64 | PARENT=SNODES(PNODES) | |
65 | GOTO 130 | |
66 | 140 TREE(1,PARENT)=NEWLFT | |
67 | 150 RETURN | |
68 | 160 WRITE(6,170) | |
69 | 170 FORMAT(' NODAUD STACK OVERFLOW') | |
70 | STOP | |
71 | 180 WRITE(6,190) | |
72 | 190 FORMAT(' NODAUD STACK UNDERFLOW') | |
73 | STOP | |
74 | 200 WRITE(6,210) | |
75 | 210 FORMAT(' NODAUD IMPOSSIBLE') | |
76 | STOP | |
77 | 220 WRITE(6,230) TNODE,TREE(SON,PARENT) | |
78 | 230 FORMAT(' LOOKING FOR BUCKET ',I10,' BUT FOUND ',I10) | |
79 | STOP | |
80 | END |