Written in Japanese(UTF-8)
2014.8.30
INASOFT
2014.8.30
INASOFT
/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/
本ソフトウェアの開発は終了しています。ヘルプに記載されている情報も古いものになっています。

R-Scriptの文法
ここには R-Script のスクリプトファイル(rsc)のファイル構造、文法、「いじくるつくーる」の特殊ルール、C言語との違い等について書かれています。
1. ファイル構造
テキスト形式で書かれます。
文字コードは、Shift-JIS、Unicode、Unicode big endian、UTF-8 のいずれかで記述します。Unicode、Unicode big endian、UTF-8の場合は、ファイルの先頭にBOMが必要です。
ファイル名の拡張子はrscです。
ただし、Rnsf7.rscという名前は使えません。この名前は、メインウィンドウの「設定」-「オプション」から呼び出される、いじくるつくーる自身の設定のために予約されています。
内部構造は次のようになっています。
定義部 %% 命令部
1.1 定義部
定義部には、次のような要素があります。
いずれの要素も省略可能です。
ITEM = スクリプトファイルの名称。
INFORMATION = スクリプトファイルの説明。
ICON = いじくるつくーるのスクリプト一覧(機能項目一覧)に表示される際のアイコンの指定。
HELP = [ヘルプ(H)]ボタンが押された際に呼び出されるファイル。
CONTEXTID = HELPが.hlpファイルだった場合のContextID。
AUTHOR = 作者名を指定します。
URL = 作者の所有するサイトのURLを指定します。
CATEGORY = このスクリプトを分類したいカテゴリ項目の名前を指定します。
TRY = いじくるつくーる起動時の :try の実行を、ON:行う、OFF:行わない、ABORT:行わずに非登録扱い、IF(〜):1行実行により決める。
MUSTDEFVAR = ONで、配列でない変数を代入前に利用すると、警告メッセージを出すようにします。
INCLUDE = 追加で読み込むファイルを指定します(複数指定可)。
・ITEM
スクリプトファイルの名称です。省略されると、スクリプトファイルのファイル名が名称として扱われます。
・INFORMATION
スクリプトファイルの説明文です。省略されると、スクリプトファイルのファイル名が説明文として扱われます。
・ICON
スクリプトのアイコンです。アイコンファイル(ico)を指定するか、「ファイル名, 番号」の形式で記述します。
番号は、非負数ではアイコンファイルに格納された順番が番号になり、負数では実行ファイルのリソースをコンパイルした際の定数に -1 をかけた値が番号になります(ただし、-1は指定しないで下さい。リソースの定数1のアイコンを表示させたい場合は、それに該当するアイコンの順番を非負数で指定して下さい)。
省略されるか、アイコンが見つからない場合は、R-Scriptのもつ標準のスクリプトファイル用のアイコンが表示されます。
・HELP
[ヘルプ(H)]ボタンが押された際に呼び出されるファイルか、コマンドラインを指定します。適切に関連付けられたファイル(テキストファイル)なども指定できます。
ここが none または空(省略)の場合、ダイアログの[ヘルプ(H)]ボタンはグレイアウトします。
ここが dynamic だった場合、dhelps$() や dhelp$() 等の関数で、動的にヘルプを生成できます。[ヘルプ(H)]ボタンを押すと、動的に生成されたヘルプが表示されます。ただし、スクリプトを実行してみないとヘルプの内容が確定しないため、メインウィンドウのコンテキストメニューの「ヘルプ」はグレイアウトします。
・CONTEXTID
HELPで指定されたファイルがヘルプファイル(.hlp)だった場合の ContextID です。ヘルプファイル(.hlp)でなかった場合は省略します。
・AUTHOR
作者名を指定します。ここで指定された作者名はメインメニューに表示されますので、ソートに用いることができます。
省略されると、この項目は空白になります。
・URL
作者のサイトのURLを指定します。メインメニューで項目を右クリックしたときのメニューから開くことができます。
省略されると、コンテキストメニューの「URLを開く」が使えなくなります。
・CATEGORY
このスクリプトが所属するカテゴリを指定します。
カテゴリ分類は、メインウィンドウのメニューの「表示」-「機能項目をカテゴリ分類する」が有効になっている場合に行われます。
既存のカテゴリに含ませたい場合は、そのカテゴリ名を、一字一句間違いなく指定します。
既存のカテゴリ名とは違う名前を付けた場合、新しいカテゴリが作られることになります。
なお、カテゴリの並ぶ順番は、「すべてのカテゴリ」を除くと、カレントフォルダからスクリプトの一覧が読み込まれたときの順番になります。
省略されると「分類なし」に分類されます。
・TRY
いじくるつくーるは起動時に、全てのスクリプトの :try ラベルを実行し、メインウィンドウの機能項目一覧(リストビュー)に表示するかどうかを判断します。この作業には時間がかかることがあります。
明らかに表示する・しないがわかっている場合、起動時間の短縮のために、TRY = OFF で :try の実行を行わずに表示し、TRY = ABORT で :try の実行を行わずに表示しないようにできます。
省略されるとONが指定されたとみなされます。ONは、:try を実行します。:try については、3. 「いじくるつくーる」の特殊ルール をご覧下さい。
いじくるつくーる起動速度向上のため、IF(〜)が新設されました。これは :TRY は呼び出さないが、複雑な条件の下で、一覧への表示・非表示を決めたい場合に指定します。これにより、いじくるつくーるの起動を速めるできます。(〜)の中に、R-Scriptの式を一行だけ書けます。例えば、TRY=IF (isNT && winver >= 500) のように書くと、Windows NT系で、Windows 2000以上のバージョンを持つOSのみで、一覧に表示されるようになります。
・MUSTDEFVAR
R-Scriptでは、通常の変数は、代入しなくても参照できますが、このままだと変数名をスペルミスしたかどうかを確認できません。
そこで、ここでONを指定することで、配列でない変数は、1度以上代入しないと利用時に警告メッセージを出すようにします。
省略されるとOFFが指定されたとみなされます。OFFは、警告を出しません。
・INCLUDE
スクリプトファイル全体を読み込んだ後、ここで指定されたファイルを追加で読み込みます。
INCLUDEは複数指定することができ、指定された順番で追加で読み込まれていきます。
定義部は、行頭より %% というふうに %を2つ連続して記述すると終了です。%%の次の行から、命令部が始まります。
1.2 命令部
スクリプトの命令が記述される部分で、いわばスクリプトファイルの本体です。
文法については、次の項を参照して下さい。
2. 文法 (命令部)
2.1 R-Scriptの構成要素
R-Scriptの実行単位は行です。1行は2000バイトまでです。
空行でない、またはコメント文のみでない行を「文」と呼びます。
文は、「命令」か「式」か「命令と式」か「ラベル」か「ラベルと文」で成り立ちます。
命令・式・ラベルを構成する、インタプリタが解釈する最小の単位が「トークン」です。
2.1.1 トークン
トークンは、R-Scriptのインタプリタが解釈する最小の単位です。トークンには次の種類があります。
トークンは次の文字の1つ以上からなる文字列で区切られます。
- 空白(半角スペース)
- タブ
- 改行
2.1.2 式および式の型
数値定数、変数、関数、文字列定数、およびこれらと演算子の組み合わせを式といいます。式と演算子の組み合わせも式です。
式は返却値を持ちます。
返却値は、数値定数の値、変数の値、関数の返却値、文字列定数の値、およびこれらと演算子の演算結果です。
返却値は型(数値か文字列)を持ちます。返却値の型は、そのまま式の型になります。
数値型の式を数値式、文字列型の式を文字列式と呼びます。
2.1.3 コメント
行の文字列中(ダブルコーテーションまたはシングルコーテーションで囲まれた部分)でない部分で // (スラッシュ2つ)、 ; (セミコロン)、# (いげた) とその右側の部分はコメントとして扱われ、インタプリタは無視します。
2.2 翻訳順序
2.2.1 あらかじめ定義された変数 (初期代入変数)
R-Scriptの実行開始に先立ち、次の変数が定義されます。
これらの変数の内容は変更できますが、スクリプトが終了(ダイアログを終了)すると、元の値に戻されます。
isNT = 現在実行中のOSがWindows NT系なら1、 そうでなければ0。これは、関数isNT()の返却値と同じ。 winver = 現在実行中のOSのバージョン。整数部×100+小数部。これは、関数GetWindowsVersion()の返却値と同じ。 iever = Internet Explorer のバージョンの整数部。Internet Explorerがインストールされていなければ0。これは、関数GetIEVersion()の返却値と同じ。 true = yes = 1 ERROR = ERRORVALUE = MAXINTEGER = 0xffffffff dummy = REG_NONE = false = no = null = nil = zero = LOWVALUE = MININTEGER = nothing = 0 REG_SZ = 1 REG_EXPAND_SZ = 2 REG_BINARY = 3 REG_DWORD_LITTLE_ENDIAN = REG_DWORD = 4 REG_DWORD_BIG_ENDIAN = 5 REG_LINK = 6 REG_MULTI_SZ = 7 REG_RESOURCE_LIST = 8 REG_FULL_RESOURCE_DESCRIPTOR = 9 REG_RESOURCE_REQUIREMENTS_LIST = 10 REG_QWORD = REG_QWORD_LITTLE_ENDIAN = 11 CTRL_NORMAL = 0 CTRL_NOTIFY = 1 CTRL_REFRESH = 2 CTRL_REBOOT = 3 CTRL_NOEFFECT = 128 DELETE_DEFAULT = 4 SZ_EXPAND = 8 EDIT_FILENAME = 16 EDIT_FOLDER = 32 EDIT_BUTTON = 48 EDIT_SZ = 16 EDIT_BINARY = 32 EDIT_PASSWORD = 64 CHECK_DWORD = 0 CHECK_SZ01 = 16 CHECK_SZYN = 32 CHECK_SZTF = 64 LV_DELETE_NOVALUE = 4 LV_SMALL = 16 LV_MULTISELECT = 32 LV_SORTHEADER = 64 LV_MIDDLE = 256 LV_DWORD = 512 CB_DWORD = 512 CTRL_NEEDADMIN = 1024 MAYBE_EXPAND = 2048
2.2.2 スクリプトの解釈と実行
R-Scriptの実行が開始すると、スクリプトファイルの %% の次の行から、上から下に向かって解釈・実行を始めます。
途中に GOTO や IF や WHILE文があると、解釈の順序が変わります。
基本的に、1行=1文 として解釈を行いますが、特別な場合に限り、複数行=1文となることもあります。詳しくは、文結合ルールを参照して下さい。
2.2.3 スクリプトの終了
スクリプトの解釈が、スクリプトファイルの行末に達するか、EXIT命令が実行されると、スクリプトは正常終了します。
ABORT命令が実行されると、スクリプトは異常終了します。これを abort を返すといいます。
スクリプトがabortを返すと、次の「いじくるつくーる」の制御を停止させることができます。
・機能項目の開始時にスクリプトがabortを返すと、機能項目の開始が行われなくなります。
・「3 「いじくるつくーる」の特殊ルール」で定義された呼び出しでスクリプトがabortを消すと、その呼び出しが取り消されます。:tryラベルでabortが返されると、そのスクリプトはいじくるつくーるの機能項目一覧に表示されなくなります。
2.3 関数の呼び出し
R-Scriptで定義された関数を呼び出すには、関数名と引数を指定します。
関数名と引数については、R-Scriptの関数一覧を参照して下さい。
関数名の後ろに$がつくと、返却値が文字列型であるとみなされます。そうでないときは、返却値が数値であるとみなされます。
関数の引数は "(" と ")" (括弧)でくくって、関数に渡します。
引数を1つも持たない関数は、関数名の直後に()(括弧の始まりと終わりを続けて書く)と書きます。
引数を2つ以上持つ関数は、各引数をカンマ( , )で区切ります。
3. 「いじくるつくーる」の特殊ルール
いじくるつくーるでは、R-Script に対して特殊なラベルを定義しています。これらのラベルが存在しない場合は、ラベルの開始直後に正常終了したものとして処理されます。
:OK
編集ダイアログで[OK]または[適用]ボタンが押されたときに、このラベルより解釈・実行が行われます。
abortが返されると、[OK]ボタンを押されたことが中止されます。つまり、レジストリへの保存とダイアログの終了は行われません。
:CANCEL
編集ダイアログで[キャンセル]ボタンが押されたときに、このラベルより解釈・実行が行われます。
abortが返されると、[キャンセル]ボタンを押されたことが中止されます。つまり、ダイアログの終了は行われません。
:APPRY
編集ダイアログで[適用]ボタンが押されレジストリへの書き込みが終わった後に、または、編集ダイアログで[OK]ボタンが押され、エラーまたはabortが返されたとき、このラベルより解釈・実行が行われます。
つまり、:OK 後の後処理を行うためのラベルです。
abortが返されても、単にスクリプトの解釈が終了します(EXITと同じです)。
:RETRY
編集ダイアログで[戻す]ボタンが押されたときに、このラベルより解釈・実行が行われます。
abortが返されると、[戻す]ボタンを押されたことが中止されます。つまり、ダイアログの状態は元には戻されません。
:AFTERRETRY
編集ダイアログで[戻す]ボタンが押され、編集ダイアログの状態を書き戻した後に、このラベルより解釈・実行が行われます。
abortが返されても、単にスクリプトの解釈が終了します(EXITと同じです)。
:HELP
編集ダイアログで[ヘルプ]ボタンが押されたときに、このラベルより解釈・実行が行われます。
abortが返されると、ヘルプの呼び出しは中止されます。
:IDSAVE
編集ダイアログで[保存]ボタンが押されたときに、このラベルより解釈・実行が行われます。
abortが返されると、ファイルからのダイアログの状態保存は中止されます。
:IDLOAD
編集ダイアログで[読込]ボタンが押されたときに、このラベルより解釈・実行が行われます。
abortが返されると、ファイルからのダイアログの状態読出は中止されます。
:TRY
いじくるつくーるが実行を開始するときに呼び出されます。
abortが返されると、スクリプトファイルはいじくるつくーるの機能項目一覧に表示されなくなります。
(注意:一覧に表示されないだけで、「ファイルを指定して開く」メニューからは実行可能です)
定義部に TRY=OFF が指定してあると、このラベルは呼び出されずに、項目名が機能項目の一覧に表示されます。TRY=ABORT が指定してあると、このラベルは呼び出されずに、項目名が機能項目の一覧に表示されません(Rnsf7.rsc「ヘルプ」-「更新確認の設定」(R7update.rsc)で利用しています)。TRY=IF(〜)が指定してあると、(〜)の部分に指定された式が評価され、:TRYは呼び出されません。
:UNINST
いじくるつくーるがアンインストールを行うときに呼び出されます。
abortが返されても、単にスクリプトの解釈が終了します(EXITと同じです)。
4. ヒント
4.1 C言語との違い
C言語との主な違いについてまとめます。
- C言語は文(実行単位)を ; (セミコロン) で区切るのに対し、R-Scriptは行を実行単位とし、改行で区切る。
- C言語は " と ' を表現するために \" と \' をそれぞれ用いるが、R-Scriptではこの方法の他に、"は ' で囲まれた文字列中で表現し、' は " で囲まれた文字列中で表現する方法がある。この方法を用いる場合に " と ' の両方を含む文字列を扱うときは、" と ' を構成する文字列に分割し、それらを + 演算子で足す。
- C言語は変数を宣言するが、R-Scriptでは変数宣言は不要。そのため、変数名の管理には注意を要する。また、配列はARRAY命令で宣言する。
- C言語にはfor, while, do-while があるが、R-Scriptにはfor, while, repeat-until, loop がある。forの書式は異なる。
- C言語では後置whileとして do-while があるが、R-Scriptでは repeat-until がある。while の条件式は真ならば繰り返しだが、until の条件式は偽ならば繰り返しになる。
- C言語では条件演算子( ? : ) では、評価されない方の式は実行されないが、R-Scriptでは評価されない方の式も実行される。
- C言語ではIF文の中などの論理演算子は、必要のないものは実行されないが、R-Scriptではすべて実行される。
- 各演算子の優先順位が(たぶん)ちょっとだけ違うと思う(未確認ですごめんなさい)。
- C言語のコメントは /* 〜 */ (と // 〜 ) だが、R-Scriptのコメントは // 〜 と # 〜 と ; 〜。
- C言語ではifやwhileで { } を省略できることがあるが、R-Scriptでは、 { } を省略できなかったり、省略すると意味が変わる。
- C言語では変数にスコープ(有効範囲)が存在するが、R-Scriptでは、スクリプトファイル内全体がスコープ(有効範囲)になる。
- C言語ではサブルーチンとして関数が定義できるが、R-Scriptでは関数やプロシージャは定義できない。
- 他、いろいろ。
4.2 R-Script固有のヒント
R-Scriptはインタプリタ方式の実行であり、また、レジストリの特性から、Windowsのバージョンごとの分岐が多くなると思われることから、1つの環境での試験ではエラーをつかみにくいことがあるので注意して下さい。
数値型を文字列型に変換する場合は、 "" + 数値 と書くことができます。
逆に文字列型を数値型に変換するときは、0 + 文字列 と書くことができます。
whileは、繰り返し条件判定しか行いませんから、whileをfor文の要領で使いたいときは、値のインクリメントを忘れないようにして下さい。インクリメントが必要なのにインクリメントを忘れると、スクリプト内部で永久ループしてしまいます。永久ループにはまってしまった場合は、Shift+Escでスクリプト実行を中断するか、Ctrl+Alt+Delで「いじくるつくーる」を強制終了しなければなりません。
実際のスクリプト作成をする場合、文法を参考にしつつ、サンプルプログラムも参考にするとよいと思います。サンプルプログラムとして、いじくるつくーるに標準付属しているスクリプト(rscファイル)を参考にして下さい。
5. おまけ
いじくるつくーると同じフォルダに Rnsf7.bmp という名前のビットマップファイルがあると、いじくるつくーるの開始時〜起動完了にそれを読み込んで、ウィンドウ中央に表示します。
目次
文結合ルール
R-Scriptについて
R-Scriptの関数一覧
DLLの呼び出しルール
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は「いじくるつくーる」最終公開時点、あるいは、それより古い時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
このページに関するご意見の受け付けは終了しています。