QUERY | その3 |
QUERYは、データベースの情報を、非常に簡単に検索処理できるユーティリティーです。
プログラミングをしらなくても対話型で設定をすすめて本格的な報告書の作成ができます。
このページでは、リレーショナル・データベースの典型ともいえるJOIN(結合)ファイルを利用した
QUERY処理を紹介します。
前提
売上明細ファイル(M520)、と得意先マスター(M420)から売上の一覧を作成します。
出力は印刷のかたちですが、ファイルの形でも出力してみます。
QUERY処理としては以下の定義処理を行います。
◆ファイル選択指定
◆結果のフィールドの定義
◆フィールドの選択および順序付け
◆レコードの選択
◆分類フィールドの選択
◆報告書の欄の形式指定
◆計算機能の選択
◆出力タイプおよび出力形式の選択
◆ファイル選択指定
ファイルの選択指定では結合するファイルを指定します。明細ファイルをメインとします。
ファイル選択指定 選択項目を入力して,実行キーを押してください。追加のファイル選択項目を 指定するためには, F9 キーを押してください。 ファイル . . . . . . F520 名前,リストの表示は F4キー ライブラリー . . . WRKLIB 名前, *LIBL, リストの表示は F4キー メンバー . . . . . . *FIRST 名前, *FIRST, リストの表示は F4キー 様式 . . . . . . . . F520R 名前, *FIRST, リストの表示は F4キー ファイルID . . . . T01 A-Z99, *ID ファイル . . . . . . M420 名前,リストの表示は F4キー ライブラリー . . . WRKLIB 名前, *LIBL, リストの表示は F4キー メンバー . . . . . . *FIRST 名前, *FIRST, リストの表示は F4キー 様式 . . . . . . . . M420R 名前, *FIRST, リストの表示は F4キー ファイルID . . . . T02 A-Z99, *ID 終り F3= 終了 F4=プロンプト F5= 報告書 F9= ファイルの追加 F12= 取消し F13= レイアウト F24= キーの続き
結合タイプの指定
結合のタイプは一致レコードを選択します。
結合タイプの指定 選択項目を入力して,実行キーを押してください。 結合のタイプ . . . . . . . 1 1= 一致レコード 2= 1次ファイルと一致したレコード 3= 1次ファイルと一致しないレコード F3= 終了 F5= 報告書 F10= プロセス/前画面 F12= 取消し F13= レイアウト F18= ファイル
ファイルの結合方法の指定
結合フィールドの比較方法の指定で、得意先コードが同じ(EQ)のもと指定します。
メインがT01、サブがT02となっています。
ファイルの結合方法の指定 ファイルの選択項目の比較方法を入力して,実行キーを押してください。 テスト : EQ, NE, LE, GE, LT, GT フィールド テスト フィールド T01.JDTKNO EQ T02.TKTKNO 終り フィールド テキスト LEN DEC T01.JDJUNO 受注 6 0 T01.JDMENO 明細 2 0 T01.JDTKNO 得意先 5 T02.TKNMKJ 得意先名 42 O T02.TKTEL TEL 12 続く ... F3= 終了 F5= 報告書 F10= プロセス/前画面 F11= 名前のみの表示 F12= 取消し F13= レイアウト F18= ファイル F24= キーの続き
◆結果のフィールドの定義
受注金額はどちらのファイルのフィールドにもありません。受注金額=受注数X受注@として新規に定義します。
結果のフィールドの定義 フィールド名または固定情報と演算子を使用して定義を入力し,実行キーを 押してください。 演算子: +, -, *, /, SUBSTR, ||, DATE... フィールド 式 欄見出し LEN DEC JDJUGK T01.JDJUSU*T01.JDJUTK 終り フィールド テキスト LEN DEC T02.TKTEL TEL 12 T01.JDHNNO 品目 6 T01.JDJUSU 受注数 7 0 T01.JDJUTK 受注@ 9 2 続く ... F3= 終了 F5= 報告書 F9= 挿入 F11= 名前のみの表示 F12= 取消し F13= レイアウト F20= 再編成 F24= キーの続き
◆フィールドの選択および順序付け
フィールドの選択および順序付けは、結合するファイルのフィールドすべてと、
先の結果フィールドの定義から選択します。
フィールドの選択および順序付け 報告書に表示したい 500 以内のフィールド名に順序番号 (0-9999) を入力して, 実行キーを押してください。 SEQ フィールド テキスト LEN DEC 10 T01.JDJUNO 受注 6 0 20 T01.JDMENO 明細 2 0 30 T01.JDTKNO 得意先 5 40 T02.TKNMKJ 得意先名 42 O 50 T02.TKTEL TEL 12 60 T01.JDHNNO 品目 6 70 T01.JDJUSU 受注数 7 0 80 T01.JDJUTK 受注@ 9 2 90 T01.JDJUDT 受注日 8 0 100 T01.JDSEDT 請求日 8 0 110 T02.TKSLNO 担当営業 4 120 JDJUGK T01.JDJUSU*T01.JDJUTK 16 2 続く ... F3= 終了 F5= 報告書 F11= 名前のみの表示 F12= 取消し F13= レイアウト F20= 番号つけ直し F21= すべての選択 F24= キーの続き 実行キーを押して確認してください。
◆レコードの選択
レコードの選択では、サンプルとして得意先コードが’10000’以上のものを選択しています。
レコードの選択 比較条件を入力し実行キー。新しい各グループを始めるにはORを指定してください。 テスト: EQ, NE, LE, GE, LT, GT, RANGE, LIST, LIKE, IS, ISNOT... AND/OR フィールド テスト 値 (フィールド, 数値,V文字V , または ...) T01.JDTKNO GT '10000' 終り フィールド テキスト LEN DEC T01.JDJUNO 受注 6 0 T01.JDMENO 明細 2 0 T01.JDTKNO 得意先 5 T02.TKNMKJ 得意先名 42 O T02.TKTEL TEL 12 続く ... F3= 終了 F5= 報告書 F9= 挿入 F11= 名前のみの表示 F12= 取消し F13= レイアウト F20= 再編成 F24= キーの続き
◆分類フィールドの選択
分類フィールドは、受注o、明細oとします。
分類フィールドの選択 32 以内のフィールド名の分類優先順位 (0-999) およびA(昇順)またはD(降順) を入力して,実行キーを押してください。 分類 PRTY A/D フィールド テキスト LEN DEC 1 A T01.JDJUNO 受注 6 0 2 A T01.JDMENO 明細 2 0 T01.JDTKNO 得意先 5 T02.TKNMKJ 得意先名 42 O T02.TKTEL TEL 12 T01.JDHNNO 品目 6 T01.JDJUSU 受注数 7 0 T01.JDJUTK 受注@ 9 2 T01.JDJUDT 受注日 8 0 T01.JDSEDT 請求日 8 0 T02.TKSLNO 担当営業 4 終り F3= 終了 F5= 報告書 F11= 名前のみの表示 F12= 取消し F13= レイアウト F18= ファイル F20= 番号つけ直し F24= キーの続き 実行キーを押して確認してください。
F13キーで、一度報告書のレイアウトを確認します。
報告書レイアウトの表示 報告書の幅 . . . . . : 166 行の位置指定 . . . . . . . 桁移動 . . . . . . . . . . 行 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 受注 明細 得意先 得意先名 000001 999,999 99 XXXXX OOOOOOOOOOOOOOOOOO ****** ******** 報告書レイアウトの終り ********
報告書の幅が132桁で入りきれない166になっていることに注意して下さい。桁移動して確認します。
報告書レイアウトの表示 報告書の幅 . . . . . : 166 行の位置指定 . . . . . . . 桁移動 . . . . . . . . . . 行 +...10....+...11....+...12....+...13....+...14....+...15....+...16....+. 受注数 受注@ 受注日 請求日 担当営業 000001 XXXX 9,999,999 9,999,999.99 99,999,999 99,999,999 XXXX ****** ******** 報告書レイアウトの終り ********
フィールドの選択へ戻り、不要な項目があれば除外します。
◆報告書の欄の形式指定
報告書としての体裁を整えるため、受注b笂付など報告書の欄の形式を整えます。
報告書の欄の形式指定 情報を入力して,実行キーを押してください。 欄見出し: *NONE, または位置合せしたテキスト 欄の フィールド 間隔 欄見出し LEN DEC 編集 T01.JDJUNO 0 受注 6 0 T01.JDMENO 2 明細 2 0 T01.JDTKNO 2 得意先 5 続く ... F3= 終了 F5= 報告書 F10= プロセス/前画面 F12= 取消し F13= レイアウト F16= 編集 F18= ファイル F23= 詳細注記
受注bヘ数字ですが、コードなのでカンマ編集はとりやめます。該当のフィールドでF16キーを押します。
数字フィールドの編集定義 フィールド . . . . . : T01.JDJUNO テキスト . . . . . . : 受注 見出し1 . . . . . . : 受注 見出し2 . . . . . . : 見出し3 . . . . . . : 長さ . . . . . . . . : 6 小数部分 . . . . . . : 0 サンプル . . . . . . : 999,999 選択項目を入力して,実行キーを押してください。 編集オプション . . . 1 1= 数字編集の選択項目 2= 日付または時刻の編集選択項目 3= 編集コード 4= 編集語 F3= 終了 F5= 報告書 F10= プロセス/前画面 F11=サンプル の変更 F12= 取消し F13= レイアウト F16= 編集の除去 F18= ファイル
千単位の区切り文字をなしにします。
数字フィールド編集の記述 フィールド . . . : T01.JDJUNO 選択項目を入力して,実行キーを押してください。 小数点 . . . . . . . . . . . 1 1=. 2=, 3=: 4=\ 5= なし 千単位の区切り文字 . . . . . 5 1=. 2=, 3=' 4=ブランク 5= なし 負符号の表示 . . . . . . . . Y Y=YES, N=NO 左端の負符号 . . . . . . . 右端の負符号 . . . . . . . -
F13キーで報告書レイアウトの表示をさせ確認をします。
下記では受注bフカンマ区切りがなくなっていることに注意して下さい。
報告書レイアウトの表示 報告書の幅 . . . . . : 165 行の位置指定 . . . . . . . 桁移動 . . . . . . . . . . 行 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 受注 明細 得意先 得意先名 000001 999999 99 XXXXX OOOOOOOOOOOOOOOOOOO ****** ******** 報告書レイアウトの終り ********
受注日も99,999,999の形になっているので編集をかえます。
数字フィールドの編集定義 フィールド . . . . . : T01.JDJUDT テキスト . . . . . . : 受注日 見出し1 . . . . . . : 受注日 見出し2 . . . . . . : 見出し3 . . . . . . : 長さ . . . . . . . . : 8 小数部分 . . . . . . : 0 サンプル . . . . . . : 99,999,999 選択項目を入力して,実行キーを押してください。 編集オプション . . . 2 1= 数字編集の選択項目 2= 日付または時刻の編集選択項目 3= 編集コード 4= 編集語 F3= 終了 F5= 報告書 F10= プロセス/前画面 F11=サンプル の変更 F12= 取消し F13= レイアウト F16= 編集の除去 F18= ファイル
報告書の欄の形式指定 情報を入力して,実行キーを押してください。 欄見出し: *NONE, または位置合せしたテキスト 欄の フィールド 間隔 欄見出し LEN DEC 編集 T01.JDJUSU 2 受注数 7 0 T01.JDJUTK 2 受注@ 9 2 T01.JDJUDT 2 受注日 8 0 * 続く ... F3= 終了 F5= 報告書 F10= プロセス/前画面 F12= 取消し F13= レイアウト F16= 編集 F18= ファイル F23= 詳細注記
拡張編集定義をしたフィールドは、「編集」の蘭に’*’が表示されています。
◆計算機能の選択
計算機能の選択では受注金額の合計計算を選択します。
計算機能の選択 オプションを入力して,実行キーを押してください。 1= 合計 2= 平均 3= 最小 4= 最大 5= カウント ---オプション--- フィールド テキスト LEN DEC T01.JDJUNO 受注 6 0 T01.JDMENO 明細 2 0 T01.JDTKNO 得意先 5 T02.TKNMKJ 得意先名 42 O T02.TKTEL TEL 12 T01.JDHNNO 品目 6 T01.JDJUSU 受注数 7 0 T01.JDJUTK 受注@ 9 2 T01.JDJUDT 受注日 8 0 T01.JDSEDT 請求日 8 0 T02.TKSLNO 担当営業 4 1 JDJUGK T01.JDJUSU*T01.JDJUTK 11 2 終り F3= 終了 F5= 報告書 F10=プロセス /前画面 F11= 名前のみの表示 F12= 取消し F13= レイアウト F18= ファイル F23= 詳細注記
◆出力タイプおよび出力形式の選択
報告書の場合は、出力タイプは印刷装置を選択します。
出力タイプおよび出力形式の選択 選択項目を入力して,実行キーを押してください。 出力のタイプ . . . . . . . . . . 2 1= 表示 2= 印刷装置 3= データ・ベース・ファイル 出力の形式 . . . . . . . . . . . 1 1= 明細 2= 合計のみ 行折返し . . . . . . . . . . . . N Y=YES, N=NO 折返し幅 . . . . . . . . . . . ブランク, 1-378 1ページに1レコード . . . . . N Y=YES, N=NO F3= 終了 F5= 報告書 F10= プロセス/前画面 F12= 取消し F13= レイアウト F18= ファイル
ページ幅が132をこえている場合は、198とします。1インチあたり15文字のピッチで印刷されます。
幅を132のままにすると、さきの折り返しの指定がNなので、入りきらない部分が切り捨てられまえす。
印刷装置出力の定義 選択項目を入力して,実行キーを押してください。 印刷装置 . . . . . . . . *PRINT *PRINT, 名前 用紙サイズ: 長さ . . . . . . . . . ブランク, 1-255 幅 . . . . . . . . . . 198 ブランク, 1-378 開始行 . . . . . . . . . ブランク, 1-255 終了行 . . . . . . . . . ブランク, 1-255 行の間隔 . . . . . . . . 1 1, 2, 3 定義の印刷 . . . . . . . N Y=YES, N=NO F3= 終了 F5= 報告書 F10= プロセス/前画面 F12= 取消し F13= レイアウト F18= ファイル
以下、順次次の定義をします。
スプール出力の定義
カバー・ページの指定
ページ見出しとフッターの指定
くわしくは先のQUERY(その2)のページを参照してください。
定義の終わった項目には、’>’の印がついています。
定義のやり直しは、OPTに1を入力して行います。
QUERY 定義 QUERY. . . . . . : TEMP オプション . . . : 作成 ライブラリー . : QTEMP CCSID. . . . . . : 65535 オプション を入力して実行キーを押すか, F21 を押してすべてを選択してください。 1= 選択 OPT QUERY 定義オプション > ファイル選択指定 > 結果のフィールドの定義 > フィールドの選択および順序付け > レコードの選択 > 分類フィールドの選択 照合順序の選択 > 報告書の欄の形式指定 > 計算機能の選択 制御レベルの定義 > 出力タイプおよび出力形式の選択 処理オプションの指定 F3= 終了 F5= 報告書 F13= レイアウト F18= ファイル F21= すべての選択 オプションを選択するか,あるいは F3 を押して QUERY プログラムを保管または
定義が終わると、F3キーでQUERY定義を終了します。
QUERY 終了 選択項目を入力して,実行キーを押してください。 定義の保管 . . . . . Y Y=YES, N=NO 実行オプション . . . 1 1= 対話式で実行 2= バッチで実行 3= 実行しない 定義を保管する場合: QUERY 定義 . . . . TEMP 名前 ライブラリー . . QTEMP 名前,リストは F4キー テキスト . . . . . 権限 . . . . . . . *LIBCRTAUT *LIBCRTAUT, 権限リスト名 *CHANGE, *ALL, *EXCLUDE, *USE F4=プロンプト F5= 報告書 F12= 取消し F13= レイアウト F14=QUERY の定義
画面はQUERY処理の画面に戻ります。
QUERY 処理 選択項目を入力して,実行キーを押してください。 オプション . . . . 1= 作成, 2= 変更, 3= コピー, 4= 削除 5= 表示, 6= 定義の印刷 8= バッチで実行, 9= 実行 QUERY 定義 . . . . TEMP 名前,リストは F4キー ライブラリー . . QTEMP 名前, *LIBL, リストは F4キー F3= 終了 F4=プロンプト F5= 最新表示 F12= 取消し QUERY オプション処理が正常に完了した。
実行結果は印刷待ちに入っています。
WRKSPLFコマンドで一覧を表示し、オプション5で表示できます。
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9 00/09/04 17:22:22 ***売上げ一覧表*** ページ 1 受注 明細 得意先 得意先名 TEL 品目 受注数 受注@ 受注日 請求日 担当営業 受注額 1 1 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 111111 1 11.00 0-08-22 1122 11.00 1 2 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 222222 2 22.00 0-08-22 1122 44.00 1 3 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 333333 3 33.00 0-08-22 1122 99.00 1 4 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 444444 4 44.00 0-08-22 1122 176.00 1 5 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 555555 5 55.00 0-08-22 1122 275.00 1 6 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 666666 6 66.00 0-08-22 1122 396.00 1 7 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 777777 7 77.00 0-08-22 1122 539.00 1 8 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 888888 8 88.00 0-08-22 1122 704.00 1 9 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 999999 9 99.00 0-08-22 1122 891.00 1 10 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 111111 10 110.00 0-08-22 1122 1,100.00 1 11 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 111111 11 111.00 0-08-22 1122 1,221.00 1 12 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 222222 22 222.00 0-00-08 1122 4,884.00 1 13 11111 一番星運送株式会社・・・・・・・・・・; 03-1111-1122 333333 33 333.00 0-00-08 1122 10,989.00 最終合計 合計 21,329.00 * * * 報 告 書 の 終 り * * *
◆出力の選択
QUERYでは画面、印刷のほか、出力をファイルとすることもできます。
出力タイプおよび出力形式の選択で3のデータ・ベース・ファイルとすると結果はファイルに出力されます。
この場合は次の画面で、結果が出力されるファイルの指定をします。
出力タイプおよび出力形式の選択 選択項目を入力して,実行キーを押してください。 出力のタイプ . . . . . . . . . . 3 1= 表示 2= 印刷装置 3= データ・ベース・ファイル 出力の形式 . . . . . . . . . . . 1 1= 明細 2= 合計のみ 行折返し . . . . . . . . . . . . N Y=YES, N=NO 折返し幅 . . . . . . . . . . . ブランク, 1-378 1ページに1レコード . . . . . N Y=YES, N=NO
出力先のファイル(QTEMP/FILE2)を指定します。
データ・ベース・ファイル出力の定義 選択項目を入力して,実行キーを押してください。 (印刷された定義は,出力ファイルのレコード・レイアウトを示す。) ファイル . . . . . . FILE2 名前,リストは F4キー ライブラリー . . . QTEMP 名前,リストは F4キー メンバー . . . . . . *FILE 名前, *FIRST, *FILE, リストは F4キー ファイル中のデータ . 1 1= 新しい ファイル, 2=ファイル の置換え 3= 新しい メンバー, 4=メンバー の置換え 5=メンバー への追加 新しいファイルの場合: 権限 . . . . . . . *LIBCRTAUT *LIBCRTAUT, 権限リスト名 *CHANGE, *ALL, *EXCLUDE, *USE テキスト . . . . . 定義の印刷 . . . . . Y Y=YES, N=NO F3= 終了 F4= プロンプト F5= 報告書 F10= プロセス/前画面 F12= 取消し F13= レイアウト F18= ファイル
定義が終わると、QUERY定義の画面にもどります。F3キーで終了します。
QUERY実行後DFUコマンド、
UPDDTA QTEMP/FILE2
で内容の確認ができます。
ファイル中のデータ処理 モード . . : 変更 様式 . . . . : FILE2 ファイル . : FILE2 *RECNBR: 1 受注 : 1 明細 : 1 得意先 : 11111 得意先名 : 一番星運送株式会社・・・・・・・・・・; TEL : 03-1111-1122 品目 : 111111 受注数 : 1 受注@ : 1100 受注日 : 822 請求日 : 担当営業 : 1122 JDJUGK: 1100 F3= 終了 F5= 最新表示 F6= 様式の選択 F9= 挿入 F10= 入力 F11= 変更
注:入力可能フィールドの下線は省略しています。
前ページ もどる 目次
(C)COPYRIGHT ISHIOKA KATSUHIDE , 2000