画面・帳票サポートシステム XMAP3 プログラミングガイド


11.2.1 SEND文による印刷

ここでは,COBOLのSEND文で帳票を印刷する方法について,指定例を使用して説明します。

〈この項の構成〉

(1) 通信記述項

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

  COMMUNICATION SECTION.
  *   ┌………………………………………………………………… 1.
    ┌┴┐ 
  CD PRT FOR OUTPUT WS          ………………………………… 2.
    MAP NAME          IS 帳票マップ名   ……………………… 3.
    DATA ABSENCE CODE IS データ有無コード   ………………… 4.
    STATUS KEY        IS 帳票-RC        ……………………… 5.
    SYMBOLIC TERMINAL IS 帳票端末名.   ……………………… 6.
例の説明
  1. 通信記述名

    SEND文で使用する名称を定義します。ここでは例として「PRT」を指定します。

    PRT:プリンタ用

  2. 通信種別

    通信種別を定義します。必ず「FOR OUTPUT WS」と指定してください。

  3. 物理マップ名格納エリア

    SEND文で出力する物理マップ名を格納する領域を定義します。格納するマップ名には,ドローで指定したマップ名に,次に示すIDを付けて格納します。このIDをデバイスIDといいます。

    定義対象

    マップ名が6文字のとき

    マップ名が7文字のとき

    けい線帳票(カット紙/連続紙)

    6A

    P

    プレプリント帳票(カット紙/連続紙)

    6H

    L

    網掛け帳票

    6B

    R

    グラフィック帳票

    6G

    G

    書式オーバレイ

    6G

    F

  4. データ有無コード格納エリア

    データ有無コードを設定するときにデータ有無コードを格納する領域を定義します。データ有無コードは,最初のSEND文の前に必ず格納しておきます。なお,省略すると(1F)16が仮定されます。

  5. リターンコード格納エリア

    SEND文のリターンコードを格納する領域を定義します。AP中でSEND文が正常に処理されたかどうかを判定するときに,この領域を参照します。STATUS KEY句のリターンコードを次の表に示します。

    表11‒7 STATUS KEY句のリターンコード

    コード

    意味

    状態/要因/対処方法

    '00000'

    正常終了

    データの出力が正常に終了しました。

    '00008'

    論理エラー

    COBOLのAPに誤りがあります。APの誤りを調べて修正します。

    '10008'

    マッピングエラー

    帳票データのマッピング中にエラーが発生しました。

    STATUS KEY句の指定がない場合,実行を中止します。

    STATUS KEY句の指定がある場合,処理を続行します。エラーコードの内容を調査して対処する必要があります

    '20008'

    出力エラー

    帳票データの出力中にエラーが発生しました。

    STATUS KEY句の指定がない場合,実行を中止します。

    STATUS KEY句の指定がある場合,処理を続行します。エラーコードの内容を調査して対処する必要があります

    注※

    エラーコードの内容については,「付録F リターンコードと詳細コード」を参照してください。

  6. 仮想端末名格納エリア

    出力するプリンタを指定したい場合に,プリンタに対応づけてある仮想端末名を格納する領域を定義します。

    仮想端末名は,最初のSEND文の前に指定する必要があります。XMAP3実行環境の表示・印刷セットアップ,またはC/Sセットアップで指定します。

    仮想端末名について,次に示します。

    1台目の標準プリンタ:PRT001

    2台目以降のプリンタ:PRT002〜(環境設定が必要)

    なお,AP中で仮想端末名を指定していない場合,仮想端末名の先頭1バイト目にスペースを指定している場合,または「SYMBOLIC TERMINAL IS」を省略している場合,環境変数「CBLPRNTID」で指定された仮想端末名が仮定されます。環境変数「CBLPRNTID」も指定されていない場合は,仮想端末として画面を仮定して動作するため,デバイス不一致((1400)16)エラーとなります。

    また,環境変数「CBLPRNT_xxx」を指定することで,出力先の仮想端末名を変更することもできます。

    CBLPRNTID,CBLPRNT_xxxについては,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。

(2) SEND文

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

  PROCEDURE DIVISION.
       :
  MOVE 'MAP3016B' TO 帳票マップ名.… 1.マップ名格納エリアに物理マップ名を格納
       :
  SEND PRT        ……………………… 2.通信記述名を指定(プリンタ用)
     FROM MAP301O       ……………… 3.出力用論理マップ名
     WITH EMI       …………………… 4.必ず指定する

(3) DISABLE文

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

  SEND PRT
      :
  DISABLE PRT … 1.通信記述名を指定