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

  1. BEGIN {*** main ***}
  2.    (***************** INIT ***********************)
  3.    lastf :=' ';  { to prevent an error; see CASE scan of com2,pcom2x }
  4.    Switches     := [];
  5.    get_info;
  6.    empty_keyboard;
  7.    IF ( 'S' IN Switches )
  8.    THEN Output_Device := CRT
  9.    ELSE IF ( 'F' IN Switches )
  10.         THEN Output_Device := Disk
  11.         ELSE Output_Device := Printer ;
  12.    (* INIT VARS *)
  13.    First_Page   := NIL ;
  14.    Last_Page    := NIL ;
  15.    Cur_Page     := NIL ;
  16.    Page_Numb    := 0 ;
  17.    New_Line_Ptr ( Line ) ;
  18.    Line_Numb    := 1 ;
  19.    STR          ( Line_Numb : Linenum_Size , ID ) ;
  20.    Id           := Id + ' ' ;
  21.    Add_Line_Str ( Line , Id , LENGTH ( Id ) ) ;
  22.    Taken_Careof := False ;
  23.    Inc_Root     := NIL ;
  24.    Inc_Last     := NIL ;
  25.    Root         := nil;
  26.    scan         := none;
  27.    title        := 'Main';
  28.  
  29.    (************************** INIT OUTPUT DEVICE *********************)
  30.    IF NOT ('S' in switches) THEN
  31.    BEGIN
  32.       WRITELN ;
  33.       WRITELN ('Listing main file ',File_Name);
  34.       IF 'F' in switches THEN
  35.       BEGIN
  36.          WRITELN ( 'All data to file ', outname ) ;
  37.          ASSIGN  ( OutF , OutName ) ;
  38.          REWRITE ( OutF ) ;
  39.       END ;
  40.       IF 'O' IN Switches THEN
  41.       BEGIN
  42.          File_Separator ( File_Name , File_Path , File_Nam , File_Ext);
  43.          Out_Odd_Name := File_Path + File_Nam + '.ODD' ;
  44.          WRITELN ( File_Path , '//',File_Nam ,'//', File_Ext ) ;
  45.          WRITELN ( 'Odd Pages To File ' , Out_Odd_Name ) ;
  46.          ASSIGN  ( OddF , Out_Odd_Name ) ;
  47.          REWRITE ( OddF ) ;
  48.          Switches := Switches + ['P'] ;
  49.       END ;
  50.       IF 'E' IN Switches THEN
  51.       BEGIN
  52.          File_Separator ( File_Name , File_Path , File_Nam , File_Ext);
  53.          Out_Even_Name := File_Path + File_Nam + '.EVE' ;
  54.          WRITELN ( 'Even Pages to file ' , Out_Even_Name ) ;
  55.          ASSIGN  ( EveF , Out_Even_Name ) ;
  56.          REWRITE ( EveF ) ;
  57.          Switches := Switches + ['P'] ;
  58.       END ;
  59.    END;
  60.    IF ('P' IN Switches )
  61.    THEN BEGIN
  62.            WRITE ( LST , Pre_Set_Skip + ^B ); { PERF SKIP = 2 }
  63.            IF '6' IN Switches THEN Lines_Per_Page := 64
  64.            ELSE IF '8' IN Switches THEN Lines_Per_Page := 84
  65.                 ELSE Lines_Per_Page := 94;
  66.         END;
  67.    NEW ( Inc_Last ) ;
  68.    WITH Inc_Last^ DO
  69.    BEGIN (* WITH *)
  70.       Prev := Inc_Root ;
  71.       Inc_File_Name := File_Name ;
  72.       Inc_Title := 'Main' ;
  73.    END ; (* WITH *)
  74.    Inc_Root := Inc_Last ;
  75.    WHILE Inc_Root <> NIL DO
  76.    BEGIN (* PRINT FILES *)
  77.       Inc_Last := Inc_Root ;
  78.       WITH Inc_Last^ DO
  79.       BEGIN (* WITH *)
  80.          Inc_Root := Prev ;
  81.          title    := Inc_Title ;
  82.          File_Name := Inc_File_Name ;
  83.       END ; (* WITH *)
  84.       DISPOSE ( Inc_Last ) ;
  85.       Inc_Last := NIL ;
  86.       File_Separator ( File_Name , File_Path , File_Nam , File_Ext ) ;
  87.       IF ( EXIST ( File_Path + File_Nam + '.BAK' ) )
  88.       THEN BEGIN (* BACKUP FILE EXISTS *)
  89.               IF ( 'B' IN Switches )
  90.               THEN BEGIN (* DELETE BACKUP *)
  91.                       IF NOT ( 'S' IN Switches ) THEN
  92.                       BEGIN (* MESSAGE *)
  93.                          WRITELN ;
  94.                          WRITELN ( 'Deleting ' , File_Path , File_Nam ,
  95.                                    '.BAK' ) ;
  96.                          WRITE   ( 'Processing line # ' ) ;
  97.                       END ; (* MESSAGE *)
  98.                       ASSIGN ( Tem_File , File_Path + File_Nam +
  99.                               '.BAK' ) ;
  100.                       ERASE  ( Tem_File ) ;
  101.                       IF ( 'M' IN Switches )
  102.                       THEN BEGIN (* YES OUTPUT *)
  103.                               IF ( 'S' IN Switches )
  104.                               THEN Output_Device := CRT ;
  105.                               IF ( 'P' IN Switches )
  106.                               THEN BEGIN
  107.                                       Output_Device := Printer ;
  108.                                    END ;
  109.                            END ; (* YES OUTPUT *)
  110.                    END ; (* DELETE BACKUP *)
  111.            END   (* BACKUP FILE EXISTS *)
  112.       ELSE BEGIN (* NO BACKUP FILE EXISTS *)
  113.               IF NOT ( 'M' IN Switches )
  114.               THEN BEGIN (* YES OUTPUT *)
  115.                       IF ( 'S' IN Switches )
  116.                       THEN Output_Device := CRT ;
  117.                       IF ( 'P' IN Switches )
  118.                       THEN Output_Device := Printer ;
  119.                    END   (* YES OUTPUT *)
  120.               ELSE Output_Device := Null ;
  121.            END ; (* NO BACKUP FILE EXISTS *)
  122.       ASSIGN ( fv , File_Name ) ;
  123.       Reset  ( Fv ) ;
  124.       Taken_Careof := False ;
  125.       do_listing ( fv , title , File_Name , none ) ;
  126.    END ; (* PRINT FILES *)
  127. (*************************** CROSS REFRENCE ***********************)
  128.    IF ('N' in switches) THEN
  129.    BEGIN (* PRODUCE CROSS REF *)
  130.       IF NOT ('S' in switches) THEN
  131.       BEGIN
  132.          WRITELN;
  133.          WRITE('Listing cross reference of ',Main_File_Name);
  134.          IF 'F' in switches THEN WRITELN(' to file ',outname)
  135.          ELSE WRITELN;
  136.          WRITE('Processing line #')
  137.       END;
  138.       title := 'Xref';
  139.       ASSIGN ( fv , Main_File_Name ) ;
  140.       Reset  ( fv ) ;
  141.       New_Page ( fv , Main_File_Name , Title ) ;
  142.       printtree(root);
  143.       CLOSE ( fv ) ;
  144.    END ;
  145.    (************************* PRINT TRAILING PAGES ******************)
  146.    WHILE First_Page <> NIL DO
  147.      Print__Page ( First_Page , Last_Page , Page_Numb ) ;
  148.    (************************* CLOSE FILES AND EXIT *****************)
  149.    IF 'O' IN Switches THEN CLOSE ( Oddf ) ;
  150.    IF 'E' IN Switches THEN CLOSE ( EveF ) ;
  151.    IF 'F' IN Switches THEN CLOSE ( OutF ) ;
  152. END.
  153.