home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / turbopas / tlist11.lbr / PROCLINE.PQS / procline.pas
Pascal/Delphi Source File  |  1985-11-08  |  3KB  |  84 lines

  1. PROCEDURE Abort_TLIST;
  2.  
  3. BEGIN
  4.  IF Ch = ^C THEN
  5.   BEGIN
  6.    WRITELN;
  7.    WRITELN('TLIST Aborted.');
  8.    CLOSE(Text_File);
  9.    IF DiskFile THEN CLOSE(List_file);
  10.    WRITELN(Page_number, ' pages.');
  11.    WRITELN;
  12.    HALT;
  13.   END;
  14. END;
  15.  
  16. PROCEDURE Process_Line;
  17.  
  18. VAR
  19.  Contnu : BOOLEAN;
  20.  Temp : Line_Type;
  21.  
  22. BEGIN
  23.  Contnu := TRUE;
  24.  WHILE Contnu DO
  25.   BEGIN
  26.    Contnu := FALSE;
  27.    Expand_Tabs(Line);
  28.    Temp := COPY(Line, 1, Line_Width);
  29.    Line := COPY(Line, 1 + LENGTH(Temp), 255);
  30.    Contnu := LENGTH(Line) > 0;
  31.    Replace_Symbols_In_Line(Temp);
  32.    IF Page_number >= Starting_page_number THEN
  33.     IF DiskFile THEN
  34.      WRITELN(List_file, Temp:(LENGTH(Temp) + Page_Offset))
  35.     ELSE
  36.      WRITELN(LST, Temp:(LENGTH(Temp) + Page_Offset));
  37.    Line_number := Line_number + 1;
  38.    IF Line_number = Max_no_lines THEN
  39.     BEGIN
  40.      IF Page_number >= Starting_page_number THEN
  41.       BEGIN
  42.        IF DiskFile THEN
  43.         BEGIN
  44.          FOR I := 1 TO Footer_Margin DO WRITELN(List_file);
  45.          WRITELN(List_file, Footer_String:(LENGTH(Footer_String) + Page_Offset));
  46.          FOR I := 1 TO Margin_Bottom - Footer_Margin - 1 DO WRITELN(List_file);
  47.         END
  48.        ELSE
  49.         BEGIN
  50.          FOR I := 1 TO Footer_Margin DO WRITELN(LST);
  51.          WRITELN(LST, Footer_String:(LENGTH(Footer_String) + Page_Offset));
  52.          FOR I := 1 TO Margin_Bottom - Footer_Margin - 1 DO WRITELN(LST);
  53.         END;
  54.        IF Paginate THEN
  55.         BEGIN
  56.          WRITE(' Page ', Page_number,
  57.           ' PAUSE; "P" to continue, ^C to abort ... ');
  58.          READ(KBD, Ch);
  59.          Abort_TLIST;
  60.         END;
  61.       END;
  62.      Line_number := 0;
  63.      Page_number := Page_number + 1;
  64.      IF Page_number >= Starting_page_number THEN
  65.       BEGIN
  66.        IF DiskFile THEN
  67.         BEGIN
  68.          FOR I := 1 TO Margin_Top - Header_Margin - 1 DO WRITELN(List_file);
  69.          WRITELN(List_file, Header:(LENGTH(Header) + Page_Offset), ^M,
  70.           'Page':(Line_Width + Page_Offset - 4), Page_number:4);
  71.          FOR I := 1 TO Header_Margin DO WRITELN(List_file);
  72.         END
  73.        ELSE
  74.         BEGIN
  75.          FOR I := 1 TO Margin_Top - Header_Margin - 1 DO WRITELN(LST);
  76.          WRITELN(LST, Header:(LENGTH(Header) + Page_Offset), ^M,
  77.           'Page':(Line_Width + Page_Offset - 4), Page_number:4);
  78.          FOR I := 1 TO Header_Margin DO WRITELN(LST);
  79.         END;
  80.       END;
  81.     END;
  82.   END;
  83. END;
  84.