home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / AAKXREF.ZIP / PRINTREE.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-04-25  |  2.3 KB  |  59 lines

  1. (********************************************************************)
  2. (* THIS PROCEDURE WILL PRINT OUT CROSS REFRENCE LISTING TO THE      *)
  3. (* OUTPUT STREEM CONTROLED BY THE SWITCHES                          *)
  4. (* INPUT        : NONE                                              *)
  5. (* INPUT/OUTPUT :                                                   *)
  6. (* OUTPUT       :                                                   *)
  7. (* USES         : NO SIDE EFFECTS                                   *)
  8. (* CALLS        :                                                   *)
  9. (* ERRORS       :                                                   *)
  10. (* GLOBAL VARS  : NONE                                              *)
  11. (* SUBJECT      :                                                   *)
  12. (* DOMAIN       : ARNO A. KARNER                      LEVEL : 00?   *)
  13. (********************************************************************)
  14.  
  15. PROCEDURE printtree ( w : Word_Ptr ) ;
  16.  
  17.    PROCEDURE Print_Word ( w : Word ) ;
  18.  
  19.    VAR
  20.       l   : INTEGER ;
  21.       x   : Item_Ptr;
  22.       Tem : Work_String ;
  23.  
  24.    BEGIN (* NESTED PRINT WORD *)
  25.       Tem := W.Key ;
  26.       WHILE LENGTH ( Tem ) < Ch_Per_Word DO Tem := Tem + ' ' ;
  27.       Tem := Tem + ' : ' ;
  28.       Add_Line_Str ( Line , Tem , LENGTH ( Tem ) ) ;
  29.       x := w.first;
  30.       l := 0 ;
  31.       repeat
  32.          IF l = Ref_Per_Line THEN
  33.          BEGIN (* NEW LINE *)
  34.             New_Line ( fv , File_Name , Title , Line , Line_Numb ) ;
  35.             Tem := '' ;
  36.             WHILE LENGTH ( Tem ) < Ch_Per_Word DO Tem := Tem + ' ' ;
  37.             Tem := Tem + ' : ' ;
  38.             Add_Line_Str ( Line , Tem , LENGTH ( Tem ) ) ;
  39.             IF NOT ( 'S' IN Switches ) THEN scrn_update(false);
  40.             l := 0
  41.          END ; (* NEW LINE *)
  42.          l := l + 1 ;
  43.          STR ( X^.Lno : LineNum_Size , Tem ) ;
  44.          Add_Line_Str ( Line, Tem , LENGTH ( Tem ) ) ;
  45.          x := x^.next
  46.       UNTIL X = NIL ;
  47.       New_Line ( fv , File_Name , Title , Line , Line_Numb ) ;
  48.       IF NOT ( 'S' IN Switches ) THEN scrn_update ( false )
  49.    END ; (* NESTED PRINT WORD *)
  50.  
  51. BEGIN (* PRINT TREE *)
  52.    IF w <> NIL THEN
  53.    BEGIN
  54.       printtree ( w^.left ) ;
  55.       Print_Word ( w^ ) ;
  56.       printtree ( w^. right ) ;
  57.    END ;
  58. END ; (* PRINT TREE *)
  59.