* * $Id: zptree.F,v 1.1.1.1 1996/03/08 12:01:13 mclareni Exp $ * * $Log: zptree.F,v $ * Revision 1.1.1.1 1996/03/08 12:01:13 mclareni * Zbook * * #include "zbook/pilot.h" SUBROUTINE ZPTREE(IZ,ID,LABEL,LFRMT) C C ****************************************************************** C * * C * PRINTS THE STRUCTURE DEPENDING ON BANK ID * C * * C ****************************************************************** C DIMENSION IZ(1),ID(1) DIMENSION LABEL(1) DIMENSION JD(51),NL(51),NM(51) C DATA MAXLEV/50/ C C ------------------------------------------------------------------ C IF (ID(1).EQ.0) RETURN JZ = IZ(1) LOUT = IZ(JZ + 4) I = 1 JD(I) = ID(1) JDI = JD(I) LEVEL = I - 1 WRITE(LOUT,6001) LEVEL LLEVL = LEVEL CALL ZPRINT(IZ,JDI,LABEL,LFRMT,0,0) ND = IZ(JDI) IL = JDI + ND + 1 NID = IZ(IL + 1) IF (NID.LT.IZ(JZ + 12)) GO TO 940 IF (NID.GT.IZ(JZ + 13)) GO TO 940 NL(I) = IZ(IL) NM(I) = NL(I) IF (NL(I).LE.0) GO TO 999 C 21 CONTINUE JDI = JD(I) NLI = NL(I) NMI = NM(I) NLII = NMI - NLI + 1 JD(I + 1) = IZ(JDI - NLII) IF (JD(I + 1).NE.0) GO TO 50 45 CONTINUE NL(I) = NL(I) - 1 IF (NL(I).NE.0) GO TO 21 I = I - 1 IF (I.LE.0) GO TO 999 GO TO 45 50 CONTINUE JDI = JD(I + 1) ND = IZ(JDI) IL = JDI + ND + 1 NID = IZ(IL + 1) IF (NID.LT.IZ(JZ + 12)) GO TO 940 IF (NID.GT.IZ(JZ + 13)) GO TO 940 NL(I + 1) = IZ(IL) NM(I + 1) = NL(I + 1) LEVEL = I IF (LLEVL.NE.LEVEL) WRITE(LOUT,6001) LEVEL LLEVL = LEVEL CALL ZPRINT(IZ,JDI,LABEL,LFRMT,0,0) IF (NL(I + 1).LE.0) GO TO 45 I = I + 1 IF (I.GT.MAXLEV) GO TO 980 GO TO 21 C C ERROR IN STRUCTURE C 940 CALL ZERROR(IZ,400,'ZPTREE',ID) GO TO 999 C C LEVEL TOO BIG C 980 CALL ZERROR(IZ,800,'ZPTREE',ID) C 999 RETURN 6001 FORMAT(//,10X,' +++ LEVEL ',I3) END