コマンドパラメータ記法


コマンドラインの概略

 コマンドラインは一行のテキストで、プログラム名とそれに与えるパラメータを指定する。 このとき、複数のコマンドを連結して、 前方のプログラムから後方のプログラムへデータを渡す機能(パイプライン接続)や、 プログラムにファイルの内容を与えたり、出力するファイルを指定する機能(リダイレクト)がある。

書式

command [ parameter ]* [ | command [ parameter ]*]* [ <input_filename] [ >output_filename | >>output_filename]
 コマンド名とパラメータを組にしたものが、一つの実行単位=コマンドを表わす。 一般的にはコマンドは標準入力と標準出力というデータの受け渡し口を持っている。 コマンドを | で繋ぐと、前方のコマンドの出力を後方のコマンドに与えることになる。 コマンドはこの方法で、(実用的な範囲で)複数連結できる。
こうして繋ぐと、一番最初のコマンドの入力と一番最後のコマンドの出力が決定されないことになる。 そこで、< の後にファイル名を書いて一番最初のコマンドの入力とし、 > または >> の後にファイル名を書いて一番最後のコマンドの出力先とする。 出力に関しては、新規にファイルを作成する場合は>を使用し、 既存のファイルに追加する場合には>>を使用する。
多くのコマンドは、パラメータにファイル名を書くと標準入力を使用せず、 指定されたファイルを処理するのが慣例である。

標準入力と標準出力

 実行されるプログラム=コマンドは、外部とのデータの受け渡しのために、 標準入力と標準出力という二つの機能を持っている。
標準入力は、外部からデータを与えるためのもので、 コマンドラインの前方のプログラムからの標準出力のデータを受け取ったり、 入力のリダイレクト機能( < )で指定したファイルからデータを受け取る。
標準出力は、外部へデータを出力するためのもので、 コマンドラインの後方のプログラムの標準入力へデータを渡したり、 出力のリダイレクト機能( >>> )で指定したファイルへデータを書き込む。
また、コマンドラインを起動する上位のアプリケーションが、 標準入出力を用いてコマンドラインとデータの交換を行うことも有る。 この場合は、リダイレクト機能を使用すると、データの交換が出来ない。

パイプライン接続

 コマンドラインには | で区切って、複数のプログラムを記述できる。 このとき、| で隣り合わせたプログラム同士は、 前方のプログラムの標準出力と後方のプログラムの標準入力が繋ぎ合わされる。 この接続をパイプライン接続という。
 パイプライン接続によって前方のプログラムの出力を後方のプログラムが受け取って処理できるようになる。 パイプラインの接続の実現は、本システムでは以下の3種類の方法を実装している。
WINDOWSの無名パイプ機能による接続
コマンドライン上のコマンドはすべて同時に起動される。 ディスク上に作業ファイルは不要。従って、一般的に処理は高速になる。 システム負荷は大きい。
一般的にはこの方法で使用する。
中間ファイルによる接続
コマンドライン上のコマンドは先頭から順に起動され、実行する。 ディスク上に作業ファイルが必要。従って、一般的に処理は遅い。 システム負荷は軽い。
MS-DOSのパイプライン機能による接続
コマンドラインそのものをMS-DOSのコマンドラインとして与える。 MS-DOS形式のプログラムや、コンソールコマンドを利用できる。
Windows 98では機能しない。
一般的には使用すべきではない。
 通常は、WINDOWS の無名パイプ機能による接続を用いる。 無名パイプ機能による接続以外は、起動するためのコマンドや、それに対するオプションの指定で行う。
 また、これら三つの方法は、ファイルの生成タイミングが異なるので、完全な互換性は無いことに注意しなければならない。

標準入力のリダイレクト

 コマンドラインの先頭のコマンドには、先行するコマンドが無いので、 標準入力の接続先が明示されていない。これに、特定のファイルを割り当てるのが、 入力のリダイレクト機能である。 入力のリダイレクトは、 <filename の形で、 コマンドラインに一つだけ書くことが出来る。

標準出力のリダイレクト

 コマンドラインの最後のコマンドには、後続するコマンドが無いので、 標準出力の接続先が明示されていない。これに、特定のファイルを割り当てるのが、 出力のリダイレクト機能である。 出力のリダイレクトはファイルの取扱によって以下の二種類のものがある。
>filename
ファイルは新規に作成され、 ファイルの内容は、最後のコマンドの出力そのものとなる。
>>filename
既存のファイルを指定する。 指定したファイルの後ろに最後のコマンドの出力を追加する。
 出力のリダイレクトは、コマンドラインに一つだけ書くことが出来る。
ファイル名 nul は特殊で何も出力しないことを表す。
cat >nul
は何もないところにリダイレクトされる。つまり、出力が消える!。

リダイレクト記述上の注意点

  1.  リダイレクトを書く位置は、任意である。 しかし、混乱を避けるために行末に書くことを勧める。
    cat *.txt >output.lst
    cat >output.txt *.txt
    は、同じもの。さらに、
    >output.txt cat *.txt
    と書いても良い。しかし、一番解りやすいのは、最初に挙げた書き方である。

  2.  リダイレクト先、あるいはリダイレクトもとのファイル名にスペースなどを含むとき、 ファイル名を引用符で囲む必要がある。このとき、引用符で囲むのはファイル名の部分である。
    CAT *.TXT >"output select.lst"

コマンドのパラメータ

 各コマンドには、パラメータがそのまま渡される (当然ながらリダイレクト記述は渡されない)。
 しかし、これだけでは、ファイル名やオプションの間接指定など、 不便な事が多いので、一般的にはSHELL機能と呼ばれているような パラメータの展開機能が、各コマンドに実装されている。
 一般的には、次の2段階を通して、パラメータを解釈する。
  1. 間接記述による展開など
    スペースを含むパラメータなどを考慮して、 パラメータを"'でまとめ、 先頭に特殊な文字 !^@# が ある場合の間接記述の展開をする。
  2. オプション解釈
    先頭に - があるパラメータをオプション指定として解釈する。
 コマンドによって、実装の詳細が異なる。一貫性をやや欠くが、柔軟な記述を提供できる。
 このパラメータ解釈がコマンド自身に実装されているのは、 本システム外のプログラムを併用する場合の障害を取り除くための選択である。

コマンドの実行環境

 環境文字列、及び、カレントパスを、起動した親に相当するプログラムから引き継ぐ。 起動された子プログラムから、親プログラムの環境文字列や、カレントパスを操作できない。 これは、自身が環境文字列や、カレントパスを操作するプログラムの実行において留意すべき事である。

戻り値

 コマンド、及び、コマンドラインは整数値の戻り値を呼び出したプログラムに返す。 別途記述するスクリプト、ではこの値を利用できる。
 本来、コマンドの戻り値には制限が無いが、 過去からのいきさつで、エラーの場合には0を返すことになっているので、これを踏襲することが好ましい。 特別な場合を除き、エラーの場合は0を返し、それ以外では1を返す。 戻り値に意味を持たせた場合でも、エラー、あるいは、不成功以外では1以上を返す。
これは、慣習であって、規則ではない。

パラメータの展開

 コマンドに与えられた文字列は、パラメータの区切りの解釈を行い、 それぞれのパラメータに分解した後、必要ならば、各パラメータ毎に間接展開を行う。
 パラメータ区切りには、引用符によるまとめの機能があり、これは、例えば、 空白を含むファイル名の解釈などに有用である。
 また、間接展開は、処理ファイル名のファイルによる一括指定などに有用である。 間接展開の機能のいずれをが有効であるかは、コマンドによるが、一般的なコマンドは、 !記述群、^記述群、@記述群が有効である。

パラメータの区切り

 パラメータの区切りは空白文字(スペース、タブ)。
CAT ABC DEF
と書いた場合は、CAT がコマンド名、ABCDEF が コマンドに与えるパラメータとなる。

引用符

引用符(「'」、「"」)で囲むと、その間を一つのパラメータとみなす。
 空白の後の引用符が引用の始まりを表し、同じ引用符がその終わりを表わす。
 この方法で、空白を含むファイル名やパラメータを指定する。
CAT "ABC DEF" 'VALUE FILE'
と書けば、「ABC DEF」と「VALUE FILE」をパラメータとすることが出来る。
同様に、パイプライン指定に使用する|やリダイレクトに使用する <> 等の文字もパラメータやコマンド名に含めることが出来る ( ">ABC""A|B" は、それぞれ、>ABCA|B )。

 文字列を囲んでいる引用符をその中に含めたい場合は、その引用符を二つ続けて書く。 囲んでいる引用符と違う引用符は引用符として解釈されないので、そのまま書く。

"ABC""DEF"ABC"DEF
"ABC'DEF"ABC'DEF
'ABC''DEF'ABC'DEF
'ABC"DEF'ABC"DEF

 これは、MSDOS のコマンドラインとほぼ、同じ仕様になっている。

間接展開

 コマンドに沢山のパラメータを与えたり、あるいは、パラメータのリストをファイルに 置いておく場合などにこれらの記述方法を利用する。また、コマンドの実行結果を パラメータとしたり、環境変数の内容をパラメータとすることも出来る。
 いくつか例示する。
 ここで concat はコマンドラインに書かれたテキストファイルを連結するコマンドである。
ファイル FILE.LST の内容を

SAMPLE1.TXT
SAMPLE2.TXT
としておく。

  1. CONCAT !FILE.LST >OUTPUT.TXT

    FILE.LST で指定されたファイルを連結する。
    CONCAT SAMPLE1.TXT SAMPLE2.TXT >OUTPUT.TXT
    と書いた事になる。
  2. CONCAT !@TSTEMP >OUTPUT.TXT

    環境変数TSTEMP に示されたファイルを出力
    TSTEMP = SAMPLE1.TXT ならば、
    CONCAT SAMPLE1.TXT >OUTPUT.TXT
    と書いたことになる。
  3. CONCAT !:TSTEMP >OUTPUT.TXT

    環境変数TSTEMP に示されたファイルをファイルリストと考え、 そこに書かれた名称のファイルを連結して出力。
    TSTEMP=FILE.LSTならば、
    CONCAT !FILE.LST >OUTPUT.TXT
    と 同じ。つまり、
    CONCAT SAMPLE1.TXT SAMPLE2.TXT >OUTPUT.TXT
    と書いたことになる。
  4. CAT *.C | CONCAT !! >OUTPUT.TXT

    CAT コマンドが出力した内容をファイルリストとして扱う。 これはパイプラインによるパラメータ展開の例。
  5. CONCAT "!#CAT *.C" >OUTPUT.TXT

    CAT コマンドが出力した内容をファイルリストとして扱う。 これは、実行によるパラメータ展開の例。

 @記述、!記述、^記述、#記述によるパラメータ展開は、引用符の処理の後に行われる。 従って、"@@" は単独の @@ 、"@listfile" は @listfile と同じ扱いとなる。 パラメータに空白を含む場合は、@#!^ を含めて引用符で囲んで置くと良い。
また、@#!^ で始まるファイル名をパラメータとする場合(つまり展開したくない場合)、 その記号を二つ重ねることで記述できるが、あまり、推奨できない。 (例えば、!ABC.LST というファイル名を書く場合は、!!ABC.LST と書く)。

 間接指定は種類が多く、煩雑だが、通常は、「!!」(標準入力からのパラメータ取得)「!filename」(ファイルからのパラメータ取得)ぐらいを覚えておけばよい。それ以外は、必要に応じて参照するだけで十分である。

 機能を簡単にまとめた表
![prefix]filename ファイルの各行
!{[]|()}filename 行区切りを用いたブロック読み込み
!! 標準入力の各行
!@[prefix]envname 環境変数の内容(ひとまとめ)
!@:[prefix]envname 環境変数の内容(行ごと)
!@ 環境変数QS_ARGn(n=1...)のすべての内容
!:[prefix]envname 環境変数の内容が示すファイルの各行
!=template 引数置換(ひとまとめ)
!:=template 引数置換(行ごと)
!#[prefix]commandline コマンドラインの実行結果の各行
!^expr TSEXPR評価(ひとまとめ)
!^:expr TSEXPR評価(行ごと)
!^^expr TSEXPR評価のみ
! 以降 ! 記述無効
^[prefix]filename ファイルのタブ項目
^^ 標準入力のタブ項目
^:[prefix]envname 環境変数の内容が示すファイルのタブ項目
^#[prefix]commandline コマンドラインの実行結果のタブ項目
^=[prefix]pattern ファイル名展開
^![prefix]pattern フォルダー名展開
^@[prefix]pattern フォルダー名/ファイル名展開
^ 以降 ^ 記述無効
@filename ファイルの区切展開
@@ 標準入力の区切展開
@!envname 環境変数の内容を区切展開
@:envname 環境変数の内容で示されたファイルを区切展開
@#commandline コマンドライン実行結果の区切展開
@=str 文字列を正規表現展開する
@^comment 何もしない。コメント記述に用いると良い。
@^ 以降の間接展開をすべて無効にする
@: 以降の区切展開で再展開を無効にする
@! 以降の区切展開で再展開を有効にする
@ 以降 @ 記述無効
#[prefix]filename ファイルの内容を全部ひとまとめ
## 標準入力の内容を全部ひとまとめ
#:[prefix]envname 環境変数で示されたファイルの内容全部ひとまとめ
#![prefix]commandline コマンドライン実行結果を全部ひとまとめ
# 以降 # 記述無効

!記述(行展開)

 ファイル、標準入力(前のコマンドの出力)、あるいは、コマンド実行結果の内容の各行をそれぞ一つのパラメータとして扱う。 WINDOWSのシステムではファイル名の中に空白が入っていることが多いので、使用する頻度は高い。 ファイル名に空白が入っている場合でも、一行に書き出せば、それをファイル名として扱える。
 以下の10種類の記述がある。

![prefix]filename

 指定のファイルの各行がそれぞれ一つのパラメータ。

 最も良く使う形式。
プリフィックス修飾機能がある。

file.lstの内容が、次のような行で構成されているものとする。
abc def
second line
記述展開
!file.lst abc def
second line
![-S]file.lst -Sabc def
-Ssecond line

!{[]|()}filename

 行セパレータによるブロック読みこみ。

ファイルの一行目を行セパレータとして読み込み、以降、行セパレータで区切られた複数行を一つのパラメータとして扱う。
最後の行が行パラメータならば、最後に空行は付加しない。

パラメータ内では行間を行末(0x0a)で区切る。パラメータ内の最後の行には行末は付かない。

!()filenameの形式で記述すると、セパレータの連続はひとまとめに扱われる。

![]filename、!()filenameのほかに!{}filenameも認識するが、将来の互換性のため、!{}filenameは使用しないこと。

!!

 標準入力の各行がそれぞれ一つのパラメータ。

cat *.txt | concat !! -ofile.lst とすれば、cat の出力するファイル名リストを 行単位で concat のパラメータとできる。 行単位で適用するので、ファイル名にスペースが入っていても問題はない。

!@[:][prefix]envname

 環境変数の内容をパラメータとする。

 環境変数の内容が複数行であったときの取り扱いで記法が異なる。

!@... 環境変数の内容が複数行でも、一つのパラメータになる。必ず一つのパラメータになる
!@:... 環境変数の内容の各行がそれぞれ一つのパラメータになる。

プリフィックス修飾機能がある。

環境変数 myparam の内容が、 "src.txt" であったとすれば、
concat !@mypramは、concat "src.txt" と同一。さらに、
concat !@[-S]myparamは、concat "-Ssrc.txt"と同一になる。

!@

 環境変数QS_ARGnの内容。

 環境変数QS_ARGn(n=1...)のすべての内容をパラメータとする。

!:[prefix]envname

 環境変数の内容が示すファイルの各行をそれぞれ一つのパラメータとする。

プリフィックス修飾機能がある。

例えば環境変数 TSTEMPFILE.LST と書かれていれば、
command !:TSTEMP
は、FILE.LSTの内容を行単位でパラメータとして展開する。
つまりcommand !FILE.LSTと同じ。

![:]=template

template を引数置換のテンプレートとして処理した結果をパラメータとする。

 引数置換には引数指定は出来ないが、環境文字列の差込や、TSEXPR の差込などができる。置換の結果が複数行になった場合の取り扱いの違いで、異なった記法がある。

!= 置換結果が複数行であっても、一つのパラメータにまとめられる。必ず一つのパラメータになる。
!:= 置換結果の各行がそれぞれ一つのパラメータになる。
二行書けば、二行のパラメータとなる。
置換結果が "" の場合はパラメータにならない。

 引数置換において、番号パラメータ( %n )は n が負でなければ QS_ARGn の値を返す。n が負ならば、QS_ARGC の値(パラメータの数)を返す。

環境変数 myparam の内容が、"src"であったとすれば、
CONCAT !=-o%@mypram;.txtは、concat -osrc.txt と同じ。

!#[prefix]commandline

 コマンドラインの実行結果の各行をそれぞれ一つのパラメータとする。

 ここに書くコマンドラインは、標準入力を処理せず、テキストを標準出力し、さらに、出力量は常識的な範囲であることが望ましい。
プリフィックス修飾機能がある。

CONCAT "!#CAT *.TXT"
ならば、CAT *TXT の出力を行単位でパラメータとする。
CONCAT "!#CAT *.TXT|LXTRA ^A.*"
ならば CAT *.TXT|LXTRA ^A.* の出力を扱う。
このように、commandline は、パイプライン接続も可能。 さらに、リダイレクトも扱う。
!^[:|^]expr

 TSEXPRを評価した結果をパラメータとする。

 複数行の結果が得られたときの扱い方と、評価だけする方法のために、異なる記法がある。

!^ 評価の結果が複数行であっても、一つのパラメータになる。
!^: 評価の結果の各行がそれぞれ一つのパラメータになる。
!^^ 式評価はするが、パラメータは作らない。 環境変数のセットや、初期パラメータ設定などに使用すると良い。

TSEXPRの中では以下のアプリケーション変数が有効。式中で結果の扱いを変更できる。

??enable パラメータを生成することを示す論理値。以下の形式で代入できる
??enble := 論理値
??multi 各行を別のパラメータにすることを示す論理値。以下の形式で代入できる
??multi := 論理値
!

 以降のパラメータ展開で!記述を無効とする。

以降に現れた !記述は、記述そのものがパラメータとなる。


^記述(タブ展開)

 ファイル、標準入力の内容のタブ項目がそれぞれ一つのパラメータとする。
行内の項目がタブで区切られているものして、項目を一つのパラメータとして展開する。 空行の場合は、項目が一つも無いものとする。 通常の使用では、!記述で足りるが、タブファイルの出力を引数にする場合に便利である。 以下の8種類の記述がある。
名称展開関係の3種類は、タブ項目ではないが便宜上ここに書かれている。 また、一部の記述では、!記述と同様にプリフィックス修飾機能が有効である。

^[prefix]filename

 指定のファイルのタブで区切られた項目をそれぞれ一つのパラメータとする。

 プリフィックス修飾機能がある。

^^

 標準入力のタブで区切られた項目をそれぞれ一つのパラメータとする。

^:[prefix]envname

 環境変数の内容が示すファイルのタブで区切られた項目をそれぞれ一つのパラメータとする。

 プリフィックス修飾機能がある。

例えば環境変数 TSTEMPFILE.LST と書かれていれば、
commnad ^:TSTEMP
は、 FILE.LST の内容をタブ項目単位でパラメータとして展開する。

^#[prefix]commandline

 コマンドラインの実行結果のタブで区切られた項目をそれぞれ一つのパラメータとする。

 プリフィックス修飾機能がある。

^=[prefix]patten

 ファイル名のワイルドカード展開。

 パターンを展開したそれぞれのファイル名が項目となる。 プリフィックス修飾機能がある。

^![prefix]patten

 フォルダ名のワイルドカード展開。

 パターンを展開したそれぞれのフォルダ名が項目となる。 プリフィックス修飾機能がある。

^@[prefix]patten

 フォルダ名/ファイル名のワイルドカード展開。

 パターンを展開したそれぞれのフォルダ名またはファイル名が項目となる。 プリフィックス修飾機能がある。

^

 以降のパラメータ展開で^記述を無効とする。

以降に現れた ^記述は、記述そのものがパラメータとなる。

@記述(区切展開)

 ファイル、標準入力(前のコマンドの出力)あるいは、実行結果の内容から、パラメータを取り出す。 すなわち、空白を区切りとしてパラメータを取り出し、引用符の処理もコマンドラインの処理のように行う。また、展開した項目に間接展開の記述があれば、間接展開する。(再展開)
 コマンドのパラメータをそのまま、ファイルに格納などする場合に便利である。
 引用符は、行を跨いで使用できるので、改行を含むパラメータの指定が可能である。
 以下の11種類の記述がある。

再展開の機能では、展開したパラメータに間接展開があれば、展開する。この処理は再帰的に繰り返される。
単独の@:を指定すると、以降の区切展開で再展開を行わない。単独の@!を書くと、以降の区切り展開で再展開を行うように指定できる。
通常のパラメータの展開の最初は、区切展開で再展開を行う状態である。

@filename

 指定のファイルの内容を区切展開する。再展開も行う。

@@

 標準入力の内容を区切展開する。再展開も行う。

@!envname

 環境変数の内容を区切り展開する。再展開も行う。

@:envname

 環境変数の内容で示されたファイルの内容を区切り展開する。再展開も行う。

@#commandline

 コマンドラインの実行結果を区切展開する。再展開も行う。

@=string

 文字列を正規表現として展開する。

 この記法は、残念ながら区切り展開と関係がない。
パラメータの中に制御コード、主に改行、タブなどを入れる場合に使用する。 アプリケーションでは、スクリプト記述など特殊な場合を除くと、制御コードは無効なことが多い。

@^comment

何も展開しない。

 この記法は、残念ながら区切り展開と関係がない。
主にコメントの記述に使用する。コメントを書かないとすべての間接展開の禁止となるので注意すること。

@^

 以降のパラメータ展開ですべての間接展開を行わない。

@:

 以降の区切展開で再展開を行わない。

@!

 以降の区切展開で再展開を行なう。

@

 以降のパラメータ展開で @記述を取り扱わない。

以降に現れた@記述は、記述そのものがパラメータとなる。

#記述(一括展開)

 ファイルあるいは標準入力(前のコマンドの出力)の内容全てを一つのパラメータとする。 パラメータが複数の行から構成されるが、その取扱はコマンド自体の仕様による。
 ほとんどのコマンドではこの記述法は使用できない。 スクリプトやテンプレートなど、 複数行からなるパラメータを処理するに使用するために設けられた機能である。
 以下の5種類の記述がある。

#[prefix]filename

 指定のファイルの内容を全部をまとめて一つのパラメータとする。

##

 標準入力の内容を全部をまとめて一つのパラメータとする。

#:[prefix]envname

 環境変数で示されたファイルの内容を全部をまとめて一つのパラメータとする。

#![prefix]commandline

 コマンドライン実行結果を全部をまとめて一つのパラメータとする。

#

 以降のパラメータ展開で#記述を無効とする。

以降に現れた#記述は、それ自身がパラメータとなる。

プリフィックス修飾機能

 オプションの引数として結果を使用する場合を考慮して、 文字列をパラメータの前に付加する機能がある。 環境変数名の前に括弧でくくった文字列( prefix )を書くと、 その文字列をパラメータの値の前につけてる。
 括弧は、{}[]()の組で、 開き括弧、閉じ括弧をそれぞれ対応させて書く。 文字列の中に閉じ括弧と同じ文字を入れる場合は閉じ括弧を二つ重ねる。 文字列に含まれない括弧を用いれば、閉じ括弧の重ね書きの機能を使用する必要は無い。


オプション解釈

 オプション解釈は、パラメータ展開の後に行われる。 コマンドにより、オプション解釈が存在しないものもある。
 ここで記述するオプション解釈は、コマンドでのオプション記述をある程度の一貫性を持って、 提供するために定められている。

 オプションの指定は、パラメータのうち、先頭が「-」で始まるパラメータである。
 -A、-B、-Ofilename 等のように英数字一文字でオプションの種類を指定し、 大文字小文字は判別しないのが習慣となっている。
 オプション指定自体はパラメータの一つなので、空白を含まず、一続きに書く。 また、オプション指定自体の中に空白が含まれる場合には全体を引用符で囲めば良い。 上述の!記述の場合には、この必要は無い (1行の先頭が - で始まれば、その行全体が一つのオプション指定となる)。

 先頭に - を含むファイル名などをオプションと解釈させないために、 以下の面倒くさい機能が提供されている。通常は、考慮しなくても良い ( - をファイル名に含めなければ良い)。

  1. - を先頭に含むパラメータをオプションと解釈させないためには、 - を余分に書く。
    --ABC.TXTは、-ABC.TXTと解釈され、オプションとして扱わない。
  2. - を単独で書くと、それ以降のパラメータは、オプションとして取り扱わない。
    例えば、ファイル FILE.LST の中にあるファイル名のリストの先頭に - があるかもしれない場合、
    CONAT -OOUTPUT.TXT - !FILE.LST と書けば良い。オプションが必要な場合は、この例のように、- よりも前に書く必要がある。


高速実行モード

 本システムのプログラムの多くは、実際には WINDOW を開く必要がない。 しかし、実行状況の確認や、強制終了の便宜のために、 WINDOW 処理用のスレッドを特別に作成して実行している。
 このため、実際の実行時間を測定すると、プログラム自身の実行時間よりも、 WINDOW の処理に使われる時間のほうが長いことが多い。 特に、スクリプト実行や、繰り返し実行の場合には、これが顕著である。
 これに対応するために、明示的にWINDOWを使用しないプログラムは、 環境変数 TS_NOWINDOW の値を見て、WINDOW を使用しない高速実行モードを持っている。

例えば、QSスクリプトでは以下のように書けば、高速実行モードに入る。

SETENV TS_NOWINDOW TRUE
 高速実行モードから出るには、次のように書く。  
SETENV TS_NOWINDOW
TSスクリプトでは以下のように書けば、高速実行モードに入る。
_ENV TS_NOWINDOW TRUE
 高速実行モードから出るには、次のように書く。  
_ENV TS_NOWINDOW

高速実行モードは処理速度が速いが、実行状態をタスクバーでモニターしたり、ALT+F4で 強制終了させたりできない。ループする可能性のあるスクリプト実行や、 LXTRACXTRA のようにプログラム自体がパラメータによっては ループしてしまう場合には、CTR+ALT+DELでプログラムを強制終了させる他に、 止める方法がない。
 普段は高速実行を行わず、記述したスクリプトや処理に自信があるばあいのみ、高速実行をすると良い。