'\" te .\" Copyright 1989 AT&T .\" Copyright (c) 2007, 2010, Oracle and/or its affiliates.All rights reserved. .\" Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html. This notice shall appear on any product containing this material. .TH m4 1 "2010 年 8 月 11 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 m4 \- マクロプロセッサ .SH 形式 .LP .nf \fB/usr/bin/m4\fR [\fB-e\fR] [\fB-s\fR] [\fB-B\fR \fIint\fR] [\fB-H\fR \fIint\fR] [\fB-S\fR \fIint\fR] [\fB-T\fR \fIint\fR] [\fB-D\fR\fIname\fR [\fI=val\fR]] ... [\fB-U\fR \fIname\fR] ... [\fIfile\fR]... .fi .LP .nf \fB/usr/xpg4/bin/m4\fR [\fB-e\fR] [\fB-s\fR] [\fB-B\fR \fIint\fR] [\fB-H\fR \fIint\fR] [\fB-S\fR \fIint\fR] [\fB-T\fR \fIint\fR] [\fB-D\fR\fIname\fR [...\fI=val\fR]] [\fB-U\fR \fIname\fR] ... [\fIfile\fR]... .fi .SH 機能説明 .sp .LP \fBm4\fR ユーティリティーは、C、アセンブラ、およびその他の言語のフロントエンドとして設計されたマクロプロセッサです。引数の各ファイルは順に処理されます。ファイルが存在しないか、ファイルが \fB-\fR の場合、標準入力が読み取られます。処理されたテキストは標準出力に書き込まれます。\fB注:\fR \fBm4\fR には 9 つを超えて入れ子にしたファイルを含めることができず、この数値を超えると診断メッセージが書き込まれます。 .SS "マクロの構文" .sp .LP マクロ呼び出しの書式は、次のとおりです。 .sp .in +2 .nf \fIname\fR(\fIarg1\fR,\fIarg2\fR, ..., \fIargn\fR) .fi .in -2 .sp .sp .LP マクロの名前の直後に左括弧文字 \fB(\fR が必要です。定義されたマクロの名前の後に \fB(\fR が続かない場合は、引数を持たないマクロの呼び出しであるとみなされます。指定可能なマクロ名は英数字とアンダースコア (\fB_\fR) で構成され、最初の文字は数字はありません。 .sp .LP 引用符で囲まれていない先頭の空白、TAB、および \fBNEWLINE\fR は、引数を収集するときに無視されます。文字列を引用符で囲む場合、左と右の一重引用符が使用されます。引用符で囲んだ文字列の値は、引用符を除いた文字列です。 .SS "マクロの処理" .sp .LP マクロ名が認識されると、マクロの引数は、対応する右括弧を検索することによって収集されます。指定された引数が、マクロ定義内の引数より少ない場合、後方の引数は \fINULL\fR とみなされます。マクロの評価は通常、引数を収集している間に行われ、入れ子にされた呼び出しの値の内部に見つかったすべてのコンマまたは右括弧は、元の入力テキスト内のものと同様の効果があります。引数の収集後、マクロの値は入力ストリームにプッシュバックされて再スキャンされます。 .SH オプション .sp .LP オプションとその効果は次のとおりです。 .sp .ne 2 .mk .na \fB\fB-B\fR\fIint\fR\fR .ad .RS 9n .rt プッシュバックおよび引数収集バッファーのサイズをデフォルトの 4,096 から変更します。ゼロ以下のサイズの値は無視され、デフォルト値が使用されます。 .RE .sp .ne 2 .mk .na \fB\fB-e\fR\fR .ad .RS 9n .rt 対話形式で動作します。割り込みは無視され、出力はバッファーされません。 .RE .sp .ne 2 .mk .na \fB\fB-H\fR\fIint\fR\fR .ad .RS 9n .rt シンボルテーブルハッシュ配列のサイズをデフォルトの 199 から変更します。パフォーマンスを向上させるには、サイズを素数とする必要があります。ゼロ以下のサイズの値は無視され、デフォルト値が使用されます。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .RS 9n .rt C プリプロセッサ用のライン同期出力を有効化します (\fB#\fRline . . . ) .RE .sp .ne 2 .mk .na \fB\fB-S\fR\fIint\fR\fR .ad .RS 9n .rt 呼び出しスタックのサイズをデフォルトの 100 スロットから変更します。マクロは 3 つのスロットを使用し、マクロ以外の引数は 1 つ使用します。ゼロ以下のサイズの値は無視され、デフォルト値が使用されます。 .RE .sp .ne 2 .mk .na \fB\fB-T\fR\fIint\fR\fR .ad .RS 9n .rt トークンバッファーのサイズをデフォルトの 512 バイトから変更します。ゼロ以下のサイズの値は無視され、デフォルト値が使用されます。 .RE .sp .LP 上記のフラグを有効にするには、すべてのファイル名の前と、次に示すすべての \fB-D\fR または \fB-U\fR フラグの前にフラグを指定する必要があります。 .sp .ne 2 .mk .na \fB\fB-D\fR \fIname\fR[\fB= \fR\fBval\fR]\fR .ad .RS 18n .rt \fIname\fR を \fBval\fR に定義し、\fBval\fR が存在しない場合は \fINULL\fR に定義します。 .RE .sp .ne 2 .mk .na \fB\fB-U\fR\fIname\fR\fR .ad .RS 18n .rt \fIname\fR の定義を解除します。 .RE .SH オペランド .sp .LP 次のオペランドを指定できます。 .sp .ne 2 .mk .na \fB\fIfile\fR\fR .ad .RS 8n .rt 処理されるテキストファイルのパス名。\fIfile\fR を省略したり、 – を指定したりすると、標準入力から読み取られます。 .RE .SH 使用法 .sp .LP \fBm4\fR ユーティリティーでは次の組み込みマクロを使用できます。これらのマクロは再定義できますが、再定義を実行すると元の意味は失われます。特に指定がないかぎり、これらの値は \fINULL\fR です。 .sp .ne 2 .mk .na \fB\fBchangequote\fR\fR .ad .RS 15n .rt 引用符の記号を第 1 および第 2 の引数に変更します。記号の長さは最大 5 文字まで指定できます。\fBchangequote\fR に引数がない場合、元の値 (つまり \fB` '\fR) に復元されます。 .RE .sp .ne 2 .mk .na \fB\fBchangecom\fR\fR .ad .RS 15n .rt 左および右のコメントマーカーを、デフォルトの \fB#\fR および \fBNEWLINE\fR から変更します。引数を指定しない場合、コメントメカニズムは実質的に無効になります。引数が 1 つの場合、左のマーカーは引数になり、右のマーカーは \fBNEWLINE\fR になります。引数が 2 つの場合、両方のマーカーが影響を受けます。コメントマーカーは最大 5 文字まで指定できます。 .RE .sp .ne 2 .mk .na \fB\fBdecr\fR\fR .ad .RS 15n .rt 引数の値を 1 つ減らして返します。 .RE .sp .ne 2 .mk .na \fB\fBdefine\fR\fR .ad .RS 15n .rt 2 番目の引数が、最初の引数の名前を持つマクロの値としてインストールされます。置換テキストに \fB$\fR\fI n\fR が現れるごとに (\fIn\fR は数値) \fIn\fR 番目の引数で置換されます。引数 0 はマクロの名前で、欠落している引数は NULL 文字列で置き換えられます。\fB$#\fR は引数の数で置き換えられ、\fB$*\fR は、コンマで区切られているすべての引数のリストによって置き換えられます。\fB$@\fR は \fB$*\fR に似ていますが、各引数は (現在の引用符によって) 囲まれます。 .RE .sp .ne 2 .mk .na \fB\fBdefn\fR\fR .ad .RS 15n .rt 引用符で囲まれた引数の定義を戻します。これは、特に組み込みマクロなどのマクロの名前を変更する場合に便利です。 .RE .sp .ne 2 .mk .na \fB\fBdivert\fR\fR .ad .RS 15n .rt \fBm4\fR では 10 個の出力ストリームが保持され、0 から 9 までの番号が付いています。最終出力は、ストリームを数値順に連結したものになります。初期の状態ではストリーム 0 が現行のストリームです。\fBdivert\fR マクロは、現行の出力ストリームを (数字文字列の) 引数に変更します。0 から 9 まで以外のストリームへの出力は破棄されます。 .RE .sp .ne 2 .mk .na \fB\fBdivnum\fR\fR .ad .RS 15n .rt 現在の出力ストリームの値を返します。 .RE .sp .ne 2 .mk .na \fB\fBdnl\fR\fR .ad .RS 15n .rt 次の \fBNEWLINE\fR まで文字を読み込んで破棄します。 .RE .sp .ne 2 .mk .na \fB\fBdumpdef\fR\fR .ad .RS 15n .rt 指定された項目 (引数が指定されていない場合はすべての項目) について、現在の名前と定義を出力します。 .RE .sp .ne 2 .mk .na \fB\fBerrprint\fR\fR .ad .RS 15n .rt 診断出力ファイルに引数を出力します。 .RE .sp .ne 2 .mk .na \fB\fBifdef\fR\fR .ad .RS 15n .rt 最初の引数が定義されている場合、値は 2 番目の引数になり、それ以外の場合は 3 番目になります。3 番目の引数が存在しない場合、値は \fINULL\fR です。\fBunix\fR という語が事前定義されています。 .RE .sp .ne 2 .mk .na \fB\fBifelse\fR\fR .ad .RS 15n .rt このマクロには 3 つ以上の引数があります。最初の引数が 2 つ目と同じ文字列の場合、値は 3 番目の引数です。そうではなく、4 つを超える引数がある場合、プロセスは引数 4、5、6、および 7 を使用して繰り返されます。それ以外の場合、値は 4 番目の文字列になるか、存在しない場合は \fINULL\fR になります。 .RE .sp .ne 2 .mk .na \fB\fBinclude\fR\fR .ad .RS 15n .rt 引数で指定されるファイルのコンテンツを返します。 .RE .sp .ne 2 .mk .na \fB\fBincr\fR\fR .ad .RS 15n .rt 引数の値を 1 つ増やして返します。引数の値は、初期の数値文字列を 10 進数として解釈して計算されます。 .RE .sp .ne 2 .mk .na \fB\fBindex\fR\fR .ad .RS 15n .rt 最初の引数内で 2 番目の引数が始まる位置 (ゼロ起点) を返すか、2 番目の引数が発生しない場合は -1 を返します。 .RE .sp .ne 2 .mk .na \fB\fBlen\fR\fR .ad .RS 15n .rt 引数内の文字数を返します。 .RE .sp .ne 2 .mk .na \fB\fBm4exit\fR\fR .ad .RS 15n .rt このマクロにより、\fBm4\fR を即時終了します。指定された場合、引数 1 が終了コードで、デフォルトは \fB0\fR です。 .RE .sp .ne 2 .mk .na \fB\fBm4wrap\fR\fR .ad .RS 15n .rt 引数 1 は最終の \fBEOF\fR にプッシュバックされます。例: \fBm4wrap(`cleanup( )')\fR .RE .sp .ne 2 .mk .na \fB\fBmaketemp\fR\fR .ad .RS 15n .rt 引数内に文字「\fBX\fR」を持つ文字列に、現在のプロセス \fBID\fR を入力します。 .RE .sp .ne 2 .mk .na \fB\fBpopdef\fR\fR .ad .RS 15n .rt 引数の現行の定義を削除し、以前の定義を公開します (ある場合)。 .RE .sp .ne 2 .mk .na \fB\fBpushdef\fR\fR .ad .RS 15n .rt \fBdefine\fR と似ていますが、以前のすべての定義を保存します。 .RE .sp .ne 2 .mk .na \fB\fBshift\fR\fR .ad .RS 15n .rt 最初の引数を除くすべての引数を返します。最初の引数以外の引数は引用符で囲まれ、間にコンマが追加されてプッシュバックされます。引用符で囲むことによって、あとで実行される追加スキャンの効果を無効化します。 .RE .sp .ne 2 .mk .na \fB\fBsinclude\fR\fR .ad .RS 15n .rt このマクロは \fBinclude\fR と同じですが、ファイルにアクセスできない場合に何も表示されない点が異なります。 .RE .sp .ne 2 .mk .na \fB\fBsubstr\fR\fR .ad .RS 15n .rt 最初の引数の部分文字列を返します。2 番目の引数は、最初の文字を選択する、ゼロを起点とする数値です。3 番目の引数は、部分文字列の長さを示します。3 番目の引数がない場合は、最初の文字列の末尾まで拡張した十分な大きさとみなされます。 .RE .sp .ne 2 .mk .na \fB\fBsyscmd\fR\fR .ad .RS 15n .rt このマクロは最初の引数で指定されたコマンドを実行します。値は戻されません。 .RE .sp .ne 2 .mk .na \fB\fBsysval\fR\fR .ad .RS 15n .rt このマクロは、\fBsyscmd\fR に対する最後の呼び出しからのリターンコードです。 .RE .sp .ne 2 .mk .na \fB\fBtranslit\fR\fR .ad .RS 15n .rt 最初の引数内の文字を、2 番目の引数で指定されるセットから、3 番目の引数によって指定されるセットに書き直します。省略は許可されません。 .RE .sp .ne 2 .mk .na \fB\fBtraceon\fR\fR .ad .RS 15n .rt このマクロは、引数を指定しない場合、すべてのマクロ (ビルトインを含む) のトレースを有効にします。それ以外の場合は、指定されたマクロのトレースを有効にします。 .RE .sp .ne 2 .mk .na \fB\fBtraceoff\fR\fR .ad .RS 15n .rt 指定されたマクロについて、トレースをグローバルで無効にします。 .RE .sp .ne 2 .mk .na \fB\fBundefine\fR\fR .ad .RS 15n .rt 引数で指定されたマクロの定義を削除します。 .RE .sp .ne 2 .mk .na \fB\fBundivert\fR\fR .ad .RS 15n .rt このマクロによって、引数として指定された出力先から (あるいは引数がない場合はすべての出力先から) テキストの即時出力が実行されます。テキスト出力を別の出力先に逆切り替えできます。逆切り替えにより、切り替えされたテキストが破棄されます。 .RE .SS "/usr/bin/m4" .sp .ne 2 .mk .na \fB\fBeval\fR\fR .ad .RS 8n .rt 32 ビット符号付き整数算術演算を使用して、引数を算術演算式として評価します。次の演算子がサポートされます。括弧、単項演算子 -、単項演算子 +、!、~、*、/、%、+、-、関係式、ビット単位の &、|、&&、||。C と同じように 8 進数および 16 進数を指定できます。2 番目の引数は結果の基数を指定し、デフォルトは 10 です。3 番目の引数は、結果の最小の桁数を指定する場合に使用できます。 .RE .SS "/usr/xpg4/bin/m4" .sp .ne 2 .mk .na \fB\fBeval\fR\fR .ad .RS 8n .rt 32 ビット符号付き整数算術演算を使用して、引数を算術演算式として評価します。次の演算子がサポートされます。括弧、単項演算子 -、単項演算子 +、!、~、*、/、%、+、-、<<、>>、関係式、ビット単位の &、|、&&、||。優先順位および結合規則は C と同じです。C と同じように 8 進数および 16 進数も指定できます。2 番目の引数は結果の基数を指定し、デフォルトは 10 です。3 番目の引数は、結果の最小の桁数を指定する場合に使用できます。 .RE .SH 使用例 .LP \fB例 1 \fRm4 ファイルの例 .sp .LP ファイル \fBm4src\fR に次の行が含まれているとします。 .sp .in +2 .nf The value of `VER' is "VER". ifdef(`VER', ``VER'' is defined to be VER., VER is not defined.) ifelse(VER, 1, ``VER'' is `VER'.) ifelse(VER, 2, ``VER'' is `VER'., ``VER'' is not 2.) end .fi .in -2 .sp .sp .LP この場合、コマンド .sp .in +2 .nf \fBm4 m4src\fR .fi .in -2 .sp .sp .LP またはコマンド .sp .in +2 .nf \fBm4 -U VER m4src\fR .fi .in -2 .sp .sp .LP を実行すると、出力は次のようになります。 .sp .in +2 .nf The value of VER is "VER". VER is not defined. VER is not 2. end .fi .in -2 .sp .sp .LP 次のコマンド .sp .in +2 .nf \fBm4 -D VER m4src\fR .fi .in -2 .sp .sp .LP を実行すると、出力は次のようになります。 .sp .in +2 .nf The value of VER is "". VER is defined to be . VER is not 2. end .fi .in -2 .sp .sp .LP 次のコマンド .sp .in +2 .nf \fBm4 -D VER=1 m4src\fR .fi .in -2 .sp .sp .LP を実行すると、出力は次のようになります。 .sp .in +2 .nf The value of VER is "1". VER is defined to be 1. VER is 1. VER is not 2. end .fi .in -2 .sp .sp .LP 次のコマンド .sp .in +2 .nf \fBm4 -D VER=2 m4src\fR .fi .in -2 .sp .sp .LP を実行すると、出力は次のようになります。 .sp .in +2 .nf The value of VER is "2". VER is defined to be 2. VER is 2. end .fi .in -2 .sp .SH 環境 .sp .LP \fBm4\fR の実行に影響を与える次の環境変数についての詳細は、\fBenviron\fR(5) を参照してください。\fBLANG\fR、\fBLC_ALL\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR、および \fBNLSPATH\fR。 .SH 終了ステータス .sp .LP 次の終了ステータスが返されます。 .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 正常終了。 .RE .sp .ne 2 .mk .na \fB>\fB0\fR\fR .ad .RS 6n .rt エラーが発生しました .RE .sp .LP \fBm4exit\fR マクロが使用される場合、終了値は入力ファイルによって指定できます。 .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .SS "\fB/usr/bin/m4\fR" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os .TE .SS "\fB/usr/xpg4/bin/m4\fR" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/xopen/xcu4 _ インタフェースの安定性確実 _ 標準T{ \fBstandards\fR(5) を参照してください。 T} .TE .SH 関連項目 .sp .LP \fBas\fR(1), \fBattributes\fR(5), \fBenviron\fR(5), \fBstandards\fR(5)