Publicado el :
Macro EXTERNE

Macro SAS para la recuperación de la versión de una tabla (`AHGtabver`)

Este código también está disponible en: Deutsch English Français
Attention : Este código requiere privilegios de administrador.
La macro `AHGtabver` está diseñada para ser ejecutada en un entorno SAS© distribuido, utilizando `rsubmit` para enviar código a un servidor SAS© remoto. Toma como entrada un número de identificador de tabla (`ltabno`) y el nombre de una macrovariable de salida (`outver`).
Dentro del bloque `rsubmit`, se utiliza un paso `DATA _NULL_`. Este define un `filename pip pipe` para ejecutar un comando shell específico: `cd &root3; tabver &rtabno`. Este comando navega a un directorio especificado por `&root3;` y luego ejecuta un programa externo `tabver` con el número de tabla. La salida de este comando externo es capturada por el pipe.
El `DATA _NULL_` lee la primera línea de la salida del pipe y utiliza `call symput` para almacenar esta línea en una macrovariable temporal `rtabver` en el servidor remoto. Finalmente, `%%sysrput &outver=&rtabver;` se usa para devolver el valor de `rtabver` a la sesión SAS© local, asignándolo a la macrovariable cuyo nombre fue pasado en el parámetro `outver`.
Este mecanismo permite vincular información de versión del sistema operativo o de un gestor de versiones dentro de un programa SAS©.
Análisis de datos

Type : EXTERNE


Los datos procesados por esta macro no provienen de conjuntos de datos SAS tradicionales (ya sean SASHELP, internos o externos al script). Se extraen de la salida textual de un comando de sistema externo (`tabver`) ejecutado a través de un pipe UNIX. El resultado es una información textual (un número de versión) almacenada en una macrovariable.

1 Bloque de código
MACRO DEFINITION
Explicación :
Este bloque define la macro `AHGtabver` que encapsula la lógica de recuperación de la versión. Utiliza `%syslput` para transferir los parámetros de la sesión local a la sesión remota antes del `rsubmit`. El código entre `rsubmit;` y `endrsubmit;` se ejecuta en el servidor remoto. Después de la ejecución del `DATA _NULL_` en el servidor remoto, `%%sysrput` devuelve el valor de `rtabver` (creada en el remoto) a la sesión local, asignándolo a la macrovariable cuyo nombre es proporcionado por `&outver`.
¡Copiado!
1%macro AHGtabver(ltabno,outver);
2 %syslput rtabno=<abno;
3 %syslput outver=&outver;
4 
5rsubmit;
6 
7 DATA _null_;
8 filename pip pipe "cd &root3; tabver &rtabno";
9 INFILE pip;
10 LENGTH line $100;
11 INPUT line;
12 call symput('rtabver',line);
13 RUN;
14 %nrstr(%%)sysrput &outver=&rtabver;
15endrsubmit;
16 
17%mend;
2 Bloque de código
DATA STEP
Explicación :
Este `DATA _NULL_` se ejecuta en el servidor remoto (dentro del bloque `rsubmit`). No crea un conjunto de datos permanente. Se utiliza para:
1. Definir un `filename` llamado `pip` como un pipe (`pipe`) que ejecutará el comando shell `cd &root3; tabver &rtabno`.
2. Utilizar `infile pip` para leer la salida de este comando externo.
3. Leer la primera línea de la salida en la variable `line`.
4. Utilizar `call symput('rtabver',line);` para crear una macrovariable llamada `rtabver` (en el servidor remoto) y asignarle el contenido de `line`. Esta macrovariable contendrá el número de versión devuelto por el comando de sistema `tabver`.
¡Copiado!
1 DATA _null_;
2 filename pip pipe "cd &root3; tabver &rtabno";
3 INFILE pip;
4 LENGTH line $100;
5 INPUT line;
6 call symput('rtabver',line);
7 RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : En-têtes RCS détectés: $Source: /Volumes/app/cdars/prod/prjA258/phase3b4/A2581172/saseng/pds1_0/program/RCS/fmd_site_chg.sasdrvr,v $, $Revision: 1.14 $, $Author: Hui Liu $, $Locker: $, $State: Exp $