これを実現する 1 つの方法は、単純なプラグインを作成することです。というファイルで、このコードをコンパイルします。unixtimestamp.c
#include "stplugin.h"
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
STDLL stata_call(int argc, char *argv[])
{
time_t seconds;
seconds = time(NULL);
char buf[33];
sprintf(buf, "%d", seconds);
SF_display(buf);
return(0);
}
次のコマンドを使用して、同じディレクトリにstplugin.hとstplugin.cを配置します (Linux システムの場合):
gcc -O3 -shared -DSYSTEM=OPUNIX -fPIC stplugin.c unix_timestamp.c -o unixtimestamp.plugin
プラグイン作成ガイドでは、次のコマンドを使用しています。
gcc -shared -DSYSTEM=OPUNIX stplugin.c unixtimestamp.c -o unixtimestamp.plugin
-fPIC
ただし、一部のシステムでは、フラグを使用するように指示するエラーが発生するため、コマンドにフラグを含めています。また、このような単純なプラグインには最適化は実際には必要ありませんが、それでも含めました。
unixtimestamp.plugin
ado/personal/
ディレクトリに配置する必要があります。Stata のsysdir
関数を実行して、その場所を見つけます。私のシステムでは、HOME/ado/personal/
そこにプラグインをコピーしました。次に、Stata からプラグインをロードします。
program unixtimestamp, plugin
エラー メッセージが表示されない場合は、次のようにプラグインを実行します。
plugin call unixtimestamp
他の Stata コマンドと同様に、このコマンドを頻繁に使用する場合は、マクロを使用してこれを簡素化することもできます。
local unixtime plugin call unixtimestamp
`unixtime'