// synchronizing from Stata to R // ============================= *capture program drop Rcall_synchronize program Rcall_synchronize if !missing("`debug'") di as err "entering Rcall_synchronize" tempfile Rscript tempname knot qui file open `knot' using "`Rscript'", write text replace // ------------------------------------------------------------------------- // List the global macros // ========================================================================= /* local ignorelist S_FNDATE S_FN S_level F1 F2 F7 F8 S_ADO S_StataSE S_FLAVOR /// S_OS S_OSDTL S_MACH local allglobals : all globals foreach lname in `allglobals' { local equal // reset foreach lname2 in `ignorelist' { if "`lname'" == "`lname2'" local equal 1 } if missing("`equal'") { local glo : display `"$`lname'"' local test // reset capture local test : display int(`glo') if missing("`test'") & "`glo'" != "" { file write `knot' `"`lname'_ <- "`macval(glo)'""' _n } else { file write `knot' `"`lname'_ <- `macval(glo)'"' _n } } } */ // ------------------------------------------------------------------------- // List the scalars // ========================================================================= local allscalars : all scalars *di as err `"SCALARS:`allscalars'"' foreach lname in `allscalars' { local sca : display `lname' local test // reset capture local test : display int(`sca') if missing("`test'") & "`sca'" != "" { file write `knot' `"`lname' <- "`macval(sca)'""' _n } else if trim("`sca'") == "." { file write `knot' `"`lname' <- NA"' _n } else if trim("`sca'") != "" { file write `knot' `"`lname' <- `macval(sca)'"' _n } else if trim("`sca'") == "" { file write `knot' `"`lname' <- "`macval(sca)'" "' _n } } // ------------------------------------------------------------------------- // List the matrices // ========================================================================= local allmats : all matrices foreach lname in `allmats' { qui matconvert `lname' file write `knot' `"`lname' <- `r(`lname')'"' _n } qui file close `knot' // ------------------------------------------------------------------------- // Create a Source file // ========================================================================= quietly copy "`Rscript'" "Rcall_synchronize", replace end