市場における最強の専門家集団として、常にお客様システムのあるべき姿を研究し、技術的な研鑽を重ねています。特別な思い入れと市場への強い危機感を共有しています。「これから」に必ず役立つ技術を習得する場で紹介されている内容の一部を連載形式でご紹介します。第4回はWindows系のアプリケーションではおなじみのメニューバーの実装についてご紹介します。メニューバーを追加してみようオープン系のアプリケーションでは標準と言えるメニューバーですが、これもエミュレータ画面で実装する事ができます。今までご紹介してきたキーワードと比べて、修正箇所は多くなりますが、オープン系アプリケーションに慣れたユーザーには違和感なく使って頂ける機能であり有用ではないかと思います。従来の24x80(*DS3)画面でもメニューバーを使う事は可能ですが、メニューバーが1・2行目を占有する事に注意しましょう。ここでは、*DS3で出来た入力画面を*DS4に拡張して、メニューバーを追加する方法をご紹介します。この画面にメニューバーを追加する為には、メニューバー内の機能を決める必要があります。現行のファンクションキーから、メニューバーへ移行できるものを選択します。※処理切替メニューに設定されるプログラムは、別マスターに登録されているものを使い、動的に変更される事を考慮します。最初に画面サイズを拡張して、メニューバーの表示エリアを確保します。*DS3から*DS4へ拡張し、画面全体を2行分下にずらして、1・2行目を空けます。これで、メニューバーの表示エリアが確保されました。次に、画面ファイルのソースにメニューバーの記述を追加します。メニューバーを定義するには、MNUBARレコード1つと複数のPULLDOWNレコードが必要となります。これらのレコードを追加し、メニューバーを表示する元のレコードにはMNUBARDSPキーワードを追加します。MNUBARSW1はメニューバーと通常画面のカーソル・フォーカス切替の為に割り当てるファンクションキーを指定しています。これはファイル・レベル・キーワードです。MNUBARレコードは、メニューバー要素とそれぞれに我当するレコード様式名を指定し、表示色などの属性も指定します。メニューバーの要素はMNUBARCHCキーワードで指定します。この場合、3つのプルダウン・メニューを設定しています。MENU01~MENU03レコードは、メニューバーの各要素に該当するプルダウン・メニューの内容を定義します。MENU01とMENU02の内容は固定なので、CHOICEキーワードで選択番号と表示文字列を指定しますが、MENU03の内容は動的に変更したい為、表示名をフィールドとして定義しプログラムでセットするようにします。MENU01~MENU03それぞれに定義されるフィールドは、同名のN01としていますが、それぞれ別名にする事も可能です。この例では同名で定義しています。次にメニューバーを表示したい画面にMNUBARDSPキーワードを指定します。これでその画面と一緒にメニューバーが表示され、オペレーションできるようになります。MNUBARDSPキーワードには、表示したいメニューバー・レコードの様式名と、メニューバーが選択された際に戻される要素を指定します。この場合、MENUBARレコードが表示するメニューバー・レコードで、MENUフィールドにはメニューバーの要素番号(MNUBARCHCの値)、INPTフィールドには各PULLDOWNレコードの要素番号(CHOICEの値)が入る設定になっています。この例では、FMT10をEXFMTするとメニューバーが表示され、メニューバーで「処理」の「終了」が選択された場合、MENUには1が入り、INPTには3が入ってプログラムに戻ります。プログラム側の修正箇所メニューバーの3番目が動的に内容を変えるので、プログラムの初期処理でこれをセットします。全て固定の場合、この処理は不要です。FMT10画面のEXFMT直後で、MENU及びINPTの値により処理を分岐させます。このプログラムの例だと、メニューバーの各処理は元々ファンクションキーに割り当てられていたものなので、修正は簡単です。F5で3番が選択された処理メニューバーを表示する為の2行分のスペースが確保できるかが重要になってきますが、今回の例のように画面サイズを*DS4に拡張すれば、そのスペースも容易に確保する事ができます。その他考慮する点として、メニューバーはMNUBARレコードと、PULLDOWNレコードでそれぞれ定義するので、それぞれのレコード内のフィールドに対して入出力を行う場合は、そのレコードに対してREADやWRITEを行う必要があります。今回の例では、メニュー3の「処理切替」メニューの内容をプログラム内でセットするので、下記のコーディングが追加されています。N03Pxxは選択された際に実行されるプログラムIDN03Nxxはメニューに表示される文字列セット後にMENU03レコードをWRITEします。メニューバーは様々なパラメータの指定により、表示属性などを変更する事ができます。マニュアルをご覧になって活用して頂きたいと思います。Magazineに詳細版が掲載されます。そちらもご購読くださいませ。