ライトストーン > Stata > コマンド早見表

global コマンド

 Stataにおけるグローバルマクロ(global macro)とは、ある文字列(マクロ名)を別の文字列(マクロの内容)に関連付けたもので、 一度定義するとStataのプログラム全体で共有される「公開(Public)」なマクロ変数です。

1. 基本的な定義と呼び出し

  • 定義 : global コマンドを使用します。
    例 : global mypath "C:\data" とすると、 mypath という名前にパス文字列が保存されます。
  • 呼び出し : マクロ名の前に $ を付けて参照します。
    例 : use "$mypath\mydata.dta" と入力すると、Stataは $mypath を定義した内容に置き換えて実行します。

2. スコープ(利用範囲)とローカルマクロとの違い

 グローバルマクロの最大の特徴は、定義された場所に関わらず、どこからでもアクセスできる点にあります。

  • 共有性 : あるdoファイルで定義したグローバルマクロは、別のdoファイルやADOプログラム内でもそのまま利用可能です。
  • 対比 : これに対し「ローカルマクロ(local macro)」は、それを定義したdoファイルやプログラム内だけで有効な「秘密(Private)」のマクロ変数です。
  • 注意点 : 便利な反面、どこで値が変わったか追跡しにくくなるため、ローカルマクロで十分な場合はグローバルマクロを使用しないことが推奨されています。

3. モードの種類と動作

  • 名前の長さ : 最大 32文字 までです(ローカルマクロは31文字まで)。
  • 使用可能な文字 : 文字、数字、アンダースコア( _ )が使えます。変数名と異なり、数字から始めることも可能です。
  • 予約名 : 「S_」で始まる名前(例: $S_OS )はStataが内部で使用するシステムマクロとして予約されており、不用意に上書きしないよう注意が必要です。

4. 高度な操作

  • 評価の制御 :
    global a 2+2 : 文字列「2+2」をそのまま保存します。
    global a = 2+2 : 式を計算し、結果の「4」を保存します。
  • 中括弧の使用 : ${mname} のように中括弧を使うことで、マクロ名の終わりを明示したり、 複雑な入れ子構造(ネスト)を作ったりできます。
    例 : ${x${i}} は、 $i が 6 であれば $x6 の内容を参照します。

5. 管理と削除

  • 一覧表示 : macro list または macro dir で、現在定義されているすべてのマクロを確認できます。
  • 削除 : macro drop を使用します。
    macro drop myvar* : myvar で始まるすべてのグローバルマクロを削除します。
    macro drop _all : システムマクロを除くすべてのユーザー定義マクロを一括削除します。