COBOL2002 言語 拡張仕様編


14.2.1 データ記述項(書式印刷機能)

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「9.13 データ記述項(data description entry)

〈この項の構成〉

(1) CHARACTER TYPE句

形式

[図データ]

機能

レコードを出力するWRITE文の実行によって,項目の文字サイズ,文字間隔,書体,横倍角開始を表す機能を指定する。この機能は,XMAP3を使用したプリンタ出力機能およびGDIモード印刷機能でも使用できる。CHARACTER TYPE句はESC/Pモード印刷には有効とならない。このため,レコード中に機能コードを設定して印刷制御をする必要がある。

UNIX COBOL2002では,-XMAP,LinePrintオプション未指定時は,CHARACTER TYPE句は覚え書きとする。

構文規則

  1. XMAP3を使用したプリンタ出力機能の場合,POINT-llの値,FORMAT-nnの値およびINTERVAL-iiの値については,マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編」または「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド」を参照のこと。

    なお,INTERVAL指定をした場合,GAP指定はできない。

  2. この句を書けるのは,ファイル節,作業場所節,局所場所節または連絡節で定義されるデータ記述項だけである。

  3. この句は,RENAMES句とともに書けない。

  4. DEPENDING ON指定のOCCURS句が含まれる集団項目およびその下位項目には,CHARACTER TYPE句を指定できない。

  5. WRITE文で指定したレコード名およびその下位項目,またはWRITE文のFROM指定の一意名およびその下位項目も,REDEFINES句とCHARACTER TYPE句を同時に指定してはならない。

    (例)

           01 OUTREC.
             02 A    PIC X(2).
             02 B.
               03 C  PIC X(4).
               03 D  PIC N(2) CHARACTER TYPE IS POINT-7.
             02 E REDEFINES B.
               03 F  PIC N(2).
               03 G  PIC X(4).
             02 H    PIC S9(5).
               :
               WRITE A-REC FROM OUTREC. (誤)…(1)
               WRITE A-REC FROM B.      (正)…(2)

    (1)のWRITE文は指定した一意名の下位項目の中にREDEFINES句とCHARACTER TYPE句を同時に指定しているので誤りである。

    (2)のWRITE文は正しい書き方である。

  6. WRITE文のFROM指定の一意名またはその下位項目にCHARACTER TYPE句が指定されているとき,その一意名は,部分参照されていてはならない。

  7. WRITE文のFROM指定の一意名またはその下位項目にCHARACTER TYPE句が指定されているとき,その項目を含むレコード中にDISPLAY以外のUSAGE句を指定してはならない。

  8. UNIX COBOL2002では,WRITEするレコード中にCHARACTER TYPE句が含まれるファイルのASSIGN句には,定数指定またはデータ名指定はできない。

  9. WRITEするレコード中にCHARACTER TYPE句が含まれるファイルには,順ファイル以外は指定できない。

  10. CHARACTER TYPE句を処理するファイルのレコード長は,384バイト以下でなければならない。

  11. CHARACTER TYPE句を処理するファイルに,FROM指定なしのWRITE文とFROM指定ありのWRITE文は同時に使用できない。

  12. CHARACTER TYPE句の指定がある項目を含むレコード中に,外部属性を持つ指標名は指定できない。

  13. KEIS,POINT-l,GAP-m,FORMAT-n,INTERVAL-i,SHORT,SHORT-1の語は予約語ではない。

    これらの語がCHARACTER TYPE句の一部であるかどうかは文脈で判断される。

    これらの語をレベル番号の直後に書いた場合,これらの語がデータ名として扱われる。

    (例)

    03 POINT-7 PIC N(2).

    と書くと,「FILLER」を書くのを省略した無名項目ではなく,データ名「POINT-7」が指定されたものとみなされる。

