このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:AT END OF
PAGE | AT TOP OF
PAGE | CLOSE
PRINTER | DEFINE PRINTER | DISPLAY | EJECT | FORMAT | NEWPAGE | PRINT | SKIP | SUSPEND IDENTICAL SUPPRESS | WRITE TITLE | WRITE TRAILER
関連機能グループ:出力レポートの作成
WRITE ステートメントは、出力をフリーフォーマットで生成するために使用します。
WRITE ステートメントは、次の点で DISPLAY ステートメントと異なります。
行あふれをサポートします。レポートの幅が 1 行を超過する場合、あふれたフィールド(またはテキスト)は次の行に書き出されます。フィールドやテキストが行をまたがって出力されることはありません。
デフォルトの列ヘッダーは出力されません。データの長さによって各フィールドの出力桁数が決まります。
配列の値やオカレンスは縦出力ではなく、横に並べられます。
『プログラミングガイド』の次のトピックも参照してください。
WRITE [(rep)] [NOTITLE] [NOHDR]
|
||||||||
| [(statement-parameters)] | ||||||||
nX |
|
'text' [(attributes)] |
|
|||||
nT |
'c'(n) [(attributes)] | |||||||
| x/y | ['='] operand1 [(parameters)] | |||||||
T*field-name |
||||||||
P*field-name |
||||||||
| / | ||||||||
構文図で使用されている記号については、「構文記号」を参照してください。
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
S | A | G | N | A | U | N | P | I | F | B | D | T | L | G | O | ○ | × | ||
構文要素の説明:
| 構文要素 | 説明 |
|---|---|
(rep) |
レポート指定:
プログラムで複数のレポートが生成される場合に、表記 レポート ID として、範囲
プリンタファイルが PC として Natural に定義されている場合、レポートは PC にダウンロードされます。「例 6」を参照してください。 Natural で作成される出力レポートの形式を制御する方法については、『プログラミングガイド』の「レポートフォーマットおよび制御」を参照してください。 |
NOTITLE |
デフォルトページタイトルの省略:
Natural は、 例:
注意: |
NOHDR |
列ヘッダーの省略:
|
statement-parameters |
ステートメントレベルでのパラメータ定義:
1 つまたは複数のパラメータをカッコで囲んで、ステートメントレベルで、つまり 指定した各パラメータは、以前に 複数のパラメータを指定する場合は、個々のパラメータを 1 つ以上の空白で区切る必要があります。各パラメータ指定を 2 行のステートメント行に分割することはできません。 注意: 以下の項目も参照してください。 |
nX, nT, x/y, T*field-name, P*field-name, '=', / |
フィールドの位置指定表記:
「出力フォーマット定義」セクションの「フィールドの位置指定表記」を参照してください。 |
'text', 'c'(n), attributes, operand1, parameters |
テキスト/属性割り当て:
「出力フォーマット定義」セクションの「テキスト/属性割り当て」を参照してください。 |
| WRITE ステートメントで指定可能なパラメータ | 指定(S = ステートメントレベル、E = 要素レベル) | |
|---|---|---|
AD |
属性定義 | SE |
AL |
出力の英数字長 | SE |
CD |
カラー定義 | SE |
CV |
制御変数 | SE |
DF |
日付フォーマット | SE |
DL |
出力の表示長 | SE |
DY |
ダイナミック属性 | SE |
EM |
編集マスク | SE |
EMU |
Unicode 編集マスク | E |
FL |
浮動小数点仮数長 | SE |
IS |
重複抑制 | SE |
LS |
Line Size | S |
MC |
マルチプルバリューフィールド数 | S |
MP |
レポートの最大ページ数 | S |
NL |
出力の数値長 | SE |
PC |
ピリオディックグループ数 | S |
PM |
Print Mode | SE |
PS |
ページサイズ * | S |
SG |
符号の位置 | SE |
UC |
下線付き文字 | S |
ZP |
ゼロ出力 | SE |
* PS セッションパラメータ設定は、配列のオカレンス数が PS 値を超える場合は考慮されません。
各セッションパラメータの詳細については、『パラメータリファレンス』を参照してください。
『プログラミングガイド』の次のトピックも参照してください。
DEFINE DATA LOCAL 1 VARI (A4) INIT <'1234'> /* Output END-DEFINE /* Produced * /* --------- WRITE 'Text' VARI /* Text 1234 WRITE (AD=U) 'Text' VARI /* Text 1234 WRITE 'Text' (AD=U) VARI (AD=U) /* Text 1234 WRITE 'Text' (AD=U) VARI /* Text 1234 END
「例 5 - ステートメント/要素(フィールド)レベルで '=' とパラメータを使用した WRITE ステートメント」も参照してください。
nX |
|||||||
nT |
|||||||
| x/y |
|
'text' [(attributes)] |
|
||||
T*field-name |
'c' (n) [(attributes)] | ||||||
P*field-name |
['='] operand1[(parameters)]
|
||||||
| / |
構文図で使用されている記号については、「構文記号」を参照してください。
| 構文要素 | 説明 |
|---|---|
nX |
列の間隔:
この表記により、列の間に 例: WRITE NAME 5X SALARY 以下の項目も参照してください。
|
nT |
タブ設定:
次の例では、 WRITE 25T NAME 50T SALARY 以下の項目も参照してください。
|
x/y |
x/y 位置指定:
「位置指定表記 x/y」(『プログラミングガイド』)も参照してください。 |
T*field-name |
フィールドの相対位置指定:
表記 以下の項目も参照してください。
|
P*field-name |
フィールドおよび行の相対位置指定:
表記 以下の項目も参照してください。
|
'=' |
フィールドヘッダーの後に位置するフィールド内容:
フィールドの前に配置した場合は、等号 以下の項目も参照してください。 |
/ |
行送り - スラッシュ表記:
フィールドまたはテキスト要素の間に配置した場合は、スラッシュ(/)により次の出力行の先頭に位置指定されます。 例: WRITE NAME / SALARY 複数の行送りをするために、複数のスラッシュ(/)表記を使用できます。 以下の項目も参照してください。
|
| 構文要素 | 説明 |
|---|---|
'text' |
テキスト割り当て:
一重引用符で囲まれた文字列が表示されます。 例: WRITE 'EMPLOYEE' NAME 'MARITAL/STATUS' MAR-STAT 以下の項目も参照してください。
|
'c'(n) |
文字の繰り返し:
フィールド値の直前に、一重引用符で囲まれた文字列が 例えば、次のようになります。 WRITE '*' (5) '=' NAME 結果 ***** SMITH 「テキスト表記」の「フィールド値の前に n 回表示される文字の定義」(『プログラミングガイド』)も参照してください。 |
attributes |
フィールド表現と色属性:
テキスト/フィールド表示にさまざまな属性を割り当てることができます。これらの属性と構文については、以下の「出力属性」で説明します。 例: WRITE 'TEXT' (BGR) WRITE 'TEXT' (B) WRITE 'TEXT' (BBLC) |
operand1 |
書き込まれるフィールド:
|
parameters |
要素(フィールド)レベルでのパラメータ定義:
1 つまたは複数のパラメータをカッコで囲んで、要素(フィールド)レベルで、つまり 複数のパラメータを指定する場合は、各エントリ間に 1 つ以上の空白を配置する必要があります。エントリを 2 行のステートメント行に分割することはできません。 以下の項目も参照してください。 |
attributes は、テキスト表示に使用される出力属性を示します。属性は次のいずれかです。
|
|
||
|
|
ad-value |
上記の意味は次に示すとおりです。
ad-value、、cd-value および pm-value は、『パラメータリファレンス』ドキュメントの関連セクションで記載されている、対応するセッションパラメータ AD、、CD および PM の可能な値を示します。
コンパイラは、実際には 1 つの出力フィールドに複数の属性値を受け入れます。例えば、次のように指定できます。AD=BDIただし、この場合は最後の値のみが適用されます。示した例では、値 I のみが有効になり、出力フィールドは強調表示されます。
英数字/Unicode 定数(Natural データフォーマット A または U )の場合は、ad-value または cd-value あるいはその両方を、それぞれの前に先行する CD= または AD= なしで、指定することができます。入力した単一の値が、最初にすべての可能な CD 値に対してチェックされます。例えば、IRE の値は、高輝度表示/赤として解釈されますが、高輝度表示/右詰め/必須としては解釈されません。単一の cd-value またはad-value の前に CD= または AD= が付いた値を組み合わせることはできません。
WRITE [(rep)] [NOTITLE] [NOHDR] [USING ]
|
|
FORM |
|
operand1 [operand2 |
MAP |
構文図で使用されている記号については、「構文記号」を参照してください。
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| operand1 | C | S | A | × | × | |||||||||||||||
| operand2 | S | A | G | N | A | U | N | P | I | F | B | D | T | L | ○ | × | ||||
構文要素の説明:
| 構文要素 | 説明 |
|---|---|
[USING] FORM [USING] MAP |
定義済みフォーム/マップレイアウトの使用
このオプションを指定することで、あらかじめマップエディタで定義しておいたフォーム/マップレイアウトを使用できます。
|
operand1 |
Form/Map 名:
|
operand2 |
書き込まれるフィールド:
フィールドは、番号、シーケンス、フォーマット、長さ、オカレンス数(配列の場合)について、参照されているフォーム/マップに準拠している必要があります。そうでない場合、エラーが発生します。 |
NOTITLE/NOHDR |
タイトル行/列ヘッダーの省略:
|
** Example 'WRTEX1': WRITE (with '=', 'text', '/')
************************************************************************
DEFINE DATA LOCAL
1 EMPL-VIEW VIEW OF EMPLOYEES
2 FULL-NAME
3 FIRST-NAME
3 MIDDLE-I
3 NAME
2 CITY
2 COUNTRY
END-DEFINE
*
LIMIT 1
READ EMPL-VIEW BY NAME
/*
WRITE NOTITLE
'=' NAME '=' FIRST-NAME '=' MIDDLE-I //
'L O C A T I O N' /
'CITY: ' CITY /
'COUNTRY:' COUNTRY //
/*
END-READ
END
NAME: ABELLAN FIRST-NAME: KEPA MIDDLE-I:
L O C A T I O N
CITY: MADRID
COUNTRY: E
** Example 'WRTEX2': WRITE (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 WRITE NOTITLE 5X NAME 50T JOB-TITLE END-READ END
ABELLAN MAQUINISTA ACHIESON DATA BASE ADMINISTRATOR ADAM CHEF DE SERVICE ADKINSON PROGRAMMER
** Example 'WRTEX3': WRITE (with T* notation)
************************************************************************
DEFINE DATA LOCAL
1 EMPL-VIEW VIEW OF EMPLOYEES
2 NAME
2 CITY
2 SALARY (1)
END-DEFINE
*
LIMIT 5
READ EMPL-VIEW BY CITY STARTING FROM 'ALBU'
DISPLAY NOTITLE CITY NAME SALARY (1)
AT BREAK CITY
/*
WRITE / 'CITY AVERAGE:' T*SALARY (1) AVER(SALARY(1)) //
/*
END-BREAK
END-READ
END
CITY NAME ANNUAL
SALARY
-------------------- -------------------- ----------
ALBUQUERQUE HAMMOND 22000
ALBUQUERQUE ROLLING 34000
ALBUQUERQUE FREEMAN 34000
ALBUQUERQUE LINCOLN 41000
CITY AVERAGE: 32750
ALFRETON GOLDBERG 4800
CITY AVERAGE: 4800
** Example 'WRTEX4': WRITE (with P* notation)
************************************************************************
DEFINE DATA LOCAL
1 EMPL-VIEW VIEW OF EMPLOYEES
2 NAME
2 CITY
2 BIRTH
2 SALARY (1)
END-DEFINE
*
LIMIT 3
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 CITY
WRITE / 'CITY AVERAGE' P*SALARY (1) AVER(SALARY (1)) //
END-BREAK
END-READ
END
NAME CITY BIRTH
SALARY
-------------------- -------------------- ----------
WILCOX NASHVILLE 1970-01-01
38000
MORRISON NASHVILLE 1949-07-10
36000
CITY AVERAGE 37000
BOYER NEMOURS 1955-11-23
195900
CITY AVERAGE 195900
** Example 'WRTEX5': WRITE (using '=', statement/element parameters)
************************************************************************
DEFINE DATA LOCAL
1 EMPL-VIEW VIEW OF EMPLOYEES
2 NAME
2 PERSONNEL-ID
2 PHONE
END-DEFINE
*
LIMIT 2
READ EMPL-VIEW BY NAME
WRITE NOTITLE (AL=16 NL=8)
'=' PERSONNEL-ID '=' NAME '=' PHONE (AL=10 EM=XXX-XXXXXXX)
END-READ
END
PERSONNEL ID: 60008339 NAME: ABELLAN TELEPHONE: 435-6726 PERSONNEL ID: 30000231 NAME: ACHIESON TELEPHONE: 523-341
** 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