El script genera sus propios datos de prueba: un archivo temporal (`testref`) que sirve como código fuente para el trabajo, y conjuntos de datos (`work.info`, `work.jobstates`) producidos por las macros de SAS Viya. El contenido del log del trabajo también es un dato interno generado por la ejecución del trabajo.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque crea un fileref temporal 'testref' y escribe en él un programa SAS simple (`data;run; endsas;`). Este programa SAS minimalista se utilizará posteriormente como código fuente para un trabajo de SAS Viya.
¡Copiado!
filename testref temp;
data _null_;
file testref;
put 'data;run;';
put 'endsas;';
run;
1
filename testref temp;
2
DATA _null_;
3
file testref;
4
put 'data;run;';
5
put 'endsas;';
6
RUN;
2 Bloque de código
MACRO mv_createjob
Explicación : Llamada a la macro `%mv_createjob` para definir un nuevo trabajo de SAS Viya llamado 'testjob' en la ubicación especificada por la macro-variable `&mcTestAppLoc/jobs/temp`. El código fuente del trabajo se lee desde el fileref 'testref' creado previamente.
Explicación : Ejecuta el trabajo 'testjob' definido anteriormente. La información detallada de la ejecución del trabajo (URI, estado, etc.) se guarda en el conjunto de datos `work.info`.
Explicación : Filtra el conjunto de datos `work.info` para conservar solo las observaciones relevantes para el seguimiento del estado del trabajo, específicamente aquellas donde `method` es 'GET' y `rel` es 'state'. Esto se hace en preparación para la espera del estado final del trabajo.
¡Copiado!
data work.info;
set work.info;
where method='GET' and rel='state';
run;
1
DATA work.info;
2
SET work.info;
3
where method='GET' and rel='state';
4
RUN;
5 Bloque de código
MACRO mv_jobwaitfor Data
Explicación : Llamada a la macro `%mv_jobwaitfor` para esperar que el trabajo, cuya información está contenida en `work.info`, alcance un estado final (ALL). El estado final detallado se registra en el conjunto de datos `work.jobstates`.
Explicación : Este paso `DATA _NULL_` lee el conjunto de datos `work.jobstates` y extrae el valor de la variable `uri` (el Identificador Uniforme de Recursos del log del trabajo) para almacenarlo en la macro-variable `uri`. Esta macro-variable es esencial para recuperar el log del trabajo.
¡Copiado!
data _null_;
set work.jobstates;
call symputx('uri',uri);
run;
1
DATA _null_;
2
SET work.jobstates;
3
call symputx('uri',uri);
4
RUN;
7 Bloque de código
MACRO mv_getjoblog
Explicación : La macro `%mp_assertscope(SNAPSHOT)` se utiliza para capturar el estado actual de las macro-variables, útil para las comparaciones de pruebas. Luego, se llama a la macro `%mv_getjoblog` para recuperar el log del trabajo utilizando la URI extraída previamente. El contenido del log se guarda en el fileref `mylog` con la depuración activada (`mdebug=1`).
Explicación : Esta macro `%mp_assertscope(COMPARE...)` se utiliza en el contexto de una prueba unitaria para comparar el estado actual de las macro-variables con un 'snapshot' anterior, ignorando ciertas macro-variables (`MCLIB2_JADP2LEN`, `MCLIB2_JADPNUM`, `MCLIB2_JADVLEN`) que probablemente son variables internas generadas automáticamente y no relevantes para la aserción.
¡Copiado!
/* ignore auto proc json vars */
%mp_assertscope(COMPARE
,ignorelist=MCLIB2_JADP2LEN MCLIB2_JADPNUM MCLIB2_JADVLEN
)
Explicación : Este paso `DATA _NULL_` lee el contenido del log del trabajo (`mylog`) línea por línea. Busca la cadena 'endsas;'. Si se encuentra, la macro-variable `found` se establece en 1. Si se alcanza el final del archivo sin encontrar la cadena, `found` se establece en 0. El contenido del log también se escribe en el log SAS actual a través de `putlog _infile_` para facilitar la depuración.
¡Copiado!
data _null_;
infile mylog end=eof;
input;
putlog _infile_;
retain found 0;
if index(_infile_,'endsas;') then do;
found=1;
call symputx('found',found);
end;
else if eof and found ne 1 then call symputx('found',0);
run;
1
DATA _null_;
2
INFILE mylog END=eof;
3
INPUT;
4
putlog _infile_;
5
retain found 0;
6
IF index(_infile_,'endsas;') THENDO;
7
found=1;
8
call symputx('found',found);
9
END;
10
ELSEIF eof and found ne 1THEN call symputx('found',0);
11
RUN;
10 Bloque de código
MACRO mp_assert
Explicación : La macro `%mp_assert` se utiliza para verificar una condición de prueba. Aquí, verifica si la macro-variable `found` es igual a 1, lo que confirma que la cadena 'endsas;' se ha encontrado en el log del trabajo. La descripción de la prueba indica que se trata de verificar si el log se ha recuperado correctamente a pesar de la simplicidad del trabajo enviado.
¡Copiado!
%mp_assert(
iftrue=(%str(&found)=1),
desc=Check if the log was still fetched even though endsas was submitted
)
1
%mp_assert(
2
iftrue=(%str(&found)=1),
3
desc=Check IF the log was still fetched even though endsas was submitted
4
)
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.