HISTOGRAM
|
ALL
|
[MULTI-FETCH-clause ] [multi-fetch-factor] [IN ] [FILE ] view-name |
||||
(operand1) | ||||||
[PASSWORD= operand2]
|
||||||
[IN ]
|
ASC ENDING |
[SEQUENCE ] |
||||
DESC ENDING |
||||||
VARIABLE operand3 |
||||||
DYNAMIC operand3 |
||||||
[VALUE ] [FOR ] [FIELD ] operand4 |
||||||
[STARTING/ENDING-clause] | ||||||
[WHERE logical-condition]
|
||||||
statement | ||||||
END-HISTOGRAM (ストラクチャードモードのみ)
|
||||||
[LOOP] (レポーティングモードのみ)
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BACKOUT TRANSACTION | BEFORE BREAK PROCESSING | DELETE | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION DATA | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE
関連機能グループ:「データベースへのアクセスと更新」
HISTOGRAM
ステートメントは、ディスクリプタ、サブディスクリプタ、またはスーパーディスクリプタとして定義されているデータベースフィールドの値を読むために使用します。 値は Adabas インバーテッドリストまたは VSAM インデックスから直接読み取られます。
HISTOGRAM
ステートメントは、処理ループを開始します。ただし、HISTOGRAM
ステートメントで定義したフィールド以外のフィールドを参照することはできません。
『プログラミングガイド』の「HISTOGRAM ステートメント」も参照してください。
注意:
SQL データベースの場合:HISTOGRAM
は特定の列に同じ値を持つ行の数を返します。
DL/I データベースまたは Entire System Server では、このステートメントを使用できません。
VSAM データベースに適用される場合、HISTOGRAM
ステートメントは KSDS および ESDS に対してのみ有効です。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | N | P | I | B * | 可 | 不可 | ||||||||||||
operand2 | C | S | A | 可 | 不可 | |||||||||||||||
operand3 | S | A | 可 | 不可 | ||||||||||||||||
operand4 | S | A | N | P | I | F | B | D | T | L | 不可 | 不可 |
*operand1 のフォーマット B は、4 以下の長さでのみ使用できます。
構文要素の説明:
operand1 / ALL |
処理ループの制限:
このステートメントでは、指定した制限が、
注意: |
|
---|---|---|
MULTI-FETCH-clause | 以下の「MULTI-FETCH 節」を参照してください。 | |
view-name |
view-name として、 ビュー内には ビューのフィールドが、添字範囲付きで定義された PE または MU の場合、その範囲の最初のオカレンスだけが レポーティングモードでは、view-name を DDM の名前にすることもできます。 |
|
PASSWORD=operand2 |
PASSWORD 節:
パスワードで保護された Adabas ファイルを検索する場合は、 |
|
SEQUENCE |
SEQUENCE 節:
この節は、Adabas、VSAM、SQL データベースに対してだけ使用できます。 この節を使用して、レコードを昇順または降順のどちらで読み取るかを指定できます。
|
|
operand4 |
ディスクリプタ:
operand4 として、ディスクリプタ、サブディスクリプタ、スーパーディスクリプタ、またはハイパーディスクリプタが使用できます。 ピリオディックグループに含まれるディスクリプタをインデックス付きまたはなしで指定できます。 インデックスなしで指定した場合、ディスクリプタは指定した値がいずれかのオカレンスに見つかった場合に選択されます。 インデックス付きで指定した場合、レコードは値がインデックスで指定したオカレンス内に見つかった場合にのみ選択されます。 インデックスは定数で指定する必要があります。 インデックス範囲は使用できません。 MU のディスクリプタでは、インデックスを指定しないでください。値の位置に関係なく、値がレコードに存在していればディスクリプタは選択されます。 |
|
STARTING-ENDING-clause |
STARTING/ENDING 節:
開始値と終了値は、キーワード 詳細については、以下の「Starting/Ending 値の指定」を参照してください。 |
|
WHERElogical-condition |
WHERE 節:
WHERE 節は、追加の選択条件(logical-condition)を指定するために使用できます。この条件は、値が読み取られた後、値に対する処理が実行される前に評価されます(
logical-condition の構文については、『プログラミングガイド』の「論理条件基準」で説明しています。 システム変数
Natural システム変数
|
|
*NUMBER |
システム変数 SQL データベースについては、『システム変数』ドキュメントの「SQL データベースに対する *NUMBER」を参照してください。 |
|
*ISN |
システム変数
|
|
*COUNTER | システム変数 *COUNTER には、読まれた値の個数の合計が入ります(WHERE 節の評価後)。
|
|
END-HISTOGRAM | HISTOGRAM ステートメントを終了するには、Natural の予約キーワード END-HISTOGRAM を使用する必要があります。
|
注意:
この節は、Adabas または DB2 データベースでのみ使用できます。
MULTI-FETCH |
ON |
||||
OFF |
|||||
OF multi-fetch-factor |
詳細については、『プログラミングガイド』の「MULTI-FETCH 節」(Adabas)または『データベース管理システムインターフェイス』ドキュメントの「Natural for DB2」で「複数行の処理」(SQL)を参照してください。
開始値と終了値は、キーワード STARTING
および ENDING
(または、THRU
)の後に、処理を開始/終了する値を示す定数またはユーザー定義変数を続けて指定できます。
指定された開始値が存在しない場合は、次に高い値が開始値として使用されます。 高い値がまったくないときは、HISTOGRAM
ループ内に入りません。
終了値を指定すると、終了値までの(終了値を含む)値が読まれます。
フォーマットが A または B のディスクリプタに対しては、開始値および終了値として 16 進定数を指定できます。
構文オプション 1:
1 |
[STARTING ]
|
WITH |
[VALUES ] operand5 |
THRU |
operand6 | |||||||||
FROM |
ENDING AT |
構文オプション 2:
2 |
[STARTING ]
|
WITH FROM |
[VALUES ] operand5 |
TO |
operand6 |
構文オプション 3:
3 |
< | operand5 | ||
LT |
||||
LESS THAN |
||||
> | ||||
GT
|
||||
GREATER THAN |
||||
<=
|
||||
LE
|
||||
LESS EQUAL |
||||
>=
|
||||
GE
|
||||
GREATER EQUAL |
注意:
図 3 の比較演算子を使用した場合は、オプション ENDING AT
、THRU
、および TO
は使用できません。 これらの比較演算子は READ
ステートメントにも有効です。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand5 | C | S | A | U | N | P | I | F | B | D | T | L | 可 | 不可 | ||||||
operand6 | C | S | A | U | N | P | I | F | B | D | T | L | 可 | 不可 |
構文要素の説明:
** Example 'HSTEX1S': HISTOGRAM (structured mode) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 CITY END-DEFINE * LIMIT 8 HISTOGRAM EMPLOY-VIEW CITY STARTING FROM 'M' DISPLAY NOTITLE CITY 'NUMBER OF/PERSONS' *NUMBER *COUNTER END-HISTOGRAM * END
CITY NUMBER OF CNT PERSONS -------------------- ----------- ----------- MADISON 3 1 MADRID 41 2 MAILLY LE CAMP 1 3 MAMERS 1 4 MANSFIELD 4 5 MARSEILLE 2 6 MATLOCK 1 7 MELBOURNE 2 8
レポーティングモードの例:HSTEX1R。
** Example 'HSTDSCND': HISTOGRAM (with DESCENDING) *********************************************************************** DEFINE DATA LOCAL 1 EMPL VIEW OF EMPLOYEES 2 NAME END-DEFINE * HISTOGRAM (10) EMPL IN DESCENDING SEQUENCE FOR NAME FROM 'ZZZ' DISPLAY NAME *NUMBER END-HISTOGRAM END
Page 1 05-01-13 13:41:03 NAME NMBR -------------------- ----------- ZINN 1 YOT 1 YNCLAN 1 YATES 1 YALCIN 1 YACKX-COLTEAU 1 XOLIN 1 WYLLIS 2 WULFRING 1 WRIGHT 1
** Example 'HSTVSEQ': HISTOGRAM (with VARIABLE SEQUENCE) *********************************************************************** DEFINE DATA LOCAL 1 EMPL VIEW OF EMPLOYEES 2 NAME * 1 #DIR (A1) 1 #STARTVAL (A20) END-DEFINE * SET KEY PF3 PF7 PF8 * MOVE 'ADKINSON' TO #STARTVAL * HISTOGRAM (9) EMPL FOR NAME FROM #STARTVAL WRITE NAME *NUMBER IF *COUNTER = 5 MOVE NAME TO #STARTVAL END-IF END-HISTOGRAM * #DIR := 'A' * REPEAT HISTOGRAM EMPL IN VARIABLE #DIR SEQUENCE FOR NAME FROM #STARTVAL MOVE NAME TO #STARTVAL INPUT NO ERASE (IP=OFF AD=O) 15/01 NAME *NUMBER // 'Direction:' #DIR // 'Press PF3 to stop' / ' PF7 to go step back' / ' PF8 to go step forward' / ' ENTER to continue in that direction' /* IF *PF-KEY = 'PF7' AND #DIR = 'A' MOVE 'D' TO #DIR ESCAPE BOTTOM END-IF IF *PF-KEY = 'PF8' AND #DIR = 'D' MOVE 'A' TO #DIR ESCAPE BOTTOM END-IF IF *PF-KEY = 'PF3' STOP END-IF END-HISTOGRAM /* IF *COUNTER(0250) = 0 STOP END-IF END-REPEAT END
Page 1 05-01-13 13:50:31 ADKINSON 8 AECKERLE 1 AFANASSIEV 2 AHL 1 AKROYD 1 ALEMAN 1 ALESTIA 1 ALEXANDER 5 ALLEGRE 1 MORE
Page 1 05-01-13 13:50:31 ADKINSON 8 AECKERLE 1 AFANASSIEV 2 AHL 1 AKROYD 1 ALEMAN 1 ALESTIA 1 ALEXANDER 5 ALLEGRE 1 AKROYD 1 Direction: A Press PF3 to stop PF7 to go step back PF8 to go step forward ENTER to continue in that direction