7.2.4 帳票印刷命令

APからプリンタに対して帳票を印刷するには,次に示す方法があります。

<この項の構成>
(1) SEND文による印刷
(2) CALL文による印刷

(1) SEND文による印刷

ここでは,日立COBOLのSEND文によって帳票を印刷する方法について,指定例を使用して説明します。なお,詳細については,マニュアル「COBOL2002 言語 拡張仕様編」またはマニュアル「COBOL85 言語」を参照してください。

(a) 通信記述項

帳票の印刷に必要な情報をCOMMUNICATION SECTION中に指定します。

(例)
[図データ]
(例の説明)
  1. 通信記述名
    SEND文で使用する名称を定義します。ここでは例として「PRT」を指定します。
    PRT:プリンタ用
  2. 通信種別
    通信種別を定義します。必ず「FOR OUTPUT WS」と指定してください。
  3. 物理マップ名称格納エリア
    SEND文で出力する物理マップ名称を格納する領域を定義します。格納するマップ名には,ドローで指定したマップ名に,次に示すIDを付けて格納します。このIDをデバイスIDといいます。
    定義対象マップ名が6文字のときマップ名が7文字のとき
    けい線帳票(カット紙/連続紙)6AP
    プレプリント帳票(カット紙/連続紙)6HL
    網掛け帳票6BR
    グラフィック帳票6GG
    書式オーバレイ6GF
  1. データ有無コード格納エリア
    データ有無コードを設定するときにデータ有無コードを格納する領域を定義します。データ有無コードは,最初のSEND文の前に必ず格納しておきます。なお,省略すると(1F)16が仮定されます。
  2. 実行状態コード格納エリア
    SEND文の実行状態を格納する領域を定義します。AP中でSEND文が正常に処理されたかどうかを判定するときに,この領域を参照します。STATUS KEY句の実行状態コードを次の表に示します。

    表7-5 STATUS KEY句の実行状態コード

    コード意味状態/要因/対処方法
    '00000'正常終了データの出力が正常に終了しました。
    '00008'論理エラーCOBOLのAPに誤りがあります。APの誤りを調べて修正します。
    '10008'マッピングエラー帳票データのマッピング中にエラーが発生しました。
    STATUS KEY句の指定がない場合,実行を中止します。
    STATUS KEY句の指定がある場合,処理を続行します。エラーコードの内容を調査して対処する必要があります
    '20008'出力エラー帳票データの出力中にエラーが発生しました。
    STATUS KEY句の指定がない場合,実行を中止します。
    STATUS KEY句の指定がある場合,処理を続行します。エラーコードの内容を調査して対処する必要があります
    注※
    エラーコードの内容については,「付録E リターンコードの詳細」を参照してください。
  3. 仮想端末名格納エリア
    出力する端末を指定したい場合に,端末に対応づけてある仮想端末名を格納する領域を定義します。
    • 帳票端末名:プリンタ用
      帳票端末名には,最初のSEND文の前に,次に示す仮想端末名称を格納しておきます。
    • 1台目の標準プリンタ:PRT001
    • 2台目以降のプリンタ:PRT002~(環境設定が必要)
    なお,AP中で仮想端末名を指定していない場合,仮想端末名の先頭1バイト目にスペースを指定している場合,または「SYMBOLIC TERMINAL IS」を省略している場合,環境変数「CBLPRNTID」で指定された仮想端末名称が仮定されます。環境変数「CBLPRNTID」も指定されていない場合は,仮想端末として画面を仮定して動作するため,デバイス不一致((1400)16)エラーとなります。
    また,環境変数「CBLPRNT_xxx」を指定することで,出力先の仮想端末名称を変更することもできます。
    CBLPRNTID,CBLPRNT_xxxの詳細については,マニュアル「COBOL2002 ユーザーズガイド」またはマニュアル「COBOL85 ユーザーズガイド」を参照してください。
(b) SEND文

プリンタへの帳票印刷をします。

(例)
[図データ]
(c) DISABLE文

