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.