home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / os / msdos / programm / 12526 < prev    next >
Encoding:
Internet Message Format  |  1993-01-28  |  3.5 KB

  1. Xref: sparky comp.os.msdos.programmer:12526 comp.lang.pascal:8621
  2. Path: sparky!uunet!opl.com!hri.com!spool.mu.edu!sdd.hp.com!usc!sol.ctr.columbia.edu!news.unomaha.edu!nevada.edu!jimi!equinox!jay-m
  3. From: jay-m@equinox.unr.edu (J.A. MacDonald)
  4. Newsgroups: comp.os.msdos.programmer,comp.lang.pascal
  5. Subject: File printing utility (nothing fancy) - Source
  6. Message-ID: <5275@equinox.unr.edu>
  7. Date: 22 Jan 93 22:38:41 GMT
  8. Followup-To: comp.os.msdos.programmer
  9. Organization: University of Nevada Reno
  10. Lines: 134
  11.  
  12. This is a really simple, but useful printing utility I wrote last summer,
  13. and find myself using so much that I thought I'd send it out to anybody
  14. interested. In its current form it is only useful on an HP Laserjet printer.
  15. It prints in compressed type, with a wide enough margin to hole punch,
  16. and writes the file na, version number (optional) and the page number
  17. at the top of each page. It should be easy to adapt to another printer
  18. by changing the printer codes, etc.
  19.  
  20. Cheers!
  21.  
  22. J.A. MacDonald
  23. Geosense Consulting
  24. Reno, NV
  25. jay-m@equinox.unr.edu
  26.  
  27. ============================================================================
  28. Program FPrint;
  29.  
  30. {******************************************************************************
  31.  
  32.   Fine print a text file with a label at the top of each page showing
  33. file name along with the page number. Set up for LaserJet 3 to use
  34. compressed print on letter sized paper with a margin of ten characters on
  35. left side.
  36.  
  37. Programing History:
  38.  
  39. Ver    Date        Comments
  40. ~~~    ~~~~        ~~~~~~~~
  41. 0.00   07-10-92    Original code (J.A. MacDonald)
  42.  
  43. ******************************************************************************}
  44.  
  45. Uses
  46.   Crt, Dos, Printer;
  47.  
  48. Const
  49.   ver = '0.00';
  50.  
  51.   ffeed = Chr(12);
  52.  
  53.   esc   = Chr(27);
  54.  
  55.   res = esc + 'E';
  56.  
  57.   mar10 = esc + '&a10L';
  58.  
  59.   letcompo =  esc + '&l2A' + esc + '&l0O' + esc + '&l6C' + esc + '(s16.66H';
  60.  
  61. Var
  62.   page    : array [1..70] of string;
  63.  
  64.   on_page,
  65.   on_line,
  66.   i,j,k,l : integer;
  67.  
  68.   ifil    : text;
  69.  
  70.   f_ver,
  71.   ifname  : string;
  72.  
  73.   dir     : DirStr;
  74.   rootn   : NameStr;
  75.   ext     : ExtStr;
  76.  
  77. Procedure Get_Info;
  78. begin
  79.   Writeln;
  80.   Writeln ('FPrint ver ', ver, ' : Fine print a file to HP Laserjet.');
  81.   Writeln;
  82.   if ParamCount < 1 then begin
  83.     Write ('Enter file name : ');
  84.     Readln (ifname);
  85.     Write ('Enter version number for page label (enter for none) : ');
  86.     Readln (f_ver);
  87.     Writeln;
  88.   end
  89.   else begin
  90.     ifname := ParamStr(1);
  91.     f_ver := ParamStr(2);
  92.   end;
  93.   if NOT (f_ver = '') then
  94.     f_ver := ' v.' + f_ver;
  95.   ifname := FExpand(ifname);
  96.   FSplit (ifname, dir, rootn, ext);
  97.   Assign (ifil, ifname);
  98.   {$I-}
  99.   Reset (ifil);
  100.   {$I+}
  101.   if IOResult <> 0 then begin
  102.     Writeln;
  103.     Writeln ('Error opening ', ifname, '.');
  104.     Writeln;
  105.     Halt;
  106.   end;
  107. end;
  108.  
  109. Procedure Print_File;
  110. var
  111.   on_pg,
  112.   p_label : string;
  113.  
  114. begin
  115.   Write ('Printing ', ifname, '...   sending page: ');
  116.   on_page := 0;
  117.   Writeln (lst, ffeed, letcompo, mar10);
  118.   repeat
  119.     inc(on_page);
  120.     GotoXY (30 + Length(ifname), WhereY);
  121.     Write (on_page);
  122.     on_line := 0;
  123.     repeat
  124.       inc(on_line);
  125.       Readln (ifil, page[on_line])
  126.     until (on_line = 70) OR (EOF(ifil));
  127.     Str (on_page, on_pg);
  128.     p_label := rootn + ext + f_ver + '     Pg ' + on_pg;
  129.     Writeln (lst, p_label:120);
  130.     for i := 1 to 3 do
  131.       Writeln (lst);
  132.     for i := 1 to on_line do
  133.       Writeln (lst, page[i]);
  134.     Writeln (lst, ffeed);
  135.   until EOF(ifil);
  136.   Close (ifil);
  137.   Writeln (lst, ffeed, res);
  138.   Writeln;
  139.   Writeln;
  140. end;
  141.  
  142. Begin
  143.   Get_Info;
  144.   Print_File;
  145. End.
  146.