このドキュメントでは、DISPLAY
および WRITE
ステートメントを使用してデータを出力する方法および情報を出力するフォーマットを制御する方法について説明します。
次のトピックについて説明します。
DISPLAY
ステートメントでは列形式の出力が作成されます。つまり、1 つのフィールドの値が 1 つの列の下に縦に出力されます。 複数のフィールドが出力される場合、つまり複数の列が作成される場合、これらの列は互いに隣り合って横に出力されます。
表示されるフィールドの順番は、DISPLAY
ステートメントに指定したフィールド名の順番で決定されます。
以下のプログラムの DISPLAY
ステートメントでは、従業員ごとに、最初に従業員番号、次に名前、その次に職種が表示されます。
** Example 'DISPLX01': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * READ (3) VIEWEMP BY BIRTH DISPLAY PERSONNEL-ID NAME JOB-TITLE END-READ END
プログラム DISPLX01 の出力:
Page 1 04-11-11 14:15:54 PERSONNEL NAME CURRENT ID POSITION --------- -------------------- ------------------------- 30020013 GARRET TYPIST 30016112 TAILOR WAREHOUSEMAN 20017600 PIETSCH SECRETARY
出力レポートに表示される列の順番を変更するには、DISPLAY
ステートメントのフィールド名を単に並べ換えます。 例えば、従業員名、職種、従業員番号の順番でリストする場合、適切な DISPLAY
ステートメントは、以下のようになります。
** Example 'DISPLX02': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * READ (3) VIEWEMP BY BIRTH DISPLAY NAME JOB-TITLE PERSONNEL-ID END-READ END
プログラム DISPLX02 の出力:
Page 1 04-11-11 14:15:54 NAME CURRENT PERSONNEL POSITION ID -------------------- ------------------------- --------- GARRET TYPIST 30020013 TAILOR WAREHOUSEMAN 30016112 PIETSCH SECRETARY 20017600
ヘッダーが各列の上に出力されます。 このヘッダーに影響するさまざまな方法については、『列ヘッダー』ドキュメントを参照してください。
WRITE
ステートメントは、フリーフォーマット(列なし)の出力を作成するために使用します。 DISPLAY
ステートメントとは対照的に、WRITE
ステートメントには以下が適用されます。
必要に応じて、自動的に行送りを行います。つまり、現在の出力行に納まらないフィールドまたはテキスト要素は、自動的に次の行に出力されます。
ヘッダーは作成されません。
マルチプルバリューフィールドの値は、互いに隣り合って横に出力されます。縦には出力されません。
以下の 2 つのプログラム例は、DISPLAY
ステートメントと WRITE
ステートメントの基本的な違いを示しています。
『垂直表示』ドキュメントの「DISPLAY と WRITE の組み合わせ」で説明しているように、2 つのステートメントを組み合わせて使用することもできます。
** Example 'DISPLX03': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:3) END-DEFINE * READ (2) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME SALARY (1:3) END-READ END
プログラム DISPLX03 の出力:
Page 1 04-11-11 14:15:54 NAME FIRST-NAME ANNUAL SALARY -------------------- -------------------- ---------- JONES VIRGINIA 46000 42300 39300 JONES MARSHA 50000 46000 42700
** Example 'WRITEX01': WRITE ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:3) END-DEFINE * READ (2) VIEWEMP BY NAME STARTING FROM 'JONES' WRITE NAME FIRST-NAME SALARY (1:3) END-READ END
プログラム WRITEX01 の出力:
Page 1 04-11-11 14:15:55 JONES VIRGINIA 46000 42300 39300 JONES MARSHA 50000 46000 42700
デフォルトでは、DISPLAY
ステートメントで出力される列は互いに 1 文字の空白で区切られます。
セッションパラメータ SF
を使用すると、DISPLAY
ステートメントで出力される列の間に挿入するデフォルトの空白文字数を指定できます。 空白文字数は 1~30 の任意の値に設定できます。
パラメータは、FORMAT
ステートメント を使用してレポート全体に適用するか、または DISPLAY
ステートメントを使用して要素レベルではなくステートメントレベルで指定することができます。
DISPLAY
ステートメントの nX
表記で、2 つの列の間に挿入する空白文字数(n)を指定できます。 nX
表記は、SF
パラメータによる指定を上書きします。
** Example 'DISPLX04': DISPLAY (with nX) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * FORMAT SF=3 READ (3) VIEWEMP BY BIRTH DISPLAY PERSONNEL-ID NAME 5X JOB-TITLE END-READ END
プログラム DISPLX04 の出力:
上記のプログラム例では、以下の出力が作成されます。最初の 2 つの列は FORMAT
ステートメントの SF
パラメータにより 3 文字の空白で区切られています。2 番目と 3 番目の列は、DISPLAY
ステートメントの 5X
表記により 5 文字の空白で区切られています。
Page 1 04-11-11 14:15:54 PERSONNEL NAME CURRENT ID POSITION --------- -------------------- ------------------------- 30020013 GARRET TYPIST 30016112 TAILOR WAREHOUSEMAN 20017600 PIETSCH SECRETARY
nX
表記は WRITE
ステートメントでも使用可能であり、個々の出力要素間に空白を挿入します。
WRITE PERSONNEL-ID 5X NAME 3X JOB-TITLE
上記のステートメントでは、フィールド PERSONNEL-ID
と NAME
の間に 5 文字の空白が挿入され、NAME
と JOB-TITLE
の間には 3 文字の空白が挿入されます。
nT
表記は DISPLAY
および WRITE
ステートメントで使用可能であり、この表記を使用して出力要素を出力する位置を指定できます。
** Example 'DISPLX05': DISPLAY (with nT) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY 5T NAME 30T FIRST-NAME END-READ END
プログラム DISPLX05 の出力:
上記のプログラムでは、以下の出力が作成されます。フィールド NAME
はページの左マージンから数えて 5 桁目から始まり、フィールド FIRST-NAME
は 30 桁目から始まります。
Page 1 04-11-11 14:15:54 NAME FIRST-NAME -------------------- -------------------- JONES VIRGINIA JONES MARSHA JONES ROBERT
DISPLAY
または WRITE
ステートメントでスラッシュ(/)を使用すると、行送りを行うことができます。
DISPLAY
ステートメントでは、スラッシュによりフィールド間およびテキスト内で行送りが行われます。
WRITE
ステートメントでは、スラッシュがフィールド間に指定された場合にのみ行送りが行われます。テキスト内に指定された場合は、通常のテキスト文字と同様に処理されます。
フィールド間に指定する場合は、スラッシュの両側に空白が必要です。
行送りを複数回行う場合は、複数のスラッシュを指定します。
** Example 'DISPLX06': DISPLAY (with slash '/') ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 DEPARTMENT END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT END-READ END
プログラム DISPLX06 の出力:
上記の DISPLAY
ステートメントでは、フィールド NAME
の各値の後、およびテキスト "DEPART-MENT" 内で行送りが行われます。
Page 1 04-11-11 14:15:54 NAME DEPART- FIRST-NAME MENT -------------------- ------- JONES SALE VIRGINIA JONES MGMT MARSHA JONES TECH ROBERT
** Example 'WRITEX02': WRITE (with line advance) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 DEPARTMENT END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' WRITE NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT // END-READ END
プログラム WRITEX02 の出力:
上記の WRITE
ステートメントでは、フィールド NAME
の各値の後に 1 行、フィールド DEPARTMENT
の各値の後に 2 行行送りが行われますが、テキスト "DEPART-/MENT" 内では行送りは行われません。
Page 1 04-11-11 14:15:55 JONES VIRGINIA DEPART-/MENT SALE JONES MARSHA DEPART-/MENT MGMT JONES ROBERT DEPART-/MENT TECH
** Example 'DISPLX21': DISPLAY (usage of slash '/' in DISPLAY and WRITE) ************************************************************************ 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
プログラム DISPLX21 の出力:
14:15:54.6 PEOPLE LIVING IN SALT LAKE CITY PAGE: 1 AS OF 11/11/2004 ------------------------------------------------------------------------------- NAME HOME STREET FIRST-NAME CITY OR BOX NO. -------------------- -------------------- -------------------- ANDERSON SALT LAKE CITY 3701 S. GEORGE MASON JENNY SAMUELSON SALT LAKE CITY 7610 W. 86TH STREET MARTIN REGISTER OF SALT LAKE CITY -------------------------------------------------------------------------------
次の例のプログラムを参照してください。