メニューボタン
IBMi海外記事2017.05.12

CPYTOIMPF のソート・オプション

Ted Holt 著

Copy to Import File (CPYTOIMPF) コマンドのアイデアを思い付いた人が誰であろうと、ぜひ十分な報酬を得ていてほしいと思います。このコマンドによって省かれた数えきれない人たち(もちろん私も含めて)の時間と労力を考えると、深い感謝の気持ちを感じざるを得ません。さて、そんなCPYTOIMPFコマンドにORDERBY パラメーターが追加され、さらに便利になったことを皆さんと共有したいと思います。

CPYTOIMPF は、単一フォーマットのデータベース・ファイル (テーブル、物理ファイル、ビュー、または論理ファイル) を、別のシステムまたはアプリケーションが受け入れ可能な形式でストリーム・ファイルまたは物理ファイルにコピーします。おそらく、このコマンドの最も一般的な使用法は、Microsoft Excel へインポートするために、コンマ区切り形式のCSVファイルを作成することでしょう。さらに皆さんはこのコマンドの内部の動きを理解することで、より上手に使うことができると思います。

CPYTOIMPF を実行する場合、基礎となるプログラムは動的 SQL ステートメントを作成します。つまり、文字列変数で SELECT ステートメントを生成し、PREPARE ステートメントを使用して文字列を実行可能ステートメントに変換し、ステートメントを実行します。ステートメントは文字列変数で作成されるため、通常 SQL クエリの ORDER BY に続く句を ORDERBY パラメーターの末尾に追加できます。

以下の各センテンスは、SQL 構文がORDER BY 式に従うことを許可しています。

技術情報code01

これらのオプションのほとんどは CPYTOIMPFのコンテキストでは適用されません。例えば、CPYTOIMPF は検索されたデータを変更しないため、FOR UPDATE は使い物になりません。上記の中で使える便利なものは FETCH FIRST n ROWS と SKIP LOCKED DATA です。FETCH FIRST を使用してコピーする行の数を制限できますし、SKIP LOCKED DATA は他のジョブでロックされたデータを無視します。

ではここで CPYTOIMPF コマンドの例を挙げます。通常のシステムには物理ファイル QIWS/QCUSTCDT があるため、いつでも実験可能です。このコマンドは物理ファイルのデータを現行ディレクトリーのストリーム・ファイル custcdt-1.csv にコピーします。

技術情報code02

ORDERBY パラメーターに注目してください。SQL SELECT が生成されると、 ORDER BY の直後にstate, cityという値が配置されます。さらに例を挙げます。

技術情報code03

この例ではデータを到着順にコピーします (相対レコード番号順など)。

技術情報code04

baldueという項目の降順にコピーします。

技術情報code05

baldueの降順にコピーし、最初の 5行 (レコード)のみ取得します。

技術情報code06

6列目と、5列目の順でデータの中をソートします。QCUSTCDT の5列目はcity、 6列目は stateであるため、これは最初の例と同じ意味になります。

ほんとに素晴らしいユーティリティーですね。

あわせて読みたい記事

PAGE TOP