WRITE
ステートメントは、出力をフリーフォーマットで生成するために使用します。
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント: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 として、範囲 0~31 の値、または
このプリンタファイルが PC として Natural に定義されている場合、レポートは PC にダウンロードされます。例 5 を参照してください。 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 | 行サイズ | S |
MC | マルチプルバリューフィールド数 | S |
MP | レポートの最大ページ数 | S |
NL | 出力の数値長 | SE |
PC | ピリオディックグループ数 | S |
PM | 出力モード | 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 |
列の間隔:
この表記により、列の間に n 個のスペースが挿入されます。 例: 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) |
文字の繰り返し:
フィールド値の直前に、一重引用符で囲まれた文字列が n 回表示されます。 例: WRITE '*' (5) '=' NAME 結果 ***** SMITH 「テキスト表記」の「フィールド値の前に n 回表示される文字の定義」(『プログラミングガイド』)も参照してください。 |
attributes |
フィールド表現と色属性:
テキスト/フィールド表示にさまざまな属性を割り当てることができます。 これらの属性と構文については、以下の「出力属性」で説明します。 例: WRITE 'TEXT' (BGR) WRITE 'TEXT' (B) WRITE 'TEXT' (BBLC) |
operand1 |
書き込まれるフィールド:
operand1 では、内容がこの位置に書き込まれるフィールドを指定します。 |
parameters |
要素(フィールド)レベルでのパラメータ定義:
1 つまたは複数のパラメータをカッコで囲んで、要素(フィールド)レベルで、つまり operand1 の直後に指定できます。 この方法で指定した各パラメータは、以前にステートメントレベル、 複数のパラメータを指定する場合は、各エントリ間に 1 つ以上の空白を配置する必要があります。 エントリを 2 行のステートメント行に分割することはできません。 以下の項目も参照してください。 |
attributes は、テキスト表示に使用される出力属性を示します。 可能な属性:
|
||||
AD-value |
指定可能なセッションパラメータ値については、『パラメータリファレンス』ドキュメントの該当するセクションを参照してください。
注意:
コンパイラは、実際には 1 つの出力フィールドに複数の属性値を受け入れます。 例えば、「AD=BDI
」と指定できます。 ただし、この場合は最後の値のみが適用されます。 示した例では、値 "I" のみが有効になり、出力フィールドは強調表示されます。
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 | 可 | 不可 |
構文要素の説明:
FORM/MAP |
定義済みフォーム/マップレイアウトの使用
このオプションでは、あらかじめ Natural マップエディタで定義しておいたフォーム/マップレイアウトを使用するように指定できます。
|
---|---|
operand1 |
Form/Map 名:
operand1 は、使用するフォーム/マップの名前です。 |
operand2 |
書き込まれるフィールド:
operand2 は、出力するフィールドの名前です。 operand1 が定数で、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