関数やステートメントは、基本的に標準REXXと同じです。デスクトップの「アシスタンス・センター」->「情報」->「参照とコマンド」内の「REXX 情報」に説明があります。
a.条件分岐基本的な条件分岐は、以下のようなIF THEN ELSE文で記述します。
もし実行内容が一行だけならば、DO ENDは省略可能です。IF 条件式 THEN DO 条件判定が真の場合の実行内容 END ELSE DO 条件判定が偽の場合の実行内容 ENDb.繰り返しループ
繰り返しループは、以下のようなDO END文で指定します。WHILE/UNTIL/FOREVER等を指定する事によって前方判定や後方判定を指定する事が出来ます。
DO 条件式 実行内容 ENDこの例ではcommandを5回実行します。
次の例ではLoopCountを1から5まで変化させながら、commandを5回実行します。DO 5 command ENDDO LoopCount = 1 TO 5 command ENDWHILEを使用すると前方判定となります。条件式が真の間ループします。
DO WHILE 条件式 実行内容 ENDUNTILを使用すると後方判定となります。条件式が真になるまで(偽の間)ループします。
DO UNTIL 条件式 実行内容 ENDFOREVERは、無限ループを指定します。
DO FOREVER 実行内容 ENDc.複数条件分岐
複数の条件から一つを選択する分岐をまとめて記述する場合、以下のSELECT END文を使用する事が出来ます。実行内容が複数行になる場合は、IF文の場合と同じくDO END文で囲む必要があります。
SELECT WHEN 条件式1 THEN 実行内容1 WHEN 条件式2 THEN 実行内容2 WHEN 条件式3 THEN DO 実行内容3 END OTHERWISE 全ての条件式にマッチしなかった場合の実行内容 END
- 算術演算子
演算子 機能 動作例 + 加算 B + Cで、BとCを加えた結果を返します。 - 減算 B - Cで、BからCを減じた結果を返します。 * 乗算 B * Cで、BとCを掛けた結果を返します。 / 除算 B / Cで、BをCで割った結果を返します。
- 論理演算子
演算子 機能 動作例 & AND B & Cで、BとCの論理積で真偽値を返します。 | OR B | Cで、BとCの論理和で真偽値を返します。 \ NOT \ Cで、Cの真偽値を反転して返します。
- 真偽演算子
演算子 機能 動作例 > より大きい B > Cで、BがCより大きければ、真を返します。 < より小さい B < Cで、BがCより小さければ、真を返します。 = 等しい B = Cで、BとCが等しければ、真を返します。
関数名 機能 B2X 2進数のストリングを16進数のストリングに変換 C2D ストリングを10進数値として返す C2X ストリングを16進表記に変換 D2C 10進数値を該当するASCII文字に変換 D2X 10進数値を16進数のストリングに変換 X2B 16進数のストリングを2進数のストリングに変換 X2C 16進数のストリングを該当するASCII文字に変換 X2D 16進数のストリングを10進数値に変換
関数名 機能 ABS 数値の絶対値を返す MAX 指定したリストの中の最大値を返す。(最大20個) MIN 指定したリストの中の最小値を返す。(最大20個) RANDOM 指定した最小値と最大値の間で負でない整数の擬似乱数を返す。 SIGN 数値の符号を示す数を返す。 TRUNC 数値の整数部と指定桁数の小数部を返す。 VALUE 指定した名前の値を返す、または設定する。 BITAND 二つのストリングのANDを取る。 BITOR 二つのストリングのORを取る。 BITXOR 二つのストリングのXORを取る。
関数名 機能 ABBREV 先行文字列を比較する。 COMPARE 二つのストリングを比較する。 COPIES ストリングを指定回数連結する。 DELSTR ストリングの指定位置から指定文字数の削除を行う。 DELWORD ストリングの指定語から指定語数の削除を行う。 FORMAT 数値を指定形式に丸める。 INSERT ストリングの指定位置に指定文字を挿入する。 LEFT ストリングの左端から指定文字数を返す。 LENGTH ストリングの長さを返す。 POS ストリング内の指定文字列の位置を返す。 REVERSE ストリングを逆順にして返す。 RIGHT ストリングの右端から指定文字数を返す。 SPACE ストリング内のブランクを調整する。 STRIP ストリングの先行文字と後続文字を除去する。 SUBSTR ストリングの指定位置から指定文字数を返す。 SUBWORD ストリングの指定語から指定語数を返す。 VERIFY ストリングの構成文字をチェックする。 WORD ストリングの指定語を返す。 WORDINDEX ストリングの指定語の最初の文字位置を返す。 WORDLENGTH ストリングの指定語の長さを返す。 WORDPOS 指定語のストリング内での位置を返す WORDS ストリングの語数を返す。 XRANGE 指定文字間の全ての1バイトコードをストリングとして返す。
関数名 機能 DATE 指定形式の日付を返す。 TIME 指定形式の時間を返す。
関数名 機能 CHARIN 文字入力ストリームから指定文字数を返す。 CHAROUT 文字出力ストリームに指定文字を出力する。 CHARS 文字入力ストリームに残っている文字数を返す。 LINEIN 文字入力ストリームから行単位でデータを読み込む。 LINEOUT 文字出力ストリームへ行単位でデータを書き込む。 LINES 文字入力ストリームの残りデータをチェックする。 STREAM 文字ストリームの入出力を制御する。
関数名 機能 DIRECTORY 現行ディレクトリを取得/設定する。 FILESPEC 指定ファイルの指定情報を返す。
9-1.REXX ユーティリティ関数(RexxUtil)
これは、REXXでファイル操作等の機能を使用するライブラリです。デスクトップの「アシスタンス・センター」->「情報」->「参照とコマンド」内の「REXX 情報」に標準REXXの説明とともに説明があります。
関数名 機能 RxMessageBox メッセージボックスの表示 SysCls テキスト画面の消去 SysCopyObject オブジェクトのコピー SysCreateShadow シャドウの作成 SysMoveObject オブジェクトの移動 SysCreateObject オブジェクトの作成 SysCurPos テキスト画面でのカーソルの移動/位置問い合わせ SysCurState テキスト画面でのカーソルの表示/非表示 SysDeregisterObjectClass オブジェクトクラスの定義を登録/解除 SysDestroyObject 既存オブジェクトの破棄 SysDriveInfo ドライブ情報の取得 SysDriveMap アクセス可能な全てのドライブを取得 SysDropFuncs RexxUtilの全関数をドロップする SysFileDelete 指定ファイルの削除 SysFileTree ファイルの検出 SysFileSearch ファイル内の文字列検索 SysGetEA 名前付き拡張属性の取得 SysGetKey キー入力の取得 SysGetMessage 指定番号のメッセージを取得 SysIni INIファイルの設定/問い合わせ SysMkDir ディレクトリの作成 SysOpenObject オブジェクトのオープン SysOS2Ver OS/2バージョン情報の取得 SysPutEA 名前付き拡張属性の書込み SysQueryClassList 登録されているオブジェクトクラスの全リストを取得 SysRegisterObjectClass オブジェクトクラスの定義をシステムに登録 SysRmDir ディレクトリの削除 SysSaveObject オブジェクトの保管 SysSearchPath パス指定によるファイルの検索 SysSetIcon アイコンファイルの関連付け SysSetObjectData オブジェクトの設定変更 SysSleep 指定秒数のスリープ SysTempFileName 固有ファイル名の取得 SysTextScreenRead テキスト画面からの文字の読取り SysTextScreenSize テキスト画面のサイズを取得 SysWaitNamedPipe 名前付きパイプの時限待機 9-2.マルチメディア REXX ライブラリ(MciApi)
これは、REXXでマルチメディア機能を使用するライブラリです。デスクトップの「アシスタンス・センター」->「情報」->「参照とコマンド」から「マルチメディア REXX」を参照できます。
関数名 機能 mciRxInit 初期化を行い、MCIストリングインターフェースコマンドを使用可能とする。 mciRxExit MCIストリングインターフェースを終了する。 mciRxGetDeviceID MCI装置別名と関連する装置IDを取得 mciRxGetErrorString MCIエラーストリングを取得 mciRxSendString MCIコマンドストリングを送信 9-3.TCP/IP REXX Socket ライブラリ(RxSock)
これは、REXXでSocket機能を使用するライブラリです。デスクトップの「アシスタンス・センター」->「情報」->「参照とコマンド」から「TCP/IP REXX Sockets API 解説書」を参照できます。但し、この解説書では、説明が少なすぎるので、合わせてJ_Pocket2のWarp V4用のTCP/IPリファレンスや、他の文献を参照する必要があります。
関数名 機能 SockAccept accept()と同じ SockBind bind()と同じ SockClose soclose()と同じ SockConnect connect()と同じ SockDropFuncs REXX Socketパッケージの全関数をドロップ SockGetHostByAddr gethostbyaddr()と同じ SockGetHostByName gethostbyname()と同じ SockGetHostId gethostid()と同じ SockGetPeerName getpeername()と同じ SockGetSockName getsockname()と同じ SockGetSockOpt getsockopt()と同じ SockInit sock_init()と同じ SockIoctl ioctl()と同じ SockListen listen()と同じ SockLoadFuncs REXX Socketパッケージの全関数をロード SockPSock_Errno psock_errno()と同じ SockRecv recv()と同じ SockRecvFrom recvfrom()と同じ SockSelect select()と同じ SockSend send()と同じ SockSendTo sendto()と同じ SockSetSockOpt setsockopt()と同じ SockShutDown shutdown()と同じ SockSock_Errno sock_errno()と同じ SockSocket socket()と同じ SockSoClose soclose()と同じ SockVersion REXX Socketパッケージのバージョンを識別 9-4.TCP/IP REXX FTP ライブラリ(RxFtp)
これは、REXXでFTPの機能を使用するライブラリです。デスクトップの「アシスタンス・センター」->「情報」->「参照とコマンド」から「TCP/IP REXX FTP API 解説書」を参照できます。
関数名 機能 FtpAppend ローカルファイルをリモートホスト上のファイルに追加 FtpChDir リモートホスト上の作業ディレクトリを変更 FtpDelete リモートホスト上の単一ファイルを削除 FtpDir リモートホストの現行ディレクトリの情報を得る FtpDropFuncs REXX FTP APIパッケージの全関数をドロップ FtpGet リモートホストから単一ファイルをローカルにコピーする。 FtpLoadFuncs REXX FTP APIパッケージの全関数をロード FtpLogoff 全てのFTPセッションの終了 FtpLs リモートホストの現行ディレクトリの情報を得る FtpMkDir リモートホスト上に新規ディレクトリを作成 FtpPing リモートホストにpingを送出 FtpProxy 2つのリモートサーバー間でファイルをコピー FtpPut ローカルの単一ファイルをリモートホストにコピー FtpPutUnique ローカルの単一ファイルをリモートホストにコピーする。
ファイル名の固有チェック有。FtpPwd リモートホストの現行ディレクトリを取得 FtpQuote ストリングをリモートサーバーに送信 FtpRename リモートホスト上の単一ファイルの名前を変更 FtpRmDir リモートホスト上のディレクトリを削除 FtpSetBinary テキスト変換モードをバイナリー/ASCIIに切換え FtpSetUser リモートホストのホスト名,ユーザーID,パスワード,アカウントを識別 FtpSite サイト情報をリモートホストに送信 FtpSys サーバーのオペレーティングシステム名を取得 FtpVersion REXX FTP APIパッケージのバージョンを識別 9-5.その他
上記以外にも有料のパッケージが販売されています。また、インターネット等でフリーで手に入るものとして数値演算パッケージのMATHLIBやNETコマンド相当の機能を実現するNETUTIL等があります。J_Pocket2のRelease 3には、同じくJ_Pocket2に含まれているProTalker/2をREXXから制御する為のパッケージが含まれています。
関数名 機能 ModalFor モーダル・ダイアログを表示し、結果を返します。
result = ModalFor( dialog [, alias] [, registeredName] )
dialog(作成するダイアログ名を指定します)
alias(ダイアログをalias名で作成します)
registeredName(ダイアログをPMに登録し、オーナーをdesktopにします。指定の名前でウィンドウ・リストに表示されるようになります)
- ModalForを実行すると、他の全てのダイアログがディセーブルになり、モーダル・ダイアログをクローズするまでアクセスできません。
- ModalForを実行したイベント・ハンドラは、モーダル・ダイアログのイベント・ハンドラがRETURNステートメントを実行するまでサスペンドされます。RETURNステートメントに値が指定されていれば、ModalForファンクションのresultとして戻されます。
- passwordモーダル・ダイアログを開く
IF ModalFor( 'password' ) <> 'SECRET' THEN EXITEventData 指定されたステム変数に、発生したイベントに関連付けられたデータを返します。ステム変数を省略すると、デフォルト名のEVENTDATAが使われます。
EventData( [stem] )
ステム.0には、返されるデータの数、ステム.1~nには、イベントに関連付けられているデータが戻ります。返されるイベント関連データは、各コントロールによって異なります。
- コンテナ・コントロールのカーソル位置のアイテムをマークする例
CALL EventData "DATA"
IF data.2 = "+CURSOR" THEN CALL Select data.1, "MARK"Event イベントの名前(例えば、"Click")を返します。
event = Event()
もしイベントが発生していなければ、ヌル文字列が戻されます。
- 発生したイベントを表示する例
SAY Event() "occurred for" Control() "("Class()")"Control イベントを発生したコントロールの名前(例えば、"list")を返します。
name = Control()
もしイベントが発生していなければ、ヌル文字列が戻されます。
- 発生したイベントを表示する例
SAY Event() "occurred for" Control() "("Class()")"Class イベントを発生したコントロールのクラス(例えば、"LISTBOX")を返します。
class = Class()
もしイベントが発生していなければ、ヌル文字列が戻されます。Dialog イベントを発生したダイアログの名前を返します。
name = Dialog()
もしイベントが発生していなければ、ヌル文字列が戻されます。Dialogs ステム変数に全てのダイアログ名を返します。
Dialogs( [stem] )
ステムを指定しなければ、DIALOGSという変数名が使われます。ステム.0には返される名前の数が入り、ステム.1~nにはダイアログ名が入ります。FilePrompt 標準ファイルダイアログを開きます。
file = FilePrompt( [pattern] [, title] [, ok] [, "Open" | "Save"] )
file(選択されたファイル名が返されます)
pattern(表示するファイルのタイプを選択できます。'*'や'?'のワイルドカードが使用できます。デフォルトは"*.*"です)
title(ファイルダイアログのタイトルバーに表示する文字列を指定します)
ok:ボタンのラベルが指定できます。省略時は、オープン・ダイアログでは"Open"、セーブ・ダイアログでは"Save"になります。
Open:オープン・ダイアログ指定
Save:セーブ・ダイアログ指定
キャンセルするとヌル文字列が返されます。
- 使用例
file = FilePrompt( "*.BMP", "Enter name of bitmap file to open" )Clipboard 現在のクリップボードの内容を取得/設定します。
result = Clipboard( [text] )
- クリップボードに文字列を設定する場合
CALL Clipboard "Replace String"ScreenSize ディスプレイのスクリーンサイズを返します。
result = ScreenSize()
- resultの書式:width height ("1024 768")
- ウィンドウをスクリーンの中央に配置する例
PARSE VALUE Dialog.Position() WITH x y cx cy
PARSE VALUE ScreenSize() WITH dx dy
CALL Dialog.Position (dx - cx)%2, (dy - cy)%2, cx, cyDrRexxVersion DrRexxのバージョンを返します。
result = DrRexxVersion()
- resultの書式:v.vv mm/dd/yy exefile ("2.10 09/18/93 D:\DRDIALOG\DRREXX.EXE")
Start 新しいスレッドを実行開始します。
tid = Start( label [, argument] )
tid(新しいスレッドのID)
label(新しいスレッドとして実行するプロシジャ名)
argument(プロシジャに渡す引数)Stop スレッドの実行を停止します。
rc = Stop( tid )
tid(停止するスレッドのID)
rc(成功時は1、それ以外は0を返す)Result スレッドが実行終了するまで待ちます。
value = Result( [tid] )
tid(終了待ちスレッドのID)
value(スレッドのRETURN値)Notify Notifyイベントを指定ダイアログに通知します。
Notify( dialog [, event] [, data] )
dialog(通知先ダイアログ名)
event(EventDataファンクションで渡す事のできるイベント名)
data(EventDataファンクションで渡す事のできるデータ)Use スレッド間での共有リソースの排他利用を設定/解除します。
rc = Use( name [, request] )
name(共有リソース名)
request(0以外ならば、共有リソースが使用可能になるまでサスペンドし、リソースを確保します。0ならば、現在確保している共有リソースを解放します。省略されると、nameで指定された共有リソースの状態を返します。)
rc(0:リソースを所有していない、1:リソースを所有している)Val スレッド間の共有変数の値を取得/設定します。
value = Val( name [, value] )
name(共有データの名前)
value(名前に関連付けられたデータ)Sleep 指定時間の間、実行をサスペンドします。
Sleep( [time] )
time(ミリ秒で指定します。指定しなければ、次のスレッドが実行されます)