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

  1. (********************************************************************)
  2. (* THIS PROCEDURE WILL OUTPUT PAGE TO THE OUT_DEVICE CONTAINED      *)
  3. (* THIS PAGE RECORD                                                 *)
  4. (* INPUT        : NONE                                              *)
  5. (* INPUT/OUTPUT : First,Last,No                                     *)
  6. (* OUTPUT       : OUTPUTED PAGE OF INFORMATION                      *)
  7. (* USES         : NO SIDE EFFECTS                                   *)
  8. (* CALLS        : Print_Out                                         *)
  9. (* ERRORS       : NONE                                              *)
  10. (* GLOBAL VARS  : NONE                                              *)
  11. (* SUBJECT      : PRINTER, PAGE OUTPUT                              *)
  12. (* DOMAIN       : ARNO A. KARNER                      LEVEL : 001   *)
  13. (********************************************************************)
  14.  
  15. PROCEDURE Print__Page                 ( VAR First , Last : Page_Ptr ;
  16.                                         VAR No           : INTEGER ) ;
  17.  
  18. VAR
  19.    P        : Page_Ptr ;
  20.    L        : Line_Ptr ;
  21.    Tem      : String_10 ;
  22.    T, Setup : Work_String ;
  23.  
  24. BEGIN (* PROC *)
  25.    Setup := '';
  26.    No := No + 1 ;
  27.    STR ( No : Linenum_Size , Tem ) ;
  28.    P := First ;
  29.    First := First^.Next ;
  30.    IF ('6' IN Switches )
  31.    THEN BEGIN (* 66 LINES PER INCH *)
  32.            Setup          := Setup + LPI06 ;
  33.         END
  34.    ELSE BEGIN (* 88 LINES PER PAGE *)
  35.            IF ('9' IN Switches )
  36.            THEN BEGIN (* 9 LINES PER INCH  *)
  37.                    Setup          := Setup + LPI09 ;
  38.                 END   (* 9 LINES PER INCH  *)
  39.            ELSE BEGIN (* DEFAULT 8 LINES PER INCH *)
  40.                    Setup          := Setup + LPI08 ;
  41.                 END ; (* DEFAULT 8 LINES PER INCH *)
  42.         END ;
  43.    WITH P^ DO
  44.    BEGIN (* WITH THIS PAGE *)
  45.       IF Max_CPL <= 80
  46.       THEN BEGIN
  47.               Setup := Setup + CPL80 ;
  48.               Chars_Per_Line := 80 ;
  49.            END
  50.       ELSE IF Max_CPL <= 96
  51.            THEN BEGIN
  52.                    Setup := Setup + CPL96 ;
  53.                    Chars_Per_Line := 96 ;
  54.                 END
  55.            ELSE BEGIN
  56.                    Setup := Setup + CPL132 ;
  57.                    Chars_Per_Line := 136 ;
  58.                 END ;
  59.       IF ('D' IN Switches ) THEN Setup := Setup + Double_Strike_On
  60.            ELSE Setup := Setup + Double_Strike_Off ;
  61.       IF First_Line <> NIL
  62.       THEN BEGIN (* PUT PAGE NUMBER IN *)
  63.               IF ODD ( No )
  64.               THEN BEGIN (* ODD PAGE *)
  65.                       STR ( Max_CPL : 6 , T ) ;
  66.                       Setup := Setup + T ;
  67.                       STR ( Cur_LPP : 6 , T ) ;
  68.                       WHILE LENGTH ( T ) < Chars_Per_Line - 27 DO
  69.                             T := T + ' ' ;
  70.                       T := T + 'Page ' + Tem ;
  71.                       First_Line^.Line := Setup + T ;
  72.                       IF ('O' IN Switches)
  73.                       THEN Out_Device := Odd_Pages
  74.                       ELSE IF ('P' IN Switches )
  75.                            THEN Out_Device := Printer
  76.                            ELSE IF ('S' IN Switches )
  77.                                 THEN Out_Device := CRT ;
  78.                    END   (* ODD PAGE *)
  79.               ELSE BEGIN (* EVEN PAGE *)
  80.                       STR ( Max_CPL : 6 , T ) ;
  81.                       Setup := Setup + T ;
  82.                       STR ( Cur_LPP : 6 , T ) ;
  83.                       Setup := Setup + T + '  ' ;
  84.                       First_Line^.Line := Setup + ' Page ' + Tem ;
  85.                       IF ('E' IN Switches)
  86.                       THEN Out_Device := Even_Pages
  87.                       ELSE IF ('P' IN Switches )
  88.                            THEN Out_Device := Printer
  89.                            ELSE IF ('S' IN Switches )
  90.                                 THEN Out_Device := CRT ;
  91.                    END ; (* EVEN PAGE *)
  92.            END ; (* PUT PAGE NUMBER IN *)
  93.       WHILE First_Line <> NIL DO
  94.       BEGIN (* PRINT LINES *)
  95.          L          := First_Line ;
  96.          First_Line := First_Line^.Next ;
  97.          Print_Out ( Out_Device , L^.Line ) ;
  98.          DISPOSE ( L ) ;
  99.       END ; (* PRINT LINES *)
  100.       IF ( 'P' IN Switches )
  101.       THEN Print_Out ( Out_Device , Form_Feed ) ;
  102.    END ; (* WITH THIS PAGE *)
  103.    DISPOSE (P) ;
  104. END ; (* PROC *)
  105.