Customizing the line data transform

InfoPrint provides several sample programming exits to assist you in customizing the line-data transform. Use of the programming exits is optional. You specify the names of the exit programs with the inpexit, outexit, and resexit keywords. Each of these keywords is described in InfoPrint Manager: Reference or the line2afp man page. If you are using InfoPrint's sample user exits or your own user exit to convert incoming data streams from one code page to another code page, then the INPCCSID parameter indicates the code page of the incoming data stream. The OUTCCSID parameter indicates the code page of the output from UCONV.

Note: If you have written any user-exit programs that use ICONV, you must alter them to use UCONV instead. See the InfoPrint Manager: Reference for more information.

InfoPrint provides these sample exits:

/usr/lpp/psf/acif/apkinp.c
Input record exit
/usr/lpp/psf/acif/apkout.c
Output record exit
/usr/lpp/psf/acif/apkres.c
Resource exit

In addition, InfoPrint provides these user input record exits to translate line-data data streams:

/usr/lpp/psf/acif/apka2e.c
Converts the ASCII stream data into the EBCDIC stream data.
Note: The default conversion is from code page 805 to code page 037. You can override the defaults with the inpccsid and outccsid parameters.
/usr/lpp/psf/acif/asciinp.c
Converts unformatted ASCII data that contains carriage returns and form feeds into a record format that contains ANSI carriage control characters. This exit encodes the ANSI carriage control character in byte 0 of every record.
/usr/lpp/psf/acif/asciinpe.c
Converts unformatted ASCII data into a record format as does asciinp.c and then converts the ASCII stream data into EBCDIC1 stream data.
/usr/lpp/psf/acif/dbblank
Processes EBCDIC double-byte line data downloaded from the z/OS spool by adding an extra blank to the end of the input record if:
  1. The last byte in the record is a blank (x'40' in EBCIDIC).
  2. The second to the last byte is not a blank.
  3. The input record is line data; that is, it is not a structured field.
This exit also updates the record length by 1 if the blank is added. The exit has no way of determining if the data is DBCS or not, so this will happen to every input record that ends in a single blank. The exit assumes that the input data is EBCIDIC, and that the output data is also EBCIDIC. In other words, the exit does not do any code page translation, but it simply adds an extra blank if needed.
    Note:
  1. This exit is only intended to be used if the spool file consists of double-byte or mixed single- or double-byte data that has blank truncation. Adding a blank to other types of data files could cause formatting errors, depending on how the page definition is coded.
  2. This exit only checks for a single trailing blank, so if a different number of odd blanks is present in the data, it is up to the user to make sure the data is formatted with the correct font.

The C language header file for all line-data transform exit programs is also provided:

  • /usr/lpp/psf/acif/apkexits.h
along with the build rules for the line-data transform user exits:
  • /usr/lpp/psf/acif/Makefile

The source code for the sample exits is provided in /usr/lpp/psf/acif. You can modify these source files or create your own. In order to compile and build your exit, you must have the XL C Compiler and the bos.adt components of the Base Application Development Toolkit of the AIX operating system installed. You can use the /usr/lpp/psf/bin/Makefile as an example of how to compile the exits.

For more information about compiling user exit programs, see Compiling and installing the user-exit program.