戻る

第1章 インストールと基本的な操作


1.インストール

 ここでは、基本的にOS/2 Warp V4 日本語版を基準にしています。

 DrDialogは、Warp V4に付属しているCD-ROMの内、J_Pocket2に含まれています。ここから任意の場所にインストールする事ができます。

 まずCD-ROMをドライブにセットした後、CD-ROMのルートにあるinstall.cmdか、J_POCKETディレクトリにあるreadme.cmdを実行します。すると、J_Pocket2の紹介オンライン・ドキュメントがオープンします。ドキュメントからDrDialogを選択するとインストール方法を指示されるのでそれに従って下さい。

 J_Pocketのドキュメントからは、インストール方法を指示されるだけで、自動ではインスト-ルしてくれませんが、インストール作業そのものは、単純にCD-ROM内のディレクトリ毎任意の場所にコピーし、コピ-先のDrDialogのディレクトリ内にあるinstall.cmdを実行するだけです。これでデスクトップにDrDialogフォルダが作成され、インスト-ル完了となります。インスト-ルされる内容は、以下の通りです。

2.DrDialogの構成

 DrDialogをインストールすると、デスクトップに「DrDialog」のフォルダが作られます。この中は、以下のような構成になります。
DrDialogDrDialog本体
DrRexxDrDialogのREXX実行環境
DrsAideDrRexxを使って書かれたDrDialog用のツールを統合する管理ツール
RexxLibREXXプロシジャーのライブラリを管理するツール
REViseドラッグ&ドロップでDrRexxのRESファイルの一部分をカット&コピーするツール
REViewアウトライン形式でDrRexxのRESファイルを表示するツール
REStoRXXDrRexxのRESファイルからREXXコードのソースリストを作成するツール
REStoEXEDrRexxアプリケーションから標準のOS/2実行形式ファイルを作成するツール
REStoPGMDrRexxアプリケーションからドラッグ&ドロップ可能なプログラム・オブジェクトを作成するツール
DrDialog referenceDrDialogのリファレンス・マニュアル
DRSAIDE.RXLDrsAide用のREXXプロシジャーファイル
DRSAIDET.RESDrsAideのテンプレート
DRREXX.RESDrRexxアプリケーションのテンプレート
DRDIALOG.RESDrDialogのテンプレート
SAMPLEサンプル・プログラムのフォルダ

3.DrDialogの操作方法

 DrDialogを起動すると以下のようなウィンドウが開きます。

3-1.マウスによる操作

 DrDialogは、できる限り簡単に、また直感的にダイアログを作成、編集する事を目的としてデザインされており、その操作は、基本的にマウスを使って行う事が出来ます。
 DrDialogでは、一度に一個以上のダイアログの編集を行う事ができます。同時にスクリーン上にいくつかのダイアログを置くことができます。この内の一個のダイアログだけが編集対象となります。全てのDrDialogツールは、現在の編集ダイアログの上で操作します。

 マウスの左右どちらかのボタンを非アクティブなダイアログの上でクリックする事によって、そのダイアログを編集できます。ダイアログ選択ツールを使って、全ての編集中のダイアログのリストから新しいダイアログを選択する事もできます。

3-2.キーボードによる操作

 編集操作は、主にマウスを使って行いますが、以下のようなキーボード・ショートカットを使用する事もできます。

4.DrRexxアプリケーション

 DrDialogは、ビジュアルにコントロールを配置して、ダイアログをデザインできます。これに、更に、コントロール毎に生じるいろいろなイベントに対する処理をREXXコードで定義し、実行させる事が出来ます。REXXコードを付加し、DrRexxによって実行可能となったDrDialogのリソース・ファイルは、DrRexxアプリケーションと呼ばれます。

