WebFOCUSの必須機能!HOLDファイルを知ろう!

2024年3月23日サポぶろぐ

こんにちは!
株式会社アシストでWebFOCUSのサポートを担当している吉江です。

残暑もいよいよ退き、秋本番になってまいりました!
毎年なんだかんだ"食欲の秋"になってしまうのですが、今年はお家時間を最大限活用し、"読書の秋"として感性を磨いて
いけたらとひっそり思っております。

さて、皆様HOLD」という言葉に聞き覚えはありませんか?

HOLDは一言で言うと、一時ファイルを作成する機能です。
こう聞くと「そうなんだ!」くらいで終わってしまうと思いますが、実はこのHOLDはWebFOCUSでレポート開発を行う上
で頻繁に使用する、非常に大切な機能なのです!

HOLDを使用すると、以下のようなことを実現できます。

・任意の軸で集計した値を取得した一時ファイルを作成し、このHOLDファイルを使ってレポートを作成できる
・条件で絞ったデータをHOLDし、別レポートの条件に使用できる
・HOLDしたデータの値を変数に格納できる
・HOLDを応用すると、一時ファイル同士を縦結合し、縦持ちのデータを作成できる
 (OracleでいうUnionのような動作)

これらを行うためには、しっかりとHOLDの仕方や特徴を理解する必要があります!
ぜひ、この記事でHOLDの基礎を知って頂ければと思います。

HOLD機能とは?

レポート実行時に画面上に結果を表示するのではなく、WebFOCUSサーバ側の一時領域に出力結果(HOLDファイル)
を出力する機能
です。

HOLDするとレポートのマスターファイルとFTMファイル(データファイル)が一時領域(例:\ibi\srv82\wfs\edatemp\
tsXXXXXX配下)に作成され、処理が終了すると自動で削除されます。 

 ※HOLD指定時にあえて出力先ディレクトリを指定することで、一時領域ではなく、任意のディレクトリにHOLDファイルを出力し保持できます。
  この場合は、自動では削除されません。

この一時領域に作成されたHOLDファイルを利用してレポートを作成するなど、二次検索を行うことが可能です。
これによりHOLDを利用することで、1回の検索では実現できないレポートの作成を行うことができます!

HOLDの特徴

HOLDには、以下のような主な特徴があります。
ここに記載されている特徴は、押さえておいて頂けると嬉しいです

・作成されるファイルの出力形式
 出力フォーマットを何も指定せずにHOLDした場合は、BINARY形式のデータが出力されます。

・同時に複数実行された際の動作
 WebFOCUSでは1セッションごとにエージェントが動作し、エージェントごとに異なる一時領域にHOLDファイルが
 生成されます。
 このため同時に複数の実行が行われた場合にも、一時領域に作成されたHOLDファイルは上書きが発生しません。

・パフォーマンス
 HOLD出力を行うとディスクI/Oが発生するため、データ量が多いとパフォーマンスの低下を招く可能性があります。
 項目数を絞り込む、条件を指定し必要なデータのみを抜き出すなどして、必要なデータのみをHOLD出力するように
 心掛けましょう!

HOLDの指定方法

App StudioとInfoAssistでは、HOLDの指定方法が異なります。
それぞれでの指定方法を以下に記載します。

App Studio

1)レポートキャンバスでHOLDしたいリクエストを作成します。

2)画面上部で[フォーマット]をクリックします。

3)リボンメニューから[出力フォーマット]をクリックし、[スタイルなしフォーマット]-[ファイル定義付きバイナリ
  データ(BINARY)]を選択します。 

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

5)表示された出力先画面で、以下のように指定し[OK]をクリックします。
   ターゲット:一時ファイル
   名前:任意の一時ファイル名(例:HLD1)
 
   ※ここで[名前]右横にある[…]を選択し一時ファイル名を指定した場合、一時領域ではなく任意のディレクトリ
   配下にHOLDファイルが作成される動作となります。

   以上でHOLDの設定は終了です。

6)上記で作成したHOLDファイルを使用し二次検索を行う際は、同じプロシジャ中で新しくレポートを作成します。
   プロシジャビューパネルを開き、HOLDしたレポートを右クリック – [新規作成]-[レポート]をクリックします。
 

7)データソースの選択画面で、手順5で指定したHOLDファイル名(例:HLD1)を選択し[OK]をクリックします。
 

8)表示されたレポートキャンバス画面から、HOLDファイルを基にしたレポートを作成できます。

InfoAssist

1)レポートキャンバスでHOLDしたいリクエストを作成します。

2)画面上部で[ホーム]をクリックし、リボンメニューの[ファイル]をクリックします。
 

3)表示された一時ファイル画面で、以下のように指定し[保存]をクリックします。
   ファイル名:任意の一時ファイル名(例:HLD1)
 
  ※ここで左端のツリーよりフォルダを選択した場合、一時領域ではなく任意のディレクトリ配下にHOLDファイル 
   が作成される動作となります。

  以上でHOLDの設定は終了です。

4)手順3までで作成したHOLDファイルを使用し二次検索を行う際は、InfoAssist画面下部
   に表示される[レポートの作成]をクリックします。
 

5)表示されたレポートの作成画面から、HOLDファイルを基にしたレポートを作成できます。

今回は上記内容を通して、HOLDの基礎を学んで頂きました!
次回は実践編として、HOLDを用いたOracleでいうUnionのような縦結合機能(APPEND)についてご紹介します。

APPENDはとても便利ですが、縦結合するためのHOLDファイルの作り方などに慣れるまでの間は苦戦する方も
多い機能となります。

HOLDとAPPENDを使いこなしスムーズにレポート開発を行って頂けるよう、コツを伝授できればと思いますので、
次回の「これが分かればもう怖くない!APPENDのコツ」を是非楽しみにお待ちください!!

 


 <この記事を書いた人>

 株式会社アシスト DX推進技術本部データ活用技術統括部 
 吉江 舞音(よしえ まいね)

 入社歴  :2011年新卒入社、10年間WebFOCUSのサポートを専任
 趣味   :テニス(週2で頑張ってます!)、観劇(ミュージカルが好き♡)
 ひとこと :テニスで満身創痍のため、マッサージガンを買おうと画策中です!