HISTOGRAM |
|
|
[MULTI-FETCH-clause] [multi-fetch-factor] [IN] [FILE] view-name |
|||
[PASSWORD=operand2] |
||||||
|
|
[IN]
|
|
|
[SEQUENCE] |
|
|
[VALUE] [FOR] [FIELD] operand4 |
||||||
| [STARTING/ENDING-clause] | ||||||
[WHERElogical-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 インバーテッドリストから直接読み取られます。HISTOGRAM ステートメントは、処理ループを開始します。ただし、HISTOGRAM ステートメントで定義したフィールド以外のフィールドを参照することはできません。
『プログラミングガイド』の次のセクションも参照してください。
注意:
SQL データベースの場合:HISTOGRAM は特定の列に同じ値を持つ行の数を返します。
XML データベースでは、このステートメントを使用できません。
Entire System Server では、このステートメントを使用できません。
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 節:
以下の「MULTI-FETCH 節」を参照してください。 |
view-name |
ビュー名:
ビュー内には ビューのフィールドが、添字範囲付きで定義されたピリオディックグループフィールドまたはマルチプルバリューフィールドの場合、その範囲の最初のオカレンスだけが レポーティングモードでは、 |
PASSWORD=operand2 |
PASSWORD 節:
パスワードで保護された Adabas ファイルを検索する場合は、 |
SEQUENCE |
SEQUENCE 節:
この節は、Adabas、SQL データベースに対してだけ使用できます。 この節を使用して、レコードを昇順または降順のどちらで読み取るかを指定できます。
|
operand4 |
ディスクリプタ:
operand4 として、ディスクリプタ、サブディスクリプタ、スーパーディスクリプタ、またはハイパーディスクリプタが指定できます。 ピリオディックグループに含まれるディスクリプタをインデックス付きまたはなしで指定できます。インデックスなしで指定した場合、ディスクリプタは指定した値がいずれかのオカレンスに見つかった場合に選択されます。インデックス付きで指定した場合、レコードは値がインデックスで指定したオカレンス内に見つかった場合にのみ選択されます。インデックスは定数で指定する必要があります。インデックス範囲は使用できません。 MU のディスクリプタでは、インデックスを指定しないでください。値の位置に関係なく、値がレコードに存在していればディスクリプタは選択されます。 |
STARTING-ENDING-clause |
STARTING/ENDING 節:
開始値と終了値は、キーワード 詳細については、以下の「Starting/Ending 値の指定」を参照してください。 |
WHERE
logical-condition |
WHERE 節:
|
END-HISTOGRAM |
HISTOGRAM ステートメントの終了:
ストラクチャードモードでは、 レポーティングモードの場合、Natural のステートメント |
LOOP |
注意:
この節は、Adabas データベースでのみ使用できます。
MULTI-FETCH |
|
|
|
注意:[MULTI-FETCH OF
multi-fetch-factor] は、データベースタイプ ADA および ADA2 に対して評価されません。デフォルト処理モードが適用されます(プロファイルパラメータ MFSET を参照)。MULTI-FETCH 節は、データベースタイプ ADA2, で使用しても完全に無視されます(『コンフィグレーションユーティリティ』ドキュメントの「データベース管理システムの割り当て」を参照)。
詳細については、『プログラミングガイド』の「MULTI-FETCH 節」(Adabas)
開始値と終了値は、キーワード STARTING および ENDING(または THRU)の後に、処理を開始/終了する値を示す定数またはユーザー定義変数を続けて指定できます。
指定された開始値が存在しない場合は、次に高い値が開始値として使用されます。高い値がまったくないときは、HISTOGRAM ループ内に入りません。
終了値を指定すると、終了値までの(終了値を含む)値が読まれます。
フォーマットが A または B のディスクリプタに対しては、開始値および終了値として 16 進定数を指定できます。
構文オプション 1:
|
|
[STARTING]
|
|
|
|
[VALUES] operand5 |
|
|
|
THRU |
|
operand6 |
|
|
ENDING AT |
構文オプション 2:
[STARTING]
|
|
|
|
[VALUES] operand5 |
TO |
operand6 |
構文オプション 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 | ○ | × | ||||||
構文要素の説明:
注意:READ/HISTOGRAMTHRU/ENDING AT の結果は、Natural とアクセスされたデータベースが別のプラットフォーム上にあり、照合順序が異なる場合、READ/HISTOGRAMTO の結果とは異なる可能性があります。
Natural システム変数 *ISN、*NUMBER および *COUNTER が HISTOGRAM ステートメントで使用できます。
*NUMBER および *ISN は、WHERE 節の評価後に設定されます。これらを WHERE 節の論理条件に使用しないでください。
| システム変数 | 説明 |
|---|---|
*NUMBER |
システム変数 SQL データベースについては、『システム変数』ドキュメントの「SQL データベースに対する *NUMBER」を参照してください。 |
*ISN |
システム変数
|
*COUNTER |
システム変数 *COUNTER には、読まれた値の個数の合計が入ります(WHERE 節の評価後)。
|
** 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