You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
236 lines
4.7 KiB
Plaintext
236 lines
4.7 KiB
Plaintext
7 months ago
|
|
||
|
*! version 1.0.2 13oct2009 caplog by roywada@hotmail.com
|
||
|
*! captures a log file, possibly for use with logout or dataout
|
||
|
|
||
|
program define caplog
|
||
|
version 6
|
||
|
|
||
|
local logfile : log
|
||
|
|
||
|
version 7
|
||
|
|
||
|
* invisible to Stata 7
|
||
|
local Version7 ""
|
||
|
cap local Version7 `c(stata_version)'
|
||
|
|
||
|
if "`Version7'"=="" {
|
||
|
* it is version 7
|
||
|
local bind ""
|
||
|
*noi di in yel "limited functions under Stata 7"
|
||
|
}
|
||
|
else if `Version7'>=8.2 {
|
||
|
version 8.2
|
||
|
local bind "bind"
|
||
|
}
|
||
|
|
||
|
*qui log query
|
||
|
*if `"`r(status)'"'=="on" {
|
||
|
* qui log close
|
||
|
* local filename `"`r(filename)'"'
|
||
|
*}
|
||
|
|
||
|
if `"`logfile'"'~="" {
|
||
|
di ""
|
||
|
qui log close
|
||
|
local filename `"`logfile'"'
|
||
|
}
|
||
|
|
||
|
* embbed to avoid log being open
|
||
|
_caplog `0'
|
||
|
|
||
|
cap log close
|
||
|
|
||
|
*** c_locals coming back
|
||
|
* clickables
|
||
|
if "`tempfile'"~="tempfile" {
|
||
|
if "`smcl'"=="" {
|
||
|
local cl_text `"{browse `"`using1'"'}"'
|
||
|
noi di as txt `"`cl_text'"'
|
||
|
}
|
||
|
else {
|
||
|
local cl_text `"{stata `"view `using1'"':`using1'}"'
|
||
|
noi di as txt `"`cl_text'"'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
cap log close
|
||
|
|
||
|
*if `"`filename'"'~="" {
|
||
|
* log using `"`filename'"', append
|
||
|
*}
|
||
|
|
||
|
end
|
||
|
|
||
|
|
||
|
********************************************************************************************
|
||
|
|
||
|
|
||
|
program define _caplog
|
||
|
version 7
|
||
|
|
||
|
local Version7 ""
|
||
|
cap local Version7 `c(stata_version)'
|
||
|
|
||
|
if "`Version7'"=="" {
|
||
|
* it is version 7
|
||
|
local bind ""
|
||
|
*noi di in yel "limited functions under Stata 7"
|
||
|
}
|
||
|
else if `Version7'>=8.2 {
|
||
|
version 8.2
|
||
|
local bind "bind"
|
||
|
}
|
||
|
|
||
|
* encase the colon in file name in quotes, avoiding string function length limits
|
||
|
|
||
|
local behind `"`0'"'
|
||
|
local 0 ""
|
||
|
gettoken front behind: behind, parse(" ,")
|
||
|
local 0 ""
|
||
|
local done 0
|
||
|
while `"`front'"'~="" & `done'==0 {
|
||
|
if `"`front'"'=="using" {
|
||
|
|
||
|
gettoken rest behind: behind, parse(" ,")
|
||
|
* strip off quotes
|
||
|
gettoken first second: rest, parse(" ")
|
||
|
cap local rest: list clean local(rest)
|
||
|
|
||
|
* take off colon at the end
|
||
|
local goldfish ""
|
||
|
if index(`"`rest'"',":")~=0 {
|
||
|
local end=substr(`"`rest'"',length(`"`rest'"'),length(`"`rest'"'))
|
||
|
if "`end'"==":" {
|
||
|
local rest=substr(`"`rest'"',1,`=length(`"`rest'"')-1')
|
||
|
local goldfish " : "
|
||
|
}
|
||
|
}
|
||
|
|
||
|
* colon reattached with a space at the end
|
||
|
* .txt attached here, SMCL TO BE FIXED LATER
|
||
|
local rabbit `"""'
|
||
|
if index(`"`rest'"', ".")==0 {
|
||
|
local using `"`rabbit'`rest'.txt`rabbit'`goldfish'"'
|
||
|
}
|
||
|
else {
|
||
|
local using `"`rabbit'`rest'`rabbit'`goldfish'"'
|
||
|
}
|
||
|
local 0 `"`0' using `using' `behind'"'
|
||
|
local done 1
|
||
|
}
|
||
|
else {
|
||
|
local 0 `"`0' `front'"'
|
||
|
gettoken front behind: behind, parse(" ,")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
gettoken first second : 0, parse(":") `bind' match(par) quotes
|
||
|
local 0 `"`first'"'
|
||
|
while `"`first'"'~=":" & `"`first'"'~="" {
|
||
|
gettoken first second : second, parse(":") `bind' match(par) quotes
|
||
|
}
|
||
|
if `"`0'"'==":" {
|
||
|
* colon only when shorthand combined with prefix
|
||
|
local 0
|
||
|
}
|
||
|
else {
|
||
|
local _0 `"`0'"'
|
||
|
}
|
||
|
|
||
|
*** shorthand syntax if [using] is missing
|
||
|
|
||
|
syntax using/ [, replace append tempfile text smcl subspace]
|
||
|
|
||
|
if "`smcl'"=="smcl" {
|
||
|
if index(`"`using'"', ".txt")~=0 {
|
||
|
local temp=substr(`"`using'"',1,length(`"`using'"')-4)
|
||
|
local using `"`temp'.smcl"'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if "`text'"~="" & "`smcl'"~="" {
|
||
|
di "cannot choose both {opt text} and {opt smcl}"
|
||
|
exit 198
|
||
|
}
|
||
|
|
||
|
if "`text'"=="" & "`smcl'"=="" {
|
||
|
local text "text"
|
||
|
}
|
||
|
|
||
|
|
||
|
cap confirm file `"`using'"'
|
||
|
if !_rc & "`replace'"~="replace" & "`append'"~="append" {
|
||
|
* it exists
|
||
|
noi di in red `"`using' exists; specify {opt replace} or {opt append}"'
|
||
|
exit 198
|
||
|
}
|
||
|
|
||
|
* goes with `second'
|
||
|
if `"`second'"'~="" {
|
||
|
local _colon ":"
|
||
|
}
|
||
|
|
||
|
qui {
|
||
|
if "`subspace'"=="subspace" {
|
||
|
* fix the gaps in the value labels
|
||
|
ds8
|
||
|
foreach var in `r(varlist)'{
|
||
|
local temp : var label `var'
|
||
|
local temp = subinstr(`"`temp'"'," ","_",.)
|
||
|
label var `var' `"`temp'"'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
* regular stuff
|
||
|
if `"`using'"'~="" {
|
||
|
* prefix use using file
|
||
|
qui log using `"`using'"', `replace' `append' `text' `smcl'
|
||
|
`second'
|
||
|
}
|
||
|
else {
|
||
|
* prefix use temp file
|
||
|
qui log using `"`using'"', `replace' `append' `text' `smcl'
|
||
|
`second'
|
||
|
}
|
||
|
|
||
|
* clickables
|
||
|
c_local smcl "`smcl'"
|
||
|
c_local using1 `"`using'"'
|
||
|
c_local tempfile `"`tempfile'"'
|
||
|
|
||
|
end
|
||
|
|
||
|
|
||
|
********************************************************************************************
|
||
|
|
||
|
|
||
|
*** ripped from outreg2 Mar 2009
|
||
|
program define ds8
|
||
|
* get you the list of variable like -ds- does for version 8
|
||
|
version 7.0
|
||
|
qui ds
|
||
|
if "`r(varlist)'"=="" {
|
||
|
local dsVarlist ""
|
||
|
foreach var of varlist _all {
|
||
|
local dsVarlist "`dsVarlist' `var'"
|
||
|
}
|
||
|
c_local dsVarlist `dsVarlist'
|
||
|
}
|
||
|
else {
|
||
|
c_local dsVarlist `r(varlist)'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* version 1.0.1 May2009 caplog by roywada@hotmail.com
|
||
|
smcl accepted
|
||
|
version control fixed
|
||
|
|
||
|
1.0.2 close the log file at the end to avoid the possibility of it being left open
|
||
|
|