COBOLコンソーシアム利用技術分科会
安藤 理恵(NECシステムテクノロジー Webビジネス事業部)
COBOLでは、言語仕様として印刷の機能が組み込まれており、古くは、これらの機能を駆使して帳票印刷のプログラムを作成していました。最近では、GUIインタフェースを持った帳票ツールを製品にバンドル、またはこれらの帳票作成ツールとの連携をサポートした製品が各社から提供されています。また、従来の業務システムではホストコンピュータにデータを集中管理し、帳票発行もホスト側で行なっていました。その後、クライアント・サーバ型システムの普及に伴なって、クライアントマシンでの処理や、クライアントマシンに接続したプリンタでの印刷業務が可能となりました。
近年においてはインターネットの普及により、クライアントにWebブラウザを使用した環境での印刷業務実行が増えつつあります。
WRITE文は、通常出力ファイルに1レコードを書き出す処理を行ないますが、SELECT句でプリンタ装置が指定された場合には、印字処理を行ないます。このとき、WRITE文の書き方によって、行の送り方を指定できます。
例: [レコードを印字してから3行送る(3行送ってから印字する)] WRITE レコード名 BEFORE(AFTER) ADVANCING 3 LINES
また、改ページも指定できます(ADVANCING PAGE)。なお、ここでいうページとは、論理的なページであり、ページ本文の行数や脚書き領域、上余白、下余白の指定は、ファイル記述項(FD項)に指定します。
改ページをしたら見出しを印字したいということもよくあるでしょう。自分でカウンターを用意してプログラムでカウントしながらページを管理する方法もありますが、次のようなWRITE文を記述すれば、自動的にカウンター処理を行なってくれます。
例: WRITE レコード名 AT EOP ページの終わりの処理 END-WRITE
上述の方法でもある程度ページの体裁を整えることはできますが、ページの途中で子見出しが複数現われるような制御の切れ目の管理を行なおうとするとかなり複雑なプログラミングをしなければなりません。
これらをサポートする機能として、COBOLでは報告書作成機能(report writer)が用意されています。報告書の形式を行数や行位置で図示的に記述し,手続き部での記述は必要最小限にとどめることにより,手軽にページ体裁を整えた報告書が作成できます。報告書全体はひとつのファイルとして出力されるので、FD項に以下のように記述します。
FD 出力ファイル名 REPORT 報告書名
また、報告書のページの体裁は報告書節(REPORT SECTION)に記述します。
DATA DIVISION. FILE SECTION. FD A-FILE LABEL RECORD IS STANDARD REPORT REP-A1. … REPORT SECTION. RD REP-A1 〜 01 TYPE 〜 …
REPORT SECTIONの記述方法の詳細な説明や、動作手順については長くなるのでここでは割愛します。興味のある方は、COBOL製品のガイドや市販のCOBOLガイドブックをご覧ください。
報告書機能による帳票の設計は、行桁を指定するオーソドックスなスタイルですが、最近ではグラフィカルなマシン/OS環境の普及により、帳票設計もGUIベースで行なえるようになりました。帳票を作成するツールは、主に各ベンダのCOBOL開発環境に添付されており、GUI設計により容易に作成できる環境が提供されています。バーコードやイメージデータの印刷、また複写式の専用帳票等の設計も可能です。
設計時には、フォームとオーバレイデータのインタフェースをCOBOL登録集原文として出力する機能を持つ製品もあり、このようなデータインタフェースをCOBOLのプログラムにとりこみ、通常のファイル操作と同じように、データをレコードにセットして、WRITE文やSEND文、またはサブルーチンコール形式により印刷を実行します。
以下に、帳票ツールを使用した開発例を示します。
最近ではWebシステム上での帳票印刷機能も各ベンダから提供されています。WWWブラウザ上での帳票イメージのプレビューや、クライアント端末側に接続されたプリンタでの印刷が行なえます。また、ペーパレス化の促進のひとつとして電子帳票の利用も増えています。作成した帳票イメージをPDFとして出力する機能も提供されてきています。電子帳票化することにより可搬性が増し、また必要なときに再印刷が可能です。
外字データを使用する場合には、その印字方法について検討する必要があります。例えば、Windowsマシンを使用したスタンドアロンシステムの場合、外字データの量がそれほど多くないのであれば、Windows外字として登録し使用することが可能です。一方、クライアント/サーバ型システムの分散環境での使用や、外字データ量が多い場合には、各ベンダで提供されている外字処理のパッケージ適用等の考慮が必要となります。
また、分散環境においては、クライアントマシンとサーバマシンでコード体系が異なる場合にも、どこで印刷を実行するか(サーバ側/クライアント側/サーバ・クライアント両方)を考慮したシステム環境の構築が必要です。
以上、COBOLアプリケーションからの印刷や帳票作成処理について説明しました。なお、実装されている機能は各ベンダにより異なります。実際に運用される場合には、ご利用になるベンダの製品情報を確認してください。