このドキュメントでは、レポートの改ページを制御する方法、各レポートページの先頭にページタイトルを出力する方法、および出力レポートに空行を追加する方法について説明します。
次のトピックについて説明します。
DISPLAY
または WRITE
ステートメントによるページ出力ごとに、Natural によって自動的に単一のデフォルトタイトル行が生成されます。 このタイトル行には、ページ番号、日付、および時刻が含まれています。
例:
WRITE 'HELLO' END
上記のプログラムでは、以下のようにデフォルトのページタイトルを含む出力が作成されます。
Page 1 04-12-14 13:19:33 HELLO
ページタイトルなしでレポートを出力する場合は、キーワード NOTITLE
を DISPLAY
または WRITE
ステートメントに追加します。
** Example 'DISPLX20': DISPLAY (with NOTITLE) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 CITY 2 NAME 2 FIRST-NAME END-DEFINE * READ (5) EMPLOY-VIEW BY CITY FROM 'BOSTON' DISPLAY NOTITLE NAME FIRST-NAME CITY END-READ END
プログラム DISPLX20 の出力:
NAME FIRST-NAME CITY -------------------- -------------------- -------------------- SHAW LESLIE BOSTON STANWOOD VERNON BOSTON CREMER WALT BOSTON PERREAULT BRENDA BOSTON COHEN JOHN BOSTON
WRITE NOTITLE 'HELLO' END
上記のプログラムでは、以下のようにページタイトルを含まない出力が作成されます。
HELLO
Natural のデフォルトページタイトルの代わりに独自のページタイトルを出力する場合は、WRITE TITLE
ステートメントを使用します。
以下では次のトピックについて説明します。
WRITE TITLE
ステートメントで、タイトル用のテキストをアポストロフィで囲んで指定します。
WRITE TITLE 'THIS IS MY PAGE TITLE' WRITE 'HELLO' END
上述したプログラムにより、次の出力が生成されます。
THIS IS MY PAGE TITLE HELLO
WRITE TITLE
ステートメントの SKIP
オプションで、タイトル行のすぐ下に出力される空行の数を指定できます。 キーワード SKIP
の後に、挿入する空行の数を指定します。
WRITE TITLE 'THIS IS MY PAGE TITLE' SKIP 2 WRITE 'HELLO' END
上述したプログラムにより、次の出力が生成されます。
THIS IS MY PAGE TITLE HELLO
SKIP
は WRITE TITLE
ステートメントの一部としてのみではなく、スタンドアロンステートメントとしても使用できます。
デフォルトでは、ページタイトルはページの中央に位置付けられ、下線は付きません。
WRITE TITLE
ステートメントでは、互いに独立して使用可能な以下のオプションを指定できます。
オプション | 効果 |
---|---|
LEFT JUSTIFIED | ページタイトルを左揃えで表示します。 |
UNDERLINED | タイトルを下線付きで表示します。 行サイズの幅に下線が引かれます(Natural プロファイルおよびセッションパラメータ LS も参照)。 デフォルトでは、タイトルにハイフン(-)で下線が引かれます。 ただし、UC セッションパラメータを使用すると、下線用の文字として使用する他の文字を指定してすることができます(「タイトルおよびヘッダーの下線用の文字」を参照)。
|
以下の例は、LEFT JUSTIFIED
および UNDERLINED
オプションの効果を示しています。
WRITE TITLE LEFT JUSTIFIED UNDERLINED 'THIS IS MY PAGE TITLE' SKIP 2 WRITE 'HELLO' END
上述したプログラムにより、次の出力が生成されます。
THIS IS MY PAGE TITLE ------------------------------------------------------------------------------- HELLO
レポートの新しいページが開始されるときには、常に WRITE TITLE
ステートメントが実行されます。
以下の例では、システム変数 *PAGE-NUMBER
を WRITE TITLE
ステートメントとともに使用して、タイトル行にページ番号を出力します。
** Example 'WTITLX01': WRITE TITLE (with *PAGE-NUMBER) ************************************************************************ DEFINE DATA LOCAL 1 VEHIC-VIEW VIEW OF VEHICLES 2 MAKE 2 YEAR 2 MAINT-COST (1) END-DEFINE * LIMIT 5 * READ VEHIC-VIEW END-ALL SORT BY YEAR USING MAKE MAINT-COST (1) DISPLAY NOTITLE YEAR MAKE MAINT-COST (1) AT BREAK OF YEAR MOVE 1 TO *PAGE-NUMBER NEWPAGE END-BREAK /* WRITE TITLE LEFT JUSTIFIED 'YEAR:' YEAR 15X 'PAGE' *PAGE-NUMBER END-SORT END
プログラム WTITLX01 の出力:
YEAR: 1980 PAGE 1 YEAR MAKE MAINT-COST ----- -------------------- ---------- 1980 RENAULT 20000 1980 RENAULT 20000 1980 PEUGEOT 20000
論理ページは、Natural プログラムによって作成される出力です。 物理ページは、出力が表示される端末画面です。または、出力がプリントされる用紙 1 枚の場合もあります。
論理ページのサイズは、Natural プログラムによって出力される行数で決定されます。
1 画面分より多い行数が出力された場合、論理ページは物理画面を超過し、残りの行は次の画面に表示されます。
注意:
画面の下に表示される情報(WRITE TRAILER
または AT END OF PAGE
ステートメントで作成される出力など)が次の画面に出力される場合は、下記で説明しているセッションパラメータ PS
を使用して、論理ページのサイズを適宜に減らします。
パラメータ PS
(Natural レポートのページサイズ)を使用して、レポートの論理ページ当たりの最大行数を指定します。
PS
パラメータで指定した行数に達すると、改ページが発生します。ただし、NEWPAGE
または EJECT
ステートメントで改ページが制御されていない場合に限られます。下記の「EJ パラメータで制御する改ページ」を参照してください。
PS
パラメータは、システムコマンド GLOBALS
を使用してセッションレベルで設定するか、または以下のステートメントを使用してプログラム内で設定できます。
FORMAT PS=nn
DISPLAY (PS=nn)
WRITE (PS=nn)
WRITE TITLE (PS=nn)
WRITE TRAILER (PS=nn)
INPUT (PS=nn)
以下のいずれかの方法で改ページできます。
これらの方法について以下で説明します。
セッションパラメータ EJ
(ページ換え)を使用して、ページ換えを実行するかどうかを指定します。 デフォルトでは EJ=ON
が適用され、指定に従ってページ換えが実行されます。
EJ=OFF
を指定すると、改ページ情報は無視されます。 これは、ページ換えを必要としないテスト実行時に用紙を節約するために役立ちます。
EJ
パラメータは、次の例のように、システムコマンド GLOBALS
を使用してセッションレベルで設定できます。
GLOBALS EJ=OFF
EJ
パラメータの設定は、EJECT
ステートメントによって上書きされます。
以下では次のトピックについて説明します。
EJECT
ステートメントでは、次のページにタイトル行またはヘッダー行を生成しないで改ページが行われます。 新しい物理ページは、ページ開始処理またはページ終了処理(WRITE TRAILER
、AT END OF PAGE
、WRITE TITLE
、AT TOP OF PAGE
、*PAGE-NUMBER
などの処理)を実行しないで、開始されます。
EJECT
ステートメントは EJ
パラメータの設定を上書きします。
NEWPAGE
ステートメントでは、関連するページ終了処理およびページ開始処理とともに改ページが行われます。 指定されている場合には、トレーラ行が表示されます。 DISPLAY
または WRITE
ステートメント で NOTITLE
オプションが指定されていない場合には(上記参照)、デフォルトまたはユーザー指定のタイトル行が新しいページに表示されます。
NEWPAGE
ステートメントを使用しない場合、改ページは PS
パラメータの設定によって自動的に制御されます。上記の「ページサイズ - PS パラメータ」を参照してください。
NEWPAGE
ステートメントおよび EJECT
ステートメントの両方で、WHEN LESS THAN n LINES LEFT
オプションを指定できます。 このオプションでは、行数(n)を指定します。 NEWPAGE
および EJECT
ステートメントは、ステートメント処理時に現在のページの使用可能行数が n 行より少ない場合に実行されます。
FORMAT PS=55 ... NEWPAGE WHEN LESS THAN 7 LINES LEFT ...
この例では、ページサイズは 55 行に設定されています。
NEWPAGE
ステートメントの処理時に現在のページの残りの行数が 6 行以下の場合にのみ、NEWPAGE
ステートメントが実行され、改ページが発生します。 残りの行数が 7 行以上の場合、NEWPAGE
ステートメントは実行されず、改ページも発生しません。改ページはその後、セッションパラメータ PS
(Natural レポートのページサイズ)の設定に従って、55 行目の後に発生します。
** Example 'NEWPAX02': NEWPAGE (in combination with EJECT and ** parameter PS) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 CITY 2 NAME 2 JOB-TITLE END-DEFINE * FORMAT PS=15 * READ (9) EMPLOY-VIEW BY CITY STARTING FROM 'BOSTON' AT START OF DATA EJECT WRITE /// 20T '%' (29) / 20T '%%' 47T '%%' / 20T '%%' 3X 'REPORT OF EMPLOYEES' 47T '%%' / 20T '%%' 3X ' SORTED BY CITY ' 47T '%%' / 20T '%%' 47T '%%' / 20T '%' (29) / NEWPAGE END-START AT BREAK OF CITY NEWPAGE WHEN LESS 3 LINES LEFT END-BREAK DISPLAY CITY (IS=ON) NAME JOB-TITLE END-READ END
NEWPAGE
ステートメントでは、WITH TITLE
オプションも使用できます。 このオプションを使用しない場合、デフォルトタイトルが新しいページの先頭に表示されるか、または WRITE TITLE
ステートメントや NOTITLE
節が実行されます。
NEWPAGE
ステートメントの WITH TITLE
オプションにより、独自に選択したタイトルでこれらを上書きすることができます。 WITH TITLE
オプションの構文は、WRITE TITLE
ステートメントと同じです。
NEWPAGE WITH TITLE LEFT JUSTIFIED 'PEOPLE LIVING IN BOSTON:'
以下のプログラムは、セッションパラメータ PS
(Natural レポートのページサイズ)と NEWPAGE
ステートメントの使用法を示しています。 さらに、システム変数 *PAGE-NUMBER
を使用して現在のページ番号を表示しています。
** Example 'NEWPAX01': NEWPAGE ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 CITY 2 DEPT END-DEFINE * FORMAT PS=20 READ (5) VIEWEMP BY CITY STARTING FROM 'M' DISPLAY NAME 'DEPT' DEPT 'LOCATION' CITY AT BREAK OF CITY NEWPAGE WITH TITLE LEFT JUSTIFIED 'EMPLOYEES BY CITY - PAGE:' *PAGE-NUMBER END-BREAK END-READ END
プログラム NEWPAX01 の出力:
改ページの位置とタイトル行に注意してください。
Page 1 04-11-11 14:15:54 NAME DEPT LOCATION -------------------- ------ -------------------- FICKEN TECH10 MADISON KELLOGG TECH10 MADISON ALEXANDER SALE20 MADISON
2 ページ目:
EMPLOYEES BY CITY - PAGE: 2 NAME DEPT LOCATION -------------------- ------ -------------------- DE JUAN SALE03 MADRID DE LA MADRID PROD01 MADRID
3 ページ目:
EMPLOYEES BY CITY - PAGE: 3
以下では次のトピックについて説明します。
WRITE TRAILER
ステートメントは、ページの下に(アポストロフィで囲んだ)テキストを出力するために使用されます。
WRITE TRAILER 'THIS IS THE END OF THE PAGE'
ステートメントは、ページ終了条件が検出されたとき、または SKIP
や NEWPAGE
ステートメントの結果として実行されます。
ページ終了条件は DISPLAY
または WRITE
ステートメント全体が処理された後でのみチェックされるため、論理ページサイズ(DISPLAY
または WRITE
ステートメントによって出力される行数)によっては、WRITE TRAILER
ステートメントが実行される前に、出力ページの物理サイズを超過する可能性があります。
実際に物理ページの下にページトレーラが表示されるようにするには、PS
セッションパラメータを使用して、論理ページサイズを物理ページサイズより少ない値に設定する必要があります。
デフォルトでは、ページトレーラはページの中央に位置付けられ、下線は付きません。
WRITE TRAILER
ステートメントでは、互いに独立して使用可能な以下のオプションを指定できます。
オプション | 効果 |
---|---|
LEFT JUSTIFIED | ページトレーラを左揃えで表示します。 |
UNDERLINED | 行サイズの幅に下線が引かれます(Natural プロファイルおよびセッションパラメータ LS も参照)。 デフォルトでは、タイトルにハイフン(-)で下線が引かれます。 ただし、UC セッションパラメータを使用すると、下線用の文字として使用する他の文字を指定してすることができます(「タイトルおよびヘッダーの下線用の文字」を参照)。
|
以下の例は、WRITE TRAILER
ステートメントの LEFT JUSTIFIED
および UNDERLINED
オプションの使用法を示しています。
WRITE TRAILER LEFT JUSTIFIED UNDERLINED 'THIS IS THE END OF THE PAGE'
** Example 'WTITLX02': WRITE TITLE AND WRITE TRAILER ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 CITY 2 NAME 2 FIRST-NAME 2 ADDRESS-LINE (1) END-DEFINE * WRITE TITLE LEFT JUSTIFIED UNDERLINED *TIME 5X 'PEOPLE LIVING IN SALT LAKE CITY' 21X 'PAGE:' *PAGE-NUMBER / 15X 'AS OF' *DAT4E // * WRITE TRAILER UNDERLINED 'REGISTER OF' / 'SALT LAKE CITY' * READ (2) EMPLOY-VIEW WITH CITY = 'SALT LAKE CITY' DISPLAY NAME / FIRST-NAME 'HOME/CITY' CITY 'STREET/OR BOX NO.' ADDRESS-LINE (1) SKIP 1 END-READ END
SKIP
ステートメントは、1 つまたは複数の空行を出力レポートに生成するために使用します。
** Example 'SKIPX01': SKIP (in conjunction with WRITE and DISPLAY) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 CITY 2 NAME 2 FIRST-NAME 2 ADDRESS-LINE (1) END-DEFINE * WRITE TITLE LEFT JUSTIFIED UNDERLINED 'PEOPLE LIVING IN SALT LAKE CITY AS OF' *DAT4E 7X 'PAGE:' *PAGE-NUMBER SKIP 3 * READ (2) EMPLOY-VIEW WITH CITY = 'SALT LAKE CITY' DISPLAY NAME / FIRST-NAME CITY ADDRESS-LINE (1) SKIP 1 END-READ END
** Example 'SKIPX02': SKIP (in conjunction with DISPLAY VERT) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 CITY 2 JOB-TITLE END-DEFINE * READ (2) EMPLOY-VIEW WITH JOB-TITLE = 'SECRETARY' DISPLAY NOTITLE VERT NAME FIRST-NAME / CITY SKIP 3 END-READ * NEWPAGE * READ (2) EMPLOY-VIEW WITH JOB-TITLE = 'SECRETARY' DISPLAY NOTITLE NAME FIRST-NAME / CITY SKIP 3 END-READ END
AT TOP OF PAGE
ステートメントは、レポートの新しいページが始まるときに常に実行される処理を指定するために使用します。
AT TOP OF PAGE
処理で何らかの出力が作成される場合、ページタイトルの下に、間にスキップした行をはさんで出力されます。
デフォルトでは、この出力は左揃えでページに表示されます。
** Example 'ATTOPX01': AT TOP OF PAGE ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 MAR-STAT 2 BIRTH 2 CITY 2 JOB-TITLE 2 DEPT END-DEFINE * LIMIT 10 READ EMPLOY-VIEW BY PERSONNEL-ID FROM '20017000' DISPLAY NOTITLE (AL=10) NAME DEPT JOB-TITLE CITY 5X MAR-STAT 'DATE OF/BIRTH' BIRTH (EM=YY-MM-DD) /* AT TOP OF PAGE WRITE / '-BUSINESS INFORMATION-' 26X '-PRIVATE INFORMATION-' END-TOPPAGE END-READ END
プログラム ATTOPX01 の出力:
-BUSINESS INFORMATION- -PRIVATE INFORMATION- NAME DEPARTMENT CURRENT CITY MARITAL DATE OF CODE POSITION STATUS BIRTH ---------- ---------- ---------- ---------- ---------- -------- CREMER TECH10 ANALYST GREENVILLE S 70-01-01 MARKUSH SALE00 TRAINEE LOS ANGELE D 79-03-14 GEE TECH05 MANAGER CHAPEL HIL M 41-02-04 KUNEY TECH10 DBA DETROIT S 40-02-13 NEEDHAM TECH10 PROGRAMMER CHATTANOOG S 55-08-05 JACKSON TECH10 PROGRAMMER ST LOUIS D 70-01-01 PIETSCH MGMT10 SECRETARY VISTA M 40-01-09 PAUL MGMT10 SECRETARY NORFOLK S 43-07-07 HERZOG TECH05 MANAGER CHATTANOOG S 52-09-16 DEKKER TECH10 DBA MOBILE W 40-03-03
AT END OF PAGE
ステートメントは、ページ終了条件が発生したときに常に実行される処理を指定するために使用します。
AT END OF PAGE
処理により何らかの出力が作成される場合、WRITE TRAILER
ステートメントで指定したページトレーラの後に出力されます。
デフォルトでは、この出力は左揃えでページに表示されます。
上記で説明したページトレーラに関わる物理および論理ページサイズと DISPLAY
または WRITE
ステートメントで出力される行数の考慮事項は、AT END OF PAGE
出力にも同様に適用されます。
** Example 'ATENPX01': AT END OF PAGE (with system function available ** via GIVE SYSTEM FUNCTIONS in DISPLAY) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 JOB-TITLE 2 SALARY (1) END-DEFINE * READ (10) EMPLOY-VIEW BY PERSONNEL-ID = '20017000' DISPLAY NOTITLE GIVE SYSTEM FUNCTIONS NAME JOB-TITLE 'SALARY' SALARY(1) /* AT END OF PAGE WRITE / 24T 'AVERAGE SALARY: ...' AVER(SALARY(1)) END-ENDPAGE END-READ END
プログラム ATENPX01 の出力:
NAME CURRENT SALARY POSITION -------------------- ------------------------- ---------- CREMER ANALYST 34000 MARKUSH TRAINEE 22000 GEE MANAGER 39500 KUNEY DBA 40200 NEEDHAM PROGRAMMER 32500 JACKSON PROGRAMMER 33000 PIETSCH SECRETARY 22000 PAUL SECRETARY 23000 HERZOG MANAGER 48500 DEKKER DBA 48000 AVERAGE SALARY: ... 34270
次の例のプログラムを参照してください。