COBOL2002 ユーザーズガイド
ESC/Pモード印刷機能を利用したプリンタへの出力例を説明します。はじめに,ご利用のプリンタでESC/Pモード(AXモード)が使用できるか確認してください。
印刷前のプリンタの設定手順を示します。
また,ESC/Pモードで詳細な帳票設計をする場合,プリンタの仕様をあらかじめ調べておく必要があります。詳細は,ご利用のプリンタのマニュアルを参照してください。
文字列を出力する例題について説明します。
この例題で想定するプリンタの仕様を次に示します。
表8-3 プリンタの仕様
| 項目 | 値 | |
|---|---|---|
| フォント | ANK文字 全角漢字文字 半角漢字文字 |
Roman 明朝 明朝 |
| 文字幅 | ANK文字 全角漢字文字 半角漢字文字 |
10CPI(Character Per Inch) 24ドット 12ドット |
| 文字スペース量 | ANK文字 全角漢字文字 半角漢字文字 |
左:0ドット,右:0ドット 左:0ドット,右:2ドット 左:0ドット,右:3ドット |
文字列'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.(2)で説明したプログラム例に機能コードを設定することで,出力文字列に下線を設定できます。
「表8-3 プリンタの仕様」と同様の仕様です。
文字列'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.ESC/Pモードで,全角文字と半角文字が混在する帳票を出力する場合,全角文字と半角文字の文字幅が1:1/2で出力されないことがあります。例えば,同じバイト数の行でも,長さが異なる印刷結果となることがあります。これは,利用するプリンタの印刷文字の幅の仕様によるものです。
印刷文字の幅を整えるには,プログラム中でESC/Pの機能コードを出力レコードに埋め込みます。なお,文字幅とESC/Pの機能コードについては,ご利用のプリンタのマニュアルを参照してください。
この例題で想定するプリンタの仕様を次に示します。
| 項目 | 値 | |
|---|---|---|
| 文字幅(180dpi) | ANK文字 | 18ドット(18/180インチ) |
| 漢字全角文字 | 24ドット(24/180インチ) | |
| 漢字半角文字 | 12ドット(12/180インチ) | |
漢字全角文字の文字幅と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.All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.