DISPLAY [( rep)] [options ] {[ / ] [output-format ] output-element }
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:AT END OF PAGE | AT TOP OF PAGE | CLOSE PRINTER | DEFINE PRINTER EJECT | FORMAT | NEWPAGE | PRINT | SKIP | SUSPEND IDENTICAL SUPPRESS | WRITE | WRITE TITLE | WRITE TRAILER
関連機能グループ:「出力レポートの作成」
DISPLAY
ステートメントでは、レポートに出力するフィールドを列形式で指定します。 列は各フィールドごとに作成され、フィールドヘッダーが列の上に表示されます。
注意:
WRITE
ステートメントと PRINT
ステートメントを使用すると、フリーフォーマット(列なし)の出力を生成することができます。
『プログラミングガイド』の次のトピックも参照してください。
(rep) |
レポート指定:
表記 レポート ID として、範囲 0~31 の値、または
プリンタファイルが PC として Natural に定義されている場合、レポートは PC にダウンロードされます。「例 8」を参照してください。 Natural で作成される出力レポートの形式を制御する方法については、『プログラミングガイド』の「データ出力制御」を参照してください。 |
---|---|
options |
表示オプション:
詳細については、下記の「表示オプション」を参照してください。 |
output-format |
出力フォーマット定義:
詳細については、下記の「出力フォーマット定義」を参照して下さい。 |
/ |
行送り - スラッシュ表記:
文字列内でスラッシュ("/")を指定すると、表示中の文字列が改行されます。 出力項目の間にスラッシュを指定すると、"/" で指定された出力項目は、同じ列内で縦方向に配置されます。 この列のヘッダーでは、縦方向に表示されている項目のヘッダーが、列の上側に縦方向で配置されます。 『プログラミングガイド』の次のトピックも参照してください。 |
output-element |
出力項目:
詳細については、下記の「出力項目」を参照してください。 |
[NOTITLE ] [NOHDR ]
|
[AND ] [GIVE ] [SYSTEM ] FUNCTIONS |
[(statement-parameters )]
|
構文要素の説明:
NOTITLE |
デフォルトページタイトルの省略:
デフォルトでは、 例:
注意: |
---|---|
NOHDR |
列ヘッダー:
列ヘッダーは、
列ヘッダーの省略:
1 つのフィールドの列ヘッダーを省略するには
すべての列ヘッダーを省略するには
注意:
|
GIVE SYSTEM FUNCTIONS |
システム関数の使用:
これらのシステム関数は、AT END OF PAGE 条件で実行されるステートメントで参照できます。 注意:
「例 2 - DISPLAY ステートでの GIVE SYSTEM FUNCTIONS 節の使用例」も参照してください。 |
statement-parameters |
ステートメントレベルでのパラメータ定義:
1 つまたは複数のパラメータをカッコで囲んで、要素(フィールド)レベルで、つまり この方法で指定した各パラメータによって、以前に 複数のパラメータを指定する場合は、個々のパラメータを 1 つ以上の空白で区切る必要があります。 各パラメータ指定を 2 行のステートメント行に分割することはできません。 注意: 以下の項目も参照してください。 |
DISPLAY ステートメントで指定可能なパラメータ | 指定(S = ステートメントレベル、E = 要素レベル) | |
---|---|---|
AD | 属性定義 | SE |
AL | 出力の英数字長 | SE |
CD | カラー定義 | SE |
CV | 制御変数 | SE |
DF | 日付フォーマット | SE |
DL | 出力の表示長 | SE |
DY | ダイナミック属性 | SE |
EM | 編集マスク | SE |
EMU | Unicode 編集マスク | E |
ES | 空行の省略 | S |
FC | 充填文字 | SE |
FL | 浮動小数点仮数長 | SE |
GC | グループヘッダーの充填(フィラー)文字 | SE |
HC | ヘッダーの中央揃え | SE |
HW | ヘッダーの幅 | SE |
IC | 挿入文字 | SE |
IS | 重複抑制 | SE |
LC | 先頭文字 | SE |
LS | 行サイズ | S |
MC | マルチプルバリューフィールド数 | S |
MP | レポートの最大ページ数 | S |
NL | 出力の数値長 | SE |
PC | ピリオディックグループ数 | S |
PM | 出力モード | SE |
PS | ページサイズ | S |
SF | フィールド間の空白 | SE |
SG | 符号の位置 | SE |
TC | 末尾文字 | SE |
UC | 下線付き文字 | SE |
ZP | ゼロ出力 | SE |
各パラメータの詳細については、『パラメータリファレンス』(セッションパラメータ)を参照してください。
『プログラミングガイド』の次のトピックも参照してください。
DEFINE DATA LOCAL 1 VARI (A4) INIT <'1234'> /* Output END-DEFINE /* Produced * /* --------- DISPLAY NOHDR 'Text' '=' VARI /* Text 1234 DISPLAY NOHDR (AD=U) 'Text' '=' VARI /* Text 1234 DISPLAY NOHDR 'Text' (AD=U) '=' VARI (AD=U) /* Text 1234 DISPLAY NOHDR 'Text' (AD=U) '=' VARI /* Text 1234 END
nX
|
||||||||||
nT
|
||||||||||
x/y
|
'text' [(attributes )]
|
|||||||||
T* field-name |
'c' (n ) [(attributes )]
|
|||||||||
P* field-name |
||||||||||
VERTICALLY
|
AS
|
'text' [(attributes )] [CAPTIONED ]
|
[/ ] | |||||||
[CAPTIONED ]
|
||||||||||
[HORIZONTALLY ]
|
nX |
列の間隔:
この表記により、列の間に n 個のスペースが挿入されます。 例: DISPLAY NAME 5X SALARY 以下の項目も参照してください。
|
---|---|
nT |
タブ設定:
次の例では、 DISPLAY 25T NAME 50T SALARY 以下の項目も参照してください。
|
x/y |
x/y 位置指定:
|
T*field-name |
フィールドの相対位置指定:
|
P*field-name |
フィールドおよび行の相対位置指定:
以下の項目も参照してください。
|
'text'
'/' |
テキスト割り当て:
フィールドの直前に指定すると、一重引用符で囲まれた文字列によって列ヘッダーが上書きされます。 フィールド名の前にスラッシュ文字 DISPLAY 'EMPLOYEE' NAME 'MARITAL/STATUS' MAR-STAT 複数の 以下の項目も参照してください。
|
---|---|
'c'(n) |
文字の繰り返し:
フィールド値の直前に、一重引用符で囲まれた文字列が n 回表示されます。 次に例を示します。 DISPLAY '*' (5) '=' NAME 結果 ***** SMITH 以下の項目も参照してください。
|
attributes は、テキスト表示に使用される出力属性を示します。 可能な属性:
|
||||
AD-value |
指定可能なセッションパラメータ値については、『パラメータリファレンス』ドキュメントの該当するセクションを参照してください。
注意:
コンパイラは、実際には 1 つの出力フィールドに複数の属性値を受け入れます。 例えば、「AD=BDI
」と指定できます。 ただし、この場合は最後の値のみが適用されます。 示した例では、値 "I" のみが有効になり、出力フィールドは強調表示されます。
VERT
節は、複数のフィールド値を同一の列内で上下に表示するために使用します。 VERT モードでは、キーワード VERT
または HORIZ
を指定すると新しい列が開始されます。
VERT モードの列ヘッダーは、次に示すように AS 節で指定したエントリで制御されます。
VERTICALLY | 縦方向の列。 AS 節を省略すると、列ヘッダーは出力されません。 DISPLAY VERT NAME SALARY 表示例については、『プログラミングガイド』の「AS 節のない DISPLAY VERT」を参照してください。 |
---|---|
AS 'text' | 縦方向の列。 AS 'text' を指定すると、文字列が列ヘッダーとして使用されます。
表示例については、『プログラミングガイド』の「DISPLAY VERT AS 'text'」を参照してください。 DISPLAY VERT AS 'LAST/NAME' NAME |
AS 'text' CAPTIONED | 縦方向の列。 AS 'text' CAPTIONED を指定すると、' text' が列ヘッダーとして使用され、各明細行のフィールド値の直前に標準ヘッダーまたはフィールド名が挿入されます。 DISPLAY VERT AS 'PERSONS/SELECTED' CAPTIONED NAME FIRST-NAME 表示例については、『プログラミングガイド』の「DISPLAY VERT AS 'text' CAPTIONED」を参照してください。 |
AS CAPTIONED | 縦方向の列。 AS CAPTIONED を指定すると、フィールドの標準ヘッダー(ヘッダー文字列あるいはフィールド名)が列ヘッダーとして使用されます。 DISPLAY VERT AS CAPTIONED NAME FIRST-NAME |
HORIZONTALLY | 横方向の列。 これはデフォルトの表示モードです。 |
キーワードを使用して縦方向の表示と横方向の表示を混在させることができます。
ある出力項目の縦方向の表示を一時的に停止する必要がある場合は、その要素の前に "-"(ハイフン)を指定します。 次に例を示します。
DISPLAY VERT NAME - FIRST-NAME SALARY
この例では、FIRST-NAME
は NAME
の横に横方向で表示され、SALARY
は NAME
の下に縦方向で表示されます。
標準の表示モードは、横方向です。 表示されるフィールドごとに 1 つの列が生成されます。
列ヘッダーは、Natural によって次の優先順位で取得および使用されます。
DISPLAY
ステートメントで指定したヘッダーの 'text'
。
データベースフィールドについては DDM に定義されたデフォルトのヘッダー、またはユーザー定義変数については変数名。
データベースフィールドに対してヘッダー文字列が定義されていない場合は、DDM に定義されたフィールド名。
グループ名については、グループ全体に 1 つのグループヘッダーがつけられます。 グループを指定する場合、グループ全体に対するヘッダーだけをユーザーが変更できます。
列ヘッダーの最大行数は 15 行です。
DISPLAY
ステートメントからの出力は、行の幅(ラインサイズ)を超えないようにする必要があります。 行の幅を超えると、エラーメッセージが発行されます。
縦方向の表示と横方向の表示の詳細な使用方法については、次の例を参照してください。
DISPLAY VERT AS CAPTIONED および HORIZ(『プログラミングガイド』)
'text' [(attributes )]
|
|||||
'c' (n) [(attributes )]
|
|||||
n X
|
['=' ] {operand1 [(parameters )]}
|
||||
n T
|
|||||
x/y
|
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | S | A | G | N | A | N | P | I | F | B | D | T | L | G | O | 可 | 不可 |
構文要素の説明
nX |
列の間隔:
これは、「出力フォーマット定義」の場合と同じです(上記参照)。 |
---|---|
nT |
タブ設定:
これは、「出力フォーマット定義」の場合と同じです(上記参照)。 |
x/y |
x/y 位置指定:
これは、「出力フォーマット定義」の場合と同じです(上記参照)。 |
'text' |
テキスト割り当て:
これは、「出力フォーマット定義」の場合と同じです(上記参照)。 |
'c'(n) |
文字の繰り返し:
これは、「出力フォーマット定義」の場合と同じです(上記参照)。 |
'text' '='
'c' (n) '=' |
'text' '=' をフィールドの直前に置くと、'text' がフィールド値の直前に出力されます。 これは、'c' (n) '=' と同じように適用できます。 DISPLAY '*****' '=' NAME |
attributes |
出力属性:
これは、「出力フォーマット定義」の場合と同じです(上記参照)。 |
operand1 | 表示フィールド。 |
parameters |
要素(フィールド)レベルでのパラメータ定義:
1 つまたは複数のパラメータをカッコで囲んで、要素(フィールド)レベルで、つまり operand1 の直後に指定できます。 この方法で指定した各パラメータは、以前にステートメントレベル、 複数のパラメータを指定する場合は、各エントリ間に 1 つ以上の空白を配置する必要があります。 エントリを 2 行のステートメント行に分割することはできません。 以下の項目も参照してください。 |
DISPLAY
ステートメントには、次のデフォルトが適用されます。
レポートの幅
レポートの幅は、Natural をインストールしたときの設定値がデフォルトになります。 このデフォルト値は通常、バッチモードでは 132 であり、TP モードでは端末の 1 行の長さです。 この値は、セッションパラメータ LS
で上書きできます。 TP モードでは、行の長さ(LS
)とページの大きさ(PS
)のパラメータは、使用中の端末タイプの物理特性に基づいて Natural で設定されます。
端末画面の出力
DISPLAY
ステートメントの出力を端末画面に表示する場合、出力は物理的に 2 桁目から始まります。これは、1 桁目が 3270 タイプ端末の属性桁として予約されているためです。
用紙への印刷
DISPLAY
ステートメントの出力を用紙に印刷する場合は、1 桁目から印刷されます。
フィールド間の空白
出力項目間のデフォルトのフィールド間の空白は 1 桁です。 したがって、列の間には最小 1 桁の空白があけられます(端末属性用に予約済)。 この値は、セッションパラメータ SF
で上書きできます。
フィールド出力
フィールド長、またはフィールドヘッダーのうちいずれか長い方によって、レポートの列の幅が決まります(HW
パラメータが使用されない場合)。
フィールドの方がヘッダーよりも長い場合、パラメータ HC=L
または HC=R
でヘッダーを左寄せまたは右寄せにする指示がない限り、ヘッダーは列の上でセンタリングされます。
また、ヘッダーの方がフィールドより長い場合、フィールドはヘッダーの下に左詰めで出力されます。
フィールド内の値は、英数字フィールドでは左詰めになり、数字フィールドでは右詰めになります。
数値フィールドは、AD=L
を指定すると左詰めで表示されます。
英数字フィールドは、AD=R
を指定すると右詰めで表示できます。
縦方向の表示では、フィールドの中で最も長いデータ値またはヘッダーによって列の幅が決まります(HW
パラメータを使用しない場合)。
符号
数字フィールドの印刷時には、符号桁として 1 桁余分に左側に確保されます。 Natural セッションパラメータ SG
を使用すると、符号桁を省略できます。
ページオーバーフロー
DISPLAY
ステートメントの実行前に、ページオーバーフローがチェックされます。 DISPLAY
ステートメントの実行中に、新しいページタイトルまたはトレイラ情報が生成されることはありません。
** Example 'DISEX1': DISPLAY (with nX, nT notation) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 JOB-TITLE END-DEFINE * LIMIT 4 READ EMPL-VIEW BY NAME DISPLAY NOTITLE 5X NAME 50T JOB-TITLE END-READ * END
NAME CURRENT POSITION -------------------- ------------------------- ABELLAN MAQUINISTA ACHIESON DATA BASE ADMINISTRATOR ADAM CHEF DE SERVICE ADKINSON PROGRAMMER
** Example 'DISEX2': DISPLAY (with GIVE SYSTEM FUNCTIONS) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 FIRST-NAME 2 SALARY (1) 2 CURR-CODE (1) END-DEFINE * LIMIT 15 FORMAT PS=15 * READ EMPLOY-VIEW DISPLAY GIVE SYSTEM FUNCTIONS PERSONNEL-ID NAME FIRST-NAME SALARY (1) CURR-CODE (1) AT END OF PAGE WRITE / 'SALARY STATISTICS:' / 7X 'MAXIMUM:' MAX(SALARY(1)) CURR-CODE (1) / 7X 'MINIMUM:' MIN(SALARY(1)) CURR-CODE (1) / 7X 'AVERAGE:' AVER(SALARY(1)) CURR-CODE (1) END-ENDPAGE END-READ * END
Page 1 05-01-12 09:47:48 PERSONNEL NAME FIRST-NAME ANNUAL CURRENCY ID SALARY CODE --------- -------------------- -------------------- ---------- -------- 50005500 BLOND ALEXANDRE 172000 FRA 50005300 MAIZIERE ELISABETH 166900 FRA 50004900 CAOUDAL ALBERT 167350 FRA 50004600 VERDIE BERNARD 170100 FRA 50004200 VAUZELLE BERNARD 159790 FRA 50004100 CHAPUIS ROBERT 169900 FRA 50003800 JOUSSELIN DANIEL 171990 FRA 50006900 BAILLET PATRICK 188000 FRA 50007600 MARX JEAN-MARIE 365700 FRA SALARY STATISTICS: MAXIMUM: 365700 FRA MINIMUM: 159790 FRA AVERAGE: 192414 FRA
** Example 'DISEX3': DISPLAY (with P* notation) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 SALARY (1) 2 BIRTH 2 CITY END-DEFINE * LIMIT 2 READ EMPL-VIEW BY CITY FROM 'N' DISPLAY NOTITLE NAME CITY VERT AS 'BIRTH/SALARY' BIRTH (EM=YYYY-MM-DD) SALARY (1) SKIP 1 AT BREAK OF CITY DISPLAY P*SALARY (1) AVER(SALARY (1)) SKIP 1 END-BREAK END-READ END
NAME CITY BIRTH SALARY -------------------- -------------------- ---------- WILCOX NASHVILLE 1970-01-01 38000 MORRISON NASHVILLE 1949-07-10 36000 37000
** Example 'DISEX4': DISPLAY (with 'c(n)' notation and attribute) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 DEPT 2 LEAVE-DUE 2 NAME END-DEFINE * LIMIT 4 READ EMPL-VIEW BY DEPT FROM 'T' IF LEAVE-DUE GT 40 DISPLAY NOTITLE 'EMPLOYEE' NAME /* OVERRIDE STANDARD HEADER 'LEAVE ACCUMULATED' LEAVE-DUE /* OVERRIDE STANDARD HEADER '*'(10)(I) /* DISPLAY 10 '*' INTENSIFIED ELSE DISPLAY NAME LEAVE-DUE END-IF END-READ * END
EMPLOYEE LEAVE ACCUMULATED -------------------- ----------------- LAVENDA 33 BOYER 33 CORREARD 45 ********** BOUVIER 19
** Example 'DISEX5': DISPLAY (horizontal display) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 JOB-TITLE 2 SALARY (1:2) 2 CURR-CODE (1:2) END-DEFINE * LIMIT 4 READ EMPL-VIEW BY NAME DISPLAY NOTITLE NAME JOB-TITLE SALARY (1:2) CURR-CODE (1:2) SKIP 1 END-READ * END
NAME CURRENT ANNUAL CURRENCY POSITION SALARY CODE -------------------- ------------------------- ---------- -------- ABELLAN MAQUINISTA 1450000 PTA 1392000 PTA ACHIESON DATA BASE ADMINISTRATOR 11300 UKL 10500 UKL ADAM CHEF DE SERVICE 159980 FRA 0 ADKINSON PROGRAMMER 34500 USD 31700 USD
** Example 'DISEX6': DISPLAY (vertical and horizontal display) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 CITY 2 JOB-TITLE 2 SALARY (1:2) 2 CURR-CODE (1:2) END-DEFINE * LIMIT 1 READ EMPL-VIEW BY NAME DISPLAY NOTITLE VERT AS CAPTIONED NAME CITY 'POSITION' JOB-TITLE HORIZ 'SALARY' SALARY (1:2) 'CURRENCY' CURR-CODE (1:2) /* SKIP 1 END-READ END
NAME SALARY CURRENCY CITY POSITION ------------------------- ---------- -------- ABELLAN 1450000 PTA MADRID 1392000 PTA MAQUINISTA
** Example 'DISEX7': DISPLAY (with parameters for statement/element) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 PERSONNEL-ID 2 TELEPHONE 3 AREA-CODE 3 PHONE END-DEFINE * LIMIT 3 READ EMPL-VIEW BY NAME DISPLAY NOTITLE (AL=16 GC=+ NL=8 SF=3 UC==) PERSONNEL-ID NAME TELEPHONE (LC=< TC=>) END-READ END
PERSONNEL NAME +++++++++++++++TELEPHONE+++++++++++++++ ID AREA TELEPHONE CODE ================ ================ ================== ================== 60008339 ABELLAN <1 > <4356726 > 30000231 ACHIESON <0332 > <523341 > 50005800 ADAM <1033 > <44864858 >
** Example 'PCDIEX1': DISPLAY and WRITE to PC ** ** NOTE: Example requires that Natural Connection is installed. ************************************************************************ DEFINE DATA LOCAL 01 PERS VIEW OF EMPLOYEES 02 PERSONNEL-ID 02 NAME 02 CITY END-DEFINE * FIND PERS WITH CITY = 'NEW YORK' /* Data selection WRITE (7) TITLE LEFT 'List of employees in New York' / DISPLAY (7) /* (7) designates the output file (here the PC). 'Location' CITY 'Surname' NAME 'ID' PERSONNEL-ID END-FIND END