Publicado el :
Macro CREATION_INTERNE

Macro de utilidad _PAD para el relleno de texto

Este código también está disponible en: Français Deutsch English
La macro _PAD toma un argumento posicional (ARG1) que define el carácter o la cadena de caracteres a utilizar para el relleno. Un parámetro nombrado opcional, LS, permite especificar la longitud total deseada para la cadena de salida. Si ARG1 está vacío, la macro utiliza '20' como cadena de relleno por defecto y un carácter 'X' como indicador especial, lo que modifica la forma en que se calcula la longitud de relleno (se divide por dos). La macro construye la cadena de salida repitiendo el patrón de relleno hasta alcanzar o superar la longitud LS, luego devuelve la cadena resultante, potencialmente seguida de un carácter especial. El resultado se devuelve entre comillas dobles.
Análisis de datos

Type : CREATION_INTERNE


La macro no procesa datos externos. Genera una cadena de caracteres internamente en función de los parámetros de entrada, principalmente para necesidades de visualización o formato de texto.

1 Bloque de código
MACRO _PAD
Explicación :
Este bloque de código define la macro _PAD. Comienza declarando variables macro locales (i, x, return). La macro evalúa la longitud del parámetro 'pad'. Si se proporciona 'pad', intenta extraer una segunda parte (para 'x') y utiliza la primera parte como 'pad'. Si 'pad' está vacío, utiliza '20' como valor predeterminado para 'pad' y 'X' para 'x'. Luego, recalcula la longitud de 'pad' en 'i'. Si 'x' es 'X', la longitud 'i' se divide por dos. Un bucle `%do` concatena repetidamente la cadena 'pad' a la variable 'return', incrementando por la longitud 'i', hasta que se alcanza o se supera la longitud 'ls'. Finalmente, devuelve la cadena construida 'return', entre comillas dobles, potencialmente seguida del carácter 'x'.
¡Copiado!
1%macro _pad(arg1, pad=&arg1, ls=%_ls);
2 
3%IF %eval(&ls)>0 %THEN %DO;
4 %local i x return;
5 
6 %let i=%LENGTH(&pad);
7
8 %IF &i %THEN %DO;
9 %let x=%upcase(%scan(&pad, 2, ''""));
10 %let pad=%scan(&pad, 1, ''"");
11 %END;
12 %ELSE %DO;
13 %let pad=20;
14 %let x=X;
15 %END;
16 
17 %let i=%LENGTH(&pad);
18
19 %IF &x=X %THEN %let i=%eval(&i/2);
20
21 %DO i=1 %to &ls %BY &i;
22 %let return=&return.&pad;
23 %END;
24
25 "&return"&x
26%END;
27 
28%mend _pad;
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 (c) 2001-2004 Rodney Sparapani. Distribuido bajo los términos de la Licencia Pública General GNU versión 2 o posterior.