4-1.DrRexxツール・ウィンドウ

 DrDialogリソース・ファイルをDrRexxアプリケーションにするには、DrRexxツール・ウィンドウを使用します。このウィンドウは、DrDialogのToolsメニューからDrRexxアイコン・ボタンをクリックする事によって表示されます。

 このDrRexxツール・ウィンドウは、次の三つのセクションから成るノートブックとして構成されています。


 DrRexxノートブックのイベント・セクションは、DrRexxアプリケーション内の各々のコントロールの発生する、様々なイベントをハンドルするREXXルーチンを定義できます。
 イベント・セクションのカバー・ページは、name toolと呼ばれ、編集中のダイアログに定義されているコントロールの全てをリスト表示します。リストのエントリをダブルクリックすると、選択されたコントロールのイベント・ハンドルを定義するノートブックのサブ・セクションに切り替わります。ここから任意のイベントに対してREXXコードを定義します。現在選択されているコントロールの名前とID番号は、トップページの該当する入力フィールドを編集し、エンターキーを押す事によって変更できます。

 DrRexxノートブックのイベントのサブ・セクションは、現在アクティブなコントロールに定義されている各々のイベントのページを持っています。イベントのタブを選択すれば、編集コントロールのイベントに関連付けられたREXXコードを表示でき、それを編集できます。また、編集中のダイアログ上で、コントロールのポップアップ・メニューのEventsサブメニューから目的のイベント・ネームを選択する事によって素早く特定のページを開く事もできます。

 イベントに定義するハンドラのタイプは、コントロール別イベントハンドラとクラスイベントハンドラの二つがあり、必要に応じて使い分けます。
 コントロール別イベントハンドラは、特定のコントロールの特定のイベントのハンドラです。(特定のプッシュボタンがクリックされた時等に実行されます)これは、通常タイプのイベント・ハンドラです。
 それに対して、クラスイベントハンドラは、コントロールのクラス全体のイベントのハンドラです。(そのダイアログのどのプッシュボタンがクリックされた場合でも実行されます)
 コントロールでイベントが発生すると、DrRexxランタイム環境は、コントロール別、クラス、ダイアログのイベントハンドラの順に実行しようとし、どれかのイベントハンドラを実行すると、次のイベント待ちになります。
 現在編集されているハンドラのタイプは、イベントページの右下コーナーにあるスピンボタンの表示で決定されます。もし、スピンボタンがControlを選択していれば、コントロールの特定のハンドラが編集されています。もし、スピンボタンがClassを選択していれば、クラスハンドラが編集されています。

 DrRexxノートブックの各イベントのページ・タブは、特定文字によって、ハンドラのタイプを示しています。もし、イベント名に'*'が付加されていれば、そのイベントにはコントロール別イベントハンドラがハンドルされています。イベント名に'-'が付加されていれば、そのイベントにはクラス・イベント・ハンドラがハンドルされています。もし、ページタブに'*'も'-'もない場合は、イベント・ハンドラが定義されているコントロールやクラス・イベント・ハンドラはありません。


 DrRexxノートブックのグローバル・プロシジャー・セクションは、DrRexxアプリケーションの各部分からコールされるREXXプロシジャーを定義する事ができます。このプロシジャーは、グローバルなもので、現在のリソース・ファイル内のどのダイアログからでもコールできます。

 グローバル・プロシジャー・セクションのカバー・ページは、現在定義されている全てのプロシジャーのリストを表示します。リストのエントリをダブルクリックすると、プロシジャーを定義し、編集する事のできるノートブックのページに切り替わります。
 新しいプロシジャーは、ページの上端の入力フィールドに名前をタイプし、エンターキーを押す事によって追加されます。その名前での新しい空のページは、ノートブックのセクションに追加され、新しいプロシジャーのコードを入力できるように自動的に選択されます。逆に削除する場合は、ページ内の全てのコードを削除します。プロシジャーが定義されたページは、他のページが選択されると、ノートブックから自動的に削除されます。
 グローバル・プロシジャー・セクションは、現在定義されている全グローバル・プロシジャーのページを持っています。プロシジャーのタブを選択すると、REXXコードを表示し、編集する事ができます。


 DrRexxノートブックのノートパッドセクションは、REXXコードの断片やちょっとした情報を保持する事ができます。例えば、多くのREXXプログラムは、標準的なRexxUtilのファンクションをを使って作られますが、プログラムの何処かで以下のREXXコードを含めなければなりません。
