iBIアライアンス提供 「アプリケーションのモダナイゼーション 最初の一歩」-第3回 少しの修正で画面の機能アップー | IBM i 総合情報サイト

iBIアライアンス提供 「アプリケーションのモダナイゼーション 最初の一歩」-第3回 少しの修正で画面の機能アップー


iBIアライアンスはIBM i 市場における最強の専門家集団として、常にお客様システムのあるべき姿を研究し、技術的な研鑽を重ねています。参加11社は主軸とする事業領域や得意技術はそれぞれ異なるものの、IBM i への特別な思い入れと市場への強い危機感を共有しています。そんなグループが今後を見据えて定期的に開催している「勉強会」・・・IBM i の「これから」に必ず役立つ技術を習得する場で紹介されている内容の一部を連載形式でご紹介します。

当連載ではこれまでカーソル制御に関する画面キーワードをご紹介しましたが、カーソル制御以外にも沢山の有効利用可能なキーワードがあります。その中から簡単に使えて、画面イメージの刷新やオペレーションの向上につながるものをピックアップしてご紹介します。

スクロールバーは超簡単

サブファイル画面において、右端にスクロールバーを表示する事ができます。これは*DS3、*DS4のどちらのサイズでも表示する事ができます。また、ACS前提ではなく、i-Accessのエミュレータでも使う事ができますが、サードベンダー製のエミュレータでは対応できないものあります。

サブファイルのスクロールバー

スクロールバーの指定はとても簡単で、SFLENDキーワードのパラメータを変更するだけです。
例)SFLEND(*SCRBAR *SCRBAR)
パラメータの指定方法は他にもありますので、詳細はマニュアルをご覧ください。

指定は簡単ですが注意点があります。

  • スクロールバーはサブファイル・レコードの右端4バイトを使用するので、サブファイル・レコードの右端4バイトを空ける必要があります。
  • サブファイルが複数行になる場合でも、全ての行で空けておく必要があります。
  • スクロールバーの表示位置とデータが重なるとコンパイルエラーとなります。

スクロールバーを使うメリットとしては、マウスを利用してスクロールバーを操作する事で瞬時にページを移動させる事ができる点と、スクロールバー上下の三角マークをクリックする事で、サブファイルを1行ずつスクロールする事もできます。
これはPageUpキーやPageDownでは出来ない動きです。さらに、この改修はプログラムに影響与えないという点で改修の工数やリスクが少なくて済みます。

ファンクションキーをマウス対応に(PSHBTNFLD)

ユーザー・アプリケーション画面の多くで、最下行にファンクション説明を表示している事と思います。
ACSのホットスポット機能で、このままでもマウス対応できる事は既にご紹介済みですが、もう少しマウスボタンらしい見栄えにする事もできます。

ファンクションキーのマウス操作


これはPHSBTNFLD(プッシュボタン)というキーワードを使用しています。ホットスポットの場合は、「F3」や「F12」の部分にカーソルを合わせてクリックしますが、この場合は、罫線内の範囲であれば反応します。

PHSBTNFLDは複数のボタンをひとつのフィールドとして定義できます。この例では、「F3:終了」と「F12:前画面」というボタンをFUNC001というフィールドで定義し、どちらかのボタンが押された時に、プログラムに制御を戻します。この時、FUNC001にはPSHBTNCHCの一番目の値がセットされプログラム内でこれを判別して制御する事ができます。しかし、この方法だとプログラム側もFUNC001を判別する必要がありますが、このケースの場合は、PSHBTNCHCにファンクションキーを割り当ているので、プログラムではFUNC001を判別しなくても、従来のファンクションキーの制御をそのまま利用できます。
従って、プログラムの修正は不要で、リコンパイルするだけで対応可能となります。もちろん、従来通りのファンクションキーも有効なので、F3キーを押した場合と「F3:終了」をクリックした時の動きは同じとなります。

PSHBTNFLDでコマンド説明をボタン化


PHSBTNFLDはファンクションキーの割り当てをしなくても利用できるので、メニュー番号の選択などにも利用する事ができます。興味のある方はマニュアルをご覧になって試してみてください。

プッシュボタン(PSHBTNFLD)とマウスボタン(MOUBTN)

プッシュボタンとマウスボタンは同じような機能と思われがちですが、大きく異なる点があります。
それは、プッシュボタンはそのボタン上でのみで有効となりますが、マウスボタンは指定したレコード全域でマウス操作を監視し、指定された事象が発生した時に有効となる点です。

