Lenguaje de formatos
Extractores de campos
El lenguaje de formatos permite extraer información de un registro CDS/Isis, prepararla y presentarla al usuario por pantalla o enviarla a impresoras u otros medios de salida.
Para extraer información de un registro se usan los extractores de campos, los cuales, en su forma más sencilla se forman con la letra v (en mayúscula o minúscula, indistintamente), seguida por la etiqueta del campo cuyo contenido se desea extraer:
Vxx Incluye en la salida el campo cuya etiqueta representa el valor xx Ej:v10
Si el campo posee subcampos, en la extracción del campo se debe indicar el subcampo que se desea acceder
Vxx^a Incluye en la salida el subcampo (^a) o equivalente presente en campo con etiqueta xx. Ej: v10^a, v10^r
Cuando el primer subcampo de un elemento de datos es obligatorio, como en el caso de los nombres personales los cuales se forman con el apellido y el nombre propiamente dicho estando siempre presente el apellido; entonces, en este caso no es necesario identificar el apellido con un delimitar de subcampos ya que es un elemento obligarorio. El ingreso se podrá realizar de la siguiente forma:
Ruiz Alvarado^nFernando
El primer subcampo del campo es Ruiz Alvarado y para referenciarlo se usa la construcción ^* lo cual es equivalente a primer subcampo del campo, entendiendose como primer subcampo la cadena de caracteres existente desde el inicio del campo hasta que se encuentre un delimitador de subcampos (^) o el fin del campo. Bajo este concepto, si la etiqueta del campo nombre es 10, el comando
v10^*,", "v10^n
producirá como salida
Ruiz Alvarado, Fernando
Extractores virtuales de campo
Estos elementos del lenguaje de formatos se utilizan para generar un literal en el formato de salida, dependiendo de si un campo está presente o ausente. Son los siguientes:
Dxx
Presenta en la salida el literal asociado, si el campo con etiqueta xx está presente en el registro:
Ej: "El campo tiene materias. "d76
En la salida se incluye el rótulo El campo tiene materias. si el campo 76 está presente en el registro. Si el campo 76 está ausente, no se genera el literal correspondiente
Nxx
Coloca en la salida el literal asociado si el campo con etiqueta xx está ausente.
Ej: "S/F"n43
En la salida aparecerá el literal S/F si el campo 43 está ausente. Si el campo está presente no se genera salida ninguna
En ninguno de estos casos se coloca el contenido del campo en la salida generada.
Extractores parciales de campo
El lenguaje de formatos permite extraer una subcadena de caracteres de un campo especificando el inicio de la cadena a extraer y la longitud de la misma.
Para ilustrar este aspecto, consideremos el caso de un campo de fecha tratado bajo la norma ISO, la cual establece que el ingreso debe realizarse de la siguiente manera: AAAAMMDD, o sea, que el ańo simpre será el primer elemento del campo y constará de dos dígitos, a continuación se colocará el mes, siempre con dos dígitos y al final del día, también con dos dígitos.
El ańo, al ser el primer elemento del campo, está desplazado 0 (cero) caracteres respecto al inicio del campo; el mes está desplazado 4 caracteres respecto al inicio del campo y el día está desplazado 6 caracteres respecto al inicio del campo.
Gráficamente, ésto corresponde a la siguiente situación:
Contenido del campo Desplazamientos respecto al orígen del campo 20011001 01234567
Para extraer porciones de un campo, el lenguaje de formatos permite expresar una porción de un campo en términos de su posición respecto al orígen (desplazamiento) y de la cantidad de caracteres a tomar en cuenta a partir de esa posicion inicial (longitud). El símbolo para identificar el valor del desplazamiento es el * (asterisco) y la longitud se expresa con símbolo . (punto). Entonces, la construcción
Vxx*D.L extraerá L caracteres del campo xx tomados a partir del desplazamiento D respecto al inicio del campo.
Ej. Si el campo 44 se ingresó con el valor 20010915, tendremos:
v44*6.2 = 15 v44*4.2 = 09 v44*0.4 = 2001
Si el desplazamiento es cero, esto es, la porción que deseamos obtener se encuentra al inicio del campo, entonces, no es necesario especificar es desplazamiento sino lo solo la longitud del segmento a extraer.
Ejm: v44*0.4 = v44.4
Si la longitud del segmento que deseamos extraer se ubica a partir de un desplazamiento x hasta el final del campo, no es necesario especificar la longitud a extraer.
Ejm: v44*6.2 = v44*6
Al omitirse la longitud se toma desde la posición 6 el resto de caracteres presentes en el campo (2)