COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

8.5.4 ESC/Pモード印刷を利用したプリンタへの出力例

ESC/Pモード印刷機能を利用したプリンタへの出力例を説明します。はじめに,ご利用のプリンタでESC/Pモード(AXモード)が使用できるか確認してください。

<この項の構成>
(1) プリンタの設定
(2) 文字列の出力
(3) 下線を設定した文字列の出力
(4) 文字幅を整えた文字列の出力

(1) プリンタの設定

印刷前のプリンタの設定手順を示します。

  1. プリンタをESC/Pモードで動作させる。
  2. Windowsのプリントマネージャで,ESC/Pモードのプリンタを使えるように設定する。

また,ESC/Pモードで詳細な帳票設計をする場合,プリンタの仕様をあらかじめ調べておく必要があります。詳細は,ご利用のプリンタのマニュアルを参照してください。

(2) 文字列の出力

文字列を出力する例題について説明します。

(a) プリンタの仕様

この例題で想定するプリンタの仕様を次に示します。

表8-3 プリンタの仕様

項目
フォント ANK文字
全角漢字文字
半角漢字文字
Roman
明朝
明朝
文字幅 ANK文字
全角漢字文字
半角漢字文字
10CPI(Character Per Inch)
24ドット
12ドット
文字スペース量 ANK文字
全角漢字文字
半角漢字文字
左:0ドット,右:0ドット
左:0ドット,右:2ドット
左:0ドット,右:3ドット
(b) プログラミング例

文字列'HITACHI'を出力するプログラム例を次に示します。

文字列を出力するプログラミング例
 
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE1.
      ***********************************************************
      *      文字列 'HITACHI'を出力する                         *
      ***********************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT S-F1 ASSIGN TO 'SYSPRT'
                   ORGANIZATION IS LINE SEQUENTIAL.
       DATA DIVISION.
       FILE SECTION.
       FD S-F1.
       01 S-R1 PIC X(132).
       WORKING-STORAGE SECTION.
       01 T-HITACHI PIC X(7) VALUE 'HITACHI'.
       PROCEDURE DIVISION.
           OPEN OUTPUT S-F1.
      *
           MOVE T-HITACHI TO S-R1.
           WRITE S-R1 AFTER ADVANCING 1.
      *
           CLOSE S-F1.
           STOP RUN.

(3) 下線を設定した文字列の出力

(2)で説明したプログラム例に機能コードを設定することで,出力文字列に下線を設定できます。

(a) プリンタの仕様

表8-3 プリンタの仕様」と同様の仕様です。

(b) プログラミング例

文字列'HITACHI'に下線を設定して出力するプログラム例を次に示します。

印刷結果は'HITACHI'となります。

文字列に下線を設定して出力するプログラミング例
 
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE2.
      ***********************************************************
      *     文字列  'HITACHI'に下線を設定して出力する           *
      ***********************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT S-F1 ASSIGN TO 'SYSPRT'
                   ORGANIZATION IS LINE SEQUENTIAL.
       DATA DIVISION.
       FILE SECTION.
       FD S-F1.
       01 S-R1         PIC X(132).
       WORKING-STORAGE SECTION.
       01 T-OUTDATA.
        02 T-SET-UNDER PIC X(3) VALUE X'1B2D01'.  …1.
        02 T-HITACHI   PIC X(7) VALUE 'HITACHI'.
        02 T-NON-UNDER PIC X(3) VALUE X'1B2D00'.  …2.
       PROCEDURE DIVISION.
           OPEN OUTPUT S-F1.
      *
           MOVE T-OUTDATA TO S-R1.
           WRITE S-R1 AFTER ADVANCING 1.
      * 
           CLOSE S-F1.
           STOP RUN.
  1. 下線設定の機能コード
  2. 下線解除の機能コード

(4) 文字幅を整えた文字列の出力

ESC/Pモードで,全角文字と半角文字が混在する帳票を出力する場合,全角文字と半角文字の文字幅が1:1/2で出力されないことがあります。例えば,同じバイト数の行でも,長さが異なる印刷結果となることがあります。これは,利用するプリンタの印刷文字の幅の仕様によるものです。

印刷文字の幅を整えるには,プログラム中でESC/Pの機能コードを出力レコードに埋め込みます。なお,文字幅とESC/Pの機能コードについては,ご利用のプリンタのマニュアルを参照してください。

(a) プリンタの仕様

この例題で想定するプリンタの仕様を次に示します。

項目
文字幅(180dpi) ANK文字 18ドット(18/180インチ)
漢字全角文字 24ドット(24/180インチ)
漢字半角文字 12ドット(12/180インチ)
(b) プログラミング例

漢字全角文字の文字幅とANK文字の文字幅の比率を1:1/2に調整します。データの出力後は文字幅を元に戻します。

プログラムで使用する引数を次に示します。

文字幅を調整するプログラム例を,次に示します。

文字幅を調整するプログラミング例
 
       WORKING-STORAGE SECTION.
       01 P          PIC 9(4).
       01 SI-CODE    PIC X(4) VALUE X'1C530606'. …1.
       01 EI-CODE    PIC X(4) VALUE X'1C530003'.
       01 ICODE-LEN  PIC 9    VALUE 4.
       LINKAGE SECTION.
       01 PUT-DATA   PIC X(80).
       01 PUT-LEN    PIC 9(04).
       PROCEDURE DIVISION USING PUT-DATA PUT-LEN.
           OPEN OUTPUT S-F1.
      *
       CODE-CONV SECTION.
      *
      * Pは,出力領域の転送先ポインタ
           MOVE 1         TO P.
           MOVE ALL SPACE TO S-R1.
      *
      * 漢字全角文字の文字幅を補正する
           MOVE SI-CODE TO S-R1(1:ICODE-LEN).
           ADD ICODE-LEN TO P.
      *
      * 出力データをそのまま転送
           MOVE PUT-DATA(1:PUT-LEN) TO S-R1(P:PUT-LEN).
           ADD PUT-LEN TO P.
      *
      * 漢字全角文字の文字幅を元に戻す
           MOVE EI-CODE TO S-R1(P:ICODE-LEN).
           WRITE S-R1 AFTER ADVANCING 1.
           
      *--- 終了処理 ---*
           CLOSE S-F1.
           EXIT PROGRAM.
  1. 漢字の全角文字スペース量
    左スペース量:6ドット
    右スペース量:6ドット