垂直表示

このドキュメントでは、DISPLAYWRITE ステートメントの機能を組み合わせて、フィールドの値を垂直表示する方法について説明します。

以下のトピックについて説明します。


垂直表示の作成

垂直表示の作成には 2 つの方法があります。

  • DISPLAY ステートメントと WRITE ステートメントの組み合わせを使用できます。

  • DISPLAY ステートメントの VERT オプションを使用できます。

DISPLAY と WRITE の組み合わせ

DISPLAY および WRITE ステートメント」で説明しているように、DISPLAY ステートメントは、通常、デフォルトヘッダー付きの列にデータを表示しますが、WRITE ステートメントはヘッダーなしでデータを横に表示します。

2 つのステートメントの機能を組み合わせて、フィールド値を垂直表示することができます。

DISPLAY ステートメントは、同じレコードの個々のフィールドの値を、フィールドごとに 1 列に、ページをまたがって出力します。各レコードのフィールドの値は、前のレコードの値の下に表示されます。

DISPLAY ステートメントの後に WRITE ステートメントを使用することによって、WRITE ステートメントで指定したテキストやフィールド値を、DISPLAY ステートメントで表示されるレコードの間に挿入できます。

以下のプログラムは、DISPLAYWRITE の組み合わせを示しています。

** Example 'WRITEX04': WRITE (in combination with DISPLAY)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 JOB-TITLE
  2 CITY
  2 DEPT
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'SAN FRANCISCO'
  DISPLAY NAME JOB-TITLE
  WRITE 22T 'DEPT:' DEPT
  SKIP 1
END-READ
END

プログラム WRITEX04 の出力:

Page      1                                                  04-11-11  14:15:55
 
        NAME                  CURRENT
                             POSITION
-------------------- -------------------------
 
KOLENCE              MANAGER
                     DEPT: TECH05
 
GOSDEN               ANALYST
                     DEPT: TECH10
 
WALLACE              SALES PERSON
                     DEPT: SALE20

タブ表記 - T*field

前の例において、フィールド DEPT の位置はタブ表記 nT で決定します。この例の 20T の場合、画面の 20 桁目から表示が始まることを意味しています。

WRITE ステートメントで指定したフィールド値は、タブ表記 T*field を使用することによって、プログラムの最初の DISPLAY ステートメントで指定したフィールド値に自動的に揃えることができます。field は、前者のフィールドを揃える対象となる後者のフィールドの名前です。

以下のプログラムでは、WRITE ステートメントによる出力は、T*JOB-TITLE という表記を使用してフィールド JOB-TITLE に揃えられています。

** Example 'WRITEX05': WRITE  (in combination with DISPLAY)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 JOB-TITLE
  2 DEPT
  2 CITY
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'SAN FRANCISCO'
  DISPLAY NAME JOB-TITLE
  WRITE T*JOB-TITLE 'DEPT:' DEPT
  SKIP 1
END-READ
END

プログラム WRITEX05 の出力:

Page      1                                                  04-11-11  14:15:55
 
        NAME                  CURRENT
                             POSITION
-------------------- -------------------------

KOLENCE              MANAGER
                     DEPT: TECH05
  
GOSDEN               ANALYST
                     DEPT: TECH10             
                                                     
WALLACE              SALES PERSON                 
                     DEPT: SALE20

位置指定表記 x/y

DISPLAY および WRITE ステートメントを連続して使用し、WRITE ステートメントで複数行が出力される場合、x/y(数字スラッシュ数字)表記を使用して、表示する行および列を指定できます。位置指定表記は、DISPLAY または WRITE ステートメントの次の要素を最後の出力の x 行下の y 桁目から開始します。

以下のプログラムは、この表記の使用法を示しています。

** Example 'WRITEX06': WRITE  (with n/n)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 FIRST-NAME
  2 MIDDLE-I
  2 ADDRESS-LINE (1:1)
  2 CITY
  2 ZIP
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
  DISPLAY 'NAME AND ADDRESS' NAME
  WRITE   1/5  FIRST-NAME
          1/30 MIDDLE-I
          2/5  ADDRESS-LINE (1:1)
          3/5  CITY
          3/30 ZIP /
END-READ
END

プログラム WRITEX06 の出力:

Page      1                                                  04-11-11  14:15:55
 
  NAME AND ADDRESS
--------------------
 
RUBIN
    SYLVIA                   L
    2003 SARAZEN PLACE
    NEW YORK                 10036
 
WALLACE
    MARY                     P
    12248 LAUREL GLADE C
    NEW YORK                 10036
 
KELLOGG
    HENRIETTA                S
    1001 JEFF RYAN DR.
    NEWARK                   19711

DISPLAY VERT ステートメント

Natural の標準の表示モードは水平方向です。

DISPLAY ステートメントの VERT 節オプションを使用すると、標準表示を上書きして、フィールドを垂直表示できます。

同じ DISPLAY ステートメントで使用できる HORIZ 節オプションは、標準の水平表示モードを再度有効にします。

垂直モードの列ヘッダーは、AS 節のさまざまなフォームで制御されます。以下のプログラム例は、DISPLAY VERT ステートメントの使用法を示しています。

AS 節のない DISPLAY VERT

以下のプログラムでは AS 節を使用していません。つまり、列ヘッダーは出力されません。

** Example 'DISPLX09': DISPLAY  (without column title)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 FIRST-NAME
  2 CITY
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
  DISPLAY VERT NAME FIRST-NAME / CITY
  SKIP 2
END-READ
END

プログラム DISPLX09 の出力:

すべてのフィールド値が垂直方向に表示されることに注意してください。

