명령 순서

명령 순서는 일반적인 의미의 문제가 아니라 변수 정의, 데이터 변환 및 통계 분석과 같은 논리적 시퀀스를 따르는 경우가 많습니다. 예를 들어, 존재하기 전에 어떤 방식으로든 변수를 레이블, 변환, 분석 또는 사용할 수 없습니다. 다음과 같은 일반 규칙이 적용됩니다.

  • 세션에 대한 변수를 정의하는 명령 (DATA LIST, GET, GET DATA, MATRIX DATA등) 레이블 또는 누락된 값을 해당 변수에 지정하는 명령 앞에 있어야 합니다. 이러한 변수를 사용하는 변환 및 프로시저 명령 앞에도 선행해야 합니다.
  • 변환 명령 (IF, COUNT, COMPUTE등) 변수를 작성하고 수정하는 데 사용되는 변수는 해당 변수에 레이블 또는 누락된 값을 지정하는 명령 앞에 있어야 하며 변수를 사용하는 프로시저 앞에도 변수가 있어야 합니다.
  • 일반적으로, 명령 처리의 논리적 결과는 명령 순서를 결정한다. 예를 들어, 활성 데이터 세트에 새 변수를 작성하는 프로시저는 해당 새 변수를 사용하는 프로시저에 선행해야 합니다.

위 규칙을 준수하는 것 외에도, 데이터를 읽을 수 있는 명령과 그렇지 않은 명령과 데이터를 읽는 다음 명령으로 실행 보류 중인 실행과 데이터를 읽을 필요 없이 즉시 적용되는 명령을 구별하는 것이 중요합니다.

  • Commands that cause the data to be read, as well as execute pending transformations, include all statistical procedures (e.g., CROSSTABS, FREQUENCIES, REGRESSION); some commands that save/write the contents of the active dataset (e.g., DATASET COPY, SAVE TRANSLATE, SAVE); AGGREGATE; AUTORECODE; EXECUTE; RANK; and SORT CASES.
  • 데이터를 읽는 다음 명령으로 실행 보류 중인 저장된 명령은 새 데이터 값 (예: COMPUTE, RECODE), 조건부 조치 (예: DO IF, IF, SELECT IF), PRINT, WRITEXSAVE를 정의하는 명령을 수정하거나 작성하는 변환 명령을 포함합니다. 이러한 명령의 포괄적인 목록은 저장된 명령 명령, 보류 중인 실행 을 참조하십시오.
  • 데이터를 읽거나 보류 중인 명령을 실행하지 않고 즉시 적용되는 명령은 데이터 값 (예: MISSING VALUES, VALUE LABELS) 및 활성 데이터 세트가 필요하지 않은 명령 (예: DISPLAY, HOST, INSERT, OMS, SET) 에 영향을 주지 않고 사전 정보를 변경하는 변환을 포함합니다. 즉시 적용되는 것 외에도 이러한 명령은 무조건 처리됩니다. 예를 들어, DO IF 구조에 포함된 경우 이러한 명령은 조건이 충족되었는지 여부에 관계없이 실행됩니다. 이러한 명령의 전체 목록은 즉시 영향을 받는 명령 을 참조하십시오.

DO IF expense = 0.
- COMPUTE profit=-99.
- MISSING VALUES expense (0).
ELSE.
- COMPUTE profit=income-expense.
END IF.
LIST VARIABLES=expense profit.
  • COMPUTEMISSING VALUES 앞에 있으며 먼저 처리됩니다. 그러나 데이터를 읽을 때까지 실행이 지연됩니다.
  • MISSING VALUES 는 발생하자마자 조건이 충족되지 않는 경우에도 적용됩니다 (즉, expense=0인 경우가 없는 경우에도).
  • LIST 는 데이터를 읽도록 합니다. 따라서 동일한 데이터 전달 중에 COMPUTELIST 둘 다 실행됩니다.
  • MISSING VALUES 은 이미 이 시간까지 적용되므로 DO IF 구조의 첫 번째 조건은 충족되지 않습니다. 0의 비용 값이 누락된 것으로 간주되어 비용 이 0일 때 조건이 누락되도록 평가되기 때문입니다.