Publicado el :
Prueba CREATION_INTERNE

Prueba de la macro mp_getformats y gestión de FMTSEARCH

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.
El script comienza creando dos directorios temporales (`&sasjswork/path1` y `&sasjswork/path2`) utilizando la macro `mf_mkdir`, y luego los asocia con `libname` (path1, path2). A continuación, define el mismo formato `whichpath` en estas dos librerías, pero con valores de salida distintos ('path1' y 'path2' respectivamente). Se prueban dos escenarios: el primero donde `path1` tiene prioridad en `FMTSEARCH`, y el segundo donde `path2` tiene prioridad. En cada escenario, se utiliza un paso `DATA _NULL_` para aplicar el formato al valor 0 y almacenar el resultado en una macro-variable (`test1` o `test2`). Se llama a la macro `mp_assert` para verificar que se ha aplicado el formato correcto (el de la librería prioritaria). La macro `mp_getformats` se ejecuta a continuación para extraer los detalles del formato `WHICHPATH` en conjuntos de datos de salida (`detail1` o `detail2`), y los resultados (especialmente la etiqueta asociada a 'OTHER') se verifican de nuevo con `mp_assert` para asegurar que la información detallada corresponde a la versión del formato encontrada.
Análisis de datos

Type : CREATION_INTERNE


Los datos principales tratados por este script (los formatos SAS nombrados `whichpath`) son creados y definidos directamente en el script a través de `PROC FORMAT`. No se utiliza ningún dato externo o proveniente de librerías SAS estándar como entrada para el proceso de prueba de los formatos. Se crean conjuntos de datos temporales mediante las macros `mp_getformats` (`sum`, `detail1`, `detail2`) y `mp_assert` (`work.test_results`) para almacenar los resultados de las pruebas y la información detallada de los formatos.

1 Bloque de código
Appel Macro
Explicación :
Estas líneas llaman a la macro `mf_mkdir` para crear dos directorios temporales: `path1` y `path2` dentro de la ubicación definida por la macro-variable `&sasjswork`. Estos directorios servirán como librerías para almacenar los formatos SAS.
¡Copiado!
1%mf_mkdir(&sasjswork/path1)
2%mf_mkdir(&sasjswork/path2)
2 Bloque de código
Libname
¡Copiado!
1LIBNAME path1 "&sasjswork/path1";
2LIBNAME path2 "&sasjswork/path2";
3 
3 Bloque de código
PROC FORMAT Data
¡Copiado!
1PROC FORMAT library=path1;
2 value whichpath 0 = 'path1' other='big fat problem if not path1';
3PROC FORMAT library=path2;
4 value whichpath 0 = 'path2' other='big fat problem if not path2';
5RUN;
4 Bloque de código
Options / DATA STEP / Appel Macro
¡Copiado!
1options insert=(fmtsearch=(path1 path2));
2DATA _null_;
3 test=0;
4 call symputx('test1',put(test,whichpath.));
5RUN;
6%mp_assert(
7 iftrue=("&test1"="path1"),
8 desc=Check correct FORMAT is applied,
9 outds=work.test_results
10)
11%mp_getformats(fmtlist=WHICHPATH,outsummary=sum,outdetail=detail1)
12%let tst1=0;
13DATA _null_;
14 SET detail1;
15 IF fmtname='WHICHPATH' and start='**OTHER**' THEN call symputx('tst1',label);
16 putlog (_all_)(=);
17RUN;
18%mp_assert(
19 iftrue=("&tst1"="big fat problem if not path1"),
20 desc=Check correct detail results are applied,
21 outds=work.test_results
22)
5 Bloque de código
Options / DATA STEP / Appel Macro
¡Copiado!
1options insert=(fmtsearch=(path2 path1));
2DATA _null_;
3 test=0;
4 call symputx('test2',put(test,whichpath.));
5RUN;
6%mp_assert(
7 iftrue=("&test2"="path2"),
8 desc=Check correct FORMAT is applied,
9 outds=work.test_results
10)
11%mp_getformats(fmtlist=WHICHPATH,outsummary=sum,outdetail=detail2)
12%let tst2=0;
13DATA _null_;
14 SET detail2;
15 IF fmtname='WHICHPATH' and start='**OTHER**' THEN call symputx('tst2',label);
16 putlog (_all_)(=);
17RUN;
18%mp_assert(
19 iftrue=("&tst2"="big fat problem if not path2"),
20 desc=Check correct detail results are applied,
21 outds=work.test_results
22)
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 : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de Este archivo es parte de SASUnit, el framework de pruebas unitarias para programas SAS(R). Para información de derechos de autor y términos de uso bajo la GNU Lesser General Public License, consulte el archivo incluido README.md o https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.