Publicado el :
Administración CREATION_INTERNE

Macro AHGrpipe - Ejecución de comandos del sistema remotos

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
Esta macro utiliza `rsubmit` para enviar código a una sesión remota. El código remoto utiliza el método `filename pipe` para ejecutar un comando Unix (ksh) después de configurar el entorno (PATH, alias). El resultado del comando se lee a través de un `data _null_` y se devuelve a la sesión local a través de `sysrput`. La macro también maneja un caso particular donde el comando se delega a `%AHGsubmitrcommand`.
Análisis de datos

Type : CREATION_INTERNE


Los datos procesados provienen de la salida estándar (stdout) de un comando del sistema ejecutado a través de una tubería. No se lee ninguna tabla SAS externa.

1 Bloque de código
MACRO CONTROL
Explicación :
Gestión condicional para delegar la ejecución o preparación de las variables macro para la transferencia a la sesión remota a través de `%syslput`.
¡Copiado!
1%IF &lmacro=q %THEN
2%DO;
3%AHGsubmitrcommand(cmd=&rcommand);
4%goto exit;
5%END;
6 
7%syslput rcommand=%bquote(&rcommand);
8%syslput lmacro=&lmacro;
9%syslput rmycmd=&rcommand;
10%syslput rformat=%str(&FORMAT);
11%syslput rdlm=%str(&dlm);
12%syslput rpiperesult=;
2 Bloque de código
DATA STEP Data
Explicación :
Bloque `rsubmit` ejecutado en el servidor remoto. Inicializa un `filename pipe` con una configuración de entorno específica (rutas codificadas, shell ksh), ejecuta el comando, lee el resultado y lo devuelve a la sesión local a través de `%sysrput`.
¡Copiado!
1rsubmit;
2 
3 DATA _null_;
4 filename pip pipe "ksh -c %str(%')%bquote(. ~liu04/bin/myalias; PATH=/home/liu04/bin:/opt/sasprod:/usr/sbin:/etc:/usr/local/bin:/usr/bin:/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ucb:.:/home/liu04/bin/perl;FPATH=/home/liu04/bin;)&rmycmd %str(%') " ;
5 INFILE pip truncover lrecl=32767;
6 LENGTH file $32767;
7 INPUT file 1-32767;
8 myfile=put(translate(file,"&rdlm",byte(12)),&rformat);
9 call symput("rpiperesult",trim(compbl(myfile)));
10 RUN;
11 %put lmacro=&lmacro;
12 %nrstr(%%)sysrput &lmacro=%nrbquote(&rpiperesult);
13endrsubmit;
3 Bloque de código
MACRO UTILITY
Explicación :
Post-procesamiento local del resultado: limpieza de caracteres de control y visualización opcional en el log.
¡Copiado!
1%IF %LENGTH(&&&lmacro) %THEN %let &lmacro=%sysfunc(translate(&&&lmacro,%str( ),%sysfunc(byte(12))));
2 
3 
4%IF %upcase(&PRINT)=YES %THEN %put %nrbquote(&&&lmacro);
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.