マウスボタンの事象には下記のものがあります。

  • *ULP シフトされていない左ボタンを押した
  • *ULR シフトされていない左ボタンを放した
  • *ULD シフトされていない左ボタンをダブルクリックする
  • *UMP シフトされていない中央ボタンを押した
  • *UMR シフトされていない中央ボタンを放した
  • *UMD シフトされていない中央ボタンをダブルクリックする
  • *URP シフトされていない右ボタンを押した
  • *URR シフトされていない右ボタンを放した
  • *URD シフトされていない右ボタンをダブルクリックする
  • *SLP シフトされた左ボタンを押した
  • *SLR シフトされた左ボタンを放した
  • *SLD シフトされた左ボタンをダブルクリックする
  • *SMP シフトされた中央ボタンを押した
  • *SMR シフトされた中央ボタンを放した
  • *SMD シフトされた中央ボタンをダブルクリックする
  • *SRP シフトされた右ボタンを押した
  • *SRR シフトされた右ボタンを放した
  • *SRD シフトされた右ボタンをダブルクリックする

マウス操作可能なキーワードはプッシュボタン以外にもたくさんあり、指定方法を混同したりすると思わぬ動きをする事があるので注意して使用しましょう。

さて、ここまでプログラム修正を行わないモダナイゼーション・テクニックをご紹介しましたが、次の段階として、少しのプログラム修正で実装できる画面モダナイゼーションをご紹介します。

SNGCHCFLD (単一選択項目フィールド) キーワード

このキーワードは、いくつかの選択肢からひとつを選択する際に、従来であれば番号入力を行っていたものを、ラジオボタンで選択可能にするキーワードです。

この画面では、2か所にその選択項目があります。

これをSNGCHCFLD (単一選択項目フィールド) キーワードに置き換えると、次のようになります。
赤で囲われた2か所の選択は、マウスによりどちらかを選択できます。各選択項目にラジオボタンを付けたり、色を変えるなど設定を変える事もできます。

画面ファイルの変更箇所を見てみましょう。

選択フィールドをSNGCHCFLDで置き換え

SNGCHCFLDはCHOICEキーワードとセットで使います。CHOICEキーワードは、選択項目の要素を指定する為に使い、選択されたCHOICEキーワードの第一パラメータの値をSNGCHCFLDのフィールドにセットします。このフィールドのクリックは初期値ではプログラムに制御を戻しませんが、パラメータの指定でクリック直後にプログラムに制御を戻す事もできます。サンプル画面では他にも入力フィールドがあるので、実行キー等でプログラムに制御が戻すという仕様になっています。

注意点として、SNGCHCFLDで定義できるフィールド(プログラムに戻されるフィールド)は2Y0で使用を”B”として定義しなければなりません。このサンプル・プログラムでは、元のD1ONXフィールドが1Aで定義されている為、プログラム内では選択番号D1ONX2の数値を文字列のD1ONXにセットする必要があります。
これがプログラムの修正箇所となります。
プログラムのロジック部分には影響を与える事はないので、リスクは低いのではないでしょうか。

MLTCHCFLD (複数項目選択フィールド) キーワード

このキーワードは、複数の項目をクリックで選択する事ができます。
各項目にチェックボックスが配置され、クリックで選択/解除を繰り返します。

画面ファイルの変更箇所は次の通りです。

選択フィールドをMLTCHCFLDで置き換え

MLTCHCFLDはCHOICEキーワードとCHCCTLキーワードと組み合わせて使います。
MLTCHCFLDの定義フィールド「SELECT」には、選択されたフィールドの数が入り、各選択項目の「CTLnn」フィールドには、選択された場合は1が、選択されていない場合は0が入ります。

サンプル画面の場合、

SELECT=5
CTL01=1
CTL02=1
CTL03=0
CTL04=0
CTL05=1
CTL06=1
CTL07=0
CTL08=0
CTL09=1

となるので、プログラム側では、これに基づいて処理を行う事ができます。

MLTCHCFLDやCHCCTLのフィールド属性は決まっているので、元のプログラムを属性が異なる場合は、プログラム側で変更する必要がありますが、基本的な処理は変わらないので修正も少なくて済みます。

SNGCHCFLDやMLTCHCFLDは今回ご紹介したシンプルな使い方だけでなく、選択項目の色指定や、非選択項目の設定など多くの機能があります。
マニュアルを参照して有効に使って頂きたいと思います。

また、スクロールバー、SNGCHCFLD、MLTCHCFLDはACSが前提ではなく、以前から利用できる画面キーワードです。
表示に若干の違いはありますが、以前のエミュレータでも機能します。

(注意点)サードベンダー製のエミュレータでは、多くのキーワードが利用できないようなので、ご注意ください

※本連載はIBM i 専門誌i Magazineに詳細版が掲載されます。ぜひそちらもご購読くださいませ。

<ご寄稿>
株式会社 アイエステクノポート
本社:〒105-0012 東京都港区芝大門1-3-4 ラウンドクロス芝大門 8階
設立:1990年7月17日
事業内容:IBM i 搭載Power Systems(System i,i5,iSeries,AS/400)向けパッケージ・ツールの開発・販売(UT/400,SS/Tool,S/D Manager)、IBM製品の販売、アプリケーションソフトの開発・販売、情報システムのコンサルティング、情報システム運用・保守、インターネット/イントラネット構築

URL:www.istechnoport.co.jp

Copyright © IGUAZU