これが分かればもう怖くない!APPENDのコツを紹介!

サポぶろぐ

皆さん、こんにちは!
株式会社アシストでWebFOCUSのサポートを担当しています齋藤です。

前回、WebFOCUSを使いこなす上で必須機能である「HOLDファイル」について公開しましたが、ご確認頂けましたでしょうか?
今回はHOLDファイルを応用した「APPEND」というテクニックをご紹介します。

もし、前回の記事をまだ確認できていない…という方はぜひ先にご確認下さい!
WebFOCUSの必須機能!HOLDファイルを知ろう!

それでは本題に入ります。
「APPEND」とはHOLDファイル同士を縦結合するテクニックのことです。
SQLに詳しい方なら「UNION」と説明した方がイメージしやすいかもしれませんね!👍

WebFOCUSにおいても「HOLDファイル」と「HOLDファイル」を縦に結合し、ひとまとめにして表示することが出来ます。

◆APPENDのイメージ
1つ目のHOLDファイルイメージ : 2020年分の実績テーブルを基に作成

2つ目のHOLDファイルイメージ : 2021年分の実績テーブルを基に作成

◆APPEND後の出力イメージ
2020年、2021年の2年間の売上レポートを作成

このようにHOLDファイル同士を縦に結合して1つのレポートとして出力することが出来ます。
ですが、APPENDを実施する上で守らなければいけないルールがあります。

・結合する各リクエストの項目数を揃える必要があります。
・結合する項目のフォーマットを揃える必要があります。

上記2点が守られていない場合、結合する際にデータがずれて結合されてしまい、おかしなレポートが出てきたりエラーが発生したりしてしまいます…

では、上記2点をしっかり意識した上でAPPENDを実際に実施してみましょう。
まずは APPENDの構文 をご紹介します。

【構文】
 FILEDEF 論理名 DISK 物理ファイル名 (APPEND

【構文解説】
 APPENDは検索対象となるDB側ではなく、WebFOCUS側で各HOLDファイルを結合する処理になるため、一度WebFOCUS側でAPPENDするデータの格納領域を作る必要があります。
それを宣言するコマンドが上記の構文となります。

論理名
HOLDファイル名を指定します。結合するHOLDファイル同士は同じ論理名を指定する必要があります。

 ・物理ファイル名
実際に物理ディレクトリ上に作成されるファイル名を指定します。

 (APPEND
追加形式でデータを格納する指定です。この指定がないとデータが縦結合されず、元のデータに上書きされます。


それでは、App Studioを使用したAPPENDの実施手順をご紹介していきます。

◆App Studioでの実施手順

手順1)
App Studioを起動し、[新規作成] – [プロシジャ] から新規にプロシジャを作成します。

手順2)
画面が切り替わったら [プロシジャビュー] パネルから [コメント] を右クリックし、 [新規作成] – [アロケーション] を選択します。

手順3)
[アロケーション] 画面にてAPPENDの宣言を行います。設定内容は以下の通りです。
論理名          :任意の名前(今回はHLD1)
デバイス        :「ディスク(ファイルと関連付ける)」
アプリケーション :現在プロシジャを作成しているフォルダ
ファイル名      :任意の名前.ftm(今回はHLD1.ftm)
 オプション      :[レコードをファイルの最後に追加する] にチェックを入れ、[次へ] を選択

手順4)
プロシジャを一度保存し、[アロケーション] タブを閉じます。

手順5)
再度、[プロシジャビュー] パネルより [アロケーション] を右クリックし、 [アプリケーションで開く] から [テキストエディタ] を選択します。

手順6)
以下のようにフォルダ指定を削除し、プロシジャを保存して [アロケーション] タブを閉じます。
修正前:FILEDEF HOLD1 DISK フォルダ名/HLD1.ftm (APPEND
修正後:FILEDEF HOLD1 DISK HLD1.ftm (APPEND

手順7)
[プロシジャビュー] パネルより、[アロケーション] を右クリックし、[新規作成] – [ダイアログマネージャ] – [ダイアログマネージャ] を選択します。

手順8)
テキストエディタにて、以下のコマンドを追加します。
-RUN
※ [-RUN] コマンドは、指定した [-RUN] までの処理を明示的に一度実行し、その結果を以降の処理に使用する為の指定となります。

