#ifndef h_PFILE #define h_PFILE /****************************************************************************** * * Definition of Printer File descriptor * * Module %M% Version %I% Date %H% * * (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved * This is unpublished proprietary source code of Ardent Software Inc. * The copyright notice above does not evidence any actual or intented * publication of such source code. * ******************************************************************************* * * Maintenence log - insert most recent change descriptions at top * * Date.... GTAR# WHO Description......................................... * 06/21/99 25138 DTM Added USEROPTS functionality * 10/14/98 23801 SAP Change copyrights. * 08/30/96 19156 AGM Replace job_handle by printer_handle and printer_DC * 12/21/95 17804 GMM Changed global cr to UVcr * 07/13/95 16881 PGW Include variables required for Windows NT spooling. * 08/01/95 17030 JC Added suppmap map for suppressing NLS mapping. * 07/11/95 16713 AGM Remove Pmask global variable * 05/18/95 13842 SPR Integrate 7.3.3.3 Sequoia changes into 8.3.3.1. * 02/22/95 15740 JC Increased sixe of printer memory. * 01/16/95 15740 EAP Added opmap to pblock structure. * 11/24/94 15740 JC Added mapname to pblock structure. * 05/16/94 13551 JC Added FOOT_B for FOOTING with 'B' option. * 04/20/94 12871 WLG Added istape flag to pblock struct. * 04/07/94 12866 WLG Increase spg and epg to int from short. * 03/09/94 12307 EAP Added Rprint() and Rpad() for RAW.OUTPUT * 08/02/93 10978 SHK Port to DEC AXP * 11/12/91 8840 TMC change getmsg to uvgetmsg for PTX * 02/11/90 6819 JWT change DATA stack management to work in memory * 01/31/90 6811 JWT change spool file name generation * 08/23/89 6024 DTW add whitespace to the pblock structure * 07/25/88 - - Maintenence log purged at 5.2.1, see release 5.1.10. * *****************************************************************************/ #define Pmaxopen 16 #ifdef MSWIN #define Pmemsize 6400 #else #if COMPUTER == DEC_ALPHA || COMPUTER == SEQUOIA #define Pmemsize 20480 #else #define Pmemsize 5120 #endif #endif #include "NLS.h" struct pblock { BITMAP inuse:1, /* Channel has been set up */ active:1, /* Channel is currently open */ hold:1, /* Do NOT close the output channel */ nobuffer:1, /* Output is NOT buffered */ started:1, /* Some output has occured */ format:1, /* Page headings and/or footings */ keepform:1, /* user chosen value for format */ primed:1, /* Print heading before next output */ wait:1, /* Wait for user input at bottom of page*/ spool:1, /* Send file to spooler */ hp:1, /* REQUEUE option of spooler */ ihold:1, /* Place job into "hold" state */ nohead:1, /* Don't print spooler banner page */ eject:1, /* Eject a page at end of report */ inform:1, /* Inform user of spooler entry number */ ftn:1, /* Fortran filter */ lnum:1, /* Line number filter */ next:1, /* Next available hold file */ left:1, /* Cursor is at left margin */ whitespace:1, /* true if the last line printed was for whitespace */ istape:1, /* This channel is a tape device requiring buffering */ suppmap:1, /* Suppress NLS mapping flag for channel */ /* Windows NT-specific things: */ gdi:1, /* user requested GDI mode */ raw:1, /* user requested raw mode */ fontbold:1, /* user asked for BOLD printing */ fontitalic:1, /* user asked for italic printing */ use_gdi:1, /* true if currently printing in GDI mode */ use_font:1; /* true if using a non-default font */ short chan, copies; int spg, epg; short width, depth, top_mar, bot_mar, lc, flc, hlc, lpp, mode, priority, level; long defer; int page, #ifndef MSWIN sp_job_id, #endif fchan, dchan; uchar *head, *foot; char *filename, *banner, *form, *lptr, *useropts; STRING cr, ff, mapname; CMAP *opmap; /* NLS Mapping table for WRITE */ #ifdef MSWIN double linespace; /* Line spacing ratio */ char *fontname; /* Font name specified by user */ int fontsize; /* Size of font specified by user */ int tabsize; /* Spacing for tab expansion */ DWORD sp_job_id; /* Spooler job number */ HDC printer_DC; /* GDI mode: printer Device Context */ HANDLE printer_handle; /* Raw mode: printer handle */ pid_t job_process_id; /* Process owning the Device Context or */ /* printer handle */ int char_height; /* Character height defined by font */ int nt_page; /* Page count (used for range checking) */ int nt_lc; /* Line count (used for LNUM option) */ int nt_charpos; /* Current character position in line */ int nt_newline; /* True if last action was end of line */ #endif }; struct pfile { Pblock *p; MFILE *f; }; EXTERN PFILE Pctrl[]; EXTERN STRING HEAD_B,HEAD_F,HEAD_I,FOOT_B; EXTERN TERMSET *term; EXTERN STRING crlf, UVcr, ff, clrs; EXTERN char Phost[]; EXTERN void #if COMPUTER != CCI Pprint(), Ppad(), Rprint(), Rpad(), #endif Pcrlf(), Peject(), Popen(), Phfset(), Pinit(); EXTERN void Pnextpage(), Phfprint(), Pmake(), Pnewpage(); EXTERN void Pstartjob(); EXTERN int Pendjob(); EXTERN int Tandchk(); EXTERN STRING uvgetmsg(); EXTERN char *Pmalloc(); EXTERN void Pfree(), Pfork(), Punfork(), Prelease(), Pflush(); EXTERN Pblock *Pget(); EXTERN char *Phold(); #endif /* end of PFILE.h */