ここでは、「スクリプトの実行」ダイアログ
ボックスの「実行コマンド」に
入力する MikoScript の起動コマンドについて説明します。
本コマンドでは、次のことが行なえます。
本起動コマンドの一般的な書式は、次のようになります。
<オプション> <ファイル名> <引数>
この各要素は、空白で区切ります(つまり、各要素の間には空白を入れる必要があります)。 この空白というのは、1個以上の半角空白または TAB コードです。 以降で空白という場合も同様です。次に、各要素について説明します。
これは、 操作の対象となるファイルの名称です。このファイルは、本スクリプト言語で書 かれたソースファイルか、または、本言語の翻訳によって生成された中間コード のモジュールファイルかになります。対象ファイルが、ソースかモジュールかは、 <ファイル名> の拡張子で判断します。拡張子が「.mcx 」の場合、モジュール ファイルとして扱います。拡張子が無い場合、<ファイル名> に「.mcx 」を付加 した名称のファイルをモジュールファイルとして扱います。それ以外の場合は、 ソースファイルとして扱います。
コマンドの機能は、デフォールトでは、ソースファイル、または、モジュール ファイルの実行になります。その場合、<ファイル名> の指定は1つだけに限り ます。実行以外の機能に変更するには、後述の特別な <オプション> を指定する 必要があります。
<ファイル名> の指定は、相対パスでも、絶対パスでも構いません。相対パスの場合、 基点は、カレントパスになります。 本コマンドの実行開始時点で、カレントパスは、基準パス になります。後述の /p オプションで、カレントパスを途中で変更することもできます。
<ファイル名> は、不要な場合もあれば、複数になる場合もあります。
<ファイル名> には、ワイルドカードは使えません。
<ファイル名> の中に空白文字がある場合、<ファイル名> を二重引用符で囲う
必要があります。
<ファイル名> の最初の文字が - の場合は、<ファイル名> には指定できません。
<ファイル名> がショートカットの場合、対象は、ショートカットの参照先では
なく、ショートカット自身になってしまいます。
s1.mc ソースファイル s1.mc を実行(引数なし) s2.mc a b ソースファイル s2.mc を実行(引数は a b ) s3.mcx 中間コードファイル s3.mcx を実行(引数なし) s4 c 中間コードファイル s4.mcx を実行(引数は c ) -d slib モジュールファイル slib.mcx の内容を一覧表示 -? 本コマンドの用法を表示 /m=sx /n="sample" s1.mc s2.mc s3.mc ソースファイル s1.mc s2.mc s3.mc を中間コードに 変換して、モジュールファイル sx.mcx に格納 (モジュール説明文は、sample )
モジュール格納モードに移行します。つまり、このオプション以降に指定 された <ファイル名> のファイルに対しては、ソースファイルなら、中間 コードに変換してロードし、モジュールファイルなら、そのままロードし て、最後に、全ロードモジュールを、この <モジュール格納ファイル名> のファイルに格納します。この /m オプション以降の <ファイル名> は、 複数指定できます。
<モジュール格納ファイル名> に拡張子が無い場合、それに「.mcx 」を 付加した名称のファイルに格納します。
<モジュール格納ファイル名> の指定が無い場合( /m だけの場合)は、
最初にロードされたモジュールの名称に拡張子「.mcx 」を付加した名称
のファイル名に格納します。
例: -m=hello
-m=GLib.mcx
スクリプトファイルを実行する場合の書式は、一般的には、次の通りですが、 <オプション> は、無し、または、/d /m /n 以外を使います。
<オプション> <ファイル名> <引数>
実行対象の <ファイル名> は、必ず1つ指定する必要があります。
<ファイル名> 以降の項は全て、主関数に渡す <引数> になります。
<オプション> がない場合、実行対象のソースファイルの拡張子は、「.mc 」または「 .s 」を 使います。もし、これ以外の拡張子を使うと、「.mcx 」でなければ、 ActiveX スクリプトのソースファイルとして扱われます。
<オプション> がある場合、<ファイル名> が、ActiveX スクリプトのファイルとして 扱われることはないので、実行対象のソースファイルの拡張子は、特に制約はありません。 しかし、慣習上「.mc 」または「 .s 」を使います。 また、「.mcx 」は、モジュールファイルとして扱われるので、使えまません。
実行対象のモジュールファイルの拡張子は、「.mcx 」に限定されます。
<ファイル名> に拡張子が無い場合、<ファイル名> に「.mcx 」を付加した名称の ファイルが、モジュールファイルとして実行対象になります。
実行対象がソースファイルの場合、まず、コンパイルされて、中間コードに変換 されますが、この時、コンパイルエラーになると実行は行なわれません。
hello.mc
これは、基準パスにある hello.mc という ソースファイルを引数なしで実行します。
d:\tools\dump file.dat
これは、d:\tools というディレクトリーにある dump.mcx というモジュールファイルを、 引数 file.dat で実行します。
..\test.s abc xyz
これは、基準パスよりも1つ上のディレクトリ にある test.s というソースファイルを、引数 xyz と abc で実行します。
モジュールファイルを生成する場合の書式は、次のように、 必ず /m と /n のオプションの両方またはどちらかを、最初に指定する必要があります。
/m=<モジュール格納ファイル名> /n=<説明文> <ファイル名> ...
モジュールファイルの生成では、本スクリプト言語で書かれた1つ以上のソース ファイルを、それぞれ中間コードに変換して、1つのファイルにまとめて格納 することができます。また、既に中間コードで格納されている複数のモジュール を1つのファイルにまとめて格納することもできます。あるいは、その両方を まとめて行なうこともできます。
モジュールファイルの生成では、スクリプトの実行は行なわれません。
/m hello.mc
これは、(スクリプト実行時の)カレントパス (つまり、基準パス)にある hello.mc と いうソースファイルをコンパイルして、 その中間コードのモジュールファイルを、カレントパスの hello.mcx と いうファイルに格納します。
/m=..\lib\slib /n="string library" s1.mc s2.mc s3.mc
これは、カレントパス(例1参照)にある s1.mc と s2.mc と s3.mc の3つのソース ファイルをコンパイルして、その各中間コードのモジュールを、カレントパス を基点に ..\lib のディレクトリー内の slib.mcx というモジュールファイルに まとめて格納します。この時、モジュールの説明文は、"string library" になります。<オプション> の <パラメータ>、<ファイル名>、あるいは、<引数> の中に 空白がある場合、二重引用符で囲う必要があるということは、既に述べましたが、 その二重引用符の囲いの中で、二重引用符自身を使う場合は、 その中の各(1個の)二重引用符を2個の二重引用符に置き換える必要があります。
例えば、サンプルスクリプト集にある ArgPrint.mc は、<引数> の数と、 その内容をそのままプリントするプログラムですが、これを、
ArgPrint.mc "printf( ""hello, world\n"" );"
のように実行すると、次の通りプリントされます。
1
printf( "hello, world\n" );
なお、二重引用符内の \ は、特別な意味はなく、通常の文字として扱われます。 例えば、
ArgPrint.mc "--""ABC""-- \p \" XYZ
のように実行すると、次の通りプリントされます。
2
--"ABC"-- \p \
XYZ