プリンター出口モジュールの例 (sampprnx.cbl) は、デフォルトでは %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\exitsディレクトリに用意されています。この例では、単に各行を取得し、COBOL ランタイム システムの印刷ルーチンを呼び出してその行を印刷しています。
プリンター出口は COBOL で記述されている必要はありませんが、sampprnx に示してあるようにパラメーターを処理する必要があります。これらのパラメーターは、cascbprn.cpy コピーブックで定義および説明されています。COBOL プリンター出口は、非メインフレーム方言、つまり CHARSET(ASCII) を使用してコンパイルする必要があります。また、これらのプリンター出口は、.int、.gnt、または .dll としてビルドしなければなりません。
sampprnx の連絡節と、cascbprn.cpy を次に示します。
linkage section. copy 'cascbprn.cpy' replacing ==(ws)== by ==lk==. 01 lk-catalog-rec. copy 'mvscatlg.cpy' replacing ==(TAG)== by ==lk==. 01 LK-OUTPUT. copy mvsdout replacing ==()== by ==LK-OUTPUT==. 01 LK-SPOOL. copy 'spool.cpy' replacing ==(tag)== by ==lk==.
01 (ws)-prn-exit-interface.
*> What is the format of the structure used to call the
*> printer exit. Will change with major revisions to this
*> Data Structure.
03 (ws)-prn-version pic x(4) comp-5.
88 (ws)-prn-current-version-88 value 1.
*> The printer exit is driven once as the batch printer SEP
*> starts, once for every print job, and once when the batch
*> printer is shut down.
03 (ws)-prn-command pic x comp-5.
88 (ws)-prn-exit-init-88 value 0.
88 (ws)-prn-exit-print-88 value 1.
88 (ws)-prn-exit-term-88 value 2.
*> For the requested print job. (ws)-prn-exit-print-88
*> what is the character set of the data being printed.
03 (ws)-prn-char pic x.
88 (ws)-prn-char-ascii-88 value 'A'.
88 (ws)-prn-char-ebcdic-88 value 'E'.
88 (ws)-prn-char-unknown-88 value '?'.
*> This is the file status returned by driving the procedure
*> pointers:
*> (ws)-prn-sysout-open-pptr
*> (ws)-prn-sysout-read-next-pptr
*> (ws)-prn-sysout-close-pptr
*>
03 (ws)-prn-sysout-status pic x(2).
88 (ws)-prn-sysout-status-ok-88 value '00'.
88 (ws)-prn-sysout-status-eof-88 value '10'.
***--------------------------------------------------------------*
*> Procedure pointer to drive the open of the sysout dataset
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-sysout-open-pptr procedure-pointer.
*> Procedure pointer to a read of the sysout dataset
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-sysout-read-next-pptr procedure-pointer.
*> Procedure pointer to drive the close of the sysout dataset
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-sysout-close-pptr procedure-pointer.
*> Procedure pointer to allow a message to be driven to the
*> console. (all functions)
03 (ws)-prn-message-pptr procedure-pointer.
*> Procedure pointer to retrieve the next OUTPUT statement.
*> Returns a null (ws)-prn-output-record-ptr if none are
*> available.
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-output-read-next-pptr procedure-pointer.
03 procedure-pointer.
03 procedure-pointer.
***--------------------------------------------------------------*
*> A pointer to the data structure contained in Spool.cpy
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-spool-record-ptr pointer.
*> A pointer to the data structure contained in mvscatlg.cpy
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-catalog-record-ptr pointer.
*> The printer handle for the printer assigned to the this SEP
03 (ws)-prn-printer-handle pic x(4) comp-5.
*> The LRECL of the dataset being printed.
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-lrecl pic x(4) comp-5.
*> The Maximum LRECL of the dataset being printed.
*> Same as ws-prn-lrecl.
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-lrecl-max pic x(4) comp-5.
*> The Minimum LRECL of the dataset being printed.
*> (Variable Length SYSOUT Datasets.
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-lrecl-min pic x(4) comp-5.
03 (ws)-prn-file-disp pic x.
*> set to '1' to delete spool file on return
03 pic x(3).
*> The length of the buffer used to return data when driving
*> (ws)-prn-sysout-read-next-pptr
*> (How much data was returned)
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-buffer-len pic x(4) comp-5.
03 (ws)-prn-buffer.
05 (ws)-prn-buffer-byte occurs 384 times pic x comp-x.
*> The "MVS" Name of the document being printed.
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-document.
05 (ws)-prn-document-len pic x(2) comp-5.
05 (ws)-prn-document-title pic x(128).
*> The name of the batch printer driving this print job.
03 (ws)-prn-printer.
05 (ws)-prn-printer-name-len pic x(2) comp-5.
05 (ws)-prn-printer-name pic x(128).
*> The "physical" filename for the file being printed.
*> (eg. Where does it reside on the disk pack)
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-sysout-file-name pic x(260).
*> A pointer to an OUTPUT Statement associated with this
*> SYSOUT Dataset. Points to the data structure contained
*> in IDADOUTP.CPY
*> (ws)-prn-exit-print-88 only
03 (ws)-prn-output-record-ptr pointer.