Page      1                                                  04-11-11  14:15:54


RUBIN
SYLVIA

NEW YORK


WALLACE
MARY

NEW YORK


KELLOGG
HENRIETTA

NEWARK

VERT AS CAPTIONED および HORIZ 節を含む DISPLAY

以下のプログラムには VERT および HORIZ 節が含まれており、一部の列の値が垂直方向に出力され、その他の値が水平方向に出力されます。さらに、AS CAPTIONED によってデフォルトの列ヘッダーが表示されます。

** Example 'DISPLX10': DISPLAY (with VERT as CAPTIONED and HORIZ clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 FIRST-NAME
  2 CITY
  2 JOB-TITLE
  2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
  DISPLAY VERT AS CAPTIONED NAME FIRST-NAME
          HORIZ JOB-TITLE SALARY (1:1)
  SKIP 1
END-READ
END

プログラム DISPLX10 の出力:

Page      1                                                  04-11-11  14:15:54
 
        NAME                  CURRENT            ANNUAL
     FIRST-NAME              POSITION            SALARY
-------------------- ------------------------- ----------
 
RUBIN                SECRETARY                      17000
SYLVIA
 
WALLACE              ANALYST                        38000
MARY
 
KELLOGG              DIRECTOR                       52000
HENRIETTA

VERT AS 'text' 節を含む DISPLAY

以下のプログラムには AS 'text' 節が含まれており、指定した 'text' が列ヘッダーとして表示されます。

注意:
DISPLAY ステートメントのテキスト要素内のスラッシュ(/)は行送りを発生させます。

** Example 'DISPLX11': DISPLAY  (with VERT AS 'text' clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 FIRST-NAME
  2 CITY
  2 JOB-TITLE
  2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
  DISPLAY VERT AS 'EMPLOYEES' NAME FIRST-NAME
          HORIZ JOB-TITLE SALARY (1:1)
  SKIP 1
END-READ
END

プログラム DISPLX11 の出力:

Page      1                                                  04-11-11  14:15:54
 
     EMPLOYEES                CURRENT            ANNUAL
                             POSITION            SALARY
-------------------- ------------------------- ----------
 
RUBIN                SECRETARY                      17000
SYLVIA
 
WALLACE              ANALYST                        38000
MARY
 
KELLOGG              DIRECTOR                       52000
HENRIETTA

VERT AS 'text' CAPTIONED 節を含む DISPLAY

AS 'text' CAPTIONED 節によって指定したテキストが列ヘッダーとして表示され、出力する各行のフィールド値の直前にデフォルトの列ヘッダーが表示されます。

以下のプログラムには、AS 'text' CAPTIONED 節が含まれています。

** Example 'DISPLX12': DISPLAY (with VERT AS 'text' CAPTIONED clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 FIRST-NAME
  2 CITY
  2 JOB-TITLE
  2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
  DISPLAY VERT AS 'EMPLOYEES' CAPTIONED NAME FIRST-NAME
          HORIZ JOB-TITLE SALARY (1:1)
  SKIP 1
END-READ
END

プログラム DISPLX12 の出力:

この節によって、デフォルトの列ヘッダー(NAME および FIRST-NAME)がフィールド値の前に出力されます。

Page      1                                                  04-11-11  14:15:54
 
           EMPLOYEES                     CURRENT            ANNUAL
                                        POSITION            SALARY
------------------------------- ------------------------- ----------
 
NAME RUBIN                      SECRETARY                      17000
FIRST-NAME SYLVIA
 
NAME WALLACE                    ANALYST                        38000
FIRST-NAME MARY
 
NAME KELLOGG                    DIRECTOR                       52000
FIRST-NAME HENRIETTA

タブ表記 P*field

DISPLAY VERT ステートメントと後続の WRITE ステートメントを組み合わせて使用する場合、WRITE ステートメントでタブ表記 P*field-name を使用して、フィールド位置を DISPLAY VERT ステートメントで指定した特定のフィールドの列および行の位置に揃えることができます。

以下のプログラムでは、フィールド SALARY および BONUS が同じ列に表示され、1 番目の各行に SALARY、2 番目の各行に BONUS が表示されます。テキスト ***SALARY PLUS BONUS***SALARY に揃えられます。つまり、テキストは SALARY と同じ列の 1 番目の行に表示されます。一方、テキスト (IN US DOLLARS)BONUS に揃えられるため、BONUS と同じ列の 2 番目の行に表示されます。

** Example 'WRITEX07': WRITE  (with P*field)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 CITY
  2 NAME
  2 JOB-TITLE
  2 SALARY (1:1)
  2 BONUS  (1:1,1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'LOS ANGELES'
  DISPLAY NAME JOB-TITLE
          VERT AS 'INCOME' SALARY (1) BONUS (1,1)
  WRITE P*SALARY '***SALARY PLUS BONUS***'
        P*BONUS  '(IN US DOLLARS)'
  SKIP 1
END-READ
END

プログラム WRITEX07 の出力:

Page      1                                                  04-11-11  14:15:55
 
        NAME                  CURRENT            INCOME
                             POSITION
-------------------- ------------------------- ----------
 
SMITH                                                   0
                                                        0
                                               ***SALARY PLUS BONUS***
                                               (IN US DOLLARS)
 
POORE JR             SECRETARY                      25000
                                                        0
                                               ***SALARY PLUS BONUS***
                                               (IN US DOLLARS)
 
PREPARATA            MANAGER                        46000
                                                     9000
                                               ***SALARY PLUS BONUS***
                                               (IN US DOLLARS)

DISPLAY VERT と WRITE ステートメントの他の例

次の例のプログラムを参照してください。