一般規則

  1. POINT-lを書くことによって,文字サイズ(ポイント)を指定できる。lの値はポイント数を示す。

    上位項目に異なる値のPOINT-lが指定されていると,そのポイントに戻すための処理が項目の後で実行される。上位項目にPOINT-lの指定がない場合は,省略値のポイントに戻すための処理が項目の後で実行される。ただし,後に続く項目がなければ,元に戻すための処理はしない。

    lの値は,XMAP3で使用できるポイント数でなければならない(XMAP3使用時だけ)。

    POINT-lを書かない場合の省略値のポイントは,GDIモード印刷機能のときは,実行支援の[字サイズ]で指定したポイントとなる。また,XMAP3を使用するときは,XMAP3で定義したポイントとなる。

    (例)

           01 A.
             02 A-F  PIC X.
             02 A0 CHARACTER TYPE IS POINT-14.
               03 A1 PIC NN VALUE N'下期'.
               03 A2 PIC N(5) POINT-19 VALUE N'実用新案権'.
               03 A3 PIC NN VALUE N'一覧'.

    とすると,プリンタへの出力は,次のようになる。

    [図データ]

  2. FORMAT-nを書くことによって,書体を指定できる。

    上位項目に異なる値のFORMAT-nが指定されていると,その書体に戻すための処理が項目の後で実行される。上位項目にFORMAT-nの指定がない場合は,省略値の書体に戻すための処理が項目の後で実行される。ただし,後に続く項目がなければ,元に戻すための処理はしない。

    FORMAT-nを書かないときの省略値の書体は,実行支援の[書体]の初期状態で指定したフォントとなる。また,XMAP3を使用するときは,XMAP3で定義したフォントとなる。

    (例)

           01 A.
             02 A-F  PIC X.
             02 A0 CHARACTER TYPE IS FORMAT-2.
               03 A1 PIC NN VALUE N'下期'.
               03 A2 PIC N(5) FORMAT-1 VALUE N'実用新案権'.
               03 A3 PIC NN VALUE N'一覧'.

    とすると,プリンタへの出力は,次のようになる。

    [図データ]

  3. INTERVAL-iを書くことによって,各文字間隔を指定できる。

    上位項目に異なる値のINTERVAL-iが指定されていると,その文字間隔に戻すための処理が項目の後で実行される。上位項目にINTERVAL-iの指定がない場合は,省略値の文字間隔に戻すための処理が項目の後で実行される。ただし,後に続く項目がなければ,元に戻すための処理はしない。

    INTERVAL-iを書かないときの省略値の文字間隔は,0ポイントである。

    実行支援の[全角文字の間隔を半角文字の間隔の2倍で印刷]チェックボックスをチェックしない場合は,全角文字と半角文字の字間隔はi/2ポイントとなる。このチェックボックスをチェックした場合,全角文字の字間隔はiポイント,半角文字の字間隔はi/2ポイントとなる。

    (例)

           01 A.
             02 A-F  PIC X.
             02 A0 CHARACTER TYPE IS INTERVAL-0.
               03 A1 PIC NN VALUE N'下期'.
               03 A2 PIC N(5) INTERVAL-8 VALUE N'実用新案権'.
               03 A3 PIC NN VALUE N'一覧'.

    とすると,プリンタへの出力は,次のようになる。

    [図データ]

  4. WIDEを書くことによって,横倍角を指定できる。

    上位項目にWIDEの指定がない場合は,省略値の字体に戻すための処理が項目の後で実行される。ただし,後に続く項目がなければ,元に戻すための処理はしない。WIDEを書くことによって,字間隔も2倍になる。

    (例)

           01 A.
             02 A-F  PIC X.
             02 A0.
               03 A1 PIC NN VALUE N'下期'.
               03 A2 PIC N(5) WIDE VALUE N'実用新案権'.
               03 A3 PIC NN VALUE N'一覧'.

    とすると,プリンタへの出力は,次のようになる。

    [図データ]

  5. これらを指定しないと,初期状態で印刷する。1行分の出力を終えたときも初期状態に戻る。なお,初期状態は,GDIモード印刷機能のとき,実行支援の初期状態の指定に従う。また,XMAP3使用のとき,XMAP3で定義した値に従う。