QUIP Software Logo

This example uses QGEN to convert an IBM mainframe printer file to a format that can be sent to a PC printer.

On the mainframe, text is sent to the printer one line at a time. The first character of each line is used for carriage control, that is, to indicate whether to skip any lines or to the top of the next page. 

Unlike the PC, Mac or Unix world, which use ASCII characters, mainframes use EBCDIC, and there are no end of line markers. Since the standard print width is 132 characters, each line of the printer file consists of exactly 133 characters, beginning with the carriage control character.

The following specs handle double and triple spacing and page skips, but overprinting (carriage control = "+") is ignored, since the effect depends on the physical device the file will be sent to.

************************************************************************
* MFPR2PC1.QGS - 03-18-01 - Rev.00 - Mainframe print file converter
* ---------------------------------------------------------------------
* Converts an EBCDIC print file from a mainframe for printing on a PC.
* Output is ASCII text with form feeds inserted for page skips.
* Double, triple spacing are preserved, overprinting (CC = +) is not.
************************************************************************

* Change the file names as needed for INTAP and OUTAP,
* or use command line parameters to pass them to QGEN.

* Input file is fixed length 133, for carriage control + 132 characters,
* change if print width is different (don't forget the carriage control).

INTAP     PRINTFIL.EBC   ( 133

* Output file is variable width, so trailing blanks will be dropped.
* Maximum width (not including the CR-LF end-of line marker) remains 133
* because lines that begin a new page are preceded by a form feed character.

OUTAP     PRINTFIL.ASC   ( 133 V

LISTING   MFPR2PC1.LST

SETUP   ADDRMODE C
RUNOPS   CLEAR 140,275   OUTSTART 141

  140        eta  1c1                             Carriage control character

  wrt        and  140c1@'0;-'                     Add line for double space
  wrt        and  140c1@'-'                       Add another for triple space
  skpFF      and  140c1@'1'                       New page - skip to FF

  141        eta  2c132                           Convert line text to ASCII
  skpEND     all                                  Skip over FF routine

_FF_         nop                        New page routine - insert form feed

  141r       add  k12                             Put form feed at beginning
  142        eta  2c132                           Convert line text to ASCII
  z1'1'      all                                  Count page skips

END 

Change the input and output filenames as appropriate and run with QGEN.  For greater flexibility, change the INTAP and OUTAP statements to receive command line parameters and set up a batch file to pass it the file names.