CALL RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
CALL SysLoadFuncs
 DrRexxノートパッドを使えば、このコードの断片に名前を割り当てて、DrRexxアプリケーションに素早く付加する事が可能になります。

 ノートパッドセクションのカバー・ページは、現在割り当て済みの全ての名前のリストを表示します。リストのエントリをダブルクリックすると、メモの定義されたノートブックページに切り替わり、それを編集する事ができます。
 新しいメモは、ページの上端の入力フィールドに名前をタイプし、エンターキーを押す事によって追加されます。入力された名前の新しい空のページは、セクションに追加され、メモのテキストが入力できるように自動的に選択されます。
 メモは、ページ内の全てのテキストを削除する事によって削除されます。メモの定義されたページは、他のページが選択されると、自動的にノートブックから削除されます。

4-2.共通編集機能

 DrRexxノートブックのページで編集されるテキストは、全て同一の編集機能の元におかれます。それによって、以下のような機能を使う事が出来ます。

4-3.REXファイルによる任意エディターの使用

 DrDialogでは、ユーザーが通常使用しているエディターを使ってアプリケーションのREXXコードを編集する事もできます。この場合、編集後のREXXコードは、自動的にDrRexxアプリケーションにインポートされます。
 DrDialogのこの機能を使うには、DrRexxアプリケーションの名前がdrive:\path\filename.RESならば、REXXコードを含むファイルの名前をdrive:\path\filename.REXにします。
 DrDialogがセーブやRESファイルの実行を行う時には、該当するREXファイルの存在をチェックします。もし、ファイルがあれば、その内容をスペシャル・リソース・タイプとしてRESファイルに自動的に付加します。アプリケーションの実行時には、このスペシャル・リソースは、DrRexxが作成するREXXプログラムの最後に追加されます。

 DrRexxアプリケーションの一部が外部のREXファイルに格納されているならば、DrRexxエディターを使ってREXコード内のイベントハンドラの場所を指定しなければなりません。DrDialogは、以下のようにこのリンク操作を補助します。

 DrRexxノートブックのイベント・セクション内のマルチライン・エディット・コントロールが空の状態で、コピーボタンをクリックすると、DrDialogは、イベントハンドラを呼ぶ為のテキストを挿入します。(CALL dialog.control.event)。さらに、REXファイル用のラベル(dialog.control.event:)をシステムのクリップボードにコピーします。エディターをユーザ自身のものに切換え、REXファイルにDrDialogが作成したラベルをペーストします。そのラベルに対してイベントをハンドルする為に必要なREXXコードをユーザー自身が追加する事によって完成です。
 但し、REXXコードをコールするのに、必ずしもこの機能を使う必要はありません。ルーチンの名前は、ユーザーが自由に選択できます。

 外部ファイルにREXXコードを格納する際の注意点は以下の通りです。

5.変数と配列

 REXX環境では、変数と配列の扱いが多少他の処理系と異なっています。

5-1.変数の宣言

 REXX環境では変数の宣言は必要ありません。特に型の指定もありません。しかし、その為に注意しなければならない事があります。それは、数字を扱うつもりで用意してあっても代入が行われていないと文字列として扱われてしまうという事です。以下に例を示します。
/* 変数Xを表示(sayは表示命令) */
say X /* 1回目 (代入前) */
X = 1
say X /* 2回目 (代入後) */
drop X
say X /* 3回目 (代入取り消し後) */
 この例では、1回目での表示結果は"X"、2回目の表示結果は"1"、3回目の表示結果は"X"となります。

5-2.ローカル変数

 通常は全ての変数はグローバルですが、procedureキーワードを使ったプロシジャー内はローカル環境として扱われます。

5-3.ステム

 REXXではステムと呼ばれる配列を使用します。これは変数名に続けてピリオドを書き、それに続けて配列の添え字を指定するという書式のものですが、他言語の配列と異なり、添え字は数字でも文字でも良く、内容の型も決まっていません。

