SAS (lenguaje de programación)
# SAS (lenguaje de programación)

SAS es un lenguaje de programación desarrollado por SAS Institute a finales de los años sesenta. Existen dos intérpretes de dicho lenguaje: uno desarrollado por SAS Institute y otro por la empresa World Programming.

## Características

Posee una sintaxis inspirada en la de PL/I, lenguaje en el que se implementó el primer intérprete.

El lenguaje SAS opera principalmente sobre tablas de datos: puede leerlas, transformarlas, combinarlas, resumirlas, crear informes a partir de ellas, etc. El núcleo del lenguaje (conocido habitualmente como SAS Base) incluye:

* Pasos data que permiten realizar operaciones sobre las filas de un conjunto de datos.
* Procedimientos de manipulación de datos que permiten ordenar tablas, enlazarlas, etc.
* Un intérprete de SQL.
* Un superlenguaje de macros.

Algunas de las características adicionales del lenguaje de programación SAS son las siguientes:

* Las palabras clave no están reservadas, esto implica que se puede usar cualquier nombre para un identificador, por ejemplo una variable se puede llamar else, aunque esta palabra tiene un significado semántico.
* El lenguaje se considera ambiguo, esto implica que la interpretación de las instrucciones depende de instrucciones previas.
* El lenguaje no se puede describir a través de una Gramática de contexto libre.
* El análisis léxico del lenguaje depende del contexto. Analizador léxico

## Módulos adicionales

Las dos empresas que comercializan intérpretes de lenguaje SAS han desarrollado módulos adicionales que enriquecen la capacidad del lenguaje para, especialmente, analizar datos.

### Desarrollados por SAS Institute

SAS Institute comercializa paquetes de procedimientos adicionales para el análisis estadístico de los datos, tales como:

* SAS/IML, módulo que implementa un lenguaje alternativo similar a Octave, Matlab o R.
* SAS/STAT, un módulo con procedimientos para realizar determinados análisis estadísticos (regresiones, etc.)
* SAS/ETS para el análisis estadístico de series temporales
* SAS/OR para la resolución de problemas de investigación operativa
* SAS/GRAPH para generar gráficos

Además, SAS Institute ha desarrollado aplicaciones interfaces tales como SAS Enterprise Guide, SAS Data Integration Studio, SAS Enterprise Miner y otras que generan código SAS para aplicaciones específicas: ETL, minería de datos, etc.

### Desarrollados por World Programming

World Programming también ha implementado módulos adicionales que añaden al núcleo del lenguaje la capacidad para realizar determinados análisis estadísticos (significativamente menos que SAS Institute) conectarse con determinadas fuentes de datos (ODBC, Oracle, etc.), etc.

## Ejemplos de código

Un paso data que crea el un conjunto de datos, copia, a partir de origen, filtrando los casos en los que las ventas son mayores de 100000:

Otro ejemplo usando macros:

