난 당신이 몇 가지 관련 사항을 위해 ... 찾고 있지만 여기에있는 것을 정확히 모르겠어요 :(이 시점에서보다 구체적인/명확한 질문을 공식화 수 없습니다. STATA는 유닉스를 작성하는 같은 종류의 것입니다 . 쉘 스크립트 또는 Windows 배치 파일은 각 행은 명령을 실행하고 첫 번째 단어는 명령 이름 규칙에 따라, 대부분의 명령은 다음과 같은 구조가 있습니다. [.]
command [varlist] [=exp] [if expression] [in range] [weight] [using filename] [, options]
브래킷은 선택의 의미 (또는 사용할 수 없습니다) 명령에 따라 다릅니다. 일부 명령은 접두사 할 수 있습니다 (예 : by:
, xi:
, 또는 svy:
)로 STATA 공사와 숙련 된 사용자에 의한 명령의 구문 때문에, 꽤 일치한다. 그러나 Stata 사용자도 명령을 쓰고, 때때로 이상한 것을 보게됩니다.
STATA 사용자가 명령을 쓰기
, 그들은 .ado 파일에 저장됩니다 (수도 있었죠되지 않음)과
program
명령을 사용하여 정의됩니다. 명령을 쓰는 것은 다른 언어로 함수를 작성하는 것과 비슷합니다 (예 : MatLab)
명령은 사용자가 직접 명령을 작성하는 데 사용됩니다. 명령을 실행하면 명령 이름 (command
위) 다음의 모든 내용이 로컬 매크로 `0'
의 프로그램에 전달됩니다. 구문 명령은이 로컬 매크로를 구문 분석하므로 `varlist'
또는 `if'
등을 참조 할 수 있습니다. 이론 상으로는 `0'
을 구문 분석 할 수 있지만 구문 명령을 사용하면 (기존 구문을 따르는 한) 사용자와 사용자가 훨씬 쉽게 사용할 수 있습니다. 나는 밑바닥에 모범을 보였다.
난 당신이 무슨 뜻인지 정확히 모른다 "다른 언어로 알려진 지역 변수의이 없다는 점." 매크로는 단일 문자열 또는 단일 숫자를 메모리에 저장합니다. Here's a comment Stata의 로컬/글로벌 매크로에 관해 썼습니다. 실제로 Stata의 프로그래밍 언어의 고유 한 기능입니다. 그들의 이름이 암시 하듯이, "로컬"매크로는 프로그램 (명령)이나 .do 파일 내에서만 사용 가능하며 "전역"매크로는 Stata 세션에서 사용 가능합니다.
Stata의 매크로에 익숙해지면 다른 언어로 그 매크로를 놓치기 시작했습니다. 그들은 꽤 편리합니다. (로컬/글로벌) 매크로와 기본 데이터 세트 외에, scalar
및 matrix
명령 (그리고 하나 또는 두 개의 다른 모호한 것들)을 사용하여 메모리에 "사물"을 저장할 수도 있습니다.
도움이 되었기를 바랍니다. Here's a list resources 도움이 될 것입니다.
예 :
program define myprogram
syntax varlist [if], [hello(string) yes]
macro list _0 _varlist _if _hello _yes
summarize `varlist' `if'
display "Here's the string in my hello option: `hello'"
if !missing("`yes'") di "Yes is on"
else di "Yes is off"
end
sysuse auto.dta
myprogram rep78 headroom if price > 5000 , hello("world") yes
"빠른 시작 안내서가 있습니까?"라는 질문에 불과합니까? 아니면 언어 기능에 대해 알고 싶습니까? 두 경우 모두 적어도 현재는 이러한 프로그래밍 기능이 필요하지 않을 것입니다. – Marcin
@Marcin : 문제에 적용 할 수있는 것보다 언어를 이해하고 싶습니다. 내가이 기능이 필요 없다고 생각하는 이유는 무엇입니까? 이 기능을 사용하는 동료의 코드 기반을 인수해야합니다. 그 코드는 내가 발견 한 방법입니다. – blubb
그런 기능을 사용하는 다른 언어에 익숙하기 때문에 생각합니다. 당신의 언어가 매우 펑키하지 않는 한, 능동적으로 요구하는 계산은 없을 것입니다. 새 코드에 이러한 기능을 배치하기 전에 나머지 언어에 대해 알아보십시오. – Marcin