$ZCM[DLINE] は、GT.Mプロセスを起動するコマンドラインの一部分が、"過剰:excess" を指定する文字列の値を含みます。"過剰:excess" によって、GT.Mがそのコマンドラインプロセスのすべてを完了した後に残っているコマンドラインの一部分を意味します。例えば、コマンドライン mumps -direct extra1 extra2 は、mumps -direct をコマンドライン で処理し、そして、コマンドラインの "過剰:excess "を配置、つまり $ZCMDLINE の "extra1 extra2" を、GT.Mに引き起こします。$ ZCMDLINEは、シェルのコマンドラインの入力にMルーチンにアクセスできるようになります。
実際のユーザ入力をコマンドラインはシェルによって変換されることに注意してください(例えば、引用符の1レベルの除去、ファイル名やワイルドカードの置換など)、そして、この変換されるコマンドラインはGT.Mプロセスです。
例:
$ cat > test.m write " $ZCMDLINE=",$ZCMDLINE,! quit $ mumps -run test OTHER information $ZCMDLINE=OTHER information $
これは$ZCMDLINEの値を書き込むプログラムのtest.mを作成します。コマンド行の"OTHER information"で指定された2つの空白が、シェルの前処理による$ZCMDLINEの"OTHER information" には1つだけの空白に変換される方法に注意してください。
例:
$ cat foo.m foo ; a routine to invoke an arbitrary entry with or without parameters ; set $etrap="" ; exit if the input isn't valid if $length($zcmdline) do @$zcmdline quit quit $ mumps -run foo 'BAR^FOOBAR("hello")'
この例では、GT.Mはシェル・コマンドラインをfooまで処理し、残りを$ZCMDLINEに入れます。このメカニズムにより、mumps -run はパラメータの有無にかかわらず任意のエントリ参照を呼び出すことができます。この例では、Bourne型シェルの不適切な展開を防ぐために、コマンドライン引数を一重引用符で囲んでいることに注意してください。シェルやGT.Mのエスケープとクォートの規約を使用して、不適切な展開を防ぐようにすることを常に覚えておいてください。
重要 | |
---|---|
^%XCMD ユーティリティを使用して、シェル・コマンド・ラインのコードをXECUTEし、コードが生成するすべてのエラー・ステータス(UNIXではシングルバイトに切り捨てられます)を返します。詳細は、 “ %XCMD” を参照してください。. |