8.2.3 行データの帳票印刷

APからPCに対して書式印刷をする場合,印刷用ファイルへ行データを出力するためにPROCEDURE DIVISIONで指定する文を次に示します。

また,APで行データをコーディングするときに,印刷時のずれを防ぐために設定する行データの属性と指定値を「8.2.3(2) 行データの属性の設定」に示します。

<この項の構成>
(1) 書式印刷するときのPROCEDURE DIVISIONの指定
(2) 行データの属性の設定
(3) 推奨コーディング

(1) 書式印刷するときのPROCEDURE DIVISIONの指定

表8-2 PROCEDURE DIVISIONで指定する文

命令文内容
オープン
(OPEN文)
プリンタ出力用ファイルの処理を開始する準備をします
OPEN文のモードに出力専用(OUTPUT)を指定して実行します
出力
(WRITE文)
レコードをプリンタ出力用ファイルに書き出します
明示的または間接的にADVANCING指定をします
クローズ
(CLOSE文)
プリンタ出力用ファイルの処理を終了します
注※
同じファイルに対するほかのWRITE文にADVANCING指定されていることを意味します。

(例)
[図データ]
(a) 例の説明
  1. プリンタのオープン
    FILE-CONTROLで指定した出力先のプリンタをオープンします。
  2. プリンタへのレコードの書き出し
    • データ名で指定した領域の内容が行データに指定した領域に格納されたあと,行データを出力先のプリンタに書き出します。WRITE文で書き出されたレコードの内容は,使用できなくなります。
    • AFTER:ADVANCING以降の記述内容を実行したあとで,WRITE文が実行されます。
    • BEFORE:WRITE文を実行したあとで,ADVANCING以降の記述内容が実行されます。
    • ADVANCING:行送り(改行)または改ページを指定します。
    • n LINE(S):nに指定したページ分だけ改行します。nが1の場合は「1 LINE」になり,nが2以上の場合は「n LINES」になります。
    • 呼び名:CSP(改行しない),またはC01(改ページする)を指定します。
    • PAGE:改ページします。
  3. プリンタのクローズ
    オープンした出力先のプリンタをクローズします。

(2) 行データの属性の設定

書式印刷時にずれを生じさせないように,書式設計前にAPで行データの属性を決定しておきます。APで設定できる属性と指定値を次の表に示します。

表8-3 行データの属性と指定値

属性指定値内容
文字サイズ5/7/9/12文字サイズを5,7,9,または12ポイントにして文字を配置します
文字の間隔0文字の間隔を空けないで文字を配置します
1~7文字の間隔を1~7ポイントにして文字を配置します
書体0文字の書体を元に戻します
1文字を明朝体にして配置します
2文字をゴシック体にして配置します
9文字をOCR体にして配置します
拡大指定あり横方向に2倍に拡大した文字を配置します
指定なし横方向の拡大を解除した文字を配置します
注※
属性の指定がない場合で,上位の項目に属性の指定があるときは,その属性の指定値に戻して文字を配置します。上位の項目に属性の指定がないときは,ドローで定義した属性で文字を配置します。上位の項目とは,レベル番号が上位にあるデータ記述項を示します。

APで属性を設定する場合,レコード名または一意名にCHARACTER TYPE句を指定します。CHARACTER TYPE句の形式を次に示します。

[図データ]

(a) 形式の説明
  1. POINT-l
    文字サイズを指定します。lに指定できる文字サイズは,5/7/9/12です。指定値の意味については,「表8-3 行データの属性と指定値」を参照してください。
  2. INTERVAL-m
    文字の間隔(字間値)を指定します。mに指定できる文字の間隔は,0~7です。指定値の意味については,「表8-3 行データの属性と指定値」を参照してください。
  3. FORMAT-n
    書体を指定します。nに指定できる書体は,0/1/2/9です。指定値の意味については,「表8-3 行データの属性と指定値」を参照してください。
  4. WIDE
    文字を横方向に2倍に拡大します。