Array.0 = 3
Array.1 = 1
Arrey.2 = "A"
(通常0には配列の数をセットする)
Number.one = 1
Number.two = 2
Number.three = "A"

6.プロシジャー

 DrDialogでは、各コントロールのイベント毎のREXXコードの他に、グローバル・プロシジャーとして独自のサブルーチンを定義できます。このプロシジャーは、プログラムの何処からでも呼び出す事ができます。
 グローバル・プロシジャーは、通常のREXXのプロシジャーと同じように以下のキーワードを使って定義します。記述上異なるのは、プロシジャーの最後にRETURN文をつけないという事です。条件によって、プロシジャーの処理の途中で呼出し元に戻りたい場合は、SIGNAL RETURNを使用します。
CALL定義したプロシジャーを呼び出す。
PROCEDUREこれを指定する事で関数内の変数がローカルとして扱われる。共通変数を使用したい場合はEXPOSEを使用する。
EXPOSEこれに続けて共通変数を列記するとPROCEDURE指定をしていてもプロシジャーの内外で共通の変数として扱われる。
ARG関数に引数を与えたい場合に使用する。
RETURNPROCEDUREを指定した場合等にプロシジャーのリターン値を設定したい場合に使用する。DrDialogでは、プログラムを終了させずにプロシジャーから戻るには、SIGNAL RETURNを使用する。
SIGNAL例外ハンドラの使用を定義する。

7.コントロールの動的制御

 DrDialogでは、標準的なREXXコマンドの他に、各々のコントロールやダイアログを操作する為のウィンドウ・ファンクションを使用する事ができます。このウィンドウ・ファンクションは、以下のように記述します。
CALL dialog.control.function arg
rc = dialog.control.function(arg)
 しかし、この記述方法では、ダイアログとコントロールは固定のモノとなり、処理の内容によってコントロールを切り替える事が出来ません。

 そこで、DrDialogのDrRexx環境では、動的にコントロールを指定してウィンドウ・ファンクションを使用する為に...Forファンクションを用意しています。Forファンクションを使う場合の記述は、以下のようになります。
rc = functionFor( 'dialog', 'control', arg )
 ウィンドウ・ファンクションにForキーワードを付けて、引数としてダイアログ名とコントロール名を与えます。これにより、コントロールを選択的に使用する事ができます。

8.APIとDLL

 OS/2のREXX環境では、様々な外部関数のパッケージをロードする事によって機能の追加を行う事ができます。これには各種のAPIを使用する為のパッケージや、数値演算用、ファイル操作用といったパッケージがあります。これらのパッケージは、DLLの形で提供されており、OS/2標準のものやIBM EWS等から入手できるものなどがあります。環境さえ整えれば、自分用のカスタムDLLを作成する事も可能です。DrDialogでも、標準REXX環境と同じく、この外部関数パッケージを使用して機能追加を行なう事が出来ます。
 DrDialogでユーザーが使用可能なDLLとしては、上記以外にビットマップデータをまとめたリソースDLLがあります。プログラム内でリソースとして使用するビットマップをDLL形式でまとめるコマンドがBMPtoDLLです。小さなビットマップやアイコン、ポインター等を一つのDLLにまとめる事によって保守性を上げることができます。

9.アプリケーションの配布

 DrDialogで作成したアプリケーションを配布する場合は、DrDialog標準のRES形式からEXE形式に変換した方が良いでしょう。この変換によってDrREXX.EXEの無い環境(DrDialogのインストールされていない環境)でもアプリケーションを動作させる事が可能となります。
 RESファイルからEXEファイルへの変換は、REStoEXEコマンドを使って行なう事が出来ます。作成したRESファイルをREStoEXEのアイコンにドラッグ&ドロップすると現行のディレクトリにEXE形式のファイルが作成され、デスクトップにプログラム・オブジェクトが作成されます。プログラム・オブジェクトは、適当なフォルダに移動するか、必要無ければ削除すれば良いでしょう。


戻る