手順9)
ここからは縦結合を行う各HOLDファイルの作成を行います。
[プロシジャビュー] パネルより、[ダイアログマネージャ] を右クリックし、[新規作成] – [レポート] を選択します。

手順10)
データソースを選択後、任意の項目でレポートを作成したら、画面上部で [フォーマット] をクリックします。

手順11)
リボンメニューから [出力フォーマット] をクリックし、[スタイルなしフォーマット] – [Delimited Sequential File(DFIX)] を選択します。
区切り文字などを設定する [出力フォーマットオプション] が表示されますが、そのまま [OK] を選択します。

Delimited Sequential File(DFIX) について

DFIXは、可変長のCSVデータです。
データサイズが小さく、他のフォーマットと比べて処理速度が少し早いフォーマットとなるため、APPENDで指定するフォーマットは「DFIX」を推奨しております。

手順12)
リボンメニューの [ターゲット(PCHOLD)] が [ターゲット(HOLD)] に変わったことを確認し [ターゲット(HOLD)] をクリックします。

手順13)
表示された出力先画面で、以下のように指定し [OK] をクリックします。
ターゲット:一時ファイル
名前      :手順3で設定した論理名 (例:HLD1)

手順14)
[レポート] の直後に [-RUN] コマンドを指定するため、[レポート] を右クリックし [新規作成] – [ダイアログマネージャ] – [ダイアログマネージャ] を選択し、[-RUN] コマンドを記述します。

手順15)
同様に2つ目のHOLDファイルも作成し、 [出力先] 画面にて以下の設定を行います。
ターゲット:一時ファイル
名前      :手順3で設定した論理名 (例:HLD1)

手順16)
最後尾の [レポート] を右クリックし [新規作成] – [ダイアログマネージャ] – [ダイアログマネージャ] を選択し、[-RUN] コマンドを記述します。

プロシジャビューパネルのイメージは上記の画面キャプチャの通りです。

手順17)
[プロシジャビュー] パネルより、最後尾の [ダイアログマネージャ] を右クリックし、[新規作成] – [レポート] を選択します。

手順18)
[データソースの選択] 画面にて、作成したHOLDファイル (HLD1) を選択し、縦結合後のレポートを任意で作成します。


このように、APPENDはHOLDファイルを用いた上級テクニックのため、手順が多く、一部ソースを手書きで記述する必要があり、コツを掴むのに苦労するかもしれません…😅
迷った際や上手くいかない場合は、お気軽にサポートセンターまでお問い合わせください!

尚、今回ご紹介した上記手順で作成したプロシジャや使用したシノニムは以下よりダウンロードが可能です。
今回省略したHOLDファイル作成箇所の確認やソースの確認にお使い下さい。


次回は「VIEWは不要!WebFOCUSでも出来る副問い合わせの方法を紹介!」についてご紹介予定です。
お楽しみに♪

本記事について

WebFOCUSには、多くのコンポーネントが含まれており、利用バージョンや保有ライセンス、利用機能、利用ツール、設定、環境、権限などによって、記事に記載されている内容に該当しないケースや、期待とは異なってしまうケースとなることもありますので、ご留意ください。
また、本サイトについてのご利用案内ご利用条件についても、ご確認いただいたうえで、本サイトをご利用いただくようお願いいたします。

<この記事をかいた人>
株式会社アシスト DX推進技術本部データ活用技術統括部 齋藤 昇太
入社歴 : 2015年新卒入社、7年間 WebFOCUS のサポートを専任
趣味 : プロ野球観戦(日ハムファン)、Apex(マスターランク達成!)
ひとこと : 「こんな記事が欲しい」というご要望お待ちしてまーす!