APで帳票印刷をする場合,プログラム終了までプリンタを解放しません。このため,印刷していないときには,DISABLE文を使用してプリンタを解放し,ほかのプログラムで印刷できるようにします。

(例)
[図データ]
(d) その他

XMAP3オープンの引き継ぎ

XMAP3に対するオープン命令は,最初のSEND文が発行されたときに認識されます。また,APが終了する場合は,クローズ命令が発行されたと仮定されます。

別々にコンパイルしたAP間では,XMAP3のオープン状態を引き継げます。AP間でオープンを引き継ぐ方法については,「7.2.5 COBOL開発マネージャを使用したコンパイルと実行のポイント」を参照してください。

(2) CALL文による印刷

ここでは,COBOLのCALLインタフェースによってマッピングライブラリを使用する場合の説明をします。

(a) 環境部

CALLインタフェースを使用する場合の環境部(ENVIRONMENT DIVISION)の定義を次に示します。

[図データ]

環境部に上記の指定をした場合には,コンパイル時に次の注意が必要です。

  1. コンパイラオプションに次の指定をします。
    COBOL2002の場合
    '-Comp5'
    '-JPN,Alnum'
    COBOL85の場合
    '-X5'
    '-Na'
  2. リンカオプションに次の指定をします。
    • リンカオプション:指定しない
    • インポートライブラリ/ユーザ指定ライブラリ:
      XMAP3インストール先¥Lib¥X3mwdr32.lib
      (COBOL2002,COBOL85 Version 7およびVersion 6の場合)
      XMAP3インストール先¥LIB¥V3Compatible¥x3mwdr32.lib
      (COBOL85 Version 5.0の場合)

環境部に上記のコーディングを追加しない場合は,コンパイル時に次の指定をする必要があります。

  1. エディタを使用してファイルを作成します。
    • ファイル内容:jsvwadrv
    • ファイル名 :XXXX.cbw(XXXXは任意)
    • ファイルの格納場所:APと同じディレクトリ(またはフォルダ)
  2. コンパイラオプションに次の指定をします。
    COBOL2002の場合
    '-Comp5'
    '-StdCall'
    '-JPN,Alnum'
    COBOL85の場合
    '-X5'
    '-Cp'
    '-Na'
    stdcall呼び出し指示ファイル名には,1.で作成したファイル名を指定します。
  3. リンカオプションに次の内容を指定します。
    • リンカオプション:指定しない
    • インポートライブラリ/ユーザ指定ライブラリ:
      XMAP3インストール先¥Lib¥X3mwdr32.lib
      (COBOL2002,COBOL85 Version 7およびVersion 6の場合)
      XMAP3インストール先¥LIB¥V3Compatible¥x3mwdr32.lib
      (COBOL85 Version 5.0の場合)
(b) CALL文の発行順序

マッピングライブラリの機能と命令の発行順序を次の図に示します。

図7-4 マッピングライブラリの機能と命令の発行順序

[図データ]

(c) CALL命令

CALL命令の形式を次に示します。

[図データ]

(d) インタフェース領域の取り込み方法

XMAP3が提供しているインタフェース領域(Jsvwatbl.cbl)をAPに取り込むには,COPY文を使用します。COPY文は,WORKING-STORAGE SECTION,またはLINKAGE SECTIONに指定します。また,コンパイルする前にJsvwatbl.cblのフォルダ名をCBLLIBに設定しておきます。インタフェース領域を次の図に示します。

図7-5 インタフェース領域

[図データ]

(e) オープン要求

CALL命令を使用する場合,帳票を印字したいプリンタに付けた仮想端末名称単位にオープン要求をします。複数の仮想端末(プリンタ)をオープン要求する場合,インタフェース領域は,各端末に用意します。一つのAP(プロセス)内で同時にオープンできる端末数の上限は15個です。

(例)
[図データ]
(f) 出力要求

オープン要求した仮想端末へ帳票印刷をします。オープン要求で使用した共通インタフェース領域を引き継いで使用します。

(例)
[図データ]
(g) クローズ要求

仮想端末をクローズします。オープン要求,および出力要求で使用したインタフェース領域を引き継いで使用します。

(例)
[図データ]