In general, documentation on Linux can be obtained from The Linux Documentation Project. Among it's many resources are the following documents that assisted us in setting up the Linux lpd print service for our print-to-email proof-of-concept.

The "Linux Printing" HOWTO is a collection of information describing how to generate, preview, print and fax anything under Linux. This document provided a lot of the instruction on how to set up lpr and lpd, and introduced us to the concept of a pseudo-printer (although not in those words).

The "Linux Printing Usage" HOWTO describes how to use the line printing spooling subsystem provided with the Linux operating system and is a supplement document to the "Linux Printing" HOWTO. This document added to our understanding of how lpd worked, and gave us enough information to craft our own print filters.

The "Bash Programming Introduction" HOWTO provides instruction on writing basic to intermediate shell scripts. Our print filter was written in Bash script language; this document introduces the language concepts, and can be used as a basis for learning how to write Bash scripts.

The "Linux Mail User" HOWTO introduces the concepts and facilities of electronic mail in a Linux system. It focuses on user-level issues and typical configurations for a Linux home or small business email server.

The "Linux Electronic Mail Administrator" HOWTO describes the setup and maintenance of electronic mail in a Linux system. It is primarily intended for system administrators who have to configure and maintain a Linux-based email system.

OS390/MVS (JES2, Batch, IMS, CICS)

IBM keeps an extensive online library of all their documentation at their Boulder, Colorado server. This site provides public access to the many manuals we used on the host side.

OS/390 V2R10 MVS JCL Reference
This manual describes the specifics of each MVS Job Control Language command, and was the resource we used to determine which JCL parameters would be required to set the JES2 flash page contents for our print-to-email filter. In particular, we used two chapters ( "Chapter 22: OUTPUT JCL Statement" and "Chapter 12: DD Statement") to determine the exact requirements of the batch processing JCL.

OS/390 V2R10 MVS JCL User's Guide
This manual provides a user's view of MVS Job Control Language, discussing how JCL statements are combined into runnable JOBs. Of interest in this manual is "Chapter 22: SYSOUT Resources - Processing Control" which discusses the use of the // OUTPUT statement in batch jobs.

TSO/E V2R5 Command Reference
The "TSO/E Command Reference" describes the syntax, functions and commands of the TSO/E command language. In "Section 1.56: The OUTDES Command", the manual describes the syntax and parameters of the OUTDES command, which is used to create or reuse a dynamic output descriptor. This is of interest to us because the IMS and CICS interfaces to the MVS spooling system require parameters in the form accepted by the OUTDES command described here.

IMS Version 7 Utilities Reference: System
The "IMS Version 7 Utilities Reference: System" is intended to help the mainframe programmer or IMS system programmer maintain IMS facilities and application programs. Section 1.2: Program Specification Block (PSB) Generation discusses the content and creation of the PSB, including the specifications for building a PSB that contains the non-express modifiable alternate PCB necessary for use in the SPOOL API.

IMS V7 Application Programming: Design Guide
The "IMS Application Programming: Design Guide" is intended to help the mainframe programmer design IMS Application programs. Appendix A: IMS Spool API Overall Design discusses the design of the Spool API and programs that use it. It is this Spool API that our IMS programs used to generate their emailed reports.

IMS V7 Application Programming: Transaction Manager
The "IMS Application Programming: Transaction Manager" manual describes the function, format, and use of the IMS DL/I calls specific to the IMS Transaction Manager (as opposed to those calls specific to Database Management). This is were we found the descriptions of the calls used by IMS transactions to generate spooled output. Of interest were "Section 1.3.2: The CHNG Call" (particularly "Section Advanced Print Function Options") which described the CHNG call and the parameters needed to initiate spooling. Similarly, "Section 1.3.7: The ISRT Call" (especially "Section Spool API Functions") described the ISRT call and the parameters needed to spool lines of output to a JES printer.

CICS TS for OS/390 V1R3 Application Programming Guide
This book gives guidance in the design and construction of CICS transaction programs. Section 5.6: "Chapter 32: CICS Interface to JES" discusses the design of applications that use the CICS SPOOL API (SPOOLOPEN/SPOOLWRITE/SPOOLCLOSE) to spool output to JES.

CICS TS for OS/390 V1R3 Application Programming Reference
This book describes the CICS Transaction Server for OS/390 EXEC application programming interface. Here, we found descriptions of the various CICS EXEC calls used to generate output into the JES spool. Of interest were Section 1.229: "SPOOLOPEN OUTPUT", which described the format and parameters of the EXEC SPOOLOPEN used to connect to the JES2 spool, Section 1.231: "SPOOLWRITE", which described the format and parameters of the EXEC SPOOLWRITE call used to write report lines to the output spool, and Section 1.227: "SPOOLCLOSE" describes the format and parameters of the EXEC SPOOLCLOSE call used to terminate the connection to JES and release the written report.

Copyright (©) Lew Pitcher, March 2002