*# non # A more compact and intelligible version of {cmd:memory} *! 29may2008 program mem version 8.2 syntax , [Set(string)] if ~mi("`set'") { clear clear mata qui set memory `set' di "{txt}Resetting data to last saved version..." _n usel } qui memory local tot `r(M_data)' local data= _N*(r(size_ptr)+r(width)) local pct= int(`data'/`tot'*100) local rowcap= int((`tot'-`data')/(`r(size_ptr)'+`r(width)')) local colcap= int((`tot'-`data')/(_N*4)) foreach bit in tot data rowcap colcap { local scale=(``bit''>=1000)+(``bit''>=1000000) local `bit' `=round(``bit''/1000^`scale',1)'`=substr("kM",`scale',1)' } di "{txt:Total memory:}{res}{ralign 7:`tot'}" di "{txt:Memory in use:}{res}{ralign 6:`data'}{ralign 5:`pct'%}" _newline di "{txt}Room for {res:`rowcap'} more observations" di "{txt}Room for {res:`colcap'} more variables (4 byte)" end