前回(短期連載❸)ではIBM i Access Client Solutions(以下、ACS)での簡単モダナイゼーションの例として、カーソル制御に関する画面キーワードを紹介しましたが、カーソル制御以外にも有効利用できるキーワードは数多くあります。
そのなかから簡単に利用でき、画面イメージの刷新やオペレーションの向上につながるキーワードをピックアップして紹介しましょう。
SFLENDキーワード
スクロールバーの指定
サブファイル画面では、右端にスクロールバーを表示できます。これは*DS3、*DS4のどちらのサイズでも表示可能です(図表1)。
またACS前提ではなく、IBM i Accessのエミュレータでも使用できますが、サードベンダー製のエミュレータでは対応できない場合があります。
スクロールバーの指定はとても簡単で、SFLENDキーワードのパラメータを変更するだけです。
例)SFLEND(*SCRBAR *SCRBAR)
パラメータの指定方法はほかにもあるので、詳細はマニュアルを参照してください。
指定方法は簡単ですが、注意点があります。スクロールバーはサブファイル・レコードの右端3バイトを使用しますので、サブファイル・レコードの右端3バイトを空ける必要があります。
サブファイルが複数行になる場合でも、すべての行で空けておく必要があります。スクロールバーの表示位置とデータが重なると、コンパイルエラーとなります。
スクロールバーを使うメリットとしては、マウスを利用してスクロールバーを操作することで瞬時にページを移動させられる点と、スクロールバー上下の三角マークをクリックすることで、サブファイルを1行ずつスクロールできます点などが挙げられます。これは、PageUpキーやPageDownキーではサポートできない動きです。
さらにこの改修はプログラムに影響与えないという点で、改修の工数やリスクが少なくて済みます。
PSHBTNFLDキーワード
ファンクションキーをマウス対応に
ユーザー・アプリケーション画面の多くで、最下行にファンクション説明を表示していることと思います。
ACSのホット・スポット機能で、このままでもマウス対応できることはすでに紹介済みですが、もう少しマウスボタンらしい見栄えにすることも可能です(図表2)。
ここでは、PHSBTNFLD(プッシュボタン)というキーワードを使用します。
ホット・スポットの場合は、「F3」や「F12」の部分にカーソルを合わせてクリックしますが、この場合は罫線内の範囲であれば反応します。
PHSBTNFLDは、複数のボタンを1つのフィールドとして定義できます。
この例では、「F3:終了」と「F12:前画面」というボタンをFUNC001というフィールドで定義し、どちらかのボタンが押されたときに、プログラムに制御を戻します。
このとき、FUNC001にはPSHBTNCHCの1番目の値がセットされ、プログラム内でこれを判別して制御できます。
ただし、この方法だとプログラム側もFUNC001を判別する必要がありますが、このケースではPSHBTNCHCにファンクションキーを割り当てているので、プログラムではFUNC001を判別しなくても、従来のファンクションキーの制御をそのまま利用できます。
従ってプログラムの修正は不要で、リコンパイルするだけで対応可能です。もちろん、従来どおりのファンクションキーも有効なので、F3キーを押した場合と「F3:終了」をクリックしたときの動きは同じになります(図表3)。
PHSBTNFLDはファンクションキーを割り当てなくても利用できるので、メニュー番号の選択などにも使用できます。興味があれば、マニュアルを参照して試してください。
プッシュボタンとマウスボタンの違い
プッシュボタンとマウスボタンは同じような機能と思われがちですが、大きく異なる点があります。
それは、プッシュボタンはそのボタン上でのみ有効となる一方、マウスボタンは指定したレコード全域でマウス操作を監視し、指定された事象が発生したときに有効となる点です。
図表4に、マウスボタンの事象を記載しました。
マウス操作可能なキーワードはプッシュボタン以外にもたくさんあり、指定方法を混同すると、思わぬ動きをする場合があるので注意が必要です。
さて、ここまでプログラム修正を伴わないモダナイゼーション・テクニックを紹介してきましたが、次の段階として、少しのプログラム修正で実装できる画面モダナイゼーションを紹介しましょう。
SNGCHCFLDキーワード単一選択項目フィールド
SNGCHCFLD(単一選択項目フィールド)キーワードは、いくつかの選択肢から1つを選択する際に、従来であれば番号入力していた操作をラジオボタンで選択可能にします。
図表5の画面では、2カ所にその選択項目があります。これをSNGCHCFLD キーワードに置き換えると、図表6のようになります。
赤で囲われた2カ所の選択は、マウスによりどちらかを選択できます。各選択項目にラジオボタンを付けたり、色を変えるなど設定を変えることもできます。
次に、画面ファイルの変更箇所を見てみよう。図表7のように、SNGCHCFLDはCHOICEキーワードとセットで使用します。
CHOICEキーワードは選択項目の要素を指定するために使用し、選択されたCHOICEキーワードの第1パラメータの値をSNGCHCFLDのフィールドにセットします。
このフィールドのクリックは初期値ではプログラムに制御を戻しませんが、パラメータを指定すればクリック直後にプログラムに制御を戻すこともできます。
サンプル画面ではほかにも入力フィールドがありますので、実行キー等でプログラムに制御を戻す仕様になっています。
この場合の注意点として、SNGCHCFLDで定義できるフィールド(プログラムに戻されるフィールド)は、2Y0で使用を“B”として定義しなければなりません。
このサンプル・プログラムでは、もとのD1ONXフィールドが1Aで定義されているので、プログラム内では選択番号D1ONX2の数値を文字列のD1ONXにセットする必要があります。
これがプログラムの修正箇所となります。プログラムのロジック部分には影響を与えないので、リスクは低いのではないかと思います。
MLTCHCFLDキーワード
複数選択項目フィールド
MLTCHCFLD(複数選択項目フィールド)キーワードは、複数の項目をクリックで選択できます。各項目にチェックボックスが配置され、クリックで選択/解除を繰り返します(図表8)。
画面ファイルの変更箇所は、図表9のとおりです。
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が前提ではなく、以前から利用できる画面キーワードです。表示に若干の違いはありますが、以前のエミュレータでも機能します。
ちなみにサードベンダー製のエミュレータでは、多くのキーワードが利用できないようなので、注意してください。
著者
金澤 廣志氏
株式会社アイエステクノポート
代表取締役社長
◎短期連載|ACSで簡単モダナイゼーション