このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント: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