プリンター出口モジュールの例 (sampprnx.cbl) は、デフォルトでは %ProgramFiles(x86)%\Micro Focus\Enterprise Developer\src\enterpriseserver\exits/esjcl ディレクトリに用意されています。この例では、単に各行を取得し、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.