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

  1. procedure get_info;
  2.  
  3. var
  4.    n,m,i : integer;
  5.    Dir,
  6.    Path : File_Str ;
  7.    Name : String_08 ;
  8.    Ext  : String_03 ;
  9.    parameters : string[127] absolute cseg:$0080;
  10.    workparams : string[127];
  11.    The_File : TEXT ;
  12.  
  13.    procedure query_File_Name;
  14.  
  15.    begin
  16.       File_Name := '' ;
  17.       write('Enter name of file to be listed [.PAS] : ');
  18.       readln ( File_Name ) ;
  19.       IF LENGTH ( File_Name ) = 0 THEN HALT ;
  20.       File_Separator ( File_Name , Path , Name , ext ) ;
  21.       WRITELN ( Path , '//' , Name , '//' , Ext ) ;
  22.       IF ( Ext = '' )
  23.       THEN File_Name := Path + Name + '.PAS' ;
  24.    end;
  25.  
  26.    procedure get_File_Name;
  27.  
  28.    begin
  29.       M := 0;
  30.       repeat
  31.          M := M+1
  32.       until (M > length(workparams)) or (workparams[M] <> ' ');
  33.       N:=M;
  34.       REPEAT
  35.          N:=N+1
  36.       UNTIL (N>length(workparams)) OR (workparams[N]='/');
  37.       File_Name := copy ( workparams , m , ( n - m ) ) ;
  38.       File_Separator ( File_Name , Path , Name , ext ) ;
  39.       IF ( Ext = '' ) AND ( File_Name [ LENGTH ( File_Name ) ] <> '.' )
  40.       THEN File_Name := Path + Name + '.PAS' ;
  41.       IF ( LENGTH ( File_Name ) = 0 ) OR ( not Exist ( File_Name ) )
  42.       THEN BEGIN
  43.               repeat
  44.                  writeln ( 'File ' , File_Name , ' not found.' ) ;
  45.                  query_File_Name;
  46.               until Exist (File_Name);
  47.            END ;
  48.    END ; (* NESTED PROC *)
  49.  
  50.    procedure waytogo_user;  {* File_Name and switches on command line*}
  51.    begin
  52.       n := pos('/',workparams) + 1;
  53.       While n<=length(workparams) do
  54.       begin
  55.          if upcase( workparams [ n ] ) IN
  56.             ['6','8','9','B','C','D','E','F','I','N','M','O','P','S','T']
  57.          then switches := switches + [upcase(workparams[n])];
  58.          n:=n+1
  59.       end ;
  60.    end;
  61.  
  62.    PROCEDURE Switch_Menu ;
  63.    VAR
  64.       Answer, Answer1 : char;
  65.    BEGIN (* NESTED *)
  66.       write('Output to file, screen, or printer (F,S,P) ? ');
  67.       answer := get_choices('f','s','p');
  68.       If answer = 'P'
  69.       THEN BEGIN (* PRINTER OPTIONS *)
  70.               Switches := Switches + ['P'] ;
  71.               write('Printer output in Double strike mode (Y,N) ? ');
  72.               if get_answer('y','n') = 'Y'
  73.               then switches := switches + ['D'] ;
  74.               WRITE ('Spool even pages to disk file (Y,N) ? ');
  75.               if get_answer('y','n') = 'Y'
  76.               then switches := switches + ['E'];
  77.               WRITE ('Spool odd pages to disk file (Y,N) ? ');
  78.               if get_answer('y','n') = 'Y'
  79.               then switches := switches + ['O'];
  80.               WRITE ('Compress Procedures on page (Y,N) ? ');
  81.               if get_answer('y','n') = 'Y'
  82.               then switches := switches + ['C'];
  83.               WRITE ('Lines per inch (6,8,9) ? ');
  84.               Answer1 := Get_Choices ('6','8','9') ;
  85.               IF Answer1 = '6' THEN BEGIN
  86.                                        Switches := Switches + ['6'] ;
  87.                                     END
  88.               ELSE IF Answer1 = '8'
  89.                    THEN BEGIN
  90.                            Switches := Switches + ['8'] ;
  91.                         END
  92.                    ELSE BEGIN
  93.                            switches := switches + ['9'] ;
  94.                         END ;
  95.            END
  96.       else
  97.          if answer='S'
  98.          then switches := switches + ['S']
  99.          else begin
  100.                  switches := switches + ['F'];
  101.                  write('Enter name of output file [',copy(File_Name,1,
  102.                         pos('.',File_Name)-1),'.','LST]');
  103.                  readln(outname);
  104.                  if outname=''
  105.                  then outname := copy(File_Name,1,pos('.',File_Name)-1)
  106.                               + '.' + 'LST'
  107.               end;
  108.       write('List Include files within the Main listing (Y,N) ? ');
  109.       if get_answer('y','n') = 'Y'
  110.       then BEGIN
  111.               switches := switches + ['I'];
  112.               WRITE ('Produce top down program listing (Y,N) ? ');
  113.               if get_answer('y','n') = 'Y'
  114.               then switches := switches + ['T'];
  115.         END ;
  116.       write('Produce cross reference of user-defined Vars (Y,N) ? ');
  117.       if get_answer('y','n') = 'Y'
  118.       then switches := switches + ['N'];
  119.       WRITE ('Delete back up files as listed (Y,N) ? ');
  120.       if get_answer('y','n') = 'Y'
  121.       then switches := switches + ['B'];
  122.       WRITE ('Output only modified files (Y,N) ? ') ;
  123.       IF Get_Answer ( 'y' , 'n' ) = 'Y'
  124.       THEN Switches := Switches + ['M'] ;
  125.    end;
  126.  
  127. begin  (* PROC *)
  128.    workparams := parameters;
  129.    If ( POS ( '/' , workparams ) > 0 ) AND
  130.       ( POS ( '/' , WorkParams ) < LENGTH ( WorkParams ) )
  131.    THEN BEGIN (* SWITCHES ON COMMAND LINE *)
  132.            get_File_Name;
  133.            WayToGo_User ;
  134.         END
  135.    ELSE BEGIN (* 03 INPUT DATA SUPLIED *)
  136.            Get_File_Name ;
  137.            Switch_Menu ;
  138.         END ;
  139.    while File_Name [ LENGTH ( File_Name ) ] = #0 DO
  140.         delete ( File_Name , length ( File_Name ) , 1 ) ;
  141.    WRITELN ('FILE NAME ' , File_Name ) ;
  142.    I := LENGTH ( File_Name ) ;
  143.    WHILE ( I > 0 ) AND ( File_Name [ I ] <> '.' ) DO I := I - 1 ;
  144.    IF ( I <> 0 ) AND ( '.BAK' = Copy ( File_Name , I , 4 ) ) THEN
  145.    BEGIN (* DEL BAK RENAME FILE *)
  146.       WRITE ( 'Deleting backup file' ) ;
  147.       ASSIGN ( The_File , File_Name ) ;
  148.       ERASE ( The_File ) ;
  149.       File_Name := Copy ( File_Name , 1 , I ) + 'PAS' ;
  150.    END ; (* DEL BAK RENAME FILE *)
  151.    GetDir ( 0, Dir ) ;
  152.    Dir := Fix_Path_Str ( Dir ) ;
  153.    File_Name := Dir + File_Name ;
  154.    File_Separator ( File_Name , Main_Path, Name, Ext ) ;
  155.    File_Name := Fix_Path_Str ( File_Name ) ;
  156. {$V-} { don't care about string size }
  157.    Upper_Case ( File_Name ) ;
  158. {$V+}
  159.    Main_File_Name := File_Name ;
  160. END ; (* PROC *)
  161.