CHARACTER TYPE句の詳細については,マニュアル「COBOL2002 言語 拡張仕様編」またはマニュアル「COBOL85 言語」を参照してください。また,WRITE文の形式によって,レコード名のCHARACTER TYPE句を有効にするか,一意名のCHARACTER TYPE句を有効にするかが異なります。

(b) 「WRITE レコード名」の場合

「WRITE レコード名」の場合は,レコード名にCHARACTER TYPE句があるときだけ,行データの印刷制御をします。WRITE文と,CHARACTER TYPE句との関係を次の図に示します。

図8-3 WRITE文と,CHARACTER TYPE句との関係(「WRITE レコード名」の場合)

[図データ]

  1. レコード名にCHARACTER TYPE句を宣言
    レコード名にCHARACTER TYPE句を宣言して,行データの印刷制御を行います。
  2. プリンタへのレコード書き出し
    1行改行したあとに,行データをプリンタに出力します。行データの印刷制御は,レコード名で宣言したCHARACTER TYPE句での設定を使用します。
(c) 「WRITE レコード名 FROM 一意名」の場合

「WRITE レコード名 FROM 一意名」の場合は,一意名にCHARACTER TYPE句があるときだけ,行データの印刷制御をします。このとき,レコード名にCHARACTER TYPE句があっても無視されます。WRITE文と,CHARACTER TYPE句との関係を次の図に示します。

図8-4 WRITE文と,CHARACTER TYPE句との関係(「WRITE レコード名 FROM 一意名」の場合)

[図データ]

  1. レコード名の宣言
    レコード名を宣言します。
  2. 一意名にCHARACTER TYPE句を宣言
    一意名にCHARACTER TYPE句を宣言して,行データの印刷制御を行います。
  3. プリンタへのレコードの書き出し
    1行改行したあとに,行データをプリンタに出力します。また,行データの印刷制御は,一意名で宣言したCHARACTER TYPE句での設定を使用します。

(3) 推奨コーディング

行データを出力する場合,行データおよびページデータの上限値によってデータを出力できない場合があります。必要に応じて,推奨コーディングを参考にしてください。

(a) ページ単位で,文字サイズ,間隔,書体,拡張などがすべて同じ場合

ドローの書式作成時に,書式属性ダイアログ,および行データ属性ダイアログで文字サイズなどを設定します。APでCHARACTER TYPE句を指定する必要はありません。

(b) 行単位で,文字サイズ,間隔,書体,拡張などがすべて同じ場合

行データ設定用のテーブルと送信用のテーブルを用意します。WRITE文の直前で,データを送信用のテーブルにコピーしてから,送信用のテーブルを使用して,WRITE文を実行します。

行データ設定用のテーブルは,項目ごとに定義します。送信用のテーブルは,行データ設定用のテーブルの長さを1項目として定義します。CHARACTER TYPE句は,送信用のテーブルに指定します。

図8-5 推奨コーディング

[図データ]

(c) ページ単位または行単位で,文字サイズ,間隔,書体,拡張などが揃っていない場合

1行中の行データを,行データの上限値を超えないようにデータを分けます。改行は,1行中の最終データを出力するときにします。1行中の最終データを出力するまでは,改行しないようにしてください。行データの上限値は,概算式を参考にします。概算式については,「付録D.3 書式オーバレイの1ページデータ量の制限」を参照してください。

文字サイズなど,同じ項目が連続する場合には,行データ設定用のテーブルと送信用のテーブルを用意します。WRITE文の直前で,送信用のテーブルにデータをコピーしてから,送信用のテーブルを使用してWRITE文を実行します。送信用のテーブルでは,文字サイズなど,同じ項目が連続する領域を一つの項目として定義してください。CHARACTER TYPE句は,送信用のテーブルに指定します。

図8-6 推奨コーディング

[図データ]