IBM InfoSphere DataStage

Versión 8 Release 7

Guía del desarrollador de Server Job

SC11-7972-00

IBM InfoSphere DataStage
Versión 8 Release 7

Guía del desarrollador de Server Job

SC11-7972-00

Nota Antes de utilizar esta información y el producto al que da soporte, lea la información de la sección “Avisos y marcas registradas” en la página 363.

© Copyright IBM Corporation 1997, 2011.

Contenido
Capítulo 1. Trabajos de servidor . . . . 1
Etapas suplementarias . . Paquetes de IBM InfoSphere Recursos personalizados . Después del desarrollo . . . . . . DataStage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 3 Terminología . . . . . . . . . . . . . Utilización de la etapa Complex Flat File . . . Definición de un enlace de salida . . . . . . Acerca de la página Salida . . . . . . . . Consideraciones sobre la fecha . . . . . . . Etapas Folder. . . . . . . . . . . . . . Utilización de etapas Folder . . . . . . . . Definición de correlaciones de juegos de caracteres . . . . . . . . . . . . . . Definición de los datos de entrada de la etapa Folder . . . . . . . . . . . . . . . Definición de los datos de salida de la etapa Folder . . . . . . . . . . . . . . . Etapas Hashed File . . . . . . . . . . . . Utilización de la etapa Hashed File . . . . . Definición de datos de entrada de Hashed File Definición de datos de salida de Hashed File . . Utilización del símbolo de euro en los sistemas sin soporte multilingüístico . . . . . . . . Etapas Sequential File . . . . . . . . . . . Utilización de la etapa Sequential File . . . . Definición de correlaciones de juegos de caracteres . . . . . . . . . . . . . . Definición de datos de entrada de Sequential File Definición de datos de salida de Sequential File Cómo se comporta la etapa Sequential . . . . Etapas Aggregator . . . . . . . . . . . . Utilización de una etapa Aggregator . . . . . Subrutinas anteriores y posteriores a la etapa . . Definición de datos de entrada de Aggregator . . Definición de datos de salida de Aggregator . . Etapa Command. . . . . . . . . . . . . Funcionalidad . . . . . . . . . . . . Terminología . . . . . . . . . . . . . Utilización de la etapa Command . . . . . . Definición de la correlación de juego de caracteres . . . . . . . . . . . . . . Definición de los datos de entrada de la etapa Command . . . . . . . . . . . . . . Definición de datos de salida de etapa Command Utilización de mandatos . . . . . . . . . Etapas InterProcess . . . . . . . . . . . . Utilización de la etapa IPC . . . . . . . . Definición de propiedades de la etapa IPC . . . Definición de los datos de entrada de la etapa IPC . . . . . . . . . . . . . . . . Definición de datos de salida de la etapa IPC . . Etapas FTP Plug-in . . . . . . . . . . . . Funcionalidad de la etapa FTP Plug-in . . . . Terminología . . . . . . . . . . . . . Instalación de la etapa . . . . . . . . . . Propiedades . . . . . . . . . . . . . Etapas Link Collector . . . . . . . . . . . Utilización de una etapa Link Collector . . . . Subrutinas anteriores y posteriores a la etapa . . 28 29 30 30 38 38 38 38 39 39 40 40 41 42 44 44 45 45 46 48 50 55 56 56 56 58 60 60 61 61 62 63 63 64 65 67 68 68 68 68 69 70 70 70 83 83 84

Capítulo 2. Optimización del rendimiento en los trabajos de servidor . . . . . . 5
Trabajos y procesos de IBM InfoSphere DataStage . Sistemas de un procesador o de múltiples procesadores . . . . . . . . . . . . Particionamiento y recopilación . . . . . . Diagnóstico de limitaciones de trabajo . . . . Interpretación de las estadísticas de rendimiento Mejora del rendimiento . . . . . . . . . Trabajos de CPU limitada: sistemas de un solo procesador . . . . . . . . . . . . Trabajos de CPU limitada: sistemas de multiprocesador . . . . . . . . . . . Trabajos limitados de E/S . . . . . . . Diseño de archivo hash . . . . . . . . . 5 . 6 . 9 . 10 12 . 13 . 13 . 13 . 15 . 15

Capítulo 3. Trabajos de servidor y soporte multilingüístico . . . . . . . 19
Cómo funciona la modalidad de soporte multilingüístico . . . . . . . . . . . . . Juegos de caracteres internos . . . . . . . Correlación . . . . . . . . . . . . . Entornos locales . . . . . . . . . . . . Correlaciones y entornos locales en los trabajos de IBM IBM InfoSphere DataStage . . . . . . . . Carga de correlaciones. . . . . . . . . . Carga de entornos locales. . . . . . . . . Utilización de correlaciones en trabajos de servidor Datos de carácter en trabajos de servidor . . . Especificación de una correlación predeterminada del proyecto . . . . . . . . . . . . . Especificación de una correlación predeterminada del trabajo . . . . . . . . . . . . . . Especificación de una correlación de etapa . . . Especificación de una correlación de columna . . Utilización de entornos locales en trabajos de servidor . . . . . . . . . . . . . . . Especificación de un entorno local predeterminado del proyecto . . . . . . . Especificación de un entorno local predeterminado del trabajo . . . . . . . . 19 19 19 20 22 22 23 23 24 24 24 25 25 25 26 26

Capítulo 4. Etapas de trabajo de servidor . . . . . . . . . . . . . . 27
Etapas Complex Flat File . . . . . . . . . . 27 Trabajos existentes creados con la versión 1 de la etapa Complex Flat File . . . . . . . . . 28 Funcionalidad de la etapa Complex Flat File . . 28
© Copyright IBM Corp. 1997, 2011

iii

Definición de propiedades de la etapa Link Collector . . . . . . . . . . . . . . 84 Definición de datos de entrada de etapa Link Collector . . . . . . . . . . . . . . 85 Definición de datos de salida de etapa Link Collector . . . . . . . . . . . . . . 85 Etapas Link Partitioner . . . . . . . . . . 85 Utilización de una etapa Link Partitioner . . . 86 Subrutinas anteriores y posteriores a la etapa . . 86 Definición de propiedades de la etapa Link Partitioner . . . . . . . . . . . . . . 87 Definición de datos de entrada de etapa Link Partitioner . . . . . . . . . . . . . . 87 Definición de datos de salida de etapa Link Partitioner . . . . . . . . . . . . . . 88 Etapas Merge . . . . . . . . . . . . . . 88 Funcionalidad Merge stage . . . . . . . . 88 Utilización de la etapa Merge . . . . . . . 88 El separador General de la página Etapa . . . 89 Recuadro de diálogo Seleccionar desde servidor 89 Definición de la correlación de juego de caracteres . . . . . . . . . . . . . . 89 Ajuste del tamaño del archivo de entrada . . . 90 Definición de propiedades de salida . . . . . 90 Etapas Pivot . . . . . . . . . . . . . . 96 Funcionalidad de la etapa Pivot . . . . . . 96 Giro de datos . . . . . . . . . . . . . 96 Ejemplos . . . . . . . . . . . . . . 97 Etapas Row Merger. . . . . . . . . . . . 99 Funcionalidad de la etapa Row merger . . . . 99 Separador General de la página Etapa . . . . 99 Página Entrada . . . . . . . . . . . . 99 Página Salida . . . . . . . . . . . . 101 Etapas Row Splitter . . . . . . . . . . . 101 Funcionalidad de la etapa Row Splitter . . . . 101 Separador General de la página Etapa . . . . 101 Página Entrada . . . . . . . . . . . . 102 Página Salida . . . . . . . . . . . . 102 Etapas Sort . . . . . . . . . . . . . . 103 Funcionalidad de la etapa Sort . . . . . . 104 Propiedades configurables . . . . . . . . 104 Criterios de ordenación . . . . . . . . . 105 Propiedades de etapa. . . . . . . . . . 106 Etapas Transformer . . . . . . . . . . . 108 Utilización de una etapa Transformer . . . . 108 Componentes del editor de transformadores . . 108 Conceptos básicos de la etapa Transformer . . 110 Edición de las etapas Transformer . . . . . 112 Editor de expresiones de IBM InfoSphere DataStage . . . . . . . . . . . . . 123 Propiedades de la etapa Transformer . . . . 126

Depuración de los contenedores compartidos Compilación de un trabajo . . . . . . . . Comprobaciones de compilación . . . . . Compilación satisfactoria . . . . . . . Resolución de problemas . . . . . . . Supervisor de rendimiento gráfico . . . . .

. . . . .

129 131 132 132 132 132

Capítulo 6. Programación en IBM InfoSphere DataStage . . . . . . . . 135
Componentes de programación . . . . . Rutinas . . . . . . . . . . . . Transformaciones . . . . . . . . . Funciones . . . . . . . . . . . Expresiones . . . . . . . . . . . Subrutinas . . . . . . . . . . . Macros . . . . . . . . . . . . Reglas de prioridad . . . . . . . . Cómo trabajar con las rutinas . . . . . . Recuadro de diálogo Rutina de servidor . Creación de una rutina . . . . . . . Visualización y edición de una rutina . . Cómo copiar una rutina . . . . . . . Cómo renombrar una rutina . . . . . Definición de transformaciones personalizadas Funciones ActiveX (OLE) externas . . . . Importación de funciones ActiveX (OLE) externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 135 136 136 137 137 137 137 138 138 140 143 144 144 144 146

. 146

Capítulo 7. Programación BASIC . . . 149
Convenios de sintaxis . . . . . . . . El lenguaje BASIC . . . . . . . . . . Constantes . . . . . . . . . . . Variables . . . . . . . . . . . . Expresiones . . . . . . . . . . . Funciones . . . . . . . . . . . Sentencias . . . . . . . . . . . Subrutinas . . . . . . . . . . . Operadores . . . . . . . . . . . Tipos de datos en las funciones y sentencias BASIC . . . . . . . . . . . . . Series BASIC vacías y valores nulos . . . Campos . . . . . . . . . . . . Palabras reservadas . . . . . . . . Código fuente y código objeto . . . . . Caracteres especiales . . . . . . . . Variables del sistema . . . . . . . . . Funciones y sentencias de BASIC . . . . . Directivas de compilador . . . . . . Declaración . . . . . . . . . . . Control de trabajos . . . . . . . . Control del programa . . . . . . . Proceso de archivo secuencial . . . . . Verificación de series y formateo . . . . Extracción de subseries y formateo . . . Conversión de datos . . . . . . . . Formateo de datos. . . . . . . . . Funciones de entorno local . . . . . . Sentencia $Define . . . . . . . . . . Sentencias $IfDef y $IfNDef . . . . . . Sentencia $Include. . . . . . . . . . . . . . . . . . . de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 150 150 150 151 151 151 152 152 158 158 158 159 159 160 161 162 162 162 162 164 165 165 166 167 168 168 168 169 170

Capítulo 5. Depuración y compilación de un trabajo . . . . . . . . . . . 127
El depurador de IBM InfoSphere DataStage . . Para añadir un punto de interrupción: . . . Para añadir una variable a la lista de observaciones: . . . . . . . . . . . Para suprimir variables de la lista de observaciones, seleccione las variables y pulse Eliminar observación.. . . . . . . . . . 127 . 127 . 128

. 128

iv

Guía del desarrollador de Server Job

Sentencia $Undefine . . Operador [] . . . . . Sentencia * . . . . . Función Abs. . . . . Función Alpha . . . . Función Ascii . . . . Sentencia de asignación . funciones Bit . . . . Funciones orientadas a los Función Byte . . . . Función ByteLen . . . Función ByteType . . . Función ByteVal . . . Sentencia Call . . . . Sentencia Case . . . . Sentencia Cats . . . . Función Change . . . Función Char . . . . Función Checksum . . Sentencia CloseSeq . . Función Col1 . . . . Función Col2 . . . . Sentencia Common . . Función Compare . . . Función Convert . . . Sentencia Convert . . . Función Count . . . . Función CRC32. . . . Función de fecha . . . Función DCount . . . Sentencia Deffun . . . Sentencia Dimension . . Función Div . . . . . Función DownCase . . Función DQuote . . . DSAttachJob. . . . . DSCheckRoutine . . . DSDetachJob . . . . DSExecute . . . . . DSGetCustInfo . . . . DSGetJobInfo . . . . DSGetJobMetaBag . . . DSGetLinkInfo . . . . DSGetLinkMetaData . . DSGetLogEntry. . . . DSGetLogEventIds . . DSGetLogSummary . . DSGetNewestLogId . . DSGetParamInfo . . . DSGetProjectInfo . . . DSGetStageInfo. . . . DSGetStageLinks . . . DSGetStagesOfType . . DSGetStagesTypes . . . DSGetVarInfo . . . . DSIPCPageProps . . . DSLogEvent . . . . . DSLogFatal . . . . . DSLogInfo . . . . . DSLogToController . . DSLogWarn . . . . .

. . . . . . . . . . . . . . . . bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

170 170 171 172 172 173 173 174 175 176 176 176 177 177 178 179 179 180 180 181 181 182 183 184 185 185 186 186 187 187 188 188 189 190 190 191 191 192 192 193 193 196 197 198 199 199 200 201 202 204 204 206 207 207 207 208 209 209 210 210 210

DSMakeJobReport . . . . . . DSMakeMsg. . . . . . . . DSPrepareJob . . . . . . . DSRunJob . . . . . . . . DSSendMail . . . . . . . . DSSetDisableJobHandler. . . . DSSetDisableProjectHandler . . DSSetGenerateOpMetaData. . . DSSetJobLimit . . . . . . . DSSetParam . . . . . . . . DSSetUserStatus . . . . . . DSStopJob . . . . . . . . DSTransformError . . . . . . DSTranslateCode . . . . . . DSWaitForFile . . . . . . . DSWaitForJob . . . . . . . Función Dtx . . . . . . . . Función Ebcdic . . . . . . . Sentencia End . . . . . . . Sentencia Equate . . . . . . Función Ereplace . . . . . . Función Exchange . . . . . . Función Exp. . . . . . . . Función Field . . . . . . . Función FieldStore. . . . . . Función FIX . . . . . . . . Función Fmt. . . . . . . . Expresión de formato. . . . . Sintaxis . . . . . . . . Longitud de salida . . . . Carácter de relleno . . . . Justificación . . . . . . . Formatos numérico y monetario Salida enmascarada . . . . Función FmtDP. . . . . . . Función Fold . . . . . . . Función FoldDP . . . . . . Sentencias For...Next . . . . . Sentencia Function . . . . . Función GetLocale. . . . . . Sentencia GoSub . . . . . . Sentencia GoTo . . . . . . . Función Iconv . . . . . . . Ejemplos . . . . . . . . Sentencias If...Else . . . . . . Sentencias If...Then...Else . . . Sentencias If...Then . . . . . Operador If...Then...Else . . . . Función Index . . . . . . . Función InMat . . . . . . . Función Int . . . . . . . . Función IsNull . . . . . . . Función Left. . . . . . . . Función Len . . . . . . . . Función LenDP. . . . . . . Función Ln . . . . . . . . Sentencia LOCATE . . . . . Sentencias Loop...Repeat. . . . Sentencia Mat . . . . . . . Función MatchField . . . . . Función Mod . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

211 212 212 213 214 214 215 215 216 216 217 217 218 218 219 220 220 221 221 222 223 224 224 225 226 227 227 228 228 228 228 228 228 229 232 232 233 233 234 236 236 237 238 238 243 244 245 245 246 246 247 247 248 248 248 249 249 251 252 253 254

Contenido

v

. . . . . . . . . . Transformaciones del procesador de filas . . MCP . . Sentencia Null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilización de la memoria caché privada de enlaces Utilización de la memoria caché pública de enlaces Utilización de la memoria caché del sistema . . . . . . . . . . . . . . . . NL . . . . . . Función Soundex . . . . . . . . . . Operadores de coincidencia de patrón Función Pwr . . MB . . . . . . . . . Función UniSeq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Función Neg . . . . Transformaciones de gestión de claves . . . . . . . ReadSeq . . . . . . . . . . . Sentencia Randomize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Función TimeDate . . . . . . . . . . . . . . . . . . L . . . Función TrimB . . . . G . . . . Transformaciones del programa de utilidad . . . . . . . . . . Transformaciones de medidas: peso . . . . . . . . . . . . . . . . . . 335 Funcionalidad de almacenamiento en ememoria caché de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MCX . NLS . . SetLocale . . . . . . . . . . Transformaciones de medidas: distancia . . . . . . Función Status . . . . . . . . . . . . . . . . . Función Str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Sentencia Nap . . . . . .. . . . . . . . Función Rnd . . . . . . . . . . . . . . . . . Creación de un archivo hash para el almacenamiento en memoria caché del sistema . . . . . . . . . . . . . . Función WriteSeq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transformaciones de medidas: tiempo . . Transformaciones de fecha . . . . 300 301 301 302 303 303 304 305 305 305 306 308 308 309 Capítulo 8. . Requisitos especiales de AIX para determinar el tamaño de la memoria caché de disco . . . . . . . . . . . . . . . . . 311 Transformaciones incorporadas . . . . . . . . . . . . . . . . . . . . . . . . Función Xtd . . . . . Sentencia Subroutine . . . . . . . Función REAL . . . . Función Right . . Transformaciones de medidas: temperatura . . . . . . . MCU . . . . . . . . . . . . . MCT . . . . . . . . . . . . . . . MY . . MUOC MX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transformaciones de medidas: área . 254 255 255 255 256 256 257 262 263 264 265 266 266 267 268 268 269 269 270 270 270 271 272 272 273 273 273 274 275 275 276 276 278 279 279 279 279 280 280 281 282 283 283 284 287 288 289 289 290 290 291 291 292 292 292 293 293 294 294 295 298 MM . . . . . . . . . . . . . . . . . . Preparación para el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema en las plataformas Windows . . . . . . . . . . . . Transformaciones de tipo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TI . . MCN . . . . . . . . . . . . . . . . . . R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MC/N . . . . . . Función WEOFSeq . . . . . . . . . . . . . . . . . . . . . . . . Función Time . . . . . Transformaciones y rutinas incorporadas . . . . . . . . . . . . . . . . Rutinas incorporadas . . . . . Función Trim . . . . . . . Función Space . . . . . Preparación para el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema en las plataformas UNIX . . . Terminología . . . . .. . . . . . . Funciones trigonométricas . . . . . . . . . . . . . . . . . . . . . MO. MCA . . . . . . . . . . . . . . . MT . . . . . . . . . . . . . 311 311 312 321 324 324 325 326 326 327 329 329 330 331 332 332 333 Capítulo 9. . . . . . . Sentencia OpenSeq . . . Transformaciones de serie . MD. . . . . . . . . . . . .GoSub . . . . Función UniChar . . . Función SQuote . . . . . . . . . . . . . Transformaciones numéricas . S . NR . . . . . . . . . . . . . Secuencias de datos múltiples . . Ejemplos . . . MC/A. . . . . . . . P . . . Sentencia On. Sentencias On. . . 335 336 338 338 338 338 339 340 341 342 342 342 vi Guía del desarrollador de Server Job . . . . . . . . . .. . . . . . . . Almacenamiento en la memoria caché de disco de la etapa Hashed File . . . . . . . . . . . . . . . . Sentencia Sleep . . . . . . . . . . . . . . . . . . . Función Oconv . MP . . . . . . . . . .. . . . . . . . Función Sqrt. . MCL . . . . Función UpCase . . . . . . . . . . . . . . . . . . . . . . . . . . . Función Seq . . . . . . . . . . . . . . . . . . . MCD . . . Sentencia Return (valor) . . . MCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subrutinas anteriores y posteriores incorporadas Funciones de transformación de ejemplo . . . . . . . . D . . .GoTo . . . . Sentencia Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Función TrimF . . Códigos de conversión . . . . . . . . . . . . . . . . . . . . . . ML & MR . . . . . . . . . . Función Not . . . . . . . . . Función Num . . . . . . . . . Directrices para elegir un tipo de memoria caché Preparación de la memoria caché privada de enlaces . . . . . . Transformaciones de medidas: volumen . . Función WriteSeqF . . . . . . . . . . . . . . . . . . . MC/M . . . . . . . . .

. . . . . 363 Cómo ponerse en contacto con IBM 367 Accesibilidad de los productos. . . . . . . . . . . . . . 369 Contenido vii . 359 Índice. . .Mandatos del motor de servidor . . . 343 351 353 353 Enlaces a sitios Web no IBM . . . . . . . . . . . . . . . . . . . . . . . Consideraciones sobre el rendimiento . . Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema . . . . . . . . Utilización del símbolo de euro en los sistemas sin soporte multilingüístico . 357 Acceso a la documentación de productos . . . . . . . . 361 Avisos y marcas registradas . . . . .

viii Guía del desarrollador de Server Job .

Lee o graba datos en un archivo secuencial. La paleta de herramientas del servidor organiza las etapas en los grupos siguientes: v Base de datos. v Proceso. Estas etapas leen o graban los datos contenidos en una base de datos. Lee o graba datos como archivos en un directorio ubicado en el servidor de InfoSphere DataStage. Se proporcionan con InfoSphere DataStage y se utilizan para extraer. Sybase BCP Load (consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for Sybase Databases y IBM InfoSphere DataStage and QualityStage Connectivity Guide for Microsoft SQL Server and OLE DB Data) UniData (consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for IBM UniVerse and UniData) Utiliza el programa de utilidad BCP (Programa de copia en masa) para copiar programas en masa a una única tabla de una base de datos Microsoft SQL Server o Sybase. Lee o graba datos en las bases de datos UniData. v Archivo. Base de datos Base de datos Base de datos UniData 6 (consulte IBM InfoSphere Lee o graba datos en las bases de datos UniData 6. Estas etapas leen o graban los datos contenidos en un archivo o un conjunto de archivos. mientras que otra puede transformarlos. una etapa puede extraer datos de un origen de datos. Las etapas se añaden a un trabajo y se enlazan entre ellas utilizando InfoSphere DataStage y el Diseñador de QualityStage. v Etapas suplementarias. La siguiente tabla lista los tipos de etapa disponibles y proporciona una guía rápida acerca de sus funciones: Tipo Base de datos Etapa ODBC (consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for ODBC) Función Lee o graba datos en las bases de datos que dan soporte a la API estándar Open Database Connectivity. Hay dos tipos de etapas: v Etapas integradas. agregar. Por ejemplo. transformar y grabar datos. 1997. Etapas adicionales que pueden instalarse en InfoSphere DataStage para ejecutar tareas especializadas a las que las etapas incorporadas no dan soporte. Base de datos Archivo Archivo Archivo Archivo © Copyright IBM Corp. Cada etapa describe una base de datos o proceso en concreto. Trabajos de servidor Los trabajos de InfoSphere DataStage constan de etapas individuales. Lee o graba datos en un archivo hash.Capítulo 1. 2011 1 . Base de datos Oracle 7 Load (consulte IBM InfoSphere Genera archivos de control y de datos para la carga DataStage and QualityStage Connectivity Guide masiva de datos en una sola tabla en una base de for Oracle Databases) datos Oracle. and QualityStage Connectivity Guide for IBM UniVerse and UniData) Complex Flat File Folder Hashed File Sequential File Lee datos de una estructura de datos de archivo sin formato complejo. Por ejemplo. Estas etapas ejecutan algún proceso en los datos que se pasan entre ellas. las etapas que se suministran como parte de los paquetes de InfoSphere DataStage. DataStage and QualityStage Connectivity Guide for IBM UniVerse and UniData) UniVerse (consulte IBM InfoSphere DataStage Lee o graba datos en las bases de datos UniVerse.

Combina datos de diversos enlaces de entrada en un solo enlace de salida. Lee o graba datos en archivos secuenciales remotos utilizando FTP. calcula los totales y otras funciones de resumen. Proporciona un canal de comunicación entre dos procesos de InfoSphere DataStage que se ejecutan simultáneamente en el mismo trabajo. Proceso Proceso Proceso Etapa Command FTP Plug-in InterProcess Proceso Proceso Proceso Proceso Link Collector Link Partitioner Merge Pivot Proceso Proceso Proceso Row Merger Row Splitter Sort Proceso Transformer Puede encontrar información general sobre cómo construir el trabajo y definir los metadatos necesarios utilizando el cliente del Diseñador en el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. programas y trabajos externos. Se describen en sus guías de consulta de conectividad respectivas. Algunas de estas etapas están incorporadas y otras son suplementarias. Las demás etapas suplementarias son etapas activas que aparecen en la categoría Proceso en la paleta de herramientas. y los genera como salida en otra etapa del trabajo. Ejecuta mandatos. cada uno proporciona un conjunto de etapas suplementarias y una funcionalidad asociada. Ordena los datos entrantes en valores de columna ascendentes o descendentes y los pasa a otra etapa del trabajo.Tipo Proceso Etapa Aggregator Función Agrupa los datos entrantes. Correlaciona conjuntos de columnas en una tabla de entrada con una única columna de una tabla de salida. Filtra y transforma los datos entrantes. Etapas suplementarias Hay un gran número de etapas suplementarias especializadas disponibles para InfoSphere DataStage. Combina dos archivos secuenciales en uno o varios enlaces de salida. Aparecen en la categoría Base de datos en la paleta de herramientas. Las etapas de conectividad se utilizan para conectarse a bases de datos específicas. y pasa los datos a otra etapa del trabajo. Reparte los datos de una serie de entrada en varias columnas de salida. Particiona los datos de un enlace de entrada individual en varios enlaces de salida. Pueden instalarse cuando se instala inicialmente IBM® InfoSphere DataStage o más adelante en cualquier momento. 2 Guía del desarrollador de Server Job . Este manual describe los editores de etapas individuales que puede utilizar para desarrollar trabajos de servidor. Fusiona columnas de entrada en una serie y graba la serie en una columna de salida. Todas se describen en esta guía. Paquetes de IBM InfoSphere DataStage Hay varios paquetes disponibles con InfoSphere DataStage que afectan a los trabajos del servidor.

Recursos personalizados IBM InfoSphere DataStage proporciona un gran número de transformaciones y rutinas incorporadas para su uso en las etapas Transformer en los trabajos de servidor. “Programación BASIC”. “Transformaciones y rutinas incorporadas”. Los recursos de los servicios web se describen en IBM InfoSphere DataStage Web Services Pack Guide. Hay dos versiones del paquete de servicios web: una permite acceder a los servicios web a través de los trabajos de InfoSphere DataStage y la otra también permite publicar trabajos de InfoSphere DataStage como servicios web.v Paquete XML. Las características y la funcionalidad se describen detalladamente en IBM InfoSphere DataStage XML Pack Guide. en la página 127. Ambos paquetes son complementos de InfoSphere DataStage. Proporciona las herramientas que permiten convertir datos entre documentos XML y tablas de datos. Puede encontrar material de referencia de BASIC en Capítulo 7. Trabajos de servidor 3 . Se describen en Capítulo 8. También puede ejecutar trabajos desde otro programa o desde la línea de mandatos utilizando los recursos que se proporcionan en el InfoSphere DataStage Development Kit. v Paquete Java. Una vez desarrollados estos componentes. Este paquete se proporciona con InfoSphere DataStage. v Paquete de servicios web. Se describe en IBM InfoSphere DataStage and QualityStage Java Pack Guide. en la página 311. Si está satisfecho con el diseño del trabajo. en la página 149. El depurador se describe en Capítulo 5. puede validarlo y ejecutarlo utilizando el Director de InfoSphere DataStage y QualityStage. Capítulo 1. InfoSphere DataStage tiene un depurador que permite eliminar los problemas con los trabajos de servidor que ha diseñado. Está formado por dos etapas de plantillas y una API que permite implementar etapas de InfoSphere DataStage en Java. “Depuración y compilación de un trabajo”. Este paquete se proporciona con InfoSphere DataStage. pueden reutilizarse en otros trabajos de InfoSphere DataStage. Si tiene requisitos específicos de rutinas y transformaciones personalizadas. deberá compilarlo y probarlo antes de publicarlo para que esté disponible para su ejecución. Después del desarrollo Una vez completado el desarrollo del trabajo de servidor de IBM InfoSphere DataStage. que se describe en InfoSphere DataStage Development Kit (interfaces de control de trabajo). InfoSphere DataStage dispone de un potente lenguaje de programación de procedimientos denominado BASIC que permite definir sus propios componentes.

4 Guía del desarrollador de Server Job .

pero también hay sugerencias para los trabajos que se ejecutan en sistemas de un solo procesador. En su forma más simple. Se recomienda leer estos temas antes de diseñar nuevos trabajos pero. y se convierte en un proceso cuando se ejecuta el trabajo. todas se ejecutarán en un solo proceso. ¿Qué ocurre cuando tiene un trabajo que enlaza dos etapas pasivas? Obviamente. ¿Cómo define el motor de servidor un proceso? Aquí es donde es importante la distinción entre etapas activas y pasivas. ejecutan tareas de proceso. 1997. por ejemplo. De modo no visible. la situación se complica cuando conecta etapas activas entre ellas y etapas pasivas entre ellas. InfoSphere DataStage inserta una etapa Transformer reducida entre las etapas pasivas que pasa datos directamente de una etapa a otra. Sequential File y Hashed File. también puede revisitar diseños de trabajos anteriores basándose en lo que lea aquí. Cuando se compila. Transformer y Aggregator. se produce algún proceso. Figura 1. si lo desea. Trabajos y procesos de IBM InfoSphere DataStage Cuando diseña un trabajo. Las etapas activas como. Optimización del rendimiento en los trabajos de servidor En estos temas se describen algunas técnicas de diseño para obtener el máximo rendimiento posible de los trabajos de IBM InfoSphere DataStage que diseña. Muchos de estos temas describen el diseño de un trabajo que se va a ejecutar en un sistema multiprocesador. leen o graban orígenes de datos y proporcionar servicios a las etapas activas. mientras que las etapas pasivas como. las etapas activas se convierten en procesos. consulte IBM InfoSphere DataStage and QualityStage Parallel Job Developer's Guide. el motor de servidor lo ve el términos de los procesos que se ejecutan posteriormente en el servidor. Las etapas pasivas marcan los límites del proceso y todas las etapas activas adyacentes entre ellas se ejecutan en un solo proceso. ¿Qué ocurre cuando tiene un trabajo que enlaza dos o más etapas activas? De forma predeterminada. Para obtener detalles. Las sugerencias de proceso paralelo están especialmente indicadas para los sistemas UNIX o Windows de multiprocesador simétrico (SMP) de hasta 64 procesadores.Capítulo 2. No obstante. Proceso individual © Copyright IBM Corp. Los siguientes diagramas ilustran cómo se convierten los trabajos en procesos. Para los sistemas UNIX MPP y en clúster (y los sistemas Windows o UNIX SMP) hay disponibles trabajos paralelos. 2011 5 . por ejemplo. aparece en términos de etapas y enlaces.

para que los procesos puedan distribuirse entre los procesadores disponibles y ejecutarse en paralelo. v Implícitamente. ya sea en todo el proyecto (utilizando el Administrador de InfoSphere DataStage y QualityStage) o en trabajos individuales (en el recuadro de diálogo Propiedades del trabajo) El recurso IPC también puede utilizarse para producir varios procesos en los que las etapas pasivas están conectadas directamente. y una etapa Transformer invisible insertada en el tiempo de compilación Figura 3. Esto significa que una operación que lee en un origen de datos y graba en otro puede dividirse en un proceso de lectura y un proceso de grabación para aprovechar los sistemas de múltiples procesadores. Cuando se ejecuta en un sistema de múltiples procesadores. 6 Guía del desarrollador de Server Job . Esto tiene sentido cuando se ejecuta el trabajo en un sistema de un procesador. es mejor ejecutar cada etapa activa en un proceso diferente. con una etapa pasiva enlazada a una etapa pasiva. Proceso individual Figura 4. insertando etapas InterProcess (IPC) entre las etapas activas conectadas.Figura 2. activando el almacenamiento intermedio de filas entre procesos. Estas mejoras en los trabajos de servidor del Release 6 de InfoSphere DataStage permiten estipular en el diseño que los trabajos se compilen de esta forman. Hay dos formas de hacerlo: v Explícitamente. Dos procesos Sistemas de un procesador o de múltiples procesadores El comportamiento cuando se compilan trabajos de IBM InfoSphere DataStage es ejecutar todas las etapas activas adyacentes en un solo proceso. Un proceso individual.

El diagrama siguiente ilustra el posible comportamiento de las etapas activas: Figura 5. Comportamiento predeterminado Figura 6. Optimización del rendimiento en los trabajos de servidor 7 . Imposición implícita de varios procesos mediante el almacenamiento intermedio de filas entre procesos Capítulo 2.

Figura 7. Utilización de las etapas de IPC para imponer varios procesos El diagrama siguiente ilustra el posible comportamiento de las etapas pasivas: 8 Guía del desarrollador de Server Job .

de forma que pueden procesarse en procesadores individuales que se ejecutan en varios procesadores. Figura 10. Utilización de la etapa IPC para imponer varios procesos.Figura 8. con las etapas Transformer invisibles insertadas en el tiempo de compilación Particionamiento y recopilación La etapa Link Partitioner permite particionar los datos que está leyendo. Comportamiento predeterminado con la etapa Transformer invisible insertada en el tiempo de compilación Figura 9. y debe activar el almacenamiento intermedio de filas entre procesos a nivel de proyecto o de trabajo para poder implementar los límites de proceso. Utilización de las etapas Link Partitioner y Link Collector Capítulo 2. Optimización del rendimiento en los trabajos de servidor 9 . La etapa Link Collector permite recopilar y unir datos particionados para grabarlos en un destino de datos individual. Ambas etapas están activas. El siguiente diagrama ilustra cómo puede utilizar las etapas Link Partitioner y Link Collector en un trabajo.

seleccione el trabajo y pulse el botón de la barra de herramientas Ejecutar ahora.. La colección de estadísticas de rendimiento puede activarse y desactivarse para cada etapa activa en un trabajo de IBM InfoSphere DataStage. se genera inmediatamente una entrada especial después del mensaje de terminación de la etapa en el registro de trabajo. Seleccione el recuadro de selección Estadísticas de rendimiento.. 4.stage. puede ejecutar algunos diagnósticos para ver si el rendimiento se puede mejorar. v En el cliente del Director. Abra la ventana Opciones de ejecución del trabajo: v En el cliente del Diseñador. Utilice mayúscula-pulsar para seleccionar varias etapas activas. 2. Si el rastreo de rendimiento está activado. La entrada de registro es parecida a la siguiente: job. Para recopilar estadísticas de rendimiento: 1. Puede copiar las estadísticas en la ventana Detalle del suceso y pegarlas en una hoja de cálculo para que pueda continuar el análisis. El siguiente diagrama muestra el trabajo desde el que se han recopilado las estadísticas. Pulse Ejecutar. Seleccione las etapas que desee supervisar en la lista Nombres de etapa.) Para ver las estadísticas de forma tabular. La etapa resaltada es la que tiene activado Estadísticas de rendimiento: 10 Guía del desarrollador de Server Job . Pulse el separador Rastreo.StageRun Performance statistics(. 5. si lo desea. pulse con el botón derecho del ratón sobre la entrada de registro y seleccione Detalle. pulse el botón de la barra de herramientas Ejecutar. Dos factores afectan al rendimiento de un trabajo: v Puede tener una limitación de CPU v Puede tener una limitación de E/S Puede obtener estadísticas detalladas sobre el rendimiento del trabajo para identificar aquellas partes de un trabajo que limitan el rendimiento y realizar cambios para aumentarlo.DSD.Diagnóstico de limitaciones de trabajo Después de diseñar un trabajo. 3.

Optimización del rendimiento en los trabajos de servidor 11 . Estadísticas de rendimiento Enlace en el diseño de trabajo DSLink5 DSLink6 Acción Leer archivo secuencial Derivación de transformador Grabación entre procesos (de una etapa Transformer a una etapa Transformer) DSLink8 DSLink7 Grabar archivo secuencial Derivación de transformador Grabar archivo secuencial Fila en la hoja de cálculo 2 5 3 3 6 7 Figura 12. que se han pegado en una hoja de cálculo. Hoja de cálculo de estadísticas de rendimiento Capítulo 2. como se muestra a continuación: Tabla 1.Figura 11. Trabajo de ejemplo para las estadísticas de rendimiento La tabla siguiente permite interpretar las estadísticas.

en estas circunstancias. La información que se muestra es: v Porcentaje. 12 Guía del desarrollador de Server Job . a menos que se ejecute realmente en un sistema de multiprocesador. mientras que la vista Supervisor en una etapa completada muestra el porcentaje promedio de CPU utilizada por la etapa. De lo contrario. si recopila estadísticas para la primera etapa activa. Asimismo. la columna de porcentaje no sumará el 100%. cuando se utilizan enlaces de etapa activa en curso a etapa activa.Figura 13. El tiempo promedio transcurrido en microsegundos que ha utilizado esta parte del proceso para las filas procesadas. tenga en cuenta que. Interpretación de las estadísticas de rendimiento Las estadísticas de rendimiento están relacionadas con el ciclo de proceso por fila de una etapa activa. Por ejemplo. v Recuento. los trabajos con un mal rendimiento pueden tener una limitación de E/S. v Mínimo. v Promedio. y de cada uno de sus enlaces de entrada y salida. Si la cifra de Mínimo y la cifra de Promedio están muy próximas. El tiempo mínimo transcurrido en microsegundos que ha utilizado esta parte del proceso para algunas de las filas procesadas. Debe tener cuidado cuando interprete estas cifras. Esta distorsión permanece incluso cuando ejecuta las etapas activas en distintos procesos (con el almacenamiento intermedio de filas entre procesos habilitado). el coste total de la etapa activa en sentido descendente se incluye en el enlace de activa a activa (como se muestra en el diagrama de ejemplo). esto indica que el proceso tiene una limitación de CPU. Gráfico de la hoja de cálculo El mensaje de registro de terminación de etapa notifica el tiempo transcurrido y la CPU real utilizada por la etapa. El número de veces que se ha ejecutado esta parte del proceso. El porcentaje del tiempo de ejecución general que utiliza esta parte del proceso.

puede mejorar el rendimiento ejecutando varias copias paralelas de un proceso de etapa. Para ello. Esto permite que las etapas activas conectadas pasen datos a través de los almacenamientos intermedios en lugar de fila por fila. Trabajos de CPU limitada: sistemas de multiprocesador Para mejorar el rendimiento de la mayoría de trabajos de IBM InfoSphere DataStage. Se recomienda rediseñar el trabajo para que utilice el almacenamiento intermedio de filas en lugar de los bloques COMMON. Trabajos de CPU limitada: sistemas de un solo procesador Puede mejorar el rendimiento de la mayoría de trabajos de IBM InfoSphere DataStage activando el almacenamiento intermedio de filas en curso y recompilando el trabajo. duplique las etapas con un uso intensivo de la CPU (la forma más rápida de hacerlo es utilizar un contenedor compartido) e inserte una etapa Link Partitioner y Link Collector antes y después de las etapas duplicadas. Puede activar el almacenamiento intermedio de filas en curso de todo el proyecto utilizando el cliente del Administrador. esto también indica que el trabajo tiene una limitación de CPU. active el almacenamiento intermedio de filas entre procesos y vuelva a compilar el trabajo. Nota: No puede utilizar el almacenamiento intermedio de filas entre procesos si el trabajo utiliza bloques COMMON en funciones de transformación para pasar datos entre etapas. puede activarlo para trabajos individuales utilizando el separador Rendimiento en el recuadro de diálogo Propiedades del trabajo.Si la ventana del supervisor de trabajos muestra que una etapa activa está utilizando casi el 100% del tiempo de CPU. O bien. puede activarlo para trabajos individuales utilizando el separador Rendimiento en el recuadro de diálogo Propiedades del trabajo. Puede activar el almacenamiento intermedio de filas entre procesos de todo el proyecto utilizando el cliente del Administrador. Mejora del rendimiento En las siguientes secciones se proporcionan algunos consejos sobre cómo mejorar el rendimiento de los diseños de trabajo. Se recomienda rediseñar el trabajo para que utilice el almacenamiento intermedio de filas en lugar de los bloques COMMON. Nota: No puede utilizar el almacenamiento intermedio de filas en curso si el trabajo utiliza bloques COMMON en funciones de transformación para pasar datos entre etapas. Las siguientes capturas de pantalla muestran un ejemplo de cómo puede hacerlo. estos se ejecutarán simultáneamente en procesadores aparte. Esto permite que el trabajo se ejecute utilizando un proceso distinto para cada etapa activa. O bien. Optimización del rendimiento en los trabajos de servidor 13 . Si tiene un etapa activa que utiliza casi el 100% de la CPU. Capítulo 2.

Figura 14. Trabajo de ejemplo Figura 15. Trabajo de ejemplo 14 Guía del desarrollador de Server Job .

2. Resultados Una vez identificada la etapa. un archivo bien diseñado hará que la extracción de datos de los archivos de dimensión sea mucho más rápida. Ejecute el trabajo con un conjunto de datos considerable y con el rastreo de rendimiento habilitado para cada una de las etapas activas. por ejemplo. hay algunos pasos básicos que puede realizar: v Si divide los procesos del diseño de trabajo grabando los datos en un archivo secuencial para volverlos a leer. Otro uso es alojar tablas de dimensiones de crecimiento lento en un diseño de almacén de esquema de estrella. puede invocar la herramienta como un mandato de filtro en la etapa Sequential File y pasar los datos directamente a la herramienta (consulte “Etapas Sequential File” en la página 44).Trabajos limitados de E/S Acerca de esta tarea Aunque es difícil diagnosticar trabajos limitados de E/S y mejorarlos. Esto acelera el acceso a los datos. Para todos los tipos de etapa. Operación básica del archivo hash Si está familiarizado con los principios de los archivos hash. el proceso se divide y se reduce la E/S y el tiempo transcurrido. puede utilizar la etapa Link Partitioner para dividirlo en varias partes sin cargar los campos intermedios. v Si procesa un conjunto de datos de gran tamaño. puede utilizar las estadísticas de rendimiento para determinar qué etapas individuales tienen una limitación de E/S. puede utilizar una etapa InterProcess (IPC) en lugar de la etapa Sequential File. puede omitir esta sección. ya que puede ir a un grupo específico antes de buscar secuencialmente en los datos Capítulo 2. busque las etapas activas que utilicen menos CPU que otras. consulte “Diseño de archivo hash”). Procedimiento 1. De nuevo. Realizar búsquedas puede ser rápido en un archivo bien diseñado. las acciones a realizar dependerán de los tipos de etapa pasiva implicados en el proceso. Optimización del rendimiento en los trabajos de servidor 15 . Si un trabajo todavía parece que tiene una limitación de E/S después de realizar uno o varios de los pasos anteriores. Analice los resultados y compárelos para cada etapa. Los archivos hash se utilizan normalmente para proporcionar una tabla de referencia basada en una clave individual. se recomienda: v redistribuir los archivos en las unidades de disco v cambiar la memoria o el hardware de disco v reconfigurar las bases de datos v reconfigurar el sistema operativo Diseño de archivo hash Los archivos hash mal diseñados pueden hacer que disminuya el rendimiento. v Si se está utilizando una etapa Sequential File intermedia para descargar un archivo para que se pueda introducir en una herramienta externa. un cargador masivo o un clasificador externo. en lugar de tener que esperar a que finalice el proceso de grabación. Los archivos hash funcionan distribuyendo los datos entre varios grupos de un archivo. En concreto. De esta forma. Un archivo hash mal diseñado puede tener un efecto concreto en el rendimiento (para obtener ayuda con el diseño del archivo hash. ya que el proceso de lectura puede empezar a leer datos tan pronto como estén disponibles. pero lento en uno mal diseñado.

El tipo de datos en la clave determina el algoritmo hash óptimo que se puede utilizar al grabar datos. La forma en que se asignan las filas de datos a los distintos grupos. es especialmente importante que los grupos no estén superpoblados y no que se tengan que ampliar a grupos de desbordamiento. donde n es el módulo de archivo. lo que puede consumir mucho tiempo y reducir el rendimiento si tiene un archivo con un rápido crecimiento. Puede reestructurar un archivo hash estático entre ejecuciones de trabajo si desea ajustarlo. Archivos hash de IBM InfoSphere DataStage Hay dos tipos básicos de archivos hash que puede utilizar en estas circunstancias: estático (hash) y dinámico. Esto proporciona el grupo donde se grabarán las filas. Los archivos estáticos permiten decidir de qué forma se ejecuta hash en el archivo. Los archivos dinámicos no funcionan tan bien como un archivo estático bien diseñado. que puede emitirse mediante la característica Mandato del cliente del Administrador. este algoritmo también se utiliza para ubicar los datos cuando se vuelven a leer. Se ejecuta hash en las filas de datos (es decir. v Archivos estáticos. es importante tener en cuenta el tamaño de los registros (las filas) cuando se diseña el archivo. se asignan a los grupos) en un campo de clave. El número de grupos que tiene. Son los que ofrecen el máximo rendimiento si están bien diseñados. deberá realizar varias opciones de división en grupos mientras se graban los datos en él.388. No obstante. cuatro registros por grupo). una fecha. etc. el tamaño de los grupos y el algoritmo utilizado para determinar la distribución se deciden según la naturaleza de los datos que está almacenando en el archivo. utilice el mandato RESIZE. ya que esto dificulta el acceso a los datos. En términos de rendimiento. Asimismo. Puede especificar: – Algoritmo hash. El algoritmo hash convierte de forma eficaz y repetible una serie en un número del rango del 1 al n. deberá utilizar un archivo estático si conoce el tamaño y la forma de los datos que se van a almacenar en el archivo hash. – Módulo. v Archivos dinámicos. un número de serie. puede contener un nombre. un buen diseño tiene muchos grupos de pequeño tamaño (por ejemplo. es probable que ofrezcan el mínimo rendimiento. tipo especifica el algoritmo de hash que se utiliza (consulte “Diseño de archivo hash” en la página 15) módulo especifica el número de grupos en el rango de 1 a 8. El mandato para cambiar el tamaño de un archivo estático es: RESIZE nombre_archivo [tipo] [módulo] [separación] Donde: nombre_archivo es el nombre del archivo al que se cambia el tamaño. Esto puede sonar ideal. pero funcionan 16 Guía del desarrollador de Server Job . El tamaño del grupo como el número de bloques de 512 bytes. ya que es preferible que se ajusten equitativamente a los grupos y no generen desbordamientos. La búsqueda secuencial de la fila de datos necesaria no será nunca tan larga. En general. pero si se deja un crecer orgánicamente archivo dinámico. No obstante. separación especifica el tamaño de los grupos en bloques de 512 bytes y está en el rango de 1 a 8. puede haber casos en los que el diseño funcionará mejor con un número pequeño de grupos grandes. si están mal diseñados. El objetivo es utilizar un algoritmo que distribuya los datos uniformemente en el archivo. Para ello.388. En la mayoría de operaciones.608. El campo de clave puede ser de cualquier tipo.que contiene una determinada fila de datos. El otro objetivo es distribuir los datos lo más uniformemente posible entre varios grupos. Existe una relación de compensación entre el tamaño del grupo y el número de grupos. El número de grupos que tiene el archivo.608. por ejemplo. – Separación. Hay archivos hash que cambian dinámicamente cuando se graban datos en ellos con el tiempo. dependiendo del valor de sus campos de clave.

NUM MINIMUM.MODULUS n SPLIT. significativa en los primeros 8 caracteres Mayormente numérica con delimitadores. El valor predeterminado es 1. que se emite mediante la característica Mandato del cliente del Administrador. tal como se muestra a continuación: Tipo 2 3 4 5 6 7 Adecuado para las claves que se forman de la siguiente manera: Numérica. puede utilizarse para calcular el tamaño de grupo y el tamaño de registro grande. significativa en los primeros 8 caracteres Capítulo 2. De manera opcional. El valor predeterminado es 1. puede utilizar las opciones de Crear archivo en la página Entradas de la etapa Hashed File para especificar el tipo de archivo y sus valores. La carga del archivo se calcula como la carga partida. Cuando se crea un archivo dinámico.LOAD n LARGE. significativa en los últimos 8 caracteres Mayormente numérica con delimitadores. Elija un tipo según su tipo de clave. – Carga partida. significativa en los últimos 4 caracteres Numérica. No obstante.RECORD n RECORD. – Carga con fusión. significativa en los últimos 8 caracteres Alfabética. Esto ofrece la opción de varios tipos de archivos hash (estáticos) y un tipo de archivo dinámico. Elija GENERAL para la mayoría de tipos de campo de clave y SEQ. Especifica cómo puede ser de pequeña la carga de un archivo (en porcentaje) antes de que se parta el archivo. El valor predeterminado es 50. InfoSphere DataStage creará un archivo dinámico con los valores predeterminados descritos anteriormente. Los distintos tipos de archivos estáticos reflejan los distintos algoritmos hash que utilizan.NUM para las claves que son una serie de números secuencial. El número mínimo de grupos que tiene el archivo. – Registro grande. – Algoritmo Hash. Optimización del rendimiento en los trabajos de servidor 17 . – Tamaño de registro. Puede cambiar manualmente el tamaño de un archivo dinámico utilizando el mandato RESIZE. parámetro es uno de los siguientes y se corresponde con los argumentos descritos anteriormente para crear un archivo dinámico: GENERAL | SEQ. El mandato para cambiar el tamaño de un archivo dinámico es: RESIZE nombre_archivo [parámetro] [valor] donde: nombre_archivo es el nombre del archivo al que se cambia el tamaño. A continuación. El carga del archivo se calcula de la manera siguiente: Carga del archivo = ((total de bytes de datos) / (total de bytes de archivo)) * 100 La carga partida predeterminada es 80. Especifica el número de bytes que puede contener un registro (fila). – Tamaño del grupo. significativa en los últimos 5 caracteres Cualquier clave ASCII. utilice esta opción para especificar el tamaño de registro medio en bytes. Especifica cuánto puede cargarse un archivo (en porcentaje) antes de partirse.mejor que uno mal diseñado. Un registro de gran tamaño siempre se coloca en un grupo de desbordamiento.LOAD n MERGE. El grupo puede especificarse como 1 (2048 bytes) o 2 (4096 bytes). puede especificar la siguiente información (aunque todas estas opciones tienen valores predeterminados): – Módulo mínimo.SIZE n De forma predeterminada.

Puede calcular el módulo necesario para un archivo estático utilizando un método parecido al que se ha descrito anteriormente para calcular un módulo de preasignación para los archivos dinámicos: módulo = tamaño de datos estimado/(separación * 512) Una vez calculado el módulo. Puede calcular el módulo mínimo de la siguiente manera: módulo mínimo = tamaño de datos estimado/(tamaño de grupo * 2048) Una vez calculado el módulo mínimo. v Cálculo del módulo de un archivo estático. v Memoria caché de grabación. puede acelerar la carga del archivo realizando algunos cálculos preliminares y especificar el módulo mínimo según corresponda. significativa en los últimos 20 caracteres Alfabética. Esto mejora significativamente la operación al recortar o eliminar las operaciones de división. Si el almacenamiento en la memoria caché del servidor está habilitado. significativa en los primeros 5 caracteres Cualquier clave ASCII. puede especificarlo para crear un archivo (utilizando la característica Crear archivo del recuadro de diálogo Etapa Hashed File. significativa en los últimos 20 caracteres Mayormente numérica con delimitadores. v Precarga. significativa en los últimos 16 caracteres La clave numérica completa es significativa Mayormente numérica con delimitadores. la clave completa es significativa La clave alfabética completa es significativa Cualquier clave ASCII completa es significativa Cualquier clave de caracteres completa es significativa Mejoras operativas Puede realizar varios pasos en el diseño del trabajo para acelerar las operaciones que leen y graban archivos hash. v Preasignación. puede activar la memoria caché de grabación a nivel de etapa en la página Salidas de la etapa Hashed File.8 9 10 11 12 13 14 15 16 17 18 Alfabética. significativa en los primeros 4 caracteres Numérica. Puede especificar una memoria caché para las operaciones de grabación de forma que los datos se graben en ella y se desechen en el disco. en lugar del orden en el que se graban las filas individuales (que por su naturaleza necesitarán un acceso de disco aleatorio más lento). y el archivo siempre utilizará el tipo especificado de memoria caché de grabación. consulte “Definición de datos de entrada de Hashed File” en la página 41) o cambiar el tamaño de un archivo existente (utilizando el mandato RESIZE que se describe en “Archivos hash de IBM InfoSphere DataStage” en la página 16). Si utiliza archivos dinámicos. consulte “Definición de datos de entrada de Hashed File” en la página 41) o cambiar el tamaño de un archivo existente (utilizando el mandato RESIZE que se describe en “Archivos hash de IBM InfoSphere DataStage” en la página 16). puede especificarlo para crear un archivo (utilizando la característica Crear archivo del recuadro de diálogo Etapa Hashed File. 18 Guía del desarrollador de Server Job . Esto garantiza que los archivos hash se graben en el disco en el orden del grupo. Puede especificarlo en la página Salidas de la etapa Hashed File. significativa en los últimos 16 caracteres Cualquier clave ASCII. puede especificar el tipo de almacenamiento en la memoria caché de grabación cuando cree el archivo has. De lo contrario. Puede acelerar las operaciones de lectura de los enlaces de referencia si precarga un archivo hash en la memoria.

Dado que los dos tipos de trabajo utilizan distintos juegos de caracteres internos. El soporte multilingüístico incluye tablas de correlación © Copyright IBM Corp. Para obtener más información sobre Unicode. Incluye: v Correlaciones y entornos locales disponibles en los trabajos de servidor v Carga de correlaciones y de entornos locales v Consideraciones sobre los datos de carácter en los trabajos de servidor v Cómo utilizar las correlaciones y los entornos locales en los trabajos de servidor v Creación de nuevas correlaciones para los trabajos de servidor v Creación de nuevos entornos locales para los trabajos de servidor Cómo funciona la modalidad de soporte multilingüístico El soporte multilingüístico funciona con dos tipos de juegos de caracteres: v El juego de caracteres interno del soporte multilingüístico v Juegos de caracteres externos que cubren los distintos idiomas del mundo En modalidad de soporte multilingüístico. conocidas como Formatos de transformación de Unicode (UTF). Juegos de caracteres internos El juego de caracteres interno puede representar. por convención. Tenga en cuenta que son algunos tipos de series (es decir. El mecanismo para manejar el soporte multilingüístico varía para los trabajos paralelos y los trabajos de servidor. se representa en formato hexadecimal.org. 64. si es necesario. El consorcio de Unicode especifica varias formas de representar puntos de código. y los trabajos paralelos. Este es un número que. Los trabajos de servidor utilizan UTF-8. los tipos de datos puramente numéricos no la requieren nunca. caracteres) que necesitan correlación. se facilita un juego distinto de correlaciones para la conversión a y de cada uno de ellos (aunque para los trabajos paralelos se facilitan equivalentes de las correlaciones de trabajos de servidor que se utilizan comúnmente). consulte la página Web a nivel mundial del Consorcio de Unicode en http://www.Capítulo 3. Los trabajos paralelos y de servidor utilizan también entornos locales distintos.000 caracteres. UTF-16. Trabajos de servidor y soporte multilingüístico Estos temas proporcionan detalles acerca del soporte multilingüístico en trabajos de servidor de IBM InfoSphere DataStage. El juego de caracteres interno del soporte multilingüístico forma el estándar Unicode. como mínimo. Puede utilizar este número para representar el carácter en programas.unicode. Cada uno utiliza un juego de caracteres interno distinto. InfoSphere DataStage correlaciona entre los dos juegos de caracteres. 2011 19 . 1997. de manera que utilizan un conjunto distinto de correlaciones para la conversión de datos. Cada carácter del juego de caracteres interno tiene un punto de código exclusivo. el soporte multilingüístico correlaciona los datos en o de el juego de caracteres externo que desee utilizar. Correlación Cuando debe transformar o transferir datos. InfoSphere DataStage almacena fácilmente varios idiomas.

pero tienen convenciones de formateo de datos distintas. Los entornos locales no respetan los límites nacionales. Consulte IBM InfoSphere DataStage and QualityStage Globalization Guide para obtener una lista de todos los entornos locales facilitados con InfoSphere DataStage y los territorios e idiomas relacionados. Ello le permite especificar una correlación concreta para determinadas columnas de datos. Por ejemplo. v Una correlación de columna. y una correlación predeterminada para todos los trabajos paralelos de un proyecto. Algunas etapas paralelas y de servidor permiten especificar que utilizan una correlación determinada. numérico. Debe tener en cuenta el idioma. tanto Venezuela como Ecuador utilizan el español como idioma. v Una correlación de etapa. Esto sustituye el valor predeterminado de proyecto. es necesario que no se correlacionen. aunque para que las convenciones nacionales funcionen correctamente. Esto sustituye el valor predeterminado del proyecto y del trabajo. una empresa multinacional podría definir un entorno local a nivel mundial para utilizarlo en todas sus oficinas. Defina el juego de caracteres por separado. debe utilizar también los juegos de caracteres adecuados. Un entorno local se ve como una entidad separada de un juego de caracteres.para muchos de los juegos de caracteres externos que se utilizan en el mundo (consulte la lista de IBM InfoSphere DataStage and QualityStage Globalization Guide). Un país puede utilizar varios entornos locales. y un entorno local predeterminado para todos los trabajos paralelos del proyecto. En el cliente del Administrador especifique los entornos locales predeterminados para todos los trabajos de servidor de un proyecto. En el cliente del Diseñador de InfoSphere DataStage and QualityStage puede especificar una correlación predeterminada utilizada por un trabajo concreto que sobrescribe el valor predeterminado de proyecto. por ejemplo. etc. el juego de caracteres. si no puede imprimirse. y las convenciones para el formateo de los datos que no o varios grupos de personas utilizan. Puede especificar correlaciones a distintos niveles dentro de InfoSphere DataStage: v Un valor predeterminado de todo el proyecto. por ejemplo podría especificar horas y fechas en un entorno local y convenciones monetarias en otro. Los trabajos de servidor le permiten elegir entornos locales de manera individual para diferentes aspectos de las convenciones nacionales: v Formato para horas y fechas v v v v Formato para visualizar números Visualización de valores monetarios Si un carácter es alfabético. v Un valor predeterminado de trabajo. Varios países pueden utilizar un entorno local. En el cliente del Administrador de InfoSphere DataStage and QualityStage especifique una correlación predeterminada para todos los trabajos de servidor de un proyecto. Canadá utiliza dos y Bélgica utiliza tres. Orden en que deben ordenarse los caracteres (clasificación) Puede combinar entornos locales si es necesario. Algunas etapas paralelas y de servidor soportan la correlación por columna. por ejemplo. Entornos locales Un entorno local de soporte multilingüístico de InfoSphere DataStage es un conjunto de convenciones nacionales. Si los archivos incluyen caracteres ASCII de 7 bits. Los trabajos paralelos le permiten elegir entornos locales de manera individual para: v Orden en que deben ordenarse los caracteres (clasificación) Puede especificar entornos locales a distintos niveles dentro de InfoSphere DataStage: v Un valor predeterminado de todo el proyecto. 20 Guía del desarrollador de Server Job . el valor predeterminado de trabajo y las correlaciones de etapa.

JPY (Yen japonés). Este manual utiliza el término territorio en lugar de país para describir una zona que utiliza un entorno local. $. £ o ¥. Capítulo 3. En cuanto a las fechas. Hora y fecha La mayor parte de los territorios tienen un estilo preferido para presentar las horas y las fechas.UU. v El número de las posiciones decimales que se utilizan en los valores monetarios internacionales. Trabajos de servidor y soporte multilingüístico 21 . USD (dólares estadounidenses) NOK (Kroner noruego). Aquí aparecen algunos ejemplos de formatos utilizados por los distintos entornos locales para expresar las 9. incluyendo: v Carácter utilizado como separador decimal. En el cliente del Diseñador puede especificar entornos locales predeterminados utilizados por un trabajo concreto que sobrescribe el valor predeterminado de proyecto. 21:30 Fecha 1. Esto sustituye el valor predeterminado del proyecto y del trabajo.90 4/1/90 90. suele ser una elección entre un reloj de 12 horas o un reloj de 24 horas. v Carácter utilizado como separador de millares. Japón Hora 21h30 9:30 p. v El signo que se utiliza para indicar los valores monetarios positivos.000 1 000 Entorno local InfoSphere DataStage IE-ENGLISH NL-DUTCH FR-FRENCH Monetaria Esta convención define la forma en que se muestran los valores monetarios. existen más variaciones.4. v El número de las posiciones decimales que se utilizan en los valores monetarios locales. los números siguientes pueden significar mil.4.v Un valor predeterminado de trabajo. v Un entorno local de etapa. v El símbolo de la moneda local del territorio. por ejemplo. dependiendo del entorno local en que los utilice: Territorio Irlanda Países Bajos Francia Número 1. v La serie utilizada como símbolo de moneda internacional. Este puede ser distinto que el separador de miles utilizado en los formatos numéricos. Este puede ser distinto que el separador decimal utilizado en los formatos numéricos.1 Entorno local InfoSphere DataStage FR-FRENCH US-ENGLISH JP-JAPANESE Numérico Esta convención define la forma en que se muestran los números. En cuanto a las horas. Algunas etapas paralelas permiten especificar que utilizan un entorno local determinado.m.000 1. por ejemplo.30 de la noche del día 1 de abril de 1990: Territorio Francia EE. incluyendo: v El carácter utilizado como separador decimal (carácter raíz) v Carácter utilizado como separador de millares v Si los ceros del principio se deben utilizar para los números de 1 a -1 Por ejemplo.

Las correlaciones y los entornos locales disponibles son los que InfoSphere DataStage tiene disponibles para la compilación y la carga. el orden. el carácter Ä sigue al carácter A en Alemania.000.45 Entorno local InfoSphere DataStage US-ENGLISH GB-ENGLISH DE-GERMAN DE-GERMAN-EURO Tipo de carácter Esta convención define si un carácter es alfabético. se instalan un gran número de correlaciones y entornos locales. Seleccione la opción Mostrar todos los entornos locales para que las listas desplegables muestren todas las correlaciones disponibles para la carga. 3. v Las posiciones relativas del símbolo de moneda y los signos positivo o negativo de los valores monetarios. Seleccione un proyecto y pulse el botón NLS. pero deben cargarse realmente antes de ejecutar un trabajo que los utiliza. se muestran todas las correlaciones cargadas actualmente para los trabajos de servidor. se compilan y se cargan un conjunto de correlaciones y de entornos locales preparados para su uso cuando se diseñan y se ejecutan los trabajos del servidor de InfoSphere DataStage. Abra el cliente del Administrador... numérico. para abrir el diálogo Valores de soporte multilingüístico del proyecto para el proyecto. Pulse el separador Proyectos para pasar a la página Proyectos. pero sigue al carácter Z en Suecia. Carga de correlaciones Puede cargar una de las correlaciones disponibles para que los trabajos puedan utilizarla en el tiempo de ejecución. Pulse la flecha abajo al lado de la categoría de entorno local para ver la lista desplegable de los entornos locales cargados. Correlaciones y entornos locales en los trabajos de IBM IBM InfoSphere DataStage Cuando instala InfoSphere DataStage con el soporte multilingüístico habilitado.45 €123. si no puede imprimirse. algunas letras llevan acento en minúsculas pero no en mayúsculas.v El signo que se utiliza para indicar los valores monetarios negativos. Puede haber muchas variaciones en el orden de clasificación dentro de un único juego de caracteres. pueden especificarse cuando se diseñan los trabajos.00 DM123. Libras de GB Marcos de Alemania Euros de Alemania Formato (Format) $123. Puede ver qué correlaciones y entornos locales hay cargados actualmente y cuáles están disponibles en el Administrador de InfoSphere DataStage: 1. De forma predeterminada. 2. Ordenación Esta convención define el orden en que se clasifican los caracteres.45 £37. pulse el separador Entornos locales del servidor. etc. Dependiendo de qué idioma especifique al instalar InfoSphere DataStage. 4. 22 Guía del desarrollador de Server Job . InfoSphere DataStage realiza una distinción entre las correlaciones y los entornos locales disponibles y las correlaciones y los entornos locales cargados.UU. es decir. Elija la opción Mostrar todas las correlaciones para ver una lista de las correlaciones disponibles para la carga. Esta convención define también las normas de mayúsculas y minúsculas. A continuación se facilitan ejemplos de los formatos monetarios que utilizan los distintos entornos locales: Moneda Dólares de EE. Por ejemplo. por ejemplo. Para ver los entornos locales cargados.

Un recuadro de diálogo solicitará que confirme la acción. por lo que inicialmente no aparece ninguna marca de referencia al lado. La página se expande para mostrar las listas de correlaciones disponibles y cargadas: 2. v Puede especificar la correlación predeterminada de un trabajo. a menos que se altere temporalmente en el diseño del trabajo. La página se expande para mostrar las listas de entornos locales disponibles y cargados: 2. Cuando el entorno local se haya compilado. La correlación indica a InfoSphere DataStage cómo convertir el juego de caracteres externo en un juego de caracteres Unicode interno. En la página Entornos locales del servidor. 3. En la página Correlaciones del servidor. 3. Carga de entornos locales Puede cargar uno de los entornos locales disponibles para que los trabajos puedan utilizarlo en el tiempo de ejecución. v Leyendo o grabando datos ASCII de 7 bits. se añadirá a la lista Instalados de la derecha. Utilización de correlaciones en trabajos de servidor Debe utilizar una correlación siempre que lee datos de caracteres (distintos de ASCII de 7 bits) en IBM InfoSphere DataStage o que graba datos de caracteres de InfoSphere DataStage. Debe detener y reiniciar el motor de servidor para que se cargue del todo. Se utilizará en todas las etapas de todos los trabajos de un proyecto. Debe detener y reiniciar el motor de servidor para que se cargue del todo. una etapa Hashed File o una etapa UniVerse). InfoSphere DataStage permite especificar la correlación que debe utilizar en los distintos puntos de un diseño de trabajo: v Puede especificar la correlación predeterminada de un proyecto. Para detener y reiniciar el motor. pulse el botón Instalar. Un recuadro de diálogo solicitará que confirme la acción. Se utilizará en todas las etapas de un trabajos (sustituyendo el valor predeterminado del proyecto).Procedimiento 1. por lo que inicialmente no aparece ninguna marca de referencia al lado. Seleccione la correlación que desee cargar en la lista Disponibles de la izquierda y pulse el botón Añadir. v Puede especificar una correlación para que una determinada etapa en el trabajo. se añadirá a la lista Instaladas de la derecha. Procedimiento 1. a menos que se altere temporalmente en el diseño del trabajo. Capítulo 3. Seleccione el entorno local que desee cargar en la lista Disponibles de la izquierda y pulse el botón Añadir. Esto sustituye el valor predeterminado del proyecto y del trabajo. o detenga e inicie los servicios de IBM InfoSphere DataStage (consulte la Guía del cliente del administrador para obtener instrucciones sobre cómo hacerlo). rearranque la máquina. El entorno local estará disponible para los trabajos en el tiempo de ejecución. La correlación estará disponible para los trabajos en el tiempo de ejecución. Pulse Sí. Trabajos de servidor y soporte multilingüístico 23 . No es necesario correlacionar los datos si está: v Manejando datos puramente numéricos. v Leyendo o grabando en una base de datos UniVerse externa con el soporte multilingüístico habilitado. pulse el botón Instalar. v Leyendo o grabando en una etapa que representa el almacenamiento interno proporcionado por InfoSphere DataStage (es decir. Para detener y reiniciar el motor de servidor. Pulse Sí. o detenga e inicie los servicios de DataStage (consulte la Guía del cliente del administrador para obtener instrucciones sobre cómo hacerlo). rearranque la máquina. Cuando la correlación se haya compilado.

La correlación seleccionada es ahora la predeterminada para el proyecto y la que utilizan todos los trabajos del proyecto. Especificación de una correlación predeterminada del trabajo Puede especificar una correlación predeterminada para un trabajo específico en el Diseñador de IBM InfoSphere DataStage. pero tenga en cuenta que deberá cargar la correlación (consulte "Carga de correlaciones") antes de ejecutar el trabajo. 2. que deben correlacionarse con el juego de caracteres Unicode interno de InfoSphere DataStage. Puede seleccionar la opción Mostrar todas las correlaciones y elegir una correlación que no se haya cargado todavía. Seleccione la opción Mostrar todas las correlaciones y elija una correlación que no se haya cargado todavía. utilizando el recuadro de diálogo Propiedades del trabajo. Datos de carácter en trabajos de servidor Sólo es necesario especificar una correlación de juego de caracteres donde el trabajo procesa datos de carácter. 2. Pulse Aceptar. Abra el recuadro de diálogo Propiedades de trabajo para dicho trabajo (elija Editar > Propiedades de trabajo). IBM InfoSphere DataStage tiene varios tipos de carácter que pueden especificarse como el tipo SQL de una columna: v v v v v v Char VarChar LongVarChar NChar NVarChar NLongVarChar Todos los tipos anteriores denotan columnas de serie. 5. que altera temporalmente el proyecto. Procedimiento 1. 3.v Para determinadas etapas. 3. Elija la correlación que desee en la lista Nombre de correlación predeterminada. Pulse el separador Proyectos para pasar a la página Proyectos. Especificación de una correlación predeterminada del proyecto La correlación predeterminada para un proyecto se especifica en el cliente del Administrador de IBM InfoSphere DataStage. para abrir el diálogo Valores de soporte multilingüístico del proyecto para el proyecto. La correlación seleccionada es ahora la predeterminada para el trabajo y la que utilizan todas las etapas del trabajo. De forma predeterminada. Elija la correlación que desee en la lista Correlación predeterminada para las etapas. Pulse el separador Soporte multilingüístico para pasar a la página Soporte multilingüístico: 4. Abra el cliente del Administrador.. Pulse Aceptar. se muestran todas las correlaciones cargadas actualmente para los trabajos de servidor. 4. el trabajo y las correlaciones predeterminadas de la etapa.. Procedimiento 1. 24 Guía del desarrollador de Server Job . Abra el trabajo para el que desea establecer la correlación en el Diseñador de InfoSphere DataStage. puede especificar una correlación de columnas individuales. Seleccione el proyecto para el que desee establecer una correlación predeterminada y pulse el botón NLS. 5. pero tenga en cuenta que deberá cargar la correlación (consulte "Carga de correlaciones") antes de ejecutar los trabajos que utilizan la correlación.

La etapa utilizará el parámetro de trabajo o la correlación seleccionada. Pulse el separador NLS de la página Etapa: 2. A continuación. Abra el editor de etapas en el trabajo en el cliente del Diseñador. InfoSphere DataStage utilizará el valor del parámetro para el nombre de correlación. Acerca de esta tarea Las siguientes etapas permiten la correlación por columnas: v Etapa ODBC v Etapa Sequential File Procedimiento 1. por lo tanto. Cuando se ejecuta el trabajo. excepto: v Las etapas activas como. Seleccione el separador NLS de la página Etapa. pero tenga en cuenta que deberá cargar la correlación (consulte “Carga de correlaciones” en la página 22) antes de ejecutar el trabajo que contiene la etapa. Pulse Aceptar. No existe siempre una relación directa entre el entorno local y el idioma. 2. Acerca de esta tarea Especifique una correlación para que una determinada etapa utilice el diálogo del editor de etapas en el Diseñador de IBM InfoSphere DataStage. v Las etapas que utilizan el almacenamiento interno ofrecido por InfoSphere DataStage. la etapa Aggregator y Transformer. Capítulo 3. Seleccione la opción Mostrar todas las correlaciones y elija una correlación que no se haya cargado todavía. Pulse Aceptar. Seleccione la opción Permitir correlación por columnas. vaya a la página Entradas o Salidas (dependiendo de si está grabando o leyendo datos) y seleccione el separador Columnas: 3. La cuadrícula de columnas tiene ahora un campo adicional denominado Correlación de soporte multilingüístico. Estas manejan los datos que se han especificado en InfoSphere DataStage y. por ejemplo. 3. Realice uno de los pasos siguientes: v Elija la correlación que desee en la lista Nombre de correlación que se utiliza con la etapa. ya se han correlacionado.. Utilización de entornos locales en trabajos de servidor Los entornos de trabajo permiten especificar que los datos se manejan de acuerdo con los convenios de un determinado territorio.Especificación de una correlación de etapa Puede especificar una correlación para una etapa. 4.. v Pulse el botón Utilizar parámetro de trabajo. Estas manejan los datos en el juego de caracteres Unicode. Seleccione la correlación que desee para una determinada columna en la lista desplegable. Procedimiento 1. Esta opción permite seleccionar un parámetro de trabajo existente o especificar uno nuevo. Puede especificar correlaciones para todos los tipos de etapa. Abra el editor de etapas en el trabajo. el entorno local del francés es distinto al del francés canadiense. Especificación de una correlación de columna Algunos tipos de etapa de trabajo de servidor permiten especificar una correlación que se utiliza para una determinada columna en los datos manejados por dicha etapa. es decir. por lo que no requieren ninguna correlación. las etapas Hashed File y UniVerse. por ejemplo. Trabajos de servidor y soporte multilingüístico 25 .

En los trabajos del servidor.. se proporcionan descripciones de cada tipo de convenio. Puede seleccionar la opción Mostrar todos los entornos locales y elegir un entorno local que no se haya cargado todavía. utilizando el recuadro de diálogo Propiedades del trabajo. Seleccione el proyecto para el que desee establecer una correlación predeterminada y pulse el botón NLS.. pero tenga en cuenta que deberá cargar el entorno local (consulte "Carga de entornos locales") antes de ejecutar los trabajos que lo utilizan. 2. Pulse Aceptar. Procedimiento 1. 3. Abra el trabajo para el que desee establecer el entorno local en el cliente del Diseñador. El entorno local seleccionado es ahora el predeterminado para la categoría en el proyecto y el que utilizan todos los trabajos del proyecto. Pulse el separador Entornos locales del servidor para pasar a la página Entornos locales del servidor. Pulse el separador Soporte multilingüístico para pasar a la página Soporte multilingüístico: 4. Abra el recuadro de diálogo Propiedades de trabajo para dicho trabajo (elija Editar > Propiedades de trabajo). En "Entornos locales". El entorno local seleccionado es ahora el predeterminado para la categoría en el trabajo y el que utilizan todas las etapas del trabajo. si no puede imprimirse. Pulse la flecha que aparece al lado de la categoría para la que desea establecer un entorno local y elija un entorno local en la lista desplegable. 26 Guía del desarrollador de Server Job . 5. 3. Pulse Aceptar. 2. Especificación de un entorno local predeterminado del proyecto El entorno local predeterminado para un proyecto se especifica en el cliente del Administrador de IBM InfoSphere DataStage. pero tenga en cuenta que deberá cargar el entorno local (consulte "Carga de entornos locales") antes de ejecutar el trabajo. v Orden en que deben ordenarse los caracteres (clasificación) Puede combinar entornos locales si es necesario. 4. Especificación de un entorno local predeterminado del trabajo Puede especificar un entorno local predeterminado para un trabajo específico en el Diseñador de IBM InfoSphere DataStage. Pulse el separador Proyectos para pasar a la página Proyectos. numérico. puede establecer un entorno local predeterminado para un proyecto o para un trabajo individual. Puede seleccionar la opción Mostrar todos los entornos locales y elegir un entorno local que no se haya cargado todavía. por ejemplo podría especificar horas y fechas en un entorno local y convenciones monetarias en otro. Pulse la flecha que aparece al lado de la categoría para la que desea establecer un entorno local y elija un entorno local en la lista desplegable. Procedimiento 1. etc. 5. Abra el cliente del Administrador.Los trabajos de servidor le permiten elegir entornos locales de manera individual para diferentes aspectos de las convenciones nacionales: v Formato para horas y fechas v Formato para visualizar números v Visualización de valores monetarios v Si un carácter es alfabético. para abrir el diálogo Valores de soporte multilingüístico del proyecto para el proyecto.

gestionar y utilizar. cuando se trate de datos que se repitan. tales como un registro "E" para la información estática del empleado y un registro "S" para la información sobre la nómina mensual del empleado o para grupos repetitivos de información (doce meses de ingresos). no tiene punteros ni ninguna otra infraestructura complicada). Gestión de grupos repetitivos y de estructuras internas Los grupos repetitivos y las estructuras de registros internas tales como campos GROUP y OCCURS son fáciles de cargar. © Copyright IBM Corp. cuando en realidad. 2011 27 . El hecho de tener más de un enlace de salida implica una secuencia de guardado o de carga cada vez que se cambian separadores. Este proceso de filtrado redunda en que se logra un incremento del rendimiento puesto que la etapa ya no analiza ni procesa cientos de columnas. Etapas de trabajo de servidor Etapas Complex Flat File La etapa Complex Flat File permite convertir los datos extraídos de los archivos sin formato complejos que se generan en un sistema principal de IBM. Cómo reconocer una estructura jerárquica Por ejemplo. más de 300. Si utiliza la etapa Complex Flat File para procesar un extenso número de columnas. Selección de subconjuntos de columnas Puede seleccionar un subconjunto de columnas desde una extensa CFD (COBOL File Description. 1997. Puede utilizar varios tipos de registro para conseguir esta estructura jerárquica. Para obtener más información acerca de los trabajos creados con la versión 1 de esta etapa. utilice registros con varias estructuras para diferentes tipos de información. puede presentar simultáneamente grupos OCCURS anidados. Un archivo sin formato complejo tiene una estructura jerárquica en su disposición de las columnas. Así mejorará sustancialmente el rendimiento de la interfaz gráfica de usuario al cargar.Capítulo 4. Los metadatos pueden presentarse simultáneamente en un conjunto de columnas normalizado durante el tiempo de carga de forma que no existan matrices durante el tiempo de ejecución. consulte la siguiente sección. La etapa Complex Flat File no dispone de la función de búsqueda de referencias ni soporta los enlaces de entrada. Puede ignorar las columnas de datos GROUP que se visualizan como datos en bruto y no pueden utilizarse de forma lógica en la mayoría de aplicaciones. sólo necesita unas pocas. Físicamente es un archivo sin formato (es decir. Un enlace de salida especifica los datos que está extrayendo es decir. una secuencia de filas que se deben leer. pero lógicamente representa relaciones padre-hijo. Los archivos sin formato complejo también pueden incluir tipos de datos de herencia. por ejemplo. Enlaces de salida La etapa Complex Flat File soporta varias salidas. utilice sólo un enlace de salida en su trabajo. Descripción de archivo COBOL). guardar o estructurar estas columnas. También puede combinar estas agrupaciones de registros y.

la cuadrícula del separador Columnas de origen está vacía para los trabajos existentes hasta que pulsa Aceptar y guarda el trabajo. v Los siguientes tipos de datos de COBOL: – Empaquetados (COMP-3). Archivos sin formato complejo generados en el sistema principal de IBM. Deben presentarse simultáneamente durante el tiempo de carga (no durante el tiempo de ejecución). – Binario (lo mismo que COMP. Soporte multilingüístico. Una cláusula REDEFINES. y puede actualizar los trabajos existentes seleccionando Sí en la siguiente consulta: Esta etapa se ha desarrollado con una versión anterior del plug-in CFF. No soporta columnas que estén separadas por delimitadores. – Entero (COMP. Terminología La lista siguiente describe los términos utilizados en este documento: 28 Guía del desarrollador de Server Job . La GUI genera los valores de columna de origen utilizando la lista de columnas de salida. OCCURS paralela mediante enlaces de salida separados. y puede seleccionar y modificar columnas. pero sin signos. OCCURS fija con ninguna cláusula DEPENDING ON. Windows).) – Decimal (COMP-2). Funcionalidad no soportada La siguiente funcionalidad no está soportada: v Formatos de archivo de byte que no son de 8 bits. Los trabajos existentes se ejecutan sin alterar siempre que no guarde el trabajo. Entero también soporta implementaciones de 1 y 3 bytes no estándares). OCCURS anidada en el mismo formato CFD.Trabajos existentes creados con la versión 1 de la etapa Complex Flat File Acerca de esta tarea Cuando abre por primera vez la etapa Complex Flat File. v v v v v v v La capacidad de seleccionar subconjuntos de columnas desde una CFD. – Carácter (DISPLAY o PIC X). Funcionalidad de la etapa Complex Flat File Funcionalidad soportada La etapa Complex Flat File soporta la funcionalidad siguiente: v Datos en bruto EBCDIC y ASCII. – Flotante (COMP-1). v Archivos sin formato complejo generados en sistemas principales que no son de IBM (por ejemplo. ¿Desea actualizar esta etapa? Las columnas de origen se rellenan. – Estructuras de formato fijas. No puede utilizar el separador Columnas de origen y la cuadrícula permanece vacía. Puede detener la actualización seleccionando No en la consulta. – Delimitados (DISPLAY son signos).

Esta página muestra el nombre de la etapa que está editando en el campo Nombre de etapa. (El separador Soporte multilingüístico sólo aparece si se ha instalado el soporte multilingüístico). (Los archivos preparados para la carga o delimitados no contienen estas estructuras complejas). se abrirá el recuadro de diálogo CFF Etapa. Este recuadro de diálogo tiene las páginas Etapa y Salida: v Etapa. Esta página especifica las fuentes de datos que se deben utilizar y las definiciones de columnas asociadas para cada enlace de salida. Realícelo en el separador Soporte multilingüístico en la página Etapa. por ejemplo. Si el soporte multilingüístico está instalado. se selecciona la opción Soporte multilingüístico en el recuadro de lista Formato de los datos en el separador General de la página Salida y se habilita el separador Soporte multilingüístico en la página Etapa. Presentación simultánea La conversión de archivos que contienen estructuras de datos complejas como. Separador Soporte multilingüístico Puede definir una correlación de juegos de caracteres que interprete el archivo de entrada para una etapa. matrices. las matrices y las redefiniciones. Este método es un sistema de gestión de archivos para el sistema operativo de sistema principal de IBM MVS. VSAM Método de acceso de almacenamiento virtual. Normalización La conversión de registros en formato NF2 (no de primera forma normal) que contienen datos con varios valores en una o varias filas 1NF (primera forma normal).Término Descripción CFD Formato de descripción de archivos COBOL. Utilización de la etapa Complex Flat File Si utiliza la interfaz gráfica de usuario personalizada para editar una etapa Complex Flat File. Capítulo 4. Archivo sin formato complejo Un superconjunto del archivo sin formato simple que contiene estructuras de datos complejas. en archivos de datos que contienen registros sin relaciones estructuradas. grupos y redefiniciones. que se encuentran en los archivos VSAM o QSAM. Los archivos sin formato complejo también pueden incluir tipos de datos de herencia. que sólo aparecerá si ha instalado el soporte multilingüístico. consulte “Separador Soporte multilingüístico”. QSAM Método de acceso secuencial en cola. El separador General describe el objetivo de la etapa en el campo Descripción. Importación de DCLGen El componente IBM InfoSphere DataStage al que se importa una definición de tabla en un archivo DCLGen que se ha exportado previamente de VS/IBM DB2. Un archivo sin formato complejo tiene una estructura jerárquica implicada en su disposición de las columnas. Archivo sin formato de ancho fijo Un archivo caracterizado por archivos delimitados o de longitud fija (binarios).) Nota: No puede cambiar el nombre de la etapa desde este recuadro de diálogo. v Salida. Las estructuras de datos complejas soportadas por el archivo sin formato complejo son los grupos. Etapas de trabajo de servidor 29 . Para obtener detalles.

. Acerca de la página Salida La página Salida tiene un campo Nombre de salida. en el recuadro de diálogo Etapa CFF. v Botón Columnas. Si el soporte multilingüístico no está instalado.. para iniciar el Navegador de datos... para visualizar una breve lista de columnas en el archivo de fuente de datos. la opción Soporte multilingüístico no está disponible en el recuadro de lista Formato de los datos y el separador Soporte multilingüístico de la página Salida está inhabilitado.) v Nombre de salida. Seleccionar columnas. y Visualizar datos. el formato de los datos se fija en Soporte multilingüístico y no se podrá editar. Pulse el botón Columnas. los separadores General. v Mostrar todas las correlaciones.. El nombre de la vía de acceso de entrada de la fuente de datos a partir del que se pueden recuperar los datos. Criterios de selección y Columnas de destino y los botones Columnas. . Especifica los valores de los parámetros para el trabajo.. (El separador Soporte multilingüístico sólo aparece si se ha instalado el soporte multilingüístico). donde Param es el nombre del parámetro de trabajo. (Las correlaciones de soporte multilingüístico soportan datos EBCDIC.. v Sólo correlaciones cargadas.) v Estilo del registro. El formato de un archivo de entrada: EBCDIC.. v Botón Visualizar datos. v Formato de los datos.. Muestra una lista de las correlaciones que están cargadas en ese momento. Puede cambiar la correlación seleccionando un nombre de correlación de la lista.Especifique la información mediante el siguiente botón y los siguientes campos: v Correlacionar el nombre que debe utilizarse con la etapa.... ASCII o NLS. Esta lista muestra todos los enlaces de salida de una etapa Complex Flat File. la etapa Complex Flat File tiene un enlace de salida. Nombre del enlace de salida. v Utilizar parámetro de trabajo. Opcionalmente. consulte “Separador Soporte multilingüístico” en la página 29.. Definición de un enlace de salida Al leer datos de un origen de datos. La serie #Param# se sustituye por el parámetro de trabajo cuando se ejecuta el trabajo. El archivo de entrada se interpreta de acuerdo con la opción que se selecciona el recuadro de lista Formato de los datos del separador General de la página Salida. Utilice el formato #Param#.. Puede seguir visualizando la lista a medida que va entrando metadatos detallados en el separador Origen Columnas. Columnas de origen. Separador General Este separador se visualiza de forma predeterminada. puede entrar texto para describir la finalidad del enlace de salida en el campo Descripción. Para obtener detalles. . Se define la correlación de juego de caracteres predeterminada para el proyecto o el trabajo... También puede pulsar el botón . situado a la derecha del campo para examinar los directorios del sistema que hospeda la capa de motor para el origen de datos. Seleccione el enlace que desee editar en el recuadro de lista Nombre de salida. El tratamiento de fin de la línea de los registros de acuerdo con la tabla siguiente: 30 Guía del desarrollador de Server Job . Permite ver los datos asociados con el enlace de salida. Defina las propiedades de este enlace y las definiciones de columna de los datos en la página Salida. Muestra una lista de todas las correlaciones transferidas con IBM InfoSphere DataStage. Si el soporte multilingüístico está habilitado... Entre la información correspondiente en los siguientes campos: v Vía de acceso. Pulse el botón Ver datos.

Éstos también delimitan un registro. ASCII o EBCDIC CR/LF Cualquier valor Capítulo 4.Tabla 2. las columnas que tengan posiciones de inicio mayores que la posición de CR/LF se establecerán en nulo. los datos después del final del registro y antes del CR/LF (tal y como han determinado los metadatos) se descartarán. Tratamiento de fin de la línea Formato de los datos ASCII o EBCDIC Estilo del registro Binario Longitud del registro Mayor que cero Comentarios La longitud del registro viene determinada por el campo Longitud del registro. Si los metadatos definen un registro que es más largo que la Longitud del registro tal y como ha determinado el CR/LF. La longitud del registro viene determinada por el delimitador CR/LF. Si los metadatos definen un registro que es menor que la posición del CR/LF. Etapas de trabajo de servidor 31 . Si los metadatos definen un registro que es más largo que el campo Longitud del registro. puede generarse una coincidencia de caracteres CR/LF. Si los datos que se están leyendo están en formato EBCDIC. las columnas que tengan posiciones de inicio mayores que la Longitud del registro se establecerán en nulo. ASCII o EBCDIC Binario Cero La longitud del registro viene determinada por los metadatos.

se generarán registros vacíos para cada CR/LF." o "D. Si el valor no es un hexadecimal "C. Si se selecciona esta opción. los datos después del final del registro y antes del CR/LF (tal y como han determinado los metadatos) se descartarán. la etapa comprueba si existe un valor de signo válido en los datos definidos como COMP-3. Si los metadatos definen un registro que es menor que la posición del CR/LF. Si los metadatos definen un registro que es más largo que el campo Longitud del registro. el CR/LF no debe finalizar el último registro del conjunto de datos. Si los metadatos definen un registro que es más largo que la Longitud del registro tal y como ha determinado el CR/LF. Si los datos que se están leyendo están en formato EBCDIC. las columnas que tengan posiciones de inicio mayores que la Longitud del registro se establecerán en espacios. NLS CR/LF Cualquier valor La longitud del registro viene determinada por el delimitador CR/LF. v Verificar valor de signo en datos DECIMAL COMP-3. Si uno o varios CR/LF se encuentran al final de un conjunto de datos.". puede generarse una coincidencia de caracteres CR/LF. Éstos también delimitan un registro. Nota: Si el Estilo del registro se establece en CR/LF. NLS Binario 0 La longitud del registro viene determinada por los metadatos. las columnas que tengan posiciones de inicio mayores que la posición de CR/LF se establecerán en espacios. la etapa graba un mensaje de error en el registro de IBM InfoSphere DataStage. Tratamiento de fin de la línea (continuación) Formato de los datos NLS Estilo del registro Binario Longitud del registro >0 Comentarios La longitud del registro viene determinada por el campo Longitud del registro.Tabla 2." "F. 32 Guía del desarrollador de Server Job .

la etapa interpreta que el valor es cero.. La lista siguiente define las propiedades que se capturan para metadatos de archivo sin formato complejo. Separador Columnas de origen El separador Columnas de origen contiene la lista completa de todas las columnas. además de dos páginas que contienen campos específicos para los metadatos utilizados en trabajos de servidor e información específica de fuentes de datos de COBOL. El recuadro de diálogo Editar metadatos de columna tiene un área general que contiene campos comunes a todos los tipos de fuente de datos. también deberá presentar simultáneamente todas las matrices manualmente.) Utilice el separador Columnas de origen para entrar los datos de columna que constituyen el archivo sin formato manualmente o puede utilizar Cargar. Recuadro de diálogo Editar metadatos de columna Utilice el recuadro de diálogo Editar metadatos de columna para editar los metadatos de columna tal y como se describe en esta sección. Si se selecciona esta opción. Representa el tipo de datos de COBOL. pero el rendimiento será más lento debido a los datos de las columnas que no se utilizan. Las Columnas de origen deben describir de forma precisa y completa el archivo de origen o. el archivo no se analizará correctamente. Puede editar estos campos pulsando el botón derecho del ratón en una fila de la cuadrícula y seleccionado Editar fila. Nota: No utilice el separador Columnas de origen para omitir columnas del archivo de destino. En su lugar. de lo contrario. Las otras columnas de la cuadrícula son las columnas estándar para el separador Columnas. la etapa interpreta que el valor de cualquier columna que contenga valores nulos binarios será un a SQL_NULL. Si utiliza el separador Seleccionar Columnas. Texto opcional que describe la finalidad del enlace de salida. Etapas de trabajo de servidor 33 . Botón Cargar Cargar presenta simultáneamente las matrices generando nombres de columnas con números que incrementan monotónicamente si se responde con Sí a la consulta siguiente: ¿Desea presentar simultáneamente OCCURS en las columnas que se están cargando? Si entra los datos manualmente. v Descripción. v Tipo nativo. Se abrirá el recuadro de diálogo Editar columna. . utilice el separador Seleccionar columnas para omitir columnas. (También puede utilizar la etapa Transformer para hacerlo. Propiedades de metadatos Utilice el IBM InfoSphere DataStage and QualityStage Designer para importar los metadatos de archivo sin formato complejo (CFD) en el InfoSphere DataStage. Si no se selecciona. no se selecciona la opción Preservar NULL. De forma predeterminada. Capítulo 4. podrá seleccionar columnas de esta lista para que los datos se trasladen al enlace de salida de CFF. Representa el número de nivel de la columna dentro de una descripción de archivo de COBOL. Campo Descripción Nombre de la columna Nombre de la columna. Las columnas siguientes tienen un significado especial para la etapa Complex Flat File: v Número de nivel..v Preservar NULL.

Opción de signo Si especifica una cláusula de signo y la serie de caracteres de la imagen contiene un símbolo S. Fíjelo en S si la serie de caracteres de la imagen contiene el símbolo S. Si se establece en Sí. Utilice una de las siguientes: COMP COMP-1 COMP-2 COMP-3 DISPLAY Indicador de signo Especifica el signo. OCCURS Número de ocurrencias de la columna especificada en la cláusula OCCURS de COBOL.Clave Especifica si la columna es una clave. Utilice uno de los valores siguientes: FLOAT. 34 Guía del desarrollador de Server Job .LEADING SEPARATE TS . Descripción Descripción de una columna. Longitud Valor numérico de la precisión. BINARY.) Uso Especifica una cláusula de uso de COBOL. Número de nivel Número de nivel COBOL relativo de la columna. estará sujeta a una restricción NOT NULL. o GROUP. DISPLAY_NUMERIC. Especifica si es una cláusula sincronizada de COBOL. (Sí/No) Formato de fecha Formato de una columna de fecha. (Consulte los ejemplos de OCCURS paralela. CHARACTER. Picture Muestra una cláusula Picture generada en base a los valores en Nativo Tipo. a la que no se da soporte. De lo contrario. consulte “Separador Columnas de destino” en la página 37. Longitud de almacenamiento Longitud de almacenamiento real en bytes de la columna. Consulte los ejemplos de los valores del campo Descripción al final de esta sección. este atributo se establece en uno de los valores siguientes: L .TRAILING SEPARATE Indicador de sinc.TRAILING LS . Campo redefinido Nombre de la columna que se está redefiniendo. Tipo nativo Tipo de datos nativo de la columna. Con posibilidades de nulos Especifica si la columna puede contener valores nulos. Para obtener detalles acerca de la utilización del tipo nativo GROUP para manejar fechas. Escala Número de posiciones decimales. DECIMAL.LEADING T . al final de esta sección. fíjelo en U. Depending on Nombre de la columna de dependencia. Longitud y Escala.

. Eliminar todos los cambios efectuados en la fila desde la última vez que se aplicaron los cambios. Cerrar el recuadro de diálogo Editar metadatos de columna. Es necesario procesar estas cláusulas OCCURS paralelas para separar enlaces de salida. Para procesar OCCURS paralelas: 1.. OCCURS 2. v Restablecer. v Aplicar. Si entra o modifica metadatos utilizando el editor de etapas y desea guardar una copia en el repositorio de InfoSphere DataStage para utilizarlas en otra etapa. Visualizar los metadatos de la fila anterior o de la siguiente. Este ejemplo emplea una cláusula PHONES OCCURS y una cláusula ADDRESS OCCURS: 01 CLIENT. es decir: dos o más cláusulas OCCURS en la misma definición de datos. 05 ADDLINE 03 POSTCODE 03 PHONES 05 TELNO PIC X(25). OCCURS 4.Proceso de metadatos Utilice los botones de la parte inferior del recuadro de diálogo Editar metadatos de columna para continuar añadiendo o editando columnas o guardar los cambios y cerrar el recuadro de diálogo. Borre el campo OCCURS utilizando el recuadro de diálogo Editar metadatos de columna. PIC X (10). OCCURS 2.. PIC X(25).. Guardar los cambios en la fila actual. Entre NONE en el campo Descripción de las columnas que no están siendo procesadas en este enlace. v Cerrar. 03 SURNAME 03 FORENAME 03 ADDRESS 05 ADDLINE 03 POSTCODE 03 PHONES 05 TELNO PIC X(25). 03 SURNAME 03 FORENAME 03 ADDRESS. 2. Sólo aparece visible un subconjunto de estas propiedades en el separador Columnas de origen. PIC X (10). pulse con el botón derecho del ratón en una fila de la cuadrícula y seleccione Editar fila. se le preguntará si desea guardarlos antes de cerrar la ventana.. Si hay cambios pendientes para la fila actual. PIC X(10). PIC X(25)... PIC X (10). pulse el botón Guardar. El ejemplo siguiente utiliza una cláusula PHONES OCCURS y una cláusula ADDLINE OCCURS: 01 CLIENT. Para ver todas las propiedades de una determinada fila. Gestión de OCCURS paralelas La etapa Complex Flat File no soporta OCCURS paralelas. Etapas de trabajo de servidor 35 . PIC X(10). Para cargar una definición de tabla existente en una etapa. v Anterior y Siguiente. utilice el botón Cargar. De esta manera se consigue que los datos de dichas columnas fluyan sin modificarse. La interfaz gráfica de usuario personalizada CFF reconoce las OCCURS paralelas y muestra el error siguiente: Demasiadas OCCURS No dispone de autorización para guardar las definiciones de columna cargadas o editadas.. PIC X (10) OCCURS 5. Capítulo 4..

Consulte las secciones siguientes para obtener detalles. Valores del campo Descripción Los valores siguientes para el campo Descripción tienen un significado especial durante el tiempo de ejecución: v UNSIGNED_DECIMAL. Nota: Sólo podrían seleccionarse determinados tipos de columnas GROUP. Sólo utilícelo con campos DECIMAL. no podrá seleccionar la columna GROUP y se visualizará como tal. v OCCURS_COUNTER. Sólo utilícelo con campos DECIMAL. Puede utilizar este valor con campos de decimales empaquetados para desencadenar algoritmos especiales de desempaquetamiento. Puede utilizar este valor con campos de decimales empaquetados para desencadenar algoritmos especiales de desempaquetamiento. Sólo puede seleccionar columnas GROUP si todas las columnas en GROUP tienen el tipo de datos CHARACTER. podrían visualizarse resultados incorrectos. tal y como se describe a continuación: v Columnas disponibles lista las columnas de origen visualizadas en formato jerárquico. la etapa crea sus propios datos incrementando automáticamente el contador para cada ocurrencia que se procesa. 36 Guía del desarrollador de Server Job . Cree un enlace de salida separado utilizando un procedimiento similar para procesar la próxima OCCURS. Columnas GROUP y OCCURS Si selecciona una columna en un GROUP que tiene una OCCURS y no se selecciona la columna GROUP. v NINGUNO. es decir. Se comporta como una pseudocolumna del tipo nativo DECIMAL que no espera recibir datos en la secuencia de entrada. El separador Seleccionar columnas funciona de forma parecida a la etapa de origen de sistema principal Complex File. Utilícelo con tipos nativos non-GROUP. v Columnas seleccionadas contiene la lista de columnas que está creando utilizando las teclas de flecha. Utiliza campos para columnas non-GROUP y carpetas para columnas GROUP. NONE se ignorará si utiliza un formato de fecha. v ANYSIGN_DECIMAL. Durante el tiempo de ejecución. La descripción en el separador Columnas de origen debe coincidir de forma completa y precisa con el archivo de origen (consulte “Separador Columnas de origen” en la página 33). El separador Seleccionar columnas contiene una cuadrícula que muestra las definiciones de columna para los datos que están saliendo en el enlace seleccionado. Actualmente no está soportado por el OCCURS anidado. v Utilice estas teclas de flecha para mover las columnas de acá para allá entre la lista Columnas disponibles y la lista Columnas seleccionadas. Si cualquier columna en GROUP tiene un tipo de datos distintos. También debe incluir la serie OCCURS_COUNTER en el campo Descripción. aparece una marca de selección en la columna de la lista. Primero debe insertar un campo nuevo con el tipo DECIMAL en la cuadrícula Columnas dentro de la cláusula OCCURS.3. Separador Seleccionar columnas Utilice el separador Seleccionar columnas para elegir las columnas que se deben cargar al enlace de salida. Nota: No utilice el separador Columnas de origen con el objetivo de seleccionar columnas para el archivo de destino. Utilice la flecha simple ( > ) para mover columnas resaltadas y la flecha doble ( >> ) para mover todos los elementos. Debe incluir la columna GROUP con OCCURS en su selección si elige cualquier columna en el GROUP. NONE provoca que los datos fluyan por la etapa sin modificarla. Cuando selecciona o borra cada columna. no se realizan conversiones en los datos y se produce una salida de datos en bruto. Sólo utilice el separador Seleccionar columnas para este propósito.

Seleccione el campo que contenga el tipo de registro del recuadro de lista. Ejemplo redefinido La etapa Complex Flat File soporta la redefinición de cualquier parte del archivo de origen. Debe utilizar el separador Seleccionar columnas para elegir las columnas que desea cargar al enlace de salida. 05 Field-5b Pic X(8). Número de registro a partir del que se inicia el proceso. Datos de entrada: 2a2a2a2a2b2b2b2b2c2c2c2c4a4a4a4a4b4b4b4b4c4c4c4c Orden de los campos de salida: Field-2a Field-2b Field-2c Field-4a Field-4b Field-4c Field-5a Field-5b Field-5c Datos de salida: 2a2a2a2a2b2b2b2b2c2c2c2c4a4a4a4a4b4b4b4b4c4c4c4c2a2a2a2a2b2b2b2b2c2c2c2c Separador Columnas de destino El separador Columnas de destino de la página Salida contiene la lista de columnas que se ha creado utilizando el separador Seleccionar columnas. v Registro de fin #. Entre la información correspondiente en los siguientes campos: v Registro de inicio #. Entrada: 01 Ejemplo-Registro. Número de registro a partir del que se detiene el proceso. Este valor se convierte en el Estilo de registro antes de la comparación. 03 Field-5 redefine Field-1. Sólo se envían los registros que contienen este valor al enlace de salida. 05 Field-4c Pic X(8). ASCII o EBCDIC. 05 Field-4a Pic X(8). Si el valor está precedido por el carácter &. 05 Field-4b Pic X(8). Por ejemplo. 05 Field-5a Pic X(8). 05 Field-5c Pic X(8). v Campo ID.v De forma predeterminada se seleccionan todas las columnas para la carga. Lo hace al restableciendo la posición de inicio de un campo cuyos metadatos redefinen otro campo. 05 Field-2b Pic X(8). se tratará como un valor hexadecimal y se comparará sin ninguna conversión. Separador Criterios de selección Utilice el separador Criterios de selección para redefinir campos extraídos del archivo de entrada. Field-2 redefine Field-1 y así sucesivamente. Valor del tipo de registro. Las columnas aparecen en gris y no son editables. Capítulo 4. 03 Field-1 Pic X(24). v Pulse Aceptar cuando termine la selección para cargar las columnas seleccionadas. 03 Field-3 redefine Field-3. Etapas de trabajo de servidor 37 . por ejemplo. 05 Field-2c Pic X(8). 03 Field-3 Pic X(24). No se soportan los rangos de valores. 03 Field-2 redefine Field-1. v Valor (hex). 05 Field-2a Pic X(8). Pulse Buscar para abrir un recuadro de diálogo que permite buscar una columna en concreto.

Etapas Folder Las etapas Folder se utilizan para leer o grabar datos como archivos en un directorio ubicado en el servidor de IBM InfoSphere DataStage. Por ejemplo: 05 Application-Date pic 99999999. en este caso. los datos de entrada con formato "25/12/2000" deben utilizar el formato DD/MM/CCYY en el campo Formato de fecha. El separador también contiene los siguientes campos: 38 Guía del desarrollador de Server Job . En este caso. En un entorno de soporte multilingüístico. El separador Propiedades contiene las propiedades que definen la operación de la etapa. Las filas llegan a la etapa en un enlace de entrada. El separador Columnas muestra las definiciones de columna para los datos que salen en el enlace de salida. v Entradas. defina el campo Tipo nativo para Application-Date (aplicación-fecha) como CARÁCTER. El directorio en el que la etapa graba los archivos se define en la propiedad Nombre de vía de acceso de la carpeta en el separador Propiedades de la etapa. Definición de correlaciones de juegos de caracteres Puede definir una correlación de juegos de caracteres para una etapa Folder mediante el separador NLS en el recuadro diálogo Etapa Folder. los datos de entrada y el campo Formato de fecha deben utilizar el mismo formato. El separador Columnas muestra las definiciones de columna para los datos que llegan al enlace de entrada. Cuando edita una etapa Folder. Pulse el separador Origen Columnas en la página Salida para entrar o cargar definiciones de columna para sus datos. el tipo de etapa y una descripción. Nota: El comportamiento de la etapa Folder cuando lee carpetas que contienen otras carpetas no está definido.Consideraciones sobre la fecha En muchos casos. El separador Propiedades controla la operación del enlace. los archivos de COBOL definen fechas como un campo de caracteres. Seleccione un formato adecuado en el campo Formato de fecha de la ventana Editar metadatos de columna. Utilización de etapas Folder Las etapas Folder pueden leer varios archivos de un solo directorio y proporcionar los archivos al trabajo como filas en un enlace de salida. aparece el recuadro de diálogo Etapa Folder. El directorio en el que la etapa lee los archivos se define en la propiedad Nombre de vía de acceso de la carpeta en el separador Propiedades de la etapa. Para generar una fecha de IBM InfoSphere DataStage en la columna del enlace de salida. Por ejemplo. el usuario que ejecuta el trabajo debe tener permiso de grabación en la carpeta para que la información de correlación de soporte multilingüístico pueda configurarse correctamente. CCYYMMDD. El separador General muestra el nombre de la etapa que está editando. La correlación de juegos de caracteres predeterminada (definida para el proyecto o el trabajo) se puede cambiar seleccionando un nombre de correlación de la lista. se genera una fecha con un valor nulo y aparece un aviso sobre una conversión de fecha incorrecta en el registro de InfoSphere DataStage. v Salidas. Las etapas Folder también pueden grabar filas de datos como archivos en un directorio. Este recuadro de diálogo tiene tres páginas: v Etapa. De lo contrario.

y proporciona el nombre del archivo. v Sólo correlaciones cargadas. las marcas de campo no se convierten en nuevas líneas al grabarse. recibe el contenido del archivo. El separador Columnas define un máximo de dos columnas. la cuadrícula de columnas será parecida a la siguiente: Nombre de la columna Nombre de archivo Registro Con posibilidades de nulos No No Clave U Tipo de SQL VarChar LongVarChar Longitud 255 999999 Escala Definición de los datos de salida de la etapa Folder El comportamiento del enlace de salida está controlado por las propiedades de salida en el separador Propiedades de Salidas. Cuando Conservar CRLF se establece en Sí. Las correlaciones no se pueden utilizar a menos que se hayan cargado utilizando el cliente del Administrador. Especifica el orden en el que se leen los archivos en el directorio. El separador Columnas define los datos que llegan al enlace que se van a grabar en archivo en el directorio. el directorio en el que se graban se define en el separador Propiedades de la página Etapa. v Asterisco.. v Conservar CRLF. en lugar de sólo el nombre de archivo. Puede elegir Ascendente. Las propiedades son las siguientes: v Conservar CRLF. Definición de los datos de entrada de la etapa Folder La etapa Folder sólo tiene datos de entrada cuando se utiliza para grabar archivos en un directorio. La primera columna del separador Columnas debe definirse como una clave. El separador Propiedades de la página Entradas define propiedades para el enlace de entrada. En este caso... . Lista todas las correlaciones suministradas mediante IBM InfoSphere DataStage. Cuando Conservar CRLF se establece en Sí. Por ejemplo. Etapas de trabajo de servidor 39 . Establezca este valor en Sí para que se escriba el nombre completo de vía de acceso de cada archivo en la columna de clave. Permite la utilización sencilla de comodines en los nombres de los archivos en el directorio. Cualquier aparición de * (asterisco) o . separando cada columna con una línea nueva. Las restantes columnas se graban en el archivo denominado. el sistema solicitará su definición desde el recuadro de diálogo Propiedades del trabajo. (tres puntos) se trata como una instrucción para que coincida con cualquier carácter o con ninguno. Los datos que se van a grabar en un directorio se proporcionan normalmente en una sola columna. Descendente o Ninguno. v Utilizar parámetro de trabajo. Se establece en Sí de forma predeterminada.v Mostrar todas las correlaciones. La primera columna se debe marcar como la clave y recibe el nombre de archivo.. Muestra las correlaciones que se han cargado y que están preparadas para ser utilizadas. si existe. La segunda columna. Se establece en Sí de forma predeterminada. Puede cargar estas definiciones de columna de la definición de tabla predeterminada proporcionada para la Capítulo 4. Permite especificar una correlación de juegos de caracteres como un parámetro del trabajo que contiene la etapa. las nuevas líneas no se convierten en marcas de campo al leerse. Si el parámetro todavía no se ha definido. Las propiedades son las siguientes: v Orden de clasificación. v Calificado al completo.

Pulse Cargar y seleccione la definición de tabla Folder que se encuentra en la carpeta Table Definitions\Built-in\Examples del árbol de repositorios. Con esta opción seleccionada. – Compatibilidad de etapas de UniVerse. O buen. no está disponible en el cliente del Diseñador. Muestra el nombre de la etapa que se está editando. puede especificar un nombre de cuenta o utilizar un parámetro de trabajo. donde puede escribir texto para describir la finalidad de la etapa en el campo Descripción y especificar dónde están los archivos de datos pulsando uno de los siguientes botones de opción: – Utilizar nombre de cuenta. Puede especificar la vía de acceso directamente. por ejemplo.ACCOUNT.. Si selecciona esta opción. es decir. Consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for IBM UniVerse and UniData para obtener más información sobre cómo utilizar las etapas Hashed File para acceder a los archivos de UniVerse. debe especificar el directorio del proyecto de IBM InfoSphere DataStage como la vía de acceso del directorio. Si selecciona esta opción. Si la cuenta que desea no está en la lista. El directorio se especifica en el campo Vía de acceso de directorio. o cómo definir y utilizar parámetros de trabajo. 40 Guía del desarrollador de Server Job . Esta página sólo se muestra si dispone de un enlace de entrada de esta página. Etapas Hashed File Las etapas Hashed File representan un archivo hash. pulsar Examinar. El rol principal de una etapa Hashed File es el de una tabla de referencia basada en un solo campo clave. Determina qué carácter representa el valor nulo de SQL en el archivo hash correspondiente a esta etapa.etapa. – Valor nulo de SQL. la fecha o la hora se representarán en formato ISO (según el tipo ampliado) y se escalarán los números de acuerdo con los metadatos. seleccione la opción Especial (permitir Euro) en la lista. C:\IBM\InformationServer\Server\Projects\Dstage. Seleccione Detección automática para que InfoSphere DataStage determine que representa el nulo SQL. Puede utilizar un archivo hash como archivo intermedio en un trabajo y aprovechar las ventajas del alojamiento local del motor de servidor.. es conveniente definir una definición de tabla. (El programa de utilidad de conversión de trabajos es una herramienta autónoma especial. Especifica el archivo de datos que se debe utilizar y las definiciones de columnas asociadas para cada enlace de entrada de datos. Utilización de la etapa Hashed File Puede utilizar una etapa Hashed File para extraer o grabar datos o bien para que sirva de archivo intermedio en un trabajo. Marque este recuadro de selección para asegurarse de que las conversiones de trabajos funcionarán correctamente. un archivo que utiliza un algoritmo de hash para distribuir registros en uno o más grupos en el disco. Este recuadro de diálogo puede tener hasta tres páginas (en función de si existen entradas o salidas de la etapa): v Etapa. aparece el recuadro de diálogo Etapa Hashed File. Esta página también especifica cómo se graban datos en el archivo de datos. Para obtener más información sobre cómo crear una definición de tabla. Esta pestaña tiene un separador General. Si el motor de InfoSphere Information Server aloja localmente el archivo hash. para buscar un directorio adecuado en el sistema o utilizar un parámetro de trabajo. debe especificar una vía de acceso de directorio que contenga la cuenta de UV. Si el sistema utiliza el símbolo del Euro. debe elegir el nombre de la cuenta en la lista Nombre de cuenta. El motor de servidor puede alojar archivos de UniVerse localmente. Cada etapa Hashed File puede tener una cantidad distinta de entradas o salidas. Esta lista contiene todas las cuentas definidas en la carpeta Definiciones de tablas > Con hash en el repositorio. Utilice una etapa Hashed File para acceder a los archivos de UniVerse.) v Entradas. consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. – Utilizar vía de acceso de directorio. Cuando edita una etapa Hashed File. El directorio debe ser una cuenta de UniVerse y se utiliza para las cuentas de UniVerse que no aparecen en el archivo UV.

Se visualiza de forma predeterminada. De forma predeterminada. Pulse Aceptar para cerrar este recuadro de diálogo. Si una etapa Hashed File hace referencia a un archivo hash que no existe. donde Nombre de cuenta es el nombre de la cuenta elegida en la página Etapa. No lo seleccione si el trabajo graba y lee en el mismo archivo hash en la misma secuencia de ejecución. cuando una etapa Transformer comprueba si ya existe un registro para determinar la operación necesaria. – Descripción. Esta lista muestra todos los enlaces de entrada con la etapa Hashed File. Pulse Validar. se realiza una copia de seguridad del archivo existente antes de grabar los registros de datos nuevos en el archivo. la etapa Hashed File dispone de un enlace de entrada. es conveniente definir una definición de tabla. – Crear archivo. y se graban registros de datos nuevos en el archivo vacío. Seleccione este recuadro de selección para especificar que todos los registros deben almacenarse en la memoria caché en lugar de grabarse inmediatamente en el archivo hash. Esta página sólo se muestra si dispone de un enlace de salida de esta etapa. Nombre del enlace de entrada. Este recuadro de selección está deseleccionado de forma predeterminada. (Si tiene habilitado el almacenamiento en memoria caché en el servidor. Puede utilizar un parámetro de trabajo para representar el archivo creado en tiempo de ejecución o elegir el archivo de la lista Nombre de archivo. Pulse Opciones para abrir el recuadro de diálogo Opciones de creación de archivo para especificar los detalles sobre cómo se crea el archivo (consulte “Opciones de creación de archivo” en la página 42). Contiene los campos y opciones siguientes: – Nombre de archivo. Nota: Debe utilizar los recuadros de selección Clave para identificar las columnas de claves. Especifica el archivo de datos que se debe utilizar y las definiciones de columnas asociadas a cada enlace de salida de datos. – Permitir memoria caché de grabación de la etapa. La página Entradas presenta el campo y los dos separadores siguientes: v Nombre de entrada. elija Trabajo > Validar en el cliente del Director. Contiene una descripción opcional del enlace de entrada. v Columnas. – Borrar archivo antes de grabar. el archivo existente se borra. Si selecciona este recuadro. Esta lista contiene todos los archivos definidos en la carpeta Definiciones de tabla > Con hash Nombre de cuenta del repositorio. Los cambios se guardan cuando se guarda el trabajo. Si el archivo que desea no está en la lista. El nombre del archivo en el que se graban los datos. por ejemplo. Definición de datos de entrada de Hashed File Al grabar datos en un archivo hash. De lo contrario.v Salidas. v General. Seleccione el enlace que desee editar desde la lista Nombre de entrada. Seleccione este recuadro de selección para especificar que la etapa creará el archivo hash en el que grabar. Las Capítulo 4. Etapas de trabajo de servidor 41 . Este recuadro de selección está deseleccionado de forma predeterminada. Si selecciona este recuadro. consulte IBM InfoSphere DataStage and QualityStage Director Client Guide. el nombre del enlace de entrada se utiliza como nombre de archivo. La copia de seguridad se puede utilizar para restablecer el archivo si un trabajo se detiene o termina anormalmente en el tiempo de ejecución. Para obtener más información sobre cómo validar un trabajo y establecer las opciones de trabajo. Aparecerá el diálogo Opciones de ejecución del trabajo. Las propiedades de este enlace y las definiciones de columnas de los datos se definen en la página Entradas del recuadro de diálogo Etapa Hashed File. los atributos de memoria caché con los que se ha creado el archivo alterarán temporalmente la memoria caché a nivel de etapa). utilice la característica Trabajo de validación de Director antes de ejecutar el trabajo y InfoSphere DataStage lo creará automáticamente. Contiene las definiciones de columnas para los datos grabados en el archivo. Para validar un trabajo. – Hacer copia de seguridad de archivo existente. se toma la primera definición de columna como campo de clave del archivo hash.

Esto le permite examinar los datos asociados al enlace de entrada. Especifica la carga con fusión del archivo dinámico como un porcentaje en el rango entre 1 y 99.NUM. consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. Sólo visible para tipos de archivo Type30(Dynamic). El valor predeterminado es GENERAL. Opciones de creación de archivo Si elige crear el archivo hash en el que desea grabar. El tipo de archivo seleccionado determina qué otras opciones están disponibles en el recuadro de diálogo. Si tiene habilitada la memoria caché del servidor. Especifica el particionamiento del archivo dinámico como un porcentaje entre 1 y 99. v Algoritmo Hash. v Carga partida. Seleccione esta opción para especificar que se ajusten algunas de las otras opciones para optimizar el tamaño de archivo mínimo. v Separación. v Atributos de memoria caché. Sólo visible para tipos de archivo Type30(Dynamic). pero la integridad de los archivos se puede perder si se cuelga el sistema. GRABACIÓN INMEDIATA es más lento. Definición de datos de salida de Hashed File Al extraer datos de un archivo hash. para abrir el Navegador de datos.. Pulse Ver datos. Especifica el algoritmo de dispersión (hash) de archivos dinámico. Seleccione este recuadro de selección para especificar que cualquier archivo existente que tenga el mismo nombre se suprimirá antes de que se cree uno nuevo. Sólo visible para tipos de archivo Type30(Dynamic). Sólo visible para tipos de archivo Type30(Dynamic). pero más seguro por lo que respecta a la integridad. Estos atributos permanecerán con el archivo siempre que se utilice posteriormente. Para obtener una descripción del Navegador de datos. Sólo visible para tipos de archivo Type30(Dynamic). El valor predeterminado es 1. esta opción permite elegir los atributos de memoria caché para el archivo que está creando. Especifica el tamaño de registro en el rango entre 1 y 999999.. El recuadro de diálogo contiene los campos siguientes: v Tipo de archivo. El valor predeterminado es 80. No reorganice las definiciones de columnas de la cuadrícula a menos que esté seguro de que conoce cuáles serán las consecuencias de su acción. Las propiedades de este enlace y las definiciones de columnas de los datos se definen en la página Salidas del recuadro de diálogo Etapa Hashed File. v Carga con fusión. Especifica la separación del archivo hash en el rango entre 1 y 999999. El valor predeterminado es 50. Seleccione entre GENERAL o SEQ. Sólo es visible para tipos de archivo hash. GRABACIÓN DIFERIDA es el método más rápido. v Espacio mínimo. Sólo visible para tipos de archivo Type30(Dynamic). Sólo es visible para tipos de archivo hash. Especifica el módulo del archivo hash en el rango entre 1 y 999999. Especifica el módulo mínimo de archivo dinámico en el rango entre 1 y 999999. El valor predeterminado es Type30(Dynamic). v Módulo. Sólo visible para tipos de archivo Type30(Dynamic). Especifica el tamaño del grupo dinámico. El valor predeterminado es 2.restantes columnas dictan el orden en el que se grabarán los datos en el archivo hash. El valor predeterminado es 1. El valor predeterminado es 1628. v Tamaño de registro. 42 Guía del desarrollador de Server Job . Especifica el valor de registro grande en bytes en el rango entre 1 y 999999. v Suprimir el archivo antes de la creación. v Tamaño del grupo. la etapa Hashed File dispone de un enlace de salida. El valor predeterminado es 1. v Registro grande. Sólo visible para tipos de archivo Type30(Dynamic). v Módulo mínimo. el recuadro de diálogo Opciones de creación de archivo permite especificar diversas opciones sobre cómo se crea el archivo. Seleccione 1 para seleccionar un tamaño de grupo de 2048 bytes o bien 2 para seleccionar un tamaño de grupo de 4096 bytes. NINGUNO significa que no se realiza el almacenamiento en memoria caché.

El nombre del archivo del que se leen los datos. Contiene una descripción opcional del enlace de salida. La lista Normalizar sólo está habilitada para enlaces de salida sin referencia. las otras columnas se ordenan de acuerdo con la posición en el archivo. v General. el archivo hash se lee en la memoria cuando se ejecute el trabajo. a excepción de que el archivo hash no se lee en la memoria. Esta lista permite normalizar (o desanidar) datos. También puede utilizar la etapa Hashed File para reorganizar las columnas en el orden en el que se leen. pero es necesario si desea leer y grabar el archivo hash a la vez. Si especifica una sentencia Select en el separador Selección. Tenga especial cuidado cuando utilice el campo Posición para reorganizar las columnas y guarde la definición como una definición de tabla en el repositorio para su reutilización posterior. lo que puede generar resultados no deseados). Debe tener en cuenta lo siguiente cuando extraiga datos de un archivo hash: – Los campos de claves deben identificarse seleccionando los recuadros Clave. Se visualiza de forma predeterminada. el archivo hash se lee en la memoria cuando se ejecuta el trabajo (de forma predeterminada. Contiene los campos y opciones siguientes: – Nombre de archivo. Para ello. reorganizará el propio archivo. (Si no lo hace. Puede utilizar un parámetro de trabajo para representar el archivo creado en tiempo de ejecución o elegir el archivo de la lista Nombre de archivo. – No reorganice las definiciones de columnas de la cuadrícula si no está seguro de cuáles serán las consecuencias de su acción. Etapas de trabajo de servidor 43 . Se puede normalizar una asociación o una sola columna de varios valores sin asociar. Si no se encuentra una búsqueda en la memoria. Contiene las definiciones de columnas de los datos en el enlace de salida elegido. donde se han definido metadatos que contienen campos de varios valores. Este separador sólo está disponible si ha especificado el archivo hash por nombre de cuenta. Nombre del enlace de salida. se le avisará de que la primera columna se tratará como la clave. Esta lista muestra todos los enlaces de salida de una etapa Hashed File. aunque mantengan el mismo nombre de columna. si utiliza esta definición de columna para grabar en el mismo archivo hash. Si el archivo que desea no está en la lista. se aplicará un bloqueo de actualizaciones sabiendo que el trabajo grabará posteriormente el registro en el archivo hash. – Precargar archivo en memoria. bloquear para actualizaciones.) v Selección. La operación de Inhabilitado. Capítulo 4. el trabajo buscará en el archivo que hay en el disco. Si selecciona Habilitado. – Puede generar un registro completo como una sola columna. está seleccionado Inhabilitado. en la página Etapa. el archivo se leerá por registros igualmente. v Columnas. Si utiliza esta característica. deberá identificar las columnas de clave estableciendo su campo Posición en 0. Para ello. – De forma predeterminada. en lugar de por vía de acceso del directorio. bloquear para actualizaciones es similar. – Lectura por registros . si es necesario. donde Nombre de cuenta es el nombre de la cuenta elegida en la página Etapa. – Descripción. es conveniente definir una definición de tabla. Esta lista contiene todos los archivos definidos en la carpeta Definiciones de tabla > Con hash Nombre de cuenta del repositorio. En concreto. v Normalizar. Si la búsqueda sigue sin encontrarse. Las columnas se grabarán en el enlace de salida en dicho orden. Si se selecciona Habilitado. y este recuadro de selección estará seleccionado pero sombreado. Contiene cláusulas SELECT opcionales para la extracción condicional de datos de un archivo. (El campo Posición de la columna de clave debe ser 0. Puede utilizar estas opciones para mejorar el rendimiento si el enlace de salida es una entrada de referencia a una etapa Transformer. Las dos opciones restantes están especialmente indicadas para los especialistas y se utilizan en aquellas situaciones en las que es necesario modificar una tabla de búsqueda mientras se ejecuta un trabajo. especifique el orden de columna en el campo Posición.La página Salidas presenta los dos campos y los tres separadores siguientes: v Nombre de salida. Es más lento. Seleccione el enlace que desee editar desde la lista Nombre de salida. Seleccione esta opción para forzar la lectura del archivo registro a registro. inserte un valor -1 en el campo Posición de la definición de columna del campo del registro.

Esta opción establece el nulo de SQL en 0x19. deberá realizar varios pasos para dar soporte al símbolo. Sistemas UNIX con la página de códigos ISO 8859-15 Acerca de esta tarea Para dar soporte al símbolo de euro en este sistema. el código que representa el símbolo de euro puede entrar en conflicto con la representación de nulo de SQL de los archivos hash. tal como se muestra a continuación: v En la línea LOC0016. deberá elegir otro carácter para representar el nulo de SQL. tal como se muestra a continuación: – En la línea LOC0016. asegúrese de que se haya establecido el separador de millares correcto. un archivo de texto. Los pasos a realizar dependen de en qué tipo de sistema esté ejecutando el servidor de IBM InfoSphere DataStage. Esto garantiza que el archivo se lea en registros en lugar de en grupos y que funcionen los bloqueos de registros. asegúrese de que se haya establecido el separador decimal correcto. Cada etapa Sequential File puede tener una cantidad distinta de entradas o salidas. establece el nulo de SQL en 0x19. – En la línea LOC0015. Para solucionar este problema. v En la línea LOC0014. Esto le permitirá ver los datos asociados con el enlace de salida. o debe seleccionar el recuadro de selección Lectura por registros en el separador General. – En la línea LOC0014.. deben realizarse varios pasos. tenga en cuenta que esta modalidad de operación es mucho más lenta y sólo debe utilizarse si hay una clara necesidad de leer y grabar el mismo archivo al mismo tiempo. debe editar el archivo msg.. o grabar datos en. No obstante.txt en el directorio de inicio de IBM InfoSphere DataStage. o utilizar el mandato BASIC char(128) o char(164). Esta acción se realiza en el separador General de la página Etapa del archivo hash. Sistemas Windows y sistemas UNIX con la página de códigos Windows En estos sistemas. – Detección automática. 44 Guía del desarrollador de Server Job . Si tiene previsto leer y grabar en un archivo hash al mismo tiempo. El archivo de texto se puede crear o puede existir en cualquier unidad que sea local o que esté correlacionada con el servidor. lo único que debe hacer es editar el archivo msg. asegúrese de que se haya establecido el separador decimal correcto. para abrir el Navegador de datos.txt en el directorio de inicio de IBM InfoSphere DataStage. v En la línea LOC0015.Pulse Ver datos. o utilizar el mandato BASIC char(128) o char(164). Acerca de esta tarea v Si el sistema no necesitará nunca que el símbolo de euro aparezca de forma aislada en una columna de un archivo hash. sustituya el símbolo $ por el símbolo de euro (puede generar un símbolo de euro utilizando un teclado que lo genere. Etapas Sequential File Las etapas Sequential File se utilizan para extraer datos de. Esta opción detecta si el euro es el símbolo de la moneda local y. sustituya el símbolo $ por el símbolo de euro (puede generar un símbolo de euro utilizando un teclado que lo genere. asegúrese de que se haya establecido el separador de millares correcto. Seleccione una de las opciones siguientes en la lista Valor nulo de SQL: – Especial (permitir Euro). en caso afirmativo. debe configurar una selección en el separador Selección. Utilización del símbolo de euro en los sistemas sin soporte multilingüístico Si desea incluir el símbolo del euro en los archivos hash en los sistemas sin soporte multilingüístico. v Si el sistema requiere utilizar el símbolo de euro de forma aislada.

Muestra las correlaciones que se han cargado y que están preparadas para ser utilizadas. Si el parámetro todavía no se ha definido. Esta página sólo se muestra si dispone de un enlace de entrada de esta página.Utilización de la etapa Sequential File Cuando edita una etapa Sequential File. Las correlaciones no se pueden utilizar a menos que se hayan cargado utilizando el cliente del Administrador. elija Estilo Unix (LF). v Salidas.. Si el soporte multilingüístico está habilitado. Muestra el nombre de la etapa que se está editando. Las opciones de finalización de línea permiten establecer el tipo de terminador de línea que se utiliza en la etapa Sequential File. Etapas de trabajo de servidor 45 . Permite especificar una correlación de juegos de caracteres como un parámetro del trabajo que contiene la etapa. v Utilizar parámetro de trabajo. Puede ver algunos ejemplos de cómo utilizar los recursos de conducto con nombre en la ayuda del desarrollador de InfoSphere DataStage. El separador también contiene los siguientes campos: v Mostrar todas las correlaciones. Elija este campo para mostrar todas las correlaciones proporcionadas con IBM InfoSphere DataStage en la lista. todas las entradas y salidas de la etapa utilizan conductos con nombre. el sistema solicitará su definición desde el recuadro de diálogo Propiedades del trabajo. ya que aumenta el rendimiento y permite a varios desarrolladores trabajar en el diseño al mismo tiempo. Este recuadro de diálogo puede tener hasta tres páginas (en función de si existen entradas o salidas de la etapa): v Etapa. Para obtener más información. aparece el recuadro de diálogo Etapa Sequential File.. Capítulo 4. El separador General también permite especificar opciones de finalización de línea. Pulse Aceptar para cerrar este recuadro de diálogo. el separador Soporte multilingüístico permite definir una correlación de juegos de caracteres y valores Unicode para la etapa. Para cambiar el valor. Cuando este recuadro de selección está seleccionado. una descripción opcional de la etapa y si la etapa utiliza conductos con nombre o mandatos de filtro. Contiene información sobre los formatos de archivo y las definiciones de columna para cada enlace de entrada de datos. . v Sólo correlaciones cargadas. Seleccione el recuadro de selección La etapa utiliza conductos con nombre si desea utilizar los recursos de los conductos con nombre. Se recomienda hacerlo si hay un elevado grado de paralelismo en el diseño. v Entradas. Las opciones La etapa utiliza conductos con nombre y La etapa utiliza mandatos de filtro son mutuamente exclusivas. En el separador General de la página Entradas o Salidas se proporcionan detalles del mandato en cuestión (consulte “Definición de datos de entrada de Sequential File” en la página 46 y “Definición de datos de salida de Sequential File” en la página 48). Estos recursos permiten dividir un trabajo grande en diversos trabajos más pequeños. Contiene información sobre el formato de archivo y las definiciones de columna para los enlaces de salida de datos. consulte “Definición de correlaciones de juegos de caracteres”. Los cambios se guardan cuando se guarda el trabajo. Esta página solamente aparece si dispone de un enlace de salida de esta etapa. La correlación de juegos de caracteres predeterminada (definida para el proyecto o el trabajo) se puede cambiar seleccionando un nombre de correlación de la lista. la finalización de línea coincide con el tipo utilizado en el servidor IBM InfoSphere DataStage. De forma predeterminada. Definición de correlaciones de juegos de caracteres Puede definir una correlación de juegos de caracteres para una etapa Sequential File mediante el separador NLS en el recuadro diálogo Etapa Sequential File. Seleccione La etapa utiliza mandatos de filtro si desea especificar un mandato de filtro para procesar los datos en los enlaces de entrada o de salida. Estilo DOS (CR LF) o Ninguno.

Nota: La copia de seguridad se puede utilizar para restablecer el archivo si un trabajo se detiene o termina anormalmente en el tiempo de ejecución. Si se selecciona esta opción. Esta lista muestra todos los enlaces de entrada con la etapa Sequential File. o 0XFF. v General. Consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide para obtener más información.0XFF. el archivo existente se trunca y los nuevos registros de datos se graban en un archivo vacío. este parámetro se puede utilizar para especificar un programa zip para comprimir los datos. El nombre de vía de acceso del archivo en el que se graban los datos. Puede especificar un parámetro de trabajo que represente el archivo creado en tiempo de ejecución. – Si se selecciona El primer carácter es la marca de orden de bytes. Las propiedades de este enlace y las definiciones de columnas de los datos se definen en la página Entradas del recuadro de diálogo Etapa Sequential File. – Si se selecciona Intercambio de bytes. Si no especifica ninguno.0X00. o examinar para buscarlo. Se visualiza de forma predeterminada. Si selecciona este campo. Puede haber hasta cuatro recuadros de selección: 46 Guía del desarrollador de Server Job . Contiene una descripción opcional del enlace de entrada. Nombre del enlace de entrada. la correlación del juegos de caracteres se altera temporalmente y todos los datos se leen y se graban en formato Unicode con dos bytes por carácter. – Descripción. el nombre de archivo tomará como valor predeterminado el nombre del enlace. "A") se graba como los bytes 0X41. El separador General también contiene opciones que determinan cómo se graban los datos en el archivo. Definición de datos de entrada de Sequential File Al grabar datos en un archivo secuencial. y especificar los argumentos de línea de mandatos que necesite en el recuadro de texto. La página Entradas contiene el campo y los tres separadores siguientes: v Nombre de entrada. – Hacer copia de seguridad de archivo existente. no se podrán examinar los datos. los registros de datos se anexan al final del archivo existente. De lo contrario. Por ejemplo. Seleccione el enlace que desee editar desde la lista Nombre de entrada. Si selecciona este recuadro de selección. Por ejemplo.v Utilizar correlación de UNICODE. Tenga en cuenta que si se especifica un mandato de filtro. – Anexar a archivo existente. Puede escribir el nombre del programa de filtro. Si selecciona esta opción. Se encuentran debajo del área Acción de actualización: – Sobrescribir archivo existente. 0X0041 (es decir. por lo que el botón Ver datos estará inhabilitado. Para obtener más información sobre cómo definir parámetros de trabajo. También se puede localizar el archivo. Los nuevos registros de datos se graban según decida anexar o sobrescribir el archivo existente. si hay intercambio de bytes. Esta opción es la predeterminada. Aquí puede especificar un programa de filtro que procese los datos antes de que se graben en el archivo. los datos se leen o se graban con el byte de orden inferior primero. – Mandato de filtro. la etapa Sequential File dispone de un enlace de entrada. la etapa lee o graba la secuencia 0XFE. se realiza una copia de seguridad del archivo existente. v Formato. Contiene parámetros que determinan el formato de los datos del archivo. se graba como 0X00. Contiene los siguientes parámetros: – Nombre de archivo.0XFE si no hay intercambio de bytes. consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. Este recuadro de texto sólo estará habilitado si se ha seleccionado el recuadro de selección La etapa utiliza mandatos de filtro en el separador General de la página Etapa (consulte “Utilización de la etapa Sequential File” en la página 45).0X41.

Contiene el carácter utilizado para rellenar las columnas ausentes. Especifica durante cuánto tiempo intentará la etapa grabar datos en un conducto antes de exceder el tiempo de espera. Entre 000 para suprimir el delimitador. se emitirá un error y el trabajo terminará anormalmente. Escala. – La primera línea es nombres de columnas. Además de los campos de definición de columna estándar (Nombre de columna. Sólo se activa si no ha especificado columnas de anchura fija. La anchura de cada columna se especifica mediante el tamaño de visualización de SQL (establecido en la columna Visualización de la cuadrícula Columnas). Contiene el carácter utilizado para incluir series. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. Contiene las definiciones de columnas de los datos en el enlace de entrada elegido. – Tiempo de espera para la grabación. este campo contiene una coma. Elemento de datos y Descripción). Esta opción está sin marcar de forma predeterminada. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. Marque este recuadro de selección si desea eliminar el último carácter de nueva línea del archivo. Si selecciona este recuadro de selección. De forma predeterminada. v Columnas. Los valores hexadecimales deben prefijarse con &h. Los campos siguientes sólo aparecen si ha seleccionado La etapa utiliza conductos con nombre en la página Etapa: – Esperar que transcurra el tiempo de espera del lector. Si selecciona este recuadro de selección. Etapas de trabajo de servidor 47 . Puede haber hasta siete campos en el separador Formato: – Delimitador. De forma predeterminada. Los valores hexadecimales deben prefijarse con &h. Rellene este campo si desea alterar temporalmente el valor predeterminado del separador Formato correspondiente a esta columna en particular. los datos se pasan entre el lector y el grabador del conducto registro por registro. – Desechar después de cada fila. esta opción está borrada. Este campo sólo se activa cuando selecciona el recuadro de selección Columnas de anchura fija. Con posibilidades de nulos. es decir. Capítulo 4. Entre 000 para suprimir el carácter de cita. Si la etapa supera el tiempo de espera . los separadores Columna de la etapa Sequential File también tienen los campos siguientes: – Serie Null. Seleccione este recuadro de selección si la primera fila de datos del archivo contiene nombres de columna. Los valores recomendados son de 30 a 600 segundos. – Omitir última línea nueva. Esta opción está sin marcar de forma predeterminada. Contiene los caracteres predeterminados que se graban en el archivo cuando una columna contiene un valor nulo de SQL (que puede ser sobrescrito para una definición de columna individual en el separador Columnas). pero puede establecerse en otro carácter para aplicarlo a todas las columnas o puede alterarse temporalmente para definiciones de columnas individuales en el separador Columnas. De forma predeterminada. Es # de forma predeterminada. Este parámetro sólo aparece si ha seleccionado La etapa utiliza conductos con nombre en la página Etapa. Contiene un número para representar el número de espacios utilizado entre columnas. se emitirá un error y el trabajo terminará anormalmente. – Relleno predeterminado. Tipo de SQL. el carácter de línea nueva no se elimina. es decir. – Espacios entre columnas. Longitud. este campo contiene un carácter de comillas dobles. Contiene el delimitador que separa los campos de datos en el archivo. Los valores recomendados son de 30 a 600 segundos.– Columnas de anchura fija. – Carácter de cita. Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. – Serie NULL predeterminada. la primera fila del archivo contiene datos. los datos se graban en el archivo en columnas de anchura fija. Visualización. Clave. Especifica cuánto tiempo esperará la etapa una conexión durante la lectura de un conducto antes de que se exceda el tiempo de espera. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. Sólo se activa si no ha especificado columnas de anchura fija. Si la etapa supera el tiempo de espera .

y especificar los argumentos de línea de mandatos que necesite en el recuadro de texto. esta opción está borrada. Seleccione el enlace que desee editar desde la lista Nombre de salida. – Mandato de filtro. Hay tres recuadros de selección: – Columnas de anchura fija. – Columna incompleta. – Contiene terminadores. los datos se extraen del archivo en columnas de anchura fija. v Formato. Las propiedades de tipo de datos SQL afectan a cómo se graban los datos en un archivo secuencial. No se aplica a los enlaces de entrada. Hay dos campos: – Nombre de archivo. por lo que el botón Ver datos estará inhabilitado. Este recuadro de texto sólo estará habilitado si se ha seleccionado el recuadro de selección La etapa utiliza mandatos de filtro en el separador General de la página Etapa (consulte “Utilización de la etapa Sequential File” en la página 45). Las propiedades de SQL están en la cuadrícula Columnas cuando edita una columna de entrada. Si se utilizan valores mayores que este. – Supresión de advertencias de truncamiento de filas. esta característica se puede utilizar para descomprimir un archivo comprimido antes de leerlo. Rellene este campo si desea alterar temporalmente el valor predeterminado del separador Formato correspondiente a esta columna en particular. No se aplica a los enlaces de entrada. Se visualiza de forma predeterminada. Si selecciona este recuadro de selección. – La primera línea es nombres de columnas. También se puede localizar el archivo. y los tipos de datos numéricos no se escriben entre comillas y están justificados a la derecha. El nombre de vía de acceso del archivo del que se extraen los datos. no se podrán examinar los datos. Esta lista muestra todos los enlaces de salida con la etapa Sequential File. El tipo de datos SQL determina cómo se justifican los datos en una columna: los tipos de datos de carácter se escriben entre comillas y están justificados a la izquierda. Si el archivo secuencial que se está leyendo contiene más columnas que las que haya definido. Esta opción está sin marcar de forma predeterminada. v General. para abrir el Navegador de datos. Tenga en cuenta que la Escala de una columna de archivo secuencial tiene un límite práctico de 14. Puede especificar un parámetro de trabajo que represente el archivo creado en tiempo de ejecución. es decir. consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. De forma predeterminada. Las propiedades de este enlace y las definiciones de columnas de los datos se definen en la página Salidas del recuadro de diálogo Etapa Sequential File. Aquí puede especificar un programa de filtro para procesar el archivo del que está extrayendo datos.. Nombre del enlace de salida. Tenga en cuenta que si se especifica un mandato de filtro. Puede escribir el nombre del programa de filtro. La página Salidas presenta el campo y los tres separadores siguientes: v Nombre de salida.. la etapa Sequential File dispone de un enlace de salida. La anchura de cada columna se especifica mediante el tamaño de visualización de SQL (establecido en la columna Visualización de la cuadrícula Columnas). Definición de datos de salida de Sequential File Al extraer (leer) datos de un archivo secuencial. la primera fila del archivo contiene datos.– Relleno. Esto le permite examinar los datos asociados al enlace de entrada. Pulse Ver datos. los resultados pueden ser ambiguos. normalmente recibirá avisos acerca de las filas 48 Guía del desarrollador de Server Job . Por ejemplo. Seleccione este recuadro de selección si la primera fila de datos del archivo contiene nombres de columna. Contiene parámetros que determinan el formato de los datos del archivo. Para obtener una descripción del Navegador de datos. Contiene una descripción opcional del enlace de salida. El tamaño de visualización de SQL determina el tamaño de las columnas de anchura fija. o examinar para buscarlo. – Descripción.

– Espacios entre columnas. pero puede establecerse en otro carácter para aplicarlo a todas las columnas o puede alterarse temporalmente para definiciones de columnas individuales en el separador Columnas. del inglés End of Record) en esta columna. Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. Correlacionar serie vacía o Rellenar con serie vacía en la lista. Clave. este campo contiene una coma. Además de los campos de definición de columna estándar (Nombre de columna. De forma predeterminada. se emitirá un error y el trabajo terminará anormalmente. v Columnas. Elija Rellenar con nulo de SQL.demasiado largas cuando ejecute el trabajo. Visualización. la opción Sí está inhabilitada. se interpretan como el valor nulo de SQL (que puede ser sobrescrito para definiciones de columna individuales en el separador Columnas). Utilice este campo para especificar cómo se tratan las marcas de fin de registro. Contiene el carácter utilizado para rellenar las columnas ausentes. Especifica durante cuánto tiempo intentará la etapa leer datos de un conducto antes de exceder el tiempo de espera. Es # de forma predeterminada. Sólo se activa si no ha especificado columnas de anchura fija. Rellene este campo si desea alterar temporalmente el valor predeterminado del separador Formato correspondiente a esta columna en particular. Entre 000 para suprimir el delimitador. – Delimitador. seleccione este recuadro de selección. Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. Contiene el delimitador que separa los campos de datos en el archivo. Escala. Especifica cuánto tiempo esperará la etapa una conexión durante la grabación en un conducto antes de que se exceda el tiempo de espera. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. Con posibilidades de nulos. Los campos siguientes sólo aparecen si ha seleccionado La etapa utiliza conductos con nombre en la página Etapa: – Esperar que transcurra el tiempo de espera del grabador. Puede haber hasta ocho campos en el separador Formato: – Acción si faltan columnas. este campo contiene un carácter de comillas dobles. De forma predeterminada. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Permite especificar la acción que se debe realizar cuando falta una columna de los datos de entrada. – Relleno. Si la etapa supera el tiempo de espera . Capítulo 4. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. Para la definición de la columna final de un archivo CSV. Contiene el carácter utilizado para incluir series. Este campo sólo se activa cuando selecciona el recuadro de selección Columnas de anchura fija. Si la etapa supera el tiempo de espera . Entre 000 para suprimir el carácter de cita. Los valores recomendados son de 30 a 600 segundos. – Carácter de cita. (EOR. – Tiempo de espera para la lectura. Los valores hexadecimales deben prefijarse con &h. – Relleno predeterminado. Rellene este campo si desea alterar temporalmente el valor predeterminado del separador Formato correspondiente a esta columna en particular. Si desea suprimir este mensaje (por ejemplo. Longitud. – Serie NULL predeterminada. Los valores hexadecimales deben prefijarse con &h. es posible que sólo esté interesado en las tres primeras columnas y desee prescindir del resto). Contiene un número para representar el número de espacios utilizado entre columnas. los separadores Columna de la etapa Sequential File también tienen los campos siguientes: – Serie Null. se emitirá un error y el trabajo terminará anormalmente. Elija entre: Sí para especificar que los datos pueden incluir marcas de EOR y que su significado no se debe interpretar como el de fin de registro. – Contiene terminadores. Elemento de datos y Descripción). Etapas de trabajo de servidor 49 . Los valores recomendados son de 30 a 600 segundos. cuando se encuentran en el archivo secuencial que se está leyendo. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Contiene las definiciones de columnas de los datos en el enlace de salida elegido. Sólo se activa si no ha especificado columnas de anchura fija. Tipo de SQL. Contiene caracteres que.

Tabla 3. dependiendo de los valores. En la tabla. o actuar de acuerdo con Acción si faltan columnas si falta una columna y grabar un aviso en el archivo de registro. <EMPTY> indica un nulo SQL. Retener para pasar los datos tal cual.Entrecomillado para especificar que las marcas de EOR que forman parte de los datos van entrecomilladas. Descartar y avisar para descartar la fila de datos actual y emitir un aviso.. Sustituir y avisar para rellenar una columna corta con un nulo de SQL. Permite especificar la acción que se realiza si la columna contiene datos insuficientes para coincidir con los metadatos.. Conjunto de datos de entrada 1 Opciones Opciones Finalización de línea <LF> UNIX Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna (primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ Entradas de registro Error muy grave Aviso Aviso Ninguno Aviso Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno ¿Inicio de 2ª fila? Comentario n/d S S S S S P P P P P P Sin datos de salida Fila 1 descartada Fila fantasma Fila fantasma Fila fantasma Fila fantasma Datos Datos Datos Datos Datos Datos correctos correctos correctos correctos correctos correctos <LF> UNIX S 50 Guía del desarrollador de Server Job . de modo que la opción se aplica sólo a las columnas ausentes y las opciones Retener no tienen sentido. El comportamiento de Columna incompleta también depende de si el archivo es de anchura fija o CSV. Cómo se comporta la etapa Sequential Las tablas siguientes muestran cómo una etapa Sequential File procesa dos filas de datos con varias opciones establecidas en el editor de etapas. No para especificar que las marcas de EOR de la columna se deben interpretar como fin de registro. para abrir el Navegador de datos. Pulse Ver datos. En formato CSV. Esto le permitirá ver los datos asociados con el enlace de salida. una serie vacía o una serie vacía correlacionada. mientras que las marcas de EOR sin entrecomillar se deben interpretar como fin de registro... Sustituir para rellenar una columna corta con un nulo de SQL. Los metadatos del enlace especifican que los datos se organizan en tres columnas que contienen tres caracteres cada una. Conjunto de datos de entrada 1 Fila 1: ABC|123|<LF>YZ<LF> Fila 2: PQR. Puede elegir: Error para terminar anormalmente el trabajo cuando se encuentra una fila de este tipo. resulta imposible tener una columna corta. o actuar de acuerdo con Acción si faltan columnas si falta una columna. Retener y avisar para pasar los datos tal cual. pero emitiendo un aviso. – Columna incompleta.

. Etapas de trabajo de servidor 51 . Tabla 4.Tabla 3. Conjunto de datos de entrada 1 (continuación) Opciones Opciones Finalización de línea <CR><LF> DOS Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna (primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ Entradas de registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno ¿Inicio de 2ª fila? Comentario n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d <LF> <LF> <LF> <LF> <LF> <LF> Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin fin fin fin fin fin fin fin fin fin fin fin fin de de de de de de de de de de de de fila fila fila fila fila fila fila fila fila fila fila fila <CR><LF> DOS S Ninguno n/d Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos de de de de de de Conjunto de datos de entrada 2 Fila 1: ABC|123|X<LF>Z<LF> Fila 2: PQR.. Conjunto de datos de entrada 2 Opciones Opciones Finalización de línea <LF> UNIX Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna (primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> ABC|123|X ABC|123|X ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z Entradas de registro Error muy grave Aviso Aviso Ninguno Aviso Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno ¿Inicio de 2ª fila? Comentario n/d Z Z Z Z Z P P P P P P Sin datos de salida Fila 1 descartada Fila fantasma Fila fantasma Fila fantasma Fila fantasma Datos Datos Datos Datos Datos Datos correctos correctos correctos correctos correctos correctos <LF> UNIX S Capítulo 4.

Tabla 5. Conjunto de datos de entrada 3 Opciones Opciones Opciones de columna: (se aplica a todas las filas) ¿Inicio de Entradas de 2ª fila? Comentario registro Error muy grave Aviso Aviso Ninguno Aviso Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno n/d Sin datos de XXXXX salida Descartar fila 1 Fila fantasma Fila fantasma Fila fantasma Fila fantasma P P P P P P Datos Datos Datos Datos Datos Datos correctos correctos correctos correctos correctos correctos Finalización Contiene Datos de salida de línea terminadores Columna Columna(primera fila) <LF> UNIX N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|<EMPTY>| <EMPTY> ABC|<EMPTY>| <EMPTY> ABC|12|<EMPTY> ABC|12|<EMPTY> ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ <LF> UNIX S Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener 52 Guía del desarrollador de Server Job .Tabla 4.. Conjunto de datos de entrada 2 (continuación) Opciones Opciones Finalización de línea <CR><LF> DOS Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna (primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z Entradas de registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno ¿Inicio de 2ª fila? Comentario n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d <LF> <LF> <LF> <LF> <LF> <LF> Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin fin fin fin fin fin fin fin fin fin fin fin fin de de de de de de de de de de de de fila fila fila fila fila fila fila fila fila fila fila fila <CR><LF> DOS S Ninguno n/d Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos de de de de de de Conjunto de datos de entrada 3 Fila 1: ABC|12<LF>|XYZ<LF> Fila 2: PQR..

Conjunto de datos de entrada 3 (continuación) Opciones Opciones Opciones de columna: (se aplica a todas las filas) ¿Inicio de Entradas de 2ª fila? Comentario registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d <LF> <LF> <LF> <LF> <LF> <LF> Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin fin fin fin fin fin fin fin fin fin fin fin fin de de de de de de de de de de de de fila fila fila fila fila fila fila fila fila fila fila fila Finalización Contiene Datos de salida de línea terminadores Columna Columna(primera fila) <CR><LF> DOS N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ <CR><LF> DOS S Ninguno n/d Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos de de de de de de Conjunto de datos de entrada 4 Fila 1: ABC|123|<eof> Tabla 6. Conjunto de datos de entrada 4 Opciones Opciones Finalización de línea <LF> UNIX Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna(primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " ¿Inicio de Entradas de 2ª fila? Comentario registro Error muy grave Aviso Aviso Ninguno Aviso Ninguno Error muy grave Aviso Aviso Ninguno Aviso Ninguno n/d Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos <LF> UNIX S n/d Capítulo 4. Etapas de trabajo de servidor 53 .Tabla 5.

Tabla 7.. Conjunto de datos de entrada 5 Opciones Opciones Opciones de columna: (se aplica a todas las filas) ¿Inicio de Entradas de 2ª fila? Comentario registro Error muy grave Aviso Aviso Ninguno Aviso Ninguno n/d S S S S S Sin datos de salida Descartar fila 1 Fila fantasma Fila fantasma Fila fantasma Fila fantasma Finalización Contiene Datos de salida de línea terminadores Columna Columna (primera fila) <LF> UNIX N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|12<CR>| <EMPTY> ABC|12<CR>| <EMPTY> "ABC|12<CR>| " " " " " "ABC|12<CR>| " " " " " 54 Guía del desarrollador de Server Job . Conjunto de datos de entrada 4 (continuación) Opciones Opciones Finalización de línea <CR><LF> DOS Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna(primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " ¿Inicio de Entradas de 2ª fila? Comentario registro Error muy grave Aviso Aviso Ninguno Aviso Ninguno Error muy grave Aviso Aviso Ninguno Aviso Ninguno Error muy grave Aviso Aviso Ninguno Aviso Ninguno n/d Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos <CR><LF> DOS S n/d Ninguno n/d n/d Conjunto de datos de entrada 5 Fila 1: ABC|12<CR>|<LF>YZ<CR><LF> Fila 2: PQR.Tabla 6..

La etapa produce los totales sumados de cada grupo mediante un enlace de salida. Capítulo 4. Conjunto de datos de entrada 5 (continuación) Opciones Opciones Opciones de columna: (se aplica a todas las filas) ¿Inicio de Entradas de 2ª fila? Comentario registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno P P P P P P Datos Datos Datos Datos Datos Datos correctos correctos correctos correctos correctos correctos Finalización Contiene Datos de salida de línea terminadores Columna Columna (primera fila) <LF> UNIX S Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ Ninguno Ninguno ABC|<EMPTY>| <EMPTY> ABC|<EMPTY>| <EMPTY> ABC|12|<EMPTY> ABC|12|<EMPTY> ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ <CR><LF> DOS N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error muy grave Aviso Aviso Ninguno Aviso Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno n/d S S S S S Sin datos de salida Descartar fila 1 Fila fantasma Fila fantasma Fila fantasma Fila fantasma Datos Datos Datos Datos Datos Datos correctos correctos correctos correctos correctos correctos <CR><LF> DOS S Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener P P P P P P Ninguno n/d Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno <CR> <CR> <CR> <CR> <CR> <CR> Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos de de de de de de Etapas Aggregator Las etapas Aggregator clasifican las filas de datos de un solo enlace de entrada en grupos y calculan totales u otras funciones de totales para cada grupo. Etapas de trabajo de servidor 55 .Tabla 7.

es posible que el campo Subrutina anterior a la etapa o Subrutina posterior a la etapa haga referencia a una rutina que no exista en el sistema. Definición de datos de entrada de Aggregator Los datos que se van a agregar se pasan de una etapa anterior en el diseño de trabajo a la etapa Aggregator mediante un único enlace de entrada. v Entradas. En tal caso. Por ejemplo. consulte “Subrutinas anteriores y posteriores a la etapa”. Muestra el nombre de la etapa que se está editando. puede tener varios enlaces de salida. Subrutinas anteriores y posteriores a la etapa El separador General de la página Etapa contiene campos opcionales que permiten definir las rutinas que se van a utilizar. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar. La página Entradas presenta el campo y los dos separadores siguientes: 56 Guía del desarrollador de Server Job . Seleccione una rutina en la lista. Si ha instalado o importado un trabajo. incluso cuando los datos de entrada ya están ordenados. Cuando edita una etapa Aggregator. v Salidas. un mensaje de aviso le recordará que debe compilar la rutina cuando cierre el recuadro de diálogo Etapa Aggregator. Para obtener más información sobre estas rutinas. donde cada uno especifica un conjunto diferente de propiedades para definir cómo se agrupan y se resumen los datos de entrada. Pulse Aceptar para cerrar este recuadro de diálogo. Los cambios se guardan cuando se guarda el trabajo. Un código de retorno 0 de la rutina indica que ha resultado satisfactoria y cualquier otro código indica que la rutina ha resultado anómala y provoca un error muy grave cuando se ejecuta el trabajo. Este recuadro de diálogo tiene tres páginas: v Etapa. Nota: La etapa Aggregator no conserva el orden de las filas de entrada. que se ejecutan antes o después de que la etapa haya procesado los datos. Si elige una rutina definida en el repositorio. Especifica las definiciones de columna para el enlace de entrada de datos. Por ejemplo.Utilización de una etapa Aggregator Si desea agregar los datos de entrada de varias formas. Especifica las definiciones de columna para el enlace de salida de datos. que se ha editado pero que no se ha compilado. se puede especificar una rutina que prepare los datos antes de que se inicie el proceso. v Subrutina anterior a la etapa y Valor de entrada. Esta lista contiene todas las rutinas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. v Subrutina posterior a la etapa y Valor de entrada. se puede especificar una rutina que envíe un mensaje electrónico cuando la etapa haya finalizado. aparece el recuadro de diálogo Etapa Aggregator. Las propiedades de este enlace y las definiciones de columnas de los datos se definen en la página Entradas del recuadro de diálogo Etapa Aggregator. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. Esta página tiene un separador General que contiene una descripción opcional de la etapa y los nombres de las rutinas anterior y posterior. Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. aparecerá un mensaje de aviso cuando cierre el recuadro de diálogo Etapa Aggregator.

– Clave. si los datos de entrada se han ordenado por fecha y posteriormente por código de producto. Nombre del enlace de entrada a la etapa Aggregator. Tipo de datos SQL. Al seleccionar esta opción. Se visualiza de forma predeterminada. Especifica el orden de clasificación. Si se ordenan una o varias columnas de grupo en los datos de entrada. Definición del orden de clasificación de la columna de entrada Cuando la etapa Aggregator clasifica datos de entrada para la agregación.v Nombre de entrada. Por ejemplo. se almacenan en la memoria. Si selecciona esta opción. la posición de la clave de ordenación para la columna de fecha será 1 y la posición de la clave de ordenación para la columna de código de producto será 2. – Ordenación. Escriba un número en la columna Ordenar para especificar la posición que ocupa la columna en la clave de ordenación. – Con posibilidades de nulos. No comprueba el orden. El valor predeterminado es ninguno: v Ascendente. – Descripción. Cuando pulsa Aceptar. – Elemento de datos. consulte “Definición del orden de clasificación de la columna de entrada”. – Nombre de la columna. si la ordenación está habilitada. v General. Factor de escala de los datos. Muestra la posición clave de orden de la columna. Una descripción en texto de la columna. – Orden de clasificación. Un valor de 1 siempre indica la clave más significativa. – Visualización. Precisión de los datos. Si selecciona esta opción. debe hacerlo con prudencia. Para utilizar datos de entrada ordenados. Seleccione esta opción si los datos de entrada de la columna especificada se ordenan en orden descendente. Los datos de entrada ordenados pueden producirse como salida de una etapa ODBC o UniVerse (utilizando una cláusula ORDER BY en la sentencia SQL) o una etapa Sequential File. Es la longitud para los datos CHAR y la longitud máxima para los datos VARCHAR. Elija Ascendente para el orden ascendente. Elija el orden en que se ordenan los datos en la columna Orden de clasificación. Indica si la columna forma parte de la clave primaria. Seleccione esta opción si el orden de clasificación utilizado por los datos de entrada no es simplemente ascendente o descendente sino que se utiliza un orden de clasificación más complejo. Para obtener más información. Nombre de la columna. el servidor de InfoSphere DataStage comprobará el orden en tiempo de ejecución. Contiene una cuadrícula que muestra las definiciones de columna para los datos que se están grabando en la etapa y un orden de clasificación opcional. Descendiente para el orden descendiente o Ignorar si no desea seleccionar una clasificación. Especifica si la columna puede contener valores nulos. es decir. Tipo de datos de la columna. puede mejorar considerablemente el modo en que la etapa Aggregator maneja los datos. Número máximo de caracteres necesarios para visualizar los datos de la columna. v Columnas. todas las columnas se ordenan en secuencia de la columna más significativa hacia arriba. En tiempo de Capítulo 4. Contiene una descripción opcional del enlace. – Tipo SQL. – Escala. Este campo esta en blanco de forma predeterminada. Etapas de trabajo de servidor 57 . v Ignorar. – Longitud. v Descendente. la columna se añadirá el final de la secuencia de claves de ordenación. no hay orden de clasificación. el servidor de IBM InfoSphere DataStage comprobará el orden en tiempo de ejecución. Si no especifica ningún valor en este campo. Seleccione esta opción si los datos de entrada de la columna especificada se ordenan en orden ascendente. puede utilizar las propiedades de columna adicionales en el separador Columnas de la página Entradas.

Si sólo desea información de resumen. Número máximo de caracteres necesarios para visualizar los datos de la columna. Seleccione el enlace que desee editar desde la lista Nombre de salida. Definición de datos de salida de Aggregator Cuando extrae datos de una etapa Aggregator. Para obtener más información. Especifica si la columna puede contener valores nulos. acelera el tiempo necesario para encontrar los datos que desea y garantiza que el depósito de datos almacene los datos con el formato que necesita. No obstante. Para obtener una descripción de cómo entrar y editar definiciones de columna. Nombre de la columna. Esta lista muestra todos los enlaces de salida desde la etapa. Para poder editar otras columnas de entrada. – Longitud. – Visualización. Puede pasar todos estos datos a su depósito de datos. – Clave. Indica si la columna forma parte de la clave primaria. lo que puede producir errores. – Escala. Contiene una expresión que especifica cómo se agregan los datos. La página Salidas presenta el campo y los dos separadores siguientes: v Nombre de salida. 58 Guía del desarrollador de Server Job . el total del producto A vendido desde el 01/01/96. Agregación de datos Los orígenes de datos de los que se extraen los datos pueden contener cientos de miles de filas de datos. – Elemento de datos. – Derivación. consulte “Agregación de datos”. Si efectúa una doble pulsación en la celda. Si selecciona esta opción. Esto reduce la cantidad de datos que se almacenan en el depósito de datos. consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. La etapa Aggregator permite agrupar por o resumir las columnas que desee en cualquiera de los enlaces de salida. las propiedades de los enlaces de salida y las definiciones de columnas de los datos se definen en la página Salidas del recuadro de diálogo Etapa Aggregator. Es la longitud para los datos CHAR y la longitud máxima para los datos VARCHAR. Factor de escala de los datos. los datos en una base de datos de ventas pueden contener información sobre cada transacción o venta. o se debe haber agrupado por ella. – Con posibilidades de nulos. deberá aceptar este mensaje. – Grupo. Nombre del enlace de salida. Una descripción en texto de la columna. v General. se abre el recuadro de diálogo Derivación. el servidor de InfoSphere DataStage no comprueba el orden de clasificación de los datos. Nota: Cada salida de columna de una etapa Aggregator debe estar resumida. v Columnas. Esta es una celda compleja que requiere más de un dato. – Tipo SQL. – Descripción. puede agregar los datos y pasar sólo la suma total al depósito de datos. La cuadrícula tiene las columnas siguientes: – Nombre de la columna. por ejemplo. Contiene una cuadrícula que muestra las definiciones de columna para los datos que se están extrayendo de la etapa. aparece un mensaje de aviso cuando pulsa Aceptar. Se visualiza de forma predeterminada. Precisión de los datos. Tipo de datos de la columna. esto significa que deberá realizar búsquedas en grandes volúmenes de datos en el depósito de datos antes de obtener los resultados que desee. Tipo de datos SQL. Por ejemplo.ejecución. Contiene una descripción opcional del enlace. Especifica si se deben realizar una agrupación de acuerdo con los datos de la columna.

nombre_columna. Contiene la función de agregación que se ejecuta. por ejemplo. Desviación estándar.N avg(Xi)2) / (N-1)] Puede realizar las acciones siguientes para los demás tipos de datos SQL: v Mínimo. A. Cuenta el número de valores de la columna. si la base de datos de ventas contiene información sobre tres productos diferentes. de la misma forma que toda la información de los productos B y C. v v v v v v v Máximo. Último. IBM InfoSphere DataStage utiliza la fórmula: desviación_estándar = sqrt [ (sum(Xi2) . Este recuadro de selección está deseleccionado de forma predeterminada. Capítulo 4. El recuadro de diálogo Derivación contiene los campos y las opciones siguientes: v Columna de origen. debe editar la columna Derivación en el recuadro de diálogo Columna de salida. v Agrupar por esta columna. agrupados por comas. Por ejemplo. Contiene el nombre de la columna por la que desea agrupar o que desea resumir. Devuelve el último valor de la columna. Puede realizar las acciones siguientes para los tipos de datos SQL numéricos: v Mínimo. Cuenta el número de valores de la columna. seleccione el recuadro de selección Agrupar por esta columna. Devuelve el primer valor de la columna. Devuelve el valor más bajo de la columna. Para agrupar por o resumir una columna. Toda la información sobre el producto A se agrupará conjuntamente. Primer. utilizan la fórmula: desviación_estándar = sqrt [ (sum(Xi2) . B y C. Devuelve el valor más bajo de la columna. Devuelve el valor más alto de la columna. Por ejemplo. efectúe una doble pulsación en la celda para abrir el recuadro de diálogo Derivación. Al resumir los datos. Recuento. Etapas de trabajo de servidor 59 .N avg(Xi)2) / N ] Algunos otros paquetes como. Para ello. Devuelve el valor más alto de la columna. v Función agregada. Promedio. con el formato nombre_enlace. La función agregada se establece automáticamente en (agrupada) y no puede seleccionar una función agregada en la lista. Puede elegir cualquiera de las columnas de entrada de la lista. puede realizar cálculos básicos en los valores de una determinada columna. Primer. Microsoft Excel. Devuelve la desviación estándar de los valores en la columna. Al calcular la desviación estándar. Devuelve el último valor de la columna. Suma. Especifica si la columna se agrupará. Si desea agrupar por la columna. puede agruparla por la columna Producto. Recuento. La opción predeterminada es Suma. Devuelve el primer valor de la columna. Las acciones que puede realizar dependen del tipo de datos SQL de la columna seleccionada. si desea saber el número total del producto A vendido. Suma los valores totales de la columna. Último. debe sumar los valores de la columna QtySold. Elija la función que desee en la lista. Proporciona el promedio de los valores de la columna.Un grupo de datos de entrada es un conjunto de filas de entrada que comparten los mismos valores. v v v v Máximo.

archivos por lotes DOS. Puede ejecutar un mandato cualquiera. excepto que puede colocar la etapa Command en cualquier lugar de una secuencia de trabajos e invocarla varias veces en paralelo. deseleccione el recuadro de selección Agrupar por esta columna y seleccione la función que desee utilizar en la lista Función agregada. ejecuta el mandato y pasa los datos entrantes sin alterar. los programas y los trabajos desde cualquier punto del flujo de datos de IBM InfoSphere DataStage. la etapa ejecuta el mandato especificado y envía una fila individual en el enlace de salida. Si la etapa se coloca en medio de una secuencia y no se selecciona No reenviar datos de fila. Si selecciona Salida a enlace.Para utilizar una función agregada. Windows o UNIX. que puede escribir en el shell del sistema operativo como. una etapa Transformer puede utilizar las operaciones de ramificación de InfoSphere DataStage para procesar el código. La llega de la fila sólo causa la ejecución del mandato. por ejemplo. Si ejecuta una etapa Command al principio de una vía de acceso de trabajo para un enlace de salida. v Soporte para soporte multilingüístico. esta fila contiene el código de retorno del mandato especificado en la primera columna. Las rutinas anteriores y posteriores que ya están disponibles actúan de forma parecida. A continuación. Pulse Aceptar para guardar los valores de la columna. la segunda columna mantiene la salida del mandato. La GUI maneja la creación de columnas en el enlace de salida al examinar los valores de Salida a enlace. Si la etapa está al final de una vía de acceso. Puede colocar una etapa Command en medio de una secuencia o al final de una vía de acceso de trabajo (sin ningún enlace de salida). 60 Guía del desarrollador de Server Job . v Invocación gráfica de mandatos externos sin recurrir a la codificación del control de trabajos. Especifica una fila de datos reales o una fila individual de una instancia previa de la etapa Command. Puede utilizar la etapa Command en cualquier lugar de la vía de acceso de trabajo para invocar un mandato externo. los datos se mueven al enlace de salida. Funcionalidad Funcionalidad soportada La etapa Command tiene la funcionalidad siguiente: v Más flexibilidad que cuando se utilizan otras rutinas anteriores o posteriores a la etapa. A modo de ejemplo cabe citar scripts Perl. incluidos los mandatos de motor de servidor. Etapa Command La etapa Command es una etapa activa que puede ejecutar distintos mandatos externos. No reenviar datos de fila y No esperar al mandato. incluidos sus argumentos. La etapa Command sólo puede tener un enlace de entrada y un enlace de salida: v Enlace de entrada. Como mínimo. scripts UNIX y otros programas ejecutables de línea de mandatos que pueda llamar si no son interactivos. Hay disponible una interfaz gráfica de usuario (GUI) para la etapa Command. v Metadatos visuales y textuales. v Enlace de salida. v Un proceso más sencillo de los códigos de retorno de los mandatos externos. v La etapa y sus enlaces aparecen como metadatos de sucesos en los Servicios de gestión de metadatos de la suite de IBM InfoSphere DataStage.

Para ello. Algunas etapas dan soporte a las rutinas anteriores y posteriores a la etapa. Especifica cuando debe ejecutarse el mandato y cómo deben tratarse las filas desde este enlace. Grabe estas rutinas en BASIC de IBM InfoSphere DataStage. Definición de la etapa Command Los parámetros del mandato se establecen en el separador General de la página Etapa. Generan anomalías en los trabajos. Terminología La lista siguiente describe los términos de la etapa Command utilizados en este documento: Término Descripción Rutinas anteriores y posteriores Las rutinas externas que puede definir para que se invoquen antes de que se inicie un trabajo y después de que se salga de un trabajo. Este separador sólo aparece si se ha instalado el soporte multilingüístico para IBM InfoSphere DataStage. El separador Soporte multilingüístico define una correlación de juego de caracteres que se debe utilizar con la etapa. v Entrada. dónde grabar la salida y si el trabajo debe esperar que se complete el mandato. Esta página muestra el nombre de la etapa que se está editando.Funcionalidad no soportada La siguiente funcionalidad no está soportada: v Prestaciones de transformación de datos en las filas que fluyen en la etapa. Etapas de trabajo de servidor 61 . se abre el recuadro de diálogo Etapa Command. ExecDOS Una rutina incorporada que ejecuta mandatos de DOS desde un trabajo de InfoSphere DataStage. v Acceso de cliente a un RDBMS. Especifica cómo debe tratarse la salida desde el mandato. Esta página sólo se muestra si dispone de un enlace de salida de esta etapa. Estas se invocan antes o después de invocar una etapa. Si desea ejecutar una sentencia SQL. consulte “Definición de la etapa Command”. Esta página sólo se muestra si dispone de un enlace de entrada de esta página. Especifique la información adecuada utilizando los siguientes campos: Capítulo 4. Entrada y Salida. consulte “Definición de la correlación de juego de caracteres” en la página 62. Este recuadro de diálogo tiene las páginas Etapa. Para obtener detalles. v Salida. v Mandatos que requieren la entrada del usuario o la creación de ventanas. ExecTCL Una rutina incorporada que ejecuta mandatos del motor de servidor desde un trabajo de InfoSphere DataStage. No puede utilizar esta etapa para devolver filas que se generan como resultado de una ejecución de mandato en el motor. Para obtener detalles. incluidos los trabajos de InfoSphere DataStage. en función de si existen entradas a y salidas de la etapa: v Etapa. También puede describir el objetivo de la etapa. Utilización de la etapa Command Si utiliza la interfaz gráfica de usuario para editar una etapa Command. utilice la etapa Transformer y Aggregator. El separador General define el tipo de mandato. v Acceso directo a los mandatos del motor de servidor. la acción que se debe emprender si se produce un error. utilice llamadas a las aplicaciones de cliente existentes. el texto del mandato.

Especifique la información mediante el siguiente botón y los siguientes campos: v Correlacionar el nombre que debe utilizarse con la etapa. Se define la correlación de juego de caracteres predeterminada para el proyecto o el trabajo. Utilice el formato #Parám#. no se crea ningún archivo de salida. Ejecuta el mandato como una hebra en Windows. La serie que se debe pasar como mandato. La etapa ejecuta un mandato de motor de servidor. Seleccione una de las opciones siguientes: – OS. Definición de la correlación de juego de caracteres Puede definir una correlación de juego de caracteres para una etapa. El trabajo es un proceso independiente y prosigue con el proceso de los datos. v Mandato. Puede ejecutar programas BASIC de IBM InfoSphere DataStage. No se permite la salida de enlace. El separador Soporte multilingüístico sólo aparece si ha instalado el soporte multilingüístico.RTNCODE y COMMAND. v Sólo correlaciones cargadas.. Si se selecciona. Si se selecciona. v Mostrar todas las correlaciones. v Descripción. consulte “Utilización de mandatos” en la página 64. v Terminar anormalmente si el mandato falla. Muestra una lista de las correlaciones que están cargadas en ese momento. Si se selecciona.. Opcional. Para obtener información sobre cómo utilizar estos mandatos. el trabajo termina anormalmente si se produce un error al ejecutar el mandato. Realice esta tarea desde el separador Soporte multilingüístico en la página Etapa. pero el código de retorno y de salida para el mandato se siguen grabando en el registro de InfoSphere DataStage y en el archivo de salida. La serie #Parám# se sustituye por el parámetro de trabajo cuando se ejecuta el trabajo. – TCL. Si deja el campo en blanco.OUTPUT desde el enlace de salida. v Inhabilitar salida en registro. Lista todas las correlaciones que se envían con IBM InfoSphere DataStage. donde Parám es el nombre del parámetro de trabajo. 62 Guía del desarrollador de Server Job . la primera columna en el enlace de salida no se utiliza para el código de retorno. el trabajo no espera a que el mandato finalice antes de continuar. se inhabilitan las opciones siguientes: – Terminar anormalmente si el mandato falla (etapa) – Repetir para cada fila (entrada) – Ejecutar mandato después de fila (entrada) – No reenviar datos de fila (entrada) – Salida a enlace (salida) v Salida a archivo. El tipo de mandato que se debe ejecutar. De forma adicional. Puede cambiar la correlación seleccionando un nombre de correlación de la lista. v Utilizar parámetro de trabajo. Especifica los valores de los parámetros para el trabajo.. la salida del mandato no se graba en el registro de InfoSphere DataStage. el archivo se crea en el directorio padre para el proyecto. v No esperar al mandato. La etapa espera si el mandato aún se está ejecutando después de procesar todos los datos. Si selecciona esta opción se eliminan los elementos de datos COMMAND. Describe el objetivo de la etapa Command.v Tipo de mandato. La etapa ejecuta un mandato de sistema operativo. Si no especifica un nombre de vía de acceso. Graba la salida desde el mandato a un archivo.

v Pulse el botón Columnas. La interfaz gráfica de usuario gestiona automáticamente las definiciones de columna de salida. De modo predeterminado. Acerca de la página Entrada La página Entrada tiene un campo Nombre de entrada. Si se borra. La etiqueta "La etapa Command pasa a través de la columna" del campo Descripción identifica cada columna copiada para su eliminación. v Descripción. el mandato se ejecuta de forma asíncrona cuando la fila llega al enlace de entrada. la opción se inhabilita. Definición de datos de salida de etapa Command Puede grabar la salida de un mandato como una columna en un enlace de salida de la etapa Command. No se permite la salida de enlace.. ejecuta el mandato especificado para cada fila que llega a este enlace. v Ejecutar mandato después de fila. Opcional. ejecuta el mandato especificado. siempre que contenga tanto enlaces de entrada como de salida. No puede seleccionar esta opción si no existe ningún enlace de salida. pero el código de retorno y de salida para el mandato se siguen grabando en el registro de IBM InfoSphere DataStage y en el archivo de salida.Definición de los datos de entrada de la etapa Command Cuando una fila de datos reales o una fila individual de una instancia previa de la etapa Command llega a un enlace de entrada de esta etapa. Defina las propiedades de este enlace y las definiciones de columna de los datos en la página Entrada en el recuadro de diálogo Etapa Command de la interfaz gráfica de usuario.. v Nombre de entrada. Las opciones siguientes están inhabilitadas: – No reenviar datos de fila (entrada) – Salida a enlace (salida) v No reenviar datos de fila. Seleccione el enlace que desee editar desde el recuadro de la lista desplegable Nombre de entrada..OUTPUT desde el enlace de salida. las definiciones de columna se copian desde el enlace de entrada al enlace de salida. Si no selecciona No esperar a mandato desde el separador General de la página Etapa. contiene los campos siguientes: v Repetir para cada fila. Puede seguir visualizando la lista a medida que va entrando metadatos detallados en el separador Columnas. para visualizar una breve lista de las columnas asociadas con el enlace de entrada. Si se selecciona. de forma predeterminada. Separador General: Este separador.. los separadores General y Columnas y el botón Columnas. ejecuta el mandato especificado después de copiar y enviar la fila al enlace de salida. Si se borra. Las Capítulo 4. Si no existe ningún enlace de salida.. Separador Columnas: Este separador contiene las definiciones de columna para los datos grabados en el origen de datos. Describe el objetivo del enlace de entrada. esta opción estará inhabilitada para evitar saturar al servidor con procesos. Este recuadro de lista muestra todos los enlaces de entrada a la etapa Command. Nombre del enlace de entrada. Si selecciona esta opción se eliminan los elementos de datos COMMAND. la etapa pasa a través de filas hacia el mismo número de columnas en el enlace de salida.RTNCODE y COMMAND. Si se selecciona. El separador Columnas se comporta de la misma forma que el separador Columnas de la etapa ODBC. Etapas de trabajo de servidor 63 .

por ejemplo. Si no selecciona No esperar al mandato y se selecciona la opción de salida Salida a enlace.. La interfaz gráfica de usuario gestiona automáticamente las definiciones de columna de salida. archivos de proceso por lotes DOS.columnas de salida dependen más de lo que haya seleccionado para los valores de campo que de los requisitos de los metadatos en sus destinos. El programa dsjob tiene la sintaxis simple siguiente: 64 Guía del desarrollador de Server Job .. El paso a través de columnas debe tener los mismos tipos datos y tamaños que las correspondientes columnas de entrada.OUTPUT para las definiciones de columna contendrán el código de retorno y la salida del mandato respectivamente. v Nombre de salida. puede editar los campos Nombre. que pueda escribir en el shell del sistema operativo. scripts Perl. Nombre del enlace de salida. Derivación y Descripción para las columnas. scripts de UNIX y otros programas accionados por líneas de mandatos que no son interactivas y no precisan ninguna entrada. los separadores General y Columnas y el botón Columnas. Acerca de la página Salida La página Salida tiene un campo Nombre de salida. incluyendo sus argumentos. Puede seguir visualizando la lista a medida que va entrando metadatos detallados en el separador Columnas. Si se selecciona. v Descripción. Utilización de mandatos Puede ejecutar cualquier mandato.. Mandato dsjob Puede utilizar el mandato dsjob para llamar a otros trabajos de IBM InfoSphere DataStage desde la etapa Command. Este recuadro de lista muestra todos los enlaces de salida. v Pulse el botón Columnas. No obstante. Describe el objetivo del enlace de salida. contiene los campos siguientes: v Salida a enlace. Seleccione el enlace que desee editar desde el recuadro de la lista desplegable Nombre de salida. Opcional. Por el contrario. Separador Columnas: Este separador contiene las definiciones de columna para los datos a los que se da salida en el enlace seleccionado.. tiene una flexibilidad mínima al definir las columnas de salida de la etapa Command.OUTPUT mantiene la salida de la ejecución de mandato. InfoSphere DataStage proporciona el programa dsjob que permite ejecutar trabajos compilados desde un mandato en lugar de desde InfoSphere DataStage. los elementos de datos COMMAND. de forma predeterminada. Elemento de datos. Esta columna COMMAND. Separador General: Este separador. el campo Derivación carece de sentido para esta etapa. envía la salida del mandato como la segunda columna del enlace de salida. Mandatos TCL y programas BASIC Puede establecer el tipo de mandato en TCL en el separador General de la página Etapa para ejecutar mandatos TCL y ejecutar programas BASIC. para visualizar una breve lista de columnas designadas en este enlace.RTNCODE y COMMAND.. Por ello.

dsjob -run [ -mode ] [ -param ] [ -warn ] [ -rows ] [ -wait ] [ -stop ] [ -jobstatus ] [ -userstatus ] trabajo de proyecto Para ver información sobre la sintaxis completa. consulte InfoSphere DataStage Programmer's Guide. la interfaz gráfica de usuario lo proporciona automáticamente. v En enlaces de salida. El enlace de salida que conecta la etapa IPC con la etapa que lee los datos puede abrirse una vez abierto el enlace de entrada conectado a la etapa que graba los datos. consulte “Trabajos y procesos de IBM InfoSphere DataStage” en la página 5. Nota: Si selecciona Omitir en el recuadro de diálogo Conectar con proyecto mientras inicia InfoSphere DataStage. El código de retorno se envía automáticamente como la primera columna al enlace de salida. Por ejemplo. además del código de retorno para el mandato. deberá añadir manualmente las columnas obligatorias a las definiciones de columna para el enlace de salida. Si existen enlaces de salida. Nota: Puesto que la etapa envía el código de retorno para el mandato como la primera columna de un enlace de salida. Si utiliza el editor de cuadrículas estándar. Puede grabar la salida de un mandato en uno de los siguientes lugares: v El registro de InfoSphere DataStage. Puede utilizar las etapas InterProcess para unir etapas pasivas. Etapas de trabajo de servidor 65 . puede escribir la salida como una columna en el enlace. Etapas InterProcess Una etapa InterProcess (IPC) es una etapa pasiva que proporciona un canal de comunicación entre los procesos de IBM InfoSphere DataStage que se ejecutan simultáneamente en el mismo trabajo. Para conocer las ventajas del uso de las etapas IPC. necesita obtener más información sobre cómo se ejecutan realmente los trabajos de InfoSphere DataStage como procesos. Para ello. Permite diseñar trabajos que se ejecutan en sistemas SMP con grandes ventajas para el rendimiento. deberá utilizar las opciones de usuario y contraseña cuando utilice el mandato dsjob. Este es el valor predeterminado. v En un archivo. puede utilizarlas para acelerar la transferencia de datos entre dos orígenes de datos: Capítulo 4.

Una vez la etapa Sequential File ha abierto su enlace de salida. También puede utilizar la etapa IPC para especificar explícitamente que las etapas activas conectadas se ejecuten como procesos aparte. el trabajo se ejecutará como dos procesos: uno que maneja la comunicación desde la etapa Sequential File a la etapa IPC y otro que maneja la comunicación de la etapa IPC a la etapa ODBC. Trabajo de ejemplo En este ejemplo. ya sea para todo el proyecto mediante el cliente del 66 Guía del desarrollador de Server Job . los dos procesos pueden ejecutarse simultáneamente para que la transferencia sea mucho más rápida. la etapa IPC puede empezar a pasar datos a la etapa ODBC. Esto ofrece muchas ventajas de rendimiento para los sistemas de multiprocesador.Figura 16. Si el trabajo se ejecuta en un sistema de multiprocesador. También puede especificar este comportamiento implícitamente activando el almacenamiento intermedio de filas entre procesos.

aparece el recuadro de diálogo Etapa InterProcess.administrador o individualmente para un trabajo en el recuadro de diálogo Propiedades del trabajo. Este recuadro de diálogo tiene tres páginas: Capítulo 4. Etapas de trabajo de servidor 67 . Trabajo de ejemplo Utilización de la etapa IPC Cuando edita una etapa IPC. Figura 17.

v Columnas. pero puede ser importante si está creando prototipos de trabajos de multiprocesador en plataformas de un solo procesador y es probable que se produzcan retardos. v Salidas. La página Salidas muestra información sobre el enlace. La página General permite especificar una descripción opcional de la etapa. un bloque puede grabarse mientras se lee el otro. La etapa IPC utiliza dos bloques de memoria. v Tiempo de espera. v Entradas. General y Propiedades.v Etapa. La página Salidas tiene dos separadores: General y Columnas. Tenga en cuenta que los metadatos del enlace de salida deben ser idénticos a los metadatos del enlace de entrada. Toma como valor predeterminado 10 segundos. Esta propiedad define el tamaño de cada bloque. El separador General permite especificar una descripción opcional de la etapa. 68 Guía del desarrollador de Server Job . El separador General permite especificar una descripción opcional de la etapa. v Columnas. La etapa IPC sólo puede tener un enlace de entrada. La página Entradas tiene dos separadores: v General. La página Entradas muestra información sobre el enlace. También puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Guardar esta en el repositorio si es necesario). Sin embargo. la etapa FTP Plug-in extrae datos desde un único archivo de texto o los graba en un único archivo de texto. Este valor ofrece un límite de tiempo que especifica cuánto tiempo esperará la etapa que un proceso se conecte a ella antes de que se exceda el tiempo de espera. El separador Columnas contiene las definiciones de columna para los datos en el enlace de entrada. Definición de propiedades de la etapa IPC El separador Propiedades permite especificar dos propiedades para la etapa IPC: v Tamaño del almacenamiento intermedio. Tenga en cuenta que los metadatos del enlace de entrada deben ser idénticos a los metadatos del enlace de salida. Etapas FTP Plug-in Como la etapa Sequential File. Normalmente no debe modificarse. los archivos de texto a los que debe accederse mediante la etapa FTP Plug-in residen en otra máquina (posiblemente. Definición de datos de salida de la etapa IPC La etapa IPC puede tener un enlace de salida. con un sistema de archivos y convenciones de almacenamiento de archivos de caracteres distintos) de una red de comunicaciones en lugar de en un disco local. Definición de los datos de entrada de la etapa IPC La etapa IPC puede tener un enlace de entrada. Toma como valor predeterminado 128 kb. Normalmente se rellena con los metadatos de la etapa que se conecta en el lado de la entrada. También puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Guardar esta en el repositorio si es necesario). El separador Propiedades permite especificar las propiedades de la etapa. Normalmente se rellena con los metadatos de la etapa que se conecta en el lado de la entrada. Aquí es donde se conecta el proceso que está grabando. v General. La etapa IPC sólo puede tener un enlace de salida. Aquí es donde se conecta el proceso que está leyendo. La página Etapa tiene dos separadores. El separador Columnas contiene las definiciones de columna para los datos en el enlace de salida. de forma que se asigna un valor predeterminado de 256 Kb en total.

Nota: Puede especificar el número de filas que el trabajo debe procesar en la página Límites en el cliente del Director de IBM InfoSphere DataStage. Puede utilizar el mandato After (después) para suprimir archivos temporales o para iniciar una actividad subsiguiente que utilice el archivo transferido. v Maneja las anomalías en los trabajos según corresponda cuando se transfieren archivos incompletos. Puede utilizar el mandato Before (antes) para preparar un archivo que se debe transferir o para preparar la máquina remota que va a recibirlo. Cada etapa FTP Plug-in es una etapa pasiva que puede tener cualquier número de enlaces de entrada y de salida: v Los enlaces de entrada especifican los datos que está grabando. v Da soporte al protocolo de datos STREAM. La etapa FTP Plug-in no precisa ninguna instalación adicional en las plataformas remotas. v Proporciona un nivel de rastreo opcional para diagnosticar problemas de rendimiento. v Permite leer o grabar datos ASCII o binarios. Consulte la propiedad de entrada Tipo de representación de datos y la propiedad de salida Tipo de representación de datos. No obstante. nombre de usuario. Nota: La modalidad binaria no está soportada en el lienzo del servidor paralelo. A partir del release 1. Así. v Utiliza las propiedades de etapa y enlace. que es una secuencia de filas que se debe cargar en un único archivo remoto. v Se corresponde generalmente con una sesión de transferencia de archivos independiente para cada enlace. la etapa de conector FTP proporciona la opción de ejecutar mandatos Before/After en la máquina remota. pueden registrarse errores muy graves en el archivo de registro al final del trabajo debido a un cierre prematuro de la conexión de datos. v Permite controlar qué proceso inicia la solicitud de conexión para la transferencia de datos. v Proporciona un uso opcional de definiciones de metadatos para leer un archivo remoto.La etapa FTP Plug-in proporciona un rápido y eficiente acceso de archivos remoto a los usuarios utilizando servidores FTP en plataformas remotas. Etapas de trabajo de servidor 69 . y el tipo de columna para determinar el formato de las series de caracteres antes de la transferencia. contraseña y vía de acceso del directorio hacia o desde los archivos que se transfieren para cada instancia de etapa.3. el trabajo termina anormalmente con un mensaje de error. v Los enlaces de salida especifican los datos que está extrayendo. v Da soporte a un número especificado por el usuario de reintentos de conexión e intervalos de reintento. v Después de que finalice la transferencia de archivos. si limita las filas. Si se cierra una conexión de transferencia STREAM. De forma adicional. la transferencia de datos estará completa para el número de filas seleccionado. Mantiene una sesión FTP el tiempo suficiente para permitir la transferencia de grandes cantidades de datos. Capítulo 4. v Proporciona mandatos opcionales anteriores y posteriores para que se ejecuten en la máquina remota antes y después de transferir un archivo satisfactoriamente (requiere un servidor telnet para poder utilizar todas las prestaciones en Windows). Funcionalidad de la etapa FTP Plug-in La etapa FTP Plug-in contiene las funcionalidades y ventajas siguientes: v Comparte propiedades comunes de nombre de host remoto. v Actúa como cliente FTP y utiliza un protocolo de transferencia de archivos genérico con el que iniciar sesiones y transferir archivos hacia o desde cualquier servidor de transferencia de archivos. que es una secuencia de filas que se debe leer desde un único archivo remoto. se automatizan los siguientes procesos de flujo de datos: v Antes de que empiece la transferencia de archivos. por lo que pueden transferirse varios archivos de forma simultánea.

Una prestación de transferencia interactiva de archivos que se utiliza a menudo en las redes TCP/IP. mandato before El mandato que se ejecuta en la máquina remota utilizando una sesión de telnet antes de iniciar la transferencia. retrotraer Cancela todos los cambios de E/S de archivo realizados durante una transacción. v Soporta el soporte multilingüístico. 70 Guía del desarrollador de Server Job . La siguiente funcionalidad no está soportada: v Carga masiva para enlaces de entrada de secuencia v Búsquedas con clave en una etapa de transferencia de archivos v Procedimientos almacenados Terminología En la lista siguiente se describen los términos de FTP Plug-in utilizados en este documento: Término Descripción mandato after El mandato que se ejecuta en la máquina remota utilizando una sesión de telnet si la transferencia ha finalizado. debe proporcionar primero un servidor telnet distinto del servidor telnet de UniVerse.v Permite validar la existencia del archivo remoto en el cliente del Director de InfoSphere DataStage (sólo para el enlace de salida). transacción Una secuencia de operaciones de E/S de archivo que se trata como una operación lógica en relación con la recuperación y la visibilidad para otros usuarios. FTP Protocolo de transferencia de archivos. v Descripción describe las propiedades. Instalación de la etapa Para especificar retrotracciones de transacciones. Propiedades Las tablas de las siguientes secciones incluyen las siguientes cabeceras de columna: v Solicitud es el texto que el diseñador de trabajo puede ver en la interfaz de usuario del editor de etapas. v Tipo es el tipo de datos de la propiedad. telnet El nombre de una sesión de protocolo que actúa como una emulación de terminal remoto estándar con las comunicaciones con el host a través de una red. compromisos o el proceso anterior/posterior en el servidor Windows. v Valor predeterminado es el texto que se utiliza si el diseñador del trabajo no suministra ningún valor.

Necesaria si se utilizan servicios de telnet. Sólo es necesario si la máquina remota necesita información de cuentas de usuario durante el proceso de inicio de sesión. Es necesaria si la máquina remota utiliza una contraseña para el "Nombre de usuario. Utilice uno de los siguientes niveles de rastreo: 0 Ningún rastreo 1 Propiedades de la etapa del informe Reintentos Largo 3 Opcional. Número total de solicitudes previstas que se reciben durante el proceso de inicio de sesión en el servidor de telnet. Controla el tipo de información de rastreo que se añade al registro. Opcional. La contraseña para el usuario especificado. El número de reintentos si falla la conexión. Opcional. Número de segundos que se debe esperar entre reintentos si la conexión falla. Necesario." El nombre de cuenta para el inicio de sesión de FTP remoto. Número de puerto del servidor telnet de la máquina remota. Necesario.Propiedades de etapa La etapa FTP Plug-in da soporte a las siguientes propiedades de etapa: Solicitud Nombre del servidor Tipo Serie Predeterminada Ninguno Descripción Necesario. Capítulo 4. El nombre de la máquina de host en la que reside el archivo para el servidor FTP. Necesario. Etapas de trabajo de servidor Puerto de FTP remoto Largo 21 Puerto Telnet remoto Largo 23 Nombre de usuario Serie Ninguno Contraseña del usuario Serie Ninguno Nombre de cuenta Serie Ninguno Nivel de rastreo Largo 0 Intervalo de reintentos Largo 15 Número de solicitudes de Telnet Serie 2 71 . Número de puerto del servidor FTP de la máquina remota. Nombre de usuario para iniciar la sesión en la máquina remota.

Las repuestas que son necesarias para conectarse a un sistema de destino mediante telnet.Solicitud Solicitud de Telnet 1 Tipo Serie Predeterminada Inicio de sesión Descripción Necesaria si se utilizan servicios de telnet. Contraseña de telnet del usuario de telnet especificado. además del inicio de sesión y la contraseña. La serie literal (no distingue entre mayúsculas y minúsculas) que envía el servidor de telnet y solicita al proceso de IBM InfoSphere DataStage los datos de inicio de sesión. Necesaria si se utilizan servicios de telnet. Necesaria si se utilizan servicios de telnet. Número de milisegundos que se esperará a que finalicen los mandatos anterior (Before) y posterior (After) de Telnet. La serie literal (no distingue entre mayúsculas y minúsculas) que envía el servidor de telnet y solicita al proceso de InfoSphere DataStage los datos de contraseña. El nombre de usuario de telnet para iniciar sesión en la sesión de telnet. además del inicio de sesión y la contraseña. Las solicitudes que son necesarias para conectarse a un sistema de destino mediante telnet. Necesaria si se utilizan servicios de telnet. Respuesta de Telnet 1 Serie Ninguno Solicitud de Telnet 2 Serie Contraseña Respuesta de Telnet 2 Serie Ninguno Solicitud de Telnet n Serie Ninguno Respuesta de Telnet n Serie Ninguno Tiempo de espera de mandatos Int 50 72 Guía del desarrollador de Server Job .

Nota: La modalidad binaria no se soporta cuando la etapa se ejecuta en el lienzo paralelo. Necesario. Para transferir datos en modalidad binaria. Para la representación binaria. utilice los tipos de datos binarios o varbinarios con el "Tipo de representación de datos" fijado en ASCII. la transferencia de datos utiliza el NVT-ASCII estándar. Para la representación ASCII.Propiedades del enlace de entrada La tabla siguiente lista las propiedades del enlace de entrada en el editor de cuadrícula: Tabla 8. Finalización de línea Lista [CR] [LF] (Terminación de estilo DOS) Especifica la secuencia de terminación de fila (fin de la línea) en el archivo remoto. Debe establecer las "Columnas de anchura fija" en Sí. Nombre de archivo remoto Serie Ninguno Tipo de representación de datos Lista ASCII Capítulo 4. los datos se transfieren en bits continuos como datos IMAGE. Nombre de la vía de acceso del directorio de trabajo en la máquina remota donde están ubicados los archivos que se deben recuperar o enviar. Nombre del archivo en la máquina remota que se debe recuperar o enviar. Propiedades del enlace de entrada Solicitud Vía de acceso remota Tipo Serie Predeterminada Ninguno Descripción Opcional. sobre todo para archivos de texto. Necesario. Si "Tipo de representación de datos" se establece en ASCII. Columnas de anchura fija Serie No Necesario. Controla cómo se leen o se graban los datos del archivo remoto. Etapas de trabajo de servidor 73 . los valores válidos son "sin terminación" (no termination) y [CR] [LF]. Indica si los datos del archivo remoto pueden estar con columnas de anchura fija.

El delimitador que separa los campos de datos en el archivo remoto. Puede suprimir "Carácter de comillas" si no entra ningún valor. Delimitador de columna Char . Necesario. (coma) Carácter de comillas Char " (comillas dobles) Carácter de escape Char \ (barra inclinada invertida) Serie vacía Serie Ninguno Nombres de columnas de la Serie primera línea No Omitir la última línea nueva Serie No 74 Guía del desarrollador de Server Job . Propiedades del enlace de entrada (continuación) Solicitud Espacios entre columnas Tipo Largo Predeterminada 0 Descripción El número de espacios entre las columnas de anchura fija en el archivo remoto. También puede entrar el valor ASCII para el carácter que desee utilizar. Indica si desea omitir la última línea nueva al final de los datos al enviarlos a la máquina remota.Tabla 8. Es necesario si "Columnas con anchura fija" está establecido en Sí. Opcional. El único carácter entrado para ser interpretado como el carácter de escape. El carácter único se utiliza para incluir un valor de datos que contiene un carácter delimitador como datos. Puede entrar un único carácter sin comillas o el valor ASCII del carácter que desea utilizar. Es necesario si "Columnas con anchura fija" está establecido en No. es posible que contenga nombres de columnas). Necesario. Especifica la serie que debe interpretarse como el valor vacío de SQL. Opcional y válido solamente si "Columnas con anchura fija" está establecido en No. Es necesario si "Tipo de representación de datos" está establecido en ASCII. Especifica si se debe transferir la primera línea al archivo remoto (es decir.

Realizar copia de seguridad Serie del archivo No Mandato de copia de seguridad de Telnet Serie Ninguno Mandato anterior (Before) de Telnet Serie Ninguno Mandato posterior (After) de Telnet Serie Ninguno Mandato de iniciar transacción Serie Ninguno Mandato de confirmar transacción Serie Ninguno Capítulo 4. Utilice este mandato para suprimir cualquier archivo temporal que se haya creado. Opcional. Opcional. Este mandato de Telnet sólo se ejecuta si "Realizar copia de seguridad del archivo" está fijado en Sí. Indica si el "Mandato de copia de seguridad de Telnet" debe ejecutarse antes de continuar con el trabajo. Etapas de trabajo de servidor 75 . Opcional. Especifica el mandato de Telnet que debe ejecutarse antes de iniciar la transferencia de archivos a la máquina remota. Utilice este mandato para crear copias temporales de los archivos. Utilice este mandato para crear copias de seguridad del archivo. Indica si los datos deben colocarse en el archivo remoto en modalidad de anexo o de sobrescritura. Opcional. Propiedades del enlace de entrada (continuación) Solicitud Anexar a archivo Tipo Serie Predeterminada No Descripción Opcional. Especifica el mandato de Telnet que debe ejecutarse en la máquina remota antes de que se grabe el trabajo en el archivo remoto. El mandato de Telnet que se debe ejecutar en la máquina remota antes de iniciar un trabajo.Tabla 8. Opcional. Especifica el mandato de Telnet que debe ejecutarse en la máquina remota después de completar un trabajo. Sí indica "anexo" con respecto al archivo existente. Opcional. Especifica el mandato de Telnet que debe ejecutarse después de una transferencia de datos satisfactoria. No indica que se sobrescribirá el archivo.

Establézcalo en Activos para los enlaces de entrada de forma que el servidor FTP inicie la conexión para la transferencia de datos. Sistemas OpenVMS digitales. Permite almacenar archivos en sistemas principales que se encuentran fuera del cortafuegos basado en un router.Tabla 8. Especifica el mandato de Telnet que debe ejecutarse si se produce un error al enviar el archivo a la máquina remota. Modalidad de conexión de datos de FTP Lista Pasiva 76 Guía del desarrollador de Server Job . De lo contrario. Utilice este mandato para restaurar cualquier archivo de la copia temporal si se produce una anomalía o una terminación anormal. Especifica el proceso que inicia la conexión para la transferencia de datos. Si se establece en Activa. o si utiliza el cliente del Director para restablecer el trabajo. las conexiones se inician desde el sistema principal donde se ha instalado la capa de motor. Si se establece en Pasiva. el servidor FTP inicia las conexiones. no se aceptarán los datos. Propiedades del enlace de entrada (continuación) Solicitud Mandato de retrotracción de transacciones Tipo Serie Predeterminada Ninguno Descripción Opcional.

Puede especificar cualquier mandato de UNIX para las siguientes propiedades de enlace: Telnet después de mandato. Los niveles de rastreo disponibles son: 0 Ningún rastreo 1 Propiedades de enlace 2 Rendimiento 4 Mensajes de FTP 8 Mensajes de Telnet 16 Rastreo de función 32 Volcado de datos de Telnet Puede combinar los niveles de rastreo. Mandato de confirmación de transacción o Mandato de retrotracción de transacción. Necesario. Propiedades del enlace de entrada (continuación) Solicitud Nivel de rastreo de enlace Tipo Largo Predeterminada 0 Descripción Opcional. Nombre de archivo remoto Serie Ninguno Capítulo 4.Tabla 8. Mandato de copia de seguridad de Telnet. Longitud del Largo almacenamiento intermedio 4096 Necesario. Propiedades del enlace de salida Solicitud Vía de acceso remota Tipo Serie Predeterminada Ninguno Descripción Opcional. Establece la longitud (en fragmentos superiores a 512 bytes) de los almacenamientos intermedios de recepción y de envío del FTP para filas de datos antes de ser enviadas o recuperadas. Mandato de inicio de transacción. Nombre de la vía de acceso del directorio de trabajo en la máquina remota donde están ubicados los archivos que se deben recuperar o enviar. Nombre del archivo en la máquina remota que se debe recuperar o enviar. el siguiente mandato de UNIX copia un archivo a otro archivo en un directorio diferente: cp /nombre_vía_acceso/nombre_archivo1 /nombre_vía_acceso2/nombre_archivo2 Propiedades del enlace de salida La tabla siguiente lista las propiedades del enlace de salida en el editor de cuadrícula: Tabla 9. Por ejemplo. un nivel de rastreo de 3 significa que se añadirán las propiedades del enlace y los mensajes de rendimiento en el registro. Etapas de trabajo de servidor 77 . Controla el tipo de información de rastreo que se añade al registro. Por ejemplo.

Para transferir datos en modalidad binaria.Para los datos delimitados. Para los datos de anchura fija. esto significa el número de columnas. Se leerán los datos hasta que se agoten los metadatos.Tabla 9. esto significa el total de la longitud de las columnas más los espacios. Propiedades del enlace de salida (continuación) Solicitud Tipo de representación de datos Tipo Lista Predeterminada ASCII Descripción Necesario. Debe establecer las "Columnas de anchura fija" en Sí. Si se establece en No. Para la representación binaria. Para la representación ASCII. los datos se transfieren en bits continuos como datos IMAGE. el final de la fila viene determinado por la secuencia de fin de la línea [CR] [LF] 78 Guía del desarrollador de Server Job . sobre todo para archivos de texto. la transferencia de datos utiliza el NVT-ASCII estándar. Nota: La modalidad binaria no se soporta cuando la etapa se ejecuta en el lienzo paralelo. utilice los tipos de datos binarios o varbinarios con el "Tipo de representación de datos" fijado en ASCII. Controla cómo se leen o se graban los datos del archivo remoto. Comprobar datos con metadatos Lista No Establezca Sí para utilizar definiciones de metadatos a fin de leer datos del archivo remoto en lugar de utilizar un terminador de línea para identificar el final de una fila.

El número de espacios entre las columnas de anchura fija en el archivo remoto. Propiedades del enlace de salida (continuación) Solicitud Finalización de línea Tipo Lista Predeterminada [CR] [LF] (Terminación de estilo DOS) Descripción Especifica la secuencia de terminación de fila (fin de la línea) en el archivo remoto. Es necesario si "Columnas con anchura fija" está establecido en No. El delimitador que separa los campos de datos en el archivo remoto. (coma) Carácter de comillas Char " (comillas dobles) Capítulo 4. Es necesario si "Columnas con anchura fija" está establecido en Sí. Si las "Columnas de anchura fija" se establecen en Sí y el "Tipo de representación de datos" se establece en ASCII. Espacios entre columnas Largo 0 Delimitador de columna Char . Si las "Columnas de anchura fija" se establecen en No.Tabla 9. Puede entrar un único carácter sin comillas o el valor ASCII del carácter que desea utilizar. Si se establece en "Ninguna terminación". "Comprobar datos con metadatos" debe estar fijado en Sí. Opcional y válido solamente si "Columnas con anchura fija" está establecido en No. También puede entrar el valor ASCII para el carácter que desee utilizar. los valores válidos son sin terminación ni [CR] [LF] (terminador de estilo DOS). Columnas de anchura fija Serie No Necesario. Etapas de trabajo de servidor 79 . Puede suprimir "Carácter de comillas" si no entra ningún valor. utilice el valor [CR] [LF]. El carácter único se utiliza para incluir un valor de datos que contiene un carácter delimitador como datos. Indica si los datos del archivo remoto pueden estar con columnas de anchura fija.

Serie vacía Serie Ninguno Nombres de columnas de la Serie primera línea No Mandato anterior (Before) de Telnet Serie Ninguno Mandato posterior (After) de Telnet Serie Ninguno Modalidad de conexión de datos de FTP Lista Activa 80 Guía del desarrollador de Server Job . el servidor FTP inicia las conexiones. Es necesario si "Tipo de representación de datos" está establecido en ASCII. las conexiones se inician desde el sistema principal donde se ha instalado la capa de motor. es posible que contenga nombres de columnas). Especifica el proceso que inicia la conexión para la transferencia de datos.Tabla 9. El mandato de Telnet que se debe ejecutar en la máquina remota antes de iniciar un trabajo. Opcional. Si se establece en Pasiva. Propiedades del enlace de salida (continuación) Solicitud Carácter de escape Tipo Char Predeterminada \ (barra inclinada invertida) Descripción Necesario. Permite almacenar archivos en sistemas principales que se encuentran fuera del cortafuegos basado en un router. Opcional. Si se establece en Activa. Especifica si se debe transferir la primera línea al archivo remoto (es decir. Especifica la serie que debe interpretarse como el valor vacío de SQL. Opcional. El único carácter entrado para ser interpretado como el carácter de escape. Especifica el mandato de Telnet que debe ejecutarse en la máquina remota después de completar un trabajo.

la etapa configura automáticamente un número de puerto disponible para el usuario. un nivel de rastreo de 3 significa que se añadirán las propiedades del enlace y los mensajes de rendimiento en el registro. Longitud del Largo almacenamiento intermedio 4096 Necesario. Los niveles de rastreo disponibles son: 0 Ningún rastreo 1 Propiedades de enlace 2 Rendimiento 4 Mensajes de FTP 8 Mensajes de Telnet 16 Rastreo de función 32 Volcado de datos de Telnet Puede combinar los niveles de rastreo. Establece la longitud (en fragmentos superiores a 512 bytes) de los almacenamientos intermedios de recepción y de envío del FTP para filas de datos antes de ser enviadas o recuperadas. Si no especifica un valor o dicho valor es 0. Si especifica un valor. El número de puerto exclusivo en el que se reciben datos desde el servidor FTP de la máquina remota. consulte el protocolo de transferencia de archivos (FTP) 959 RFC estándar. Para obtener más información acerca del modelo de FTP. Controla el tipo de información de rastreo que se añade al registro. Capítulo 4. El servidor FTP de la máquina remota se conecta a este puerto para transferir el archivo remoto. Etapas de trabajo de servidor 81 . Propiedades del enlace de salida (continuación) Solicitud Puerto de datos de FTP Tipo Lista Predeterminada Ninguno Descripción Opcional. éste debe estar entre el 1025 y el 4999. Por ejemplo.Tabla 9. Nivel de rastreo de enlace Largo 0 Opcional.

v La secuencia de datos recibida del host remoto se analiza en filas de datos explorando los datos para la secuencia de fin de la línea [CR] [LF]. Representación de datos binaria para los enlaces de salida. Los datos se envían desde la máquina remota como bits contiguos sin conversión de caracteres. ASCII o EBCDIC. El remitente (host remoto) convierte los datos de su representación en caracteres internos. v La secuencia de datos recibida de la máquina remota se analiza en filas de datos determinando la longitud total de la fila. es decir. v El servicio FTP se configura para el tipo de representación IMAGE. Si establece Tipo de representación de datos en ASCII: v El servicio FTP se configura para el tipo de representación ASCII. Consulte la propiedad de entrada Tipo de representación de datos y la propiedad de salida Tipo de representación de datos. La longitud de la fila se calcula mediante la acumulación de la anchura de cada columna y los valores asociados con Espacios entre columnas y Finalización de línea. El formato depende del valor de Columnas de anchura fija. los datos se truncan a la anchura de columna de los metadatos y se muestra un mensaje de aviso. v Los datos de columna (por fila) se colocan en una fila formateada. consulte el protocolo de transferencia de archivos (FTP) 959 RFC estándar. la fila se analiza en columnas explorando en busca del delimitador de columna. Para obtener más información sobre la representación de datos y el almacenamiento FTP. Representación de datos binaria para los enlaces de entrada.Representación de datos ASCII o binaria Representación de datos ASCII para los enlaces de salida. los metadatos de columna determinan los tamaños de archivo. los datos se colocan en un almacenamiento intermedio de caracteres. Los metadatos de columna determinan el tamaño asignado por columna. v La fila de datos se continúa analizando en datos de columna. Si se establece en Sí. 82 Guía del desarrollador de Server Job . Si establece Tipo de representación de datos en Binaria: v Columnas de anchura fija debe establecerse en Sí. Representación de datos ASCII para los enlaces de entrada. v La fila de datos se continúa analizando en datos de columna utilizando las mismas propiedades y metadatos. separador por el delimitador de la columna configurada. Si establece Tipo de representación de datos en ASCII: v El servicio FTP se configura para el tipo de representación ASCII. v El servicio FTP se configura para el tipo de representación IMAGE. Si los datos de columna son mayores que la anchura de columna. a la representación NVT-ASCII estándar. Si se establece en No. v Los datos de columna por fila se colocan en un almacenamiento intermedio de caracteres. Si los datos de columna son mayores que la anchura de columna. Si se establece en Sí. v Se añaden los caracteres de terminación [CR] [LF] a cada fila de datos. los datos se truncan a la anchura de columna de los metadatos y se muestra un mensaje de aviso. los datos se colocan en un almacenamiento intermedio de caracteres. Si se establece en No. El destinatario (host remoto) convierte los datos del formato ASCII a su propio formato interno. Los datos se envían como bits contiguos sin conversión de caracteres. El método de análisis utilizado depende del valor de Columnas de anchura fija. Los metadatos de columna determinan el tamaño asignado por columna. Si establece Tipo de representación de datos en Binaria: v Columnas de anchura fija debe establecerse en Sí. Nota: La modalidad binaria no está soportada en el lienzo del servidor paralelo. Los datos se envían a la máquina remota para almacenarse como un archivo de texto.

Los archivos temporales generados por esta etapa se colocan en el directorio especificado por la variable de entorno TEMP. Este recuadro de diálogo tiene tres páginas: v Etapa. Capítulo 4. La etapa espera que el enlace de salida utilice los mismos metadatos que los enlaces de entrada. aparece el recuadro de diálogo Etapa Link Collector. a continuación. Esta página tiene un separador General que contiene una descripción opcional de la etapa y los nombres de las rutinas anterior y posterior. Utilice el cliente del Administrador para establecer la variable TEMP en cada proyecto. Utilización de una etapa Link Collector Cuando edita una etapa Link Collector. ya sea a nivel de proyectos utilizando el cliente del Administrador o a nivel de trabajos en el recuadro de diálogo Propiedades del trabajo. debe tener activado el almacenamiento intermedio entre procesos. Nota: La modalidad binaria no está soportada en el lienzo del servidor paralelo. La etapa Link Collector es una etapa activa que utiliza hasta 64 entradas y permite recopilar datos de los enlaces y direccionarlos a un enlace de salida individual. Muestra el nombre de la etapa que se está editando. La etapa Link Partitioner particiona los datos y los procesa en paralelo y. Para conocer las ventajas. La etapa Link Collector puede utilizarse con una etapa Link Partitioner para aprovechar un sistema multiprocesador y procesar los datos en paralelo. Etapas Link Collector En estos temas se describe cómo utilizar una etapa Link Collector en el diseño del trabajo. consulte “Trabajos y procesos de IBM InfoSphere DataStage” en la página 5 para ver cómo se ejecutan los trabajos de IBM InfoSphere DataStage como procesos. Etapas de trabajo de servidor 83 . la etapa Link Collector vuelve a recopilarlos conjuntamente antes de grabarlos en un único destino. El siguiente diagrama ilustra cómo puede utilizarse la etapa Link Collector en un trabajo de la siguiente manera: Para que este trabajo pueda compilarse y ejecutarse según lo previsto en un sistema multiprocesador.v Se añaden los caracteres de terminación especificados por Finalización de línea a cada fila de datos y se envían a la máquina remota. Consulte la propiedad de entrada Tipo de representación de datos y la propiedad de salida Tipo de representación de datos.

Los cambios se guardan cuando se guarda el trabajo. Un código de retorno 0 de la rutina indica que ha resultado satisfactoria y cualquier otro código indica que la rutina ha resultado anómala y provoca un error muy grave cuando se ejecuta el trabajo. que se ejecutan antes o después de que la etapa haya procesado los datos. Define cómo se sabe que se va a ordenar cada uno de los conjuntos de datos particionados y cómo se ordenará la salida fusionada. es posible que el campo Subrutina anterior a la etapa o Subrutina posterior a la etapa haga referencia a una rutina que no exista en el sistema. Subrutinas anteriores y posteriores a la etapa El separador General de la página Etapa contiene campos opcionales que permiten definir las rutinas que se van a utilizar. Elija entre: – Iteración cíclica. v Subrutina posterior a la etapa y Valor de entrada. Si ha instalado o importado un trabajo. Seleccione una rutina en la lista. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. la etapa lee diversas entradas ordenadas y graba una sola salida ordenada.Para obtener más información sobre estas rutinas. – Ordenar/Fusionar. La clave tiene el formato siguiente: Nombre_columna {orden_clasificación] [. Por ejemplo. Por ejemplo. consulte “Subrutinas anteriores y posteriores a la etapa”. Utilizando el método de ordenar/fusionar. También tiene un separador Propiedades que permite especificar propiedades que afectan al comportamiento de la etapa. Pulse Aceptar para cerrar este recuadro de diálogo. Utilizando el método de iteración cíclica. se puede especificar una rutina que envíe un mensaje electrónico cuando la etapa haya finalizado. v Algoritmo de colección. v Entradas. v Clave de orden. v Salidas. Definición de propiedades de la etapa Link Collector El separador Propiedades permite especificar dos propiedades para la etapa Link Collector. Especifica las definiciones de columna para los enlaces de entrada de datos. un mensaje de aviso le recordará que debe compilar la rutina cuando cierre el recuadro de diálogo Etapa Link Collector. Si elige una rutina definida en el repositorio. Nombre_columna especifica una o varias columnas que se deben ordenar. orden_clasificación define el orden de clasificación de la siguiente manera: 84 Guía del desarrollador de Server Job .. En tal caso. aparecerá un mensaje de aviso cuando cierre el recuadro de diálogo Etapa Link Collector. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar. Especifica las definiciones de columna para el enlace de salida de datos. se puede especificar una rutina que prepare los datos antes de que se inicie el proceso. Utilice esta propiedad para especificar el método que utiliza la etapa para recopilar datos. consulte “Definición de propiedades de la etapa Link Collector”.Nombre_columna [orden_clasificación]].. que se ha editado pero que no se ha compilado. Para obtener detalles. v Subrutina anterior a la etapa y Valor de entrada. Esta propiedad sólo es significativa si ha seleccionado un algoritmo de colección de Ordenar/Fusionar. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. Esta lista contiene todas las rutinas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. Este es el método predeterminado. la etapa lee una fila de cada enlace de entrada consecutivamente.

La lista Nombre de entrada de la página Entradas permite seleccionar cuál de los 64 enlaces está buscando. v Columnas. Etapas de trabajo de servidor 85 . La etapa Link Partitioner es una etapa activa que utiliza una entrada y permite distribuir las filas particionadas entre un máximo de 64 enlaces de salida. También puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Guardar esta en el repositorio si es necesario). El convenio de clasificación predeterminado se establece en el cliente del Administrador. y a la vez coincidir con los metadatos del enlace de salida. La etapa espera que los enlaces de salida utilicen los mismos metadatos que el enlace de entrada. Tenga en cuenta que los metadatos de todos los enlaces de entrada deben ser idénticos. La página Entradas tiene dos separadores: v General. El separador General permite especificar una descripción opcional de la etapa. Definición de datos de salida de etapa Link Collector La etapa Link Collector puede tener un enlace de salida. Etapas Link Partitioner En estos temas se describe cómo utilizar una etapa Link Partitioner en el diseño del trabajo. v Columnas. el convenio de clasificación del entorno local afectar al orden de clasificación. Por ejemplo: FIRSTNAME d. Definición de datos de entrada de etapa Link Collector La etapa Link Collector puede tener hasta 64 enlaces de entrada. Tenga en cuenta que los metadatos del enlace de salida deben ser idénticos a los metadatos de los enlaces de entrada. pero puede establecerse para trabajos individuales en el recuadro de diálogo Propiedades del trabajo. El separador Columnas contiene las definiciones de columna para los datos en los enlaces de entrada. v General. Capítulo 4. Puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Guardar esta en el repositorio si es necesario). Aquí es donde llegan los datos que se van a recopilar. SURNAME D Especifica que las filas se ordenan según la columna FIRSTNAME y la columna SURNAME en orden descendente. La página Salidas tiene dos separadores: General y Columnas. El separador General permite especificar una descripción opcional de la etapa. Normalmente se rellena con los metadatos de las etapas que se conectan en el lado de la entrada.Orden ascendente a asc ascendente A ASC ASCENDING Orden descendente d dsc descendente D DSC DESCENDING En un entorno de soporte multilingüístico. El separador Columnas contiene las definiciones de columna para los datos en el enlace de salida.

v Salidas. También tiene un separador Propiedades que permite especificar propiedades que afectan al comportamiento de la etapa. 86 Guía del desarrollador de Server Job . Para obtener más información sobre estas rutinas. Los cambios se guardan cuando se guarda el trabajo. consulte “Trabajos y procesos de IBM InfoSphere DataStage” en la página 5 para ver cómo se ejecutan los trabajos de IBM InfoSphere DataStage como procesos. Pulse Aceptar para cerrar este recuadro de diálogo. Para que este trabajo pueda compilarse y ejecutarse según lo previsto en un sistema multiprocesador. Este recuadro de diálogo tiene tres páginas: v Etapa. Para conocer las ventajas. Utilización de una etapa Link Partitioner Cuando edita una etapa Link Partitioner. El siguiente diagrama ilustra cómo puede utilizarse la etapa Link Partitioner en un trabajo de la siguiente manera. Especifica las definiciones de columna para los enlaces de salida de datos. Los archivos temporales generados por esta etapa se colocan en el directorio especificado por la variable de entorno TEMP. consulte “Definición de propiedades de la etapa Link Partitioner” en la página 87. debe tener activado el almacenamiento intermedio entre procesos. ya sea a nivel de proyectos utilizando el cliente del Administrador o a nivel de trabajos en el recuadro de diálogo Propiedades del trabajo. Muestra el nombre de la etapa que se está editando. Utilice el cliente del Administrador para establecer la variable TEMP en cada proyecto. consulte “Subrutinas anteriores y posteriores a la etapa”. Especifica las definiciones de columna para el enlace de entrada de datos. Puede utilizarse con la etapa Link Collector para particionar datos. Para obtener detalles.El particionamiento de los datos permite aprovechar las ventajas de un sistema multiprocesador y procesar los datos en paralelo. v Entradas. aparece el recuadro de diálogo Etapa Link Partitioner. procesarlos en paralelo y volver a recopilarlos conjuntamente antes de grabarlos en un único destino. Subrutinas anteriores y posteriores a la etapa El separador General de la página Etapa contiene campos opcionales que permiten definir las rutinas que se van a utilizar que se ejecutan antes o después de que la etapa haya procesado los datos. Esta página tiene un separador General que contiene una descripción opcional de la etapa y los nombres de las rutinas anterior y posterior.

Definición de propiedades de la etapa Link Partitioner El separador Propiedades permite especificar dos propiedades para la etapa Link Partitioner. Seleccione una rutina en la lista. Si ha instalado o importado un trabajo. Mediante este método. Estas claves se concatenan y se aplica una función hash para determinar el enlace de salida de destino. v Clave de particionamiento. Para el algoritmo Módulo. que se ha editado pero que no se ha compilado. un mensaje de aviso le recordará que debe compilar la rutina cuando cierre el recuadro de diálogo Etapa Link Partitioner. la etapa aplica una función de módulo a un valor de columna de entrada entero para determinar a qué enlace de salida se pasa la fila. El valor de esta columna determina el enlace de salida de destino. es posible que el campo Subrutina anterior a la etapa o Subrutina posterior a la etapa haga referencia a una rutina que no exista en el sistema. Esta propiedad sólo es significativa si ha seleccionado un algoritmo de particionamiento Hash o Módulo. – Módulo. Para el algoritmo Hash. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. la etapa utilizará un generador de números aleatorios para distribuir filas entrantes equitativamente entre todos los enlaces de salida. Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. la etapa grabará cada fila entrante en uno de los enlaces de salida sucesivamente. El separador General permite especificar una descripción opcional de la etapa. Este es el método predeterminado. v Columnas. El separador Columnas contiene las definiciones de columna para los datos en el enlace de entrada. Un código de retorno 0 de la rutina indica que ha resultado satisfactoria y cualquier otro código indica que la rutina ha resultado anómala y provoca un error muy grave cuando se ejecuta el trabajo. Utilizando el método de iteración cíclica. – Hash. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar. La página Entradas tiene dos separadores: v General. Aquí es donde llegan los datos que se van a particionar. En tal caso. Definición de datos de entrada de etapa Link Partitioner La etapa Link Partitioner puede tener un enlace de entrada. especifique uno o varios nombres de columna separados por comas. especifique un solo nombre de columna que identifique una columna numérica de entero. Por ejemplo. Por ejemplo. v Algoritmo de particionamiento. Normalmente se rellena con los metadatos de la etapa que se conecta en el lado de la entrada. aparecerá un mensaje de aviso cuando cierre el recuadro de diálogo Etapa Link Partitioner. Etapas de trabajo de servidor 87 . se puede especificar una rutina que prepare los datos antes de que se inicie el proceso. Mediante este método. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. se puede especificar una rutina que envíe un mensaje electrónico cuando la etapa haya finalizado. Mediante este método. la etapa aplica una función hash a uno o varios valores de columna de entrada para determinar a qué enlace de salida se pasa la fila. v Subrutina posterior a la etapa y Valor de entrada. Si elige una rutina definida en el repositorio. Utilice esta propiedad para especificar el método que utiliza la etapa para particionar datos. También puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Capítulo 4. Elija entre: – Iteración cíclica. Esta lista contiene todas las rutinas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. – Aleatorio.v Subrutina anterior a la etapa y Valor de entrada.

Debe especificar: v Los directorios del archivo de entrada y el archivo de trabajo. no tiene enlaces de entrada. De esta forma. Consulte “El separador Correlación” en la página 94. v El formato del archivo de entrada. Utilice la interfaz gráfica de usuario (GUI) para definir la operación de unión que se utiliza para fusionar dos archivos. Consulte Nivel de rastreo. Consulte Separadores Columnas del primer y del segundo archivo. y la información del archivo de registro. Etapas Merge La etapa Merge permite combinar dos archivos secuenciales en uno o varios enlaces de salida. Consulte “El separador Columnas” en la página 95. Definición de datos de salida de etapa Link Partitioner La etapa Link Partitioner puede tener hasta 64 enlaces de salida. Los datos particionados fluyen entre estos enlaces. La lista Nombre de salida de la página Salidas permite seleccionar cuál de los 64 enlaces está buscando. Merge. v Dónde se guarda la información de la columna. v Los nombres de los archivos que se van a fusionar. El separador General permite especificar una descripción opcional de la etapa. los metadatos son idénticos para todos los enlaces de salida. Consulte El separador General. v El contenido de las columnas de salida. Tenga en cuenta que los metadatos del enlace de salida deben ser idénticos a los metadatos del enlace de entrada. v Las columnas el archivo de entrada. Los dos archivos de entrada que se fusionarán deben ser archivos de texto secuenciales. Consulte “Especificación de columnas de salida” en la página 94. se proporciona una serie de tareas necesarias para fusionar dos archivos. La página Salidas tiene dos separadores: v General. Consulte “Separador Propiedades de archivo de entrada” en la página 91. Utilización de la etapa Merge A continuación. v Soporte para soporte multilingüístico sólo en la modalidad automática. v El nombre y el formato de las columnas de archivo de salida. v El nivel de rastreo.Guardar esta en el repositorio si es necesario). Puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Guardar esta en el repositorio si es necesario). una etapa pasiva. v Las claves de la unión. v Elección entre varios tipos de uniones diferentes. Consulte “El separador General de la página Etapa” en la página 89. Consulte El recuadro de diálogo Guardar definición de tabla. Funcionalidad Merge stage La etapa Merge da soporte a la siguiente funcionalidad: v Combinación de dos archivos de texto secuenciales. Consulte Tipo de unión. 88 Guía del desarrollador de Server Job . v El tipo de unión. pero tiene al menos un enlace de salida. que se muestran en el orden en el que deben ejecutarse. Tenga en cuenta que los metadatos del enlace de entrada deben ser idénticos a los metadatos de los enlaces de salida. El separador Columnas contiene las definiciones de columna para los datos en el enlace de salida. v Columnas.

Si pulsa .. El nombre del directorio predeterminado seleccionado. v Nombre de archivo (o patrón). La vía de acceso y el directorio del primer archivo secuencial.Las propiedades de la etapa se graban en el archivo de registro El valor predeterminado es 0. v Nivel de rastreo..El separador General de la página Etapa El separador General de la página Etapa define los directorios del archivo de entrada y el archivo de trabajo.. El separador General contiene los campos siguientes: v Vía de acceso del directorio del primer archivo. se abre el recuadro de diálogo Seleccionar desde servidor. Si pulsa . se muestran todos los archivos. v . (Botón Examinar). El separador Soporte multilingüístico sólo aparece si ha instalado el soporte multilingüístico. se abre el recuadro de diálogo Seleccionar desde servidor. se abre el recuadro de diálogo Seleccionar desde servidor. Define la correlación de juego de caracteres predeterminada para el proyecto o el trabajo. Estos archivos temporales se crean cuando se está ejecutando el trabajo y se suprimen cuando finaliza el trabajo. Pulse la flecha hacia abajo para ver dónde está actualmente ubicado dentro de la jerarquía del directorio.. v Nombres de directorio o archivo. v . se abre el recuadro de diálogo Seleccionar desde servidor. v Vía de acceso del directorio del segundo archivo... v .. Si pulsa . Una lista de nombres de directorios o archivos en el directorio de Buscar en.... Capítulo 4.. Consulte “Recuadro de diálogo Seleccionar desde servidor”. Los campos siguientes se encuentran en el recuadro de diálogo Seleccionar desde servidor: v Buscar en.). Puede especificar los siguientes niveles de rastreo: – 0 . v Directorio temporal. Realice esta tarea desde el separador Soporte multilingüístico en la página Etapa. Consulte “Recuadro de diálogo Seleccionar desde servidor”. Nota: También puede incluir un parámetro de trabajo en la vía de acceso del directorio.. y la información del archivo de registro. El tipo de información que debe incluirse en el archivo de registro de trabajo. Recuadro de diálogo Seleccionar desde servidor Si pulsa Examinar (botón . La vía de acceso y el directorio del segundo archivo secuencial. Puede cambiar la correlación seleccionando un nombre de correlación de la lista.No se graba información en el archivo de registro – 1 .. De forma predeterminada. Etapas de trabajo de servidor 89 . v Archivos del tipo.. Definición de la correlación de juego de caracteres Puede definir una correlación de juego de caracteres para una etapa. Descripción opcional de las propiedades de la etapa. Nombre del archivo o patrón seleccionado. (Botón Examinar). La vía de acceso completa y el directorio en el que se almacenan los archivos temporales. La expresión de nombre de archivo. v Mostrar todas las correlaciones. Especifique la información mediante los siguientes campos: v Correlacionar el nombre que debe utilizarse con la etapa. (Botón Examinar). El valor predeterminado es el directorio de trabajo actual. v Descripción.... Muestra una lista de todas las correlaciones transferidas con InfoSphere DataStage. Consulte “Recuadro de diálogo Seleccionar desde servidor”.

La serie #Parám# se sustituye por el parámetro de trabajo cuando se ejecuta el trabajo. La vía de acceso del directorio y el nombre de archivo del primer archivo que se debe fusionar. Nota: El botón Columnas. incluida la correlación de juego de caracteres El separador General Si selecciona la página Salida.v Sólo correlaciones cargadas. No obstante. Si no lo hace. Habilita la correlación de juegos de caracteres por columna. Desplácese en la lista de propiedades hasta que llegue a Espacio máximo en VM para la Hash Table. 90 Guía del desarrollador de Server Job . Definición de propiedades de salida El separador Salida del recuadro de diálogo Etapa MERGE permite especificar propiedades para el enlace de salida. Vaya al separador Propiedades de la página Salida.. pulse con el botón derecho del ratón sobre el icono Fusionar en el lienzo y seleccione Estilo de cuadrícula. 512. El separador General contiene los campos siguientes: v Nombre del primer archivo. Las propiedades de salida describen las distintas características de los archivos de entrada y el enlace de salida. incluida la correlación de juegos de caracteres v v v v v Información de columna que se va a guardar en una tabla Tipo de operación de unión que se va a realizar Teclas utilizadas en operación de unión Contenido de las columnas en el enlace de salida Nombres de columna y formatos en el enlace de salida. Aparece el editor de estilo de cuadrícula. elabora un listado de las columnas en el enlace de salida y sólo se incluye por motivos de compatibilidad con otras etapas... Este archivo debe ser un archivo de texto secuencial.. Para acceder a Espacio máximo en VM para la Hash Table. v Permitir correlación por columnas. debe establecer el valor de Espacio máximo en VM para la Hash Table en su valor máximo. v Utilizar parámetro de trabajo. debe cambiar el valor de la propiedad Espacio máximo en VM para la Hash Table si desea alojar archivos de entrada extremadamente grandes. El valor predeterminado de Espacio máximo en VM para la Hash Table es 12. Especifica los valores de los parámetros para el trabajo.. Cuando aumenta el tamaño del mayor de los dos archivos de entrada. Para los archivos de 2 GB o más. de la siguiente manera: v Nombres del primer y del segundo archivo de entrada v Nivel de rastreo del enlace de salida v Formato del primer y del segundo archivo de entrada v Nombres de columna y características del primer y del segundo archivo de entrada. También puede incluir un parámetro de trabajo en la vía de acceso del directorio. Este valor es adecuado para muchos tamaños de archivo. debe aumentar el valor de Espacio máximo en VM para la Hash Table. Ajuste del tamaño del archivo de entrada La etapa Merge da soporte a los archivos de 64 bits. donde Parám es el nombre del parámetro de trabajo. Las columnas de un registro pueden utilizar distintas correlaciones dentro de los metadatos. se abrirá el separador General. Muestra una lista de las correlaciones que están cargadas en ese momento. se produce una terminación anómala de los trabajos. Utilice el formato #Parám#.

Las propiedades del enlace de salida se graban en el archivo de registro Separador Propiedades de archivo de entrada Debe especificar el formato de archivo del primer y el segundo archivo de entrada. El nivel de rastreo especifica el tipo de información que debe incluirse en el archivo de registro de trabajo. Indica si el archivo tiene columnas de anchura fija. También puede incluir un parámetro de trabajo en la vía de acceso del directorio. El valor predeterminado es sin seleccionar. Conjunto completo Sólo derecha e izquierda A OR B A NOR B Unión externa izquierda A Unión externa derecha B Sólo izquierda A NOT B Sólo derecha B NOT A v Nivel de rastreo. Fusiona todas las filas del segundo archivo excepto las filas con el mismo valor clave en el primer archivo (A). v La primera línea son nombres de columna. pulse el separador Propiedades de archivos de entrada en la página Salida. Se abre la página Formato de primer archivo delante de la página Propiedades de archivos de entrada. Este archivo debe ser un archivo de texto secuencial. Fusiona todas las filas del primer archivo (A) con filas del segundo archivo (B) con el mismo valor clave. Los campos y los recuadros de selección son idénticos para el segundo archivo. se describe cada campo y recuadro de selección de las páginas Formato de primer archivo o Formato de segundo archivo: Primer y segundo separador de Formato de archivo: v Columnas de anchura fija. v Tipo de unión. El valor predeterminado es sin seleccionar.v Nombre del segundo archivo. Indica si la primera línea del primer archivo secuencial contiene nombres de columna. Fusiona todas las filas del primer archivo excepto las filas con el mismo valor clave en el segundo archivo (B). Para especificar el formato de archivo. Indica si se deben utilizar definiciones de metadatos para leer datos desde un archivo en lugar de utilizar un terminador de línea para el final de una fila. Fusiona todas las filas de los dos archivos excepto aquellas filas con los mismos valores clave. Especifica un nivel de rastreo para el enlace de salida. Etapas de trabajo de servidor 91 . Para especificar el formato del segundo archivo de entrada. La vía de acceso del directorio y el nombre de archivo del segundo archivo que se debe fusionar. Fusiona todas las filas de los dos archivos. Puede especificar los siguientes niveles de rastreo: – 0 . Puede elegir uno de los siguientes tipos de operación de unión: Tipo de unión Unión interna pura Operación A AND B Descripción Sólo fusiona aquellas filas que tienen los mismos valores clave en ambos archivos de entrada.No se graba información en el archivo de registro – 1 . Capítulo 4. Se leerán los datos hasta que se agoten los metadatos. v Comprobar datos con metadatos. El tipo de unión que desea efectuar entre dos archivos de entrada. Fusiona todas las filas del segundo archivo (B) con filas del primer archivo (A) con el mismo valor clave. A continuación. pulse el separador Formato de segundo archivo.

capacidad de nulos y visualización de la columna v Correlación de juego de caracteres utilizada para la columna Pulse el separador Columnas de primer archivo o Columnas de segundo archivo de la página Propiedades de archivos de entrada Se abrirá la página Columnas de primer archivo o Columnas de segundo archivo. De forma predeterminada. Separadores Columnas del primer y del segundo archivo: Acerca de esta tarea Mediante las páginas Columnas de primer archivo y Columnas de segundo archivo puede especificar lo siguiente: v Nombres de columnas del primer y del segundo archivo de entrada secuencial v Características del archivo secuencial. Las definiciones de tabla especifican los datos utilizados en cada etapa de un trabajo de InfoSphere DataStage y se almacenan en el repositorio. Especifica la serie utilizada para el valor nulo de SQL. v Carácter de escape. longitud. Tiene dos opciones para entrar información sobre las columnas: v Puede utilizar información de una tabla existente para especificar las columnas de archivo de entrada. El valor predeterminado es \ (barra inclinada invertida). No existe ningún valor predeterminado. Puede suprimir el Carácter de cita si no entra ningún valor. De forma predeterminada. 92 Guía del desarrollador de Server Job . esto significa el número de columnas. v Espacios entre columnas. v Estilo Unix (LF). el final de la fila se determina por la secuencia de fin de la línea. – Si se borra. Especifica el número de espacios entre columnas en un archivo secuencial con columnas de anchura fija. v Delimitador. escala. v Puede entrar la información sobre la columna manualmente. v Carácter de cita. El valor predeterminado es . Especifica si se utiliza una combinación de retorno de carro y de caracteres de avance de línea para indicar la secuencia de fin de la línea en el archivo de entrada. El valor predeterminado es " (comillas dobles). Especifica si se utiliza un carácter de avance de línea para indicar la secuencia de fin de la línea en un archivo de entrada. Todos los valores con una longitud del 1 al 2 se tratarán como series. no se selecciona la opción Ninguno.– Para los datos de anchura fija. Especifica si debe utilizarse un terminado de fin de la línea. Especifica el delimitador que separa los campos de datos del archivo. El valor predeterminado es 0. incluyendo tipo de SQL. v Ninguna. (coma). Puede entrar un único carácter sin comillas o el valor ASCII del carácter que desea utilizar. Cómo utilizar la información de la columna de una tabla existente: Acerca de esta tarea Puede utilizar información de una tabla existente para definir las columnas en el primer o el segundo archivo de entrada. Especifica el carácter que se utiliza para incluir un valor de datos que contiene el carácter delimitador como datos. También puede entrar el valor ASCII de tres dígitos para el carácter que desee utilizar. – Para los datos delimitados. De forma predeterminada. v Serie vacía. Especifica un único carácter para que sea interpretado como un carácter de escape. no se selecciona Estilo Unix (LF). Puede entrar "097" para "a". Esta opción está habilitada si se ha borrado Columnas de anchura fija. El valor predeterminado es sin seleccionar. esto significa el total de la longitud de las columnas más los espacios. Esta opción está habilitada si se ha borrado Columnas de anchura fija. v Estilo Dos (CR LF). no se selecciona Estilo Dos (LF). Ninguno estará habilitado si se ha seleccionado Columnas de anchura fija y Comprobar datos con metadatos. Esta opción está habilitada si se ha borrado Columnas de anchura fija.

v Lista de nombres de columna.. Utilice el ratón para seleccionar la definición de tabla en el panel izquierdo y pulse Aceptar. El tipo de fuente de datos puede ser una fuente de datos ODBC. Si no sabe la definición de tablas. 3. Constituye la segunda parte del identificador de la definición de tabla y proporciona el nombre creado bajo la ramificación de tipo de fuente de datos. pulse Buscar. 2.. pulse Guardar. El recuadro de diálogo Guardar definición de tabla contiene los campos siguientes: v Tipo de fuente de datos. No existe ningún valor predeterminado. Modificar. v Visualización. El valor predeterminado es 0. puede grabar dicha información en una tabla nueva. Especifica los nombres de cada columna en el primer o en el segundo archivo. La definición de tabla se almacena de acuerdo con la fuente de datos en la ramificación Definiciones de tabla. v Nombre de la fuente de datos. Capítulo 4. Para guardar la información de columna en una tabla. Las tablas listadas ya están definidas en el repositorio. un archivo hash (UniVerse). es el número de dígitos de precisión. Insertar Antes. una tabla de UniVerse. Es la longitud de los datos CHAR o la longitud máxima de los datos VARCHAR. Aparecerá el recuadro de diálogo Buscar. Entre un nombre de columna en Lista de nombres de columna y utilice los botones de Acciones de columna (Añadir. No existe ningún valor predeterminado. Pulse Cargar. Define la precisión de los datos. El recuadro de diálogo Guardar definición de tabla: Una vez haya especificado los nombres de las columnas y la correspondiente información necesaria.. En el campo Texto de búsqueda. Si se trata de datos numéricos. a. El valor predeterminado es el nombre del enlace. Estos nombres se utilizan en la página Correlación que define el enlace de salida. Especifica el número máximo de caracteres necesarios para visualizar los datos de la columna. El tipo de datos grabado en la tabla. entre una serie de texto. Si se trata de datos numéricos. Aparecerá el recuadro de diálogo Definición de tabla. Facilita un medio para realizar un seguimiento de dónde se ha originado la definición de datos. El valor predeterminado es 0. La primera definición de tabla que contiene la serie de texto especificada por el usuario aparece resaltada en el panel izquierdo. El valor predeterminado es Sí. Eliminar o Eliminar todo) para especificar dónde colocar los nombres en la Lista de nombres de columna. Se abrirá el recuadro de diálogo Guardar definición de tabla. v Con posibilidades de nulos.. El valor predeterminado es 0. Especifica si la columna puede contener valores nulos. un archivo de UniData y un archivo secuencial o una etapa. Especifica una correlación diferente para la columna si se ha habilitado Correlación por columna (consulte “Definición de la correlación de juego de caracteres” en la página 89). Especifica el tipo de datos SQL. .Para transferir información sobre columnas de una tabla existente: Procedimiento 1. b. Etapas de trabajo de servidor 93 . El sistema le solicitará que entre la información que se describe a continuación. Una vez haya seleccionado el nombre del archivo. Entrada manual de información de columna: Acerca de esta tarea Puede entrar información sobre columnas manualmente especificando dicha información en la página Columnas del primer archivo. v Correlación de soporte multilingüístico. Especifica el factor de escala de los datos. . es el número de dígitos a la derecha del separador decimal... v Escala. pulse Aceptar. v Longitud. El valor predeterminado es Guardado. Seleccione una correlación de la lista. v Tipo de SQL..

Se abrirá el separador Correlación. Utilice la página Correlación para especificar el contenido de las columnas. Puede seleccionar varias columnas a la vez para arrastrarlas de la lista Nombres de columna del primer (o segundo) archivo a la lista Correlación de la columna de entrada. O bien. Acerca de esta tarea En la página Correlación. El nombre de la tabla o del archivo que contiene los datos. Especificación de claves para la unión: Acerca de esta tarea Seleccione claves del Primer (y el Segundo) Nombre de columna de archivos en la parte izquierda de la página y arrástrelos a la Primera (y a la Segunda) Clave de columna de archivos a la derecha. debe tener el mismo número de claves en las listas de la Primera clave de columna de archivos y en la Segunda clave de columna de archivos. El valor predeterminado es el nombre del enlace. El separador Correlación Debe especificar las claves en el primer y el segundo archivo de entrada secuencial para que se utilicen en la operación de unión. Para especificar el contenido de una columna en el enlace de salida.v Nombre de tabla/archivo. tal como se describe en “El separador Columnas” en la página 95. Especificación de columnas de salida: Debe especificar el contenido de las columnas que deben incluirse en el enlace de salida. pulse el separador Columnas y suprima las columnas tal como se describe en “El separador Columnas” en la página 95. El valor predeterminado es la hora y la fecha guardadas. Una descripción breve opcional de los datos. pulse el separador Correlación en la página Salida. 94 Guía del desarrollador de Server Job . los Nombres de columna del primer archivo y Nombres de columna del segundo archivo ya están definidos. v Descripción breve. selecciónela y pulse con el botón derecho del ratón Borrar entrada del menú de atajo. En la página Correlación. Una descripción explicativa opcional de los datos. Para suprimir columnas del enlace de salida. mantenga pulsada la tecla Mayús y pulse para seleccionar varias columnas. seleccione la primera columna y mantenga pulsada la tecla Control hasta que se hayan resaltado todas las columnas que desea. Si desea especificar de forma explícita los nombres y las propiedades de las columnas en el enlace de salida. Para especificar las claves. Puede pulsar el botón derecho del ratón para suprimir un elemento de la lista Correlación de la columna de entrada. Para suprimir una entrada que ha realizado. Estas claves se utilizan en la operación de unión para comparar dos archivos. seleccione una columna en el recuadro de lista Nombres de columna del primer archivo o Nombres de columna del segundo archivo y arrastre la columna a la lista Correlación de la columna de entrada. vaya a la página Columnas. El Nombre de columna de salida se genera automáticamente. Si utiliza varias claves. Se han definido en la página Propiedades de archivos de entrada. Para seleccionar varias columnas. Debe incluir una Clave de columna del primer archivo y una Clave de columna del segundo archivo en la Lista de columnas. Puede especificar varias claves para la operación de unión. debe especificar qué columnas de los archivos de entrada desea incluir en el enlace de salida. Las propiedades de las columnas en el enlace de salida se derivan de los del archivo de entrada. v Descripción explicativa.

v Escala. Supresión de columnas en el enlace de salida: Puede suprimir las columnas del enlace de salida.. Especifica que desea resumir utilizando esta columna. Tipo de SQL. Especifica el tipo de datos de la columna. especifica la correlación que se ejecuta para la columna. Debe ser Sí.Nota: Si cambia los Nombres de columna del primer archivo (o el segundo archivo) a la izquierda de la página. Si se habilita la correlación por columnas. También puede utilizar el separador Columnas para especificar una correlación de juegos de caracteres diferente para la columna. Etapas de trabajo de servidor 95 . tal como se describe en Tipo de unión. Clave. Derivación. puede suprimir las columnas que ha definido en el enlace de salida. Especifica el nombre de la columna cuyo formato está definiendo. es el número de dígitos de precisión. 2. v Correlación de soporte multilingüístico. Capítulo 4. El valor predeterminado es (Desconocido). v Visualización. Es la longitud de los datos CHAR o la longitud máxima de los datos VARCHAR. a menos que ejecute una unión interna pura. deberá comprobar la información de correlación (es decir. arrastre los nombres de columna correctos de la izquierda a la derecha.. Acerca de esta tarea En la página Columnas. Seleccione uno de los nombres de correlación en la lista desplegable. Si se trata de datos numéricos. Especifica una descripción de texto opcional de la columna. Especifica el tipo de datos SQL. Especifica si la columna puede contener valores nulos. Pulse la tecla Suprimir. las claves de correlación y la lista de columnas) a la derecha de la página. excepto si establece la fusión en Unión interna pura. El valor predeterminado es el del proyecto (MS1252). v Con posibilidades de nulos. El valor predeterminado es No. v Grupo. Especifica el factor de escala de los datos. v Descripción. Define la precisión de los datos. Define si la columna es una clave. Seleccione la fila que desea suprimir. Si los nombres de columna de la derecha de la página no coinciden con los de la izquierda. Especifica el número máximo de caracteres necesarios para visualizar los datos de la columna. El valor predeterminado es No. Si se trata de datos numéricos. Procedimiento 1. Especifica si desea agrupar por esta columna. es el número de dígitos a la derecha del separador decimal. El separador Columnas contiene los campos siguiente: v Nombre de columna. para transferir información de una tabla. Consulte dicha sección para ver cómo puede utilizar el botón Cargar. puede utilizar la información de una tabla existente para especificar las columnas. Longitud. Nota: Debe establecer todas las columnas en "Con posibilidades de nulos". Tal como se describe en Separadores Columnas del primer y del segundo archivo. v v v v v Elemento de datos. El separador Columnas Puede utilizar el separador Columnas para especificar el nombre y el formato de las columnas en el enlace de salida. para que las columnas de un registro puedan utilizar distintas correlaciones.

Varias derivaciones Cuando una columna de salida se deriva de más de una columna de entrada. Los datos normalmente están orientados a las claves. v Una interfaz de usuario personalizada. la columna de entrada que tiene el mismo nombre que el especificado en el campo Derivación se correlaciona con esta columna de salida. repite un segmento de datos para cada columna girada. Una columna que tenga una derivación individual se trata como una clave y se proyecta de la misma manera en cada fila de salida derivada de la fila de entrada individual. es decir. cuando aparecen varios nombres de columna de entrada en el campo Derivación. una etapa activa. Giro de datos Un giro horizontal correlaciona las columnas de una fila con varias filas. Este tipo de correlación se denomina girar. Un conjunto de columnas de entrada consiste en una o en varias columnas. Esta columna de entrada está correlacionada con la columna de salida correspondiente. El giro normalmente da como resultado una tabla de salida que contiene menos columnas pero más filas que la tabla de entrada original. Cada columna de entrada especificada en el campo Derivación para las 96 Guía del desarrollador de Server Job . Funcionalidad de la etapa Pivot Funcionalidad soportada La funcionalidad de la etapa Pivot es la siguiente: v Da soporte a los giros horizontales. Un campo vacío indica que hay un nombre de columna de entrada con el mismo nombre que la columna de salida.Etapas Pivot Pivot. correlaciona conjuntos de columnas en una tabla de entrada con una única columna de una tabla de salida. es decir. v Soporte multilingüístico. la correlación de datos verticales de varias filas en una fila. es decir. Derivación individual Si el campo Derivación de una columna de salida muestra un único nombre de columna. columnas dentro de una única fila en muchas filas. (Los giros verticales agrupan una o varias columnas y las correlacionan con muchas columnas de la fila agrupada en una tabla de salida). Utilice el campo Derivación en la cuadrícula de columna del enlace de salida para especificar los giros. es decir. La etapa no tiene propiedades de etapa ni de enlace. Esta etapa gira datos horizontales. Simplemente correlaciona filas de entrada con filas de salida. se genera una tabla de salida con más filas que la tabla de entrada. v Los giros verticales.0 de IBM InfoSphere DataStage. Repite un segmento de datos que normalmente está orientado a claves de cada columna girada de forma que cada fila de salida contiene un valor separado. Funcionalidad no soportada La siguiente funcionalidad no está soportada: v Compatibilidad con releases anteriores al 7.

el tipo de datos documentado en Tipo de SQL debe ser el mismo que el tipo de datos de la tabla de origen.456.934. Etapas de trabajo de servidor 97 .00 Ventas_MAR $1. Estos ejemplos ilustran los conceptos de un giro horizontal.234.columnas de salida se correlaciona con la columna de salida. el tipo de datos documentado en Tipo de SQL debe ser el mismo que el tipo de datos de la tabla de destino.00 $1. El separador Columnas del enlace de salida contiene una columna de Ventas derivada de las tres columnas de entrada: Ventas_ENE. El separador Columnas de la página Entradas contiene tres columnas de entrada con datos de ventas: Ventas_ENE. Ejemplos Los ejemplos que se describen en las siguientes secciones muestran un giro en los datos de ventas del primer trimestre para una determinada empresa.00 $1. Columnas de entrada Nombre de la columna CUSTID LNAME Ventas_ENE Ventas_FEB Ventas_MAR Tipo de SQL Entero VarChar Decimal Decimal Decimal Longitud 10 10 10 10 10 2 2 2 Escala Nota: En toda columna. Las columnas están estructuradas de la forma siguiente: Tabla 12. Los datos de las filas de origen para las columnas de entrada tienen la apariencia siguiente: Tabla 11. Filas de origen de entrada CUSTID 100 101 LNAME Smith Yamada Ventas_ENE $1.245. Se crea una nueva fila para cada una de las columnas de entrada especificada.578.00 Columnas de enlace de salida El siguiente ejemplo ilustra como especificar los datos de salida de la etapa Pivot. Las columnas están estructuradas de la forma siguiente: Tabla 10. Ventas_FEB y Ventas_MAR. Columnas de enlace de entrada El ejemplo siguiente ilustra la entrada de datos en la etapa Pivot. Capítulo 4.00 $1.765. Ventas_FEB y Ventas_MAR Derivación Tipo de SQL Entero VarChar Decimal Longitud 10 10 10 2 Escala Nota: En toda columna. Columnas de salida Nombre de la columna CUSTID Apellido Ventas LNAME Ventas_ENE.00 Ventas_FEB $1. Ventas_FEB y Ventas_MAR.

578. El valor clave se repite en cada fila que resulta de la correspondiente fila de entrada.00 $1.298.La columna de salida que se deriva de una única columna de entrada es un valor clave. El número máximo de filas de salida que resulta de una única fila de entrada viene determinado por la columna de salida que se deriva de la mayoría de columnas de entrada. Las tres filas de salida de los datos de ventas que resultan de cada fila de entrada en este ejemplo son de la manera siguiente: Tabla 13.00 $1.050. Filas de destino de salida CUSTID 100 100 100 101 101 101 Apellido Smith Smith Smith Yamada Yamada Yamada Ventas $1. la fila de salida contendrá un valor nulo para cada columna en la que no esté disponible una derivación.234.00 $7.765.578. supongamos que se pide al cliente que realice los pagos en su cuenta dos veces al año. Pagos DIC Derivación Tipo de SQL Entero VarChar Decimal Longitud 10 10 10 2 Escala Los datos de salida en las filas de destino después del giro podrían ser los siguientes: Tabla 16.00 $1.765. Datos de salida en filas de destino después de giro CUSTID 100 100 100 101 101 LNAME Smith Smith Smith Yamada Yamada Guía del desarrollador de Server Job Ventas $1.00 $7.456.00 $1.00 Supongamos que el enlace de salida contiene una derivación adicional para pagos: Tabla 15.578. Columnas de salida con detalles de pagos Nombre de la columna CUSTID Apellido Ventas Pagos LNAME Ventas_ENE. en junio y en diciembre. Por ejemplo.00 $1. Ventas_FEB y Ventas_MAR Pagos JUN.456.00 Pagos_JUN $6. Es posible que los datos de origen sean como los siguientes: Tabla 14.298.00 $1. Ejemplo de pagos CUSTID 100 101 LNAME Smith Yamada Ventas_ENE $1.00 Pagos_DIC $7.00 $7.00 $1.975.00 $1.456.00 $1.934.00 Ventas_MAR $1.765.934.00 null $7.234.00 Ventas_FEB $1.050.00 Pagos $6.975.245.290.290.00 $7.00 Si el giro incluye cualquier derivación con menos del número máximo de filas de salida pero más de una fila.00 $1.00 $1.245.00 $1.245.234.00 98 .

Durante una operación normal de la etapa Row Merger. Datos de salida en filas de destino después de giro (continuación) CUSTID 101 LNAME Yamada Ventas $1. v Finalización de línea. El separador General contiene los campos siguientes: v Varias líneas. – Estilo DOS (CR LF). La etapa puede tener un único enlace de entrada y un único enlace de salida. Seleccione Varias líneas para concatenar las filas. Entre una descripción opcional de la etapa.Tabla 16. Página Entrada La página Entrada contiene varios separadores que describen los datos que están entrando en la etapa Row Merger. estos recursos permiten concatenar el resultado de cada fila de entrada en una única serie a la que se da salida cuando la etapa detecta una señal de fin de los datos (EOD) o de fin de la transmisión (EOT) (lo que significa que no se esperan más filas de entrada). Especifica el carácter/caracteres que se colocarán como delimitador entre las filas concatenadas cuando se muestren en una sola fila. o si produce cada fila de entrada como una fila de salida aparte. grana la serie en una columna indicada del enlace de salida. De forma predeterminada. Etapas de trabajo de servidor 99 . La etapa también ofrece recursos de concatenación. cada fila de entrada con varias columnas da como resultado una fila de salida de una única columna. Determina si la etapa Row Merger debe concatenar las filas de entrada en una fila de salida individual. Esta opción sólo está disponible si ha seleccionado la opción Varias líneas para especificar que la etapa está concatenando filas de entrada. – Ninguna.00 Pagos null Etapas Row Merger La etapa Row Merger lee datos de una fila sin parar desde un enlace de entrada. A continuación.934. grabar las series en una columna específica del enlace de salida. Separador General de la página Etapa El separador General de la página Etapa permite acceder a los recursos de concatenación de la etapa Row Merger. Capítulo 4. v Soporte multilingüístico. No coloca ningún delimitador entre las filas fusionadas. no obstante. esta opción no está seleccionada. Seleccione uno de los valores siguientes: – Estilo Unix (LF). v Agregación de varias filas de datos. Funcionalidad de la etapa Row merger Funcionalidad soportada La etapa Row Merger da soporte a la siguiente funcionalidad: v La posibilidad de leer una fila cada vez. mientras la etapa Sequential File graba en un archivo. posteriormente. fusionar todas las columnas de una fila en una serie individual con un determinado formato y. La diferencia radica en que. Coloca un carácter de salto de línea como delimitador entre cada fila fusionada. la etapa Row Merger realiza la salida en un enlace. La etapa graba lo que lee sin realizar ninguna interpretación ni conversión. Nota: La etapa Row Merger se parece a la etapa Sequential File de servidor. v Descripción. Fusiona todas las columnas en una única serie de un formato especificado. Coloca un carácter de retorno de carro y un carácter de salto de línea como delimitador entre cada fila fusionada.

De forma predeterminada. se interpretan como el valor nulo de SQL. Se cargarán los detalles sobre el formato. v Relleno predeterminado. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. El separador contiene los campos siguientes: v Columnas de anchura fija. este campo contiene un carácter de comillas dobles. v Supresión de advertencias de truncamiento de filas. este campo contiene una coma. 100 Guía del desarrollador de Server Job . Contiene el carácter utilizado para rellenar las columnas ausentes. De forma predeterminada es 0. 2. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna. Contiene caracteres que. Si las filas de entrada contienen más columnas que las que haya definido en el separador Columnas. v Carácter de cita. Separador Columnas Las entradas en la cuadrícula de columnas especifican el formato de los datos que se están leyendo desde las filas de entrada. separador Columnas). Si desea suprimir estos mensajes (por ejemplo. Si tiene definiciones de tabla que incluyen información sobre el formato. De forma predeterminada. Especifica el carácter utilizado para incluir series. v Serie NULL predeterminada. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. De forma predeterminada. Pulse Cargar. 3. Contiene un número para representar el número de espacios utilizado entre columnas. normalmente recibirá avisos acerca de las filas demasiado largas cuando ejecute el trabajo. El separador Formato también tiene un botón Cargar. seleccione este recuadro de selección. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Pulse Aceptar. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. pero aquí se puede establecer otro carácter. es posible que sólo esté interesado en las tres primeras columnas y desee prescindir del resto). Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. Entre 000 para suprimir el carácter de cita. Separador Formato Utilice este separador para especificar el modo en que los datos leídos en columnas individuales en cada fila de entrada se formatearán antes de que se genere la salida en una única columna. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. Los valores hexadecimales deben prefijarse con &h. Seleccione este recuadro de selección para generar la salida de los datos en un formato de anchura fija. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. El separador Formato y el separador Columnas se describen más abajo. Esta opción no está disponible si se ha seleccionado Columnas de anchura fija. Entre 000 para suprimir el delimitador. La anchura de cada campo se toma desde el tamaño de visualización de SQL de las columnas de entrada (establecido en la columna Visualización en la Cuadrícula de columnas de la página Entradas. Los valores hexadecimales deben prefijarse con &h. cuando se encuentran en una fila de entrada. Aparecerá el recuadro de diálogo Cargar definiciones de tabla. Realice una búsqueda para encontrar la definición de tabla que contenga el formato que desea cargar. De forma predetermina es #. puede cargar detalles sobre el formato desde estas definiciones de tabla directamente a la página Formato: 1. Esta opción no está disponible si se ha seleccionado Columnas de anchura fija.El separador General contiene un campo de descripción que permite entrar una descripción opcional del enlace de entrada. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. Especifica el delimitador utilizado para separar los campos de datos en los datos de salida que se han derivado de las columnas de entrada. esta opción está borrada. v Espacios entre columnas. v Delimitador.

v Descripción. Seleccione Varias líneas para desconcatenar las filas. Como mínimo. la etapa puede desconcatenarlas en filas separadas para la salida. El campo Derivación no se utiliza. También puede definir columnas adicionales para que lleven datos como entrada en la etapa. debe definir una columna que lleve los datos fusionados. La diferencia radica en que. Etapas de trabajo de servidor 101 . posteriormente. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna. Separador General El separador General identifica la columna que contiene los datos fusionados. De forma predeterminada. Determina si la etapa Row Splitter debe desconcatenar la serie de entrada en filas de entrada separadas o si da salida a cada serie de entrada como una fila de salida separada. En algunos casos. sin embargo. La etapa graba lo que lee sin realizar ninguna interpretación ni conversión. mientras la etapa Sequential File lee a partir de un archivo. El separador General contiene los campos siguientes: v Nombre de la columna que se debe fusionar. Esta etapa divide los campos de datos de una serie en numerosas columnas. la etapa Row Splitter lo hace desde un enlace. Capítulo 4. Una lista contiene una lista de las columnas de salida definidas para esta etapa. En este caso. Durante una operación normal de la etapa Row Splitter. Etapas Row Splitter La etapa Row Splitter lee datos de una fila sin parar desde un enlace de entrada. Separador General de la página Etapa El separador General de la página Etapa permite acceder a los recursos de desconcatenación de la etapa Row Splitter. cada serie de entrada procesada da como resultado una fila de salida de múltiples columnas. La etapa puede tener un único enlace de entrada y un único enlace de salida. esta opción no está seleccionada. Separador Columnas Las entradas en la cuadrícula de columnas especifican el formato de los datos que se están grabando al enlace de entrada. Nota: La etapa Row Splitter se parece a la etapa Sequential File de servidor. Seleccione la columna en la que quiere que se produzca la salida de los datos fusionados. v Generación de varias filas de salida. v Soporte multilingüístico. A continuación. Funcionalidad de la etapa Row Splitter Funcionalidad soportada La etapa Row Splitter da soporte a la siguiente funcionalidad: v La posibilidad de leer una fila cada vez. grabar las columnas en el enlace de salida. El separador General contiene los campos siguientes: v Varias líneas. Descripción opcional del enlace de salida. repartir los campos de datos contenidos en una serie entre varias columnas y. graba las columnas en el enlace de salida.Página Salida La página Salida contiene varios separadores que describen los datos editados por la etapa Row Merger. una única serie de entrada puede representar muchas filas de datos de entrada.

Página Salida La página Salida contiene varios separadores que describen los datos editados por la etapa Row Splitter. Entre una descripción opcional del enlace de entrada. esta opción está borrada. por lo general recibirá avisos sobre filas demasiado largas cuando ejecute el trabajo. Como mínimo. 102 Guía del desarrollador de Server Job . – Estilo DOS (CR LF). El separador General contiene un campo de descripción que permite entrar una descripción opcional del enlace de entrada. Separador Formato Utilice este separador para especificar cómo se formatea la serie de entrada. Página Entrada La página Entrada contiene varios separadores que describen los datos que están entrando en la etapa Row Splitter. también puede definir columnas adicionales. Elija entre: – Estilo Unix (LF). de forma que la etapa pueda separar las columnas. El separador Formato y el separador Columnas se describen más abajo. v Descripción. Si es necesario. Todas las columnas que se definan aquí y en el separador Columnas de la página Salida se pasarán directamente a través de la etapa. La anchura de cada campo se toma desde el tamaño de visualización de SQL de las columnas de salida (establecido en la columna Visualización en la Cuadrícula de columnas de la página Entradas. debe definir una columna que lleve la serie de datos que la etapa está partiendo. es posible que sólo esté interesado en las tres primeras columnas y desee prescindir del resto). Entre una descripción opcional de la etapa. El delimitador es un carácter de salto de línea. El separador contiene los campos siguientes: v Columnas de anchura fija. Si desea suprimir estos mensajes (por ejemplo. – Ninguna. Separador General Utilice el separador General para identificar el nombre de la columna que contiene la serie a partir de la que la etapa extrae las columnas. separador Columnas). seleccione este recuadro de selección. Separador Columnas Las entradas en la cuadrícula de columnas especifican el formato de los datos que se están leyendo desde el enlace de entrada. de forma que la etapa sabe dónde partirlas. Especifica el carácter/caracteres que se colocan como un delimitador entre las filas concatenadas. Esta opción sólo está disponible si ha seleccionado la opción Varias líneas para especificar que la etapa está desconcatenando filas de entrada. De forma predeterminada. El delimitador es un carácter de retorno de carro y un carácter de salto de línea. El separador General contiene los campos siguientes: v Nombre de la columna que se debe partir. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna. Seleccione este recuadro de selección si los datos entrantes están en un formato de anchura fija. v Supresión de advertencias de truncamiento de filas. Si la fila de entrada contiene más campos de datos que deban separarse en columnas de los que haya definido en el separador Columnas. No existe ningún delimitador. Seleccione la columna que contiene la serie a partir de la que la etapa extrae las columnas.v Finalización de línea. v Descripción. Una lista contiene una lista de las columnas de entrada definidas para esta etapa.

Si tiene definiciones de tabla que incluyen información sobre el formato. Especifica el delimitador utilizado para separar los campos de datos en la serie de datos de entrada. Etapas Sort Ordena una etapa activa. Pulse Cargar. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Capítulo 4. v Carácter de cita. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna. De forma predeterminada es 0. Ordena cantidades pequeñas de datos de forma eficiente en la memoria siempre y cuando disponga de la suficiente memoria. Contiene un número para representar el número de espacios utilizado entre columnas. v Delimitador. Si en la fila de entrada hay menos campos de datos que columnas de división definidas para los mismos. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. No se efectúa ninguna acción. Los nulos de SQL graban en columnas adicionales y el trabajo prosigue. Realice una búsqueda para encontrar la definición de tabla que contenga el formato que desea cargar. no el espacio de intercambio de memoria virtual. v Serie NULL predeterminada. Contiene caracteres que. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija.) – Aviso. Esta opción no está disponible si se ha seleccionado Columnas de anchura fija. los nulos de SQL graban en columnas adicionales y el trabajo prosigue. El separador Formato también tiene un botón Cargar. 2. Los valores hexadecimales deben prefijarse con &h. Los códigos ASCII válidos se encuentran en el rango del 1 al 253. Los valores hexadecimales deben prefijarse con &h. Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. De forma predeterminada. De forma predeterminada. Puede entrar un único carácter imprimible o un número decimal o hexadecimal para representar el código ASCII del carácter que desea utilizar. Contiene el carácter utilizado para rellenar las columnas ausentes. v Espacios entre columnas. ordena varios datos. este campo contiene una coma. 3. De forma predetermina es #. El campo Derivación no se utiliza. Pulse Aceptar. Entre 000 para suprimir el delimitador. Se cargarán los detalles sobre el formato. Separador Columnas Las entradas en la cuadrícula de columnas especifican el formato de los datos que se están grabando al enlace de entrada. Entre 000 para suprimir el carácter de cita. pero aquí se puede establecer otro carácter. Esta opción no está disponible si se ha seleccionado Columnas de anchura fija. este campo contiene un carácter de comillas dobles. Aparecerá el recuadro de diálogo Cargar definiciones de tabla. Etapas de trabajo de servidor 103 .v Mensaje de columnas ausentes. puede cargar detalles sobre el formato desde estas definiciones de tabla directamente a la página Formato: 1. v Relleno predeterminado. Se graba un mensaje de aviso en el registro de trabajo. Se graba un error muy grave en el registro de trabajo y el trabajo termina anormalmente (es el valor predeterminado. Los valores decimales entre el 1 y el 9 deben estar precedidos por un cero. esta opción permite especificar la acción que se debe realizar: – Muy grave. Ordena grandes cantidades de datos utilizando el almacenamiento de disco temporal. Especifica el carácter utilizado para incluir series. se interpretan como el valor nulo de SQL (que puede ser sobrescrito para definiciones de columna individuales en el separador Columnas). – Ninguna. cuando se encuentran en una fila de entrada.

la etapa Sort recibe una secuencia de filas que utiliza un único enlace de entrada. La etapa Sort debe tener un enlace de entrada y un enlace de salida. Las filas ya están separadas en valores de columna individuales. El tipo de datos de enlace de salida para cada columna determina el tipo de comparación que se debe realizar: v Comparación numérica para números v Fecha y hora v Serie de caracteres (orden de izquierda a derecha para series e indicaciones de hora y fecha) Funcionalidad de la etapa Sort Funcionalidad soportada La etapa Sort contiene las funcionalidades y ventajas siguientes: v Soporta el soporte multilingüístico. el algoritmo de ordenación realiza 104 Guía del desarrollador de Server Job . v Registra mensajes para informar sobre avisos no importantes que pueden tener un impacto sobre la precisión de los datos ordenados. v Soporta una opción que ordena por columna utilizando la correlación de secuencia de clasificación. Número máximo de filas en la propiedad Memoria virtual El Número máximo de filas en memoria virtual permite regular la cantidad de datos de la memoria virtual. Las filas de datos de entrada que se deben ordenar llegan como líneas de caracteres ASCII leídas desde la secuencia stdin. Una ordenación estable preserva la ordenación de entrada de filas que si se comparan. En InfoSphere DataStage. Las filas ordenadas resultantes se graban como valores de columnas en un único enlace de salida. como se utiliza en una interconexión de shell.El modelo de la etapa Sort es el mandato de UNIX Sort. Si se limita el número total de filas que se deben ordenar. Las filas ordenadas resultantes se graban como líneas de caracteres ASCII en la secuencia stdout. El tipo de columna de la columna de entrada debe poder convertirse en el tipo de columnas de salida. Los valores para las propiedades de la etapa y los atributos de columna especifican cómo ordenar estas filas. un uso de la memoria virtual limitado. Funcionalidad no soportada La siguiente funcionalidad no está soportada: v Carga masiva para enlaces de entrada de secuencia v Procedimientos almacenados Propiedades configurables Puede configurar propiedades para mejorar el rendimiento de la etapa Sort. Debe utilizar los argumentos de la línea de mandatos para especificar cómo ordenar estas filas. por lo tanto. v Soporta una opción que solicita una ordenación estable. v Soporta los parámetros de ajuste de rendimiento para obtener una ordenación eficiente. Las filas de salida tienen el mismo orden de columnas que las columnas de entrada. son equivalentes. Los nombres de las columnas de salida pueden diferir de los nombres de las columnas de entrada. Las consideraciones sobre las columnas en las filas para los enlaces de entrada y de salida incluyen lo siguiente: v Un único enlace de secuencia de entrada proporciona filas de datos que se deben ordenar. v Un único enlace de secuencia de salida recibe filas de datos ordenadas.

Puede entrar los valores listados en la tabla siguiente para especificar el orden de las filas. Esto reduce el uso de la memoria virtual y el excesivo intercambio de páginas que se produce cuando se tiene una gran cantidad de datos de entrada asociados con el enlace de entrada. El algoritmo prosigue agrupando porciones de 10. si es necesario. de archivos abiertos. El proceso de estos datos se controla mediante: v Número máximo de archivos abiertos v Número máximo de filas en memoria virtual v El número actual de filas asociado con el enlace de entrada Ejemplo de Sort Suponga que el enlace de entrada contiene 100. Esta propiedad se utiliza cuando el número de filas dentro del enlace de entrada excede el valor suministrado por esta propiedad.000 filas desde el enlace de entrada y almacenando los resultados ordenados en archivos temporales unívocos hasta que se produce una de las siguientes condiciones: v Todos los datos de entrada se han procesado en archivos temporales. a continuación. El algoritmo toma las siguientes 10. realiza una ordenación intermedia y. almacena los datos ordenados en un archivo temporal. Propiedad Número máximo de archivos abiertos El Número máx. Máx.000 filas se procesan como cinco archivos temporales. Etapas de trabajo de servidor 105 . las primeras 50.ordenaciones crecientes. por ejemplo.000 filas de datos y que Filas máx. en memoria virtual. El algoritmo de ordenación ordena filas por múltiples de este valor y almacena estos grupos ordenados de filas en archivos temporales. a continuación. Si. un se produce un alto número de ordenaciones intermedias con una fusión de archivos constante. Estos archivos temporales. de archivos abiertos limita el número de archivos de datos intermedios que se crean cuando se realizan ordenaciones crecientes.) Esta etapa fusiona estos archivos almacenados y graba las filas en el enlace de salida. v El número de archivos temporales es igual al valor especificado en Máx. de archivos abiertos. El algoritmo de ordenación lee las 10. Clasifica las filas acumuladas. limitadas por Filas máx. según la distinción de mayúsculas y minúsculas en la búsqueda Capítulo 4. de archivos abiertos está fijado en 5.000 filas del enlace de entrada y prosigue con las ordenaciones intermedias. cada uno de ellos con 10. El número total de archivos temporales es menor que el valor especificado en Máx. almacenándolas en archivos de disco. se fusionan para la ordenación final. (Los conjuntos de ordenación pequeños se pueden almacenar en la memoria.000 filas. Este algoritmo prosigue recursivamente hasta que se procesan todos los datos.000 filas de datos ordenados. Criterios de ordenación La etapa Sort acumula filas de entrada en la memoria. en memoria virtual se establece en 10.000 primeras filas del enlace de entrada. Tras las ordenaciones intermedias.000 filas. Nota: Si los valores de estos parámetros son demasiado restrictivos. Estos archivos temporales se fusionan de forma conjunta para formar un nuevo archivo temporal con 50. los 10 archivos temporales se fusionan y se ordenan de forma conjunta y la ordenación final se graba en el enlace de salida.

Tabla 17. Criterios de ordenación Distinción de mayúsculas y minúsculas en la búsqueda Sensible a la coincidencia de mayúsculas y minúsculas en la búsqueda No sensible a la coincidencia de mayúsculas y minúsculas en la búsqueda Orden ascendente a asc ascending Orden descendente d dsc descending A ASC ASCENDING D DSC DESCENDING

: El ejemplo siguiente indica que las filas resultantes deben ordenarse en un orden ascendente sensible a la coincidencia de mayúsculas y minúsculas en la columna REGION del enlace de entrada. Utiliza un archivo de correlación externo denominado CSM en el directorio C:\USER en la columna CUSTOMER y un orden descendente en la columna SALE_PRICE (consulte Ordenar especificaciones en “Propiedades de etapa” ).
REGION asc, CUSTOMER ASC C:\USER\CSM, SALE_PRICE DSC

Correlaciones de orden de clasificación
Puede especificar la correlación del orden de clasificación ordenando por columna. El formato de la correlación se adapta a la codificación de los caracteres como los de un único byte, de doble byte o un número variables de bytes. Puede especificar un archivo de correlación separado para cada columna que se deba ordenar. El archivo de correlación se utiliza al ordenar valores de series de caracteres en dicha columna. La correlación no afecta a la ordenación de los valores de series sin caracteres, es decir, a los valores numéricos, de fecha, de tiempo y de indicación de fecha y hora. Una correlación de orden de clasificación es un archivo delimitado por comas que contiene dos columnas. La columna izquierda es un código de carácter único (en una codificación única o de varios bytes, según convenga). Utilice un carácter de escape para entrar caracteres delimitadores y valores de bytes arbitrarios. La columna derecha es un valor entero que utiliza caracteres ASCII para los dígitos decimales. La columna contiene el peso numérico utilizado al comparar los correspondientes caracteres en dos series. Cuanto más bajo sea el número, más pronto ordenará. Si dos caracteres tienen el mismo peso, entonces se consideran equivalentes. Cualquier carácter que no esté en la correlación se considera más alto que cualquier otro carácter dentro de la correlación. Por ejemplo, la siguiente correlación de secuencia contiene estas columnas delimitadas por comas: a,3 b,3 c,3 d,5 g,6 e,1 Por ejemplo, puede proporcionar una correlación de orden de clasificación para especificar la secuencia de correlación del alfabeto francés.

Propiedades de etapa
La tabla siguiente incluye estas cabeceras de columna: v Solicitud es el texto que el diseñador de trabajo puede ver en la interfaz de usuario del editor de etapas. v Valor predeterminado es el texto que se utiliza si el diseñador del trabajo no suministra ningún valor. v Descripción describe las propiedades.

106

Guía del desarrollador de Server Job

La etapa Sort soporta las siguientes propiedades de etapa:
Tabla 18. Propiedades de la etapa Sort Solicitud Especificaciones de ordenación Predeterminada Ninguno Descripción Los criterios según los que se ordenan los caracteres ASCII en las filas leídas desde el enlace de entrada. Consulte "Criterios de ordenación" para obtener más información. El número máximo de filas (de 2 a 50.000) que se pueden ordenar en la memoria virtual. Cuanto más pequeña sea la fila, más filas se podrán ordenar. El nombre de la vía de acceso donde se almacenan los archivos temporales creados durante la ordenación. Si no especifica un nombre de vía de acceso, se utiliza el directorio de trabajo actual en el sistema que hospeda la capa de motor. El carácter simple que se utiliza en archivos de correlación de orden de clasificación para especificar caracteres de control. Controla el tipo de información de rastreo que se añade al registro. Los niveles de rastreo disponibles son: 0 Sin rastreo 1 Propiedades de etapa 2 Rendimiento 4 Sucesos importantes Puede combinar los niveles de rastreo. Por ejemplo, un nivel de rastreo de 3 significa que las propiedades de la etapa y los mensajes de rendimiento se añaden al registro. Ordenación estable No Indica si la ordenación es una ordenación estable. Una ordenación estable conserva el orden de las filas de entrada que son equivalentes. El carácter simple que separa dos columnas en cada línea del archivo de correlación de orden de clasificación. Número máximo de archivos que se pueden abrir a la vez. Cuanto mayor sea el valor, mejor será el rendimiento. Cuando se utiliza una o varias de estas instancias de la etapa en el trabajo, el número total de archivos abiertos de todas las instancias de la etapa no deberá exceder 20.

Filas máx. en memoria virtual

10.000

Directorio temporal

Ninguno

Carácter de escape

\ (barra inclinada invertida)

Nivel de rastreo

0

Separador de columna

, (coma)

Número máximo de archivos abiertos 10

Capítulo 4. Etapas de trabajo de servidor

107

Etapas Transformer
Las etapas Transformer no extraen ni graban datos en una base de datos de destino. Se utilizan para manejar los datos extraídos, realizar las conversiones necesarias y pasar datos a otra etapa Transformer o a una etapa que grabe datos en una tabla de datos de destino.

Utilización de una etapa Transformer
Las etapas Transformer pueden tener una cantidad distinta de entradas o salidas. El enlace del origen de entrada de datos principal se designa como enlace de entrada principal. Sólo puede haber un enlace de entrada primario, pero puede haber un número cualquiera de entradas de referencia. Nota: El editor de la etapa Transformer es parecido para los trabajos de servidor, paralelo y de sistema principal, aunque la funcionalidad varía. En estos temas sólo se describe la funcionalidad del trabajo de servidor. Para la funcionalidad de trabajo paralelo o de sistema principal, consulte las guías que describen los trabajos paralelo y de sistema principal. Cuando edita una etapa Transformer, aparece el Editor de transformador. A continuación, se muestra un ejemplo de etapa Transformer. En este ejemplo, se han definido metadatos para los enlaces de entrada y salida:

Componentes del editor de transformadores
El editor de transformadores contiene los componentes siguientes.

108

Guía del desarrollador de Server Job

Barra de herramientas
La barra de herramientas del Transformador contiene los siguientes botones: v Propiedades de etapa v Restricciones v Mostrar todas o las relaciones seleccionadas v v v v v v v Mostrar/ocultar variables de la etapa Cortar Copiar Pegar Buscar y sustituir Cargar definición de columna Guardar definición de columna

v Coincidencia automática de columnas v Orden de ejecución de los enlaces de entrada v Orden de ejecución de los enlaces de salida

Área de enlaces
El área superior muestra los enlaces hacia y desde la etapa Transformer, donde se pueden ver las columnas y las relaciones entre ellas. El área de enlaces es donde se definen todas las definiciones de columna, expresiones de clave y variables de etapa. El área de enlaces está dividida en dos paneles; puede arrastrar la barra divisoria entre ellos para cambiar el tamaño de los paneles, que depende el uno del otro. También hay una barra de desplazamiento horizontal que permite desplazar la vista a la izquierda o la derecha. El panel izquierdo muestra los enlaces de entrada y el panel derecho muestra los enlaces de salida. El enlace de entrada que se muestra en la parte superior del panel izquierdo siempre es el enlace primario. Los enlaces siguientes son enlaces de referencia. Para todos los tipos de enlaces, los campos clave se muestran en negrita. Los campos clave del enlace de referencia que no tienen ninguna expresión definida aparecen en rojo (o el color definido en Herramientas > Opciones), al igual que las columnas de salida que no tienen ninguna derivación definida. En el Editor de transformador, sólo se puede seleccionar un enlace a la vez. Cuando se selecciona, se resalta la barra de título del enlace y las puntas de flecha indican las columnas seleccionadas.

Área de metadatos
El área inferior muestra los metadatos de columna de los enlaces de entrada y de salida. De nuevo, esta área se divide en dos paneles: el izquierdo muestra los metadatos del enlace de entrada y el derecho muestra los metadatos del enlace de salida. Los metadatos correspondientes a cada enlace se muestran en una cuadrícula incluida en una página tabulada. Pulse el separador para traer al frente al enlace necesario. Este enlace también se selecciona en el área de enlaces. Si selecciona un enlace en el área de enlaces, el separador de metadatos se traerá al frente automáticamente.

Capítulo 4. Etapas de trabajo de servidor

109

Las cuadrículas se pueden editar para cambiar los metadatos de columnas de cualquiera de los enlaces. También puede añadir y suprimir metadatos.

Menús de atajos
Los menús de atajos del Editor de transformador se muestran pulsando con el botón derecho del ratón sobre los enlaces en el área de enlaces. Los menús varían ligeramente, dependiendo de si pulsa un enlace de entrada, un enlace de salida o una variable de etapa. El menú del enlace de entrada ofrece operaciones en las expresiones de clave, el menú del enlace de salida ofrece operaciones en las derivaciones y el menú de la variable de etapa ofrece operaciones en las variables de etapa. El menú de atajos permite: v Abrir el recuadro de diálogo Propiedades para especificar una descripción del enlace. v Abrir el recuadro de diálogo Restricciones para especificar una restricción (sólo está disponible para los enlaces de salida). v v v v v v v Abrir el recuadro de diálogo Coincidencia automática de columnas. Mostrar el recuadro de diálogo Buscar y sustituir. Mostrar el recuadro de diálogo Seleccionar. Editar, validar o borrar una expresión de clave, una derivación o una variable de etapa. Editar varias derivaciones en una operación. Añadir una nueva columna o variable de etapa al enlace seleccionado. Seleccionar todas las columnas en un enlace.

v Insertar o suprimir columnas o variables de etapa. v Cortar, copiar y pegar una columna, una expresión de clave, una derivación o una variable de etapa. Si muestra el menú desde el área de enlaces en segundo plano, puede: v Abrir el recuadro de diálogo Propiedades de la etapa para especificar una subrutina anterior o posterior a la etapa. v Abrir el recuadro de diálogo Restricciones para especificar una restricción para el enlace de salida seleccionado. v Abrir el recuadro de diálogo Orden de ejecución de los enlaces para especificar el orden en el que se deben procesar los enlaces. v Conmutar entre ver relaciones de enlace para todos los enlaces o sólo para el enlace seleccionado. v Conmutar entre mostrar u ocultar las variables de etapa. Si pulsa con el botón derecho del ratón sobre el área de metadatos del Editor de transformador, se abren los menú de atajos de edición de cuadrícula estándar.

Conceptos básicos de la etapa Transformer
Cuando edita por primera vez una etapa Transformer, es muy probable que ya haya definido qué datos se especifican en la etapa en los enlaces de entrada. Utilizará el Editor de transformador para definir los datos que generará la etapa y cómo se transformarán. (Puede definir los datos de entrada utilizando el Editor de transformador si es necesario). En esta sección se explican algunos de los conceptos básicos para utilizar la etapa Transformer.

Enlaces de entrada
El origen de datos principal está unido a la etapa Transformer a través del enlace primario, pero la etapa también puede tener un número cualquiera de enlaces de entrada de referencia.

110

Guía del desarrollador de Server Job

Un enlace de referencia representa una búsqueda de tabla. Se utilizan para suministrar información que puede afectar a la forma de cambiar los datos, pero no proporcionan los datos que deben modificarse. Las columnas de entrada de referencia pueden designarse como campos de clave. Puede especificar las expresiones de clave que se utilizan para evaluar los campos de clave. El uso más común de la expresión de clave es para especificar un equijoin, que es un enlace entre una columna de enlace primario y una columna de enlace de referencia. Por ejemplo, si los datos de entrada primarios contienen nombres y direcciones, y una entrada de referencia contiene nombres y números de teléfono, la columna nombre del enlace de referencia se marca como un campo de clave y la expresión de clave hace referencia a la columna nombre del enlace primario. Durante el proceso, el nombre en la entrada primaria se busca en la entrada de referencia. Si los nombres coinciden, los datos de referencia se consolidan con los datos primarios. Si los nombres no coinciden, es decir, si no hay ningún registro en la entrada de referencia que coincida con la expresión proporcionada, todas las columnas especificadas para la entrada de referencia se establecen en el valor nulo. Cuando un enlace de referencia se origina en una etapa UniVerse o ODBC, puede buscar múltiples filas desde la tabla de referencia. Las filas se especifican mediante una clave foránea, por oposición a la clave primaria que se utiliza para la búsqueda de filas individuales.

Enlaces de salida
Puede tener un número cualquiera de enlaces de salida de la etapa Transformer. Si lo desea, puede pasar algunos datos directamente a través de la etapa Transformer sin modificarlos, pero es muy probable que desea transformar los datos de algunas columnas de entrada antes de pasarlos a la etapa Transformer. Para especificar una operación de este tipo, escriba una expresión BASIC o seleccione una transformación para aplicarla a los datos. IBM InfoSphere DataStage tiene varias transformaciones incorporadas, o bien puede definir sus propias transformaciones personalizadas que se almacenan en el repositorio y pueden reutilizarse según sea necesario. El origen de una columna del enlace de salida se define en la celda Derivación de dicha columna con el editor de transformador. Puede utilizar el editor de expresiones para especificar expresiones o transformaciones en esta celda. También puede arrastrar simplemente una columna de entrada a la celda Derivación de la columna de salida, para pasar los datos directamente a través de la etapa Transformer. Asimismo, para especificar detalles de derivación para columnas de salida individuales, también puede especificar restricciones que operen en enlaces de salida completos. Una restricción es una expresión BASIC que especifica criterios que los datos deben cumplir antes de que puedan pasarse al enlace de salida. También puede especificar un enlace de rechazo, que es un enlace de salida que transporta todos los datos no generados en otros enlaces, es decir, las columnas que no cumplen los criterios. Cada enlace de salida se procesa uno a uno. Si la expresión de restricción se evalúa en TRUE para una fila de entrada, la fila de datos se genera en dicho enlace. Y a la inversa, si una expresión de restricción se evalúa en FALSE para una fila de entrada, la fila de datos no se genera en dicho enlace. Las expresiones de restricción en distintos enlaces son independientes. Si tiene más de un enlace de salida, una fila de entrada puede hacer que se genere una fila de datos a partir de algunos enlaces de salida, de ninguno o de todos. Por ejemplo, si considera los datos que provienen de una tienda de pintura, puede incluir información sobre un número cualquiera de distintos colores. Si desea separar los colores en archivos diferentes, deberá configurar distintas restricciones. Puede generar la información sobre la pintura verde y azul en LinkA, la pintura roja y amarilla en LinkB, y la pintura negra en LinkC.

Capítulo 4. Etapas de trabajo de servidor

111

Cuando una fila de entrada contiene información sobre la pintura amarilla, la expresión de restricción LinkA se evalúa en FALSE y la fila no se genera en LinkA. No obstante, los datos de entrada cumplen el criterio de restricción de LinkB y las filas se generan en LinkB. Si los datos de entrada contienen información sobre la pintura blanca, esta no cumple ninguna restricción y no se genera la fila de datos en los enlaces A, B o C, pero sí se generará en el enlace de rechazo. El enlace de rechazo se utiliza para direccionar datos a una tabla o un archivo que sirve de "contenedor comodín" para las filas que no se generan en ningún otro enlace. La tabla o el archivo que contiene estos rechazos se representa en otra etapa del diseño de trabajo.

Rutinas anteriores y posteriores a la etapa
Como la etapa Transformer es un tipo de etapa activa, puede especificar rutinas para ejecutarlas antes o después de que la etapa haya procesado los datos. Por ejemplo, puede utilizar una rutina anterior a la etapa para preparar los datos antes de que se inicie el proceso. Puede utilizar una rutina posterior a la etapa para enviar un mensaje electrónico cuando la etapa haya finalizado.

Edición de las etapas Transformer
El editor de transformador permite realizar las siguientes operaciones en una etapa Transformer: v Crear columnas nuevas en un enlace v Suprimir columnas de un enlace v Mover columnas en un enlace v Editar metadatos de columnas v Definir derivaciones de columna de salida v v v v v Definir expresiones de clave de columna de entrada Especificar subrutinas anteriores y posteriores a la etapa Definir restricciones de enlace y manejar rechazos Especificar el orden en el que se procesan los enlaces Definir variables de la etapa local

Utilización de arrastrar y soltar
Muchas de las ediciones de la etapa Transformer pueden realizarse de forma más sencilla utilizando la funcionalidad de arrastrar y soltar del editor de transformador. Puede arrastrar columnas desde un enlace cualquiera a otro enlace.

Acerca de esta tarea
Los usos más comunes son: v Copiar columnas de entrada en enlaces de salida v Mover columnas en un enlace v Copiar derivaciones en enlaces de salida v Copiar expresiones de clave en enlaces de entrada.

Procedimiento
1. Pulse la celda de origen para seleccionarla. 2. Vuelva a pulsar la celda seleccionada y, sin soltar el botón del ratón, arrastre el puntero del ratón a la ubicación deseada en el enlace de destino. Aparece un punto de inserción en el enlace de destino para indicar dónde irá la nueva celda. 3. Suelte el botón del ratón para soltar la celda seleccionada.

112

Guía del desarrollador de Server Job

que entran y salen en la etapa Transformer. Puede añadir una columna al final de una derivación o una expresión de clave existente manteniendo pulsada la tecla Control cuando arrastre la columna. que coincidan palabras completas o ninguna de estas opciones. También puede pulsar Control-M para buscar la siguiente expresión vacía o Control-N para buscar la siguiente expresión errónea. Permite localizar la aparición de una determinada serie en una expresión y sustituirla si es necesario. v Nombres de columna. Recursos de selección Si trabaja en un trabajo complejo donde hay varios enlaces. Puede buscar hacia arriba o hacia abajo. Puede buscar hacia arriba o hacia abajo. Este recurso también está disponible en los separadores Correlación de algunas etapas de trabajo paralelo. Etapas de trabajo de servidor 113 . expresiones de clave o derivaciones. El recurso de buscar y sustituir permite: v Buscar y sustituir un nombre de columna v Buscar y sustituir el texto de una expresión v Buscar la siguiente expresión vacía v Buscar la siguiente expresión que contenga un error Para utilizar los recursos de buscar y sustituir. Utilice las teclas estándar del Explorador cuando seleccione las celdas de la columna de origen y continúe como para una celda individual.Resultados Puede arrastrar varias columnas. También puede elegir sustituir todas las apariciones de la serie en una expresión. de varias columnas cada uno. Permite buscar la siguiente expresión vacía o la siguiente expresión que contenga un error. que coincida la palabra completa o ninguna de estas opciones. Permite buscar una determinada columna y cambiarle el nombre si es necesario. puede utilizar el recurso de selección de columna para seleccionar varias columnas. y elegir que coincidan mayúsculas y minúsculas. y elegir que coincidan mayúsculas y minúsculas. Nota: Los resultados de buscar y sustituir se muestran en el color especificado en Herramientas > Opciones. de varias columnas cada uno. que entran y salen en la etapa Transformer. abra el recuadro de diálogo Buscar y sustituir de la siguiente manera: v Pulse el botón Buscar y sustituir en la barra de herramientas v Elija Buscar y sustituir en el menú de atajos v Pulse Control-F El recuadro de diálogo Buscar y sustituir tiene tres separadores: v Texto de la expresión. Pulse F3 para repetir la última búsqueda que ha realizado sin abrir el recuadro de diálogo Buscar y sustituir. Recursos de Buscar y sustituir Si trabaja en un trabajo complejo donde hay varios enlaces. Capítulo 4. Puede arrastrar y soltar el conjunto completo de columnas arrastrando el título del enlace. v Tipos de expresión. puede utilizar el recurso de buscar y sustituir columna para localizar una determinada columna o expresión y cambiarla.

de manera opcional. Seleccione el enlace de referencia que desea que sea el nuevo enlace de entrada primario. Seleccione Convertir en referencia en el menú de atajos de la ventana Diagrama. v Tipos de expresión. El separador Tipos de expresión permite seleccionar todas las columnas que contengan expresiones vacías o expresiones que no sean válidas. 3. puede elegir otro enlace para que sea al enlace primario si es necesario. Especificación del enlace de entrada primario El primer enlace a una etapa Transformer siempre se designa como el enlace de entrada primario. v Seleccionar todas las columnas/variables de etapa con un determinado tipo de datos. Creación y supresión de columnas Acerca de esta tarea Puede crear columnas en los enlaces de la etapa Transformer utilizando cualquiera de los métodos siguientes: v Seleccione el enlace y. 4. 114 Guía del desarrollador de Server Job . Aparece el recuadro de diálogo Seleccionar. Seleccione Convertir en secuencia en el menú de atajos de la ventana Diagrama. Hay una lista desplegable adicional. Seleccione el enlace de entrada primario actual en la ventana Diagrama.El recurso de selección permite: v Seleccionar todas las columnas/variables de etapa cuyas expresiones contengan texto que coincide con el texto especificado. No obstante. Cuando copia columnas. v Edite las cuadrículas en el separador de metadatos del enlace para insertar una nueva columna. Tipo de datos. que limitará las columnas seleccionadas a aquellas con dicho tipo de datos. Para suprimir una columna desde el editor de transformador. Puede utilizar la lista desplegable Tipo de datos por sí sola para seleccionar todas las columnas de un determinado tipo de datos. Tiene tres separadores: v Texto de la expresión. elija Seleccionar en el menú de atajos del enlace. 2. que tiene en cuenta el valor de Coincidencia de mayúsculas y minúsculas. Para poder utilizar los recursos de selección. coincida con un tipo especificado). El texto especificado es una coincidencia de texto simple. seleccione la columna que desee suprimir y pulse Cortar o elija Suprimir columna en el menú de atajos. El separador Nombres de columna permite seleccionar todas las columnas/variables de etapa cuyo nombre contenga el texto especificado. v Utilice los menús de atajo para crear una nueva definición de columna. a continuación. Por ejemplo. se crea una nueva columna con los mismos metadatos que la columna desde la que se ha copiado. Los tipos de datos de la lista son tipos de datos genéricos y cada uno de los tipos de datos SQL de columna pertenece a uno de estos tipos genéricos. v Seleccionar todas las columnas con expresiones no válidas o que faltan. pulse el botón Cargar definición de columna en la barra de herramientas para abrir el recuadro de diálogo de carga de columnas estándar. puede seleccionar todas las columnas de serie dejando el campo de texto en blanco y seleccionar Serie como tipo de datos. v Utilice las funciones de arrastrar y soltar o copiar y pegar para crear una nueva columna copiándola de una columna existente en otro enlace. v Seleccionar todas las columnas/variables de etapa cuyo nombre contenga el texto especificado (y. Procedimiento 1. v Nombres de columna. Este separador Texto de la expresión permite seleccionar todas las columnas/variables de etapa cuyas expresiones contengan texto que coincide con el texto especificado.

puede arrastrar o copiar la celda de derivación de una columna a otra. a continuación. Definición de derivaciones de columna de salida Puede definir la derivación de las columnas de salida desde el editor de transformador de cinco formas: v Si necesita que se derive una nueva columna de salida directamente de una columna de entrada sin que se realice ninguna transformación. Capítulo 4. significa que el editor de transformador la considera incorrecta. Las columnas de salida tendrán los mismos nombres que las columnas de entrada de las que se derivan. Si una derivación aparece en rojo (o el color definido en Herramientas > Opciones). Si una columna de enlace de salida tiene definida una derivación que contiene las columnas de enlace de entrada. Etapas de trabajo de servidor 115 . En este caso. necesitará transformar los datos antes de derivar una columna de salida de ellos. puede rellenar todas las derivaciones de enlace de salida para direccionar los datos de las columnas de entrada correspondientes. Seleccione la columna necesaria y arrástrela a su nueva ubicación. simplemente significa que la derivación no cumple estrictamente las reglas del patrón de uso del motor de servidor. puede arrastrar o copiar una columna de entrada en un enlace de salida. o córtela y péguela en su nueva ubicación. y volver atrás y editar las columnas de enlace de salida individuales en las que desee una derivación diferente. Seleccione el separador de los metadatos de enlace que desee editar y. pero funcionará correctamente). v En muchos casos. efectúe una doble pulsación en la celda Derivación de la columna de enlace de salida necesaria. puede arrastrar o copiar una columna de entrada en el campo Derivación de la columna de salida.Movimiento de columnas en un enlace Acerca de esta tarea Puede mover las columnas en un enlace utilizando arrastrar y soltar o cortar y pegar. utilice los controles estándar de la cuadrícula de edición de IBM InfoSphere DataStage. Esto especifica que la columna se deriva directamente de una columna de entrada sin que se realice ninguna transformación. Con esta característica. Edición de metadatos de columna Acerca de esta tarea Puede editar los metadatos de columna desde la cuadrícula en la parte inferior del editor de transformador. Los metadatos mostrados no incluyen las derivaciones de columna ni las expresiones de clave. Puede haber varias líneas de relación que entran o salen de las columnas. ya que se editan en el área de enlaces. v Puede utilizar el recurso de coincidencia automática de columnas para establecer automáticamente que las columnas de salida se deriven de las columnas de entrada coincidentes. (En algunos casos. (También puede invocar el editor de expresiones utilizando el menú de atajos o las teclas de atajo). Para ello. utilice el editor de expresiones. Recurso de coincidencia automática de columnas: Esta característica permite ahorrar tiempo y establecer automáticamente las columnas en un enlace de salida para derivarlas de las columnas coincidentes en un enlace de entrada. Utilice el botón de la barra de herramientas para elegir si desea ver las relaciones de todos los enlaces o sólo las relaciones de los enlaces seleccionados. Para mostrar el editor de expresiones. se dibuja una línea de relación entre la columna de entrada y la columna de salida. v Si la columna de salida ya existe. v Es posible que necesite que una derivación de columna de enlace de salida sea la misma que otra derivación de columna de enlace de salida.

Omitir prefijo.. Omitir sufijo. Este valor también afecta a los valores de Omitir prefijo y Omitir sufijo. Seleccione este recuadro de selección para especificar que la distinción entre mayúsculas y minúsculas se debe pasar por alto al buscar coincidencias de nombres. De manera opcional. Elija en las listas el enlace de entrada o el enlace de salida para el que desee hacer coincidir las columnas. se pasará por alto IP e ip. v Omitir mayúsculas y minúsculas. Por ejemplo.. especifica los caracteres que van al final del nombre de la columna que se deben pasar por alto durante el procedimiento de coincidencia. Abra el recuadro de diálogo Coincidencia automática de columnas utilizando uno de los métodos siguientes: v Pulse el botón Coincidencia automática de columnas en la barra de herramientas del editor de transformador. en el menú de atajos. Se empieza por la primera columna del enlace de entrada que va a la primera columna del enlace de salida y continúa avanzando hasta que no quedan columnas de entrada. De manera opcional. especifica los caracteres que van delante del nombre de la columna que se deben pasar por alto durante el procedimiento de coincidencia. Seleccione una de estas opciones para especificar si se deben buscar coincidencias en todas las columnas del enlace de entrada o sólo en las seleccionadas actualmente en el enlace de entrada. Por ejemplo. Se abrirá el recuadro de diálogo Sustitución de expresiones. Pulse Aceptar para proseguir con la coincidencia automática. si especifica que el prefijo IP se pasará por alto y activa Omitir mayúsculas y minúsculas. se establecerán las derivaciones de las columnas de salida en las columnas del enlace de entrada en las posiciones equivalentes. puede hacerlo en dos pasos. deberá especificar más información para las columnas de entrada y salida de la siguiente manera: v Columnas de entrada: Coincidencia de todas las columnas o Coincidencia de las columnas seleccionadas. seleccione Sustitución de derivación. En primer lugar.Procedimiento 1. De manera opcional. v Columnas de salida: Omitir prefijo. 4. Si selecciona Coincidencia de ubicación. Si elige Coincidencia de nombre. Edición de varias derivaciones Acerca de esta tarea Para realizar ediciones en varias derivaciones de variable de etapa o columna de salida. utilice el recuadro de diálogo Seleccionar para seleccionar todas 116 Guía del desarrollador de Server Job . v Elija Coincidencia automática en el menú de atajos de la cabecera del enlace de entrada o la cabecera del enlace de salida. si desea añadir una llamada a la función trim() alrededor de todas las expresiones de columna de salida de serie de un enlace. Pulse Coincidencia de ubicación o Coincidencia de nombre en el área Tipo de coincidencia. Omitir sufijo. Nota: La coincidencia automática no tiene en cuenta la incompatibilidad de tipos de datos entre las columnas que relacionadas. 2. 3. De manera opcional. El recuadro de diálogo Sustitución de expresiones permite realizar el mismo cambio en las expresiones de todas las columnas seleccionadas actualmente en un enlace. especifica los caracteres que van al final del nombre de la columna que se deben pasar por alto durante el procedimiento de coincidencia. las derivaciones se establecen independientemente. especifica los caracteres que van delante del nombre de la columna que se deben pasar por alto durante el procedimiento de coincidencia.

Acerca de esta tarea El valor de sustitución puede ser un valor completamente nuevo. el valor de reemplazo especificado puede incluir dicha parte de la expresión original que se está sustituyendo. A continuación. cada aparición de una coincidencia se actualizará con el valor de sustitución especificado. Cuando se especifica el valor de sustitución. Seleccione la opción Expresión completa. "$1" será simplemente el texto "$1". Por ejemplo.col1) Esto se aplicará a las expresiones de cada una de las columnas seleccionadas. "$1" en el valor de sustitución representará el texto coincidente. la expresión regular especificada debe tener el valor entre paréntesis. debe utilizar este procedimiento: Procedimiento 1. Si se selecciona Sustituir todas las apariciones. especifíquelo como "$$1". El valor puede incluirse varias veces. sólo se sustituirá la primera aparición. 2. Expresión completa: Con esta opción. Al sustituir parte de una expresión. en lugar de la expresión completa. Si necesita incluir el texto real $1 en la expresión. utilice el recuadro de diálogo Sustitución de expresiones para aplicar una llamada trim() alrededor de cada uno de los valores de expresión existentes en las columnas seleccionadas.col1 Se sustituirá por: trim(DSLink3. Etapas de trabajo de servidor 117 . Si no se selecciona. Puede elegir entre la sustitución de la expresión completa o la sustitución de una parte de la expresión. Pulse Aceptar Resultados Si la expresión original de una columna era: DSLink3. La parte de la expresión que se sustituye está especificada por una coincidencia de expresión regular. Es posible que más de una parte de una serie de una expresión coincida con la expresión regular especificada. sólo se sustituye una parte de cada expresión seleccionada. Especifique un valor de sustitución: trim($1) 3. la expresión completa existente de cada columna se sustituye por el valor de sustitución especificado. Parte de la expresión: Acerca de esta tarea Con esta opción. Para ello.las columnas de salida de la serie. Si la expresión regular no se incluye entre paréntesis. el valor existente de la expresión de la columna puede incluirse en este nuevo valor incluyendo "$1". pero normalmente será un valor basado en el valor de la expresión original. si añade una llamada trim() alrededor de cada expresión del conjunto de columnas seleccionado actualmente y selecciona las columnas necesarias. Capítulo 4.

Supongamos que un conjunto seleccionado de columnas tienen derivaciones que utilizan columnas de entrada de `DSLink3'.OrderCount + 1 generará NullToZero(DSLink3.Total > 0) Then DSLink3. Los paréntesis entre los que se escribe la expresión completa indican que $1 representará el texto coincidente completo en el valor de sustitución. se proporciona un ejemplo de la parte de la sustitución de la expresión. se pueden incluir subconjuntos del texto de la expresión regular entre paréntesis en lugar de todo el texto. en el caso anterior. Puede utilizar el procedimiento siguiente para realizar esto. Especifique un valor de sustitución NullToZero($1) Este valor sustituye sólo las subseries coincidentes en la expresión original por las mismas subseries. Pulse Aceptar para aplicarlo a todas las derivaciones de columna seleccionadas. Especifique un valor de expresión regular: (DSLink3\. 4. la segunda expresión generará: If (NullToZero(DSLink3. pero rodeadas por la llamada NullToZero. Resultados En los ejemplos anteriores: DSLink3.[a-z.Total) > 0) Then DSLink3. toda la parte coincidente de la expresión original seguirá sustituida."seguido de varios dígitos o caracteres alfabéticos.Total Else -1 i se selecciona la opción Sustituir todas las apariciones.Total) > 0) Then NullToZero(DSLink3. 2.A-Z. para hacer referencia a cada parte coincidente entre paréntesis de la expresión regular especificada. 5.Para el uso de expresiones regulares complejas.OrderCount) + 1 y If (DSLink3. etc. Procedimiento 1. 3. En este caso. dos de estas derivaciones pueden ser: DSLink3.OrderCount + 1 If (DSLink3. el valor de sustitución puede ser: (If (StageVar1 > 50000) Then $1 Else ($1 + 100)) 118 Guía del desarrollador de Server Job .Total Else -1 Si desea proteger el uso de estas columnas de entrada de los valores nulos. Seleccione las columnas para las que desee sustituir expresiones. utilice un valor cero en lugar del nulo.Total > 0) Then DSLink3.0-9]*) Este coincidirá con las series que contengan "DSLink3. (Se supone que los nombres de columna de este caso están formados por dígitos y caracteres alfabéticos). Por ejemplo. A continuación. Por ejemplo. pero se puede utilizar "$1". Seleccione la opción Parte de la expresión.Total) Else -1 El valor de sustitución puede ser una serie de expresión de cualquier formato.Total Else -1 generará: If (NullToZero(DSLink3. "$2".

cambie el atributo Clave de la columna o columnas de claves foráneas necesarias por Sí. Si una expresión de clave aparece en rojo (o el color definido en Herramientas > Opciones). significa que el editor de transformador la considera incorrecta. debe definir qué columna o columnas son las claves foráneas en los metadatos de columna. puede arrastrar el borde izquierdo de la columna para expandirla. simplemente significa que la expresión de clave no cumple estrictamente las reglas del patrón de uso del motor de servidor. de la misma forma que las expresiones de clave primaria que se describen en “Definición de expresiones de clave de columna de entrada”. Definición de la búsqueda de múltiples filas para las entradas de referencia Acerca de esta tarea Cuando un enlace de referencia se origina en una etapa UniVerse o ODBC. las celdas de expresión de clave ocupan una columna muy estrecha. a continuación.OrderCount Else (DSLink3. En la mayoría de los casos. vaya al separador General en la página Entradas. Si necesita una expresión más compleja que un equijoin. Inicialmente. la línea de relación ofrece suficiente información sobre la expresión de clave. También puede arrastrar o copiar una expresión de clave existente en otra columna de entrada. puede efectuar una doble pulsación en la celda de la expresión de clave necesaria para abrir el editor de expresiones. En la mayoría de los casos. Este proceso es similar a la definición de derivaciones para las columnas de salida. (En algunos casos. abra el recuadro de diálogo Propiedades de la etapa Transformer. la expresión DSLink3. Para ello. Las expresiones de clave foránea pueden definirse mediante el editor de expresiones. compruebe que el enlace de entrada de referencia esté seleccionado y seleccione el recuadro de diálogo Enlace de referencia con conjunto de resultados en múltiples filas. una expresión de clave será un equijoin de una columna de enlace de entrada primario. Para ello. Para poder utilizar la funcionalidad de múltiples filas.OrderCount + 1 generará: (If (StageVar1 > 50000) Then DSLink3.OrderCount + 100)) + 1 Definición de expresiones de clave de columna de entrada Puede definir expresiones de clave para los campos de clave de las entradas de referencia. de lo contrario. Etapas de trabajo de servidor 119 .En el primer caso anterior. Puede especificar un equijoin de dos formas: v Utilice arrastrar y soltar para arrastrar una columna de enlace de entrada primario a la celda de expresión de clave correspondiente. en lugar de con una clave primaria. puede buscar múltiples filas desde la tabla de referencia. cambie el atributo Clave de la columna de claves primarias actual por No y. pero funcionará correctamente). como ocurre con los enlaces de referencia normales. También debe especificar que el enlace de referencia utiliza la funcionalidad de múltiples filas. Las filas se seleccionan con una clave foránea. Se crea un enlace de relación entre la columna de enlace de entrada primario y la expresión de clave. v Utilice copiar y pegar para copiar una columna de enlace de entrada primario y pegarla en la celda de expresión de clave correspondiente. Capítulo 4. y arrastrar o copiar varias selecciones.

un mensaje de aviso le recordará que debe compilar la rutina cuando cierre el recuadro de diálogo Etapa Transformer. Los enlaces de rechazo generan filas que no se han grabado en otros enlaces de salida de la etapa Transformer. Cuando se actualiza InfoSphere DataStage. Puede continuar utilizando estas rutinas. Un código de retorno 0 de la rutina indica que ha resultado satisfactoria y cualquier otro código indica que la rutina ha resultado anómala y provoca un error muy grave cuando se ejecuta el trabajo. se identifican estas rutinas y se renombran automáticamente. Las restricciones son expresiones BASIC y puede especificar una restricción para cada enlace de salida de una etapa Transformer. Para definir una restricción o especificar un enlace de rechazo. aparecerá un mensaje de aviso cuando cierre el recuadro de diálogo. aparece como BeforeSubr\<Rev1> en el campo Subrutina anterior a la etapa. pulse el botón de propiedades de la etapa en la barra de herramientas para abrir el recuadro de diálogo Propiedades de la etapa. utilice una de las opciones siguientes: v Seleccione un enlace de salida y pulse el botón Restricciones. es posible que el campo Subrutina anterior a la etapa o Subrutina posterior a la etapa haga referencia a una rutina que no exista en el sistema. No obstante. si utiliza una subrutina anterior a la etapa denominada BeforeSubr. En tal caso.Especificación de subrutinas anteriores y posteriores a la etapa Acerca de esta tarea Como la etapa Transformer es un tipo de etapa activa. el campo Valor de entrada está sombreado cuando utiliza una de estas rutinas "antiguas". Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. v Elija Restricciones en los menús de atajos de cabecera o en segundo plano. v Efectúe una doble pulsación en el campo de entrada de restricción del enlace de salida. v Subrutina posterior a la etapa y Valor de entrada. Esta lista contiene todas las rutinas integradas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. Si ha instalado o importado un trabajo. el campo Subrutina anterior a la etapa o Subrutina posterior a la etapa puede contener el nombre de una rutina creada en el Release 1. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar. 120 Guía del desarrollador de Server Job . Si edita un trabajo creado utilizando el Release 1 de IBM InfoSphere DataStage. Seleccione una rutina en la lista. Por ejemplo. que se ha editado pero que no se ha compilado. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. puede especificar rutinas para ejecutarlas antes o después de que la etapa haya procesado los datos. como no ha podido especificar valores de entrada para las rutinas en el Release 1 de InfoSphere DataStage. Aparecerá un recuadro de diálogo que permite definir restricciones en los enlaces de salida de la etapa Transformer o definir un enlace como un enlace de rechazo. También puede especificar que un enlace concreto actúe como un enlace de rechazo. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. El separador General contiene los campos siguientes: v Subrutina anterior a la etapa y Valor de entrada. Definición de restricciones y manejo de rechazos Acerca de esta tarea Puede definir límites en los datos de salida especificando una restricción. Para especificar una rutina. Si elige una rutina definida en el repositorio.

sólo debe utilizar un enlace de rechazo cuyo campo Restricción esté en blanco.WRITERROR.NOERROR AND nombre_enlace. v Puede definirse cualquier otra Restricción. el campo Restricción puede dejarse en blanco. Nota: Debido a la naturaleza del caso "detectar todo" anterior.. Esto hará que el número de filas grabadas en el enlace (es decir.REJECTED detallado en el primer caso anterior.. puede establecer los valores de retorno de nombre_enlace. Etapas de trabajo de servidor 121 . del Editor de expresiones.REJECTED. establezca el campo Restricción en nombre_enlace. establezca el campo Restricción en nombre_enlace. la fila no se grabará en el enlace. Para los enlaces de entrada. establezca el campo Restricción en nombre_enlace. pero tenga en cuenta que la mayoría de errores de grabación devuelven DSE.REJECTEDCODE y nombre_enlace.REJECTEDCODE = DSE. Para los enlaces de salida. las restricciones existentes aparecerán debajo de la barra de título del enlace en el Editor de transformación. Tenga en cuenta que este tipo de enlace de rechazo debe producirse después del enlace de salida desde el que se ha definido para detectar los rechazos. El valor de nombre_enlace.REJECTEDCODE realizando una selección en las opciones de menú Variables de enlace Restricciones.REJECTED – Para detectar qué filas se han rechazado debido a una restricción o un error de grabación.Defina una restricción especificando una expresión BASIC en el campo Restricción del enlace. Esto debe establecerse siempre se rechace una fila en el enlace nombre_enlace. puede ordenar todos los enlaces.REJECTEDCODE. v Para detectar las filas que han generado un error de grabación en un enlace de salida.REJECTED. A continuación. Por ejemplo: – Para detectar las filas que no se ha podido grabar en un enlace de salida.REJECTED v Para "detectar todo". Especificación del orden de enlaces Puede especificar el orden en el que los enlaces de entrada y los enlaces de salida procesan una fila. seleccione Sí en el campo Fila de rechazo y establezca el campo Restricción de la siguiente manera: v Para detectar las filas que se han rechazado en un enlace de salida específico.REJECTEDCODE será distinto de cero si la fila se ha rechazado debido a un error de grabación o 0 (DSE. debe definirlos para que utilicen el distintivo nombre_enlace. Estos proporcionan un rango de errores. Capítulo 4. Cuando edita el campo Restricción. Esta expresión de restricción se comprobará con los datos de fila en el tiempo de ejecución. establezca el campo Restricción en nombre_enlace. Para poder establecer una restricción de rechazo que diferencie entre un error de grabación y una restricción no cumplida. puede ordenar los enlaces de referencia (el enlace primario siempre se procesa primero). Esto indica que este enlace de rechazo detectará todas las filas que no se han grabado satisfactoriamente en ninguno de los enlaces de salida procesados hasta este punto.REJECTEDCODE – Para detectar las filas que no cumplen una restricción en un enlace de salida. Si los datos no cumplen la restricción. Acerca de esta tarea El orden inicial de los enlaces el orden en el que se añaden a la etapa. las filas que cumplen la restricción) se registren en el registro de trabajo como "filas rechazadas". ya sea porque la fila no cumple una restricción del enlace de salida o porque una operación de grabación en el destino falla para la fila. Por lo tanto. Para utilizar varios enlaces de rechazo.NOERROR) si la fila se ha rechazado porque no se ha cumplido una restricción de enlace. Para definir un enlace de rechazo. También es posible definir un enlace que se puede utilizar para detectar las filas que se han "rechazado" de un enlace anterior. establezca el campo Restricción en nombre_enlace. puede utilizarse una combinación de los distintivos nombre_enlace. el enlace de rechazo debe ser el último enlace en el orden de proceso definido.

La tabla muestra las variables de etapa junto con las expresiones utilizadas para derivar sus valores. 3.Procedimiento 1. v Pueden utilizarse en expresiones que definen una derivación de columna de salida. Nota: Aunque los recursos de orden de los enlaces permiten utilizar una columna de salida anterior para derivar una columna de salida posterior. pulse el botón Variables de etapa en la barra de herramientas del transformador. 122 Guía del desarrollador de Server Job . Para mostrar u ocultar la tabla. Asegúrese de que la variable no utilice el nombre de ninguna palabra clave de BASIC. La tabla es parecida a un enlace de salida. Utilice los controles de la cuadrícula estándar para añadir nuevas variables. 2. Abra el recuadro de diálogo Propiedades de la etapa Transformer de la siguiente manera: v Pulse el botón Propiedades de la etapa en la barra de herramientas del transformador. A-Z. Si está satisfecho con el orden. sus valores iniciales y una descripción opcional. Pueden utilizarse de la siguiente manera: v Se les pueden asignar valores por expresiones. Los nombres de variable deben empezar por un carácter alfabético (a-z. Procedimiento 1. pulse Aceptar. Acerca de esta tarea Puede declarar y utilizar sus propias variables en una etapa Transformer. El separador Variables contiene una cuadrícula que muestra las variables declaradas actualmente. Resultados Las variables especificadas en el recuadro de diálogo Propiedades de la etapa aparecen en la tabla Variable de la etapa en el panel de enlaces. no se recomienda y recibirá un aviso si lo hace. o seleccione Variables de etapa en el menú de atajos en segundo plano. v Las expresiones que evalúan una variable pueden incluir otras variables o la propia variable que se está ejecutando. 0-9). Las líneas de enlace unen las variables de etapa con las columnas de entrada utilizadas en las expresiones. Las variables de etapa que declara se muestran en una tabla en el panel de la derecha del área de enlaces. A-Z) y sólo pueden contener caracteres alfanuméricos (a-z. v Elija Reordenar enlaces de entrada o Reordenar enlaces de salida en el menú de atajos en segundo plano. Pulse el separador Variables de la página General. Los enlaces de la derecha de la tabla enlazan las variables con las columnas de salida que las utilizan. Las variables de etapa no se muestran en el área de metadatos del enlace de salida en la parte inferior del panel de la derecha. v Seleccione Propiedades de la etapa desde el menú de atajos de fondo. Este tipo de variables son accesibles sólo desde la etapa Transformer en la que se declaran. v Pulse el botón Propiedades de la etapa en la barra de herramientas del transformador o elija Propiedades de la etapa en el menú de atajos en segundo plano y pulse el separador Orden de los enlaces de la página Etapa. Utilice los botones de flecha para reorganizar la lista de enlaces en el orden de ejecución necesario. Abra el separador Orden de los enlaces del recuadro de diálogo Propiedades de la etapa Transformer de la siguiente manera: v Pulse el botón Orden de ejecución de los enlaces de entrada o Orden de ejecución de los enlaces de salida en la barra de herramientas del editor de transformador. Definición de variables de la etapa local Puede declarar una variable de etapa local. 2.

" argument_list function_name ::= name of a built-in function | name of a user-defined_function variable_name ::= job_parameter name | stage_variable_name | link_variable name other_name ::= name of a built-in macro. Un menú de tajos ofrece los mismos mandatos. Etapas de trabajo de servidor 123 . no puede pegar una variable de etapa como una nueva columna o una columna como una nueva variable de etapa. puede realizar prácticamente las mismas operaciones en una variable de etapa que en una columna de salida (consulte “Definición de derivaciones de columna de salida” en la página 115).En general. use XXX not including the quotation marks) ================================================= expression ::= function_call | variable_name | other_name | constant | unary_expression | binary_expression | if_then_else_expression | substring_expression | "(" expression ")" function_call ::= function_name "(" [argument_list] ")" argument_list ::= expression | expression ". and so on constant ::= numeric_constant | string_constant numeric_constant ::= ["+" | "-"] digits ["." [digits]] ["E" | "e" ["+" | "-"] digits] string_constant ::= "’" [characters] "’" | """ [characters] """ | "\" [characters] "\" unary_expression ::= unary_operator expression unary_operator ::= "+" | "-" binary_expression ::= expression binary_operator expression binary_operator ::= arithmetic_operator | Capítulo 4. system variable. El editor de expresiones puede: v Facilitar la entrada de elementos de expresión v Completar los nombres de variables utilizadas frecuentemente v Validar nombres de variables y toda la expresión El Editor de expresiones se puede abrir desde: v Celdas Derivación del enlace de salida v Celdas Derivación de la variable de la etapa v Celdas Expresión de clave del enlace de entrada v Recuadro de diálogo Restricción v Recuadro de diálogo Transformación en el repositorio Formato de expresión El formato de una expresión es el siguiente: KEY: something_like_this is a token something_in_italics is a terminal. Editor de expresiones de IBM InfoSphere DataStage El Editor de expresiones de InfoSphere DataStage permite especificar expresiones correctas cuando edita etapas Transformer. doesn’t break down any further | is a choice between tokens [ is an optional part of the construction "XXX" is a literal token (that is. También permite definir transformaciones personalizadas en el repositorio (consulte “Definición de transformaciones personalizadas” en la página 144). that is. No obstante.

.. puede utilizar el editor de expresiones para sugerir el siguiente elemento de la expresión." expression "... Serie. Parámetro de trabajo. Se le ofrecerá una selección diferente del menú Sugerir operando. "IF" o "EQ" pueden ir en mayúsculas o minúsculas. El menú que aparece depende del contexto..concatenation_operator | matches_operator | relational_operator | logical_operator arithmetic_operator ::= "+" | "-" | "*" | "/" | "^" concatenation_operator ::= ":" matches_operator ::= "MATCHES" relational_operator ::= " =" |"EQ" | "<>" | "#" | "NE" | ">" | "GT" | ">=" | "=>" | "GE" | "<" | "LT" | "<=" | "=<" | "LE" logical_operator ::= "AND" | "OR" if_then_else_expression ::= "IF" expression "THEN" expression "ELSE" expression substring_expression ::= expression "[" [expression [". de si debe especificar un operando o un operador como siguiente elemento de expresión. Menú Sugerir operando: etapa Transformer Macro de DS. Constante de DS.. 124 Guía del desarrollador de Server Job . Variable del sistema... Para ello. Función.... pulse con el botón derecho del ratón sobre el recuadro o pulse el botón Sugerir a la derecha del recuadro.... Rutina de DS... o una transformación personalizada. dependiendo de si está definiendo expresiones de clave.. Se abrirá el menú Sugerir operando o Sugerir operador.. Especificación de expresiones Cuando el punto de inserción está en un recuadro de la expresión. () Paréntesis If Then Else Menú Sugerir operando: definición de transformaciones personalizadas Macro de DS." expression] "]" field_expression ::= expression "[" expression ".. Transformación de DS.. Columna de entrada... siempre 3 argumentos Nota: Las palabras clave "AND". es decir.. Variables de enlace Variables de etapa." expression "]" /* Es decir. derivaciones y restricciones.. El menú Sugerir operador siempre es el mismo. Función de DS.

. Constante de DS. en la página 149.. DailySales.. Cuando especifica el nombre de una variable que ha utilizado anteriormente. Si hay un error. el Editor de expresiones muestra una lista de los nombres de columna del enlace. aparece un mensaje y el elemento que causa el error se resalta en el recuadro de la expresión. El editor de expresiones comprueba que la sintaxis sea correcta y que los nombres de variable utilizados sean aceptables para el compilador. Si continúa escribiendo. Función. Variable del sistema. También puede seleccionar un nombre de columna utilizando el ratón. Si especifica el nombre de un enlace de entrada seguido de un punto... Pulse Esc para descartar la lista sin seleccionar un nombre de columna. En el editor de transformador.. Capítulo 4. pulse Intro para validarla.. simplemente significa que la expresión no cumple estrictamente las reglas del patrón de uso del motor de servidor. puede escribir los primeros caracteres y pulsar F5. pero funcionará correctamente). por ejemplo.. Rutina de DS. Para obtener más información sobre la sintaxis que puede utilizar en una expresión.. las expresiones que no son válidas se muestran en rojo.. Validación de la expresión Si ha especificado una expresión en el editor de transformador.. Serie. El Editor de expresiones completa el nombre de la variable automáticamente.. Puede corregir la expresión o cerrar el editor de transformador o el recuadro de diálogo Transformación.. consulte Capítulo 7. Especifique el nombre de columna seleccionado en la expresión pulsando el Tabulador o Intro. () Paréntesis If Then Else Menú Sugerir operador + * / ^ = <> < <= > >= Concatenar Subserie Coincidencias And Or Cómo completar los nombres de variables El Editor de expresiones almacena nombres de variables. pulse Aceptar para validar la expresión...Menú Sugerir operando: definición de transformaciones personalizadas Función de DS. la selección de lista cambia para coincidir con los que escribe. “Programación BASIC”. (En algunos casos. Etapas de trabajo de servidor 125 . Cuando utilice el editor de expresiones para definir una transformación personalizada. Argumento de transformación.

Para obtener más información sobre las opciones del cliente del Diseñador. Permite configurar variables de etapa para utilizarlas en la etapa. Página Etapa La página Etapa tiene cuatro separadores: v General. El separador Orden de los enlaces se describe en “Especificación del orden de enlaces” en la página 121. v Página Salidas. Se utiliza para especificar información general sobre la etapa. Permite introducir una descripción opcional de la etapa y especificar una subrutina anterior o posterior a la etapa. El separador General se describe en “Rutinas anteriores y posteriores a la etapa” en la página 112. La etapa Transformer sólo puede tener un enlace de entrada. v Orden de los enlaces. consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide. El Editor de expresiones se configura editando las opciones del cliente del Diseñador. Página Entradas La página Entradas permite especificar detalles sobre los datos que llegan a la etapa Transformer. 126 Guía del desarrollador de Server Job . Propiedades de la etapa Transformer La etapa Transformer tiene un recuadro de diálogo Propiedades que permite especificar detalles sobre cómo opera la etapa. Aquí se especifican los detalles sobre los enlaces de salida de la etapa Transformer. El separador General permite especificar una descripción opcional del enlace de entrada. Página Salidas La página Salidas tiene un separador General que permite especificar una descripción opcional para cada uno de los enlaces de salida en la etapa Transformer. v Página Entradas. Permite especificar el orden en el que se procesarán los enlaces de salida. El recuadro de diálogo Etapa Transformer tiene tres páginas: v Página Etapa.Cómo salir del Editor de expresiones Acerca de esta tarea Puede salir del Editor de expresiones de la siguiente forma: v Pulse Esc (y se descartan los cambios). Si prefiere no utilizarlo. El separador Variables se describe en “Definición de variables de la etapa local” en la página 122. puede desactivarlo o utilizar sólo características seleccionadas. Configuración del Editor de expresiones El Editor de expresiones está activado de forma predeterminada. v Pulse fuera del recuadro del Editor de expresiones (y se aceptan los cambios). v Pulse Retorno (y se aceptan los cambios). Aquí se especifican los detalles sobre la entrada de datos en la etapa Transformer. v Variables.

Acerca de esta tarea El depurador se ejecuta desde el cliente del Diseñador. Los puntos de interrupción no se heredan cuando un trabajo se guarda con otro nombre.Capítulo 5. Cuando haya instalado todas las etapas en un diseño de trabajo. termina de moverse o se renombra. Posteriormente. Depuración y compilación de un trabajo Estos temas describen cómo crear un trabajo ejecutable. Para añadir un punto de interrupción: Procedimiento 1. sólo debe establecer un punto de interrupción cada vez en estos trabajos. podrá crear un trabajo ejecutable compilando el diseño de trabajo. 1997. Elija Conmutar punto de interrupción en el menú Depurar o la barra de herramientas Depurar. puede pasar a la siguiente acción (lectura o grabación) en el enlace. Para asegurarse de que esto no ocurre. el trabajo se detendrá cuando alcance un punto de interrupción. No puede establecer puntos de interrupción en más de un proceso a la vez. Los puntos de interrupción que ha establecido permanecen si el trabajo se cierra y se vuelve a abrir. 2. el trabajo se puede validar y ejecutar utilizando el cliente del Director. Cuando ejecuta el trabajo en la modalidad de depuración. Puede utilizarse desde distintos lugares en el cliente del Diseñador: v Menú Depurar (Depurar) v Barra de herramientas Depurar v Menú de atajos (algunos mandatos). o pasar al proceso en la siguiente fila de datos (que puede estar en el mismo enlace o en otro). Elija Editar puntos de interrupción en el menú Depurar o pulse Editar puntos de interrupción en la barra de herramientas Depurar para abrir el recuadro de diálogo Editar puntos de interrupción y configurar el punto de interrupción. el nuevo enlace no hereda el punto de interrupción. No obstante. El depurador permite establecer puntos de interrupción en los enlaces del trabajo. El punto de interrupción puede eliminarse posteriormente seleccionado Conmutar punto de interrupción otra vez. se exporta o se actualiza. © Copyright IBM Corp. El depurador ayuda a eliminar cualquier problema del diseño. Nota: Tenga cuidado cuando depure trabajos que ejecuten procesos paralelos (utilizando etapas IPC o enlaces de activo a activo entre procesos). 2011 127 . A continuación. Resultados Aparece un círculo en el enlace para indicar que se ha añadido un punto de interrupción. El depurador de IBM InfoSphere DataStage El depurador de InfoSphere DataStage proporciona recursos básicos para probar y depurar los diseños de trabajo de servidor. si se suprime un enlace y se crea otro con el mismo nombre. Los puntos de interrupción se validan cuando se compila el trabajo y permanecen válidos si el enlace al que pertenecen se mueve. Seleccione el enlace necesario.

2. La Ventana de depuración permite ver las variables en la lista de observaciones y las variables en contexto cuando se detiene un punto de interrupción. El enlace sólo mostrará que tiene un punto de interrupción en la vista del contenedor. v Ir. Acerca de esta tarea Los siguientes mandatos están disponibles en el menú Depurar o la barra de herramientas Depurar: v Trabajo de destino. cuando se detiene en modalidad de interrupción. La lista de observaciones se guarda entre las distintas sesiones. Puede arrastrar la barra divisora entre los dos paneles para redimensionar los paneles. Si pulsa con el botón derecho del ratón sobre la Ventana de depuración. El trabajo se ejecuta hasta que se procesa la siguiente fila o hasta que se encuentra otro enlace con un punto de interrupción. aparece un menú de atajos que contiene los mismos elementos que el menú Depurar. Durante la depuración. v Pasar a la siguiente fila. Una vez depurado un trabajo. Para suprimir variables de la lista de observaciones. La Ventana de depuración está visible cuando se selecciona Depurar > Ventana de depuración. consulte el apartado “Depuración de los contenedores compartidos” en la página 129. Antes de iniciar la depuración. el trabajo se ejecutará hasta que se encuentre un punto de interrupción. A continuación. que mantiene un registro de las variables seleccionadas el tiempo que sea necesario. La Ventana de depurador tiene dos paneles de visualización. Sólo puede depurarse un trabajo cada vez. sus valores se muestran y se actualizan en cada punto de interrupción. En su lugar.No puede colocar un punto de interrupción en un enlace que tenga un contenedor como etapa de origen. y todas se marcan como "Fuera de contexto". el trabajo 128 Guía del desarrollador de Server Job . lo que permite interactuar con el trabajo. el panel muestra sólo las variables que hay en contexto cuando se detiene el trabajo en el punto de interrupción. El panel superior muestra variables locales. En la modalidad de depuración. Siempre aparece sobre la ventana del cliente del Diseñador. A continuación. Para añadir una variable a la lista de observaciones: Procedimiento 1. Puede añadir las variables en contexto que desee a la lista de observaciones. el trabajo en la lista Trabajo de destino no estará disponible. Selecciona el trabajo que se va a depurar. se muestran todas las columnas de todos los enlaces del trabajo. aparece el recuadro de diálogo Opciones de ejecución del trabajo. compilándolo primero si es necesario. Pulse Añadir observación. Seleccione el nombre de la variable en el panel superior de la Ventana de depuración. que permite recopilar los valores de parámetro necesarios o los límites de tiempo de ejecución. seleccione las variables y pulse Eliminar observación. debe colocar el punto de interrupción en el mismo enlace que se representa en la propia vista del contenedor. Para obtener más información. Muestra los nombres y los valores de las variables que hay actualmente en contexto. La variable se añadirá a la lista de observaciones y aparecerá en el panel inferior. se detiene en la modalidad de interrupción. El panel inferior muestra las variables de la lista de observaciones. lo que ocurra primero. se marcan como "Fuera de contexto". La primera vez que se utiliza Ir después de compilar o cargar un trabajo. Ejecuta el trabajo actual en la modalidad de depuración. Cuando las variables están en contexto. El trabajo se ejecuta hasta que se produce la siguiente acción en un enlace (lectura o grabación). Cuando variables no están en contexto. La ventana también proporciona información sobre el estado del trabajo y el depurador. v Pasar al siguiente enlace.

se añade uno que especifica una detención en cada fila procesada. se invoca el recuadro de diálogo Opciones de ejecución del trabajo. si no ha empezado a depurar todavía o se ha detenido en un aviso). Detiene el trabajo y sale de la modalidad de interrupción. v Borrar todos los puntos de interrupción. Depuración y compilación de un trabajo 129 . Seleccione esta opción para abrir el cliente del Director con el trabajo actual abierto en la vista de registro de trabajo (el trabajo debe haberse guardado en el cliente del Diseñador en algún punto para que esto funcione). v Parámetro de trabajo. v Editar puntos de interrupción. aunque los puntos de interrupción se manejan de forma diferente: v No puede colocar un punto de interrupción en un enlace que tenga un contenedor como etapa de origen. Permite especificar parámetros de trabajo para cuando se ejecuta el trabajo en modalidad de depuración. v Detener trabajo. Si un enlace tiene un conjunto de puntos de interrupción (indicado por un círculo negro en el origen de enlace). Permite establecer o borrar un punto de interrupción en el enlace seleccionado. Depuración de los contenedores compartidos El proceso de depurar contenedores compartidos es el mismo que el de otros trabajos. Si el enlace no tiene ningún punto de interrupción. v Ver registro de trabajo.. Suprime todos los puntos de interrupción definidos para todos los enlaces.. Si selecciona esta opción. Permite editar los puntos de interrupción existentes o añadir otros nuevos. que permite especificar los parámetros necesarios o los límites de tiempo de ejecución del trabajo. Conmutar punto de interrupción borra el punto de interrupción. v Ventana de depuración.se detiene en modalidad de interrupción. Sólo está disponible en la modalidad de interrupción. se ejecutará como Pasar al siguiente enlace. El elemento se inhabilita cuando se inicia el trabajo en modalidad de depuración. Deselecciónela para ocultar la Ventana de depuración.. Capítulo 5. Seleccione esta opción para ver la Ventana de depuración.. v Conmutar punto de interrupción. Si el trabajo no se ha detenido actualmente en un punto de interrupción en un enlace (por ejemplo.

sólo se activará (y estará visible) para el trabajo de destino. 130 Guía del desarrollador de Server Job . v Si se establece un punto de interrupción en un enlace dentro de un contenedor compartido.En su lugar. El enlace sólo se mostrará con un punto de interrupción en la vista del contenedor. debe colocar el punto de interrupción en el mismo enlace que se representa en la vista del contenedor. tal como se muestra en la barra de depuración.

' El punto de interrupción sólo se establecerá para el trabajo de destino que es Exercise 4. v Cerrar. Capítulo 5. deberá pulsar Aceptar. abra el trabajo en el cliente del Diseñador y efectúe uno de los pasos siguientes: v Seleccione Archivo > Compilar. Este botón sólo está activo si se ha generado un error durante la compilación. Se abrirá la ventana Compilar trabajo. v Más. Resalta la etapa que ha generado un error de compilación. en caso afirmativo.Nota: La barra de depuración sólo muestra trabajos de servidor abiertos porque un contenedor compartido no puede ejecutarse fuera del contexto de un trabajo. Vuelve a compilar el trabajo si se han efectuado cambios. el punto de interrupción no estará visible ni se activará en el otro trabajo. Si se han realizado cambios en el trabajo pero no se han guardado. Cierra la ventana Compilar trabajo. Depuración y compilación de un trabajo 131 . Algunos errores producidos por el compilador incluyen una salida BASIC detallada. Muestra la salida que no se adapta al área de visualización. Esta ventana contiene una área de visualización para mensajes de compilación y tiene los siguientes botones: v Recompilar. v Pulse el botón Compilar en la barra de herramientas. Para compilar un trabajo. el sistema le preguntará si desea guardar el trabajo y. que utiliza el mismo contenedor compartido que el ejemplo anterior denominado `Exercise 4. v Mostrar error. El siguiente ejemplo muestra un trabajo denominado `Ex2'. v Si otro trabajo utiliza el mismo contenedor compartido que se está depurando. Compilación de un trabajo Acerca de esta tarea Los trabajos se compilan utilizando el cliente del Diseñador.

(También puede realizar una ejecución de prueba en el cliente del Diseñador durante el desarrollo. puede: v Validar el trabajo v Ejecutar o planificar el trabajo Los trabajos se validan utilizando el cliente del Director. Si tiene más de un enlace de entrada a una etapa Transformer. aunque las ejecuciones de producción se ejecutan normalmente en el cliente del Director). Consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide para obtener más información. Debe comprobar el área de visualización por si se han producido mensajes de compilación o se han generado errores. Si se establecen puntos de interrupción para enlaces que ya no existen. Compilación satisfactoria Si la ventana Compilar trabajo muestra el mensaje Trabajo compilado satisfactoriamente sin errores.v Ayuda. puede utilizar el botón Mostrar error para solucionar los problemas del diseño del trabajo. Cuando pulsa Mostrar error. Resolución de problemas Si la ventana Compilar trabajo muestra un error. Consulte IBM InfoSphere DataStage and QualityStage Director Client Guide para obtener más información. Debe editar la etapa para cambiar los valores incorrectos y volver a compilar el trabajo. Si tiene entradas de referencia definidas en una etapa Transformer. v Entrada de referencia. 132 Guía del desarrollador de Server Job . se resalta la etapa que contiene el primer error en el diseño. Invoca al sistema de ayuda. el compilador comprueba que sea una transformación adecuada para el tipo de datos. aparece un mensaje durante la compilación para avisarle al respecto. v Expresiones de clave. También puede compilar varios trabajos a la vez utilizando el asistente del compilador de IBM InfoSphere DataStage. El proceso de solucionar los errores de iteración es un proceso iterativo. El trabajo se compila tan pronto como se abre la ventana. el compilador comprueba que éstas no provengan de archivos secuenciales. Debe perfeccionar cada etapa "problemática" hasta que el trabajo se compile satisfactoriamente. el compilador comprueba que haya expresiones de clave que unan las tablas de datos. Los puntos de interrupción se eliminan automáticamente. Comprobaciones de compilación Durante la compilación se comprueban los criterios siguientes en el diseño del trabajo: v Entrada primaria. Si ha especificado una transformación. Supervisor de rendimiento gráfico El supervisor de rendimiento resulta una útil soporte de diagnóstico al diseñar trabajos de servidor de IBM InfoSphere DataStage. v Transformaciones. el compilador comprueba que se haya definido uno como enlace de entrada primario. Si tiene campos de clave especificados en sus definiciones de columna.

Procedimiento 1. Si el trabajo aún no se ha ejecutado. mediante el cliente del Director o depurador. Ejecute el trabajo (desde el cliente del Director o seleccionado Depurar > Ir). Capítulo 5. la información del enlace se completa con estadísticas para mostrar el número de filas procesadas en el enlace y la velocidad con la que éstas se procesan. elija Diagrama > Mostrar estadísticas de rendimiento.Acerca de esta tarea Si se activa y se compila un trabajo. Depuración y compilación de un trabajo 133 . Con el trabajo abierto y compilado en el Diseñador. Los enlaces cambian de color cuando se ejecuta el trabajo para mostrar el progreso del trabajo. Observe como los enlaces cambian de color mientras se ejecuta el trabajo y cómo se llenan las estadísticas con el número de filas y filas/seg. Si ejecuta el trabajo. las figuras estarán vacías. éste muestra información sobre cada enlace del trabajo. Aparecerá información sobre el rendimiento de los enlaces. 2.

134 Guía del desarrollador de Server Job . Los colores que utiliza el supervisor de rendimiento se establecen mediante el recuadro de diálogo Opciones. perderá la información estadística hasta la próxima vez que compile el trabajo. También puede establecer el intervalo de renovación según el cual el supervisor actualizará la información mientras se ejecuta el trabajo.Resultados Si altera cualquier cosa del diseño de trabajo. Elija Herramientas > Opciones y seleccione la ramificación Supervisor de rendimiento gráfico para ver los colores predeterminados y cambiarlos si es necesario.

a su vez. si lo desea. pero puede almacenarlas en la carpeta que prefiera. Hay varias áreas en un trabajo de servidor donde. en concreto. También puede definir sus propios componentes de programación utilizando el cliente del Diseñador. Se almacenan en el repositorio y puede reutilizarse para otros trabajos y por otros usuarios de InfoSphere DataStage. Transformer y algunas etapas suplementarias. La mayoría utilizan el lenguaje BASIC. Puede ver. Componentes de programación En los trabajos de servidor. invoca las funciones externas. 1997. 2011 135 . se utilizan tipos de componentes de programación muy diferentes. La función especificada en una definición de transformación convierte los datos en una columna seleccionada. según sea necesario. v Definición de derivaciones. Estas subrutinas pueden utilizarse para controlar otros trabajos dentro del trabajo actual. Pueden clasificarse en tres categorías principales: v Incorporados. v Definición de transformaciones personalizadas. puede definir una rutina que se reutilizará en varias transformaciones personalizadas. v Externos. Estas subrutinas realizan una acción antes o después de ejecutar un trabajo y se establecen como propiedades del trabajo. que proporciona una potente herramienta de programación de procedimientos. y el código subyacente no está visible. Estas subrutinas realizan una acción antes o después de que una etapa haya procesado los datos. ver o editar utilizando el recuadro de diálogo Rutina de servidor. v Definición de subrutinas anteriores y posteriores a la etapa. es posible invocarlas desde InfoSphere DataStage. Programación en IBM InfoSphere DataStage Estos temas describen las tareas de programación que se pueden realizar en trabajos de servidor de InfoSphere DataStage. editar y crear sus propias rutinas BASIC utilizando el cliente del Diseñador. Los siguientes componentes de programa se clasifican como rutinas: © Copyright IBM Corp. Por ejemplo. rutinas (consulte “Cómo trabajar con las rutinas” en la página 138) y transformaciones personalizadas (consulte “Definición de transformaciones personalizadas” en la página 144). v Definición de rutinas de control de trabajos. En las siguientes secciones se describen los términos de programación que deberá conocer cuando programe trabajos de servidor. Para ello. v Personalizados. y puede copiar el código desde ellos. puede especificar código: v Definición de rutinas personalizadas que se utilizan como bloques de creación en otras tareas de programación. expresiones de clave y restricciones mientras se edita una etapa Transformer. Puede utilizar algunos tipos de componentes externos desde InfoSphere DataStage. se define una rutina de derivador que. Pueden especificarse para las etapas Aggregator. Las rutinas se pueden crear. Otros son sólo accesibles desde el Editor de expresiones.Capítulo 6. Rutinas Las rutinas se almacenan en la carpeta Rutinas del árbol de repositorio de forma predeterminada. v Definición de subrutinas anteriores y posteriores al trabajo. Algunos de los componentes incorporados son accesibles desde el repositorio. Si tiene una gran inversión en funciones UniVerse personalizadas o funciones ActiveX (OLE). IBM InfoSphere DataStage se proporciona con varios componentes de programación incorporados que puede reutilizar en los trabajos de servidor. Tenga en cuenta que el mecanismo para incluir funciones UniVerse personalizadas es distinto al de incluir funciones ActiveX (OLE).

Al diseñar un trabajo. pero puede almacenarlas en la carpeta que desee. Este tipo de rutina se utiliza para configurar un trabajo que controla otros trabajos. Las rutinas de control de trabajos se especifican en la página Control de trabajos del recuadro de diálogo Propiedades del trabajo. Se trata de funciones que puede utilizar al definir transformaciones personalizadas. Estas funciones se almacenan en la carpeta Rutinas del árbol de repositorio. Un caso especial de rutina es la rutina de control de trabajos. También puede definir sus propias transformaciones personalizadas. Si el soporte multilingüístico está habilitado.v Funciones de transformación. Cuando utiliza el editor de expresiones. especifique la categoría. Las transformaciones se pueden crear. De forma predeterminada. Si una función utiliza datos en un juego de caracteres en concreto. Las rutinas de control de trabajos no se almacenan en la carpeta Rutinas del árbol de repositorio. InfoSphere DataStage tiene varias subrutinas anteriores/posteriores incorporadas que se encuentran en la carpeta Rutinas Incorporadas > Anteriores/posteriores del árbol de repositorio. que se almacenan en el repositorio y que pueden ser utilizadas por otros trabajos. Las funciones 136 Guía del desarrollador de Server Job . Se utilizan principalmente en las rutinas de control de trabajos.. v Subrutinas anteriores/posteriores. Este programa crea un derivador que permite llamar a las funciones.. Transformaciones Las transformaciones se almacenan en la carpeta Transformaciones del árbol de repositorio de forma predeterminada. Cuando utiliza el editor de expresiones. o antes o después de una etapa activa. Puede utilizar funciones ActiveX (OLE) como componentes de programación dentro de InfoSphere DataStage.. Las transformaciones especifican el tipo de datos transformados. Funciones Las funcionen utilizan argumentos y devuelven un valor. del menú Sugerir operando. ver o editar utilizando el recuadro de diálogo Transformación. Cuando utiliza el editor de expresiones. deberá estar informado sobre cualquier requisito de correlación al crear funciones de UniVerse personalizadas. las transformaciones aparecen bajo el mandato Transformación de DS. v Funciones ActiveX (OLE). En InfoSphere DataStage se pueden utilizar tales funciones realizando una importación de las mismas. También puede definir sus propias funciones de transformación en el recuadro de diálogo Rutina de servidor. puede hacer que InfoSphere DataStage cree un derivador que permita llamar a estas funciones desde dentro de InfoSphere DataStage. IBM InfoSphere DataStage se suministra con numerosas transformaciones incorporadas (que no se pueden editar). estas funciones se encuentran en la carpeta Rutinas > Nombre de clase del árbol de repositorio. También puede definir sus propias subrutinas anteriores/posteriores utilizando el recuadro de diálogo Rutina de servidor. puede ver y editar el derivador BASIC utilizando el recuadro de diálogo Rutina de servidor.. el tipo en que se transforman y la expresión que realiza la transformación.. v Funciones de UniVerse personalizadas. IBM InfoSphere DataStage tiene varias funciones de transformación incorporadas que se encuentran en la carpeta Rutinas > Ejemplos > Funciones del árbol de repositorio. Cuando cree la rutina. puede acceder a las funciones BASIC mediante el mandato Función. v Funciones BASIC de InfoSphere DataStage. puede especificar una subrutina para ejecutarla antes o después del trabajo. en el menú Sugerir operando. pero puede especificar su propia carpeta al importar las funciones.. La palabra "función" se aplica a muchos componentes de IBM InfoSphere DataStage: v Funciones BASIC. Mediante el recuadro de diálogo Rutina de servidor. Tras la importación. Estas son funciones BASIC especiales que son específicas de InfoSphere DataStage. será su responsabilidad correlacionar los datos desde y hacia Unicode. Estas constituyen unos de los bloques de creación fundamentales del lenguaje BASIC. Son funciones BASIC especializadas que se han definido fuera de InfoSphere DataStage. todos estos componentes aparecen en el mandato Rutinas de DS. en el menú Sugerir operando.

pero también definir rutinas personalizadas. ya que son accesibles desde la carpeta Rutinas en el árbol de repositorio de forma predeterminada.. pero también para hacer referencia específica a subrutinas anteriores/posteriores que realizan tareas antes o después de un trabajo en una etapa activa. La palabra "expresión" se utiliza como una parte específica de la sintaxis de BASIC y para describir las partes de código que puede especificar cuando define un trabajo. Subrutinas Una subrutina es un conjunto de instrucciones que realizan una tarea concreta. Las áreas de IBM InfoSphere DataStage donde puede utilizar este tipo de expresiones son: v Definición de puntos de interrupción en el depurador v Definición de derivaciones de columna. Pueden utilizarse en las expresiones. Macros de InfoSphere DataStage 3. La palabra "subrutina" se utiliza como una parte específica de la sintaxis de BASIC. todas aparecen bajo el mandato Macro de DS. Cuando utiliza el editor de expresiones. Las subrutinas no devuelven un valor... en el menú Sugerir operando. Transformaciones de InfoSphere DataStage 6. Macros IBM InfoSphere DataStage tiene varias macros incorporadas. Funciones de InfoSphere DataStage 5. Reglas de prioridad Se aplican las siguientes reglas de prioridad si hay conflictos de nombres entre los distintos operandos cuando se trabaja con los componentes de programación de IBM InfoSphere DataStage: 1. del menú Sugerir operando. las rutinas de control de trabajos y las subrutinas anteriores/posteriores. se clasifican como rutinas y se describen en “Rutinas” en la página 135. el editor de expresiones de InfoSphere DataStage sirve de guía sobre qué elementos de programación puede insertar en la expresión.. Programación en IBM InfoSphere DataStage 137 . v Funciones de transformación v Funciones de UniVerse personalizadas v Funciones ActiveX (OLE) Expresiones Una expresión es un elemento de código que define un valor.. aunque se denominan "funciones". Funciones incorporadas declaradas en el archivo DSParams 2. Las subrutinas anteriores/posteriores se incluyen en la clasificación general de rutinas. Los siguientes elementos. puede acceder a las funciones BASIC de InfoSphere DataStage mediante el mandato Funciones de DS. Rutinas de InfoSphere DataStage Capítulo 6. expresiones de clave y restricciones en las etapas Transformer v Definición de una transformación personalizada En cada uno de estos casos. Constantes de InfoSphere DataStage 4.de InfoSphere DataStage empiezan por DS para distinguirlas de las funciones BASIC generales. Las macros disponibles permiten establecer el estado del trabajo. IBM InfoSphere DataStage tiene muchas subrutinas anteriores y posteriores incorporadas. en el menú Sugerir operando.. todas aparecen bajo el mandato Rutinas de DS. Cuando utiliza el editor de expresiones. Cuando utiliza el editor de expresiones.

Cierra el recuadro de diálogo Rutina de Servidor. La última parte de este número marca los releases intermedios cuando se ha realizado un cambio menor o un arreglo. Página Creador La página Creador contiene información sobre el creador y el número de versión de la rutina. por ejemplo: v Proveedor. Sólo está disponible cuando no hay cambios pendientes (sin guardar). Compila una rutina guardada. Nombre de la función o subrutina. se genera un error si llama a la rutina. Este recuadro de diálogo tiene cinco páginas: General. v Probar. Si no ha guardado las modificaciones. incluido: v Nombre de rutina. La segunda parte de este número representa el número de release. Descripción breve opcional de la rutina. v Descripción breve. Existen tres tipos de rutina: Función de transformación. 138 Guía del desarrollador de Server Job . v Nombre de catálogo externo. Esto sucede porque no se pueden probar las subrutinas anteriores y posteriores de modo aislado. el sistema le preguntará si desea guardarlas. Guarda la rutina. Sólo está disponible para rutinas del tipo Función de transformación y Función UniVerse personalizada. Hay cinco botones en el recuadro de diálogo Rutina de servidor. Subrutina anterior/posterior o Función de UniVerse personalizada. v Tipo. Su disponibilidad depende de la acción que se esté realizando y del tipo de rutina que se esté editando. aparece el recuadro de diálogo Rutina de servidor.1. Entre el nombre catalogado de la rutina externa. Cómo trabajar con las rutinas Cuando se crea.. Contiene información general sobre la rutina.. La primera parte de este número es un número interno utilizado para comprobar la compatibilidad entre la rutina y el sistema IBM InfoSphere DataStage. v Versión. Código y Dependencias. Sólo está activo cuando la rutina se ha compilado o referenciado satisfactoriamente. Por ejemplo. v Compilar. por ejemplo: 3. Creador. v Descripción explicativa. Número de versión de la rutina.Estas reglas ignoran el número de argumentos implicados. Empresa que ha creado la rutina. Este número debería ir incrementando a medida que se vayan realizando cambios importantes en la definición de rutina o en el código subyacente. El campo Versión contiene una número de versión de tres partes. El release nuevo de la rutina reemplaza cualquier release anterior. Recuadro de diálogo Rutina de servidor En esta sección se describen las cinco páginas del recuadro de diálogo Rutina de servidor. porque la transformación se encontrará primero y la transformación espera tres argumentos. v Autor. Sólo está disponible si ha elegido la Función de UniVerse personalizada en el recuadro Tipo. Prueba una rutina. Los trabajos que utilicen la rutina utilizarán el release nuevo. v Guardar. si hay una transformación con tres argumentos y una rutina del mismo nombre con dos argumentos.1. Creador de la rutina. que se utiliza al importar la rutina. v Cerrar. Invoca al sistema de Ayuda. Tipo de rutina. Argumentos. Descripción detallada opcional de la rutina. visualiza o edita una rutina. v Ayuda. Página General Aparece la página General de modo predeterminado.

así como para activar Buscar (y Reemplazar). Nombre de la operación de servicio web. Los nombres de los argumentos son ArgEntrada y Código de error. Así también se puede garantizar. copiar. – Servicio web. – Archivo. v Ubicación. – ActiveX. Puede editar nombres y descripciones de argumentos y añadir y suprimir argumentos. es un URL. Programación en IBM InfoSphere DataStage – – – – 139 . Nombre de la función o de la rutina. Página de argumentos Los nombres de rutina predeterminados y si puede añadir o suprimir argumentos dependerá del tipo de rutina que esté editando: v Subrutinas anteriores/posteriores. que cuando empaquete cualquier trabajo utilizando esta rutina para desplegarla en otro sistema. ActiveX. El tipo de elemento sobre el que depende la rutina. Página Dependencias La página Dependencias permite entrar cualquier función o rutina catalogada de forma local o global que vaya a utilizar en la rutina que está definiendo. pero no más de 255. Ubicación de la dependencia. Funciones y subrutinas BASIC de InfoSphere DataStage catalogadas globalmente. Un objeto ActiveX (OLE) (no disponible en sistemas basados en UNIX). Puede editar el resto del número para especificar el nivel del release. Seleccione una de las opciones siguientes: – Local. la primera parte del número de versión se establecerá de acuerdo con la versión de InfoSphere DataStage que utilice. pegar y formatear códigos. Pulse la parte del número que desee cambiar y entre un número directamente o utilice el botón de flecha para incrementar el valor. Global. Puede editar los nombres y las descripciones de los argumentos pero no puede añadir ni suprimir argumentos. Para una operación de servicio web. – Servicio web.directorio de la cuenta del motor de servidor (normalmente C:\IBM\InformationServer\Server\DSEngine). todas las dependencias se incluirán en el paquete. v Nombre. tienen un argumento denominado Arg1. La información necesaria es la siguiente: v Tipo. Funciones y subrutinas BASIC de IBM InfoSphere DataStage catalogadas localmente. Entre algo significativo para usted (los objetos ActiveX se identifican por el campo Ubicación). El nombre necesario depende del tipo de dependencia: Local. Capítulo 6. pero es recomendable especificar una vía de acceso relativa utilizando las siguientes variables de entorno: %SERVERENGINE% . La barra de herramientas contiene botones para cortar. Un archivo estándar. Nombre del catálogo.Si crea una definición de una rutina. Página de códigos La página Código se utiliza para ver o grabar el código para la rutina. De forma predeterminada. – Global. Para obtener más información sobre cómo utilizar esta página. Nombre del catálogo. v Copyright. Nota: Esta página no estará disponible si ha seleccionado Función de UniVerse personalizada en la página General. La entrada Nombre actualmente no es relevante para los objetos ActiveX. Información de copyright. Esta ubicación puede ser una vía de acceso absoluta. consulte “Introducción de código” en la página 140. v Funciones de transformación y funciones de UniVerse personalizadas. Nombre del archivo. Como mínimo tiene que haber un argumento. Archivo. Una operación de servicio web. La parte principal de esta página consta de un recuadro de texto con varias líneas con barras de desplazamiento.

A continuación. Para entrar el código. puede entrar una descripción breve de la rutina en el campo Descripción breve. No puede navegar al directorio padre de una variable de entorno. en el que deberá entrar su código. 3. información de argumentos en la página Argumentos y detalles de las dependencias en la página Dependencias. escriba el nombre de la función o subrutina en el campo Nombre de rutina. El parte principal de esta página contiene un recuadro de entrada de texto de varias líneas. El primer campo de esta página muestra el nombre de la rutina y los nombres del argumento. Resultados Cuando complete esta página. Existen tres opciones: v Función de transformación. hay una entrada denominada Root en la lista Ubicaciones básicas. en lugar de definir una en este recuadro diálogo. Cuando examina la ubicación de un archivo en un servidor UNIX. pulse el recuadro y empiece a escribir. De forma opcional. Introducción de código Puede entrar o editar códigos para una rutina en la página Código. Seleccione esta opción si desea hacer referencia a una rutina externa. Aparecerá el recuadro de diálogo Nuevo. la página Código no estará disponible. 5.Directorio del proyecto Current. Seleccione esta opción si desea crear una rutina para una subrutina anterior a la etapa o posterior a la etapa o una subrutina anterior al trabajo o posterior al trabajo. Abra el recuadro de diálogo Rutina de servidor de la siguiente manera: v Seleccione Archivo > Nuevo en el menú principal. De forma opcional. Pulse la carpeta Rutinas y seleccione el icono Rutina de servidor. (Esta ventana no está disponible para los elementos locales catalogados). No puede coincidir con otro nombre de función BASIC. Para examinar la ubicación. %SYSTEM% . Si selecciona esta opción. v Función de UniVerse personalizada. Procedimiento 1. Creación de una rutina Puede crear una nueva rutina. o pulse el botón Nuevo en la barra de herramientas. 4. En la página General. Seleccione esta opción si desea crear una rutina para la definición de una transformación. 2.%PROJECT% . debe especificar su código en la página Código. Puede utilizar las siguientes funciones de edición estándar de Windows en este recuadro de texto: v Suprimir utilizando la tecla Supr v Cortar utilizando Control-X v Copiar utilizando Control-C 140 Guía del desarrollador de Server Job . v Pulse con el botón derecho del ratón sobre Rutinas en el árbol de repositorio y seleccione Nueva > Rutina de servidor en el menú de atajos. efectúe una doble pulsación para abrir la ventana Seleccionar desde servidor. deberá editar los campos en las páginas General y Argumentos. Si desea cambiar estas propiedades.directorio del sistema en Windows o /usr/lib en UNIX. puede especificar información del creador en la página Creador. Elija el tipo de rutina que desea crear en la lista Tipo. puede entrar una descripción más detallada de la rutina en el campo Descripción detallada. en el recuadro de diálogo Rutina de Servidor. v Subrutina anterior/posterior.

Su código sólo debe contener funciones y sentencias BASIC soportadas por IBM InfoSphere DataStage. Este campo no se puede editar. se muestran los errores generados. El último campo de esta página muestra la sentencia de retorno para la función o la subrutina. Si la rutina se compila satisfactoriamente. “Programación BASIC”. número de argumentos e información sobre el autor) y el código asociado se guardan en el repositorio. o se definen propiedades del trabajo. Si el soporte multilingüístico está habilitado. consulte Capítulo 7. podrá utilizar caracteres no ingleses en las siguientes circunstancias: v En comentarios v En datos de serie (es decir. se recomienda mover la ventana Salida de compilación al lado o debajo del recuadro de diálogo Rutina de servidor. pulse Guardar en el recuadro de diálogo Rutina de Servidor. Las propiedades de la rutina (nombre. Cómo guardar códigos Acerca de esta tarea Cuando termine de introducir o de editar el código. Si no está seguro de las funciones y de las sentencias que se soportan o de la sintaxis apropiada que debe utilizar. aparece un recuadro de mensaje. Debe editar el código para eliminar todas las sentencias incorrectas o para corregir posibles errores sintácticos. Para guardar una rutina. Capítulo 6. efectúe una doble pulsación en la ventana Salida de la compilación.v v v v Pegar utilizando Control-V Ir al final de la línea utilizando la tecla Fin Ir al principio de la línea utilizando la tecla Inicio Seleccione texto pulsando y arrastrando o efectuando una doble pulsación Algunas de estas funciones de edición se incluyen en un menú de atajos que se puede visualizar pulsando el botón derecho del ratón. pulse el botón Formatear de la barra de herramientas. Transformer o suplementaria. pulse Compilar en el recuadro de diálogo Rutina de servidor. ésta se visualiza en la lista de funciones disponibles cuando se edita una transformación. Una rutina no se puede compilar ni comprobar si no se ha guardado. en series incluidas entre comillas) El uso de caracteres no ingleses en cualquier otro lugar provocará errores de compilación. Si la rutina es una Función de transformación. Código de compilación Acerca de esta tarea Una vez haya guardado la rutina. La rutina se marca como "creada" en el repositorio y está disponible para ser utilizada. debe guardarse la rutina. Para solucionar el error. Si desea formatear su código. deberá compilarla. ya que necesita ver ambas ventanas para solucionar el error. descripción. Pulse Aceptar para acusar la recepción del mensaje. Si la rutina es una Subrutina anterior/posterior. Antes de empezar a investigar la causa del error. en la página 149 para obtener una lista completa de las funciones BASIC de InfoSphere DataStage soportadas. Para compilar una rutina. Si la rutina no puede compilarse. Programación en IBM InfoSphere DataStage 141 . aparece en lista de las subrutinas disponibles cuando se edita una etapa Aggregator. IBM InfoSphere DataStage intenta encontrar la línea correspondiente del código que ha causado el error y lo resalta en el recuadro de diálogo Rutina de servidor. También puede cortar y pegar códigos utilizando los botones de la barra de herramientas.

consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide. Puede añadir y editar filas en la cuadrícula para especificar valores para distintos casos de prueba. puede utilizarla en otras áreas de InfoSphere DataStage o comprobarla. Aparecerá el recuadro de diálogo Buscar. Contiene el texto que desea buscar. El botón Probar se activa si la rutina se ha compilado de forma satisfactoria. a continuación. Si pulsa Probar. Cuando haya modificado su código. Nota: El botón Probar no está disponible para una Subrutina anterior/posterior. puede utilizar Buscar y Sustituir. se llena conforme se va completando cada prueba. La cuadrícula tiene una columna para cada argumento y una para el resultado de la comprobación. Normalmente indica que se ha producido un error en la correlación de juego de caracteres. este campo muestra el texto resaltado. Si desea ejecutar pruebas utilizando todos los valores de prueba. de la prueba que desee ver. Si desea suprimir un conjunto de valores de prueba.. Para ejecutar una prueba con un conjunto de valores seleccionado. mostrando todos los resultados de la prueba. 142 Guía del desarrollador de Server Job .. pulse en cualquier parte de la fila que desea utilizar y pulse Ejecutar. Para obtener más información sobre cómo utilizar y editar una cuadrícula. La columna Resultado. Cuando haya finalizado de probar la rutina. Compilar. pulse el botón Buscar en la barra de herramientas de la página Código. Utilización de Buscar y sustituir Acerca de esta tarea Si desea buscar o sustituir un texto específico en el código.. pulse Cerrar para cerrar el recuadro de diálogo Probar rutina. aparecerá el recuadro de diálogo Probar rutina.Si el soporte multilingüístico está habilitado. Para ver más detalles sobre una prueba en concreto. busque múltiples signos interrogantes en la ventana Salida de compilación. prosiga solucionando cualquier error que se haya podido producir hasta que la rutina se compile de forma satisfactoria. Si el texto estaba resaltado en el código antes de seleccionar Buscar. Cuando la rutina se haya compilado. opciones y botones siguientes: v Texto de búsqueda. Todos los valores de prueba que haya entrado se guardarán cuando cierre el recuadro de diálogo.. Las rutinas de este tipo no se pueden comprobar de forma aislada y deben ejecutarse como parte de un trabajo en ejecución. efectúe una doble pulsación sobre la celda Resultado. pulse Ejecutar todos. Para iniciar Buscar. Si es necesario. Comprobación de una rutina Acerca de esta tarea Antes de utilizar una rutina compilada. puede comprobarla utilizando el botón Probar en el recuadro de diálogo Rutina de servidor. Especifique el texto correspondiente en este campo. Pulse Cerrar para cerrar esta ventana. Se abre la ventana Salida de prueba. Este recuadro de diálogo contiene una cuadrícula y botones. pulse en cualquier parte de la fila que desea eliminar y pulse Suprimir o elija Suprimir fila en el menú de atajos. Consulte “Comprobación de una rutina” para obtener más información. pulse Guardar y. Este recuadro de diálogo tiene los campos.

selecciónela en el árbol de repositorio y efectúe uno de los pasos siguientes: v Elija Repositorio > Propiedades. Especifica la dirección de la búsqueda.. Puede editar cualquier campo u opción en cualquiera de las páginas. Este recuadro de selección está deseleccionado de forma predeterminada. Este botón no estará disponible hasta que especifique el texto de búsqueda. v Ayuda.. Invoca al sistema de Ayuda. v Sustituir por. Sustituye el texto de búsqueda por el texto alternativo. Programación en IBM InfoSphere DataStage 143 . v Sustituir todo. v Cancelar. v Ayuda. Siga pulsando Buscar siguiente hasta encontrar todas las apariciones del texto. Sustitución de texto Acerca de esta tarea Si desea sustituir texto en el código con una serie de texto alternativa. Cierra el recuadro de diálogo Sustituir. Pulse Arriba para realizar una búsqueda en la dirección opuesta. Inicia la búsqueda y sustitución. Visualización y edición de una rutina Puede ver y editar las funciones y subrutinas grabadas por el usuario en el proyecto. consulte “Sustitución de texto”. Cuando pulsa este botón. v Cancelar. El valor predeterminado es Abajo. v Arriba y Abajo. Invoca al sistema de Ayuda. v Sustituir. v Buscar siguiente. Muestra el recuadro de diálogo Sustituir. v Efectúe una doble pulsación en el árbol de repositorio. No estará disponible hasta que especifique el texto de búsqueda. compilar y comprobar el código antes de Capítulo 6. Siga pulsando Buscar siguiente hasta encontrar todas las apariciones del texto. Especifica si desea realizar una búsqueda en la que coincidan mayúsculas y minúsculas. Contiene el texto que desea buscar y sustituir. Para obtener más información. Acerca de esta tarea Para ver o modificar una función o subrutina. deberá guardar. opciones y botones siguientes: v Texto de búsqueda. Cierra el recuadro de diálogo Buscar. en el recuadro de diálogo Buscar. v Coincidencia de mayúsculas y minúsculas. Especifica la dirección de la búsqueda y sustitución. v Buscar siguiente.. Pulse Arriba para realizar una búsqueda en la dirección opuesta. Contiene el texto que desea utilizar en lugar del texto de búsqueda. v Arriba y Abajo.. Especifica si desea realizar una búsqueda en la que coincidan mayúsculas y minúsculas. Aparecerá el recuadro de diálogo Rutina de Servidor. Seleccione este recuadro de selección para realizar una búsqueda que distinga entre mayúsculas y minúsculas. Inicia la búsqueda. pulse Sustituir. el recuadro de diálogo Buscar cambia al recuadro de diálogo Sustituir. El valor predeterminado es Abajo. Si efectúa cambios. v Seleccione Propiedades en el menú de atajos. v Sustituir. Este recuadro de selección está deseleccionado de forma predeterminada. Este recuadro de diálogo tiene los campos. Realiza una sustitución global de todas las instancias del texto de búsqueda.v Coincidencia de mayúsculas y minúsculas. Seleccione este recuadro de selección para realizar una búsqueda que distinga entre mayúsculas y minúsculas.

Aparece un recuadro de edición y el usuario puede entrar un nombre diferente o editar uno ya existente. la transformación está disponible para ser utilizada desde cualquier sitio del proyecto. v Efectúe una doble pulsación sobre la rutina. Para renombrar un elemento. v Seleccione Renombrar en el menú de atajos. Aparece el recuadro de diálogo Rutina de servidor y puede editar el campo Nombre de rutina. Guarde el nombre nuevo pulsando Intro o pulsando fuera del recuadro de edición. Aparece un recuadro de edición y el usuario puede entrar un nombre diferente o editar uno ya existente. Definición de transformaciones personalizadas Puede crear una transformación personalizada. 144 Guía del desarrollador de Server Job . puede crear transformaciones personalizadas en el cliente del Diseñador. que se describen en InfoSphere DataStage Programmer's Guide. Consulte “Cómo guardar códigos” en la página 141 para obtener más información. Cómo renombrar una rutina Acerca de esta tarea Puede renombrar cualquiera de las rutinas existentes en el repositorio. a continuación. Cómo copiar una rutina Acerca de esta tarea Para copiar una rutina existente. el nombre de la copia se denomina CopyOfXXX.cerrar el recuadro de diálogo Rutina de Servidor. v Elija Repositorio > Renombrar. También se puede exportar fácilmente a otros proyectos de InfoSphere DataStage. Pulse Guardar y. Aparece un recuadro de edición y el usuario puede entrar un nombre diferente o editar uno ya existente. La rutina se copia y la nueva rutina se crea en la misma carpeta en el árbol de repositorio. Se debe compilar la nueva rutina antes de utilizarla. Guarde el nombre nuevo pulsando Intro o pulsando fuera del recuadro de edición. Aparece un recuadro de edición que permite renombrar la copia inmediatamente. Cerrar. v Seleccione Crear copia en el menú de atajos. Acerca de esta tarea Las transformaciones se utilizan en la etapa Transformer para convertir los datos a un formato que desee utilizar en la despensa de datos final. Si las transformaciones incorporadas no son adecuadas o si desea que una transformación específica actúe sobre un elemento de datos específico. Cada transformación especifica la función BASIC utilizada para convertir los datos de un tipo a otro. selecciónelo en el árbol de repositorio y efectúe uno de los pasos siguientes: v Vuelva a pulsar la rutina. La ventaja de crear una transformación personalizada con sólo entrar la expresión necesaria en el editor de transformador es tal. donde XXX es el nombre de la rutina seleccionada. De forma predeterminada. Con IBM InfoSphere DataStage se proporciona varias transformaciones incorporadas. selecciónela en el árbol de repositorio y efectúe uno de los pasos siguientes: v Elija Repositorio > Crear copia. que una vez definida. Guarde el nombre nuevo pulsando Intro o pulsando fuera del recuadro de edición.

Hay tres modos de hacerlo: v Entrar el código en InfoSphere DataStage (utilizando las funciones BASIC). Permite especificar elementos de datos de origen y de destino. Tenga también en cuenta. 5. Capítulo 6. Una vez completada esta página. Consulte “Creación de una rutina” en la página 140. puede escribir una descripción breve de la transformación en el campo Descripción breve. opcionalmente. puede escribir una descripción detallada de la transformación en el campo Descripción detallada.. Menú Sugerir operando: definición de transformaciones personalizadas Macro de DS. El nombre que se entre aquí debe ser exclusivo. o pulse el botón Nuevo en la barra de herramientas. Este recuadro de diálogo tiene dos páginas: v General. Utilice el editor de expresiones del campo Definición para entrar una expresión que defina cómo debe comportarse la transformación. Se visualiza de forma predeterminada. la función y los argumentos que se deben utilizar. Función de DS. Aparecerá el recuadro de diálogo Transformación. Pulse la carpeta Otros y seleccione Transformación.. seleccione la carpeta Transformaciones y efectúe uno de los siguientes pasos: v Seleccione Archivo > Nuevo en el menú del cliente del Diseñador.. también puede definir sus propias rutinas y funciones personalizadas a partir de las cuales se crearán transformaciones personalizadas. De forma opcional. elija el elemento de datos correspondiente de la lista. si lo tiene.. dos transformaciones no pueden tener el mismo nombre. Aparecerá el recuadro de diálogo Nuevo. Escriba el nombre de la transformación en el campo Nombre de la transformación. De forma opcional. Consulte “Importación de funciones ActiveX (OLE) externas” en la página 146. Consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide para ver una descripción de los elementos de datos). Programación en IBM InfoSphere DataStage 145 ..Para proporcionar aún más flexibilidad. elija el elemento de datos que desee como elemento de datos de destino a parte de la lista Elemento de datos de destino. Contiene información general sobre la transformación. que la transformación no debe tener el mismo nombre que una función BASIC existente. v Pulse con el botón derecho del ratón y seleccione Nuevo > Otros > Transformación en el menú de atajos. De forma opcional. puede especificar cómo convertir los datos. 3. Escriba el nombre del argumento y. 4. Especifique argumentos de origen para la transformación en la cuadrícula Argumento visible. El Editor de expresiones se describe en “Editor de expresiones de IBM InfoSphere DataStage” en la página 123. v Crear una referencia a una rutina catalogada externamente. se llamará a la función en lugar de la transformación cuando se ejecute el trabajo. Consulte “Creación de una rutina” en la página 140. Pulse el separador Detalles. En el árbol de repositorio. 7. (La utilización de un elemento de datos de origen y de destino permite aplicar una escritura de datos más estricta a su transformación. Procedimiento 1. El menú Sugerir operando es ligeramente diferente cuando se utiliza el editor de expresiones para definir transformaciones personalizadas y proporciona mandatos que resultan útiles al definir transformaciones. 6. Consulte “Reglas de prioridad” en la página 137 para ver las consideraciones sobre los nombres de componente. 2.. v Detalles. v Importar funciones ActiveX (OLE) externas. Constante de DS.

Si es necesario. puede utilizar varias herramientas.. Una vez importadas. Funciones ActiveX (OLE) externas IBM InfoSphere DataStage ofrece la posibilidad de llamar a las funciones ActiveX (OLE) externas que se han instalado en el sistema donde reside la capa de motor.. Argumento de transformación. En el cliente del Diseñador. Importación de funciones ActiveX (OLE) externas Puede importar las funciones ActiveX (OLE)... Función. puede utilizar la nueva transformación desde dentro del Editor de transformador. El código utiliza una función BASIC de InfoSphere DataStage que sólo acepta determinados tipos de datos. Variable del sistema.. necesita un servidor de automatización que exponga las funciones a través de la interfaz IDispatch y que tenga una biblioteca de tipos asociados. Nota: Si se ha habilitado el soporte multilingüístico. seleccione Importar > Definiciones de la función externa. Estos tipos de datos se definen en el archivo DSOLETYPES. Para utilizar este recurso. Pulse Aceptar. Serie.H en el directorio dsinclude de cada proyecto. Resultados A continuación.. Pulse Guardar para guardar la transformación y cierre el recuadro de diálogo Transformación. El primer paso para utilizar las funciones externas es importarlas al repositorio. también puede cambiar el nombre de la transformación. Normalmente se trata de un archivo DDL que debe haberse instalado en el sistema donde reside la capa de motor. Para ello. 146 Guía del desarrollador de Server Job . Aparecerá el recuadro de diálogo Guardar transformación como. que permite seleccionar la carpeta en la que se guardará en el árbol de repositorio... () Paréntesis If Then Else 8. Procedimiento 1. Se abre el asistente para Importar definiciones de funciones de transformación solicitando que se facilite el nombre de la vía de acceso del archivo que contiene las transformaciones que se deben importar. Nota: Este recurso sólo está disponible en los servidores Windows..Menú Sugerir operando: definición de transformaciones personalizadas Rutina de DS. La acción de importar una función externa crea una rutina de InfoSphere DataStage que contiene código que invoca la función externa. Estas funciones pueden utilizarse posteriormente cuando defina transformaciones personalizadas.... incluido Visual Basic. podrá llamar a las funciones cuando defina una transformación personalizada. evite utilizar las funciones Iconv y Oconv integradas para correlacionar datos a no ser que sea perfectamente consciente de las consecuencias de sus acciones..

pulse Importar.2. 4. Programación en IBM InfoSphere DataStage 147 . pulse Siguiente. Pulse Finalizar para salir del asistente. Capítulo 6. Al finalizar. El asistente interroga a la clase de automatización para obtener detalles de las funciones adecuadas que soporta. se abre una ventana de resumen. a continuación. IBM InfoSphere DataStage empezará a generar las rutinas necesarias y mostrará una barra de progreso. Seleccione las funciones que desea importar. Pulse Siguiente. El asistente solicita el archivo DDL especificado para establecer las clases de automatización que contiene y las presenta en una lista. El asistente mostrará los detalles de la importación propuesta. Si está satisfecho con los detalles. las visualiza. A continuación. 6. 5. 3. Entre el nombre de la vía de acceso o localícelo y. Seleccione una clase de automatización y pulse Siguiente.

148 Guía del desarrollador de Server Job .

utilice una llamada a DSExecute. un nombre de variable o una lista de sentencias. El lenguaje BASIC de InfoSphere DataStage que se describe a continuación es el subconjunto de los mandatos BASIC que se utilizan con más frecuencia en InfoSphere DataStage. sino que puede utilizar el rango completo de mandatos BASIC de InfoSphere DataStage que se describen en IBM InfoSphere DataStage BASIC Reference Guide. No obstante. paréntesis.. etc. opciones. Programación BASIC Estos temas constituyen una guía de referencia del programador sobre el lenguaje de programación BASIC de IBM InfoSphere DataStage. Marca de campo. 2011 149 . no está limitado a las funciones que aquí se describen. Los corchetes con un tipo de letra cursiva y negrita deben especificarse como parte de la sintaxis. una expresión. Cursiva La cursiva indica información variable que debe proporcionar como. No obstante. v No utilice la sentencia Print. que deben especificarse exactamente tal como aparecen. La publicación IBM InfoSphere DataStage BASIC Reference Guide íntegra se proporciona en formato PDF con InfoSphere DataStage.Capítulo 7. v Para detener un trabajo en ejecución.. Marca de valor. No especifique los signos de llave ni la barra vertical. sentencias o subrutinas que requieran una entrada del usuario. Convenios de sintaxis Las descripciones de sintaxis utilizan los siguientes convenios: Convenio Uso Negrita El tipo negrita indica funciones. En su lugar. una serie de entrada. deberá prestar especial atención a algunas áreas. Marca de elemento. por ejemplo. Los principales puntos a tener en cuenta son: v No utilice mandatos. incluidas las matrices dinámicas. Marca de texto. sentencias. Si utiliza una sentencia Stop o Abort. No especifique estos corchetes. © Copyright IBM Corp. [] [] Los corchetes encierran elementos opcionales. puede que el trabajo quede en una condición irrecuperable. comas. subrutinas. @FM @IM @SM @TM @VM Los tres puntos indican que el último elemento de la sintaxis puede repetirse si es necesario.. funciones. Marca de subvalor. utilice la subrutina DSLogFatal. En su lugar. { Then | Else } Dos palabras clave o cláusulas separadas por barras verticales y entre signos de llave indican que puede elegir sólo una opción. utilice una llamada a DSLogInfo para grabar en el archivo de registro de trabajo. 1997. v No utilice la sentencia Execute para ejecutar mandatos del motor de servidor. .

Matrices dimensionadas Una matriz es una variable de varios valores a la que se accede desde un nombre individual. Se describen las constantes. los tipos de datos y cómo se combinan los datos con operadores aritméticos. Al principio de la ejecución del programa. utilice el nombre de variable seguido del índice del elemento entre paréntesis. las variables. Constantes Una constante es un valor que se fija durante la ejecución de un programa y puede reutilizarse en distintos contextos. Para especificar un elemento del vector. se genera un mensaje de error. la hora. Una constante puede ser: v Una serie de caracteres v Una serie vacía v Una serie numérica con formato de entero o coma flotante Los caracteres ASCII del 0 al 10. inclusivos. etc.*especifica el primer elemento de la variable A Cost(n + 1) . Variables Las variables se utilizan para almacenar valores en la memoria temporalmente. no pueden incorporarse en las constantes de tipo serie en los sistemas sin soporte multilingüístico (estos caracteres no pueden utilizarse tampoco en los comentarios). tiene un número secuencial asignado. Cada elemento está indexado. El valor de una variable puede ser: v v v v Ningún valor asignado Una serie Un entero o un número de coma flotante El valor nulo v Una matriz dimensionada v Una variable de archivo IBM InfoSphere DataStage proporciona un conjunto de variables del sistema de sólo lectura que almacenan datos del sistema como. El índice del primer elemento es 1. por ejemplo. de series. IBM InfoSphere DataStage utiliza dos tipos de matrices dimensionadas: v Matrices unidimensionales o vectores v Matrices bidimensionales o matrices Los vectores tienen elementos almacenados en la memoria en una fila individual.* especifica una expresión para calcular el índice 150 Guía del desarrollador de Server Job . Las variables pueden cambiar de valor durante la ejecución del programa. relacionales y lógicos para formar expresiones. o asignarle el valor que es el resultado de las operaciones efectuadas por el programa durante la ejecución. El índice puede ser una constante o una expresión. y los caracteres del 251 al 255. la fecha actual. por ejemplo: A(1) . Cada valor es un elemento de la matriz. el nombre de la vía de acceso. Posteriormente podrá utilizar los valores en varias operaciones.El lenguaje BASIC En esta sección se proporciona una visión general de los componentes fundamentales del lenguaje IBM InfoSphere DataStage BASIC. Puede acceder a ellas desde una rutina o una transformación. Si se intenta emplear una variable desasignada. es decir. Puede asignar un valor explícito a una variable. todas las variables están desasignadas.

El valor se evalúa en el tiempo de ejecución. la mayoría tienen uno o varios.2 2. Para especificar un elemento de una matriz. separados por comas. La función de transformación debe devolver el valor transformado utilizando una sentencia Return (valor).2 3. Esto significa que una función individual puede encapsular la lógica de varias transformaciones relacionadas. Las dimensiones de una matriz se definen con la sentencia Dimension. Un argumento en una función puede ser una expresión que incluya una función. También puede redimensionar una matriz utilizando Dimension. si es necesario.4 3. por ejemplo. Algunas funciones no tienen argumentos. Sentencias Las sentencias se utilizan para: Capítulo 7. cuando se calcula el seno de un ángulo que se pasa como argumento (función Sin) v En las series de caracteres. Los argumentos van siempre entre paréntesis.Las matrices tienen elementos almacenados en varias filas.2 1. variables.4 La especificación completa utiliza el nombre de variable seguido de los índices entre paréntesis. Expresiones Una expresión define un valor. en una matriz con cuatro columnas y tres filas. por ejemplo.17) Los vectores se tratan como si fueran matrices con una segunda dimensión 1. "porcentaje" o "42" Un nombre de variable Una función Una función definida por el usuario Una expresión compleja puede contener una combinación de constantes. COST(35) y COST(35.1) Widget(7. Las funciones pueden realizar tareas: v En las series numéricas. asignarse a una variable. operadores. Por ejemplo.3 2.1 2. Programación BASIC 151 . debe proporcionar dos índices: el número de fila y el número de columna.1 3. por ejemplo. Por ejemplo: Obj(3.3 1. Funciones Una función realiza manipulaciones matemáticas o de serie en los argumentos que se proporcionan y devuelve un valor.1 1. etc. Una expresión simple puede constar de: v v v v Una serie o una constante numérica. argumento) Una expresión puede contener una función. cuando se suprimen los espacios en blanco y las tabulaciones excedentes (función Trim) Las funciones de transformación en IBM InfoSphere DataStage deben tener al menos un argumento que contenga el valor de entrada que se va a transformar.3 3.4 2.1) significan lo mismo. funciones y otras expresiones. Una definición de transformación puede utilizar otros argumentos opcionales para seleccionar una determinada vía de acceso mediante la función de transformación. los elementos se especifican utilizando estos índices: 1. El resultado puede utilizarse como entrada de una función. tal como se muestra en la sintaxis general: FunctionName (argumento.

Las sentencias se ejecutan en el orden en el que se especifican. Una subrutina puede tomar dos formas: v Una subrutina incorporada está contenida en el programa y se accede a ella con una sentencia GoSub. Los operadores se dividen en las categorías siguientes: v Operadores aritméticos v Operadores de serie para: – Concatenar series con Cats o : – Extraer subseries con [ ] v Operadores relacionales v Operadores de coincidencia de patrón 152 Guía del desarrollador de Server Job . v Especificar el valor de una constante. La serie puede contener caracteres alfanuméricos. el segundo es el código de respuesta de la rutina. puntos. Una etiqueta de sentencia puede colocarse delante de una sentencia o en su propia línea. Una etiqueta de sentencia consta de una serie de hasta 64 caracteres seguida de un carácter de dos puntos. Subrutinas Una subrutina es un conjunto autocontenido de instrucciones que realizan una tarea concreta. Subrutinas BASIC de IBM InfoSphere DataStage especiales InfoSphere DataStage proporciona algunas subrutinas de InfoSphere DataStage especiales para utilizarlas en las subrutinas anteriores/posteriores o las transformaciones personalizadas. En términos generales. Ahora puede: v Registrar sucesos en el archivo de registro del trabajo utilizando DSLogInfo. v Añadir comentarios a los programas. InfoSphere DataStage también se proporciona con varias subrutinas anteriores/posteriores. DSLogWarn. El código de respuesta es 0 si no hay ningún error. Etiquetas de sentencias Una etiqueta de sentencia es un identificador exclusivo de una línea de código. v Asignar un valor a una variable.v Cambiar el control de programa. a menos que una sentencia de control cambie el orden. DSLogFatal y DSTransformError v Ejecutar mandatos del motor de servidor o de DOS utilizando DSExecute Todas las subrutinas se invocan utilizando la sentencia Call. signos de dólar y signos de porcentaje. Hay varias subrutinas BASIC que son específicas de IBM InfoSphere DataStage. invocando una subrutina o definiendo un bucle. Operadores Un operador realiza una operación en una o varias expresiones (los operandos). v Una subrutina externa se almacena en un archivo aparte y se accede a ella con una sentencia Call. por ejemplo. El primero contiene el valor que especifica el usuario cuando se invoca la subrutina desde un trabajo o una etapa. Puede definir sus propias subrutinas anteriores/posteriores utilizando el cliente del Diseñador. utilice una subrutina incorporada para el código que desea invocar muchas veces desde el mismo programa. que se ejecutan antes o después de un trabajo o una etapa activa. Las subrutinas anteriores/posteriores deben tener dos argumentos. utilice una subrutina externa para el código que desee invocar desde varios programas diferentes. Las etiquetas de sentencia son sensibles a las mayúsculas y minúsculas. Sus nombres empiezan por DS y se describen en “Subrutinas BASIC de IBM InfoSphere DataStage especiales”. Los demás valores indican que el trabajo se ha detenido.

Las expresiones no numéricas se tratan como 0 y generan un aviso de tiempo de ejecución. What’s yours?" se evalúa en: "Hello. o 120: (14 * 8) + 12 / 2 + 2 Esta expresión se evalúa como 14 * 20 / 4. Por ejemplo: "There are " : "2" + "2" : "3" : " windows. Los operandos numéricos en las expresiones concatenadas se consideran valores de serie. Las expresiones resultantes pueden combinarse también con otras expresiones. Las expresiones entre paréntesis se evalúan antes que las operaciones situadas fuera de los paréntesis. : o Cats. What’s yours?" Si hay distintas operaciones de concatenación. o 280 / 4. Puede cambiar el orden de evaluación utilizando paréntesis. Una variable de serie de caracteres que contiene únicamente caracteres numéricos cuenta como una expresión numérica.v Operador If v Operadores lógicos v Operadores de asignación Operadores aritméticos Los operadores aritméticos combinan operandos mediante sumas. esta expresión se evalúa como 112 + 6 + 2. " : "My Name is " : X : ". Por ejemplo. si x tiene el valor Tarzan. Programación BASIC 153 . estas se ejecutan normalmente de izquierda a derecha. la siguiente expresión da como resultado el valor 66: "22" + 44 En esta tabla se muestran los operadores aritméticos por orden de evaluación: Operador ^ * / + Operación Negación Elevación a una potencia Multiplicación División Suma Resta Ejemplo -x x^y x*y x/y x+y x-y Puede cambiar el orden de evaluación utilizando paréntesis. esta expresión: "Hello. enlaza expresiones de serie para formar expresiones de serie compuestas. Las expresiones escritas entre paréntesis se evalúan antes que las de fuera de los paréntesis. Los operandos deben ser expresiones numéricas." Capítulo 7. Concatenación de series El operador de concatenación. Por ejemplo. etc. Por ejemplo. restas. Los operadores aritméticos tienen una mayor prioridad que el operador de concatenación. My name is Tarzan." tiene el valor: "There are 43 windows. o 70: 14 * (8 + 12) / (2 + 2) El resultado de una operación aritmética que incluya el valor nulo es un valor nulo.

Puede utilizar el operador [ ] para especificar una subserie utilizando esta sintaxis: serie[ [ inicio. se supone que la posición inicial es 1. instancia. El resultado de la comparación puede ser true ( 1 ) o false ( 0 ). Todas las sintaxis de subserie se pueden utilizar junto con el operador = para sustituir el valor que normalmente devuelve el operador [ ] por el valor asignado a la variable. Esta sintaxis funciona de la misma forma que la función FieldStore. – campos especifica el número de campos que se van a extraer. Puede especificar una subserie final omitiendo inicio en la sintaxis. este se considera información de serie de caracteres. esta especificación: "1234567890" [5] devuelve la subserie: 67890 v Subseries delimitadas.serie . Por ejemplo. Por ejemplo. esta expresión se evalúa como valor nulo: "A" : @NULL . ] longitud ] serie es la serie que contiene la subserie. tab y abla son ambas subseries de tabla. Por ejemplo: A="12345" A[3]=1212 devuelve el resultado 121212. v Asignación de una subserie a una variable. Si inicio es 0 o un número negativo. Esta tabla muestra los operadores relacionales que puede utilizar: 154 Guía del desarrollador de Server Job .STR . Esta sintaxis funciona de la misma forma que la función Field. Puede extraer una subserie delimitada con esta sintaxis: serie [ delimitador. Los delimitadores que marcan el inicio y el final de la extracción no se devuelven.subserie + 1 v Subseries finales. Operadores relacionales Los operadores relacionales comparan las series u otros datos.*concatenate A with @NULL system variable Pero esta expresión: "A" : @NULL. se devuelven los delimitadores provisionales. inicio es un número que especifica dónde se inicia la subserie. como la serie CHAR(128)). – instancia especifica la instancia del delimitador donde se inicia la extracción.longitud.El resultado de cualquier operación de serie que comprenda el valor nulo es un valor nulo. pero si extrae más de una serie.*concatenate A with @NULLSTR system variable se evalúa en "A<CHAR128>". campos ] – serie es la serie que contiene la subserie. la posición inicial se calcula según la fórmula siguiente: longitud. – delimitador especifica el carácter que delimita la subserie. Pero si se hace referencia al valor nulo como una serie de caracteres que contiene únicamente el valor nulo (es decir. El primer carácter de la serie cuenta como 1. Por ejemplo. Si omite inicio. Extracción de subseries Una subserie es una serie dentro de una serie.

Una serie con los espacios en blanco iniciales y finales se considera mayor que la misma serie sin los espacios en blanco. se proporcionan ejemplos de comparaciones que se evalúan en true en ASCII de 7 bits con los convenios de clasificación estándar: "AA" < "AB" "FILENAME" = "FILENAME" "X&" > "X#" "CL " > "CL" "kg" > "KG" "SMYTH" < "SMYTHE" B$ < "9/14/99" . Si todos los códigos de carácter son iguales. Una serie vacía siempre se compara como una serie de caracteres. Los operadores de coincidencia de patrón tienen la sintaxis siguiente: serie Match patrón Capítulo 7. Las series se comparan carácter a carácter. Si dos series contienen caracteres numéricos. A continuación. Programación BASIC 155 . utilice la función IsNull. Operadores de coincidencia de patrón Los operaciones de coincidencia de patrón comparan una serie con un patrón de formato. las series se consideran iguales. Por ejemplo: "22" < "44" ’ devuelve true. X <> Y X<Y X>Y X <= Y X >= Y Las operaciones aritméticas se ejecutan antes de los operadores relacionales de una expresión. En su lugar. Por ejemplo. el resultado de una operación de coincidencia depende del valor de entorno local actual de los convenios Ctype y Numeric. No es igual al valor numérico 0. Por ejemplo: "23" > "2E1" devuelve true.* donde B$ = "8/14/99" No puede utilizar operadores relacionales para probar si hay un valor nulo.1) / Z es verdadera si el valor de X más Y es menor que el valor de T menos 1 dividido por Z. Un espacio se evalúa como menor que 0.Operador Eq o = Ne o # o >< o <> Lt o < Gt o > Le o <= o =< o #> Ge o >= o => o #< Relación Igualdad Desigualdad Menor que Mayor que Menor que o igual a Mayor que o igual a Ejemplo X=Y X # Y. La serie con el código de carácter más alto se considera mayor. se comparan numéricamente. Si el soporte multilingüístico está habilitado. la expresión: X + Y < (T . Tenga cuidado si utiliza la notación de potencias.

. Cero o más caracteres de cualquier tipo. es falsa: address Matches "16A": CHAR(253): "4N12A" Una serie vacía coincide con los patrones siguientes: "0A"." Then 1 Else 2) 156 Guía del desarrollador de Server Job . ". Cero o más caracteres alfabéticos.Then. 0X nX 0A nA 0N nN Cero o más caracteres de cualquier tipo. se utiliza como serie literal. Tiene la sintaxis siguiente: variable = If condición Then expresión Else expresión variable es la variable que se asigna. '' o \\. ~ 4A coincide con una serie que no contiene cuatro caracteres alfabéticos. "". Else expresión define el valor que se asigna si la condición es false. patrón es el patrón de formato y puede ser uno de los códigos siguientes: Este código..Else que puede utilizarse en una expresión. la comparación devuelve 1. Tenga en cuenta que la cláusula Else es necesaria en los siguientes ejemplos: * Devolver A o B dependiendo del valor de Column1: If Column1 > 100 Then "A" Else "B" * Añadir 1 o 2 al valor en Column2 dependiendo de lo que haya en * Column3.. Por ejemplo. If condición define la condición que determina qué valor se asigna. "0N".". n caracteres numéricos. Cero o más caracteres numéricos..... y devolverlo: Column2 + (If Column3 Matches "A.. 'serie ' Texto exacto escrito entre comillas simples o dobles. "0X". Puede especificar una coincidencia negativa añadiendo ~ (tilde) delante del código. la coincidencia es false y se devuelve 0.. Si n tiene más de nueve dígitos. Then expresión define el valor que se asigna si la condición es true... Operadores If Un operador If asigna un valor que cumple las condiciones especificadas. Por ejemplo.serie es la serie que se va a comparar. n caracteres alfabéticos. Puede especificar varios patrones separándolos con marcas de valor. El operador If es la única forma de la construcción If. Si la serie es un valor nulo. de lo contrario.. . de lo contrario. Coincide con este tipo de serie. la expresión siguiente es verdadera si la dirección tiene 16 caracteres alfabéticos o 4 caracteres numéricos seguidos de 12 caracteres alfabéticos. n caracteres de cualquier tipo... devuelve 0. Si la serie coincide con el patrón.

v Una serie vacía es false. Tiene el valor lógico nulo. Operadores de asignación Los operadores de asignación asignan valores a las variables. Los operadores lógicos prueban estas condiciones.Then. y es equivalente a X = X + 5. El valor de X es ahora 10. X += 5 La última sentencia resta 3 del valor de X. todos los demás valores numéricos son true.. Suma el valor de la expresión al valor de la variable y reasigna el resultado a la variable. Esta tabla muestra los operadores de asignación y sus usos: Operador = += Sintaxis variable = expresión variable += expresión Descripción Asigna el valor de la expresión a la variable. v Las operaciones lógicas se evalúan de izquierda a derecha.Else. las demás series de caracteres son true. los datos de serie y el valor nulo pueden funcionar como datos lógicos: v El valor numérico 0 es false. Programación BASIC 157 . el valor lógico nulo utiliza la acción false. Capítulo 7.. Concatena el valor de la variable y el valor de la expresión y reasigna el resultado a la variable. Si el valor de X es `con' y el valor de Y es `catenate': X := Y el nuevo valor de X es `concatenate'. X = 5 La siguiente sentencia añade 5 al valor de X.. Resta el valor de la expresión del valor de la variable y reasigna el resultado a la variable..3. X -= 3 Este ejemplo concatena una serie con la variable y es equivale a X=X:Y. Los operadores lógicos disponibles son: v And (o el equivalente &) v Or (o el equivalente !) v Not (invierte un valor lógico) Estos son los factores que determinan la prioridad de los operadores en las operaciones lógicas: v Las operaciones aritméticas y relacionales tienen preferencia sobre las operaciones lógicas.= expresión := variable := expresión Este ejemplo muestra una secuencia de operaciones en la misma variable. -= variable .Operadores lógicos Los datos numéricos. v Las sentencias And y las sentencias Or tienen una prioridad igual. y es equivalente a X = X . v En las cláusulas If. El valor de X es ahora 7. La primera sentencia asigna el valor 5 a la variable X. v El valor nulo SQL no es true ni false.

158 Guía del desarrollador de Server Job . Por ejemplo. se devuelve el valor de serie pero. por ejemplo. se devuelve el valor nulo: A B C X Y = = = = = @NULL "" "JONES" C:B C:A El valor obtenido de X es "JONES". v El valor nulo. mediante una serie de caracteres formada por el byte único Char(128). tenga en cuenta lo siguiente: v Una subserie seguida de un delimitador es un campo. InfoSphere DataStage genera tres o cuatro campos. tal como se define en SQL. v Si una serie empieza por un delimitador. InfoSphere DataStage supone que hay uno. En la mayor parte de los sistemas. Por ejemplo: ’ ’ o " " o \\ El valor nulo representa unos datos de valor desconocido. En el tiempo de ejecución. Se almacenan como números de coma flotante o como enteros. por ejemplo. puede definir campos especificando subseries delimitadas. numéricos o alfanuméricos como. Los programas pueden hacer referencia al valor nulo con la variable del sistema @NULL. utilice la función IsNull. Las asigna la sentencia OpenSeq y no pueden manipularse ni formatearse de ninguna forma. si concatena un valor de serie con el valor nulo. Pueden representar datos alfabéticos. Campos En las funciones de IBM InfoSphere DataStage como. Especifique una serie vacía con dos comillas dobles o simples adyacentes. InfoSphere DataStage supone que hay un campo que contiene una serie vacía delante del delimitador. Field o FieldStore. Para determinar qué constituye un campo. según su contexto. se le asigna un tipo de datos nulo. y los tipos de datos se determinan en el momento de la ejecución. Representa datos conocidos que no tienen ningún valor. v Si una subserie final no termina con un delimitador. según sea necesario. v Variables de archivo. Series BASIC vacías y valores nulos Una serie vacía es una serie de caracteres de longitud cero. si utiliza la serie ABC con dos puntos como delimitador. Hay cuatro tipos principales de datos: v Series de caracteres. pero Y es un valor nulo.Tipos de datos en las funciones y sentencias de BASIC No es necesario especificar tipos de datos en las funciones y sentencias. Para probar si un valor es el valor nulo. Todos los datos se almacenan internamente como series de caracteres. El valor nulo se representa externamente. o dos barras inclinadas invertidas. siempre se devuelve un valor nulo. una dirección. tal como se define en SQL. si concatena un valor de serie con una serie vacía. de la siguiente manera: Ejemplo A:B:C: Número de campos 3 Explicación Cada campo termina con un delimitador. La longitud de la serie está limitada únicamente por la memoria disponible. v Datos numéricos. Representa los datos cuyo valor es desconocido. Por ejemplo. Si especifica un valor nulo en una función o en otra operación. el rango va de 10-307 a 10+307 con 15 dígitos decimales de precisión.

:A:B:C 4 Palabras reservadas Estas palabras están reservadas y no deben utilizarse como nombres de variable en una transformación o una rutina: v And v Cat v Else v End v Eq v Ge v Get v v v v v v v v v v v Go GoSub GoTo Gt If Include Locked Lt Match Coincidencias Ne v Le v Next v Or v Rem v Remove v Repeat v THEN v Until v While Código fuente y código objeto El código fuente es el formato de entrada original de la rutina escrita por el programador.Ejemplo A:B:C :A:B:C: Número de campos 3 4 Explicación InfoSphere DataStage supone que hay un delimitador final. Capítulo 7. InfoSphere DataStage supone que hay un campo que contiene una serie vacía antes del primer delimitador. InfoSphere DataStage supone que hay un campo que contiene una serie vacía antes del primer delimitador y que hay un delimitador final. Programación BASIC 159 .

Su uso está restringido en las constantes numéricas y de tipo serie. Se utiliza para las series entrecomilladas. . Corchete angular izquierdo. Hash. o para formatear el código fuente. pero no en las constantes numéricas. Siempre termina con Return. Dos puntos.El código objeto es la salida compilada que IBM InfoSphere DataStage invoca como una subrutina o una función. Se utilizan para escribir series entre comillas. Una línea de código fuente tiene la sintaxis siguiente: [ etiqueta: ] sentencia [ . Está permitido en los nombres de variable y las etiquetas de sentencias. Se utiliza para indicar el operador menor que. o para formatear el código fuente. Guía del desarrollador de Server Job 160 . Se utilizan para indicar el operador de extracción de subserie y para encerrar determinadas expresiones. Se utiliza para indicar el operador de concatenación o el final de una etiqueta de sentencia. = + * \ / ^ () # $ [] . Signo más. "" '' : .. Se utilizan para encerrar argumentos en las funciones o dimensiones de matriz. Punto y coma. Se utiliza para indicar un separador decimal en las constantes numéricas. Se utiliza para indicar el final de una sentencia si desea incluir un comentario en la misma línea. Se utiliza para indicar el operador de resta o el operador unario menos. No está permitida en las constantes numéricas. Se utiliza para indicar el operador de no igual. Caracteres especiales Los siguientes caracteres tienen un significado especial en las transformaciones y rutinas. Se utiliza para indicar el operador de suma o el operador unario más. Punto. Comillas simples. Signo del dólar. Barra inclinada invertida. Carácter &. Se utiliza para indicar el operador de división. Comillas dobles. Corchetes. & < Se utiliza para indicar los operadores de igualdad o asignación. Coma. sentencia ] . Signo menos..<Return> Una línea de código fuente puede empezar con una etiqueta de sentencia. Separador Se utiliza en las constantes de tipo serie. Barra inclinada. Asterisco. Flecha arriba. Se utiliza para indicar el operador de elevación a una potencia. Tenga en cuenta también que los caracteres ASCII del 0 al 10 y del 251 al 255 no deben incorporarse en las constantes de tipo serie. o en las dimensiones de matriz. Se utiliza para indicar el operador Y relacional. Caracteres Uso permitido Espacio Se utiliza en las constantes de tipo serie. Se utilizan para escribir series entre comillas. Se utiliza para indicar el operador de multiplicación o un comentario en el código fuente. Paréntesis. Se utiliza para separar argumentos en las funciones y subrutinas.

@DAY El día del mes extraído del valor de @DATE. Signo de arroba. @FALSE El compilador sustituye el valor por 0. Se utiliza para indicar el operador mayor que. @LOGNAME El nombre de inicio de sesión del usuario. @NULL. Capítulo 7. Una marca de elemento. @TM @TRUE El compilador sustituye el valor por 1. Char(128). Char(255). Se utiliza en las derivaciones en las etapas Transformer. Consulte la función Time. @OUTROWNUM Contador de filas de salida (por enlace). @TIME La hora interna en la que se inició el programa. Una marca de texto. Programación BASIC 161 . @INROWNUM Contador de filas de entrada. @FM @IM Una marca de campo. RETURN. Char(251). Consulte la función Date. @NULL Valor nulo.CODE Códigos de estado devueltos por los procesos o mandatos del sistema. Reservado para su uso en variables del sistema.STR Representación interna del valor nulo. @SCHEMA El nombre de esquema del proyecto InfoSphere DataStage actual. @SM Una marca de subvalor. Variables del sistema IBM InfoSphere DataStage proporciona un conjunto de variables que contienen información útil del sistema a la que puede acceder desde la transformación o rutina. Las variables del sistema son de sólo lectura. Char(254). @SYSTEM. @PATH El nombre de vía de acceso del proyecto InfoSphere DataStage actual. Nombre Descripción @DATE La fecha interna en la que se inició el programa.> @ Corchete angular derecho. Char(252). @USERNO Número de usuario. Se utiliza en las restricciones y derivaciones en las etapas Transformer. @MONTH El actual extraído del valor de @DATE.

Utilice esto. 162 Guía del desarrollador de Server Job ... Funciones y sentencias de BASIC Directivas de compilador Las directivas de compilador son sentencias que determinan cómo se compila una rutina o una transformación. son útiles en expresiones de etapa activa y en subrutinas anteriores y posteriores a la etapa. Añadir o sustituir un identificador Sentencia $Define Eliminar un identificador Sentencia $Undefine Especificar una compilación condicional Sentencias $IfDef y $IfNDef Incluir otros programas Sentencia $Include Declaración Estas sentencias declaran matrices... Utilice esto.. Para hacer esto.. que se define como parte de las propiedades de un trabajo y permite que otros trabajos se ejecuten y sean controlados desde el primer trabajo..... Utilice esto. funciones y subrutinas para su uso en las rutinas. Nombre del directorio del proyecto de InfoSphere DataStage actual. Algunas de estas funciones también se pueden utilizar para obtener información de estado sobre el trabajo actual.. Para hacer esto.@VM @WHO Una marca de valor. @YEAR El año actual extraído de @DATE. Para hacer esto. Definir un área de almacenamiento en la memoria Sentencia Common Definir una función escrita por el usuario Sentencia Deffun Declarar el nombre y las dimensiones de una variable de matriz Sentencia Dimension Identificar una subrutina interna Sentencia Subroutine Control de trabajos Estas funciones se pueden utilizar en una rutina de control de trabajo. Char(253)..

del registro de trabajos DSGetLogSummary Registrar un suceso en el registro de trabajo de un trabajo distinto DSLogEvent Registrar un mensaje de error muy grave en el archivo de registro de un trabajo y terminar anormalmente el trabajo DSLogFatal Registrar un mensaje de información en el archivo de registro de un trabajo DSLogInfo Poner un mensaje de información en el registro de trabajo de un trabajo actual de control de trabajo DSLogToController Registrar un mensaje de aviso en el archivo de registro de un trabajo DSLogWarn Generar una serie que describe el estado actual de un trabajo conectado válido DSMakeJobReport Insertar argumentos en la plantilla de mensaje DSMakeMsg Capítulo 7. de un tipo especificado. Programación BASIC 163 .Especificar el trabajo que desee controlar DSAttachJob Establecer parámetros para el trabajo que desee controlar DSSetParam Establecer límites para el trabajo que desee controlar DSSetJobLimit Solicitar que se ejecute un trabajo DSRunJob Esperar a que finalice un trabajo al que se ha llamado DSWaitForJob Obtener información sobre el proyecto actual DSGetCustInfo Obtener información sobre el trabajo controlado o trabajo actual DSGetProjectInfo Obtener información sobre una etapa en el trabajo controlado o trabajo actual DSGetJobInfo Obtener información sobre un enlace en un trabajo controlado o trabajo actual DSGetStageInfo Obtener información sobre los parámetros de un trabajo controlado DSGetLinkInfo Obtener el suceso de registro del registro de trabajos DSGetParamInfo Obtener una serie de sucesos de registro sobre el tema especificado del registro de sucesos DSGetLogEntry Obtener una lista de ID de suceso de registro para una ejecución determinada de la invocación de un trabajo DSGetLogEventIds Obtener el suceso de registro más reciente.

Para hacer esto... en el VOC como elemento invocable o en el espacio de catálogo DSCheckRoutine Ejecutar un mandato del motor de servidor o de DOS desde una subrutina anterior/posterior DSExecute Detener un trabajo controlado DSStopJob Devolver un descriptor de contexto de trabajo obtenido anteriormente de DSAttachJob DSDetachJob Establece un mensaje de estado que devolverá un trabajo como mensaje de terminación cuando finalice DSSetUserStatus Especificar si un trabajo genera metadatos operativos cuando se ejecuta (altera temporalmente el valor predeterminado del proyecto) DSSetGenerateOpMetaData Control del programa Estas sentencias controlan el flujo del programa con la ejecución directa del programa mediante bucles..GoSub 164 Guía del desarrollador de Server Job .. etc..Asegurar que un trabajo está en el estado correcto para ser ejecutado y validado DSPrepareJob Interactuar con el recurso de envío de correo del sistema DSSendMail Registrar un mensaje de aviso en el archivo de registro de un trabajo DSTransformError Convertir un estado de control de trabajo o código de error en un mensaje de texto explicativo DSTranslateCode Suspender un trabajo hasta que exista o no exista un archivo nombrado DSWaitForFile Comprobar si está catalogada una rutina de BASIC. Utilice esto.. subrutinas. Iniciar un conjunto de sentencias Case Begin Case (consulte Sentencia Case) Especificar condiciones para el flujo del programa Case (consulte Sentencia Case) Finalizar un conjunto de sentencias Case End Case (consulte Sentencia Case) Finalizar un programa o un bloque de sentencias Sentencia End Llamar a una subrutina externa Sentencia Call Llamar a una subrutina interna Sentencia GoSub Especificar una condición para llamar a una subrutina interna Sentencias On.

...Next) Definir el final de un bucle For.... Abrir un archivo para el proceso secuencial Sentencia OpenSeq Leer una línea de un archivo abierto con OpenSeq ReadSeq Escribir una línea en un archivo abierto con OpenSeq Función WriteSeq Escribir una línea en un archivo abierto con OpenSeq y guardado en disco Función WriteSeqF Truncar un archivo abierto con OpenSeq Función WEOFSeq Cerrar un archivo abierto con OpenSeq Sentencia CloseSeq Buscar el estado de un archivo abierto con OpenSeq Función Status Verificación de series y formateo Estas funciones realizan tareas de formateo de series: Para hacer esto. Para hacer esto..GoTo Especificar condiciones para el flujo del programa Operador If.. Utilice esto....Then....... Until (consulte Sentencias For.Next) Invocar una subrutina de una sentencia sin condiciones Sentencia GoTo Invocar una subrutina de una sentencia con condiciones Sentencia On..Next) Crear un bucle Sentencias Loop..Else Proceso de archivo secuencial Estas sentencias y funciones se utilizan para abrir. Capítulo 7.Repeat Definir condiciones para que se detenga un bucle While.. leer y cerrar archivos para el proceso secuencial. Programación BASIC 165 .Next Next (consulte Sentencias For....... Utilice esto.Next) Ir a la siguiente iteración de un bucle Continue (consulte Sentencias For..Volver de una subrutina externa o interna Sentencia Return Definir el inicio de un bucle For...Next For (consulte Sentencias For.Next) Salir de un bucle Exit (consulte Sentencias For..

Para hacer esto.. Encontrar la columna inicial de una subserie Función Index Sustituir una o varias instancias de una subserie Función Change Devolver la posición de la columna antes o después de una subserie Función Col1 Función Col2. Utilice esto..Comprobar si una serie es alfabética Función Alpha Verificar con una suma de comprobación de 16 bits Función Checksum Verificar con un código de comprobación de redundancia cíclica de 32 bits Función CRC32 Entrecomillar una serie Función DQuote Delimita una serie con comillas simples Función SQuote Analizar una serie fonéticamente Función Soundex Convertir una serie a mayúsculas Función UpCase Convertir una serie a minúsculas Función DownCase Sustituir caracteres especificados en una variable Función Convert Sustituir caracteres especificados en una serie Sentencia Convert Sustituir o suprimir caracteres en una serie Función Exchange Comparar la igualdad de dos series Función Compare Calcular el número de caracteres en una serie Función Len Calcular la longitud de una serie en posiciones de visualización Función LenDP Recortar los espacios en blanco excedentes de una serie Función Trim Función TrimB Función TrimF Crear una serie formada sólo por espacios Función Space Extracción de subseries y formateo Puede extraer y manipular las subseries y los campos utilizando estas funciones... Contar el número de veces que una subserie aparece en una serie Función Count 166 Guía del desarrollador de Server Job .

. Programación BASIC 167 . Para hacer esto.Contar las subseries delimitadas en una serie Función DCount Sustituir una o varias instancias de una subserie Función Ereplace Devolver una subserie delimitada Función Field Sustituir.. suprimir o insertar subseries en una serie Función FieldStore Doblar las series para crear subseries Función Fold Doblar las series para crear subseries utilizando las posiciones de visualización de los caracteres Función FoldDP Extraer los primeros n caracteres de una serie Función Left Extraer los últimos n caracteres de una serie Función Right Buscar una subserie que coincida con un patrón Función MatchField Repetir una serie para crear una serie nueva Función Str Buscar una matriz dinámica de una expresión Sentencia LOCATE Conversión de datos Estas funciones realizan conversiones numéricas y de caracteres. Utilice esto... Convertir valores de código ASCII en sus equivalentes EBCDIC Función Ebcdic Convertir valores de código EBCDIC en sus equivalentes ASCII Función Ascii Convertir un valor de código ASCII en su equivalente de carácter Función Char Convertir un carácter ASCII en su valor de código Función Seq Convertir valores hexadecimales en decimales Función Xtd Convertir valores decimales en hexadecimales Función Dtx Convertir un valor numérico en uno de coma flotante con la precisión especificada Función FIX Convertir un valor numérico en uno de coma flotante sin pérdida de precisión Función REAL Generar un carácter individual en formato Unicode Función UniChar Capítulo 7.

cantidades monetarias. fechas... El valor de texto.. No incluya comentarios después del texto. 168 Guía del desarrollador de Server Job ..sustitución o se incluirán como parte del texto de sustitución. Utilice esto.sustitución..Convertir un carácter Unicode en su valor decimal equivalente Función UniSeq Formateo de datos Estas funciones pueden utilizarse para formatear los datos en horas. Puede ser cualquier identificador válido.. Convertir datos para la salida Función Oconv Convertir datos en la entrada Función Iconv Formatear datos para la salida Función Fmt Formatear datos por posición de visualización “Función FmtDP” en la página 232 Funciones de entorno local Estas funciones se utilizan para establecer o identificar el entorno local actual. No está disponible en las expresiones. Utilice esto.sustitución] El valor de identificador es el símbolo que se va a definir. Sintaxis $Define identificador [texto.sustitución es una serie de caracteres que el compilador utiliza para sustituir identificador en todos los casos en que aparece en el programa que contiene la sentencia $Define. Para hacer esto.sustitución con una nueva línea. Para hacer esto. Finalice el texto.. etc. Los siguientes espacios en blancos se consideran parte del texto.sustitución. Comentarios Especifique un espacio en blanco para separar el identificador del texto.. Establecer un entorno local SetLocale Obtener un entorno local Función GetLocale Sentencia $Define Define los identificadores que controlan la compilación del programa o proporciona el texto de sustitución de un identificador.

Ejemplo Este ejemplo muestra cómo puede utilizarse $Define en el tiempo de compilación para determinar si una rutina opera en modalidad de depuración. Con $IfNDef. * Da un nombre simbólico a los últimos 3 caracteres del * argumento de entrada de la rutina de transformación. . Programación BASIC 169 .arg1 = ":Arg1.. Call DSLogInfo("Transform entered. y cómo se utilizan $IfDef y $IfNDef para controlar el flujo del programa.. No está disponible en las expresiones. Comentarios Con $IfDef. If NameSuffix = "X27" Then * La acción se basa en un valor específico en los últimos 3 caracteres. $Else especifica las sentencias alternativas que se ejecutan. si el identificador está definido por una sentencia $Define anterior. según corresponda: * Establece la siguiente línea en $UnDefine para desactivar el código de depuración $Define DebugMode . todas las líneas de código fuente del programa que aparecen entre la sentencia $IfDef y la sentencia $EndIf de cierre se compilan. $IfDef DebugMode * En modalidad de depuración.Ejemplos Este ejemplo muestra cómo puede utilizarse $Define en el tiempo de compilación para determinar si una rutina opera en modalidad de depuración. Las sentencias $IfDef y $IfNDef se pueden anidar hasta 10 niveles. "Test") $EndIf Este ejemplo muestra cómo puede utilizarse $Define para sustituir texto del programa por un identificador simbólico.. Sintaxis {$IfDef | IfNDef} identificador [ sentencias ] $Else [ sentencias ] $EndIf identificador es el identificador que se prueba.. las líneas se compilan si el identificador no está definido. Capítulo 7.. $EndIf finaliza el bloque de compilación condicional... y cómo se utilizan $IfDef y $IfNDef para controlar el flujo del programa. $Define NameSuffix Arg1[3] . se registra cada vez mediante esta rutina.End Sentencias $IfDef y $IfNDef Prueba un identificador para ver si está definido o no definido.. según corresponda: * Establece la siguiente línea en $UnDefine para desactivar el código de depuración $Define DebugMode .

Sintaxis $Include programa Comentarios El archivo incluido debe estar en el subdirectorio del proyecto DSU_BP. Sintaxis $Undefine identificador Operador [] Sintaxis Extrae una subserie de una serie de caracteres. $Undefine no tiene ningún efecto. instancia. Si especifica 0 o un número negativo. se devuelve una serie vacía. instancia especifica qué instancia del delimitador marca el final de la subserie. Si la serie es un valor nulo.] longitud ] serie[ delimitador.arg1 = ":Arg1. 170 Guía del desarrollador de Server Job . se devuelve una serie vacía. Puede anidar sentencias $Include. La segunda sintaxis actúa como la función Field. "Test") $EndIf Sentencia $Include Inserta el código fuente contenido en un archivo aparte y lo compila con el programa principal. Si no se establece ningún identificador. salvo que instancia sea 1. el valor extraído también es nulo. Los corchetes del operador [ ] se muestran en negrita y cursiva en la sintaxis y deben especificarse. No está disponible en las expresiones. longitud es el número de caracteres en la subserie. repeticiones ] serie es la serie de caracteres. Si especifica más caracteres de los que quedan entre el inicio y el final de la serie.$IfDef DebugMode * En modalidad de depuración. el valor devuelto contiene sólo el número de caracteres que quedan en serie. Un valor menor que 1 se supone que es 1. serie [ [ inicio. en cuyo caso se devuelve la serie. Sentencia $Undefine Elimina un identificador que se ha establecido utilizando la sentencia $Define. Si especifica una posición inicial después del final de serie. se registra cada vez mediante esta rutina. inicio es un número que define la posición inicial del primer carácter de la subserie. se devuelve una serie vacía. No está disponible en las expresiones. Call DSLogInfo("Transform entered. delimitador es un carácter que delimita el inicio y el final de la subserie. Si no se encuentra el delimitador en la serie. Un valor 0 o un valor negativo se supone que es 1.

el cuarto carácter # es el terminador de la subserie que se va a extraer. Comentarios Puede especificar una subserie formada por los n últimos caracteres de una serie utilizando la primera sintaxis y omitiendo inicio. Programación BASIC 171 . Cada línea de comentarios completa debe empezar por un asterisco (*). Las sintaxis siguientes especifican subseries que empiezan en la posición de carácter 1: expression [ 0. Si añade un comentario al final de una línea que contiene una sentencia ejecutable. Se devuelve el delimitador con las sucesivas subseries.4. A[3] sustituye los tres últimos caracteres de A (345) por el nuevo valor asignado para esa subserie (1212). Ejemplos En el ejemplo siguiente (donde se utiliza la segunda sintaxis). length ] expression [ -1. debe escribir un carácter de punto y coma (. Como no se ha especificado ningún argumento de longitud.1] El resultado es B es igual a DHHH. El nuevo valor asignado a la variable sustituye a la subserie especificada por el operador [ ]. Todas las sintaxis de subserie se pueden utilizar con el operador de asignación ( = ). Capítulo 7. Sintaxis * [texto.) antes del asterisco. excepto en el texto de sustitución de un identificador (consulte la sentencia $Define). Sentencia * Inserta un comentario en un programa. Un valor menor que 1 se supone que es 1. y se extrae un campo: A="###DHHH#KK" B = A["#". Este uso no está disponible en las expresiones.comentario] Comentarios Un comentario puede aparecer en cualquier lugar del programa. Por ejemplo: A = ’12345’ A[3] = 1212 El resultado es A es igual a 121212. Ejemplo Este ejemplo contiene un comentario en línea y un comentario de línea completa.repetición especifica el número de veces que se repite la extracción en la serie. length ] El ejemplo siguiente especifica una subserie de los cinco últimos caracteres: "1234567890" [5] El resultado es 67890.

ya que toda operación aritmética que incluya un valor nulo * da como resultado un valor nulo.34) . Ejemplos Estos ejemplos muestran cómo comprobar que una serie contiene sólo caracteres alfabéticos: Column1 = "ABcdEF%" * el carácter "%" no es alfabético Column2 = (If Alpha(Column1) Then "A" Else "B") * Column2 se establece en "B" Column1 = "" * tenga en cuenta que la serie vacía no es un carácter alfabético Column2 = (If Alpha(Column1) Then "A" Else "B") * Column2 se establece en "B" 172 Guía del desarrollador de Server Job . Por ejemplo. el resultado de esta función depende del valor de entorno local actual del convenio Ctype.* devuelve 12. Comentarios Las series alfabéticas contienen sólo los caracteres de a-z o A-Z.34 AbsValue = Abs(-12. Comentarios Una forma útil de eliminar el signo más o menos de una serie.34) .* establece la variable en un valor nulo If IsNull(MyVar * 10) Then * Será true. un valor nulo si la serie es un valor nulo y 0 en los demás casos. Si número es un valor nulo. Alpha devuelve 1 si la serie es alfabética. si número es -6 o +6.MyVar = @Null . se devuelve un valor nulo.* devuelve 12.34 Función Alpha Comprueba si una serie es alfabética. Ejemplo Este ejemplo utiliza la función Abs para calcular el valor absoluto de un número: AbsValue = Abs(12. Abs devuelve 6. Sintaxis Abs (número) número es el número o la expresión que desea evaluar. End Función Abs Devuelve el valor absoluto (sin signo) de un número. Sintaxis Alpha (serie) serie es la serie o la expresión que desea evaluar. Si el soporte multilingüístico está habilitado.

se devuelve un valor nulo. Asignan valores a las variables. utilice esta sintaxis: variable = @NULL Capítulo 7.. No está disponible en las expresiones. Comentarios Las funciones Ascii y Ebcdic realizan operaciones complementarias. Si la serie es un valor nulo.* letra A dígito 1 en EBCDIC . Ejemplo Este ejemplo muestra cómo se utiliza la función Ascii para comparar una serie de bytes EBCDIC: EbcdicStr = Char(193):Char(241) AsciiStr = Ascii(EbcdicStr) If AsciiStr = "A1" Then . esta función puede devolver datos no reconocidos para la correlación de juego de caracteres actual.Función Ascii Convierte los valores de los caracteres de una serie del formato EBCDIC al formato ASCII. Sintaxis Ascii (serie) serie es la serie o la expresión que desea convertir. Comentarios = asigna el valor a la variable. -= resta el valor de la variable. EndIf . Programación BASIC 173 .* .* se compara con la constante ASCII . s Sintaxis variable = valor variable += valor variable -= valor variable := valor valor es el valor que desea asignar. Para asignar un valor nulo a una variable.. := concatena el valor al final de la variable. Puede ser una expresión o una constante cualquiera.. se utiliza esta ramificación Sentencia de asignación Las sentencias de asignación son =.* convierte EBCDIC en ASCII . incluido el valor nulo. -= y :=. += añade el valor a la variable.. +=. Nota: Si el soporte multilingüístico está habilitado.

entero2) BitSet | BitReset | BitTest (entero. utilice esta sintaxis: variable = @NULL. se invierte ese bit. no se cambia.bit es el número del bit en el que se actúa. BitXOr compara dos enteros bit a bit. no se cambia. de lo contrario. Si número. se devuelve un valor nulo. devuelve el bit 1 si uno de los bits o ambos son 1. ya que el valor de bit superior puede variar en otro hardware. Los bits se cuentan de derecha a izquierda a partir de 0. Si ya es 1. Los lugares decimales se truncan antes de la evaluación.* Result is 4 * (bin) (dec) BitAnd (bin) (dec) gives (bin) (dec) * 110 6 1100 12 100 4 174 Guía del desarrollador de Server Job . de lo contrario. BitSet establece el bit especificado en 1. BitAnd compara dos enteros bit a bit.Para asignar una serie de caracteres que contiene únicamente el carácter utilizado para representar el valor nulo a una variable. BitReset restablece el bit especificado en 0. BitTest prueba si se ha establecido el bit especificado. BitReset. BitNot. entero es el entero que se va a evaluar. Si ya es 0. número.STR funciones Bit Las funciones Bit son BitAnd. BitOr compara dos enteros bit a bit. cambia el bit 1 por el bit 0. Para cada bit. Para cada bit. Para cada bit. se invierten todos los bits. Realizan operaciones bit a bit en los enteros. devuelve el bit 1 si sólo uno de los dos bits es 1.bit. Si el entero es un valor nulo. devuelve el bit 0. devuelve el bit 0. devuelve el bit 1 si ambos bits son 1. No utilice estas funciones si desea que el código sea portátil.número. el programa falla con un error de tiempo de ejecución. de lo contrario. BitNot invierte los bits en un entero. Si se especifica número. se devuelve un valor nulo. Devuelve 1 si el bit se ha establecido. BitSet.bit]) entero1 y entero2 son los enteros que se van a comparar. devuelve 0. BitTest y BitXOr. es decir. Los lugares decimales se truncan antes de la evaluación. Comentarios Las funciones Bit operan en una palabra de complemento de a dos de 32 bits. BitOr.bit es un valor nulo.bit) BitNot (entero [. Ejemplos BitAnd Result = BitAnd(6. de lo contrario. devuelve el bit 0. Si alguno de los valores de entero es nulo. y viceversa. número. de lo contrario. Sintaxis BitAnd | BitOr | BitXOr (entero1. 12) .

.* gives Result is -7 Result is 14 Result is 13 Result is 11 (bin) (dec) 1. 0) .* is: 1 1 0 1 Result Result Result Result is is is is 1 1 0 1 BitXOr Result = BitXor(6.. 0) BitTest(11.* Result is 14 * (bin) (dec) BitOr (bin) (dec) gives (bin) (dec) * 110 6 1100 12 1110 14 BitReset Result = Result = Result = Result = * (bin) * 11101 * 11101 * 10 * 10 BitReset(29.* Result is 3 .* Result is 10 * (bin) (dec) BitXOr (bin) (dec) gives (bin) (dec) * 110 6 1100 12 1010 10 Funciones orientadas a los bytes IBM InfoSphere DataStage proporciona cuatro funciones que pueden utilizarse para manipular series internas a nivel de byte. 1) BitTest(11.* .* Result is 2 (dec) BitReset bit# gives (bin) (dec) 29 0 11100 28 29 3 10101 21 2 1 00 0 2 0 10 2 BitSet Result = Result = Result = Result = * (bin) * 10100 * 10100 * 10 * 10 BitSet(20.* . Programación BASIC 175 . 1) . 1) Result = BitNot(15.* Result is 28 BitReset(29. Capítulo 7.* . v ByteLen devuelve la longitud de una serie en bytes.* . 0) BitSet(20.* . v Byte permite crear una serie byte a byte. 0) Result = BitNot(15.* Result is 2 gives (bin) (dec) 10101 21 11100 28 11 3 10 2 BitTest Result = Result = Result = Result = * (bin) * 1011 * 1011 * 1011 * 1011 BitTest(11. 2) BitTest(11. 3) . 2) * (bin) (dec) BitNot bit# * 110 6 (all) * 1111 15 0 * 1111 15 1 * 1111 15 2 .* Result is 28 . 12) .BitNot Result = BitNot(6) Result = BitNot(15.* .* Result is 0 BitReset(2. 1) (dec) BitReset bit# 20 0 20 2 2 0 2 1 . 0) BitSet(2. 12) . 3) BitSet(2.* Result is 21 BitReset(2.* Result is 21 .1001 7 1110 14 1101 13 1011 11 BitOr Result = BitOr(6. 0) . 3) (dec) BitTest bit# 11 0 11 1 11 2 11 3 .

Función Byte Devuelve un byte de un valor numérico de entrada. Si expresión es un nulo SQL. puede producir resultados inesperados cuando la procese otra función. Función ByteType Devuelve la función de un determinado byte en el código de carácter interno. en lugar de en caracteres. v ByteVal determina el valor de un determinado byte en una serie. el resultado es 0. Si valor es un nulo SQL. la función Byte funciona como la función Char. del 0 al 255. Nota: Utilice estas funciones con cuidado: si crea una serie no válida. Sintaxis ByteLen (expresión) expresión es la serie que se va a evaluar.v ByteType determina la función interna de un determinado byte. se devuelve un valor nulo. Sintaxis ByteType (valor) valor es un valor de byte. Función ByteLen Devuelve la longitud de una serie interna en bytes. cuya función debe determinarse. el resultado es un nulo. Si el soporte multilingüístico no está habilitado. Comentarios La función Byte puede utilizarse para crear una serie byte a byte. Comentarios El resultado se devuelve como uno de los valores siguientes: Valor 0 1 Significado El byte final de un carácter de varios bytes Un carácter de un solo byte Guía del desarrollador de Server Job 176 . Comentarios Si expresión es una serie vacía. en lugar de carácter a carácter. Sintaxis Byte (expresión) expresión es un valor de carácter en el rango del 0 al 255.

Comentarios Call transfiere el control de programa del programa principal a una subrutina externa compilada. Si pasa las variables por referencia. Sentencia Call Llama a una subrutina.. Si se omite o es menor que 1. deben ir separados por comas. Programación BASIC 177 . una expresión o una constante que desea pasar a la subrutina. número_byte es el número del byte en la serie que se evalúa. No está disponible en las expresiones. número_byte ] ) serie contiene el byte que se va a evaluar. ByteVal Sintaxis ByteVal ( serie [. Nota: Si pasa las variables por valor. Una serie vacía o un valor nulo devuelve -1. Si hay varios argumentos. Utilice una sentencia Return para devolver el control al programa principal. Comentarios El resultado se devuelve como un valor para el byte en el rango del 0 al 255. Una serie que tiene menos bytes que el número especificado en número_byte devuelve -1. Capítulo 7. las variables se pasan por referencia. un cambio en la variable en la subrutina también afecta a programa principal. delimítelas con paréntesis.. argumento ] . se utiliza 1. un cambio en la variable en la subrutina no afecta al valor de la variable en el programa principal. ) ] argumento es una variable. Si desea pasar variables por valor. Las constantes se pasan por valor.2 3 4 5 -1 El byte inicial de un carácter de dos bytes El byte inicial de un carácter de tres bytes Reservado (el byte inicial de un carácter de cuatro bytes) Un delimitador del sistema El valor de entrada no está en el rango del 0 al 255 Función ByteVal Devuelve el valor interno de un byte especificado en una serie. Sintaxis Call subrutina [ ( argumento [ . El número de argumentos especificados en una sentencia Call debe ser igual al número de argumentos especificados en la sentencia Subroutine que identifica la subrutina.

. * Asegúrese de proporcionar otra variable para el segundo argumento * de la rutina invocada para mantenerlo aparte del suyo * propio. El proceso se repite hasta que se alcance una sentencia End Case. actúe según corresponda Endif Return Sentencia Case Altera la secuencia de ejecución en el programa de acuerdo con el valor de una expresión.* se establece el código de error local * Cuando se invoca una rutina escrita por el usuario que se mantiene en el * repositorio de DataStage. debe añadir un prefijo "DSU.". Para probar si una variable contiene un valor nulo.Ejemplo Este ejemplo muestra cómo llamar a una rutina anterior/posterior denominada MyRoutineB desde otra rutina denominada MyRoutineA: Subroutine MyRoutineA(InputArg. Si expresión es false.MyRoutineB("First argument".* la rutina invocada ha fallado. sentencias son las sentencias que se ejecutan si expresión es true. expresión es un valor que se utiliza para probar el caso. utilice una expresión que contenga el valor constante 1. ErrorCode) ErrorCode = 0 . Ejemplo Este ejemplo utiliza sentencias Case en el argumento de entrada para seleccionar el tipo de proceso que se ejecuta en una rutina: Function MyTransform(Arg1) Begin Case Case Arg1 = 1 Reply = "A" Case Arg1 = 2 Reply = "B" 178 Guía del desarrollador de Server Job . Call DSU. Sintaxis Begin Case expresión expresión End Case Case sentencias [ Case sentencias ] .. Si más de una expresión es true. . utilice esta sintaxis: Case IsNull (expresión) Para especificar un caso predeterminado para que se ejecute si las demás expresiones son false. el programa cambia a la siguiente sentencia Case... sólo se actúa en la primera. no se ejecuta ninguna de las sentencias. Si ninguna expresión es true. No está disponible en las expresiones. Si el valor de expresión en la primera sentencia Case es true. Comentarios Las sentencias Case pueden estar repetidas. se supone que es false. Si expresión es un valor nulo. ErrorCodeB) If ErrorCodeB <> 0 Then . se ejecutan las sentencias siguientes.

subserie es la subserie que desea sustituir.* los demás valores Call DSTransformError("Bad arg":Arg1. Sintaxis Change (serie. Ejemplo String1 = "ABC" String2 = "1234" Result = Cats(String1.número [. Si está vacía. Si alguna de las series es un valor nulo. Un valor menor que 1 toma el valor 1 de forma predeterminada. "MyTransform" Reply = "" End Case Return(Reply) Sentencia Cats Concatena dos series. subserie.Case Arg1 > 2 And Arg1 < 11 Reply = "C" Case @True . Sintaxis Cats (serie1. Programación BASIC 179 . Si utiliza un valor nulo para otra variable. número especifica el número de instancias de subserie que hay que sustituir. se devuelve el valor de serie (esta es la única diferencia entre Change y Ereplace). Capítulo 7. se eliminan todas las apariciones de subserie. String2) * El resultado contiene "ABC1234" Función Change Sustituye una o varias instancias de una subserie. inicio especifica la primera instancia que hay que sustituir.inicio]]) serie es la serie o la expresión en la que desea cambiar subseries. Si serie se evalúa en un valor nulo. Comentarios Un valor nulo para serie devuelve un valor nulo. se devuelve un valor nulo. serie2) serie1 y serie2 son las series que se concatenarán. Para cambiar todas las instancias. se devuelve el valor nulo. sustitución [. Si sustitución es una serie vacía. utilice un valor menor que 1. sustitución es la subserie de sustitución. se produce un error de tiempo de ejecución.

Ejemplo Este ejemplo utiliza la función Char para devolver el carácter asociado con el código de carácter especificado: MyChar = Char(65) . Si el código es 128.STR. 2. los valores de código en el rango del 129 al 247 devuelve valores Unicode en el rango de x0081 a x00F7. es decir. utilice la función Byte. → "")* El resultado es "AACCDD" Función Char Genera un carácter ASCII a partir de su valor de código numérico. 1)* El resultado es "AAxxxCCxxxDDBB" El ejemplo siguiente elimina todas las apariciones de la subserie: MyString = "AABBCCBBDDBB"NewString = Change (MyString.* devuelve "a" MyChar = Char(32) . → "xxx". Sintaxis Char (código) código es el valor de código ASCII del carácter o una expresión que se evalúa en el código. Comentarios Tenga cuidado con los valores nulos.* devuelve un espacio MyChar = Char(544) * devuelve un espacio (544 = 32 módulos 256) Función Checksum Devuelve un valor de suma de comprobación de una serie. Nota: Si el soporte multilingüístico está habilitado. el valor devuelto es CHAR(128). se devuelve un nulo. Estos son caracteres de varios bytes equivalentes a los mismos valores en el juego de caracteres ISO 8859 (Latin 1). → "xxx") * El resultado es "AAxxxCCxxxDDxxx" El ejemplo siguiente sustituye sólo las dos primeras apariciones: MyString = "AABBCCBBDDBB"NewString = Change (MyString. La función Char es la inversa de la función Seq. "BB". "BB".* devuelve "A" MyChar = Char(97) . la variable del sistema @NULL.Ejemplos El siguiente ejemplo sustituye todas las apariciones de una subserie por otra: MyString = "AABBCCBBDDBB"NewString = Change(MyString. Si el código es un valor nulo. Sintaxis Checksum (serie) 180 Guía del desarrollador de Server Job . Para generar los bytes específicos con los valores del 129 al 247. "BB".

v Termina el programa actual. Sintaxis CloseSeq variable. Varias operaciones OpenSeq en el mismo archivo sólo generan un bloqueo de registro de actualización. se devuelve el valor nulo. se utiliza la función Checksum para devolver un número que es un código de redundancia cíclica para la serie especificada: MyString = "This is any arbitrary string value" CheckValue = Checksum(MyString) . Si serie es un valor nulo. v Se retrotrae alguna transacción no confirmada iniciada en el entorno de ejecución actual. el valor devuelto por la función Status es el número de error.archivo [On Error sentencias ] variable. Col1 devuelve un valor 0 si: v No se ha ejecutado la función Field.* devuelve 36235 Sentencia CloseSeq Cierra un archivo después del proceso secuencial. Programación BASIC 181 . Capítulo 7. por lo que sólo debe incluir una sentencia CloseSeq por archivo. Sintaxis Col1 ( ) Comentarios La posición del carácter se devuelve como un número. Ejemplo En este ejemplo. OpenSeq establece un bloqueo de registro de actualización en el archivo. se impide que ningún otro programa cambie el archivo mientras se procesa.archivo especifica un archivo abierto anteriormente con una sentencia OpenSeq. El valor devuelto es local para la rutina que ejecuta la función Field. De este modo. Función Col1 Devuelve la posición del carácter anterior a la subserie especificada en la función Field ejecutada más recientemente. Si se produce un error muy grave y no se ha especificado ninguna cláusula On Error: v Aparece un mensaje de error.serie es la serie a la que desea añadir la suma de comprobación. Comentarios Cada referencia de archivo secuencial en una rutina debe ir precedida de una sentencia OpenSeq aparte para el archivo. Si se utiliza la cláusula On Error. CloseSeq restablece este bloqueo después de procesar el archivo. El valor de Col1 en la rutina se inicializa como 0. On Error sentencias especifica las sentencias que se ejecutan si se produce un error muy grave durante el proceso de la sentencia CloseSeq.

". Ejemplos La función Field del ejemplo siguiente devuelve la subserie "CCC". * Extraer tercer campo delimitado por "/".* devuelve el final de la serie de hecho En el ejemplo siguiente. Field devuelve toda la serie. SubString = Field("AAA/BBB/CCC". 4.5.4. la posición del delimitador que sigue a 5.5.5. Ejemplos La función Field del ejemplo siguiente devuelve la subserie "CCC". Col1 ( ) devuelve 8. * Obtener cuarto y quinto campo delimitado por ". ya que el delimitador (. Col1 ( ) devuelve 6. la posición del delimitador que precede a 4.2. la posición del delimitador (/) que precede a CCC. El valor devuelto es local para la rutina que ejecuta la función Field. 4. Col2 ( ) devuelve 12.3) Position = Col1() . la función Field devuelve una subserie de dos campos con el delimitador (. "/" .4. Col2 devuelve un valor 0 si: v No se ha ejecutado la función Field. v No se ha encontrado la serie.2.3) Position = Col2() .5.* obtiene la posición del delimitador En el ejemplo siguiente. 2) Position = Col1() . * Obtener cuarto y quinto campo delimitado por ".* obtiene la posición del delimitador Función Col2 Devuelve la posición del carácter que sigue a la subserie especificada en la función Field ejecutada más recientemente. Cuando se devuelve el control al programa de llamada.* obtiene la posición del delimitador En el ejemplo siguiente. v No se ha encontrado la serie. 182 Guía del desarrollador de Server Job .6". Sintaxis Col2 ( ) Comentarios La posición del carácter se devuelve como un número. * Extraer tercer campo delimitado por "/".) que los separa: 4. SubString = Field("1. la posición tras el último carácter de la serie. Col2 ( ) devuelve 10. Col2 ( ) devuelve 6.". la posición que el delimitador (/) habría ocupado después de CCC si no se hubiera encontrado el final de la serie. ". "/" . SubString = Field("1.3.3.) no se encuentra. ".6". la función Field devuelve una subserie de dos campos con el delimitador (.v La expresión de delimitador de la función Field es una serie vacía o el valor nulo.) que los separa: 4. SubString = Field("AAA/BBB/CCC". 2) Position = Col2() . El valor de Col2 en la rutina se inicializa como 0. se restaura el valor guardado de Col2.".". v La expresión de delimitador de la función Field es una serie vacía o el valor nulo.

H contiene: Common /MyCommon/ ComVar1.* variable individual ComVar2(10) . Col2 ( ) devuelve 0 porque no se ha encontrado la subserie.* devuelve la longitud de la serie + 1 En el ejemplo siguiente. pero la sentencia Common debe aparecer antes de la sentencia Dimension. n) If ComVar2(n) <> "" Then ComVar1 = n . (Utilice la sentencia $Include para definir el área común en cada rutina). * * Intenta obtener primero el décimo campo delimitado por ".H ErrorCode = 0 * Campos distribuidos para el argumento entrante en la matriz * común: For n = 1 To 10 ComVar2(n) = Field(InputArg. SubString = Field("9*8*7". ErrorCode) $Include MyCommon..". Se pueden volver a dimensionar más tarde con una sentencia Dimension. Ejemplo Este ejemplo muestra dos rutinas que se comunican mediante un área común denominada MyCommon. No está disponible en las expresiones.variable] .* devuelve 0 Sentencia Common Define un área de almacenamiento común para las variables. pero deben definirse en el mismo orden. de la siguiente manera: Subroutine MyRoutineA(InputArg. Field devuelve una serie vacía. . Sintaxis Common /nombre / variable [ . Las matrices se pueden dimensionar y denominar con una sentencia Common. 1) Position = Col2() . ".* * Intenta obtener primero el primer campo delimitado por ". Comentarios Todas las rutinas que tienen declarado el /nombre/ común pueden acceder a las variables del área común. Las variables correspondientes pueden tener distintos nombres en distintas rutinas. 10) Position = Col2 .". definida en un archivo aparte en el subdirectorio DSU_BP cuyo nombre está declarado por una sentencia $Include: El archivo DSU_BP \ MyCommon. ya que no existe una décima aparición de la subserie en la serie. ". /nombre/ es el nombre que identifica el área común y es significativo hasta 31 caracteres. "*".". La sentencia Common debe preceder a cualquier referencia a las variables que denomina.* indicate highest one used End Capítulo 7. * pero falla. SubString = Field("9*8*7*6*5*4".. * pero falla. Programación BASIC 183 . variable es el nombre de una variable que se almacena en el área común.".* matriz de 10 variables Las rutinas se definen como anteriores/posteriores.

Next n Call DSU.MyRoutineB("another arg", ErrorCodeB) * Etc. ... Return Subroutine MyRoutineB(InputArg, ErrorCode) $Include MyCommon.H ErrorCode = 0 * Lee los valores fuera de la matriz común: For n = 1 To ComVar1 MyVar = ComVar2(n) * Realizar alguna acción... ... Next n Return

Función Compare
Compara dos series. Si el soporte multilingüístico está habilitado, el resultado de esta función depende del valor de entorno local actual del convenio Collate.

Sintaxis
Compare (serie1, serie2 [ , justificación ])

serie1 y serie2 son las series que se compararán. El valor de justificación es L para una comparación justificada a la izquierda o R para una comparación justificada a la derecha. Si no especifica L o R, el valor predeterminado es L. Cualquier otro valor genera un aviso de tiempo de ejecución, y se devuelve 0.

Comentarios
El resultado de la comparación se devuelve como uno de los valores siguientes: serie1 es menor que serie2. 0 serie1 es igual que serie2 o la expresión de justificación no es válida. 1 serie1 es mayor que serie2. Utilice una comparación justificada a la derecha para las series numéricas; utilice una comparación justificada a la izquierda para las series de texto. Tenga cuidado con las series mixtas. Por ejemplo, una comparación justificada a la derecha de las series AB100 y AB99 indica que AB100 es mayor que AB99 ya que 100 es mayor que 99. No obstante, una comparación justificada a la derecha de las series AC99 y AB100 indica que AC99 es mayor ya que C es mayor que B.

Ejemplo
En el ejemplo siguiente, las series AB99 y AB100 se comparan con la opción de justificación a la derecha, en la que "AB100" es mayor que "AB99":
On Compare("AB99", "AB100", "R") + 2 GoSub LessThan, EqualTo GreaterThan

184

Guía del desarrollador de Server Job

Función Convert
Sustituye todas las instancias de los caracteres especificados en una serie por los caracteres de sustitución.

Sintaxis
Convert (lista, nueva.lista, serie)

lista es la lista de caracteres que se van a sustituir. Si la lista es un valor nulo, genera un error de tiempo de ejecución. nueva.lista es la lista correspondiente de caracteres de sustitución. Si nueva.lista es un valor nulo, genera un error de tiempo de ejecución. La expresión serie se evalúa como la serie o un variable que contiene la serie. Si serie es un valor nulo, se devuelve el valor nulo.

Comentarios
Las dos listas de caracteres se corresponden. El primer carácter de nueva.lista sustituye a todas las instancias del primer carácter de la lista, el segundo sustituye al segundo, etc. Si las dos listas no contienen el mismo número de caracteres: v Los caracteres de lista que no tengan caracteres correspondientes en nueva.lista se suprimen del resultado. v Los caracteres excedentes de nueva.lista se ignoran.

Ejemplo
Este es un ejemplo de Convert utilizado como función:
MyString ="NOW IS THE TIME" ConvStr = Convert("TI", "XY", MyString) * todas T => X, I => Y * En este punto, ConvStr es: NOW YS XHE XYME ConvStr = Convert("XY", "Z", ConvStr) * todas X => Z, Y => "" * En este punto, ConvStr es: NOW S ZHE ZME

Sentencia Convert
Sustituye todas las instancias de los caracteres especificados en una serie por los caracteres de sustitución. No está disponible en las expresiones.

Sintaxis
Convert lista To nueva.lista In serie

lista es la lista de caracteres que se van a sustituir. Si lista es un valor nulo, genera un error de tiempo de ejecución. nueva.lista es la lista correspondiente de caracteres de sustitución. Si nueva.lista es un valor nulo, genera un error de tiempo de ejecución. La expresión serie se evalúa como la serie o un variable que contiene la serie. Si serie es un valor nulo, se devuelve el valor nulo.
Capítulo 7. Programación BASIC

185

Comentarios
Las dos listas de caracteres se corresponden. El primer carácter de nueva.lista sustituye a todas las instancias del primer carácter de la lista, el segundo sustituye al segundo, etc. Si las dos listas no contienen el mismo número de caracteres: v Los caracteres de lista que no tengan caracteres correspondientes en nueva.lista se suprimen del resultado. v Los caracteres excedentes de nueva.lista se ignoran.

Ejemplo
Este es un ejemplo de Convert utilizado como sentencia, que convierte la serie:
MyString ="NOW IS THE TIME" Convert "TI" To "XY" In MyString * todas T => X, I => Y * En este punto, MyString es: NOW YS XHE XYME Convert "XY" To "Z" In MyString * todas X => Z, Y => "" * En este punto, MyString es: NOW S ZHE ZME

Función Count
Cuanta el número de veces que una subserie aparece en una serie.

Sintaxis
Count (serie, subserie)

serie es la serie que desea buscar. Si serie es un valor nulo, se devuelve el valor nulo. subserie es la subserie que desea contar. Puede ser una serie de caracteres, una constante o una variable. Si la subserie no aparece en la serie, se devuelve 0. Si la subserie es una serie vacía, se devuelve el número de caracteres de la serie. Si la subserie es un valor nulo, se produce un error de tiempo de ejecución.

Comentarios
Cuando se cuenta una subserie completa, Count pasa al siguiente carácter y vuelve a empezar. Por ejemplo, la sentencia siguiente cuenta sólo dos instancias de la subserie tt y devuelve 2 a la variable c:
c = Count (’tttt’, ’tt’)

Ejemplo
* La siguiente línea devuelve el número de "A" * en la serie (3). MyCount = Count("ABCAGHDALL", "A") * La siguiente línea devuelve 2 ya que las subseries solapadas * no se cuentan. MyCount = Count ("TTTT", "TT")

Función CRC32
Devuelve un valor de comprobación de redundancia cíclica de 32 bits para una serie.

Sintaxis
CRC32 (serie)

186

Guía del desarrollador de Server Job

serie es la serie a la que desea añadir el valor de CRC. Si serie es un valor nulo, se devuelve el valor nulo.

Ejemplo
En este ejemplo, se utiliza la función CRC para devolver un número que es un código de redundancia cíclica para la serie especificada:
MyString = "This is any arbitrary string value" CheckValue = CRC32(MyString) ;* devuelve 36235

Función de fecha
Devuelve una fecha con su formato de sistema interno.

Sintaxis
Date ( )

Comentarios
IBM InfoSphere DataStage almacena las fechas como el número de días antes o después del día 0, utilizando el 31 de diciembre de 1967 como día 0. Por ejemplo: Esta fecha... Se almacena como... 10 de diciembre de 1967 -21 15 de noviembre de 1967 -46 31 de diciembre de 1967 0 15 de febrero de 1968 46 1 de enero de 1985 6575 Utilice la fecha interna siempre que necesite realizar conversiones de salida.

Ejemplo
Este ejemplo muestra cómo convertir la fecha actual en formato interno en una serie que represente el día siguiente:
Tomorrow = Oconv(Date() + 1, "D4/YMD") ;* "1997/5/24"

Función DCount
Cuenta los campos delimitados de una serie.

Sintaxis
DCount (serie, delimitador)

serie es la serie que en la que se realiza la búsqueda. Si la serie es una serie vacía, se devuelve 0. Si la serie es un valor nulo, se devuelve el valor nulo.
Capítulo 7. Programación BASIC

187

delimitador es uno o varios caracteres que delimitan los campos que se van a contar. Si el delimitador es una serie vacía, se devuelve el número de caracteres de la serie + 1. Si el delimitador es un valor nulo, se produce un error de tiempo de ejecución. Dos delimitadores consecutivos en la serie se cuentan como un campo.

Comentarios
DCount se diferencia de Count en que devuelve el número de valores separados por delimitadores en lugar del número de apariciones de una serie de caracteres.

Ejemplo
* La siguiente línea devuelve el número de subseries * delimitadas por "A" en la serie (4) MyCount = DCount("ABCAGHDALL", "A") * La siguiente línea devuelve 3 ya que las subseries solapadas * no se cuentan. MyCount = DCount ("TTTT", "TT")

Sentencia Deffun
Define una función escrita por el usuario.

Sintaxis
Deffun función [ ( [Mat] argumento [, [Mat] argumento ...] ) ] [Calling nombre.llamada]

función es el nombre de la función que se va a definir. argumento es un argumento que se pasa a la función. Puede proporcionar hasta 254 argumentos. Para pasar una matriz, especifique Mat antes del nombre de matriz. Calling nombre.llamada especifica el nombre que se utiliza para llamar a la función. Si no especifica ningún nombre, la función se invoca utilizando function.

Comentarios
Debe declarar una función escrita por el usuario antes de poder utilizarla en un programa. Puede definir una función escrita por el usuario una sola vez en un programa. La definición de la función dos veces genera un error muy grave.

Ejemplo
Este ejemplo muestra cómo definir una función de transformación denominada MyFunctionB, para que se pueda invocar desde otra función de transformación denominada MyFunctionA:
Function MyFunctionA(Arg1) * Cuando hace referencia a una función escrita por el usuario que se mantiene en el * repositorio de DataStage, debe declararla como una función con el * número correcto de argumentos y añadirle un prefijo "DSU.". Deffun MyFunctionB(A) Calling "DSU.MyFunctionB"

Sentencia Dimension
Define las dimensiones de una o varias matrices. No está disponible en las expresiones.

188

Guía del desarrollador de Server Job

Sintaxis
Dimension matriz (filas, columnas) [ , matriz (filas, columnas) ] ... Dimension vector (máx) [ , vector (máx) ] ...

matriz es una matriz bidimensional que se va a dimensionar. filas es el número máximo de filas en la matriz. columnas es el número máximo de columnas en la matriz. vector es una matriz unidimensional que se va a dimensionar. máx es el número máximo de elementos en la matriz.

Comentarios
Las matrices se pueden volver a dimensionar en el tiempo de ejecución. Puede cambiar una matriz de unidimensional a bidimensional y viceversa. El hecho de volver a dimensionar una matriz afecta a los valores de los elementos de matriz tal como se indica a continuación: v Los elementos comunes con la misma dirección fila/columna en ambas matrices se conservan. v Los nuevos elementos que no tenían ninguna dirección fila/columna en la matriz original se inicializan como no asignados. v Los elementos redundantes a los que ya no se puede hacer referencia en la nueva matriz se pierden, y el espacio de memoria se devuelve al sistema operativo. Si no hay suficiente memoria para la matriz, la sentencia Dimension falla y la siguiente función InMat devuelve 1. Para asignar valores a los elementos de la matriz, utilice la sentencia Mat y las sentencias de asignación.

Ejemplo
Este ejemplo muestra cómo puede dimensionarse una matriz dinámicamente en el tiempo de ejecución basándose en los valores de los argumentos entrantes:
Subroutine MyRoutine(InputArg, ErrorCode) ErrorCode = 0 * InputArg son 2 campos separados por comas, que se corresponden con las dimensiones Rows = Field(InputArg, ",", 1) Cols = Field(InputArg ",", 2) Dimension MyMatrix(Rows, Cols) If InMat = 1 Then * No se ha podido obtener el espacio para la matriz; sale con estado de error. Call DSLogWarn("Could not dimension matrix","MyRoutine") ErrorCode = -1 Else * Continúe. ... End

Función Div
Divide un número por otro.
Capítulo 7. Programación BASIC

189

Sintaxis
Div (dividendo, divisor)

dividendo es el número que se va a dividir. Si dividendo es un valor nulo, se devuelve el valor nulo. divisor es el número por el que se divide. divisor no puede ser 0. Si divisor es un valor nulo, se devuelve el valor nulo.

Comentarios
Utilice la función Mod para determinar el resto.

Ejemplos
Los siguientes ejemplos muestran el uso de la función Div:
Quotient = Div(100, 25) ;* el resultado es 4 Quotient = Div(100, 30)

;* el resultado es 3

Función DownCase
Convierte las letras mayúsculas de una serie a minúsculas. Si el soporte multilingüístico está habilitado, el resultado de esta función depende del valor de entorno local actual del convenio Ctype.

Sintaxis
DownCase (serie)

serie es la serie o expresión que desea cambiar a minúsculas. Si serie es un valor nulo, se devuelve el valor nulo.

Ejemplo
Este es un ejemplo de la función DownCase:
MixedCase = "ABC123abc" LowerCase = DownCase(MyString) ;* el resultado es "abc123abc"

Función DQuote
Delimita una serie mediante comillas dobles.

Sintaxis
DQuote (serie)

serie es la serie que se escribirá entre comillas. Si serie es un valor nulo, se devuelve el valor nulo.

Comentarios
Para especificar una serie entre comillas simples, utilice la función SQuote.

190

Guía del desarrollador de Server Job

ERRFATAL Registra un mensaje muy grave y termina anormalmente el trabajo de control (valor predeterminado). obtendrá la versión liberada más reciente del trabajo.n. ModalidadError es un valor que especifica cómo otras rutinas que utilizan el descriptor de contexto deben notificar errores.n o la versión más reciente del trabajo con el formato trabajo. No presuponga que este valor es un entero.Ejemplo Este es un ejemplo de la función DQuote que añade comillas dobles (") al principio y al final de una serie: ProductNo = 12345 QuotedStr = DQuote(ProductNo : "A") * el resultado es "12345A" DSAttachJob Se conecta a un trabajo a fin de ejecutarlo en una secuencia de control de trabajos. v DSJ. ModalidadError) DescriptorContextoTrabajo es el nombre de una variable para mantener el valor de retorno que utiliza posteriormente cualquier otra función o rutina al hacer referencia al trabajo. → DSJ.ERRWARNING Registra un mensaje de aviso pero continúa. Es una de las siguientes: v DSJ.ERRWARN) DSCheckRoutine Comprueba si está catalogada una rutina de BASIC.ERRNONE No registra ningún mensaje . Sólo puede haber un descriptor de contexto abierto para un trabajo determinado en cualquier momento dado. Capítulo 7. se registrará anomalía del propio DSAttachJob). Si se libera el propio trabajo de control. El parámetro NombreTrabajo puede especificar una versión exacta del trabajo en forma de trabajo%Reln. obtendrá la versión de desarrollo más reciente de trabajo. Programación BASIC 191 . en el VOC como elemento invocable o en el espacio de catálogo. NombreTrabajo es una serie que proporciona el nombre del trabajo al que se conectará. Ejemplo A continuación se muestra un ejemplo de conexión al Release 11 del trabajo Qsales: Qsales_handle = DSAttachJob ("Qsales%Rel1". Sintaxis DescriptorContextoTrabajo = DSAttachJob (NombreTrabajo. Se devuelve un descriptor de contexto que se utiliza para direccionar el trabajo. v DSJ. Comentarios Un trabajo no se puede conectar a sí mismo. Si el trabajo de control es una versión de desarrollo.el emisor de la llamada tiene toda la responsabilidad (sin embargo.

de lo contrario puede ser uno de los siguientes: v DSJE. los trabajos conectados se desconectarán automáticamente cuando finalice el trabajo de control. Mandato. DSDetachJob Devuelve un DescriptorContextoTrabajo adquirido por DSAttachJob si no es necesario ningún control adicional de un trabajo (permitiendo que otro trabajo se convierta en su controlador). @FM. CódigoRetornoSistema) TipoShell (entrada) especifica el tipo de mandato que desea ejecutar y es NT. Encontrado es un booleano. Sintaxis CódigoError = DSDetachJob (DescriptorContextoTrabajo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob.Sintaxis Encontrado = DSCheckRoutine(NombreRutina) NombreRutina es el nombre de la rutina de BASIC que se comprobará. de lo contrario. Sintaxis Call DSExecute (TipoShell. La salida se añade al archivo de registro de trabajo como un mensaje informativo. Cada línea de salida aparece separada por una marca de campo. Mandato (entrada) es el mandato que se ejecutará. CódigoRetornoSistema (salida) es el código que indica el resultado satisfactorio del mandato. Ejemplo El mandato siguiente desconecta el descriptor de contexto del trabajo qsales: Deterr = DSDetachJob (qsales_handle) DSExecute Ejecuta un mandato del motor.ME. Un valor de 0 significa que el mandato se ha ejecutado satisfactoriamente. Ejemplo rtn$ok = DSCheckRoutine("DSU. Salida (salida) es cualquier salida del mandato. Cualquier otro valor es un código de salida específico del mandato.DSSendMail") If(NOT(rtn$ok)) Then * aquí manejo de errores End. De lo contrario. Un valor de 1 (para un mandato de DOS o UNIX) indica que el mandato no se ha encontrado. CódigoError es 0 si DSStopJob es satisfactorio. Salida. Mandato no debe solicitar entrada cuando se ejecute. El único error posible es un intento de cerrar DSJ. @False if NombreRutina not findable. la llamada siempre es satisfactoria. 192 Guía del desarrollador de Server Job . else @True. UNIX o UV (para motor). No es necesario llamar a esta función. de DOS o de UNIX desde una subrutina anterior/posterior.BADHANDLE DescriptorContextoTrabajo no válido.

Programación BASIC 193 .CUSTINFODESC Serie: descripción del elemento de información de personalización especificado. la sobrecarga de ejecutar un mandato para cada fila procesada por una etapa degradará el rendimiento del trabajo. v DSJE. Sintaxis Resultado = DSGetJobInfo (DescriptorContextoTrabajo. v DSJE.CUSTINFOVALUE DSJ. DSGetJobInfo Proporciona un método de obtención de información sobre un trabajo. DSGetCustInfo Obtiene información notificada al final de la ejecución de determinadas etapas paralelas.BADHANDLE DescriptorContextoTrabajo no era válido. NombreEtapa.ME para hacer referencia a la etapa actual.CUSTINFOVALUE Serie: valor del elemento de información de personalización especificado. Sintaxis Resultado = DSGetCustInfo (DescriptorContextoTrabajo. v DSJE. v DSJE. Puede hacer referencia al trabajo actual o a un trabajo controlado. NombreEtapa es el nombre de la etapa que se interrogará. La información recopilada. También puede ser DSJ. NombreInfoPers es el nombre de la variable que se interrogará.BADTYPE TipoInfo no se ha reconocido.NOTINSTAGE NombreEtapa era DSJ. se especifica durante el tiempo de diseño. y disponible para su interrogación.ME y el emisor de la llamada no se está ejecutando dentro de una etapa. Resultado puede devolver también una condición de error de la forma siguiente: v DSJE.CUSTINFODESC Resultado depende del TipoInfo especificado. dependiendo del valor de DescriptorContextoTrabajo. TipoInfo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.ME para hacer referencia al trabajo actual. Capítulo 7. de la forma siguiente: v DSJ.ME para hacer referencia al trabajo actual. si es necesario.BADCUSTINFO NombreInfoPers no hace referencia a un elemento de información de personalización conocido. Por ejemplo.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo.Comentarios No utilice DSExecute desde una transformación. TipoInfo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ. NombreInfoPers. TipoInfo especifica la información necesaria y puede ser una de las opciones siguientes: DSJ. v DSJ. que se puede utilizar de forma general así como para control de trabajos. la información de la etapa Transformer se especifica en el separador Desencadenantes del recuadro de diálogo Propiedades de la etapa Transformer.

RUNFAILED El trabajo ha finalizado una ejecución normal con un error muy grave. 194 Guía del desarrollador de Server Job . de la forma siguiente: v DSJ.TipoInfo especifica la información necesaria y puede ser una de las opciones siguientes: DSJ.JOBINTERIMSTATUS DSJ. Estado actual de trabajo global.JOBCONTROL DSJ. un trabajo en curso se identifica mediante: DSJS.RESET El trabajo ha finalizado una ejecución de restablecimiento.JOBSTARTTIMESTAMP DSJ.JOBRTISERVICE DSJ.JOBWAVENO DSJ.STAGELIST DSJ.JOBDESC DSJ.JOBINVOCATIONID DSJ.JOBPID DSJ.JOBMULTIINVOKABLE DSJ.STAGELIST2 DSJ. Los estados posibles que se pueden devolver se dividen actualmente en dos categorías: En primer lugar.JOBSTATUS DSJ.JOBCONTROLLER DSJ.JOBSTATUS Entero.JOBEOTCOUNT DSJ.JOBINVOCATIONS DSJ.PARAMLIST DSJ. DSJS.JOBELAPSED DSJ.JPBLASTTIMESTAMP DSJ.JOBFULLDESC DSJ.JOBFULLSTAGELIST Resultado depende del TipoInfo especificado.JOBNAME DSJ.USERSTATUS DSJ.JOBEOTTIMESTAMP DSJ.

JOBSTARTTIMESTAMP Serie.JOBRTISERVICE entero. Devuelve una lista de ID de invocación separados por coma.PARAMLIST.JOBWAVENO Entero.JOBNAME Serie.JOBELAPSED Serie. En segundo lugar. Nombre del trabajo que controla el trabajo al que hace referencia el descriptor de contexto del trabajo.JOBINTERIMSTATUS. v DSJ.JOBMULTIINVOKABLE entero. La descripción del trabajo especificada en el recuadro de diálogo Propiedades del trabajo. v DSJ. v DSJ. Recuento de bloques EndOfTransmission procesados por este trabajo hasta ahora. v DSJ.STAGELIST2. v DSJ.es el único estado que indica que el trabajo está realmente en ejecución. Devuelve una lista de nombres de etapas pasivas separadas por coma. DSJS. DSJS. Capítulo 7. Nombre real del trabajo al que hace referencia el descriptor de contexto del trabajo. Se establece en true (verdadero) si este trabajo da soporte a varias invocaciones v DSJ.JOBDESC Serie.USERSTATUS Serie.VALWARN El trabajo ha finalizado una ejecución de validación con avisos. DSJ.JOBINVOCATIONID. es posible que los trabajos que no estén en ejecución tengan los estados siguientes: DSJS. DSJS. v DSJ. v v v v DSJ.DSJS. Fecha/Hora del último bloque EndOfTransmission procesado por este trabajo. Devuelve el ID de invocación del trabajo especificado (utilizado en la macro DSJobInvocationId en un diseño de trabajo para acceder al ID de invocación mediante el cual se invoca el trabajo). ID de proceso de trabajo. de lo contrario una serie vacía. v DSJ. v DSJ. El tiempo transcurrido del trabajo en segundos. v DSJ.RUNOK El trabajo ha finalizado una ejecución normal sin avisos. Tenga en cuenta que puede tratarse de varios nombres de trabajo separados por puntos si el trabajo está controlado por un trabajo que está a su vez controlado.VALOK .JOBEOTTIMESTAMP indicación_fecha_y_hora. pero antes de haber intentado ejecutar una subrutina posterior al trabajo.STAGELIST.RUNWARN El trabajo ha finalizado una ejecución normal con avisos. Número de ondas de ejecución última o actual.RUNNING Ejecución de trabajo . Se establece en true (verdadero) si se trata de un trabajo de servicio web. JOBPID Entero. Devuelve el estado de un trabajo después de que haya ejecutado todas las etapas y trabajos controlados. v DSJ. v DSJ. Devuelve una lista de nombres de parámetros separados por coma.FULLSTAGELIST. Programación BASIC 195 . Devuelve una lista de nombres de etapas activas separados por coma. Lo que ha registrado la última llamada del trabajo de DSSetUserStatus. Estado de control del trabajo actual. v DSJ.JOBCONTROLLER Serie.JOBEOTCOUNT entero.JOBLASTTIMESTAMP Serie. Fecha y hora cuando el trabajo finalizó por última vez una ejecución en el motor con el formato AAAA-MM-DD HH:NN:SS.JOBCONTROL Entero. (Está diseñado para ser utilizado por una subrutina posterior al trabajo para obtener el estado del trabajo actual). Devuelve una lista de todos los nombres de etapas separados por coma. DSJ. v DSJ.JOBFULLDESSC Serie.VALFAILED El trabajo no ha podido realizar una ejecución de validación. Fecha y hora cuando se inició el trabajo en el motor con el formato AAAA-MM-DD hh:nn:ss. v DSJ. v DSJ. si se ha emitido una solicitud de detención para el trabajo. La descripción completa especificada en el recuadro de diálogo Propiedades del trabajo. v DSJ. es decir.JOBINVOCATIONS. DSJS. v DSJ.STOPPED El trabajo ha sido detenido por la intervención del operador (no se puede determinar el tipo de ejecución). DSJ.El trabajo ha finalizado una ejecución de validación sin avisos. DSJS.

DSJ. se devolverá una serie delimitada por marcas de campo de propietarios de propiedades de metabag dentro del trabajo actual en Resultado. Ejemplos El mandato siguiente solicita el estado de trabajo del trabajo qsales: q_status = DSGetJobInfo(qsales_handle. DSJE.JOBSTATUS) El mandato siguiente solicita el nombre real del trabajo actual: whatname = DSGetJobInfo (DSJ. Si NombreTrabajo no existe en el proyecto actual. Si Propietario es una serie vacía. Resultado se establecerá en una serie vacía. Propietario) NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la información. DSJ. Si Propietario no es un propietario válido dentro del trabajo actual. se puede utilizar DSGetJobInfo antes o después de haber emitido un DSRunJob. NombreTrabajo. Comentarios Cuando se hace referencia a un trabajo controlado.> = NombreMetaPropiedad. de la forma siguiente: RESULTADO<1> = NombreMetaPropiedad01 @VM ValorMetaPropiedad01 RESULTADO<.BADTYPE TipoInfo no se ha reconocido.. Cualquier estado devuelto después de una llamada satisfactoria a DSRunJob es una garantía de que está relacionado con esa ejecución del trabajo. Propietario es un nombre de propietario cuyas propiedades de metabag se devolverán. RESULTADO<N>= NombreMetaPropiedadN @VM ValorMetaPropiedadN Ejemplo Lo siguiente devuelve las propiedades de metabag para el propietario propietariomb en el trabajo "trabajoprueba": linksmdata = DSGetJobMetaBag (trabajoprueba.JOBNAME) DSGetJobMetaBag Devuelve una matriz dinámica que contiene las propiedades de MetaBag asociadas con el trabajo nombrado.BADHANDLE DescriptorContextoTrabajo no era válido.. Sintaxis Resultado = DSGetJobMetaBag(NombreTrabajo. propietariomb) 196 Guía del desarrollador de Server Job . Resultado se establecerá en una serie vacía.. Propietario) o Call DSGetJobMetaBag(Resultado.Resultado también puede devolver condiciones de error de la forma siguiente: DSJE. @VM ValorMetaPropiedad.ME. Resultado devuelve una matriz dinámica de conjuntos de propiedades de metabag.

LINKDBMSCODE: el código de DBMS para el último error que se produce en este enlace.LINKROWCOUNT Entero: número de filas que han pasado un enlace hasta ahora.DSGetLinkInfo Proporciona un método de obtención de información sobre un enlace en una etapa activa. También puede ser DSJ.LINKDBMSCODE DSJ. v DSJ.INSTROWCOUNT: lista de recuentos de fila.ME para descubrir su propio nombre. Capítulo 7. También puede ser DSJ. uno por instancia (trabajos paralelos) v DSJ.LINKEOTROWCOUNT: recuento de filas desde el último bloque EndOfTransmission.LINKSQLSTATE: el estado de SQL para el último error que se produce en este enlace.INSTROWCOUNT DSJ. si es necesario.LINKDESC: descripción del enlace. v DSJ. de la forma siguiente: v DSJ. TipoInfo especifica la información necesaria y puede ser una de las opciones siguientes: DSJ. Programación BASIC 197 .ME y NombreEnlace = DSJ.LINKDESC DSJ. NombreEnlace es el nombre de un enlace (entrada o salida) conectado a la etapa. v DSJ. TipoInfo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ. en función del valor de DescriptorContextoTrabajo. v DSJ. separados por coma.ME para hacer referencia al enlace actual (por ejemplo. v DSJ.ME para hacer referencia a la etapa actual.LINKEOTROWCOUNT Resultado depende del TipoInfo especificado. que se puede utilizar de forma general así como para control de trabajos. resulta especialmente útil cuando se utiliza con DescriptorContextoTrabajo = DSJ. NombreEtapa.ME para hacer referencia al trabajo actual.LINKSQLSTATE DSJ. cuando se utiliza en una expresión de Transformer o función de transformación denominada desde código de enlace).ME y NombreEtapa = DSJ. v DSJ.LINKLASTERR Serie: último mensaje de error (si hay alguno) notificado desde el enlace en cuestión. NombreEtapa es el nombre de la etapa activa que se interrogará. Sintaxis Resultado = DSGetLinkInfo (DescriptorContextoTrabajo.LINKROWCOUNT DSJ.LINKLASTERR DSJ. v DSJ. NombreEnlace.LINKSTAGE DSJ.LINKNAME Serie: devuelve el nombre del enlace.LINKSTAGE: nombre de la etapa en el otro extremo del enlace. Esta rutina puede hacer referencia a un trabajo controlado o a un trabajo actual.LINKNAME DSJ.

v DSJE.LINKROWCOUNT) DSGetLinkMetaData Devuelve una matriz dinámica que contiene los metadatos de columna del enlace especificado.. Resultado devuelve una matriz dinámica de nueve campos.. se puede utilizar DSGetLinkInfo antes o después de haber emitido un DSRunJob. v DSJE. es 0 Resultado<3. NombreEtapa.1.1. NombreTrabajo.. NombreEtapa. "cargador"...H. Ejemplo El mandato siguiente solicita el número de filas que se han pasado al enlace order_feed en la etapa de cargador del trabajo qsales: link_status = DSGetLinkInfo(qsales_handle...N> es la escala de columna Resultado<6. la función devolverá una serie vacía.1. Consulte ODBC. NombreEnlace es el nombre del enlace en el trabajo especificado para el cual es necesaria la información.. NombreEnlace) NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la información.BADLINK NombreEnlace no hace referencia a un enlace conocido para la etapa en cuestión.Resultado también puede devolver condiciones de error de la forma siguiente: v DSJE. Sintaxis Resultado = DSGetLinkMetaData(Nombretrabajo. DSJ.1. donde cada uno de ellos contendrá N valores donde N es el número de columnas en el enlace.. de lo contrario. NombreEtapa es el nombre de la etapa en el trabajo especificado que contiene el enlace para el cual es necesaria la información.1.NOTINSTAGE NombreEtapa era DSJ. la función devolverá una serie vacía. v DSJE.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo. v DSJE. Cualquier estado devuelto después de una llamada satisfactoria a DSRunJob es una garantía de que está relacionado con esa ejecución del trabajo.ME y el emisor de la llamada no se está ejecutando dentro de una etapa.BADHANDLE DescriptorContextoTrabajo no era válido.1. Si NombreEnlace no existe en el trabajo especificado.N> es la precisión de columna Resultado<5.BADTYPE TipoInfo no se ha reconocido.N> es 1 para columnas de clave primaria. Si NombreEtapa no existe en el trabajo especificado... Comentarios Cuando se hace referencia a un trabajo controlado..N> es el nombre de columna Resultado<2. → "order_feed". Resultado<4. la función devolverá una serie vacía. NombreEnlace) o Call DSGetLinkMetaData(Resultado.N> es el tipo de SQL de columna.N> es la anchura de visualización de columna 198 Guía del desarrollador de Server Job . Resultado<1. Si NombreTrabajo no existe en el proyecto actual.

etapasec.N> es la descripción de columna Resultado<9. enlacei1) DSGetLogEntry Lee todos los detalles del suceso proporcionados en IDsuceso.Resultado<7.1. Sintaxis DetalleSuceso = DSGetLogEntry (DescriptorContextoTrabajo.latestlogid) DSGetLogEventIds Devuelve una lista de ID de suceso de registro para una ejecución determinada de una invocación de trabajo....LOGANY) LatestEventString = → DSGetLogEntry(qsales_handle.DSJ.. IDsuceso es un entero que identifica el suceso de registro específico para el que son necesarios los detalles. v DSJE.n Mensaje de suceso Si se produce un error..1.consulte DSGetNewestLogId Subserie4 . IDsuceso) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. Programación BASIC 199 .BADHANDLE DescriptorContextoTrabajo no válido. es 0 Resultado<8. Ejemplo Los mandatos siguientes en primer lugar obtienen el IDsuceso para el suceso de registro necesario y a continuación leen todos los detalles del suceso del suceso de registro identificado por LatestLogid en la serie LatestEventString: latestlogid = → DSGetNewestLogId(qsales_handle.BADVALUE Error al acceder a IDsuceso.N> es la derivación de columna Ejemplo Lo siguiente devuelve los metadatos del enlace enlacei1 en la etapa etapasec del trabajo trabajoprueba: linksmdata = DSGetLinkMetaData (trabajoprueba. DetalleSuceso es una serie que contiene subseries separadas por \. el error se notifica mediante uno de los siguientes códigos de resultado de entero negativo: v DSJE.N> es 1 para columnas con posibilidad de nulos.1. Capítulo 7. Las subseries tienen la forma siguiente: Subserie1 Indicación de fecha y hora en formato AAAA-MM-DD HH:NN:SS Subserie2 Información de usuario Subserie3 Tipo de suceso . de lo contrario.. Se obtiene utilizando la función DSGetNewestLogId.

por lo tanto. Los detalles que se devuelven se determinan mediante el establecimiento de algunos filtros.BADTYPE FiltroTipoSuceso no válido. ListaID también se puede devolver como un entero negativo. (Se debe tener cuidado al establecer los filtros. proporcione valores negativos. puede recuperar detalles proporcionando el número de ejecución como un valor positivo.Sintaxis ListaID = DSGetLogEventIds (DescriptorContextoTrabajo. de lo contrario. En caso de un error.BADVALUE NúmeroEjecución no válido. FiltroTipoSuceso restringe los tipos de entrada de registro de suceso para los que se devuelven los ID. se puede devolver una gran cantidad de información. Incluya caracteres en la serie del filtro para restringir las entradas de la forma siguiente: I W F S B R J Informativo Aviso Muy grave Sucesos de inicio o finalización Sucesos de proceso por lotes o control Sucesos de depuración o restablecimiento Sucesos de rechazo ListaID se devuelve como una lista de enteros positivos que identifican los sucesos de registro necesarios. De forma predeterminada se devuelven los ID para todas las entradas de registro. El número de ejecución para una invocación de trabajo se restablece cuando se compila el trabajo.) 200 Guía del desarrollador de Server Job . DSGetLogSummary Devuelve una lista de detalles cortos de suceso de registro. Para recuperar detalles para ejecuciones anteriores. como por ejemplo -1 para obtener detalles sobre la ejecución anterior a la más reciente. Normalmente un valor de cero solicita los ID para la ejecución más reciente de la invocación de trabajo. en cuyo caso contiene uno de estos códigos de error: DSJE. FiltroTipoSuceso) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob.BADHANDLE DescriptorContextoTrabajo no válido. DSJE. NúmeroEjecución. DSJE. NúmeroEjecución identifica la ejecución de invocación de trabajo para la que se devuelven los ID de suceso. -2 para obtener detalles sobre la ejecución anterior a esa. Comentarios Para utilizar este método. es necesario que el programa haya adquirido anteriormente un descriptor de contexto de trabajo llamando a DSAttachJob. y así sucesivamente. no es posible utilizar este método para recuperar ID de suceso de trabajo para ejecuciones que se han producido antes de la compilación más reciente del trabajo. En los casos dónde conozca los números explícitos de ejecución.

HoraFinalización.LOGREJECT El enlace de rechazo estaba activo DSJ.LOGINFO Mensaje de información DSJ.LOGANY Cualquier categoría (el valor predeterminado) HoraInicio es una serie con el formato AAAA-MM-DD HH:NN:SS o AAAA-MM-DD. Ejemplo El mandato siguiente produce una matriz de sucesos activos de enlace de rechazo registrados para el trabajo qsales entre el 18 de agosto de 1998 y el 18 de septiembre de 1998.n Mensaje de suceso Si se produce un error. "1998-09-18 → 00:00:00". hasta un máximo de MAXREJ entradas: RejEntries = DSGetLogSummary (qsales_handle.BADVALUE NúmeroMáx no válido.LOGREJECT. HoraFinalización es una serie con el formato AAAA-MM-DD HH:NN:SS o AAAA-MM-DD. Cada campo consta de un conjunto de subseries separadas por \.LOGSTARTED Se ha iniciado el trabajo DSJ. donde cada campo representa un suceso separado. HoraInicio.LOGFATAL Error muy grave DSJ. MatrizResumen es una matriz dinámica de campos separados por @FM. NúmeroMáx) DescriptorContextotrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. → DSJ. 0 significa ninguna restricción. v DSJE. "1998-08-18 00:00:00". TipoSuceso es el tipo de suceso registrado y es uno de los siguientes: v v v v v v v DSJ. v DSJE. con las subseries con el formato siguiente: Subserie1 IDsuceso como por DSGetLogEntry Subserie2 Indicación de fecha y hora con el formato AAAA-MM-DD HH:NN:SS Subserie3 TipoSuceso .LOGRESET Se ha restablecido el registro DSJ. Capítulo 7.BADTIME HoraInicio u HoraFinalización no válido. Utilice este valor con precaución. MAXREJ) DSGetNewestLogId Obtiene el ID del suceso de registro más reciente en una categoría determinada o en cualquier categoría.BADTYPE TipoSuceso no válido. NúmeroMáx es un entero que restringe el número de sucesos a devolver.Sintaxis MatrizResumen = DSGetLogSummary (DescriptorContextoTrabajo. v DSJE.LOGWARNING Mensaje de aviso DSJ.consulte DSGetNewestLogId Subserie4 . TipoSuceso. el error se notifica mediante uno de los siguientes códigos de resultado de entero negativo: v DSJE. Programación BASIC 201 .BADHANDLE DescriptorContextoTrabajo no válido.

LOGFATAL Error muy grave DSJ. NombreParám. en función del valor de DescriptorContextoTrabajo.PARAMDEFAULT DSJ.LOGREJECT El enlace de rechazo estaba activo DSJ. Esta rutina puede hacer referencia a un trabajo controlado o al trabajo actual.PARAMHELPTEXT DSJ. v DSJE.PARAMTYPE DSJ. TipoSuceso) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob.LOGWARNING) DSGetParamInfo Proporciona un método de obtener información sobre un parámetro.PARAMVALUE 202 Guía del desarrollador de Server Job .ME para hacer referencia al trabajo actual.LOGWARNING Mensaje de aviso DSJ.PARAMPROMPT DSJ. que se puede utilizar de forma general así como para control de trabajo. Ejemplo El mandato siguiente obtiene un ID para el mensaje de aviso más reciente en el registro para el trabajo qsales: IDAviso = DSGetNewestLogId (qsales_handle.LOGANY Cualquier categoría (el valor predeterminado) IDsuceso es un entero positivo que identifica el suceso de registro específico. IDsuceso también se puede devolver como un entero negativo.BADHANDLE DescriptorContextoTrabajo no válido.BADTYPE TipoSuceso no válido. → DSJ. TipoInfo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.LOGSTARTED Se ha iniciado el trabajo DSJ.LOGINFO Mensaje de información DSJ. Sintaxis Resultado = DSGetParamInfo (DescriptorContextoTrabajo. NombreParám es el nombre del parámetro que se interrogará.Sintaxis IDsuceso = DSGetNewestLogId (DescriptorContextoTrabajo. en cuyo caso contiene un código de error como el siguiente: v DSJE. TipoInfo especifica la información necesaria y puede ser uno de los valores siguientes: DSJ. TipoSuceso es el tipo de suceso registrado y es uno de los siguientes: v v v v v v v DSJ.LOGRESET Se ha restablecido el registro DSJ. En caso de un error.

PARAMDES.BADHANDLE DescriptorContextoTrabajo no era válido.AT. v DSJ. v DSJE. Es uno de los siguientes: DSJ.DEFAULT DSJ.PARAMTYPE.DEFAULT.puede ser diferente de DSJ.BADPARAM NombreParám no es un nombre de parámetro en el trabajo. Consulte también DSJ. v DSJ.PARAMVALUE Serie: valor actual del parámetro para el trabajo en ejecución o la última ejecución de trabajo si el trabajo ha finalizado. v DSJ.puede ser distinto de DSJ.PARAMDEFAULT Serie que se utilizará directamente).DSJ.PARAMDES. v DSJ. de la forma siguiente: v DSJ.PARAMHELPTEXT Serie: texto de ayuda (si existe) para el parámetro en cuestión. v DSJ.DEFAULT Serie: valor predeterminado original del parámetro .PARAMTYPE.DATE (debe ser una serie con el formato AAAA-MM-DD) DSJ.RUN Resultado depende del TipoInfo especificado.PARAMDES.PARAMPROMPT.AT.PARAMLISTVALUES Serie: lista separada por tabuladores de valores permitidos para el parámetro. v DSJ.FLOAT (el parámetro puede contener puntos y E) DSJ.PARAMTYPE. Resultado también puede devolver condiciones de error de la forma siguiente: v DSJE.LISTVALUES. Cualquier estado devuelto después de una llamada satisfactoria a DSRunJob es una garantía de que está relacionado con esa ejecución del trabajo.PARAMDES. v DSJE.INTEGER DSJ. cualquier otro valor significa que no se solicitará (DSJ. Comentarios Cuando se hace referencia a un trabajo controlado.LISTVALUES DSJ.PARAMTYPE.PARAMLISTVALUES si este último ha sido cambiado por el administrador desde que se instaló el trabajo.PARAMTYPE Entero: describe el tipo de prueba de validación que se debe realizar en cualquier valor que se establezca para este parámetro. DSGetParamInfo se puede utilizar antes o después de haber emitido un DSRunJob.LISTVALUES Serie: lista original separada por tabuladores de valores permitidos para el parámetro .PARAMTYPE.PARAMTYPE.TIME (debe ser una serie con el formato HH:MM) v DSJ.PARAMTYPE.PATHNAME DSJ.BADTYPE TipoInfo no se ha reconocido. Programación BASIC 203 . Ejemplo El mandato siguiente solicita el valor predeterminado del parámetro de trimestre para el trabajo qsales: Capítulo 7.ENCRYPTED DSJ.PARAMPROMPT Serie: solicitud (si existe) para el parámetro en cuestión.PARAMDEFAULT si este último ha sido cambiado por un administrador desde que se instaló el trabajo. v DSJ.LIST (debe ser un conjunto de series separadas por tabulador) DSJ.PARAMTYPE.PARAMDES.PARAMDEFAULT Serie: valor predeterminado actual para el parámetro en cuestión.PROMPT.RUN Serie: 1 significa que se solicitará el parámetro cuando se ejecute el trabajo.PARAMLISTVALUES DSJ.STRING DSJ.PARAMDES. Consulte también DSJ.

ME para hacer referencia al trabajo actual. Sintaxis Resultado = DSGetStageInfo (DescriptorContextoTrabajo. de la forma siguiente: v DSJ. → DSJ. si es necesario. v DSJ.HOSTNAME Resultado depende del TipoInfo especificado.PARAMDEFAULT) DSGetProjectInfo Proporciona un método de obtención de información sobre el proyecto actual. o un trabajo controlado.STAGELASTERR DSJ. NombreEtapa es el nombre de la etapa que se interrogará. TipoInfo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ. en función del valor de DescriptorContextoTrabajo.LINKLIST DSJ. También puede ser DSJ. v DSJ. Sintaxis Resultado = DSGetProjectInfo (TipoInfo) TipoInfo especifica la información necesaria y puede ser una de las opciones siguientes: DSJ.ME para hacer referencia a la etapa actual. Resultado puede devolver también una condición de error de la forma siguiente: v DSJE. TipoInfo especifica la información necesaria y puede ser uno de los valores siguientes: DSJ. NombreEtapa.STAGEINROWNUM 204 Guía del desarrollador de Server Job .PROJECTNAME DSJ.nombre del proyecto actual.HOSTNAME Serie .JOBLIST Serie . que se puede utilizar de forma general así como para control de trabajos.JOBLIST DSJ.STAGETYPE DSJ.lista de nombres separados por coma de todos los trabajos conocidos por el proyecto (tanto si los trabajos están conectados actualmente como si no).PROJECTNAME Serie .BADTYPE TipoInfo no se ha reconocido. Puede hacer referencia al trabajo actual.Qs_quarter = DSGetparamInfo(qsales_handle. "trimestre".nombre del host del motor que mantiene el proyecto actual.STAGENAME DSJ. DSGetStageInfo Proporciona un método de obtener información sobre una etapa.

LINKTYPES .tiempo transcurrido en segundos.STAGEEOTSTART Resultado depende del TipoInfo especificado. DSJ.ME y NobreEtapa = DSJ. v DSJ.STAGESTARTTIMESTAMP DSJ. v DSJ.STAGEINST .VARLIST .STAGEELAPSED . DSJ.STAGEENDTIMESTAMP .STAGENAME Serie .STAGEPID . Programación BASIC 205 .ME para descubrir su propio nombre.DSJ.el nombre de tipo de etapa (por ejemplo. de la forma siguiente: v DSJ.VARLIST DSJ.último mensaje de error (si hay alguno) notificado desde cualquier enlace de la etapa en cuestión.el número de fila de entrada del enlace primario. DSJ.STAGEENDTIMESTAMP DSJ. v DSJ.STAGESTARTTIMESTAMP .fecha/hora en la que esa etapa ha empezado su ejecución con el formato AAAA-MM-DD HH:NN:SS. v DSJ.Fecha/hora del último bloque EndOfTransmission recibido por esta etapa.lista separada por comas de ID de proceso.STAGEDESC DSJ.porcentaje en entero de CPU utilizada.Recuento de bloques EndOfTransmission procesados por esta etapa hasta ahora.STAGETYPE Serie .STAGEEOTCOUNT .lista separada por comas de nombres de enlace en la etapa. v DSJ. "BeforeJob"). DSJ.CUSTINFOLIST DSJ. v DSJ. v DSJ.STAGEEOTCOUNT DSJ.LINKTYPES DSJ. DSJ.STAGESTATUS .STAGESTATUS DSJ.lista separada por comas de ID de instancia (trabajos paralelos).fecha/hora en la que esa etapa ha finalizado su ejecución con el formato AAA-MM-DD HH:NN:SS.STAGEINST DSJ. DSJ.estado de etapa.STAGEPID DSJ. v DSJ.descripción de etapa.resulta especialmente útil cuando se utiliza con DescriptorContextoSerie = DSJ.STAGECPU DSJ.LINKLIST .lista separada por comas de nombres de variables de etapa.STAGECPU . v DSJ.lista separada por comas de tipos de enlace.STAGEDESC .STAGELASTERR Serie . v v v v v v Capítulo 7.STAGEEOTTIMESTAMP . "Transformer". v DSJ.STAGEELAPSED DSJ.STAGEEOTTIMESTAMP DSJ.STAGEINROWNUM Entero .

Ejemplo Lo siguiente devuelve una lista de todos los enlaces de entrada en la etapa denominada "unión1" en el trabajo "trabajoprueba": linkslist = DSGetStageLinks (trabajoprueba. Clave dependiendo del valor de la clave.NOTINSTAGE NombreEtapa era DSJ. la función devolverá una serie vacía. unión1. v DSJE. 1) 206 Guía del desarrollador de Server Job .BADHANDLE DescriptorContextoTrabajo no era válido.información personalizada generada por etapas (trabajos paralelos). Ejemplo El mandato siguiente solicita el último mensaje de error para la etapa de cargador del trabajo qsales: stage_status = DSGetStageInfo(qsales_handle.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo. la función devolverá una serie vacía.v DSJ. NombreEtapa. → DSJ. se puede utilizar DSGetStageInfo antes o después de emitir un DSRunJob. sólo los enlaces de entrada de la etapa (Clave=1) o sólo los enlaces de salida de la etapa (Clave=2). Clave) o Call DSGetStageLinks(Resultado.BADTYPE TipoInfo no se ha reconocido.CUSTINFOLIST .STAGELASTERR) DSGetStageLinks Devuelve una lista delimitada por marcas de campo que contiene los nombres de todos los enlaces de entrada/salida de la etapa especificada.ME y el emisor de la llamada no se está ejecutando dentro de una etapa. NombreEtapa es el nombre de la etapa en el trabajo especificado para la que es necesaria información. Si NombreEtapa no existe en el trabajo especificado. Clave) NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la información. Comentarios Cuando se hace referencia a un trabajo controlado. Resultado también puede devolver condiciones de error de la forma siguiente: v DSJE. la lista devuelta contendrá todos los enlaces de la etapa (Clave=0). v DSJE.STAGEEOTSTART . "cargador". NombreTrabajo. Sintaxis Resultado = DSGetStageLinks(Nombretrabajo. NombreEtapa.recuento de filas al inicio del bloque EndOfTransmission actual. v DSJE. Si NombreTrabajo no existe en el proyecto actual. Resultado devuelve una lista delimitada por marcas de campo que contiene los nombres de los enlaces. v DSJ. Cualquier estado devuelto después de una llamada satisfactoria a DSRunJob es una garantía de que está relacionado con esa ejecución del trabajo.

DSGetStagesOfType Devuelve una lista delimitada por marcas de campo que contiene los nombres de todas las etapas del tipo especificado en el trabajo nombrado.ME para hacer referencia al trabajo actual. Resultado se establecerá en una serie vacía. Ejemplo Lo siguiente devuelve una lista de todas las etapas Aggregator en el trabajo paralelo "trabajoprueba": stagelist = DSGetStagesOfType (trabajoprueba. TipoEtapa) o Call DSGetStagesOfType (Resultado. la función devolverá una serie vacía. la función devolverá una serie vacía. Resultado es una serie delimitada por marcas de campo de tipos de etapas dentro de NombreTrabajo. Nombretrabajo) NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la información. NombreTrabajo. Si el TipoEtapa no existe en el proyecto actual o no hay etapas de ese tipo en el trabajo especificado. TipoEtapa) NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la información. NombreVar. Ejemplo Lo siguiente devuelve una lista de todos los tipos de etapa en el trabajo "trabajoprueba": stagetypelist = DSGetStagesOfType (trabajoprueba) DSGetVarInfo Proporciona un método de obtención de información sobre variables utilizado en las etapas Transformer. Sintaxis Resultado = DSGetStageTypes(Nombretrabajo) o Call DSGetStageTypes(Resultado. Programación BASIC 207 . como muestra el formulario de propiedades de tipo de etapa de repositorio. PxAggregator) DSGetStagesTypes Devuelve una serie delimitada por marcas de campo de todos los tipos de etapas activas y pasivas que existen dentro de un trabajo nombrado. como por ejemplo CTransformerStage o ORAOCI8. Resultado devuelve una lista delimitada por marcas de campo que contiene los nombres de todas las etapas del tipo especificado en un trabajo nombrado. Sintaxis Resultado = DSGetVarInfo (DescriptorContextotrabajo. Capítulo 7. Si NombreTrabajo no existe en el proyecto actual. TipoInfo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ. TipoEtapa es el nombre del tipo de etapa. NombreEtapa. Si NombreTrabajo no existe en el proyecto actual. Sintaxis Resultado = DSGetStagesOfType (NombreTrabajo.

v DSJE. TipoInfo especifica la información necesaria y puede ser una de las opciones siguientes: DSJ.VARVALUE DSJ. v DSJE. NombreEtapa) NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la información.ME para hacer referencia a la etapa actual. Resultado es una matriz que contiene los campos siguientes: v el tamaño (en kilobytes) del almacenamiento intermedio de envío y recepción de la etapa IPC (o servicio web) NombreEtapa dentro de NombreTrabajo. v DSJE.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo. v DSJ.BADHANDLE DescriptorContextoTrabajo no era válido. Resultado puede devolver también una condición de error de la forma siguiente: v DSJE.BADTYPE TipoInfo no se ha reconocido.VARDESCRIPTION Resultado depende del TipoInfo especificado. NombreEtapa es el nombre de una etapa IPC en el trabajo especificado para la que es necesaria información.BADVAR NombreVar no se ha reconocido.NombreEtapa es el nombre de la etapa que se interrogará. DSIPCPageProps Devuelve el tamaño (en KB) del almacenamiento intermedio de envío y recepción de una etapa IPC (o servicio web). Resultado se establecerá en una serie vacía. Si NombreEtapa no existe o si no es una etapa IPC dentro de NombreTrabajo. Nombretrabajo. IPC1) 208 Guía del desarrollador de Server Job . el Resultado se establecerá en una serie vacía. v DSJE.VARVALUE Serie: el valor de la variable especificada. NombreEtapa) o Call DSGetIPCStageProps (Resultado. Sintaxis Resultado = DSGetIPCStageProps (NombreTrabajo. Ejemplo Lo siguiente devuelve el tamaño y tiempo de espera excedido de la etapa "IPC1" en el trabajo "trabajoprueba": buffersize = DSGetIPCStageProps (trabajoprueba. v el valor de tiempo de espera excedido en segundos de la etapa IPC (o servicio web) NombreEtapa dentro de NombreTrabajo. También puede ser DSJ. NombreVar es el nombre de la variable que se interrogará.NOTINSTAGE NombreEtapa era DSJ. si es necesario.ME y el emisor de la llamada no se está ejecutando dentro de una etapa. de la forma siguiente: v DSJ.VARDESCRIPTION Serie: descripción de la variable especificada. Si NombreTrabajo no existe en el proyecto actual.

Ejemplo El mandato siguiente. DSJ. cuando se incluye en el trabajo msales. Sintaxis Call DSLogFatal (Mensaje. Capítulo 7. NombreProgLlamada (entrada) es el nombre de la subrutina anterior/posterior que llama a la subrutina DSLogFatal. contiene uno de los errores siguientes: v DSJE. De lo contrario. NombreProgLlamada) Mensaje (entrada) es el mensaje de aviso que desea registrar. TipoSuceso.BADHANDLE DescriptorContextoTrabajo no válido. Mensaje recibe automáticamente como prefijo el nombre de la etapa actual y la subrutina anterior/posterior de llamada. DSLogFatal nunca vuelve a la subrutina anterior/posterior de llamada. lo que permite que InfoSphere DataStage detenga el trabajo limpiamente.LOGINFO. Se utiliza DSTransformError en su lugar.LOGWARNING Mensaje de aviso MsjSuceso es una serie que contiene el mensaje del suceso. v DSJE. DSLogFatal no se debe utilizar en una transformación.LOGINFO Mensaje de información v DSJ. tenga en cuenta que no puede colocar un mensaje muy grave en el registro de otro trabajo).DSLogEvent Registra un mensaje de suceso en un trabajo distinto del actual. Programación BASIC 209 . MsjSuceso) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. (Utilice DSLogInfo.) Sintaxis CódigoError = DSLogEvent (DescriptorContextoTrabajo. añade el mensaje "ventas mensuales finalizadas" al registro para el trabajo qsales: Logerror = DsLogEvent (qsales_handle. se debe restablecer utilizando el cliente del Director antes de poder volver a ejecutarlo. TipoSuceso es el tipo de suceso registrado y es uno de los siguientes: v DSJ. En una subrutina anterior/posterior. CódigoError es 0 si no hay ningún error. de forma que se debe utilizar con precaución. Si un trabajo se detiene con un error muy grave. es mejor registrar un mensaje de aviso (utilizando DSLogWarn) y salida con un código de retorno distinto de cero. → "ventas mensuales finalizadas") DSLogFatal Registra un mensaje de error muy grave en el archivo de registro de un trabajo y termina el trabajo. DSLogFatal o DSLogWarn para registrar un suceso en el trabajo actual. Comentarios DSLogFatal graba un mensaje de error muy grave en el archivo de registro del trabajo y termina anormalmente el trabajo.BADTYPE TipoSuceso (especialmente.

Sintaxis Call DSLogWarn (Mensaje. es posible que el trabajo se ejecute lentamente y que el cliente del Director tarde algún tiempo en mostrar el archivo de registro del trabajo. Comentarios DSLogInfo graba el texto del mensaje en el archivo de registro del trabajo como un mensaje de información y vuelve a la rutina de llamada o transformación. se realiza una salida silenciosa. Si no hay ninguno. Sintaxis Call DSLogInfo (Mensaje. El suceso de registro es de tipo Información. la llamada simplemente se ignora. Si se llama a DSLogInfo durante la fase de prueba para una rutina recientemente creada en el repositorio. NombreProgLlamada) Mensaje (entrada) es el mensaje de información que desea registrar. los dos argumentos se visualizan en la ventana de resultados. Comentarios Si el trabajo actual no está bajo control. si hay alguno. Mensaje recibe automáticamente como prefijo el nombre de la etapa actual y del programa de llamada. Ejemplo Call DSLogToController("Se registra en el padre") DSLogWarn Inicia un mensaje de aviso en el archivo de registro de un trabajo. NombreProgLlamada) 210 Guía del desarrollador de Server Job . "MiRutina") DSLogInfo Registra un mensaje de información en el archivo de registro de un trabajo. Sin embargo. Sintaxis Call DSLogToController(SerieMsj) SerieMsj es el texto que se registrará. Ejemplo Call DSLogInfo("Transformando: ":Arg1.Ejemplo Call DSLogFatal("No se puede abrir el archivo". NombreProgLlamada (entrada) es el nombre de la transformación o subrutina anterior/posterior que llama a la subrutina DSLogInfo. si se producen muchos mensajes. "MiTransformación") DSLogToController Esta rutina se puede utilizar para poner un mensaje informativo en el archivo de registro del trabajo que controla este trabajo. Se puede grabar un número ilimitado de mensajes de información en el archivo de registro del trabajo.

Sintaxis TextoInforme = DSMakeJobReport(DescriptorContextoTrabajo. Programación BASIC 211 . Mensaje recibe automáticamente como prefijo el nombre de la etapa actual y la subrutina anterior/posterior de llamada. especifique un NivelInforme de 2 y añada el nombre del URL de hoja de estilo necesario. es decir. tiempo transcurrido y estado de trabajo. la llamada no devuelve el valor de retorno y el trabajo termina anormalmente. el XML generado no contendrá una instrucción de proceso <?xml-stylesheet?>. NivelInforme especifica el tipo de informe y es uno de los siguientes: v 0 . v 2 . Los valores especiales reconocidos son: v "CRLF" => CHAR(13):CHAR(10) v "LF" => CHAR(10) v "CR" => CHAR(13) El valor predeterminado es CRLF si se trata de Windows. NombreProgLlamada (entrada) es el nombre de la subrutina anterior/posterior que llama a la subrutina DSLogWarn. Se utiliza DSTransformError en su lugar. De manera predeterminada.detalle de etapa/enlace. Esto inserta una instrucción de proceso en el XML generado con el formato: <?xml-stylesheet type=text/xsl" href="URLHojaEstilo"?> SeparadorLíneas es la serie utilizada para separar líneas del informe.Mensaje (entrada) es el mensaje de aviso que desea registrar. Comentarios DSLogWarn graba el mensaje en el archivo de registro del trabajo como aviso y devuelve la subrutina anterior/posterior de llamada. pero también contiene información sobre etapas individuales y enlaces dentro del trabajo. NivelInforme. received ":InputArg.serie de texto que contiene el informe XML completo. de lo contrario LF. SeparadorLíneas) DescriptorContextoTrabajo es la serie tal como se ha devuelto de DSAttachJob.informe básico.URLHojaEstilo."MiRutina") End Else * Continuar procesando a menos que el trabajo termine anormalmente End DSMakeJobReport Genera un informe que describe el estado completo de un trabajo conectado válido. Capítulo 7. 2. Si es necesaria una hoja de estilo. v 1 . cuando el número de avisos alcanza ese límite. DSLogWarn no se debe utilizar en una transformación. Ejemplo If InputArg > 100 Then Call DSLogWarn("La entrada debe ser =< 100. Serie de texto que contiene fecha de inicio/finalización. Como el informe básico. Si el trabajo tiene un límite de aviso definido para el mismo.

Nota: si una señal de argumento va seguida de "[E]". Comentarios Se llama a esta rutina desde el código de control de trabajo creado por JobSequence Generator. Si la serie de plantilla empieza con un número seguido de "\". buscará un ID de plantilla en el archivo de mensajes de InfoSphere DataStage y utilizará cualquier plantilla de mensaje devuelta en lugar de la proporcionada a la rutina. →jb$:@FM:DSGetLastErrorMsg()) DSPrepareJob Se utiliza para asegurar que un trabajo compilado está en el estado correcto para ser ejecutado o validado. (Consulte la función DSTranslateCode. busca subseries como por ejemplo "#xyz#" y las sustituye por el valor del parámetro de trabajo denominado "xyz". Opcionalmente. Ejemplo t$ = DSMakeMsg("Error al llamar a DSAttachJob(%1)<L>%2". un campo por argumento que se sustituirá. o se encuentra cualquier otro error. del trabajo que se preparará. si se llama desde dentro de un trabajo. Sintaxis DescriptorContextoTrabajo = DSPrepareJob(DescriptorContextoTrabajo) DescriptorContextoTrabajo es el descriptor de contexto. Es decir. se asume que el valor de ese argumento es un código de error de control de trabajo y se insertará una explicación del mismo en lugar de "[E]".Comentarios Si se proporciona un descriptor de contexto de trabajo incorrecto. tal como lo devuelve DSAttachJob().ERRNONE) rpt$ = DSMakeJobReport(h$. Ejemplo h$ = DSAttachJob("MiTrabajo". la información se añade a TextoInforme.) ListaArg es la matriz dinámica. También realizará sustitución de parámetros de trabajo local en el texto del mensaje."CRLF") DSMakeMsg Inserta argumentos en una plantilla de mensaje.0. DSJ. Sintaxis TextoCompleto = DSMakeMsg(Plantilla. ListaArg) TextoCompleto es el mensaje con parámetros sustituidos Plantilla es la plantilla de mensaje. se asume que forma parte de un ID de mensaje que se buscará en el archivo de mensajes de InfoSphere DataStage. etc. %2. se sustituirán por valores en la posición equivalente en ListaArg. en la que %1. 212 Guía del desarrollador de Server Job .

Tenga en cuenta que también necesitará utilizar DSWaitForJob.RUNRESET El trabajo se restablecerá. la solicitud se pasa al motor de tiempo de ejecución. ModalidadEjecución) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. v DSJ.RUNRESTART La secuencia de trabajos reiniciable debe reiniciarse con los valores de parámetros del trabajo original. independientemente del valor real. el descriptor de contexto del trabajo controlado se descarga. Ejemplo El mandato siguiente inicia el trabajo qsales en modalidad estándar: RunErr = DSRunJob(qsales_handle.BADTYPE ModalidadEjecución no es una modalidad conocida. v DSJE. Si se devuelve como 0. v DSJ. como es el caso para las rutinas anteriores/posteriores. debe utilizar DSDetachJob y DSAttachJob para establecer un nuevo descriptor de contexto.RUNVALIDATE.RUNNORMAL (Valor predeterminado) Ejecución de trabajo estándar. pero no se informa de su progreso. v DSJ. Después de llamar a DSRunJob.DescriptorContextoTrabajo es el descriptor de contexto original o uno nuevo. Ejemplo h$ = DSPrepareJob(h$) DSRunJob Inicia la ejecución de un trabajo.BADHANDLE DescriptorContextoTrabajo no válido.RUNVALIDATE El trabajo sólo se validará.BADSTATE El trabajo no está en el estado correcto (compilado. CódigoError es 0 si DSRunJob es satisfactorio. se produce un error y se registra un mensaje. Comentarios Si el trabajo de control se ejecuta en modalidad de validación. Programación BASIC 213 . v DSJE.RUNNORMAL) Capítulo 7. RunMode es el nombre de la modalidad en la que se ejecutará el trabajo y es una de las siguientes: v DSJ. Tenga en cuenta que esta llamada es asíncrona. no en ejecución). de lo contrario puede ser uno de los enteros negativos siguientes: v DSJE. Si es necesario ejecutar el mismo trabajo de nuevo. Un trabajo en modalidad de validación ejecutará su rutina JobControl (si existe) en lugar de comprobar solamente su existencia. DSJ. cualquier llamada de DSRunJob actuará como si ModalidadEjecución fuera DSJ. ya que no puede se conectar a un trabajo mientras está en ejecución. Sintaxis CódigoError = DSRunJob (DescriptorContextoTrabajo. Esto permite examinar el registro de qué trabajo ha iniciado en modalidad de validación.

Tu@Enalgúnlugar. y se configura. Se puede omitir en sistemas (por ejemplo. por ejemplo. junto con las líneas de "From InfoSphere DataStage job: jobname" v "Servidor" Nombre de host a través del cual se enviará el correo. Se puede omitir. v "Asunto" Algo que poner en la línea del asunto del mensaje. Se enviará un mensaje vacío. lo que hará que se inserte en ese punto un informe en el estado de trabajo actual.NOERROR (0) OK v DSJE. Los nombres que se reconocen actualmente (sin distinguir entre mayúsculas y minúsculas) son los siguientes: v "De" Dirección de correo del remitente. Por ejemplo: Sintaxis Respuesta = DSSendMail(Parámetros) Parámetros es un conjunto de parámetros nombre:valor. una plantilla para describir exactamente cómo ejecutar el mandato sendmail local. Si se utiliza. Un informe completo contiene información de etapa y enlace así como estado de trabajo. v "Para" Dirección de correo del destinatario.com Sólo se puede dejar en blanco si el archivo de plantilla local no contiene una señal "%to%". Respuesta. Oculta las distintas interfaces de llamada a diversos programas sendmail y proporciona una sencilla interfaz para enviar texto.DSSendMail Esta rutina es una interfaz a un programa sendmail que se asume que existe en algún lugar de la vía de búsqueda del usuario actual (en el host de la capa de motor). Nota: Es posible que el texto del cuerpo contenga las señales "%report% o %fullreport% en cualquier lugar dentro del mismo. v "Cuerpo" Cuerpo del mensaje. Aqui@Enalgúnlugar. para permitir la obtención de varias líneas en el mensaje.el campo no tiene el aspecto 'nombre:valor' v DSJE. en cuyo caso el archivo de plantilla local presumiblemente no contendrá una señal "%server%". Si se deja como "". por ejemplo. se creará una línea de asunto estándar. separados por un carácter de marcador o "\n".NOTEMPLATE No se puede encontrar archivo de plantilla v DSJE. Las respuestas posibles son: v DSJE. Hace referencia a la señal "%body%". Ejemplo code = DSSendMail("De:yo@aquí\nPara:Tu@allí\nAsunto:Hola\nCuerpo:Línea1\nLínea2") DSSetDisableJobHandler Habilitar o inhabilitar la gestión de mensajes a nivel de trabajo. externamente. con un nombre conocido. Es decir.NOPARAM Falta nombre de parámetro .BADTEMPLATE Error en archivo de plantilla Comentarios La rutina busca un archivo local en el directorio actual de proyectos.com Sólo se puede dejar en blanco si el archivo de plantilla local no contiene una señal "%from%". debe ser el último parámetro. Unix) donde el nombre de host SMTP se puede configurar. 214 Guía del desarrollador de Server Job . utilizando "\n" para saltos de línea. Hace referencia a la señal "%subject%".

valor es TRUE para generar metadatos operativos. Altera temporalmente el valor predeterminado para el proyecto. Ejemplo El mandato siguiente inhabilita la gestión de mensajes a nivel de trabajo para el trabajo qsales: GenErr = DSSetDisableJobHandler (qsales_handle. FALSE para no generar metadatos operativos. CódigoError es 0 si DSSetDisableJobHandler es satisfactorio.BADHANDLE Invalid DescriptorContextoProyecto. TRUE) DSSetGenerateOpMetaData Se utiliza para especificar si el trabajo genera metadatos operativos. valor es TRUE para inhabilitar la gestión de mensajes a nivel de trabajo o FALSE para habilitarla.BADVALUE valor no es adecuado para este tipo de parámetro.BADHANDLE DescriptorContextoTrabajo no válido v DSJE. de lo contrario. valor) DescriptorContextoProyecto es el valor devuelto de DSOpenProject. v DSJE. puede ser uno de los siguientes enteros negativos: v DSJE. CódigoError es 0 si DSSetDisableProjectHandler es satisfactorio. es uno de los siguientes valores negativos: v DSJE. valor) DescriptorContextotrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. TRUE) DSSetDisableProjectHandler Habilitar o inhabilitar la gestión de mensajes a nivel de proyecto. Ejemplo El mandato siguiente inhabilita la gestión de mensajes a nivel de proyecto para el trabajo qsales: GenErr = DSSetDisableProjectHandler (qsales_handle.BADVALUE valor no es adecuado para este tipo de parámetro. Programación BASIC 215 . valor es TRUE para habilitar la gestión de mensajes a nivel de proyecto o FALSE para habilitar la gestión de mensajes a nivel de proyecto. de lo contrario puede ser uno de los enteros negativos siguientes: Capítulo 7.Sintaxis CódigoError = DSSetDisableJobHandler (DescriptorContextoTrabajo. de lo contrario. CódigoError es 0 si DSRunJob es satisfactorio. Sintaxis CódigoError = DSSetGenerateOpMetaData (DescriptorContextoTrabajo. Sintaxis CódigoError = DSSetDisableProjectHandler (DescriptorContextoProyecto. valor) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob.

Sintaxis CódigoError = DSSetParam (DescriptorContextoTrabajo.LIMITWARN Trabajo que se detendrá después de ValorLímite sucesos de aviso. ValorParám) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. de lo contrario.BADTYPE valor es incorrecto. ValorParám es una serie que proporciona el valor del parámetro. NombreParám es una serie que proporciona el nombre del parámetro.LIMITWARN. v DSJE. ValorLímite es un entero que especifica el valor en el que se establecerá el límite. 10) DSSetParam Especifica los valores de parámetro del trabajo antes de ejecutar un trabajo. CódigoError es 0 si DSSetJobLimit es satisfactorio. NombreParám. Sintaxis CódigoError = DSSetJobLimit (DescriptorTrabajoContexto. no en ejecución). TipoLímite. → DSJ. v DSJE. ValorLímite) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob.BADHANDLE DescriptorContextoTrabajo no válido v DSJE.v DSJE. Sin embargo. un trabajo controlado hereda los límites de filas o avisos del trabajo de control. Ejemplo El mandato siguiente hace que el trabajo qsales genere metadatos operativos independientemente de lo que especifique el valor predeterminado del proyecto: GenErr = DSSetGenerateOpMetaData(qsales_handle. TRUE) DSSetJobLimit De manera predeterminada.LIMITROWS Etapas que se limitarán a ValorLímite filas. 216 Guía del desarrollador de Server Job . Ejemplo El mandato siguiente establece un límite de 10 avisos en el trabajo qsales antes de que se detenga: LimitErr = DSSetJobLimit(qsales_handle. es uno de los siguientes valores negativos: v DSJE. TipoLímite es el nombre del límite que se aplicará al trabajo en ejecución y es uno de los siguientes: v DSJ. Cualquier parámetro que no se establezca adoptará el valor predeterminado.BADVALUE ValorLímite no es adecuado para el tipo de condición de limitación. Establézcalo en 0 para especificar un número ilimitado de avisos. v DSJ. la función DSSetJobLimit los puede alterar temporalmente.BADHANDLE DescriptorContextoTrabajo no válido.BADSTATE El trabajo no está en el estado correcto (compilado. v DSJE.BADTYPE TipoLímite no es una condición de límite conocida.

Programación BASIC 217 . no como función. el código se puede establecer en cualquier punto del trabajo y el último valor es el que se tomará en cualquier momento. debe llamar a DSWaitForJob o utilizar la sentencia de Suspensión y buscar DSGetJobStatus. Inmediatamente envía una solicitud de detención al motor de tiempo de ejecución. "trimestre".BADHANDLE DescriptorContextoTrabajo no válido v DSJE. Ejemplo Los mandatos siguientes establecen el parámetro de trimestre en 1 y el parámetro de fecha de inicio en 1/1/97 para el trabajo qsales: paramerr = DSSetParam (qsales_handle. v DSJE. el emisor de la llamada debe utilizar en primer lugar DSWaitForJob y DSGetJobInfo. De hecho. de lo contrario es posible que no se distinga de un error interno en llamadas a DSGetJobInfo. "fecha de inicio". porque no hay posibles errores.CódigoError es 0 si DSSetParam es satisfactorio. comprobando si hay un estado de finalización satisfactorio.BADVALUE ValorParám no es adecuado para este tipo de parámetro. para estar seguro de obtener el código de terminación real para un trabajo. Ejemplo El mandato siguiente establece un código de terminación de "trabajo de venta finalizado": Call DSSetUserStatus("trabajo de venta finalizado") DSStopJob Esta rutina sólo se debe utilizar después de haber emitido un DSRunJob. La llamada es asíncrona. Por lo tanto.BADPARAM NombreParám no es un parámetro conocido del trabajo. Sintaxis Call DSSetUserStatus (EstadoUsuario) EstadoUsuario La serie es cualquier mensaje de terminación definido por el usuario. "1") paramerr = DSSetParam (qsales_handle. Esta rutina se define como una subrutina. Capítulo 7. Esta serie no debe ser un entero negativo. v DSJE.BADSTATE El trabajo no está en el estado correcto (compilado. Si necesita saber que el trabajo se ha detenido realmente. puede ser uno de los siguientes enteros negativos: v DSJE. sobrescribiendo la serie almacenada anterior. La puede utilizar cualquier trabajo en una rutina de control de trabajo o posterior para establecer un código de terminación para la interrogación por parte de otro trabajo. Sintaxis CódigoError = DSStopJob (DescriptorContextoTrabajo) DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. de lo contrario. Tenga en cuenta que la solicitud de detención se envía independientemente del estado actual del trabajo. La serie se registrará como parte de un suceso de "control" adecuado en el registro del trabajo de llamada y se almacenará para su recuperación por parte de DSGetJobInfo. no en ejecución). → "1997-01-01") DSSetUserStatus Se aplica sólo al trabajo actual y no toma un parámetro DescriptorContextoTrabajo.

Ejemplo El siguiente mandato solicita que se detenga el trabajo qsales: stoperr = DSStopJob(qsales_handle) DSTransformError Registra un mensaje de aviso en un archivo de registro del trabajo. "MySqrt") Return("0") . v Si Código < 0. Se llama a esta función desde transformaciones solamente. la llamada no devuelve el valor de retorno y el trabajo termina anormalmente. Si el trabajo tiene un límite de aviso definido para el mismo. Sintaxis Ans = DSTranslateCode(Código) Código es: v Si Código > 0. v (No se debe pasar nunca 0 y devolverá "ningún error") Ans es el mensaje asociado con el código.CódigoError es 0 si DSStopJob es satisfactorio.*la transformación produce 0 en este caso End Result = Sqrt(Arg1) . se presupone que es un código de error. de lo contrario puede ser uno de los siguientes: v DSJE. 218 Guía del desarrollador de Server Job . NombreTransformación (entrada) es el nombre de la transformación que llama a la subrutina DSTransformError. cuando el número de avisos alcanza ese límite. Mensaje recibe automáticamente como prefijo el nombre de la etapa actual y la transformación de llamada. se presupone que es un estado de trabajo. NombreTransformación) Mensaje (entrada) es el mensaje de aviso que desea registrar. Además del mensaje de aviso.BADHANDLE DescriptorContextoTrabajo no válido. Sintaxis Call DSTransformError (Mensaje. Comentarios DSTransformError graba el mensaje (y otra información) en el archivo de registro del trabajo como aviso y vuelve a la transformación. Ejemplo Function MySqrt(Arg1) If Arg1 < 0 Then Call DSTransformError("Valor negativo:"Arg1.* de lo contrario devuelve la raíz cuadrada Return(Result) DSTranslateCode Convierte un estado de control de trabajo o código de error en un mensaje de texto explicativo. DSTransformError registra los valores de todas las columnas en las filas actuales para todos los enlaces de entrada y salida conectados a la etapa actual.

Un nombre de vía de acceso que empieza con "-" indica un distintivo para comprobar la no-existencia de la vía de acceso. v DSJE. Los parámetros también pueden finalizar con el formato "timeout:NNNN" (o "timeout=NNNN"). dependiendo del distintivo. No se realiza ninguna comprobación respecto a si se trata de una vía de acceso razonable (por ejemplo.) Respuesta = DSWaitForFile("incoming.NOFILEPATH Falta vía de acceso de archivo v DSJE. El formato puede opcionalmente terminar con "/nn". comprobándolo una vez por minuto.TIMEOUT Se ha esperado demasiado Ejemplos Respuesta = DSWaitForFile("C:\ftp\incoming. se utiliza un tiempo de sondeo predeterminado. No forma parte del nombre de vía de acceso. Esto indica un tiempo no predeterminado que se debe esperar antes de abandonar. Si se ha pasado esta hora o nn:nn. si existen todos los directorios de la vía de acceso). Si se omite.) Respuesta = DSWaitForFile("-incoming. y no distinguen entre mayúsculas y minúsculas: v nnn número de segundos a esperar (a partir de ahora) v nnnS ídem v nnnM número de minutos que se debe esperar (desde ahora) v nnnH número de horas que se debe esperar (desde ahora) v nn:nn:nn esperar hasta esta hora en 24HH:NN:SS.NOERROR (0) OK . lo que indica un tiempo de retardo de sondeo en segundos.) Capítulo 7. Respuesta puede ser: v DSJE.BADTIME Formato de tiempo de espera no reconocido v DSJE. Existen varios formatos posibles. Sintaxis Respuesta = DSWaitForFile(Parámetros) Parámetros es la vía de acceso completa del archivo que se debe esperar.Comentarios Si Código no se reconoce.txt timeout=15:00") (espera hasta las 3 de la tarde a que NO exista el archivo en el directorio local. El tiempo de espera predeterminado es el mismo que "12H". Programación BASIC 219 . esperará hasta el día siguiente.txt timeout:2H") (espera 7200 segundos a que exista el archivo en C: antes de abandonar.El archivo ahora existe o no existe. se notificará Ans.txt timeout:3600/60") (espera 1 hora a que exista un archivo local. Ejemplo code$ = DSGetLastErrorMsg() ans$ = DSTranslateCode(code$) DSWaitForFile Suspende un trabajo hasta que existe o no existe un archivo nombrado.

que representa una lista de trabajos a los que se debe esperar. Si el tamaño es un valor nulo. Si ninguno de los trabajos ha finalizado. la función DSWaitForJob devuelve el control inmediatamente. 4) .tamaño] ) número es el número decimal que se va a convertir. DescriptorContextoTrabajo es un conjunto delimitado por comas de descriptores de contexto de trabajo. Sintaxis CódigoError = DSWaitForJob (DescriptorContextoTrabajo) DescriptorContextoTrabajo es la serie devuelta de DSAttachJob. Ejemplo Para esperar el retorno del trabajo qsales: WaitErr = DSWaitForJob(qsales_handle) Función Dtx Convierte un entero decimal en hexadecimal. Si contiene comas. CódigoError es >0 => el descriptor de contexto del trabajo ha finalizado desde una espera de varias trabajos. Sintaxis Dtx (número [ .DSWaitForJob Esta función sólo es válida si el trabajo actual ha emitido un DSRunJob en los DescriptorContextoTrabajo proporcionados. de lo contrario los posibles valores de error (<0) son: v DSJE. Comentarios DSWaitForJob está a la espera de un solo trabajo o varios trabajos. CódigoError es 0 sino hay ningún error. se produce un error de tiempo de ejecución.* devuelve "2F" .WRONGJOB El trabajo para este DescriptorContextoTrabajo no se ha ejecutado desde dentro de este trabajo. v DSJE. Si el número es un valor nulo.* devuelve "002F" 220 Guía del desarrollador de Server Job . Ejemplo Este es un ejemplo de la función Dtx que se utiliza para convertir un número decimal en una representación de serie hexadecimal: MyNumber = 47 MyHex = Dtx(MyNumber) MyHex = Dtx(MyNumber.BADHANDLE DescriptorContextoTrabajo incorrecto. El valor devuelto se rellena con ceros iniciales. la función DSWaitForJob devuelve el control en cuanto finaliza uno de los trabajos. se devuelve un nulo. Si uno de los trabajos cuyos descriptores de contexto que se encuentran en la lista ha finalizado. tamaño es el número mínimo de caracteres en el valor hexadecimal. según sea necesario.

Ejemplo Este ejemplo muestra cómo se utiliza la función Ebcdic para convertir una serie de bytes ASCII: AsciiStr = "A1" EbcdicStr = Ebcdic(AsciiStr) ..* convierte todos los bytes a EBCDIC * (La letra A es el decimal 193.. Arg2.Función Ebcdic Convierte los valores de los caracteres de una serie del formato ASCII al formato EBCDIC.... .. el dígito 1 es el decimal 241 en EBCDIC) If EbcdicStr = Char(193):Char(241) Then . se utiliza esta ramificación EndIf Sentencia End Indica el final de un programa. Ejemplos Este ejemplo ilustra el uso de una sentencia End con varias formas de la construcción If.* . Comentarios Las funciones Ebcdic y Ascii realizan operaciones complementarias. esta función puede devolver datos no reconocidos para la correlación de juego de caracteres actual. por lo tanto. Sintaxis End End Case Comentarios Utilice una sentencia End en el medio de un programa para finalizar una sección de una sentencia If u otras sentencias condicionales. Utilice End Case para finalizar un conjunto de sentencias Case.." Then Reply = 1 Else Reply = 2 * Cláusulas multilínea: If Len(arg1) > 10 Then Reply += 1 Reply = Arg2 * Reply End Else Capítulo 7. Sintaxis Ebcdic (serie) serie es la serie o la expresión que desea convertir. Programación BASIC 221 .. una subrutina o bloque de sentencias. Si la serie es un valor nulo. se produce un error de tiempo de ejecución.Then en una rutina: Function MyTransform(Arg1. Nota: Si el soporte multilingüístico está habilitado. Arg3) * Las cláusulas Then y Else ocupan una línea cada una: If Arg1 Matches "A.

1) * Reply End * Otro estilo de las cláusulas multilínea: If Len(Arg1) > 20 THEN Reply += 2 Reply = Arg3 * Reply End Else Reply += 4 Reply = (Arg3 . Sintaxis Equate símbolo To valor [ ..* los demás valores Call DSTransformError("Bad arg":Arg1. No está disponible en las expresiones. Comentarios Puede comparar el símbolo sólo una vez..To y Equate.. valor es el valor que desea identificar mediante símbolo.Literally para establecer símbolos en el código: 222 Guía del desarrollador de Server Job . "MyTransform" Reply = "" End Case Return(Reply) Sentencia Equate Compara un valor con un símbolo o una serie literal durante la compilación... El valor de símbolo no puede ser un número. Literally (o Lit) especifica que el valor es una serie literal.1) * Reply End Return(Reply) Este ejemplo utiliza una sentencia End Case con una sentencia Case: Function MyTransform(Arg1) Begin Case Case Arg1 = 1 Reply = "A" Case Arg1 = 2 Reply = "B" Case Arg1 > 2 And Arg1 < 11 Reply = "C" Case @True . To especifica que el valor es un tipo cualquiera de expresión.. Equate símbolo Literally valor [ ..Reply += 2 Reply = (Arg2 . obtiene un error de compilador..símbolo To valor] . de lo contrario. El valor debe ir entre comillas. Ejemplo El ejemplo siguiente muestra cómo utilizar Equate. símbolo es el nombre de comparación que desea dar a un valor en el programa.símbolo Literally valor] .

se devuelve el valor de la serie.. se eliminan todas las apariciones de subserie. "BB". 1) * El resultado es "AAxxxCCxxxDDBB" El ejemplo siguiente elimina todas las apariciones de la subserie: MyString = "AABBCCBBDDBB" NewString = Ereplace(MyString.* el código se convierte en: If Arg1 = "1 Then Ans = . sustitución es la subserie de sustitución. Comentarios Un valor nulo para serie devuelve un valor nulo.. Si sustitución es una serie vacía.* el código se convierte en: If Arg1 = "O2" Then Ans = . Un valor menor que 1 toma el valor 1 de forma predeterminada. Sintaxis Ereplace (serie.Function MyFunction(Arg1.. inicio especifica la primera instancia que hay que sustituir. Para cambiar todas las instancias. Programación BASIC 223 . utilice un valor menor que 1.. "") * El resultado es "AACCDD" Capítulo 7. Arg2) Equate Option1 To "O1" Equate Option2 To "O2" Equate TestOption Literally "If Arg1 = " TestOption Option1 Then . End TestOption Option2 Then .número [ . 2. Ejemplos El siguiente ejemplo sustituye todas las apariciones de una subserie por otra: MyString = "AABBCCBBDDBB" NewString = Ereplace(MyString. "BB". End Return(Ans) Función Ereplace Sustituye una o varias instancias de una subserie. Si la subserie es una serie vacía. "xxx") * El resultado es "AAxxxCCxxxDDxxx" El ejemplo siguiente sustituye sólo las dos primeras apariciones: MyString = "AABBCCBBDDBB" NewString = Ereplace(MyString. subserie. se produce un error de tiempo de ejecución. subserie es la subserie que desea sustituir. "BB". "xxx". sustitución [ . número especifica el número de instancias de subserie que hay que sustituir.inicio] ] ) serie es la serie o la expresión. Si utiliza un valor nulo para otra variable.

carácter. "ABABC") Función Exp Devuelve el valor de "e" elevado a la potencia especificada.carácter y sustituir.carácter es un valor nulo. sustituir. buscar. se genera un mensaje de aviso y se devuelve 0. "41". buscar. Un valor nulo devuelve un valor nulo. De 00 a FF Caracteres Unicode de 0000 a FA Delimitadores del sistema Ejemplo En el ejemplo siguiente. Exchange utiliza los dos primeros bytes de buscar. Los caracteres se evalúan de la siguiente manera: Bytes De 00 a FF De 00 a FA De FB a FE Se evalúan como.carácter es el valor hexadecimal del carácter de sustitución. 41 es el valor hexadecimal del carácter "A" y 2E es el valor hexadecimal del carácter de punto (.): MyString = Exchange("ABABC". Sintaxis Exchange (serie.carácter es un valor nulo. sustituir.. Si el soporte multilingüístico está habilitado.carácter. Exchange falla y genera un error de tiempo de ejecución.carácter se suprime de la serie.carácter es FF. 224 Guía del desarrollador de Server Job .carácter es el valor hexadecimal del carácter que se busca. Comentarios Exchange sustituye todas las apariciones del carácter especificado. "2E") * el resultado es ".". Si la potencia es demasiado alta o baja.B.BC" * La línea anterior es funcionalmente equivalente a: * MyString = Convert("A".Función Exchange Sustituye un carácter en una serie..carácter) serie es la serie o la expresión que contiene el carácter que desea sustituir. Si buscar. Si el valor de sustituir. Sintaxis Exp (potencia) potencia es un número o una expresión numérica que especifica la potencia. Una serie nula devuelve un valor nulo. Si sustituir. Exchange falla y genera un error de tiempo de ejecución. ". buscar.

MyHSec = 2 / (Exp(MyAngle) + Exp(-MyAngle)) Función Field Devuelve las subseries delimitadas de una serie. delimitador es el carácter que delimita la subserie. Si instancia es menor que 1.número] ) serie es la serie que contiene la subserie.71828. en cuyo caso se devuelve la serie. se supone 1. salvo que instancia sea 1. se devuelven los delimitadores con las subseries. se produce un error de tiempo de ejecución. ya que se han solicitado dos campos utilizando el delimitador "+" (el segundo y el tercer campo): MyString = "London+0171+NW2+AZ" SubString = Field(Mystring. Si la instancia es un valor nulo. se devuelve el valor nulo. 1) .3 * Se calcula la secante hiperbólica. se devuelve la serie. 2) * devuelve "0171+NW2" Capítulo 7. se produce un error de tiempo de ejecución.Comentarios El valor de "e" es aproximadamente 2. Si el número es una serie vacía o menor que 1. Si la serie no contiene la instancia.71828**(potencia) Ejemplo Este ejemplo utiliza la función Exp para devolver "e" elevado a una potencia: * Se define el ángulo en radianes. Si serie es un valor nulo. 4) . Si se devuelve más de una subserie. se supone 1. La fórmula utilizada para realizar el cálculo es: Exp valor de función = 2. Ejemplos En el siguiente ejemplo. SubString se establece en "0171+NW2". El número especifica el número de subseries delimitadas que se devolverán. Si el delimitador es un valor nulo. se devuelve una serie vacía. instancia especifica qué instancia del delimitador termina la subserie. Si la serie no contiene un delimitador. Programación BASIC 225 .* devuelve "" En el siguiente ejemplo. instancia [ . "/". se devuelve una serie vacía. Si el número es un valor nulo. la variable MyString se establece en los datos entre la tercera y la cuarta aparición del delimitador "#": MyString = Field("###DHHH#KK". 2. delimitador. SubString se establece en "" ya que el delimitador "/" no aparece en la serie: MyString = "London+0171+NW2+AZ" SubString = Field(Mystring.* devuelve "DHHH" En el siguiente ejemplo. se produce un error de tiempo de ejecución."#". Si delimitador es una serie vacía. MyAngle = 1. "+". Sintaxis Field (serie.

3.campos) serie es la serie que se va a modificar. v Si el número es negativo. v Si el número es 0. 2. número.campos es una serie o una expresión que contiene los nuevos campos que se utilizarán. Ejemplo Los siguientes ejemplos muestran varias formas de sustituir subseries en una serie: MyString = "1#2#3#4#5" String = Fieldstore(MyString. v Si el número es positivo. se insertarán todos los campos de nuevos. 1. v Si inicio es mayor que el número de campos de serie. nuevos. se produce un error de tiempo de ejecución.campos. "A#B") * El código anterior da como resultado: "1#A#B#4#5" String2 = Fieldstore(MyString. Si nuevos. Si delimitador es nulo. v Si el número es nulo.campos que se insertan en la serie. delimitador delimita los campos y puede ser un carácter ASCII individual cualquiera. "A#B") * El código anterior da como resultado: "1#A#B#2#3#4#5" String4 = Fieldstore(MyString. "A#B") * El código anterior da como resultado: "1#A#B#4#5" String3 = Fieldstore(MyString. inicio es el número del campo que inicia la modificación. "A#B#C#D") * El código anterior da como resultado: "1#2#3#4#5##A#B#" 226 Guía del desarrollador de Server Job . "#". se sustituirá el número indicado de campos de serie por el número indicado de primeros campos de nuevos. 4. "#". 2. "#". Sintaxis FieldStore (serie. se produce un error de tiempo de ejecución. la serie se rellena con campos vacíos antes de iniciar el proceso. se produce un error de tiempo de ejecución. se devuelve el valor nulo. delimitador. se sustituirán el número indicado de campos de serie por todos los campos de nuevos.campos. inicio. "#". se produce un error de tiempo de ejecución. número es el número de campos de nuevos. -2. "A#B#C#D") * El código anterior da como resultado: "A#B#C#D#5" String5 = Fieldstore(MyString.campos en la serie antes del campo indicado por inicio. Si serie es un valor nulo. suprimiendo o sustituyendo los campos separados por los delimitadores especificados. "#". 7.Función FieldStore Modifica las series de caracteres insertando. 2. 2. v Si inicio es nulo. nuevos.campos es nulo. 0.

consulte Expresión de formato. Capítulo 7.VALUE) Esta es la salida del programa: 37.Si número se evalúa como valor nulo.73629273 PRINT FIX (REAL. FIX permite controlar la exactitud del cálculo eliminando los datos excesivos o poco fiables de los resultados numéricos. La precisión predeterminada es 4. 1) Esta es la salida del programa: 37.Función FIX Utilice la función FIX para convertir un valor numérico en un número de coma flotante con una precisión especificada.precisión [ . Si modalidad es 0 o no se especifica. Una aplicación de ingeniería tiene que descartar los dígitos que rebasan el grado de fiabilidad aceptado para los cálculos. los dígitos sobrantes se redondean. Si modalidad es un valor distinto de 0.74 37. Sintaxis Fmt (serie. Ejemplos El ejemplo siguiente calcula un valor con la precisión predeterminada 4: REAL. una aplicación bancaria que calcula la acumulación de intereses de las cuentas de los clientes no necesita manejar créditos expresados en fracciones de céntimos. Programación BASIC 227 . Sintaxis FIX (número [ . 2) PRINT FIX (REAL.modalidad ] ] ) La expresión número se evalúa como el valor numérico que se convertirá.7363 El ejemplo siguiente calcula el mismo valor con dos dígitos de precisión. El primer resultado se redondea. Para ver la sintaxis detallada. Por ejemplo. El distintivo modalidad indica cuántos dígitos sobrantes se manejan. formato es una expresión que define cómo se formateará la serie. formato) serie es la serie que se va a formatear.73 Función Fmt Formatea los datos de la salida. y el segundo se trunca: PRINT FIX (REAL. la función Fmt falla. los dígitos sobrantes se truncan. La expresión precisión se evalúa como el número de dígitos de precisión del número de coma flotante.VALUE.VALUE = 37. se devuelve el valor nulo. Si serie es un valor nulo. Si el formato es nulo. 2. se devuelve el valor nulo.VALUE.

se rellena con caracteres de relleno. Si desea emplear un carácter numérico o las letras L. deberá escribirlo entre comillas simples. CHAR(251). Justificación La justificación de la salida se especifica utilizando el parámetro de justificación. Debe especificar longitud a menos que especifique máscara. Sintaxis [longitud] [relleno] justificación [edición] [máscara ] Longitud de salida El número de posiciones de caracteres en el campo de salida se especifica utilizando el parámetro de longitud. Puede especificar: v La longitud del campo de salida v Un carácter de relleno para rellenar el campo v Si el campo está justificado a la derecha o a la izquierda v Un formato numérico. Formatos numérico y monetario El parámetro edit permite especificar códigos que dan formato a una serie como una salida numérica o monetaria: 228 Guía del desarrollador de Server Job . T Justificar a la izquierda e interrumpir en espacio (especialmente indicado para los campos de texto). U Justificar a la izquierda e interrumpir en longitud del campo. v Si serie es mayor que longitud. Carácter de relleno El parámetro fill se especifica para definir el carácter de relleno que se utiliza para rellenar el campo de salida al tamaño especificado por length.) v Si serie es menor que longitud. monetario o de fecha v Una máscara para que actúe como plantilla del campo Expresión de formato Define cómo se formatea la serie. T o Q como carácter de relleno. Cada campo se rellena con caracteres de relleno hasta longitud. la serie se divide en campos mediante una marca de texto. El carácter de relleno predeterminado es un espacio. que se inserta cada longitud caracteres. (Puede especificar longitud y máscara. que debe ser uno de los códigos siguientes: L Justificar a al izquierda e interrumpir al final del campo. R.Comentarios La expresión de formato proporciona un patrón para formatear la serie. R Justificar a al derecha e interrumpir al final del campo.

si es necesario. m especifica cómo desescalar el valor: v Un valor de 0 desescala el valor según la precisión actual. Suprime los ceros iniciales. Si está habilitado el soporte multilingüístico. Si no especifica m. Anexa el signo menos a los números negativos. Inserta una coma para separar los millares. Z E C D B L N J S Antepone a la salida numérica como prefijo un signo de dólar. Si el soporte multilingüístico está habilitado. Las opciones E. Si desea utilizar números o caracteres especiales como literales. Trunca un número. Programación BASIC 229 . La precisión predeterminada es 4. Si la expresión de formato no especifica un carácter de relleno. pero estos caracteres tienen un significado especial: #n %n *n Especifica que los datos se visualizan en un campo de n caracteres de relleno. el valor se redondea al entero más próximo. M. Si especifica 0 para n. Una máscara puede incluir los caracteres que desee. Anexa db a los números negativos. Anexa db a los números positivos. Delimita los números negativos con corchetes angulares.Código Descripción n[m] n es un número del 0 al 9 que especifica el número de lugares decimales que se muestran. D y N definen representaciones numéricas de uso monetario. Devuelve una serie vacía si el valor es 0. en cuyo caso también debe escribir entre paréntesis la máscara completa. La salida se rellena con ceros o se redondea al enésimo lugar decimal. C. debe aplicar la función de escape al carácter especial con una barra inclinada invertida ( \ ). Antepone a la salida numérica como prefijo un signo de franco. Por ejemplo: ((###) ###-####) Capítulo 7. Especifica que los datos se visualizan en un campo de n asteriscos. máscara debe ir entre paréntesis a efectos de claridad. Especifica que los datos se visualizan en un campo de n ceros. en lugar de redondearlo. antepone el carácter de yen/yuan al valor. Suprime el signo menos en los números negativos. Salida enmascarada Puede especificar una plantilla de formato para la salida utilizando el parámetro máscara. el valor predeterminado es 0. se utiliza un espacio. Los demás caracteres seguidos de n insertan dichos caracteres en la salida n veces. Por ejemplo. $ F . mediante prefijos o sufijos. v Un valor del 1 al 9 desescala del valor en m menos la precisión actual. Anexa cr a los números negativos. estas opciones alteran temporalmente los convenios numéricos y monetarios establecidos para el entorno local actual. un patrón de formato 10L##-##-#### formatea la serie 31121999 en 31-12-1999.

Si se utiliza con el formato Q. QR o QL. Si se usa con la justificación Q. y m especifica el exponente. "14RZ") X = " " X = Fmt("12345". "14R2$. solo se suprimen los ceros fraccionarios finales. "14L2" X = "1234567. n es el número de dígitos fraccionarios. La serie o la expresión no es válida. Ejemplos Los siguientes ejemplos muestran el efecto de varios códigos Fmt.567. y m es el número de dígitos fraccionarios.00" X = Fmt("0012345". El código de edición no es válido. QL nEm n.La función Status devuelve el resultado de la edición. En cada caso. n es el número de dígitos que preceden al separador decimal. "10R") X = "ONE TWO TH":T:"REE " X = Fmt("AUSTRALIANS".345. "14RZ") X = "12345" X = Fmt("00000".00" X = Fmt("1234567".00" X = Fmt("1234567". para que estén visibles todos los espacios significativos. "5T") X = "AUSTR":T:"ALIAN":T:"S " 230 Guía del desarrollador de Server Job . "14*R2$. Cada uno puede ser un número de 0 a 9.234. QR o QL." X = "****$12. Cada uno puede ser un número de 0 a 9. "10T") X = "ONE TWO ":T:"THREE" X = Fmt("ONE TWO THREE". el resultado se muestra como una serie.00" X = Fmt("12345". de la siguiente manera: 0 1 2 El código de edición es satisfactorio. Si se usa con la justificación Q. "14R2") X = "1234567. Expresión de formato Valor formateado X = Fmt("1234567". Formateo de números exponenciales Estos códigos están disponibles para formatear expresiones exponenciales: Q o QR Justificar a la derecha una expresión exponencial e interrumpir en longitud del campo." X = " $1.m Z Justificar a la izquierda una expresión exponencial e interrumpir en longitud del campo. "14’0’R") X = "00000000012345" X = Fmt("ONE TWO THREE". y se suprime el exponente cero. "14R") X = "0012345" X = Fmt("0012345".

"R0") X = "233779" X = Fmt("233779". "9*Q") X = "*1.X = Fmt("89". "R#####") X = " 89" X = Fmt("6179328323"..") X = "*****$555. "R0" X = "2338" X = Fmt("2337. "R00") X = "2337790000" X = Fmt("233779". "R2") X = "2337.79".. "L#10") X = "12345 " X = Fmt("123456". "L###-#######") X = "617-9328323" X = Fmt("123456789". "R") X = "233779" X = Fmt("233779"." X = Fmt("24500".00" X = Fmt("2337.79".79" X = Fmt("2337. "R24") X = "233779.00" X = Fmt("DAVID". "R00") X = "23377900" X = Fmt("2337.79"..L") X = "DAVID. "R") X = "2337. "R20") X = "2337790000.666. "20*R2$.. "R#10") X = " 67890" X = Fmt("123456789". "L#3-#3-#3") X = "123-456-789" X = Fmt("123456789". "R2") X = "233779.898. "10R2$Z") X = " $24500. "R##-##-##") X = "12-34-56" X = Fmt("555666898".2346E0" X = Fmt("233779".12345678E1".00" X = Fmt("233779".79".00" X = Fmt("233779". "10.79" Capítulo 7. Programación BASIC 231 . "L#5") X = "12345" X = Fmt("12345". "R#5") X = "56789" X = Fmt("67890".00" X = Fmt("0.

Los caracteres que no se pueden correlacionar en la serie se supone que tienen una longitud de visualización de 1. Para ver la sintaxis detallada. Si longitud es menor que 1. "R24") X = "2337. longitud) serie es la serie que se va a doblar. longitud es la longitud de las subseries en caracteres.79".00" X = Fmt("2337.79". formato es una expresión que define cómo se formateará la serie.79". Sintaxis FmtDP (serie. nombrecorrelación] ) serie es la serie que se va a formatear. Si longitud es el valor nulo. se devuelve el valor nulo. se devuelve una serie vacía. 232 Guía del desarrollador de Server Job . formato [.79" X = Fmt("2337. Fold falla y el programa termina con un mensaje de error de tiempo de ejecución. Si el formato es nulo. Comentarios Utilice la función Fold para dividir una serie en un número de subseries separadas por marcas de campo. si es posible. Si el soporte multilingüístico no está habilitado. se devuelve el valor nulo.X = Fmt("2337. Si serie se evalúa como valor nulo. la función FmtDP funciona como una función Fmt equivalente.38" Función FmtDP En la modalidad de soporte multilingüístico. se utiliza el valor predeterminado actual para el proyecto o el trabajo. Sintaxis Fold (serie. El valor de serie se separa en subseries de longitud igual o menor que longitud. "R20") X = "23377900. consulte Expresión de formato. formatea los datos en las posiciones de visualización en lugar de por longitud de caracteres. El valor de serie se separa por los espacios en blanco. Función Fold Dobla las series para crear subseries. nombrecorrelación es el nombre de una correlación de juego de caracteres que se utiliza para el formateo. Si la serie es un valor nulo. y de lo contrario se separa en subseries de la longitud especificada. Comentarios FmtDP está especialmente indicada para su uso con juegos de caracteres de varios bytes. Si no se especifica el nombrecorrelación. "R26") X = "23. FmtDP falla.

Comentarios La función FoldDP está especialmente indicada para su uso con juegos de caracteres de varios bytes. Step incremento especifica la cantidad que aumenta el contador cuando se alcanza una sentencia Next. la función FoldDP funciona como una función Fold equivalente. Capítulo 7.Next Cree un bucle de programa For. inicio To fin especifica el valor de inicio y de fin del contador que define cuántas veces se va a repetir el programa en bucle.Ejemplo A=Fold("This is a folded string".bucle son las sentencias que se ejecutan en el bucle. Continue inicia la siguiente iteración del bucle desde un punto en el bucle. No está disponible en las expresiones.. dobla las series para crear subseries utilizando las posiciones de visualización de los caracteres. Si el soporte multilingüístico no está habilitado. sentencias. Sintaxis FoldDP (serie. Si no se especifica el nombrecorrelación. Sintaxis For variable = inicio To fin [Step incremento] [sentencias. Sentencias For. longitud es la longitud de las subseries en posiciones de visualización. 5) Establece A e: ThisFis a FfoldeFdFstrinFg Donde F es la marca de campo. se utiliza el valor predeterminado actual para el proyecto o el trabajo. nombrecorrelación ] ) serie es la serie que se va a doblar. longitud [ .. nombrecorrelación es el nombre de una correlación de juego de caracteres que se utiliza para el formateo. Función FoldDP En la modalidad de soporte multilingüístico.Next.. Programación BASIC 233 .bucle] [Continue|Exit] [ {While | Until} condición] [sentencias..bucle] [Continue] Next [variable] For variable identifica el inicio del bucle.

] nombre es el nombre de la función escrita por el usuario y puede ser cualquier nombre de variable válido.Next. si utiliza bucles anidados. el bucle finalizará y la ejecución del programa continuará con la sentencia que figura tras la sentencia Next. La función de 234 Guía del desarrollador de Server Job .... While. La ejecución del programa continúa con la sentencia que figura a continuación de la sentencia Next.. Puede especificar hasta 254 argumentos. el bucle interior continúa ejecutándose. Si condición se evalúa en false. El bucle externo utiliza una variable de contador de bucle que disminuye en 1 cada vez que pasa por el bucle.Continue es un bucle interior.. Su uso es opcional. Si condición se evalúa en true.... pero la cláusula Then.. En su lugar. donde cada serie está separada de la otra por un guión. Si una sentencia Next no tiene ninguna sentencia For correspondiente. variable es la variable que se utiliza para definir el bucle con la sentencia For. No está disponible en las expresiones. genera un error de compilador. condición define la condición para ejecutar un bucle While o Until. condición se evalúa en true.* se añade un guión Next Outer * La serie será parecida a: 555-444-333-222-111-.* 5 repeticiones externas For Inner = 1 To 3 .Else no se incluye.. Cuando condición se evalúa en true... condición puede ser una sentencia cualquiera que utilice una cláusula Then. String = "" . Si anida bucles For. Ejemplo Este ejemplo utiliza sentencias For. Until.Next. Los nombres formales hacen referencia a los nombres reales de los parámetros que se utilizan en el programa de llamada (véase los ejemplos). La cláusula Locked no está soportada en este contexto. argumento1 y argumento2 son los nombres formales de los argumentos que se van a pasar a la función.Continue es un bucle interior. el bucle interior continúa ejecutándose. Sintaxis Function [nombre] [ argumento1 [. pero se recomienda para mejorar la legibilidad del programa. Si condición se evalúa como un valor nulo. el bucle interior finaliza. argumento2] . la condición es falsa.. cuando la sentencia condicional ejecuta la cláusula Else. cada bucle debe tener un nombre de variable exclusivo como contador.Next para crear una serie que contiene tres instancias de los números del 5 al 1. cuando la sentencia condicional ejecuta la cláusula Then..* debe configurarse el valor inicial For Outer = 5 To 1 Step -1 . Si condición se evalúa en false. en concreto.Else. Next variable especifica el final del bucle. condición se evalúa en false. Comentarios Puede utilizar varias cláusulas While y Until en un bucle For..* 5 repeticiones internas String = String : Outer Next Inner String = String : "-" .Exit sale del bucle desde un punto en el bucle.. Sentencia Function Identifica una función escrita por el usuario y especifica el número y los nombres de los argumentos que se le pasarán.

B y C.llamada en el programa principal debe especificar el mismo número de argumentos que la sentencia Function. se devuelve una serie vacía.A2) If character # ’’ Then . Return (Z) . Y y Z. Si la función definida por el usuario se invoca a sí misma recursivamente. Function MyFunc(A. o debe ser un registro del mismo archivo de objeto que el programa de llamada. Los nombres de argumento A.B) AL = Len(A) BL = Len(B) If AL < BL Then Result = A Else Result = B Return(Result) En este ejemplo. A continuación. Programación BASIC 235 . Por ejemplo: Function Cut(expression. debe declararla como una función con el Capítulo 7. B. se define una función llamada MyFunc con los nombres de argumento A. Un argumento adicional está oculto para que la función escrita por el usuario pueda utilizarlo para devolver un valor. debe incluir una sentencia Deffun antes de la llamada recursiva.. Y. character) Deffun Cut (A1. End DefFun MyFunc(X. lo que permite calcular el valor asignado a T.. figura un ejemplo de la sentencia DefFun que declara y utiliza la función MyFunc. que debe ser la primera línea no comentada. una función definida por el usuario denominada Short compara la longitud de dos argumentos y devuelve el más corto: Function Short(A. Z) T = MyFunc(X.. B y C hacen referencia a los valores de X.. Return (Cut (expression. Si utiliza la sentencia Return en una función escrita por el usuario y no especifica un valor para devolver. La función escrita por el usuario debe estar catalogada en un catálogo local o el catálogo del sistema.. Llamada a la función escrita por el usuario El programa de llamada debe contener una sentencia Deffun que defina la función escrita por el usuario antes de invocarla. character [2. La función escrita por el usuario conserva un argumento adicional para que se devuelva un valor mediante la sentencia Return. Y.999999])) End Else Return (expression) End End Ejemplos En este ejemplo. Comentarios Una función escrita por el usuario puede contener una sola sentencia Function. Z) End Este ejemplo muestra cómo llamar a una función de transformación denominada MyFunctionB desde otra función de transformación denominada MyFunctionA: Function MyFunctionA(Arg1) * Cuando hace referencia a una función escrita por el usuario que se mantiene en el * repositorio de DataStage.. C) Z = .

Función GetLocale En la modalidad de soporte multilingüístico.H nombre = GetLocale (categoría) El valor de categoría es una de las siguientes señales de inclusión: Señal Significado UVLC$TIME Hora y fecha UVLC$NUMERIC Numérico UVLC$MONETARY Moneda UVLC$CTYPE Tipo de carácter UVLC$COLLATE Secuencia de ordenación Comentarios GetLocale devuelve una de las siguientes señales de error si no puede recuperar el valor de entorno local: Error Significado LCE$NOLOCALES El soporte multilingüístico no está habilitado para IBM InfoSphere DataStage.MyFunctionB" Ans = MyFunctionB(Arg1) * Añada su propia transformación al valor en Ans.. Sintaxis $Include UNIVERSE.. recupera el valor de entorno local actual para una determinada categoría.. Deffun MyFunctionB(A) Calling "DSU.* número correcto de argumentos y añadirle un prefijo "DSU. 236 Guía del desarrollador de Server Job .sentencia define dónde se inicia puede ser cualquier etiqueta válida definida en el programa.CATEGORY No se reconoce la categoría especificada. ..INCLUDE UVNLSLOC. No está disponible en las expresiones. : identifica el texto anterior como una etiqueta de sentencia para que el programa sea más legible. Sentencia GoSub Transfiere el control de programa a una subrutina interna. LCE$BAD.sentencia [ : ] etiqueta. Sintaxis GoSub etiqueta.".

La sentencia Return hace que se reanude la ejecución en la sentencia que va inmediatamente después de la sentencia GoSub.* se utiliza GoTo para evitar un error MyRoutine: Arg1 = SQRT(Arg1) . utilice una sentencia Return o Return To: v Return transfiere el control de programa a la sentencia situada a continuación de la sentencia GoSub. Programación BASIC 237 .* utiliza la raíz cuadrada Return .Comentarios Para transferir el control de nuevo al programa principal. Un programa puede llamar a una subrutina el número de veces que desee.sentencia [ : ] etiqueta. Comentarios Si la sentencia referenciada es ejecutable. If Arg1 = 1 Then GoTo Label1 Else GoTo Label2 Label1: Reply = "A" GoTo LastLabel Capítulo 7. v Return To etiqueta transfiere el control de programa a una ubicación en el programa especificada por etiqueta.sentencia especifica la sentencia de destino. Function MyTransform(Arg1) * Utiliza sólo una subrutina si la entrada es un número positivo: If Arg1 > 0 Then GoSub MyRoutine Reply = Arg1 GoTo ExitFunction . : identifica el texto anterior como una etiqueta de sentencia para que el programa sea más legible. Tenga en cuenta que este tipo de proceso es a menudo más claro que la utilización de una construcción Begin Case. Ejemplo Este ejemplo utiliza GoSub para invocar una subrutina interna en una función de transformación de IBM InfoSphere DataStage. Ejemplo Este ejemplo utiliza la sentencia GoTo para ramificarse a las etiquetas de línea de una rutina. Function MyTransform(Arg1) * Evalúa el argumento y se ramifica a la etiqueta correspondiente. se ejecuta y el programa continúa. Puede anidar subrutinas hasta 256 niveles. Sintaxis GoTo etiqueta. No está disponible en las expresiones.* devuelve el control a la sentencia ExitFunction: Return(Reply) Sentencia GoTo Transfiere el control de programa a la sentencia especificada. Si no es ejecutable. el programa continúa en la primera sentencia ejecutable después de la referenciada. Es necesario utilizar GoTo tal como se muestra para que el control no fluya accidentalmente a la subrutina.

Label2: Reply = "B" LastLabel: Return(Reply) Función Iconv Convierte una serie al formato de almacenamiento interno. Si serie es un valor nulo. Ejemplos Conversiones ASCII Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MY (ASCII): Expresión de conversión Valor interno X = Iconv("ABCD". en cuyo caso se devuelve un valor nulo. se aplican de izquierda a derecha. La serie no era válida. Varios códigos de conversión deben ir separados por marcas de valor. código [ @VM código ] . Comentarios La función Status devuelve el resultado de la conversión.. La conversión no era válida. pero puede que los datos de entrada no sean válidos. ) serie se evalúa como la serie que se va a convertir. Si hay varios códigos. Se devuelve una serie vacía. de la siguiente manera: 0 1 2 3 La conversión ha sido satisfactoria. se devuelve el valor nulo. "MY") X = 41424344 X = Iconv("0123". por ejemplo. el 31 de septiembre. "MY") X = 30313233 Conversiones de fecha Los siguientes ejemplos muestran el efecto de varios códigos de conversión D (Fecha): Expresión de conversión Valor interno X = Iconv("31 DEC 1967". por ejemplo. a menos que serie fuera un valor nulo. La conversión ha sido satisfactoria. una fecha que no existe como. Sintaxis Iconv (serie. El segundo código convierte la salida del primero. genera un error de tiempo de ejecución.. "D") X = 0 238 Guía del desarrollador de Server Job . Si código es un valor nulo. código es un código de conversión y debe escribirse entre comillas. etc.

1997".05. MC/N. MCL. "D/E") X = 10740 X = Iconv("1997 5 27". "G. "D2") X = 10740 X = Iconv("05/27/97".2") X = "27. "D YMD") X = 10740 X = Iconv("27 MAY 97". "D DMY") X = 10740 X = Iconv("97 05 27".05" Conversiones de longitud Los siguientes ejemplos muestran el efecto de algunos códigos de conversión L (Longitud): Expresión de conversión Valor interno X = Iconv("QWERTYUIOP".2") X = "05. MC/A. "G1. "L0") X = 10 X = Iconv("QWERTYUIOP". "L7") X = "" X = Iconv("QWERTYU".05. "L3. MCD. MCU y MCX): Capítulo 7. "D DMY") X = 10740 X = Iconv("5/27/97". MCT.1997". MCN.5") X = "" X = Iconv("QWER". "D2/") X = 10740 X = Iconv("27/05/1997". MCP.5") X = "QWER" Conversiones de caracteres enmascarados Los siguientes ejemplos muestran el efecto de algunos códigos de conversión de caracteres enmascarados (MCA. "L3. "L7") X = "QWERTYU" X = Iconv("QWERTYUOP". "DYMD") X = 10740 Conversiones de grupo Los siguientes ejemplos muestran el efecto de algunos códigos de conversión G (Grupo): Expresión de conversión Valor interno X = Iconv("27. Programación BASIC 239 . "D/MDY") X = 10740 X = Iconv("27 MAY 1997".X = Iconv("27 MAY 97".1997" X = Iconv("27.

"MD33") X = 123456789 X = Iconv("12345678.Smith.89cr".567.") X = 123456789 X = Iconv("123456.789".54". "MD0") X = 987654 X = Iconv("$1. "MCDX") X = "1234" X = Iconv("John Smith 1-234".Expresión de conversión Valor interno X = Iconv("John Smith 1-234". "MD2C") X = -123456789 240 Guía del desarrollador de Server Job .89". "MCXD") X = "4D2" Conversiones decimales enmascaradas Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MD (Decimal enmascarada): Expresión de conversión Valor interno X = Iconv("9876. "MD32") X = 1234567890 X = Iconv("F1234567. "MD2F") X = 123456789 X = Iconv("1234567. "MCD") X = "1234" X = Iconv("4D2". "MC/N") X = "John Smith -" X = Iconv("John^CSmith^X1-234".9". "MCA") X = "JohnSmith" X = Iconv("John Smith 1-234". "MCN") X = "1234" X = Iconv("John Smith 1-234"."MC/A") X = " 1-234" X = Iconv("4D2".89". "MCP") X = "John. "MCU") X = "JOHN SMITH 1-234" X = Iconv("1234".234. "MD2$.1-234" X = Iconv("john SMITH 1-234". "MCL") X = "john smith 1-234" X = Iconv("John Smith 1-234". "MCT") X = "John Smith 1-234" X = Iconv("john smith 1-234". "MD2") X = 987654 X = Iconv("987654". "MCX") X = "4D2" X = Iconv("1234".

") X = 123456789 X = Iconv(".$CPZ") X = 987654 X = Iconv("####9.89".89**".234.9".234. "MD2D") X = 123456789 X = Iconv("1.89-".789". "MD2. "MD3.89>". "MD2.89 ".89". "ML2D") X = 123456789 X = Iconv("1234567.X = Iconv("1234567. "MD2-Z") X = 987654 X = Iconv("$####1234.89 ". "ML3Z") X = 123 X = Iconv("123456. Programación BASIC 241 . "ML33") X = 123456789 X = Iconv("12345678.89cr".123".54". "MD2$12#") X = 123456 X = Iconv("$987.D") X = 123456789 X = Iconv("9876.ZP12#") X = 987654 Conversiones a izquierda y derecha enmascarada Los siguientes ejemplos muestran el efecto de algunos códigos de conversión ML y MR (Izquierda y derecha enmascarada): Expresión de conversión Valor interno X = Iconv("$1.89db". "ML2E") X = -123456789 X = Iconv("1234567. "MR2(*12)") X = 123456789 Conversiones de numerales Los siguientes ejemplos muestran el efecto de algunos códigos de conversión NR (Numeral romano): Expresión de conversión Valor interno X = Iconv("mcmxcvii". "NR") X = 1997 Capítulo 7.876.54". "ML32") X = 1234567890 X = Iconv("1234567. "ML2$. "ML2C") X = -123456789 X = Iconv("1234567. "ML2M") X = -123456789 X = Iconv("<1234567.567.654 ".56". "ML2(*12)") X = 123456789 X = Iconv("**1234567.567.

(9N)") X = "123-ABC-A7G" X = Iconv("123-45-6789". "P(3N-3A-3X). "R100. "MB") X = 1024 X = Iconv("010000110100010001000101".200") X = 123 Conversiones Soundex Los siguientes ejemplos muestran el efecto de algunos códigos de conversión S (Soundex): Expresión de conversión Valor interno X = Iconv("GREEN". "MX") X = 1024 X = Iconv("434445". "MO0C") X = "CDE" X = Iconv("10000000000". MO y MB (Radix): Expresión de conversión Valor interno X = Iconv("400". "MB0C") X = "CDE" Conversiones de comprobación de rango El siguiente ejemplo muestra el efecto del código de conversión R (Comprobación de rango): Expresión de conversión Valor interno X = Iconv("123".(9N)") X = "123456789" X = Iconv("123-ABC-A7G". "P(3N-3A-3X). "P(3N-2N-4N)") X = "123-45-6789" Conversiones Radix Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MX. "MO") X = 1024 X = Iconv("103104105".X = Iconv("MCMXCVmm". "MX0C") X = "CDE" X = Iconv("2000". "S") X = "G650" 242 Guía del desarrollador de Server Job . "NR") X = 1997000 Conversiones de coincidencia de patrón Los siguientes ejemplos muestran el efecto de algunos códigos de conversión P (Coincidencia de patrón): Expresión de conversión Valor interno X = Iconv("123456789".

46"." Else Reply = 2 * Cláusula Else multilínea: If Len(arg1) > 10 Else Reply += 2 Capítulo 7.* valor predeterminado If Arg1 Matches "A. sentencias son las sentencias que se ejecutan si condición es false... "MTHS") X = 10000 X = Iconv("02:46am". Arg2. Programación BASIC 243 . Puede utilizar una sintaxis de una sola línea o varias líneas en un bloque. "S") X = "G653" X = Iconv("GREENBAUM".") X = 9960 X = Iconv("02:46:40". utilice la sintaxis multilínea. Si la condición es false. Arg3) * La cláusula Else ocupa sólo una línea: Reply = 0 . "S") X = "G651" Conversiones de hora Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MT (Hora): Expresión de conversión Valor interno X = Iconv("02:46". Ejemplo Function MyTransform(Arg1. "MTS") X = 10000 Sentencias If. Sintaxis If condición Else sentencia If condición Else sentencias End condición es un valor numérico o una comparación cuyo valor determina el flujo del programa.. Comentarios Si desea ejecutar más de una sentencia cuando condición es false. se ejecutan las sentencias. No está disponible en las expresiones. "MTH") X = 9960 X = Iconv("02..X = Iconv("greene". "MT") X = 9960 X = Iconv("02:46:40am". "MT.Else Ejecutan una o varias sentencias de manera condicional. "S") X = "G650" X = Iconv("GREENWOOD".

Arg3) * Las cláusulas Then y Else ocupan una línea cada una: If Arg1 Matches "A.1) * Reply End Return(Reply) Sentencias If.. Si condición es un valor nulo.. No está disponible en las expresiones. Si condición es false....Then. Si las sentencias Then o Else están escritas en varias líneas. deberá emplear una sentencia End como la última sentencia.1) * Reply End * Otro estilo de la cláusula Else multilínea: If Len(Arg1) > 20 Else Reply += 4 Reply = (Arg3 .Else. se utiliza la cláusula Else." Then Reply = 1 Else Reply = 2 * Cláusulas multilínea: If Len(arg1) > 10 Then Reply += 1 Reply = Arg2 * Reply End Else Reply += 2 Reply = (Arg2 . Arg2. Sintaxis If condición Then sentencias [Else sentencias] If condición Then sentencias End [Else sentencias End] condición es un valor numérico o una comparación cuyo valor determina el flujo del programa.. Comentarios Puede anidar sentencias If...Then.Reply = (Arg2 .. Ejemplo Function MyTransform(Arg1. Puede utilizar una sintaxis de una sola línea o varias líneas en un bloque.1) * Reply End * Otro estilo de las cláusulas multilínea: If Len(Arg1) > 20 THEN Reply += 2 Reply = Arg3 * Reply End Else Reply += 4 Reply = (Arg3 .Else Defina varios bloques de sentencias y las condiciones que determinan qué bloque se ejecuta. se utiliza la cláusula Then. sentencias son las sentencias que se ejecutan dependiendo del valor de condición. Si condición es true. se evalúa en false.1) * Reply End Return(Reply) 244 Guía del desarrollador de Server Job ..

Comentarios Si desea ejecutar más de una sentencia cuando condición es true.. If condición define la condición que determina qué valor se asigna. Si la condición es true.Then Ejecutan una o varias sentencias de manera condicional. utilice la sintaxis multilínea." Then Reply = 1 * Cláusula Then multilínea: If Len(arg1) > 10 Then Reply += 1 Reply = Arg2 * Reply End * Otro estilo de la cláusula Then multilínea: If Len(Arg1) > 20 THEN Reply += 2 Reply = Arg3 * Reply End Return(Reply) Operador If. Arg3) * La cláusula Then ocupa sólo una línea: Reply = 0 .Then. Ejemplo Este ejemplo ilustra las distintas formas de la construcción If.Sentencias If. Capítulo 7... Operador If. Programación BASIC 245 ...Else Asigna un valor que cumple las condiciones especificadas.Then que pueden utilizarse en una rutina: Function MyTransform(Arg1.. Arg2.... sentencias son las sentencias que se ejecutan si la condición es true... No está disponible en las expresiones. Sintaxis If condición Then sentencia If condiciónThen sentenciasEnd condición es un valor numérico o una comparación cuyo valor determina el flujo del programa. Puede utilizar una sintaxis de una sola línea o varias líneas en un bloque.Then.. Then expresión define el valor que se asigna si la condición es true.* valor predeterminado If Arg1 Matches "A.Else Sintaxis variable = If condición Then expresión Else expresión variable es la variable que se asigna... se ejecutan las sentencias.

Si subserie es un valor nulo. subserie es la subserie que desea encontrar. 3) * El código anterior devuelve 0. subserie. se devuelve 0. "XX". inicial de la segunda subserie "XX" no se produce la subserie "xx". y devolverlo: Column2 + (If Column3 Matches "A..Else que puede utilizarse en una expresión. Ejemplo Tenga en cuenta que la cláusula Else es necesaria. 2) * El código anterior devuelve el índice * (14). instancia especifica qué instancia de la subserie se va a ubicar. ya que Position = Index(MyString. "xx". Si no se encuentra la instancia.Then. 2) * El código anterior devuelve 0.. Comentarios El operador If es la única forma de la construcción If. Si la instancia es un valor nulo. se devuelve 0.Else expresión define el valor que se asigna si la condición es false. no se puede encontrar la *. Sintaxis Index (serie. 2) * El código anterior devuelve el índice Position = Index(MyString. Position = Index(MyString. Si serie es un valor nulo. se devuelve 0. No está disponible en las expresiones.. ya que * tercera aparición de la subserie "XX" del segundo carácter "1" (10). Sintaxis InMat [(matriz)] 246 Guía del desarrollador de Server Job . genera un error de tiempo de ejecución." Then 1 Else 2) Función Index Devuelve la posición inicial de una subserie. "XX". Ejemplos Los siguientes ejemplos muestran varias formas de buscar la posición de una subserie en una serie: MyString = "P1234XXOO1299XX00P1" Position = Index(MyString. Si subserie es una serie vacía. * Devolver A o B dependiendo del valor de Column1: If Column1 > 100 Then "A" Else "B" * Añadir 1 o 2 al valor en Column2 dependiendo de lo que haya en * Column3.. Función InMat Recupera las dimensiones de una matriz o determina si una sentencia Dimension ha fallado debido a que la memoria es insuficiente.. instancia) serie es la serie o la expresión que contiene la subserie.. se devuelve 1. 1.

* la respuesta es 0 Función IsNull Prueba si una variable contiene un valor nulo. Después de la evaluación. ya que el valor nulo no es igual a ningún valor. → "MyRoutine") End Función Int Devuelve la parte entera de una expresión numérica. Ejemplo Este ejemplo muestra la parte entera de una expresión devuelta por la función Int: MyValue = 2.* la respuesta es 2 . se devuelve un nulo.matriz es el nombre de la matriz cuyas dimensiones desea recuperar. Ejemplo Este ejemplo muestra cómo probar una expresión que se está estableciendo en el valor nulo: Capítulo 7.* la respuesta es -2 . Comentarios Esta es la única manera de probar si es un valor nulo. Si la expresión es un valor nulo. incluido él mismo. Sintaxis IsNull (variable) variable es la variable que se prueba. InMat devuelve 1 si la sentencia Dimension anterior ha fallado debido a la falta de memoria disponible. Ejemplo Este ejemplo muestra cómo probar si una sentencia Dimension ha asignado suficiente memoria: Dim MyArray(2000) If InMat() = 1 Then Call DSLogFatal("Could not allocate array". Si no especifica una matriz. se devuelve 0.3 IntValue = Int(MyValue) IntValue = Int(-MyValue) IntValue = Int(MyValue / 10) . InMat devuelve las dimensiones de la matriz. se devuelve 1. la parte de fracción del valor se trunca y se devuelve la parte entera. Comentarios Si especifica una matriz. Si variable contiene un valor nulo. Programación BASIC 247 . Sintaxis Int (expresión) expresión es una expresión numérica. de lo contrario.

Si serie es un valor nulo. Si serie es un valor nulo. 3) . ya que toda operación aritmética que incluya un valor nulo * da como resultado un valor nulo.* establece la variable en el valor nulo If IsNull(MyVar * 10) Then * Será true.MyVar = @Null . Sintaxis Len (serie) serie es la serie cuyos caracteres se cuentan. OREGON" StrLen = Len(MyStr) .67) . nombrecorrelación ]) 248 Guía del desarrollador de Server Job . Ejemplos Estos ejemplos extraen los tres caracteres más a la izquierda de una serie: MyString = "ABCDEF" MySubStr = Left(MyString. Si n es un valor nulo. genera un error de tiempo de ejecución. Sintaxis Left (serie.* la respuesta es "AB" Función Len Devuelve el número de caracteres de una serie.* la respuesta es 16 NumLen = Len(12345. 3) MySubStr = Left("AB".* la respuesta es "ABC" . Se cuentan todos los caracteres. End Función Left Extrae una subserie del principio de una serie.* el separador decimal) Función LenDP En la modalidad de soporte multilingüístico.* la respuesta es 8 (observe . devuelve la longitud de una serie en posiciones de visualización. Ejemplos Estos ejemplos determinan la longitud de una serie o de un número cuando se expresa como una serie: MyStr = "PORTLAND. n) serie es la serie que contiene la subserie. n es el número de caracteres que se extraen del principio de la serie. incluidos los espacios y los espacios en blanco finales. se devuelve 0. Sintaxis LenDP (serie [. se devuelve el valor nulo.

dinámica [ < númcampo [ . La búsqueda puede iniciarse en cualquier punto de matriz. empleando la base "e".* o un valor predeterminado adecuado End Else Ans = Ln(Arg1) / Ln(10) End Return(Ans) Sentencia LOCATE Utilice una sentencia LOCATE para buscar en expresión en matriz.inicio] [BY sec] SETTING variable {THEN sentencias [ELSE sentencias] | ELSE sentencias} Capítulo 7. se devuelve 0 y se emite un aviso.dinámica y devolver un valor con una de las indicaciones siguientes: v La ubicación en que se ha encontrado expresión en matriz. Sintaxis LOCATE expresión IN matriz. Los caracteres que no se pueden correlacionar en la serie se supone que tienen una longitud de visualización de 1. Función Ln Calcula el logaritmo natural del valor de una expresión. nombrecorrelación es el nombre de la correlación que define el juego de caracteres que se utiliza en la serie. Si la expresión es un valor nulo.númvalor] > ] [. Sintaxis Ln (expresión) expresión es la expresión numérica que se evalúa.serie es la serie que se va a medir.dinámica. Programación BASIC 249 . Comentarios Si el soporte multilingüístico no está habilitado. se devuelve un nulo. Ejemplo Este ejemplo muestra cómo grabar una transformación para convertir un número en su logaritmo de base 10 utilizando la función Ln: Function Log10(Arg1) If Not(Num(Arg1)) Then Call DSTransformError("Non-numeric ":Arg1. v La ubicación en que se debe insertar expresión en matriz. se utiliza la correlación de juego de caracteres predeterminada para el proyecto o el trabajo. Si se omite el nombrecorrelación.dinámica si no se ha encontrado. Si la expresión es 0 o un valor negativo. esta función funciona como la función Len y devuelve el número de caracteres de la serie.71828.dinámica. "Log10") Ans = 0 . Comentarios El valor de "e" es aproximadamente 2.

valor o subvalor a partir del cual se debe iniciar la búsqueda. variable se establece en 1 y se ejecutan las sentencias THEN. v Se llega al final de la matriz dinámica. puede utilizar la expresión BY sec para finalizar la búsqueda. númvalor y númsubvalor son expresiones de delimitador y especifican: v La ubicación en que se debe iniciar la búsqueda en matriz. Si alguna expresión de delimitador o inicio se evalúa como valor nulo. según las expresiones de delimitador empleadas. aunque contengan marcas de subvalor. Los valores de númcampo. los campos se procesan como campos de un solo valor aunque contengan marcas de valor o subvalor. variable se establece en 0 y se ejecutan las sentencias ELSE. Si sec se evalúa como valor nulo. Los valores se procesan como valores únicos. El valor de variable se establece en un número que representa uno de los elementos siguientes: v El índice del elemento que contiene expresión. valor o subvalor. Las expresiones de delimitador especifican el nivel de búsqueda. v Se encuentra un campo superior o inferior. Comentarios Durante la búsqueda. Utilice los valores siguientes de sec para describir la secuencia ASCII de la búsqueda: "AL" o "A" Ascendente y justificada a la izquierda (ordenación alfanumérica estándar) "AR" Ascendente y justificada a la derecha "DL" o "D" Descendente y justificada a la izquierda (ordenación alfanumérica estándar) "DR" Descendente y justificada a la derecha La especificación de sec no vuelve a ordenar los elementos de matriz.dinámica. e inicio especifica la posición inicial de la búsqueda. v El tipo de elemento que se busca.dinámica. en lugar de al final de la lista de elementos especificados. Si expresión o matriz. Si los elementos de la búsqueda están ordenados en una de las secuencias ASCII ascendentes o descendentes que figuran a continuación.dinámica. 250 Guía del desarrollador de Server Job . Si se utiliza una expresión seq y los elementos no se encuentran en la secuencia indicada por seq. La búsqueda se detiene cuando se da una de las condiciones siguientes: v Se encuentra un campo que contiene expresión. la sentencia LOCATE falla y el programa termina con un mensaje de error de tiempo de ejecución.El valor de expresión se evalúa como la serie que se buscará en matriz. v Un índice que se puede utilizar en una función INSERT para crear un elemento nuevo con el valor especificado por expresión. es posible que no se encuentre un elemento con el valor de expresión.dinámica se evalúa como valor nulo. El valor de variable devuelve un número de campo. La búsqueda finaliza en la posición donde se debe insertar expresión para mantener la secuencia ASCII. En variable se almacena el índice de expresión. El valor de inicio se evalúa como un número que especifica el campo. Si expresión y matriz. indica las condiciones de terminación de la búsqueda.dinámica se evalúan como series vacías. si se encuentra ese elemento. la sentencia falla y el programa termina. según se haya especificado en sec.

NUMBERS END Esta es la salida del programa: Q= XS$SYVZS4S2VBV ERROR WHERE= 5 HERE= 2 BEFORE INSERT.0. Si condición es un valor nulo. NUMBERS= 122F128F123F126F130F Sentencias Loop. While condición Do especifica que el bucle se repite siempre que condición sea true. NUMBERS= ". Programación BASIC 251 . Sintaxis Loop [sentencias] [Continue | Exit] [While | Until condición Do] [sentencias] [Continue | Exit] Repeat Loop define el inicio del bucle de programa. NUMBERS= ". la sentencia LOCATE con una expresión BY sec utiliza el convenio de clasificación especificado por el entorno local actual..NUM) PRINT "AFTER INSERT.THEN.X. Ejemplos Se muestra una marca de campo junto a F. Si el soporte multilingüístico está habilitado. HERE NUMBERS=122:@FM:123:@FM:126:@FM:130:@FM PRINT "BEFORE INSERT..NUMBERS NUM= 128 LOCATE NUM IN NUMBERS <2> BY "AR" SETTING X ELSE NUMBERS = INSERT(NUMBERS.WHERE LOCATE "$" IN Q <1. Exit especifica que el programa abandona el bucle actual. el bucle se detiene y la ejecución del programa continúa con la sentencia que figura tras la sentencia Repeat. se supone que es false. Q=’X’:@SM:"$":@SM:’Y’:@VM:’Z’:@SM:4:@SM:2:@VM:’B’:@VM PRINT "Q= ":Q LOCATE "$" IN Q <1> SETTING WHERE ELSE PRINT ’ERROR’ PRINT "WHERE= ". No está disponible en las expresiones.1> SETTING HERE ELSE PRINT ’ERROR’ PRINT "HERE= ". Continue especifica que el bucle actual se interrumpe y se reinicia en este punto..0..Repeat Define un bucle de programa. El formato de la sentencia ELSE es el mismo que se utiliza en la sentencia IF. NUMBERS= 122F123F126F130FAFTER INSERT. Cuando condición es false.Las sentencias ELSE se ejecutan si no se encuentra expresión. sentencias son las sentencias que se ejecutan en el bucle. Capítulo 7. se muestra una marca de valor junto a V y se muestra una marca de subvalor junto a S.

expresión puede ser un valor único o el nombre de una matriz dimensionada... Si condición es un valor nulo. Check = @True Counter = 0 . los elementos excedentes permanecen sin asignar. Ejemplos Este ejemplo muestra cómo asignar el mismo valor a todos los elementos de una matriz: Dim MyArray(10) Mat MyArray = "Empty" Este ejemplo muestra cómo asignar los elementos de una matriz a los de otra matriz: 252 Guía del desarrollador de Server Job .* bucle interior Counter += 1 .* bucle exterior Loop While Counter < 20 . elemento a elemento.. End Repeat Until Not(Check) . Comentarios Puede utilizar varias cláusulas While y Until en un bucle Loop.* sale del bucle exterior cuando la comprobación se establece en False Repeat Sentencia Mat Asigna valores a los elementos de una matriz. El bucle exterior sale inmediatamente después de comprobar el valor del distintivo. Comentarios No puede utilizar la sentencia Mat para asignar valores a elementos específicos de una matriz. se supone que es false.. el valor se asigna a todos los elementos de la matriz. La sentencia Loop. Sintaxis Mat matriz = expresión matriz es una matriz denominada y dimensionada a la que desea asignar valores. Si una sentencia Repeat no tiene ninguna sentencia Loop correspondiente.Repeat.* contador de incrementos If Counter = 10 Then . Los valores excedentes se descartan.* establece el valor del distintivo en False. independientemente de si coinciden las dimensiones de las dos matrices. Puede anidar bucles Loop.* si la condición es True.. Repeat define el fin del bucle.* inicializa variables Loop ....Repeat. Si expresión es un valor único..Until condición Do especifica que el bucle se repite siempre que condición sea false. Check = @False . genera un error de compilador. No está disponible en las expresiones. Exit .. Si es una matriz. Cuando condición es true.. los valores se asignan a la matriz. establece el valor del distintivo en false y sale prematuramente utilizando la sentencia Exit.Repeat.* y sale del bucle interior. Ejemplo Este ejemplo muestra cómo pueden utilizarse las sentencias Loop. el bucle se detiene y la ejecución del programa continúa con la sentencia que figura tras la sentencia Repeat..Repeat interior hace el bucle 10 veces.

1) Ejemplos Q se evalúa en BBB: Q = MatchField("AA123BBB9". Por ejemplo. se devuelve una serie vacía."2N3A4N". Array2(1.. que especifica que se devuelve la parte de la serie que coincide con el enésimo elemento del patrón. Si la serie no coincide con ningún patrón o es un valor nulo."4N1A"."2A0N3A0N".3) zip se evalúa en 01234: addr = ’20 GREEN ST. Si el elemento es un valor nulo.01234’ zip = MatchField(ADDR. etc. se devuelve una serie vacía.* Array1(1) = 1. n.1) = 1. elemento) serie es la serie que en la que se realiza la búsqueda.1) = 3.2) = 4 Función MatchField Busca en una serie y devuelve la parte de la misma que coincide con un elemento de patrón. Array1(2) = 2. que es 3X. y puede ser cualquiera de los códigos de patrón utilizados por el operador Match. patrón.2) = 2 * Array2(2.2) For n = 1 To 4 Array1(n) = n .2) ABC= Capítulo 7. MA. NATICK. Si el patrón es un valor nulo. Programación BASIC 253 ...".Dim Array1(4) Dim Array2(2."0N0X5N". "3X3N. patrón es uno o varios elementos de patrón que describen la serie. Comentarios patrón debe contener elementos que describen todos los caracteres de la serie. genera un error de tiempo de ejecución. la subserie que coincide con el primer elemento del patrón: MatchField ("XYZ123AB".1) XYZ=ABC=MatchField(’1234AB’. la sentencia siguiente devuelve una serie vacía porque el patrón no cubre la subserie "AB" al final de la serie: MatchField ("XYZ123AB". "3X3N"."10X4A3X".3) col se evalúa en BLUE: inv = ’PART12345 BLUE AU’ col = MatchField(INV.2) En los ejemplos siguientes. Sintaxis MatchField (serie. Next n Mat Array2 = Mat Array1 * Los resultados son: Array2(1. Array2(2. la serie no coincide con el patrón y se devuelve una serie vacía: XYZ=MatchField(’ABCDE1234’. elemento es un número. 1) La siguiente sentencia describe la serie completa y devuelve un valor "XYZ".

Comentarios No utilice la sentencia Nap en una transformación. Si milisegundos es un valor nulo. El valor predeterminado es 1. 25) el resultado es 0 Remainder = Mod(100. ya que ralentizará la ejecución del trabajo de IBM InfoSphere DataStage. Ejemplo Este ejemplo muestra la sentencia Nap que se invoca desde una rutina anterior/posterior de InfoSphere DataStage para sondear la existencia de un recurso. No está disponible en las expresiones. Si dividendo es un valor nulo. Sintaxis Mod (dividendo. divisor es el número por el que se divide. divisor) dividendo es el número que se va a dividir.(Int (X / Y) * Y) Utilice la función Div para devolver el resultado de una operación de división. se devuelve el valor nulo. Ejemplos Los siguientes ejemplos muestran el uso de la función Mod: Remainder = Mod(100. divisor no puede ser 0.* el resultado es 10 Sentencia Nap Detiene un programa el número de milisegundos especificado. Sintaxis Nap [milisegundos] milisegundos es el número de milisegundos que se detiene. se devuelve el valor nulo. Y) = X . Si divisor es un valor nulo. con un breve intervalo de espera entre los sondeos: If NumTimesWaited < RepeatCount Then NumTimesWaited += 1 Nap 500 .* .* esperar 500 milisegundos = 1/2 segundo End 254 Guía del desarrollador de Server Job . la sentencia Nap se omite. Comentarios La función Mod calcula el resto mediante la fórmula: Mod (X. 30) .Función Mod Devuelve el resto de una operación de división.

Función Neg Devuelve el inverso de un número. Capítulo 7. False Boolean = Not(Value1 = Value2). puede emplearla con la cláusula Else si no desea que se efectúe ninguna operación cuando se ejecute la cláusula Else. Si la expresión es true. si es false. Si la expresión es un valor nulo. se devuelve 1. que es: -(MyNum + 75) / 100 MyExpr = Neg(MyNum + 75) / 100 Función Not Invierte el resultado lógico de una expresión. se proporcionan algunos ejemplos del uso de la función Not para invertir el valor real de las expresiones: Value1 = 5 Value2 = 5 Boolean = Not(Value1 . Por ejemplo. se devuelve un nulo. Comentarios La expresión es false si se evalúa en 0 o si es una serie vacía.* Booleano = 1. es true.* Booleano = 0. Sintaxis Neg (número) número es el número que desea invertir. True Boolean = Not(Value1 + Value2).Value2). Ejemplo El siguiente ejemplo muestra un uso de la función Neg. Sintaxis Not (expresión) expresión es la expresión cuyo resultado se invierte. Programación BASIC 255 . Para los demás valores (excepto el valor nulo). es decir. False Sentencia Null No realiza ninguna acción ni genera ningún código de objeto. Sintaxis Nula Comentarios La sentencia Null actúa como una vía muerta en un programa. es decir. Ejemplos A continuación. es decir. se devuelve 0. equivalente al operador unario menos: MyNum = 10 * La siguiente línea puede ser más clara que la construcción * equivalente.* Booleano = 0.

se devuelve un valor 1. Null End Case Función Num Determina si una serie es numérica. Ejemplos Los siguientes ejemplos muestran la función Num que se utiliza para determinar si una variable contiene un número: Arg1 = "123. signos de dólar.. se devuelve 0. se devuelve un nulo. por ejemplo. True . no se consideran numéricas.. Si la expresión es un valor nulo...) expresión es una serie almacenada en formato interno que desea convertir a un formato de salida.. Si el soporte multilingüístico está habilitado.. Sintaxis Num (expresión) expresión es la expresión que se prueba.* devuelve 1. comas. Comentarios Las series que contienen puntos utilizados como separadores decimales se consideran numéricas.45 Boolean = Num(Arg1) Arg2 = "Section 4" Boolean = Num(Arg2) Arg3 = " " Boolean = Num(Arg3) Arg4 = "" Boolean = Num(Arg4) . No obstante. False . una serie numérica o una serie vacía. de lo contrario. no realizar ninguna acción. 256 Guía del desarrollador de Server Job . se devuelve un valor nulo.Ejemplo El siguiente ejemplo muestra el uso de la sentencia Null para dejar claro que una determinada ramificación de una sentencia Case no realiza ninguna acción: Begin Case Case Arg1 = ’A’ * . es decir. Si la expresión es un número. Si es un valor nulo. realizar alguna acción para el segundo caso. etc..* devuelve 0.. en los demás casos. las series que contienen otros caracteres utilizados para formatear cantidades numéricas o monetarias como. Case @True * .. realizar alguna acción para el primer caso. Sintaxis Oconv (expresión.* False (el espacio no es un carácter numérico) . conversión [@VM conversión] . es decir. Case Arg1 = ’B’ * . el resultado de esta función depende del valor de entorno local actual del convenio Numeric.* True (la serie vacía es numérica) Función Oconv Convierte una expresión a un formato de salida.

genera un error de tiempo de ejecución. y así sucesivamente.2]") X = "MAY 97" Capítulo 7. "MY") X = "ABCD" X = Oconv("30313233". "D") X = "31 DEC 1967" X = Oconv(10740. Se ha pasado una serie no válida a la función Oconv. La conversión no era válida. Expresión de conversión Valor externo X = Oconv("41424344".conversión son uno o varios códigos de conversión que especifican cómo se formatea la serie. "D-YJ") X = "1997-147" X = Oconv(10740. Si conversión es un valor nulo. "MY") X = "0123" Conversiones de fecha Los siguientes ejemplos muestran el efecto de varios códigos de conversión D (Fecha): Expresión de conversión Valor externo X = Oconv(0. La función Status utiliza los siguientes valores para indicar el resultado de una función Oconv: 0 1 2 La conversión ha sido satisfactoria. "D YMD") X = "1997 5 27" X = Oconv(10740. se aplican de izquierda a derecha. Programación BASIC 257 . el siguiente código se aplica al resultado de la primera conversión. Ejemplos Conversiones ASCII Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MY (ASCII). si la serie era un valor nulo. "D2/") X = "05/27/97" X = Oconv(10740. "D2") X = "27 MAY 97" X = Oconv(10740. El primer código se aplica a la expresión. "D/E") X = "27/05/1997" X = Oconv(10740. se ha devuelto un valor nulo. "D2*JY") X = "147*97" X = Oconv(10740. Separe los distintos códigos con una marca de valor. O bien se ha devuelto la serie original o. "D MY[A. Comentarios Si especifica varios códigos.

A. "DW") X = "2" X = Oconv(10740. "L7") X = "" X = Oconv("QWERTYU". MCT.1997" X = Oconv("27. MCN.05. "DWA") X = "TUESDAY" Conversiones de grupo Los siguientes ejemplos muestran el efecto de algunos códigos de conversión G (Grupo): Expresión de conversión Valor externo X = Oconv("27.2") X = "27.2]") X = "27 MAY 97" X = Oconv(10740.Z. "D DMY[. "D DMY[.]") X = "27 MAY 1997" X = Oconv(10740.2") X = "05. "D/MDY[Z.1997".05. "L3. "L3.2.2]") X = "5/27/97" X = Oconv(10740. "DYMD[2. MCU y MCX): 258 Guía del desarrollador de Server Job . "G. "G1.05" Conversiones de longitud Los siguientes ejemplos muestran el efecto de algunos códigos de conversión L (Longitud): Expresión de conversión Valor externo X = Oconv("QWERTYUIOP". "DQ") X = "2" X = Oconv(10740.1997".A3. MCD. MCP.X = Oconv(10740. MC/A. "L7") X = "QWERTYU" X = Oconv("QWERTYUOP".2]") X = "97 05 27" X = Oconv(10740.5") X = "QWER" Conversiones de caracteres enmascarados Los siguientes ejemplos muestran el efecto de algunos códigos de conversión de caracteres enmascarados (MCA.5") X = "" X = Oconv("QWER". "L0") X = 10 X = Oconv("QWERTYUIOP". "DMA") X = "MAY" X = Oconv(10740. MC/N. MCL.

567. "MD2. "MCDX") X = "4D2" X = Oconv("John Smith 1-234".89" X = Oconv(123456789.’.234.’’. "MCD") X = "4D2" X = Oconv("1234".[’’.’SEK’]") X = "1. "MCL") X = "john smith 1-234" X = Oconv("John Smith 1-234".’.’]") X = "f1.54" X = Oconv(987654. "MCU") X = "JOHN SMITH 1-234" X = Oconv("4D2". "MC/A") X = " 1-234" X = Oconv("1234".’. "MD0") X = "987654" X = Oconv(123456789.’’.234.Expresión de conversión Valor externo X = Oconv("John Smith 1-234". "MCX") X = "1234" X = Oconv("4D2". Programación BASIC 259 .567.77" X = Oconv(123456789. "MC/N") X = "John Smith -" X = Oconv("John^CSmith^X1-234". "MD2$. "MCT") X = "John Smith 1-234" X = Oconv("john smith 1-234". "MD24$") X = "$98. "MD2") X = "9876. "MCP") X = "John.567.234.89SEK" Capítulo 7.1-234" X = Oconv("john SMITH 1-234".89" X = Oconv(987654. "MD2[’f’.") X = "$1. "MCXD") X = "1234" Conversiones decimales enmascaradas Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MD (Decimal enmascarada): Expresión de conversión Valor externo X = Oconv(987654. "MCA") X = "JohnSmith" X = Oconv("John Smith 1-234". "MCN") X = "1234" X = Oconv("John Smith 1-234".Smith.

67" X = Oconv(123456. "ML2C") X = "1234567.123" X = Oconv(987654.54" X = Oconv(12345.’.89 " X = Oconv(1234567.") X = "$1. "MD2D") X = "1234567.’]") X = "#<1. "MD32") X = "12345678.234.X = Oconv(-123456789.89 " X = Oconv(123456789.567. "MD33") X = "123456.89>" X = Oconv(123456789. "MD2. "MD2<[’#’.9" X = Oconv(123456789.$CPZ") X = "$987.567. "MD2F") X = "F1234567. "MD2.234.’. "MD2P") X = "1234567. "MD20T") X = "12345. "ML32") X = "12345678.54" Conversiones a izquierda y derecha enmascarada Los siguientes ejemplos muestran el efecto de algunos códigos de conversión ML y MR (Izquierda y derecha enmascarada): Expresión de conversión Valor externo X = Oconv(123456789. "ML33") X = "123456.89" X = Oconv(123.89cr" X = Oconv(123456789.123" X = Oconv(123456789.678.876.789" X = Oconv(1234567890.654 " X = Oconv(987654.567.’.89. "MD2$12#") X = "$####1234.9" X = Oconv(-123456789. "MD2C") X = "1234567. "MD2-Z") X = "9876.89" X = Oconv(123.56" X = Oconv(987654.89cr" 260 Guía del desarrollador de Server Job .789" X = Oconv(1234567890.D") X = "1. "MD3. "ML3Z") X = ".ZP12#") X = "####9.234. "ML2$. "MD3Z") X = ".89" X = Oconv(-123456789.

"P(3N-2N-4N)") X = "" Conversiones Radix Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MX.89**" X = Oconv(123456789. "NR") X = "mcmxcvii" X = Oconv(1997000. "NR") X = "MCMXCVmm" Conversiones de coincidencia de patrón Los siguientes ejemplos muestran el efecto de algunos códigos de conversión P (Coincidencia de patrón): Expresión de conversión Valor externo X = Oconv("123456789".(9N)") X = "" X = Oconv("123-45-6789".X = Oconv(123456789. "P(3N-3A-3X). "P(3N-2N-4N)") X = "123-45-6789" X = Oconv("123-456-789". "MX0C") X = "434445" Capítulo 7. "ML2(*12)") X = "1234567. "ML2E") X = "<1234567. "MR2(*12)") X = "**1234567.89-" X = Oconv(-123456789. MO y MB (Radix): Expresión de conversión Valor externo X = Oconv("1024".(9N)") X = "123456789" X = Oconv("123-ABC-A7G". "P(3N-2N-4N)") X = "" X = Oconv("123-45-678A".89db" X = Oconv(-123456789.89>" X = Oconv(123456789. "P(3N-3A-3X). "MX") X = "400" X = Oconv("CDE".(9N)") X = "123-ABC-A7G" X = Oconv("ABC-123-A7G". "ML2D") X = "1234567. "P(3N-3A-3X).89" Conversiones de numerales Los siguientes ejemplos muestran el efecto de algunos códigos de conversión NR (Numeral romano): Expresión de conversión Valor externo X = Oconv(1997. "ML2M") X = "1234567. Programación BASIC 261 .

X = Oconv("1024", "MO") X = "2000" X = Oconv("CDE", "MO0C") X = "103104105" X = Oconv("1024", "MB") X = "10000000000" X = Oconv("CDE", "MB0C") X = "010000110100010001000101"

Conversiones de comprobación de rango
Los siguientes ejemplos muestran el efecto del código de conversión R (Comprobación de rango): Expresión de conversión Valor externo X = Oconv(123, "R100,200") X = 123 X = Oconv(223, "R100,200") X = "" X = Oconv(3.1E2, "R100,200;300,400") X = 3.1E2

Conversiones de hora
Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MT (Hora): Expresión de conversión Valor externo X = Oconv(10000, "MT") X = "02:46" X = Oconv(10000, "MTHS") X = "02:46:40am" X = Oconv(10000, "MTH") X = "02:46am" X = Oconv(10000, "MT.") X = "02.46" X = Oconv(10000, "MTS") X = "02:46:40"

Sentencias On...GoSub
Transfiere el control de programa a una subrutina interna. No está disponible en las expresiones.

Sintaxis
On índice GoSub etiqueta.sentencia1 [, etiqueta.sentencia2] ...

On índice especifica una expresión que actúa como índice en la lista de etiquetas de sentencia. El valor de índice determina a qué etiqueta de sentencias se mueve el control de programa. Durante la ejecución, se evalúa índice y se redondea a un entero. Si el valor es 1 o menor, se ejecuta la subrutina definida por

262

Guía del desarrollador de Server Job

etiqueta.sentencia1. Si el valor es 2, se ejecuta la subrutina definida por etiqueta.sentencia2, y así sucesivamente. Si el valor es mayor que el número de subrutinas definidas, se ejecuta la última subrutina. Un valor nulo genera un error de tiempo de ejecución. GoSub etiqueta.sentencia1, etiqueta.sentencia2 especifica una lista de etiquetas de sentencia a las que se puede mover el control de programa. Si una etiqueta de sentencia no existe, genera un error de compilador.

Comentarios
Utilice una sentencia Return en la subrutina para devolver el control de programa a la sentencia situada a continuación de las sentenciasOn...GoSub. Las sentencias On...GoSub pueden escribirse en varias líneas. Finalice cada línea con una coma, excepto la última.

Ejemplo
Este ejemplo utiliza On...GoSub para invocar una subrutina de un conjunto de subrutinas internas en una función de transformación de IBM InfoSphere DataStage, dependiendo de un argumento entrante. La sentencia Return hace que se reanude la ejecución en la sentencia que va inmediatamente después de la sentencia GoSub. Es necesario utilizar GoTo tal como se muestra para que el control no fluya accidentalmente a las subrutinas internas.
Function MyTransform(Arg1, Arg2) Reply = "" ;* respuesta predeterminada * Utiliza la subrutina particular dependiendo del valor del argumento: On Arg2 GoSub BadValue, GoodValue1, GoodValue2, BadValue GoTo ExitFunction ;* se utiliza GOTO para evitar un error BadValue: Call DSTransformError("Invalid arg2 ":Arg2, MyTransform") Return ;* devuelve el control a continuación de On...GoSub GoodValue1: Reply = Arg1 * 99 Return ;* devuelve el control a continuación de On...GoSub GoodValue2: Reply = Arg1 / 27 Return ;* devuelve el control a continuación de On...GoSub ExitFunction: Return(Reply)

Sentencia On...GoTo
Mueve el control de programa a la etiqueta especificada. No está disponible en las expresiones.

Sintaxis
On índice GoTo etiqueta.sentencia1 [, etiqueta.sentencia2] ...

On índice especifica una expresión que actúa como índice en la lista de etiquetas de sentencia. El valor de índice determina a qué etiqueta de sentencias se mueve el control de programa. Durante la ejecución, se evalúa índice y se redondea a un entero. Si el valor es 1 o menor, se ejecuta la sentencia definida por etiqueta.sentencia1. Si el valor es 2, se ejecuta la sentencia definida por etiqueta.sentencia2, y así sucesivamente. Si el valor es mayor que el número de sentencias definidas, se ejecuta la última sentencia. Un valor nulo genera un error de tiempo de ejecución. GoTo etiqueta.sentencia1, etiqueta.sentencia2 especifica una lista de etiquetas de sentencia a las que se puede mover el control de programa. Si una etiqueta de sentencia no existe, genera un error de compilador.
Capítulo 7. Programación BASIC

263

Comentarios
Las sentencias On...GoTo pueden escribirse en varias líneas. Finalice cada línea con una coma, excepto la última.

Ejemplo
Este ejemplo utiliza On...GoTo para invocar una subrutina de un conjunto de etiquetas en una función de transformación de IBM InfoSphere DataStage, dependiendo de un argumento entrante:
Function MyTransform(Arg1, Arg2) Reply = "" ;* respuesta predeterminada * GoTo a la etiqueta particular, dependiendo del valor del argumento: On Arg2 GoTo BadValue, GoodValue1, GoodValue2, BadValue * Tenga en cuenta que el control no vuelve nunca a la línea siguiente. BadValue: Call DSTransformError("Invalid arg2 ":Arg2, MyTransform") GoTo ExitFunction GoodValue1: Reply = Arg1 * 99 GoTo ExitFunction GoodValue2: Reply = Arg1 / 27 * Descarta hasta el final de la función: ExitFunction: Return(Reply)

Sentencia OpenSeq
Abre un archivo para el proceso secuencial. No está disponible en las expresiones. OpenSeq

Sintaxis
OpenSeq nombrevía To variable.archivo [On Error sentencias ] [Locked sentencias] [Then sentencias [Else sentencias]] [Else sentencias]

nombrevía es el nombre de la vía de acceso del archivo que se va a abrir. Si el archivo no existe, la sentencia OpenSeq falla. Si nombrevía es un valor nulo, genera un error de tiempo de ejecución. To variable.archivo asigna el archivo a una variable.archivo. Todas las sentencias utilizadas para procesar el archivo deben hacer referencia al mismo utilizando variable.archivo. Si variable.archivo es un valor nulo, genera un error muy grave. On Error sentencias especifica las sentencias que se ejecutan si hay un error muy grave mientras se está procesando el archivo. Se produce un error muy grave si el archivo no se puede abrir o si variable.archivo es un valor nulo. Locked sentencias especifica las sentencias que se ejecutan si el archivo está bloqueado por otro usuario. Si no especifica una cláusula Locked y existe un bloqueo de conflicto, el programa espera hasta que se libere el bloqueo. Then sentencias especifica las sentencias que se ejecutan después de abrir el archivo. Else sentencias especifica las sentencias que se ejecutan si no se puede acceder al archivo o no existe.

264

Guía del desarrollador de Server Job

Comentarios
Cada referencia de archivo secuencial de un programa BASIC debe ir precedida de una sentencia OpenSeq aparte para el archivo. OpenSeq establece un bloqueo de registro de actualización en el archivo. De este modo, se impide que ningún otro programa cambie el archivo mientras se procesa. Restablezca este bloqueo utilizando una sentencia CloseSeq después de procesar el archivo. Varias operaciones OpenSeq en el mismo archivo sólo generan un bloqueo de registro de actualización, por lo que sólo debe incluir una sentencia CloseSeq por archivo. Si se produce un error muy grave y no se ha especificado ninguna cláusula On Error: v Aparece un mensaje de error. v Se retrotrae alguna transacción no confirmada iniciada en el entorno de ejecución actual. v Termina el programa actual. Si se utiliza la cláusula On Error, el valor devuelto por la función Status es el número de error.

Ejemplo
Este es un ejemplo donde se abre un archivo secuencial para comprobar su existencia:
OpenSeq ".\ControlFiles\File1" To PathFvar Locked FilePresent = @True End Then FilePresent = @True End Else FilePresent = @False End

Operadores de coincidencia de patrón
Compara una serie con un patrón de formato. Si el soporte multilingüístico está habilitado, el resultado de una operación de coincidencia depende del valor de entorno local actual de los convenios Ctype y Numeric.

Sintaxis
serie Match[es] patrón

serie es la serie que se va a comparar. Si la serie es un valor nulo, la coincidencia es false y se devuelve 0. patrón es el patrón de formato y puede ser uno de los códigos siguientes: Este código... Coincide con este tipo de serie... ... 0X nX 0A nA 0N nN Cero o más caracteres de cualquier tipo. Cero o más caracteres de cualquier tipo. n caracteres de cualquier tipo. Cero o más caracteres alfabéticos. n caracteres alfabéticos. Cero o más caracteres numéricos. n caracteres numéricos.

'serie ' Texto exacto escrito entre comillas simples o dobles.

Capítulo 7. Programación BASIC

265

Comentarios
Puede especificar una coincidencia negativa añadiendo ~ (tilde) delante del código. Por ejemplo, ~ 4A coincide con una serie que no contiene cuatro caracteres alfabéticos. Si n tiene más de nueve dígitos, se utiliza como serie literal. Si la serie coincide con el patrón, la comparación devuelve 1; de lo contrario, devuelve 0. Puede especificar varios patrones separándolos con marcas de valor. Por ejemplo, la expresión siguiente es verdadera si la dirección tiene 16 caracteres alfabéticos o 4 caracteres numéricos seguidos de 12 caracteres alfabéticos; de lo contrario, es falsa:
address Matches "16A": CHAR(253): "4N12A"

Una serie vacía coincide con los patrones siguientes: "0A", "0X", "0N", "...", "", '' o \\.

Función Pwr
Eleva el valor de un número a la potencia especificada.

Sintaxis
Pwr (número, potencia)

número es una expresión que se evalúa en el número que se va a elevar a la potencia. Si el número es un valor nulo, se devuelve un nulo. potencia especifica la potencia a la que se eleva el número. Si la potencia es un valor nulo, se devuelve el valor nulo. Si la potencia no es un entero, número no puede ser negativo.

Comentarios
En el caso de un desbordamiento o subdesbordamiento, se imprime un aviso y se devuelve 0.

Ejemplo
Este es un ejemplo del uso de la función Pwr:
OppSide = Sqrt(Pwr(Side1, 2) + Pwr(Side2, 2))

Sentencia Randomize
Genera una secuencia repetible de números aleatorios en un rango especificado. No está disponible en las expresiones.

Sintaxis
Randomize (expresión)

expresión se evalúa como un número, n. El rango en el que se selecciona el número aleatorio es de 0 a (n -1). Por ejemplo, si n es 100, el número aleatorio está en el rango del 0 al 99. Si no se indica ninguna expresión o si la expresión es un valor nulo, se utiliza la hora del día interna y la secuencia es distinta cada vez que se ejecuta el programa.

266

Guía del desarrollador de Server Job

Comentarios
Utilice la función Rnd en lugar de Randomize si desea generar una secuencia de números aleatorios no repetible.

Ejemplo
Este es un ejemplo de cómo una rutina puede utilizar la sentencia Randomize para establecer la semilla inicial para que la función Rnd genere un conjunto específico de números aleatorios:
Randomize 1 For n = 1 To NumRecords * Produce series como "ID00", "ID01", "ID57", etc. RandomId = "ID" : Fmt(Rnd(100), "R%2") * ... realizar alguna acción con los ID generados. Next n

ReadSeq
Lee una línea de datos en un archivo abierto para el proceso secuencial. No está disponible en las expresiones.

Sintaxis
ReadSeq variable From variable.archivo[On Error sentencias] {[Then sentencias [Else sentencias ] | [Else sentencias ]}

ReadSeq variable lee los datos desde la posición actual en el archivo hasta una línea nueva y los asignan a variable. From variable.archivo identifica el archivo que se va a leer. variable.archivo debe haberse asignado en una sentencia OpenSeq anterior. Si variable.archivo es un valor nulo, o si el archivo no se encuentra o no está abierto, genera un error de tiempo de ejecución. On Error sentencias especifica las sentencias que se ejecutan si hay un error muy grave mientras se está procesando el archivo. Se produce un error muy grave si el archivo no se puede abrir o si variable.archivo es un valor nulo. Then sentencias especifica las sentencias que se ejecutan después de leer la línea del archivo. Else sentencias especifica las sentencias que se ejecutan si no se puede leer el archivo o si se encuentra el fin del archivo.

Comentarios
La sentencia OpenSeq establece un puntero a la primera línea del archivo. A continuación, ReadSeq: 1. Lee los datos desde la posición actual en el archivo hasta una línea nueva. a. Asigna los datos a una variable. b. Restablece el puntero a la posición que se encuentra a continuación de la línea nueva. c. Descarta la nueva línea. Si la conexión entre el cliente y el sistema donde reside la capa de motor excede el tiempo de espera, ReadSeq no devuelve ningún byte del almacenamiento intermedio y se debe volver a intentar la operación.
Capítulo 7. Programación BASIC

267

La función Status devuelve los valores siguientes tras una operación de ReadSeq: 0 1 2 -1 La lectura ha sido satisfactoria. Se ha encontrado un fin del archivo. Se ha excedido el tiempo de espera de la conexión. El archivo no estaba abierto.

Los demás valores son un número de error que indica que se ha utilizado la cláusula On Error. Si se produce un error muy grave y no se ha especificado la cláusula On Error: v Aparece un mensaje de error. v Se retrotrae alguna transacción no confirmada iniciada en el entorno de ejecución actual. v Termina el programa actual.

Ejemplo
El siguiente ejemplo muestra la ReadSeq que se utiliza para procesar cada línea de un archivo secuencial:
OpenSeq PathName To FileVar Else Call DSLogWarn("Cannot open ":PathName, MyRoutine) GoTo ErrorExit End Loop ReadSeq FileLine From FileVar On Error Call DSLogWarn("Error from ":PathName: →" status=":Status(), "MyRoutine") GoTo ErrorExit End THEN * ... se procesa la línea que acabamos de leer End Else Exit ;* al final del archivo End Repeat CloseSeq FileVar

Función REAL
Utilice la función REAL para convertir número en un número de coma flotante sin pérdida de precisión. Si número se evalúa como valor nulo, se devuelve el valor nulo.

Sintaxis
REAL (número)

Sentencia Return
Finaliza una subrutina y devuelve el control al programa o la sentencia de llamada. No está disponible en las expresiones.

Sintaxis
Return [To etiqueta.sentencia]

To etiqueta.sentencia se utiliza con una subrutina interna iniciada con GoSub para especificar que el control de programa vuelve a la etiqueta de sentencia especificada. Si no hay ninguna cláusula To, el control vuelve a la sentencia que hay después de la sentencia GoSub. Si la etiqueta.sentencia no existe, genera un error de compilador.

268

Guía del desarrollador de Server Job

MyFunctionB" Ans = MyFunctionB(Arg1) * Añada su propia transformación al valor en Ans. Sentencia Return (valor) Devuelve un valor de una función escrita por el usuario. Ejemplo Este ejemplo muestra el uso de la sentencia Return (valor). Sintaxis Right (serie.. debe declararla como una función con el * número correcto de argumentos y añadirle un prefijo "DSU. Deffun MyFunctionB(A) Calling "DSU.. Si serie es un valor nulo. se devuelve el valor nulo. Programación BASIC 269 . Ejemplos Estos ejemplos extraen los tres caracteres más a la derecha de una serie: MyString = "ABCDEF" MySubStr = Right(MyString. Si n es un valor nulo. excepto los archivos abiertos para variables comunes. todos los archivos abiertos por la subrutina se cierran. donde las sentencias Function y Deffun se utilizan para invocar una transformación denominada "MyFunctionB" desde otra función de transformación denominada "MyFunctionA": Function MyFunctionA(Arg1) * Cuando hace referencia a una función escrita por el usuario que se mantiene en el * repositorio de DataStage.* la respuesta es "AB" Capítulo 7. genera un error. Return(Ans) Función Right Extrae una subserie del final de una serie.". Si la emplea en un programa o una subrutina.* la respuesta es "DEF" MySubStr = Right("AB". 3) . genera un error de tiempo de ejecución. Comentarios Puede utilizar la sentencia Return (valor) únicamente en las funciones escritas por el usuario. No está disponible en las expresiones. n es el número de caracteres que se extraen del final de la serie. Si no especifica una expresión. Sintaxis Return (expresión) El valor de expresión se evalúa como el valor que desea que devuelva la función escrita por el usuario. .Comentarios Cuando una sentencia Return finaliza una subrutina externa llamada con una sentencia Call. n) serie es la serie que contiene la subserie.. se devuelve una serie vacía. 3) ..

el número aleatorio está en el rango del 0 al 99. si n es 100. Ejemplo Este ejemplo utiliza la función Seq para devolver el número asociado con el primer carácter de una serie: MyVal = Seq("A") ..el primer carácter es un espacio MyVal = Seq("12") . utilice la sentencia Randomize en lugar de Rnd. Si carácter es un valor nulo. Sintaxis Rnd (expresión) expresión se evalúa como un número. etc. establece un entorno local para una determinada categoría. Por ejemplo. Ejemplo Este es un ejemplo de cómo una rutina puede utilizar la sentencia Randomize para establecer la semilla inicial para que la función Rnd genere un conjunto específico de números aleatorios: Randomize 1 For n = 1 To NumRecords * Produce series como "ID00". Comentarios La función Seq es la inversa de la función Char. "ID01".Función Rnd Genera un número aleatorio. genera un error de tiempo de ejecución. se devuelve 0. n. se devuelve un nulo. Si la expresión es un valor nulo. Next n Función Seq Convierte un carácter ASCII en su valor de código numérico. "R%2") * . "ID57". No está disponible en las expresiones. Si la expresión es 0.* devuelve 32 . realizar alguna acción con los ID generados. 270 Guía del desarrollador de Server Job . Si la expresión es un número negativo.* devuelve 97 MyVal = Seq(" 12") .* devuelve 49 .. se genera un número negativo aleatorio. Comentarios Para generar secuencias repetibles de números aleatorios. RandomId = "ID" : Fmt(Rnd(100).* devuelve 65 MyVal = Seq("a") . Sintaxis Seq (carácter) carácter es el carácter ASCII que se va a convertir.el primer carácter es el dígito "1" SetLocale En la modalidad de soporte multilingüístico. El rango en el que se selecciona el número aleatorio es de 0 a (n -1).

LCE$NOLOCALES El soporte multilingüístico no está habilitado para IBM InfoSphere DataStage. que devuelve uno de los siguientes valores: Valor 0 Significado La llamada es satisfactoria. "JP-JAPANESE") If Status() <> 0 Then .INCLUDE UVNLSLOC. End Sentencia Sleep Detiene un programa el número de segundos especificado. Sintaxis Sleep [segundos] segundos es el número de segundos que se detiene. se utiliza el valor 1.CATEGORY No se reconoce la categoría especificada. Ejemplo * Switch local time convention to Japanese SetLocale (UVLC$TIME. Capítulo 7. LCE$BAD.Hnombre = SetLocale (categoría.Sintaxis $Include UNIVERSE. Programación BASIC 271 . No está disponible en las expresiones.. valor) El valor de categoría es una de las siguientes señales de inclusión: Señal Significado UVLC$TIME Hora y fecha UVLC$NUMERIC Numérico UVLC$MONETARY Moneda UVLC$CTYPE Tipo de carácter UVLC$COLLATE Secuencia de ordenación valor es un nombre de entorno local.. Si no se especifica segundos o es un valor nulo. LCE$BAD.LOCALE valor no es un nombre de entorno local válido. Comentarios El éxito de la función SetLocale debe probarse con la función Status.

genera un error de tiempo de ejecución.Comentarios No utilice la sentencia Sleep en una transformación. con un breve intervalo de espera entre los sondeos: If NumTimesWaited < RepeatCount Then NumTimesWaited += 1 Sleep 60 . ya que ralentizará la ejecución del trabajo de IBM InfoSphere DataStage. generan el mismo código fonético.* devuelve "G653" MySnd = Soundex("Green") .* devuelve "G650" MySnd = Soundex("") . Ejemplo Los siguientes ejemplos muestran los valores de Soundex para varias series: MySnd = Soundex("Greenwood") . se devuelve el valor nulo.* 60 segundos = 1 minuto End Función Soundex Genera códigos que pueden utilizarse para comparar series de caracteres basándose en cómo suenan. Sintaxis Space (espacios) espacios especifica el número de espacios de la serie. Ejemplo Este ejemplo muestra la rutina Sleep que se invoca desde una rutina anterior/posterior de InfoSphere DataStage para sondear la existencia de un recurso. Comentarios La función Soundex devuelve un código fonético formado por la primera letra de la serie seguida de un número. rayar y rallar.* devuelve "G653" MySnd = Soundex("Greenwod") .* devuelve "" Función Space Devuelve una serie que contiene el número especificado de espacios en blanco. Sólo se tienen en cuenta los caracteres alfabéticos de la serie. por ejemplo. Si serie es un valor nulo. Sintaxis Soundex (serie) serie es la serie que se va a analizar. Las palabras que suenan igual. Ejemplo Este es un ejemplo de la función Space que se utiliza para generar una serie con un número variable de espacios: 272 Guía del desarrollador de Server Job . Si espacios es un valor nulo.

Sintaxis Status ( ) Comentarios El valor devuelto por Status varía según la función que notifique. Sintaxis SQuote (serie) serie es la serie que se escribirá entre comillas.Len(Arg1)):Arg1 * se rellena con espacios a la izquierda Función Sqrt Devuelve la raíz cuadrada de un número. Un número negativo genera un error de tiempo de ejecución. Ejemplo Este es un ejemplo de la función SQuote que añade caracteres de comilla simple (') al principio y al final de una serie: ProductNo = 12345 QuotedStr = SQuote(ProductNo : "A") * el resultado es "12345A" Función Status Devuelve un código que proporciona información sobre cómo se ha ejecutado la función anterior. Programación BASIC 273 . se devuelve un valor nulo sin comillas. Si serie es un valor nulo. Sintaxis Sqrt (número) número es 0 o un número positivo. se devuelve un nulo.MyStr = Space(20 . Ejemplo Este es un ejemplo del uso de la función Sqrt: OppSide = Sqrt(Side1 ^ 2 + Side2 ^ 2) Función SQuote Delimita una serie mediante comillas simples. Puede utilizar Status después de las siguientes funciones: v Fmt v Iconv v Oconv v OpenSeq Capítulo 7. En las descripción de las funciones se incluye una lista de los valores posibles. Si el número es un valor nulo.

. Ejemplo Este es un ejemplo de la función Str que se utiliza para generar una serie con un número variable de espacios: MyStr = Str("A".. "D2") .IntNum no se puede convertir en un número Case FmtStatus = 2 * .. la conversión ha fallado . la conversión ha fallado ..v ReadSeq v WriteSeq v WriteSeqf Ejemplos A continuación.* formatear un número FmtStatus = Status() Begin Case Case FmtStatus = 0 * . si contiene la serie "31/02/97" End Case A continuación.. la conversión ha sido satisfactoria Case ConvStatus = 1 * .* convertir la fecha al formato interno ConvStatus = Status() Begin Case Case ConvStatus = 0 * .ExtDate no se puede analizar como fecha Case ConvStatus = 2 * . 20 . se proporciona un ejemplo de cómo se utiliza la función Status para comprobar la operación correcta de una llamada a la función Fmt: FormattedNum = Fmt(IntNum.. "R2$") . se devuelve una serie vacía. el formateo ha sido satisfactorio Case FmtStatus = 1 * .la conversión "D2" no es válida (poco probable) Case ConvStatus = 3 * . Si repetición es un número negativo.. Si serie es un valor nulo. se proporciona un ejemplo de cómo se utiliza la función Status para comprobar la operación correcta de una llamada a la función Iconv: InDate = Iconv(ExtDate. el formateo ha fallado . genera un error de tiempo de ejecución.el formato "R2$" no es válido (poco probable) End Case Función Str Forma una serie repitiendo la serie de entrada el número de veces especificado..Len(Arg1)):Arg1 * se rellena con varias "A" a la izquierda 274 Guía del desarrollador de Server Job ... repetición) serie es la serie que se repetirá... repetición es el número de veces que se repite la serie. pero puede que ExtDate no sea * válida. se devuelve el valor nulo. Si repetición es un valor nulo.. Sintaxis Str (serie. la conversión ha sido satisfactoria.. el formateo ha fallado . por ejemplo.

.argumento2 ]. ErrorCode = 0 . Aparecerá * en la variable denominada InputArg. * La rutina controla el progreso del trabajo estableciendo * el valor de ErrorCode.. Una subrutina utilizada en una transformación debe tener uno o varios argumentos.. Ejemplo Este ejemplo muestra cómo una rutina anterior/posterior debe declararse como una subrutina. Cada subrutina puede contener una sola sentencia Subroutine. . Sintaxis Time ( ) Comentarios La hora interna se obtiene del sistema en el que reside la capa de motor y se devuelve como el número de segundos transcurridos desde la medianoche hasta la milésima más próxima de un segundo. argumento1 y argumento2 son los nombres de las variables que se utilizan para pasar argumentos entre el programa de llamada y la subrutina. Comentarios La sentencia Subroutine debe ser la primera línea no comentada de la subrutina. una subrutina anterior o una subrutina posterior debe contener dos argumentos. que es un argumento de salida.* elimina las partes fraccionarias Capítulo 7. Ejemplo Este es un ejemplo de la hora del reloj del sistema actual que se asigna a una variable: TimeInSecs = Int(Time()) . No está disponible en las expresiones. Return Función Time Devuelve la hora interna del sistema. Sintaxis Subroutine [nombre] ( argumento1[ . ErrorCode) * Los usuarios pueden especificar el valor de serie que deseen cuando utilizan * MyRoutine desde el Diseñador de trabajos.. El cliente del Diseñador lo comprobará automáticamente cuando cree una nueva rutina anterior/posterior.Sentencia Subroutine Marca el inicio de una subrutina externa. Programación BASIC 275 .. La sentencia Call que invoca la subrutina debe especificar el mismo número de argumentos que la sentencia Subroutine.* respuesta predeterminada * Realice algún proceso. * Un valor distinto de cero detendrá la etapa o el trabajo.. ) nombre es un nombre que identifica la subrutina de forma que permite leer el programa más fácilmente. Subroutine MyRoutine(InputArg.

2. ACos.Función TimeDate Devuelve la hora y la fecha del sistema. 1) * extraer el resto como la fecha NowDateStr = Field(NowStr. ASin.* por ej. Sintaxis general TrigFunc (número) TrigFunc es una de las funciones trigonométricas: Cos. Si el número es un ángulo. 3) Funciones trigonométricas Las funciones trigonométricas devuelven el valor trigonométrico especificado por la función. " ". Todas tienen una sintaxis parecida. TanH o SinH. Sin. mmm es una abreviatura de tres letras para el mes. ss son los segundos. Si el número es un valor nulo. "09:59:51 03 JUN 1997" * extraer sólo la hora NowTimeStr = Field(NowStr. Tan. el resultado de esta función depende del valor de entorno local actual del convenio Time. y se devuelve 0. Los valores superiores a 1E17 generan un mensaje de aviso. 1. los valores fuera del rango del 0 al 360 se interpretan como el módulo 360. Ejemplo Este es un ejemplo de cómo un formato legible por las personas de la fecha y la hora del sistema actual puede asignarse a una variable y manipularse: NowStr = TimeDate() . CosH. se devuelve un valor nulo. " ". Sintaxis TimeDate ( ) Comentarios La hora y la fecha se devuelven con el siguiente formato: hh:mm:ss dd mmm aaaa hh son las horas (basadas en el reloj de 24 horas). mm son los minutos. 276 Guía del desarrollador de Server Job . Si el soporte multilingüístico está habilitado. dd es el día. ATan. número es el número o la expresión que desea evaluar. aaaa es el año.

TanH devuelve la tangente hiperbólica de un ángulo. ACos devuelve el arcocoseno de número en grados. Cos es el inverso de ACos. número es el número de grados del ángulo.* calcula la cosecante Este ejemplo utiliza la función SinH para calcular la cosecante hiperbólica de un ángulo: Angle = 45 .* calcula la secante Este ejemplo utiliza la función CosH para calcular la secante hiperbólica de un ángulo: Angle = 45 HSecant = 1 / Cosh(Angle) . ASin es el inverso de Sin. Tan devuelve la tangente de un ángulo. Programación BASIC 277 . número es el número de grados del ángulo. Sin es el inverso de ASin. Tan es el inverso de ATan. Ejemplos Este ejemplo muestra que la función ACos es la inversa de la función Cos: Angle = 45 NewAngle = Acos(Cos(Angle)) . ATan es el inverso de Tan.* NewAngle debe ser 45 también Este ejemplo muestra que la función ATan es la inversa de la función Tan: Angle = 45 NewAngle = Atan(Tan(Angle)) .* calcula la secante hiperbólica Este ejemplo utiliza la función Sin para calcular la cosecante de un ángulo: Angle = 45 CoSecant = 1 / Sin(Angle) . número es el número de grados del ángulo. Sin devuelve el seno de un ángulo.* NewAngle debe ser 45 también Este ejemplo utiliza la función Cos para calcular la secante de un ángulo: Angle = 45 Secant = 1 / Cos(Angle) .* define el ángulo en grados .* calcula la cotangente Capítulo 7. ATan devuelve la arcotangente de número en grados.* define el ángulo en grados HCoSecant = 1 / Sinh(Angle) * calcula la cosecante hiperbólica Este ejemplo utiliza la función Tan para calcular la cotangente de un ángulo: Angle = 45 CoTangent = 1 / Tan(Angle) .* NewAngle debe ser 45 también Este ejemplo muestra que la función ASin es la inversa de la función Sin: Angle = 45 NewAngle = Asin(Sin(Angle)) .* define el ángulo en grados .* define el ángulo en grados . ASin devuelve el arcoseno de número en grados. número es el número de grados del ángulo. número es el número de grados del ángulo. número es el número de grados del ángulo. ACos es el inverso de Cos.* define el ángulo en grados .Comentarios Cos devuelve el coseno de un ángulo. SinH devuelve el seno hiperbólico de un ángulo. CosH devuelve el coseno hiperbólico de un ángulo.

. carácter especifica el carácter que se va a recortar (que no sea un espacio o una tabulación). opción especifica el tipo de operación de recorte.dots.devuelve "Removealldots" MyStr = Trim("Remove.devuelve "Remove. Comentarios En la primera sintaxis. ". A Elimina todas las apariciones del carácter.dots" MyStr = Trim("Remove..". F Elimina las tabulaciones y los espacios en blanco iniciales.trailing.... B Elimina las apariciones iniciales y finales del carácter. "A") * .opción] ) serie es una serie que contiene caracteres no deseados.. T Elimina las apariciones finales del carácter.redundant..all...dots. Sintaxis Trim (serie) Trim (serie. D Elimina las tabulaciones y los espacios en blanco iniciales y finales y reduce los espacios y las tabulaciones a solo un espacio y una tabulación. y puede ser uno de los valores siguientes: L Elimina las apariciones iniciales del carácter."...redundant.. varias apariciones de espacios y tabulaciones se reducen a una individual.* define el ángulo en grados HCoTangent = 1 / Tanh(Angle) * calcula la cotangente hiperbólica Función Trim Recorta los caracteres no deseados de una serie.. ". se supone que es R. Ejemplos A continuación..". R Elimina las apariciones iniciales y finales del carácter y reduce las apariciones a una sola aparición.. y se elimina la totalidad de tabulaciones y espacios iniciales y finales...dots. carácter [ .dots" 278 Guía del desarrollador de Server Job .trailing..Remove.Este ejemplo utiliza la función TanH para calcular la cotangente hiperbólica de un ángulo: Angle = 45 ... Si no se especifica la opción o es un valor nulo...devuelve "String with whitespace" MyStr = Trim(". se muestran algunos ejemplos de varias formas de la función Trim: MyStr = Trim(" String with whitespace ") * . Si el carácter es un valor nulo.") * . genera un error de tiempo de ejecución.devuelve "Remove. "T") * ... se devuelve el valor nulo. ".. Si serie es un valor nulo. E Elimina las tabulaciones y los espacios en blanco finales."."..

se devuelve un nulo SQL. Comentarios Si expresión tiene un valor fuera del rango especificado.devuelve "String with whitespace" ") Función UniChar En la modalidad de soporte multilingüístico.. Función UniSeq En la modalidad de soporte multilingüístico.. en el rango de 0 a 65535. Programación BASIC 279 . Capítulo 7. Sintaxis UniSeq (expresión) expresión es un carácter Unicode que se va a convertir en su valor decimal. UniChar devuelve una serie vacía. genera un carácter individual en formato Unicode. Ejemplo MyStr = TrimB(" String with whitespace ") * . Sintaxis TrimB (serie) serie es la serie que contiene los espacios finales.. Ejemplo MyStr = TrimF(" String with whitespace * . convierte un carácter Unicode en su valor decimal equivalente. Si serie es un valor nulo. Sintaxis TrimF (serie) serie es la serie que contiene los espacios iniciales.devuelve "(" String with whitespace" Función TrimF Recorta las tabulaciones y los espacios iniciales de una serie. Si serie es un valor nulo.. se devuelve el valor nulo. Si expresión un nulo SQL. se devuelve el valor nulo.Función TrimB Recorta los espacios finales de una serie. Sintaxis UniChar (expresión) expresión es el valor decimal de un carácter Unicode.

archivo es el nombre de variable asignado al archivo por la sentencia OpenSeq anterior. Ejemplo Este es un ejemplo de la función UpCase: MixedCase = "ABC123abc" UpperCase = UpCase(MyString) . variable. On Error sentencias especifica la acción que se realiza si se produce un error muy grave.archivo es un valor nulo.archivo [On Error sentencias ] variable. Sintaxis WEOFSeq variable. el resultado de esta función depende del valor de entorno local actual del convenio Ctype."Routine1") GoTo ErrorExit End 280 Guía del desarrollador de Server Job . Si no especifica una cláusula On Error. Una sentencia ReadSeq posterior utilizará la cláusula Else. Se produce un error muy grave si el archivo no se abre o si variable. el trabajo termina anormalmente y se graba un error en el archivo de registro del trabajo. Ejemplo El siguiente ejemplo abre un archivo secuencial y lo trunca grabando inmediatamente una marca de fin del archivo: OpenSeq PathName To FileVar Then WeofSeq FileVar End Else Call DSLogFatal("Cannot open file ":Pathname.* el resultado es "ABC123ABC" Función WEOFSeq Graba una marca de fin del archivo en un archivo secuencial abierto. Si el soporte multilingüístico está habilitado.Comentarios Compárese con la función Seq. que convierte caracteres ASCII en sus equivalentes decimales. Comentarios La marca de fin del archivo trunca el archivo en la posición actual del puntero.archivo especifica el archivo secuencial. Sintaxis UpCase (serie) serie es la serie cuyas letras desea cambiar a mayúsculas. Función UpCase Cambia las letras minúsculas de una serie a mayúsculas.

Else sentencias especifica la acción que realiza el programa si la línea no se puede grabar en el archivo. Si no especifica una cláusula Else. debe especificar una cláusula Else.archivo [On Error sentencias] {[Then sentencias [Else sentencias ] | [Else sentencias ]} línea es la línea que se graba en el archivo secuencial. Si no especifica una cláusula Then. WriteSeq graba una línea nueva al final de la línea.archivo es el nombre de variable asignado al archivo por la sentencia OpenSeq anterior. variable. si el archivo no existe. Then sentencias especifica la acción que realiza el programa después de que se grabe una línea en el archivo. a menos que el puntero esté al final del archivo.Función WriteSeq Escribe una nueva línea en un archivo que está abierto para el proceso secuencial y avanza un puntero a la siguiente posición en el archivo. To variable. -2 si el archivo no estaba bloqueado y un código de error si se ha tomado la cláusula On Error. el puntero se avanza a la siguiente posición después de la línea nueva. Ejemplo El siguiente ejemplo graba una línea individual en un archivo secuencial truncándolo y grabando en él inmediatamente después de abrirlo: OpenSeq PathName To FileVar Then WeofSeq FileVar . "MyRoutine") GoTo ErrorExit End Call DSLogFatal("Cannot write to ":Pathname. Programación BASIC 281 . a continuación. Se produce un error muy grave si el archivo no se abre o si variable. On Error sentencias especifica la acción que se realiza si se produce un error muy grave. el trabajo termina anormalmente y se graba un mensaje de error en el archivo de registro del trabajo. Si no especifica una cláusula On Error.* write end-of-file mark immediately WriteSeq "First line" To FileVar Else On Error Call DSLogWarn("Error from ":PathName:" → status=":Status(). Los datos existentes en el archivo se sobrescriben. debe especificar una cláusula Then.archivo especifica el archivo secuencial. → "MyRoutine") GoTo ErrorExit End Capítulo 7. Status devuelve 0 si el archivo estaba bloqueado. Sintaxis WriteSeq línea To variable. Puede utilizar la función Status después de WriteSeq para determinar si la operación ha sido satisfactoria. Comentarios La línea se graba en la posición actual dentro del archivo y.archivo es un valor nulo. por ejemplo.

archivo es el nombre de variable asignado al archivo por la sentencia OpenSeq anterior. debe especificar una cláusula Else. On Error sentencias especifica la acción que se realiza si se produce un error muy grave. Ejemplo El siguiente ejemplo se añade a un archivo secuencial al leer hasta el final del mismo e imponer la grabación de una línea más: OpenSeq PathName To FileVar Then Loop ReadSeq Dummy From FileVar Else Exit . Si no especifica una cláusula On Error. -2 si el archivo no estaba bloqueado y un código de error si se ha tomado la cláusula On Error. Sintaxis WriteSeqF línea To variable. "MyRoutine") GoTo ErrorExit End Función WriteSeqF Escribe una nueva línea en un archivo que está abierto para el proceso secuencial. Then sentencias especifica la acción que realiza el programa después de que se grabe una línea en el archivo.* en el fin del archivo Repeat 282 Guía del desarrollador de Server Job . Si no especifica una cláusula Else. debe especificar una cláusula Then. Nota: Utilice la sentencia WriteSeqF sólo para registrar operaciones. el trabajo termina anormalmente y se graba un mensaje de error en el archivo de registro del trabajo. Si no especifica una cláusula Then. Se produce un error muy grave si el archivo no se abre o si variable. si el archivo no existe. To variable. variable. Else sentencias especifica la acción que realiza el programa si la línea no se puede grabar en el archivo. Comentarios WriteSeqF trabaja de la misma forma que WriteSeq. avanza un puntero a la siguiente posición en el archivo y guarda el archivo en un disco.archivo especifica el archivo secuencial. por ejemplo. WriteSeqF graba una línea nueva al final de la línea. excepto que cada línea se graba directamente en el disco. en lugar de guardarse en el almacenamiento intermedio y grabarse luego por lotes. ya que un aumento de la E/S de disco disminuye el rendimiento del programa. Una sentencia WriteSeqF después de varias sentencias WriteSeq graba todas las líneas del almacenamiento intermedio en el disco.archivo [On Error sentencias] {[Then sentencias [Else sentencias]] | [Else sentencias]} línea es la línea que se graba en el archivo secuencial. Status devuelve 0 si el archivo estaba bloqueado.End Else Call DSLogFatal("Cannot open file ":Pathname.archivo es un valor nulo. Puede utilizar la función Status después de WriteSeqF para determinar si la operación ha sido satisfactoria.

"MyRoutine") GoTo ErrorExit End Función Xtd Convierte una serie hexadecimal a decimal. "MyRoutine") GoTo ErrorExit End Call DSLogFatal("Cannot write to ":Pathname. Extracción de caracteres de los campos: G Extracción de valores de campo MCA Extracción de caracteres alfabéticos de un campo MC/A Extracción de caracteres no alfabéticos de un campo MCN Extracción de caracteres numéricos de un campo MC/N Extracción de caracteres no numéricos de un campo MCM Extracción de caracteres de varios bytes de soporte multilingüístico de un campo MC/M Extracción de caracteres de un solo byte de soporte multilingüístico de un campo P Extracción de datos que coinciden con un patrón R Extracción de un valor numérico que entra dentro de un rango Proceso previo de los datos: L Limitación de la longitud de los datos devueltos S Generación de códigos para comparar las palabras por su sonido Proceso de texto: MCU Conversión de letras minúsculas a mayúsculas MCL Conversión de letras mayúsculas a minúsculas MCT Conversión de las palabras del campo a mayúsculas iniciales MCP Conversión de caracteres no imprimibles en un punto NLS Conversión de series entre el formato interno y externo utilizando una correlación de juego de caracteres Capítulo 7. "MyRoutine") GoTo ErrorExit End End Else Call DSLogFatal("Cannot open file ":Pathname. Ejemplo Este es un ejemplo de la función Xtd que se utiliza para convertir un número decimal en una representación de serie hexadecimal: MyHex = "2F" MyNumber = Xtd(MyHex) . Se especifican en una función Iconv o Oconv. se proporciona una lista de los códigos que puede utilizar. Programación BASIC 283 . A continuación.WriteSeqF "Extra line" To FileVar Else On Error Call DSLogWarn("Error from ":PathName:" → status=":Status(). Sintaxis Xtd (serie) serie es la serie numérica que desea convertir.* devuelve 47 Códigos de conversión Los códigos de conversión especifican cómo se formatean los datos para la salida o el almacenamiento interno.

dos por byte. la fecha se convierte al formato 01 DEC 1999. 284 Guía del desarrollador de Server Job . omisión debe acompañar el uso de delimitador y es el número de campos delimitados que se omitirán para extraer la fecha. Cada opción de formato puede tener un modificador asociado que se describe más adelante. El valor predeterminado es 4. Los códigos de conversión aparecen en orden alfabético.dígitos] [delimitador omisión] [separador] [formato.Formateo de números.opciones [ modificadores ] ] [ E ] [ L ] años. el formato de fecha predeterminado del entorno local altera temporalmente el formato de fecha predeterminado establecido en el archivo msg. separador se ignora. En la entradaaños. separador es el carácter que se utiliza para separar el día. fechas.opciones está formado por hasta seis opciones que definen cómo se genera la fecha en la salida (se ignoran en la entrada). Las opciones de formato sólo pueden utilizarse en determinadas combinaciones. el mes y el año en la salida. el año se obtiene de la fecha del sistema. Si el soporte multilingüístico está habilitado y no especifica años. Sintaxis D [años.text.dígitos se ignora. En la entrada.dígitos indica el número de dígitos del año que aparecerán en la salida. delimitador es un carácter no numérico individual que se utiliza como delimitador de campo si la conversión primero debe realizar una extracción de grupo para obtener la fecha interna. Las opciones son las siguientes: v Y [ n ] genera el número de años en la salida como n dígitos. D Convierte fechas en formato de almacenamiento y viceversa. Si no especifica separador. tal como se describe a continuación. Cuando el soporte multilingüístico está habilitado. horas y monedas: MD Formateo de números como cantidades monetarias o numéricas ML Justificación a la izquierda y formateo de números MR Justificación a la derecha y formateo de números MP Empaquetamiento de números decimales. No puede ser el delimitador del sistema. formato. Si la fecha de entrada no tiene ningún año.dígitos ni separador. el formato de fecha predeterminado es 01 DEC 1999. para el almacenamiento D Conversión de fechas MT Conversión de horas TI Conversión de horas en formato interno al convenio local predeterminado NR Conversión de numerales romanos en numerales árabes NL Conversión de caracteres alternativos dependientes del entorno local en numerales árabes MM Formateo de datos de moneda Conversiones Radix: MX Conversión de números hexadecimales en decimales MCD Conversión de números decimales en hexadecimales MCX Conversión de números hexadecimales en decimales MO Conversión de números octales en decimales MB Conversión de números binarios en decimales MY Conversión de números hexadecimales en sus equivalentes ASCII MUOC Conversión de números hexadecimales en valores de caracteres Unicode Los códigos de conversión se describen más detalladamente en las siguientes páginas de referencia.

D 285 . v N genera el número de año de la era actual en la salida. M. Si el soporte multilingüístico está habilitado. [modificadores] M. utiliza los campos ERA NAMES o ERA STARTS del entorno local Hora/Fecha. MB. v W genera el día de la semana como un número del 1 al 7 en la salida. D. M. v Q genera el trimestre del año como un número del 1 al 4 en la salida. utiliza el campo YEARS del entorno local Hora/Fecha. Con estas opciones. de lo contrario. Si el soporte multilingüístico está habilitado. D.. YA. YA. A continuación. D Y. MA. v NA genera el nombre de la era correspondiente al año actual en la salida. M. utiliza el campo DAYS del entorno local Hora/Fecha. M. MA. S YA L MA MB D N N/D W WA WB Q J Z Y. v M genera sólo el mes como un número del 1 al 12 en la salida. D. [modificadores] Y. MB. Si el soporte multilingüístico está habilitado. WA.v YA genera sólo el nombre del año del calendario chino en la salida. se muestra qué opciones de formato pueden utilizarse juntas: Utilice esta opción. MA. salvo que lo modifiquen los modificadores de formato. el campo MONS. [modificadores] Y. [modificadores] [modificadores] Capítulo 7. D. M. D. Puede utilizar cualquier combinación de letras mayúsculas y minúsculas para el mes. f1.. utiliza el campo ABMONS del entorno local Hora/Fecha. [modificadores] Y. utiliza los tres primeros caracteres del nombre del mes. Si el soporte multilingüístico está habilitado. MA. MA. IBM InfoSphere DataStage coteja la combinación con el campo ABMONS. siendo domingo el día 1. v WB genera el nombre del día abreviado en la salida. Si el soporte multilingüístico está habilitado. Si el soporte multilingüístico está habilitado. Programación BASIC M. J. [modificadores] Y. MA. YA. v MA genera sólo el nombre del mes en la salida. [modificadores] Y. f2. YA. Sino. v J genera el día del año como un número del 1 al 366 en la salida. Si el soporte multilingüístico está habilitado. v MB genera el nombre del mes abreviado en la salida. D. siendo lunes el día 1. YA. MA. utiliza el campo ABDAYS del entorno local Hora/Fecha. [modificadores] Y. v WA genera el día por nombre en la salida. etc. utiliza el campo DAYS del entorno local Hora/Fecha.. [modificadores] Y. utiliza el campo MONS del entorno local Hora/Fecha.. M. Si el soporte multilingüístico está habilitado. YA. utiliza el campo ERA STARTS del entorno local Hora/Fecha. D. v Z genera el nombre del huso horario en la salida. D Y. v MR genera el número de mes en números romanos en la salida. v D genera el día del mes como un número del 1 al 31 en la salida. WA.

pero señala la anomalía asignando un valor 3 a la función Status.formato está asociado cada modificador. Se utiliza con las opciones Y. "D2") X = 10740 Iconv("05/27/97". M. y 09/31/93 se interpreta como 10/01/93. "D2/") X = 10740 X = Iconv("27/05/1997". separados por comas. Y. Por ejemplo. "D DMY[. WB. N y "text". MB. devuelve una fecha interna válida. Q y J. por lo tanto.]") X = 10740 X = Iconv("97 05 27". YA. aunque sólo desee especificar un modificador (vea los ejemplos). debe incluir todas las comas. Pueden ser los siguientes valores: v n muestra n caracteres. v A[n] muestra el mes como n caracteres alfabéticos. "DYMD[2. "D") X = 0 X = Iconv("27 MAY 97". Se utiliza con las opciones numéricas D. v L muestra los nombres de mes y día en minúsculas. Puede especificar hasta seis modificadores.2]") X = 10740 X = Iconv("27 MAY 1997". Ejemplos Los siguientes ejemplos muestran el efecto de varios códigos de conversión D con la función Iconv: Expresión de conversión Valor interno X = Iconv("31 DEC 1967". Se utiliza con las opciones de texto MA. W y N. Valor devuelto por la función Status Si especifica una fecha no válida en este código.2]") X = 10740 X = Iconv("5/27/97".2]") X = 10740 Los siguientes ejemplos muestran el efecto de varios códigos de conversión D con la función Oconv: Expresión de conversión Valor externo X = Oconv(0. Si la fecha de entrada es un valor nulo.Los [ modificadores ] modifican los formatos de salida de los datos especificados por opciones. "D/E") X = 10740 X = Iconv("1997 5 27". Funciona como n con las opciones numéricas.2. se asigna un valor 3 a Status y no se realiza ninguna conversión. "D DMY[. WA. "D/MDY[Z. v E conmuta los formatos de fecha día/mes/año y mes/día/año.formato.Z. "D YMD") X = 10740 X = Iconv("27 MAY 97". v Z[n] suprime los ceros iniciales y aparece como n dígitos. "D") X = "31 DEC 1967" 286 Guía del desarrollador de Server Job . M. W.A3. Las comas indican con qué opción. El valor predeterminado es en mayúsculas.A. 02/29/99 se interpreta como 03/01/99.

2.A. "DQ") X = "2" X = Oconv(10740. "DMA") X = "MAY" X = Oconv(10740. "D/E") X = "27/05/1997" X = Oconv(10740. @VM. "D-YJ") X = "1997-147" X = Oconv(10740.A3. "D2") X = "27 MAY 97" X = Oconv(10740. campos es el número de valores contiguos que se van a extraer. "D MY[A. @ SM y @TM como delimitadores. "D2/") X = "05/27/97" X = Oconv(10740. "DWA") X = "TUESDAY" G Extrae uno o varios valores delimitados de un campo. "D DMY[. se supone que es 0 y no se omite ningún campo. "D YMD") X = "1997 5 27" X = Oconv(10740.Z. "D/MDY[Z. si no se especifica. delimitador es un carácter no numérico que se utiliza como separador de campos. "D2*JY") X = "147*97" X = Oconv(10740. G Sintaxis G [ omisión ] campos de delimitador El valor de omisión indica el número de campos que se omitirán.2]") X = "MAY 97" X = Oconv(10740.]") X = "27 MAY 1997" X = Oconv(10740. @FM. Programación BASIC 287 . "DYMD[2. "DW") X = "2" X = Oconv(10740.X = Oconv(10740. "D DMY[.2]") X = "5/27/97" X = Oconv(10740. No debe utilizar las variables del sistema @IM.2]") X = "97 05 27" X = Oconv(10740.2]") X = "27 MAY 97" X = Oconv(10740. Capítulo 7.

05. o si n es 0.05" Los siguientes ejemplos muestran el efecto de algunos códigos de conversión G con la función Oconv: Expresión de conversión Valor externo X = Oconv("27. "L0") X = 10 X = Iconv("QWERTYUIOP". "G. Si contiene más de n caracteres. Sintaxis L [ n [ . Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión L con la función Iconv: Expresión de conversión Valor interno X = Iconv("QWERTYUIOP".2") X = "05.05.05.5") X = "QWER" Los siguientes ejemplos muestran el efecto de algunos códigos de conversión L con la función Oconv: 288 Guía del desarrollador de Server Job .2") X = "27.1997".2") X = "27. Si no especifica n. "G.m ] ] n por sí solo es el número máximo de caracteres que deben contener los datos para poder devolverse. "L3.1997".1997". de lo contrario.1997" X = Oconv("27. "G1. se devuelven. se devuelve la longitud de los datos. se devuelve una serie vacía.5") X = "" X = Iconv("QWER". Si los datos contiene los caracteres del n al m.05.Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión G con la función Iconv: Expresión de conversión Valor interno X = Iconv("27. "L7") X = "" X = Iconv("QWERTYU".1997" X = Iconv("27. "L3. "G1. "L7") X = "QWERTYU" X = Iconv("QWERTYUOP".05" L Extrae datos que cumplen unos criterios de longitud.2") X = "05. n. se devuelve una serie vacía.1997". m especifica un rango.

"MB0C") X = "CDE" Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MB con la función Oconv: Expresión de conversión Valor externo X = Oconv("1024". "MB0C") X = "010000110100010001000101" MCA Extrae todos los caracteres alfabéticos de un campo. Capítulo 7.5") X = "QWER" MB Convierte números binarios en decimales o en un valor ASCII para el almacenamiento. "L7") X = "QWERTYU" X = Oconv("QWERTYUOP". "L7") X = "" X = Oconv("QWERTYU". "MB") X = 1024 X = Iconv("010000110100010001000101".5") X = "" X = Oconv("QWER".Expresión de conversión Valor externo X = Oconv("QWERTYUIOP". o viceversa para la salida. "L3. Sintaxis MB [ 0C ] 0C convierte el número octal en su carácter ASCII equivalente en la entrada. Programación BASIC 289 . Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MB con la función Iconv: Expresión de conversión Valor interno X = Iconv("10000000000". "MB") X = "10000000000" X = Oconv("CDE". y viceversa en la salida. Comentarios Los caracteres distintos de 0 y 1 generan un error. "L3. "L0") X = 10 X = Oconv("QWERTYUIOP".

Sintaxis MC/A Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MC/A con la función Iconv: Expresión de conversión Valor interno X = Iconv("John Smith 1-234". "MCA") X = "JohnSmith" MC/A Extrae todos los caracteres no alfabéticos de un campo.Sintaxis MCA Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCA con la función Iconv: Expresión de conversión Valor interno X = Iconv("John Smith 1-234". "MC/A") X = " 1-234" MCD Convierte números decimales en hexadecimales. "MCA") X = "JohnSmith" El siguiente ejemplo muestra el efecto de un código de conversión MCA con la función Oconv: Expresión de conversión Valor externo X = Oconv("John Smith 1-234". Sintaxis MCD Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCD con la función Iconv: Expresión de conversión Valor interno 290 Guía del desarrollador de Server Job . "MC/A") X = " 1-234" El siguiente ejemplo muestra el efecto de un código de conversión MC/A con la función Oconv: Expresión de conversión Valor externo X = Oconv("John Smith 1-234".

"MCD") X = "4D2" MCL Convierte todas las letras mayúsculas a minúsculas. "MCL") X = "john smith 1-234" MCM Se utiliza si el soporte multilingüístico está habilitado. Extrae todos los caracteres de varios bytes de soporte multilingüístico del campo. el código devuelve el valor 2.Characters = ICONV(Input. Sintaxis MCL Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCL con la función Iconv: Expresión de conversión Valor interno X = Iconv("John Smith 1-234".String. Programación BASIC 291 . "MCL") X = "john smith 1-234" El siguiente ejemplo muestra el efecto de un código de conversión MCL con la función Oconv: Expresión de conversión Valor externo X = Oconv("John Smith 1-234". "MCD") X = "1234" El siguiente ejemplo muestra el efecto de un código de conversión MCD con la función Oconv: Expresión de conversión Valor externo X = Oconv("1234". Capítulo 7. "MCM") END Oconv se comporta de la misma forma que Iconv. que indica un código de conversión no válido.X = Iconv("4D2". Sintaxis MCM Ejemplo El siguiente ejemplo muestra el efecto de un código de conversión MCM con la función Iconv: IF SYSTEM(NL$ON) THEN Multibyte. Si la modalidad de soporte multilingüístico está inhabilitada.

Extrae todos los caracteres de un solo byte del campo.String. que indica un código de conversión no válido. el código devuelve el valor 2. "MCN") X = "1234" El siguiente ejemplo muestra el efecto de un código de conversión MCN con la función Oconv: Expresión de conversión Valor externo X = Oconv("John Smith 1-234".MC/M Se utiliza si el soporte multilingüístico está habilitado. "MC/M") END Oconv se comporta de la misma forma que Iconv. MC/M Sintaxis MC/M Ejemplo El siguiente ejemplo muestra el efecto de un código de conversión MC/M con la función Iconv: IF SYSTEM(NL$ON) THEN Singlebyte. Sintaxis MCN Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCN con la función Iconv: Expresión de conversión Valor interno X = Iconv("John Smith 1-234". Si la modalidad de soporte multilingüístico está inhabilitada. MCN Extrae todos los caracteres numéricos de un campo. Sintaxis MC/N Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MC/N con la función Iconv: 292 Guía del desarrollador de Server Job .Characters = ICONV(Input. "MCN") X = "1234" MC/N Extrae todos los caracteres no numéricos de un campo.

"MCT") X = "John Smith 1-234" El siguiente ejemplo muestra el efecto de un código de conversión MCT con la función Oconv: Capítulo 7.1-234" MCT Convierte las palabras de una serie en palabras con mayúsculas iniciales.Expresión de conversión Valor interno X = Iconv("John Smith 1-234". "MC/N") X = "John Smith -" MCP Convierte los caracteres no imprimibles en un punto. "MC/N") X = "John Smith -" El siguiente ejemplo muestra el efecto de un código de conversión MC/N con la función Oconv: Expresión de conversión Valor externo X = Oconv("John Smith 1-234". "MCP") X = "John. Sintaxis MCP Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCP con la función Iconv: Expresión de conversión Valor interno X = Iconv("John^CSmith^X1-234".Smith. Sintaxis MCT Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCT con la función Iconv: Expresión de conversión Valor interno X = Iconv("john SMITH 1-234". Programación BASIC 293 . "MCP") X = "John.1-234" El siguiente ejemplo muestra el efecto de un código de conversión MCP con la función Oconv: Expresión de conversión Valor externo X = Oconv("John^CSmith^X1-234".Smith.

Sintaxis MCU Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCU con la función Iconv: Expresión de conversión Valor interno X = Iconv("john smith 1-234". "MCX") X = "1234" 294 Guía del desarrollador de Server Job . "MCU") X = "JOHN SMITH 1-234" El siguiente ejemplo muestra el efecto de un código de conversión MCU con la función Oconv: Expresión de conversión Valor externo X = Oconv("john smith 1-234". "MCT") X = "John Smith 1-234" MCU Convierte todas las letras minúsculas a mayúsculas. "MCU") X = "JOHN SMITH 1-234" MCX Convierte números hexadecimales en decimales. Sintaxis MCX Ejemplos El siguiente ejemplo muestra el efecto de un código de conversión MCX con la función Iconv: Expresión de conversión Valor interno X = Iconv("1234". "MCX") X = "4D2" El siguiente ejemplo muestra el efecto de un código de conversión MCX con la función Oconv: Expresión de conversión Valor externo X = Oconv("4D2".Expresión de conversión Valor externo X = Oconv("john SMITH 1-234".

según sea necesario El valor de opciones puede ser cualquiera de los siguientes: v . -. o convierte números formateados al formato de almacenamiento interno. Para especificar otro carácter como delimitador de millares. a las cantidades positivas se añade un espacio en blanco como prefijo y como sufijo.MD Formatea los números como cantidades monetarias o numéricas. v C añade el sufijo CR a las cantidades negativas. Programación BASIC 295 .especifica un signo menos como sufijo para las cantidades negativas. x es el carácter que se utiliza como máscara de formateo. Si la conversión es numérica. Si el soporte multilingüístico está habilitado y la conversión es monetaria. Se utiliza el carácter de yen/yuan. especifica que se elimina. v fx añade una máscara de formateo en la salida y la elimina en la entrada. la salida no contiene ningún separador decimal. estos se mostrarían en la salida como 1. Si se incluyen las opciones $. Cuando se utiliza con Iconv. v $ antepone como prefijo un signo de moneda local al número.23. Las máscaras de formateo se describen en Expresión de formato. v I se utiliza con Oconv y especifica que se utiliza el símbolo monetario internacional correspondiente al entorno local. El valor de m especifica el factor de escala. el separador de millares y el separador decimal se obtienen del convenio MONETARY del entorno local. el separador decimal se desplaza m posiciones a la derecha antes del almacenamiento. v T truca los datos. v . Las opciones <. a las cantidades positivas se añade un sufijo de dos espacios en blanco. En la salida. I o Y. especifica una coma como delimitador de millares. estos se almacenarían como 12300. Si m no se especifica. Capítulo 7. se genera una serie vacía. v intl es una expresión que se utiliza para especificar un convenio para el formateo monetario o numérico. el separador decimal se desplaza m posiciones a la izquierda. f es un número del 1 al 99 que indica el número máximo de caracteres de máscara que se eliminan o se añaden. v $ antepone como prefijo un signo de franco al número. Por ejemplo. Si el soporte multilingüístico está habilitado. En la entrada. utilice la expresión del convenio. C y D definen números para uso monetario y alteran temporalmente los valores del convenio MONETARY. Los números se redondean o se rellenan con ceros. v P especifica que no se realiza ningún escalado si los datos de entrada ya contienen un separador decimal. v Y se utiliza con Oconv. Sintaxis MD n [ m ] [ opciones ] n es un número del 0 al 9 que indica el número de lugares decimales que se utilizan en la salida. a las cantidades positivas se añade un sufijo de dos espacios en blanco. v Z genera 0 como una serie vacía. v D añade el sufijo DB a las cantidades negativas. se supone que es igual que n. en lugar de redondearlos. Si no utiliza la opción fx y los datos contienen una máscara de formateo. la conversión es monetaria. Si n es 0. F. el signo se deriva del convenio MONETARY del entorno local. si m es 2 en una conversión de entrada y los datos de entrada son 123. se obtienen del convenio NUMERIC. a las cantidades positivas se añade un espacio en blanco como sufijo. Si m es 2 en una conversión de salida y los datos almacenados son 123. v < especifica que las cantidades negativas están delimitadas con corchetes para la salida.

millares. Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MD (decimal enmascarado) con la función Iconv: Expresión de conversión Valor interno X = Iconv("9876. delimítelos con comillas.$CPZ") X = 987654 X = Iconv("####9. comas o corchetes de cierre.54".D") X = 123456789 X = Iconv("9876.89". "MD2-Z") X = 987654 X = Iconv("$####1234. "MD0") X = 987654 X = Iconv("$1. "MD2.654 ". La expresión convention tiene la sintaxis siguiente: [ prefijo. delimítelos con comillas. escriba [.789". "MD33") X = 123456789 X = Iconv("12345678.ZP12#") X = 987654 296 Guía del desarrollador de Server Job . – millares especifica el delimitador de millares.89cr".234. "MD2. – sufijo especifica un sufijo para el número.sufijo ] Nota: Cada elemento de la expresión del convenio es opcional. "MD2C") X = -123456789 X = Iconv("1234567. – decimal especifica el delimitador de decimales.") X = 123456789 X = Iconv("123456. "MD2$.567. pero debe especificar los delimitadores y las comas en la posición correcta. comas o corchetes de cierre. "MD2") X = 987654 X = Iconv("987654". "MD2F") X = 123456789 X = Iconv("1234567. para especificar sólo millares.89 ".89". "MD3. ].876.54".9". Por ejemplo. "MD32") X = 1234567890 X = Iconv("F1234567. "MD2$12#") X = 123456 X = Iconv("$987.89 "..234.567. – prefijo especifica un prefijo para el número.56".millares.decimal.v convention es una expresión que se utiliza para especificar un convenio para el formateo monetario o numérico. Si prefijo contiene espacios. Si sufijo contiene espacios.54". "MD2D") X = 123456789 X = Iconv("1.

"MD2$12#") X = "$####1234.89" X = Oconv(123456789.89" X = Oconv(123.’SEK’]" X ="1.9" X = Oconv(123456789. "MD2.") X = "$1.234.567.77" X = Oconv(123456789. "MD3Z") X = ".89cr" X = Oconv(123456789. Programación BASIC 297 . "MD33") X = "123456.’]") X = #<1.234.89SEK" X = Oconv(-123456789.89>" X = Oconv(123456789. "MD2<[’#’.’]") X = "f1.’. "MD2$.’.89 " X = Oconv(123456789.Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MD (Decimal enmascarada) con la función Oconv: Expresión de conversión Valor externo X = Oconv(987654. "MD24$") X = "$98.56" X = Oconv(987654.89 " X = Oconv(1234567.89" X = Oconv(987654.123" X = Oconv(987654. "MD2") X = "9876.567. "MD2P") X = "1234567. "MD20T") X = "12345.654 " X = Oconv(987654. "MD2[’f’.567.234.D") X = "1. "MD2F") X = "F1234567.234. "MD2.89.’.’.876.54" Capítulo 7.567. "MD2. "MD0") X = "987654" X = Oconv(123456789.567.ZP12#") X = "####9.234.67" X = Oconv(123456. "MD2-Z") X = "9876. "MD2D") X = "1234567.’’.’.54" X = Oconv(987654.54" X = Oconv(12345.678.[’’. "MD32") X = "12345678. "MD2C") X = "1234567.789" X = Oconv(1234567890.89" X = Oconv(-123456789.’. "MD3.$CPZ") X = "$987.’’.

f es un código que especifica el carácter que se utiliza como máscara de formateo. a las cantidades positivas se añade un sufijo de dos espacios en blanco.ML & MR Justifica y formatea cantidades monetarias y numéricas. utilice la expresión del convenio. Los números se redondean o se rellenan con ceros. Las opciones <. Por ejemplo. v intl es una expresión que se utiliza para personalizar la salida conforme a distintos convenios internacionales. la conversión es monetaria. v D añade el sufijo DB a las cantidades negativas. v $ antepone como prefijo un signo de moneda local al número antes de la justificación. En la entrada. Si el soporte multilingüístico está habilitado. Si el soporte multilingüístico está habilitado y la conversión es monetaria. 298 Guía del desarrollador de Server Job . v C añade el sufijo CR a las cantidades negativas. si m es 2 en una conversión de entrada y los datos de entrada son 123. ML especifica la justificación a la izquierda. estos se mostrarían en la salida como 1. Para especificar otro carácter como delimitador de millares. v E especifica que las cantidades negativas están delimitadas con corchetes para la salida. v N suprime el signo menos en los números negativos. – * especifica una máscara de asteriscos. según sea necesario El valor de opciones puede ser cualquiera de los siguientes: v . El valor de m especifica el factor de escala. se obtienen del convenio NUMERIC. -. v ( fx ) añade una máscara de formateo en la salida y la elimina en la entrada. Si m es 2 en una conversión de salida y los datos almacenados son 123. C y D definen números para uso monetario y alteran temporalmente los valores del convenio MONETARY. Si n es 0. especifica una coma como delimitador de millares. – % especifica una máscara de ceros. Si se incluyen las opciones F o $. el separador de millares y el separador decimal se obtienen del convenio MONETARY del entorno local. v M especifica un signo menos como sufijo para las cantidades negativas. v $ antepone como prefijo un signo de franco al número. Si m no se especifica. el signo se deriva del convenio MONETARY del entorno local. Si la conversión es numérica. v Z genera 0 como una serie vacía. MR especifica la justificación a la derecha. y es uno de los siguientes: – # especifica una máscara de blancos. a las cantidades positivas se añade un espacio en blanco como prefijo y como sufijo. A las cantidades positivas se añade un espacio en blanco como sufijo. Para añadir otro símbolo monetario como prefijo. a las cantidades positivas se añade un sufijo de dos espacios en blanco. En la salida. x es un número del 1 al 99 que indica el número máximo de caracteres de máscara que se eliminan o se añaden. el separador decimal se desplaza m posiciones a la derecha antes del almacenamiento. utilice la expresión intl.23. se supone que es igual que n. estos se almacenarían como 12300. y permite los caracteres de varios bytes. el separador decimal se desplaza m posiciones a la izquierda. ML y MR Sintaxis ML | MR [ n [ m ] opciones [ ( fx ) ] n es un número del 0 al 9 que indica el número de lugares decimales que se utilizan en la salida. la salida no contiene ningún separador decimal.

sufijo ] Nota: Cada elemento de la expresión del convenio es opcional. "ML2$. Las series literales también pueden escribirse entre paréntesis. comas o corchetes de cierre.89db". Si millares contiene espacios. "ML2(*12)") X = 123456789 X = Iconv("**1234567.89>".9".234.89-". – prefijo especifica un prefijo para el número. "ML33") X = 123456789 X = Iconv("12345678. Por ejemplo. delimítelos con comillas.millares. comas o corchetes de cierre.89**". "ML2D") X = 123456789 X = Iconv("1234567. delimítelos con comillas. – decimal especifica el delimitador de decimales. Si sufijo contiene espacios. Programación BASIC 299 .. ]. "ML2M") X = -123456789 X = Iconv("<1234567.123". Si decimal contiene espacios. "ML2E") X = -123456789 X = Iconv("1234567. "ML2C") X = -123456789 X = Iconv("1234567. delimítelos con comillas.89cr".decimal. para especificar sólo millares.567. Si prefijo contiene espacios.") X = 123456789 X = Iconv(".789". comas o corchetes de cierre. comas o corchetes de cierre. pero debe especificar los delimitadores y las comas en la posición correcta.millares. delimítelos con comillas. Las máscaras de formateo se describen en Expresión de formato. escriba [. "ML32") X = 1234567890 X = Iconv("1234567.89". – sufijo especifica un sufijo para el número. – millares especifica el delimitador de millares. Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión ML y MR con el convenio Iconv: Expresión de conversión Valor interno X = Iconv("$1.La expresión intl tiene la sintaxis siguiente: [ prefijo. "ML3Z") X = 123 X = Iconv("123456. "MR2(*12)") X = 123456789 Los siguientes ejemplos muestran el efecto de algunos códigos de conversión ML y MR con la función Oconv: Expresión de conversión Valor externo Capítulo 7.89".

234.123" X = Oconv(123456789.789" X = Oconv(1234567890. la conversión utiliza los separadores decimales y de millares y el símbolo de moneda especificados en el convenio MONETARY del entorno local actual.89cr" X = Oconv(123456789. "ML2E") X = "<1234567.9" X = Oconv(-123456789. un punto como separador decimal y una coma como separador de millares. formatea los datos de moneda utilizando el convenio MONETARY actual. I formatea los datos utilizando el símbolo de moneda internacional de tres caracteres especificado en el convenio MONETARY del entorno local actual. I y L se ignoran para las conversiones de entrada mediante Iconv.X = Oconv(123456789. "ML2C") X = 1234567.") X = "$1. "ML2M") X = "1234567. "ML3Z") X = ". "ML2D") X = " "1234567.567.89" X = Oconv(123. "ML32") X = "12345678. Comentarios Si especifica MM sin ningún argumento. Si añade L. "ML33") X = "123456. 300 Guía del desarrollador de Server Job .89>" X = Oconv(123456789. los datos se formatean utilizando el separador de millares y el separador decimal con el convenio MONETARY del entorno local actual.89-" X = Oconv(-123456789.89db" X = Oconv(-123456789. "ML2(*12)") X = "1234567.89**" X = Oconv(123456789.89" MM En la modalidad de soporte multilingüístico. "ML2$. MM Sintaxis MM [ n ] [ I [ L ] ] n es el número de lugares decimales que se generan o se almacenan. "MR2(*12)") X = "**1234567.

Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión M0 con la función Iconv: Expresión de conversión Valor interno X = Iconv("2000". "MO0C") X = "103104105" MP Empaqueta dos números decimales por byte para el almacenamiento y los desempaqueta para la salida. Si hay un número de mitades empaquetadas impar. "MO0C") X = "CDE" Los siguientes ejemplos muestran el efecto de algunos códigos de conversión M0 con la función Oconv: Expresión de conversión Valor externo X = Oconv("1024".MO Convierte números octales en decimales o en un valor ASCII para el almacenamiento. la conversión falla. de 0 al 9. Programación BASIC 301 . se añaden cuatro bits iniciales 0. o viceversa para la salida. Sintaxis MO [ 0C ] 0C convierte el número octal en su carácter ASCII equivalente en la entrada. y los signos más y menos. Los signos . y viceversa en la salida. Esta conversión sólo acepta como entrada dígitos decimales. Los números decimales empaquetados deben desempaquetarse para la salida o no se podrán mostrar. Sintaxis MP Comentarios Los signos + iniciales se omiten.iniciales hacen que se almacene una D hexadecimal en la mitad inferior del último dígito interno. Capítulo 7. Comentarios Los caracteres fuera del rango 0-7 pueden generar un error. "MO") X = "2000" X = Oconv("CDE". de lo contrario. El rango de bytes de datos en el formato interno expresado en hexadecimal es de 00 a 99 y de 0D a 9D. "MO") X = 1024 X = Iconv("103104105".

En la entrada. S incluye los segundos en la hora de salida. "MTS") X = 10000 Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MT con la función Oconv: Expresión de conversión Valor interno 302 Guía del desarrollador de Server Job . y las opciones H y S se ignoran. los minutos y los segundos en la salida. "MTH") X = 9960 X = Iconv("02. 23:59. separador es un carácter no numérico que especifica el separador utilizado entre las horas. se supone que se utiliza un reloj de 24 horas. MT define el formato de salida externo de la hora. 12:00 AM es la medianoche y 12:00 PM es el mediodía. "MT") X = 9960 X = Iconv("02:46:40am". por ejemplo. omitiendo los segundos. Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MT con la función Iconv: Expresión de conversión Valor interno X = Iconv("02:46".46". utilice el sufijo AM. "MT. Comentarios En la salida. se supone que son 0. Si se especifica una hora superior a 12. Si la fecha de entrada no tiene minutos ni segundos. PM o P para indicar que la hora es anterior o posterior al mediodía. "MTHS") X = 10000 X = Iconv("02:46am". Para los formatos de 12 horas. H especifica un formato de salida de 12 horas con el sufijo AM o PM.") X = 9960 X = Iconv("02:46:40". MT Sintaxis MT [ H ] [ S ] [ separador] MT sin opciones especifica que la hora está en formato de 24 horas. MT especifica sólo que los datos son una hora. A. La hora se almacena como el número de segundos desde la medianoche. El valor de medianoche es 0.MT Convierte datos al y desde el formato de hora. con un separador de dos puntos entre horas y minutos.

"MT. utilizando Iconv. Un grupo formado por menos de cuatro dígitos se rellena con ceros a la izquierda. En la entrada.46". ’NLSISO8859-1’) YExt = Oconv(Y. Comentarios Los caracteres fuera de los rangos 0-9. Capítulo 7. Sintaxis MX [ 0C ] 0C convierte el número hexadecimal en su carácter ASCII equivalente en la entrada. "MTH") X = "02:46am" X = Oconv("02. ’MX0C’) Yint = OCONV(X. y viceversa en la salida. "MTS") X = "02:46:40" MUOC Devuelve el valor de almacenamiento interno de una serie como series hexadecimales de cuatro dígitos. la serie proporcionada se trata como grupos de cuatro dígitos hexadecimales y se devuelve el valor de almacenamiento interno. "MTHS") X = "02:46:40am" X = Oconv("02:46am". o viceversa para la salida.") X = "02. ’MU0C’) Las variables contienen: Xint (Internal form in hex bytes): C39EC3B0FE Yext (External form in hex bytes): DEF03F Yint (Internal form in UNICODE ): 00DE00F0F8FE MX Convierte números hexadecimales en decimales o en un valor ASCII para el almacenamiento.46" X = Oconv("02:46:40". Programación BASIC 303 . A-F o a-f generan un error. Sintaxis MUOC Comentarios En la salida.X = Oconv("02:46". utilizando Oconv. Ejemplo X = UniChar(222):UniChar(240):@FM XInt = Oconv(X. "MT") X = "02:46" X = Oconv("02:46:40am". la serie proporcionada se devuelve con cada carácter convertido en su valor de almacenamiento interno hexadecimal de cuatro dígitos. ’MX0C’) Y = Oconv(X.

"MX0C") X = "434445" MY Convierte caracteres ASCII en valores hexadecimales en la entrada. "MY") X = "ABCD" X = Oconv("30313233". "MY") X = 41424344 X = Iconv("0123". "MX") X = "400" X = Oconv("CDE". A-F o a-f generan un error. Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MY con la función Iconv: Expresión de conversión Valor interno X = Iconv("ABCD".Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MX con la función Iconv: Expresión de conversión Valor interno X = Iconv("400". Sintaxis MY Comentarios Los caracteres fuera de los rangos 0-9. y viceversa en la salida. "MY") X = 30313233 Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MY con la función Oconv: Expresión de conversión Valor externo X = Oconv("41424344". "MX0C") X = "CDE" Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MX con la función Oconv: Expresión de conversión Valor externo X = Oconv("1024". "MY") X = "0123" 304 Guía del desarrollador de Server Job . "MX") X = 1024 X = Iconv("434445".

el código de conversión NLS correlaciona una serie del juego de caracteres interno con el juego de caracteres externo especificado en nombrecorrelación.Number. Si nombrecorrelación está establecido en Unicode. la serie proporcionada se supone que está formada por caracteres Unicode de 2 bytes. En la entrada que se utiliza la función Iconv. Convertir a efectos de visualización: Internal. NR Convierte numerales árabes en numerales romanos en la salida.Number. Sintaxis NR Capítulo 7. convierte los números de un juego de caracteres locales en numerales árabes. convierte entre el juego de caracteres interno y el juego de caracteres externo. Comentarios En la salida que se utiliza la función Oconv. Sintaxis NL Ejemplo El siguiente ejemplo muestra el efecto del código de conversión NL con las funciones Oconv e Iconv. "NL") NLS En la modalidad de soporte multilingüístico. Programación BASIC 305 . y viceversa en la entrada.Number = OCONV(Internal. "NL") Convertir a efectos aritméticos: Internal.Number = 1275 External. y la correlaciona con el juego de caracteres interno. Si hay un número impar de bytes en la serie.NL En la modalidad de soporte multilingüístico. el código de conversión NLS supone que la serie proporcionada está en el juego de caracteres especificado por nombrecorrelación. Sintaxis NLS nombrecorrelación nombrecorrelación es el nombre de la correlación de juego de caracteres que se utiliza para la conversión. el último byte se sustituye por el carácter de sustitución de Unicode y el valor devuelto por la función Status se establece en 3.Number = ICONV(External.

. "NR") X = "mcmxcvii" X = Oconv(1997000. Sintaxis P (patrón) [ .Comentarios Estos son los valores equivalentes de los numerales romanos y árabes: Romano i v x l c d m V X L C D L Arábigo 1 5 10 50 100 500 1000 5000 10000 50000 100000 500000 1000000 Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión NR con la función Iconv: Expresión de conversión Valor interno X = Iconv("mcmxcvii".. "NR") X = 1997 X = Iconv("MCMXCVmm". "NR") X = "MCMXCVmm" P Extrae datos que coinciden con un patrón. "NR") X = 1997000 Los siguientes ejemplos muestran el efecto de algunos códigos de conversión NR con la función Oconv: Expresión de conversión Valor externo X = Oconv(1997. ] 306 Guía del desarrollador de Server Job . (patrón) .

separa una serie de patrones. Si n es 0. Si n es 0. "P(3N-3A-3X). Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión P con la función Iconv: Expresión de conversión Valor interno X = Iconv("123456789". Puede ser uno de los códigos siguientes: v nN coincide con n caracteres numéricos. se devuelve una serie vacía. se establece la coincidencia con cualquier número de caracteres numéricos. .(9N)") X = "123456789" X = Iconv("123-ABC-A7G". Programación BASIC 307 . v nA coincide con n caracteres alfabéticos. literal es una serie literal con la que deben coincidir los datos. se establece la coincidencia con cualquier número de caracteres alfabéticos. "P(3N-3A-3X).(9N)") X = "123-ABC-A7G" X = Oconv("ABC-123-A7G".(9N)") X = "123-ABC-A7G" X = Iconv("123-45-6789". Si n es 0. Comentarios Si los datos no coinciden con ninguno de los patrones. "P(3N-2N-4N)") X = "123-45-6789" Los siguientes ejemplos muestran el efecto de algunos códigos de conversión P con la función Oconv: Expresión de conversión Valor externo X = Oconv("123456789". "P(3N-3A-3X). "P(3N-3A-3X). "P(3N-3A-3X). se establece la coincidencia con cualquier número de caracteres alfanuméricos.(9N)") X = "" X = Oconv("123-45-6789". "P(3N-2N-4N)") X = "123-45-6789" X = Oconv("123-456-789". "P(3N-2N-4N)") X = "" Capítulo 7.patrón especifica el patrón con el que coinciden los datos y debe ir entre paréntesis.(9N)") X = "123456789" X = Oconv("123-ABC-A7G". "P(3N-2N-4N)") X = "" X = Oconv("123-45-678A". v nX coincide con n caracteres alfanuméricos.

separa varios rangos. generan el mismo código fonético. "R100.m .300. Expresión de conversión Valor interno X = Iconv("123". m especifica el límite superior del rango. n. Comentarios Si los datos no cumplen las especificaciones del rango. Ejemplos El siguiente ejemplo muestra el efecto del código de conversión R (Comprobación de rango) con la función Iconv.m [ . 308 Guía del desarrollador de Server Job . rayar y rallar.200.. .400") X = 3. Sintaxis Rn.R Recupera datos de un rango. "R100. ] n especifica el límite inferior del rango. Expresión de conversión Valor externo X = Oconv(123.1E2 S Genera códigos fonéticos que pueden utilizarse para comparar palabras basándose en cómo suenan.200") X = 123 El siguiente ejemplo muestra el efecto del código de conversión R (Comprobación de rango) con la función Oconv. se devuelve una serie vacía. por ejemplo. "R100.200") X = 123 X = Oconv(223..1E2. Sintaxis S Comentarios El código fonético está formado por la primera letra de la palabra seguida de un número. "R100.200") X = "" X = Oconv(3. Las palabras que suenan igual.

Time = TIME()International. Sintaxis TI Ejemplo El siguiente ejemplo muestra el efecto del código de conversión TI con la función Oconv: Internal. "S") X = "G650" X = Iconv("GREENWOOD".Time = OCONV(Internal. → "TI") Capítulo 7. "S") X = "G650 X = Iconv("greene". convierte las horas del formato interno al formato del convenio del entorno local predeterminado. "S") X = "G651" TI En la modalidad de soporte multilingüístico. Programación BASIC 309 . "S" X = "G653" X = Iconv("GREENBAUM".Ejemplos Los siguientes ejemplos muestran el efecto de algunos códigos de conversión S con la función Iconv: Expresión de conversión Valor interno X = Iconv("GREEN".Time.

310 Guía del desarrollador de Server Job .

Si el soporte multilingüístico está habilitado. De manera alternativa. El uso de IBM InfoSphere DataStage en un entorno de soporte multilingüístico tiene implicaciones para algunas de las transformaciones de datos y de tipo de datos. si procede. “Programación en IBM InfoSphere DataStage”. consulte Capítulo 6. en la página 149. Para ver una lista completa de las funciones BASIC soportadas. puede convertir los datos utilizando una de las transformaciones incorporadas que se proporcionan con InfoSphere DataStage.Capítulo 8. por ejemplo: LETTERS("123abc456") => "abc" DIGITS Serie Serie Built-in/String LETTERS Serie Serie Built-in/String © Copyright IBM Corp. 2011 311 . Transformaciones incorporadas Puede ver las definiciones de las transformaciones incorporadas utilizando el cliente del Diseñador. 1997. para asegurarse de que funcionan correctamente. Cuando edita una etapa Transformer. deberá comprobar las descripciones de las transformaciones en el cliente del Diseñador antes de utilizarlas. consulte Capítulo 7. puede convertir los datos utilizando sus propias transformaciones personalizadas. Transformaciones y rutinas incorporadas Estos temas describen las transformaciones y rutinas incorporadas suministradas con IBM InfoSphere DataStage. por ejemplo: CAPITALS("monday feb 14th") => "Monday Feb 14th" Devuelve una serie de la que se han eliminado todos los caracteres distintos a los dígitos del 0 al 9. consulte “Etapas Transformer” en la página 108. Transformaciones de serie Transformación CAPITALS Tipo de entrada Serie Tipo de salida Serie Carpeta Built-in/String Descripción El primer carácter de cada palabra del argumento se sustituye por el equivalente en mayúsculas. Toda secuencia de caracteres entre caracteres de espacio se toma como una palabra. Las transformaciones personalizadas permiten convertir los datos utilizando funciones o rutinas. en la página 135. Para obtener más información sobre la edición de una etapa Transformer. por ejemplo: DIGITS("123abc456") => "123456" Devuelve una serie de la que se han eliminado todos los caracteres excepto las letras. “Programación BASIC”. Para obtener detalles sobre cómo grabar una subrutina escrita por el usuario o una transformación personalizada.

Devuelve la serie de entrada con mayúsculas iniciales en cada palabra. Toma como argumentos una clave de búsqueda y una matriz. No reduce los espacios entre caracteres que no son espacios en blanco. En la primera llamada. por ejemplo: MONTH. La matriz contiene pares de nombre=valor. No reduce los espacios entre caracteres que no son espacios en blanco. la matriz se guarda.FIRST Tipo de entrada MONTH. Elimina los espacios iniciales de la entrada y devuelve una serie con la misma longitud que la entrada. en todas las llamadas se busca el nombre proporcionado en la matriz y se devuelve el valor correspondiente. 312 Guía del desarrollador de Server Job .TAG (AAAA-MM).Transformación StringDecode Tipo de entrada Véase la descripción Tipo de salida Serie Carpeta sdk/String Descripción Carga una matriz a efectos de búsqueda.TAG Tipo de salida Fecha Carpeta Built-in/Dates Descripción Devuelve una fecha interna numérica correspondiente al primer día de un mes con el formato MONTH. y devuelve una serie. StringIsSpace Serie Serie sdk/String StringLeftJust Serie Serie sdk/String StringRightJust Serie Serie sdk/String StringUpperFirst Serie Serie sdk/String Transformaciones de fecha Transformación MONTH. Elimina los espacios finales de la entrada y devuelve una serie con la misma longitud que la entrada.FIRST("1993-02") => 9164 donde 9164 es la representación interna del 1 de febrero de 1993. Devuelve 1 si la serie sólo consta de uno o más espacios.

LAST("1993Q2") => 9222 donde 9222 es la representación interna del 31 de marzo de 1993. por ejemplo: TIMESTAMP.TAG Fecha Built-in/Dates Devuelve una fecha interna numérica correspondiente al primer día de un trimestre con el formato QUARTER. QUARTER. QUARTER.DATE("199612-05 13:46:21") => "10567" TAG.DATE("1993-02-14") => 9177 Capítulo 8. por ejemplo: MONTH. TIMESTAMP. TO.LAST Tipo de entrada MONTH. por ejemplo: QUARTER.FIRST QUARTER.TAG Fecha Built-in/Dates Devuelve una fecha interna numérica correspondiente al último día de un trimestre con el formato QUARTER.DATE DATE. Transformaciones y rutinas incorporadas 313 .LAST("1993-02") => 9191 donde 9191 es la representación interna del 28 de febrero de 1993. por ejemplo: QUARTER.Transformación MONTH.DATE Indicación de fecha y hora Fecha Built-in/Dates Convierte el formato de indicación de fecha y hora (AAAA-MM-DD HH:MM:SS) en un formato de fecha interna.TAG (AAAAQn).TO.FIRST ("1993Q2") => 9133 donde 9133 es la representación interna del 1 de enero de 1993.TAG (AAAA-MM). por ejemplo: TAG.TO.TAG Tipo de salida Fecha Carpeta Built-in/Dates Descripción Devuelve una fecha interna numérica correspondiente al último día de un mes con el formato MONTH.TAG Fecha Built-in/Dates Convierte una serie con el formato AAAA-MM-DD en una fecha interna numérica.LAST QUARTER.TAG (AAAAQn).TO.

TAG (AAAA).LAST("1993W06") => 9177 donde 9177 es la representación interna del 14 de febrero de 1993.TAG Fecha Built-in/Dates Devuelve una fecha interna numérica correspondiente al primer día de un año con el formato YEAR.TAG Fecha Built-in/Dates Devuelve una fecha interna numérica correspondiente al último día (Domingo) de una semana con el formato WEEK.FIRST("1993W06") => 9171 donde 9171 es la representación interna del 8 de febrero de 1993. por ejemplo: YEAR.TAG (AAAAWnn).TAG (AAAAWnn).FIRST YEAR.TAG (AAAA).LAST("1993") => 9497 donde 9497 es la representación interna del 31 de diciembre de 1993. YEAR.Transformación WEEK. WEEK.LAST YEAR.LAST WEEK. YEAR.TAG Tipo de salida Fecha Carpeta Built-in/Dates Descripción Devuelve una fecha interna numérica correspondiente al primer día (Lunes) de una semana con el formato WEEK. por ejemplo: WEEK.FIRST Tipo de entrada WEEK. 314 Guía del desarrollador de Server Job . por ejemplo: WEEK.FIRST("1993") => 9133 donde 9133 es la representación interna del 1 de enero de 1993. por ejemplo: YEAR.TAG Fecha Built-in/Dates Devuelve una fecha interna numérica correspondiente al último día de un año con el formato YEAR.

TO.TO. por ejemplo: TAG.TAG(9177) => "1993-02" Capítulo 8.TAG(9177) => "1993W06" MONTH.TAG Built-in/Dates Convierte una serie con el formato DATE.WEEK DATE.TAG (AAAA-MM-DD).TAG Built-in/Dates Convierte una fecha con formato de fecha interna en una serie WEEK. Por ejemplo: TIMESTAMP.TAG Fecha WEEK.TIME("199612-05 13:46:21") => "49581" donde 49581 es la representación interna del 5 de diciembre de 1996.Transformación TIMESTAMP.TO.05 00:00:00" donde 10567 es la representación interna del 5 de diciembre de 1996. TIMESTAMP Fecha Indicación de fecha y Built-in/Dates hora Convierte el formato de fecha interna en el formato TIME-STAMP (AAAA-MM-DD HH:MM:SS).TAG (AAAAWnn). por ejemplo: DATE.TAG(9177) => "1993-02-14" TAG.TIME Tipo de entrada Indicación de fecha y hora Tipo de salida Hora Carpeta Built-in/Dates Descripción Convierte el formato de TIMESTAMP (AAAA-MM-DD HH:MM:SS) en un formato de hora interna. y 21 segundos. Transformaciones y rutinas incorporadas 315 .WEEK("1993-02-14") => "1993W06" WEEK.TAG WEEK. TO.TAG (AAAA-MM). por ejemplo: WEEK.m.TAG Built-in/Dates Convierte una fecha interna numérica en una serie con el formato MONTH.TAG Built-in/Dates Convierte una fecha interna numérica en una serie con el formato DATE.TAG (AAAAWnn). 1:46 p. Por ejemplo: TIMESTAMP("10567") => "1996-12.TAG Fecha MONTH. DATE. por ejemplo: MONTH.TAG Fecha DATE.TAG (AAAA-MM-DD) al formato WEEK.

QUARTER("1993-0214") => "1993Q2" MONTH.TAG YEAR. por ejemplo: YEAR. TAG Tipo de salida MONTH.TAG (AAAA-MM-DD) al formato MONTH.TAG(9177) => "1993Q2" TAG. QUARTER DATE.TAG (AAAA-MM-DD) al formato YEAR.TAG Built-in/Dates Convierte una serie con el formato DATE.MONTH("1993-02014") => "1993-02" QUARTER.QUARTER("199302") => "1993Q1" YEAR.MONTH Tipo de entrada DATE.TAG (AAAA-MM).TO.YEAR MONTH.TAG Built-in/Dates Convierte una fecha con formato de fecha interna al formato YEAR.YEAR DATE.TO. por ejemplo: TAG.TAG (AAAA).TAG (AAAAQn).TAG (AAAA). por ejemplo: QUARTER.TO.TAG (AAAAQn).TO.TAG QUARTER.TAG (AAAA).YEAR("1993-02-14") => "1993" MONTH.TAG Carpeta Built-in/Dates Descripción Convierte una serie con el formato DATE.TAG (AAAA-MM-DD) al formato QUARTER.TO.Transformación TAG.TO.YEAR("1993-02") => "1993" 316 Guía del desarrollador de Server Job .TAG YEAR. por ejemplo: MONTH.TAG Fecha QUARTER.TAG QUARTER.TO. por ejemplo: TAG.TAG Built-in/Dates Convierte una fecha interna numérica en una serie con el formato QUARTER.TO.TAG (AAAAQn).TO. QUARTER MONTH.TAG(9177) => "1993" TAG.TAG Built-in/Dates Convierte una serie con el formato MONTH. por ejemplo: MONTH.TAG Built-in/Dates Convierte una serie con el formato MONTH.TAG Built-in/Dates Convierte una serie con el formato DATE.TO.TAG (AAAA-MM) al formato QUARTER. por ejemplo: TAG.TAG Fecha YEAR.TAG (AAAA-MM) al formato YEAR.

99) v Fechas de mes alfa (por ejemplo. 1999126) DateGenericGetDay Serie Serie sdk/date/ generic Devuelve el valor Día de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve la hora de Internet o Swatch actual.SSS. Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. 4/19/99.19.19.TO. Abr 08 99) v Fechas no delimitadas con formato Año Mes Día (por ejemplo.Transformación QUARTER. Devuelve la fecha/hora actual en GMT con el formato AAAA-MM-DD HH:MM:SS.SSS. DateGeneric GetMonth Serie Serie sdk/date/ generic DateGenericGetTime Serie Serie sdk/date/ generic DateGeneric GetTimeHour Serie Serie sdk/date/ generic DateGenericGetTime Serie Minute Serie sdk/date/ generic Capítulo 8. 4/19/1999.TAG Tipo de salida YEAR. Devuelve el valor Minutos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.TO. 4.YEAR("1993Q2") => "1993" DateCurrent DateTime - Serie sdk/date Devuelve la fecha/hora actual con el formato AAAA-MM-DD HH:MM:SS. YEAR Tipo de entrada QUARTER. Devuelve el valor Mes de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Abr 08 1999.TAG Carpeta Built-in/Dates Descripción Convierte una serie con el formato QUARTER.1999. 4. Convierte los días desde 1970 al formato AAAAMMDD HH:MM:SS:SSS. por ejemplo: QUARTER. Convierte los días desde 1900 al formato AAAAMMDD HH:MM:SS:SSS.TAG (AAAAQn) al formato YEAR. 19990419. 990419) v Fechas del calendario juliano (por ejemplo. Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.TAG (AAAA). DateCurrent GMTTime - Serie sdk/date DateCurrent SwatchTime DateDaysSince 1900To TimeStamp DateDaysSince 1970To TimeStamp - Número Serie sdk/date sdk/date - Serie sdk/date Las siguientes transformaciones aceptan series de fecha de entrada con uno de los formatos siguientes: v Una fecha delimitada cualquiera que especifique Día Mes Año (por ejemplo. 99126. Transformaciones y rutinas incorporadas 317 .

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC con HH:MM:SS. Devuelve el valor Año de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI.SSS al final. Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage con HH:MM:SS. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client con HH:MM:SS.SSS al final. DateGenericGetTime Serie Second DateGenericGetYear Serie Serie sdk/date/ generic DateGeneric ToInfCLI Serie Serie sdk/date/ generic DateGeneric ToInfCLIWithTime Serie Serie sdk/date/ generic DateGeneric ToInternal DateGeneric ToInternalWithTime Serie Fecha sdk/date/ generic sdk/date/ generic Serie Fecha DateGeneric ToODBC Serie Serie sdk/date/ generic DateGeneric ToODBCWithTime Serie Serie sdk/date/ generic DateGeneric ToOraOCI Serie Serie sdk/date/ generic DateGeneric ToOraOCIWithTime Serie Serie sdk/date/ generic DateGeneric ToSybaseOC Serie Serie sdk/date/ generic DateGeneric ToSybaseOC WithTime Serie Serie sdk/date/ generic 318 Guía del desarrollador de Server Job . Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client. Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI con HH:MM:SS:SSS al final.SSS al final.Transformación Tipo de entrada Tipo de salida Serie Carpeta sdk/date/ generic Descripción Devuelve el valor Segundos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC. Devuelve la fecha de entrada con un formato interno de IBM InfoSphere DataStage. Devuelve una fecha de entrada adecuada para la carga utilizando Informix CLI. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI con HH:MM:SS al final.

DateYearFirst GetDay Serie Serie sdk/date/ YearFirst Devuelve el valor Día de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Compara la fecha de entrada con 1969-12-31 a las 12 de la noche y devuelve el número de días de diferencia. HH:MM:SS o HH:MM. Las series también pueden contener una entrada de hora con el formato HH:MM:SS:SSS. Devuelve el valor Mes de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. devuelve 0. Transformaciones y rutinas incorporadas 319 . Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Serie. Compara la fecha de entrada con 1899-12-31 a las 12 de la noche y devuelve el número de días de diferencia. Compara la fecha de entrada con hoy a las 12 de la noche y devuelve el número de días de diferencia. de lo contrario. Devuelve el valor Segundos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. DateYearFirst GetMonth Serie Serie sdk/date/ YearFirst DateYearFirst GetTime Serie Serie sdk/date/ YearFirst DateYearFirst GetTimeHour Serie Serie sdk/date/ YearFirst DateYearFirst GetTimeMinute Serie Serie sdk/date/ YearFirst DateYearFirst GetTimeSecond Serie Serie sdk/date/ YearFirst DateYearFirst GetYear Serie Serie sdk/date/ YearFirst Capítulo 8. Compara dos fechas y devuelve el número de días de diferencia. Devuelve 1 si la entrada es una fecha válida. Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Año de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.Transformación DataGeneric ToTimeStamp DateGeneric DateDiff DateGeneric DaysSince1900 Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/date/ generic sdk/date/ generic sdk/date/ generic Descripción Devuelve la fecha de entrada con un formato AAAAMMDD HH:MM:SS:SSS. Serie Serie Serie Serie DateGeneric DaysSince1970 Serie Serie sdk/date/ generic DateGeneric DaysSinceToday Serie Serie sdk/date/ generic DateGenericIsDate Serie Serie sdk/date/ generic Las siguientes transformaciones aceptan series de fecha de entrada delimitada con el formato [AA]AA MM DD utilizando un delimitador cualquiera. Devuelve el valor Minutos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC.SSS al final. Compara dos fechas y devuelve el número de días de diferencia.SSS al final. Serie Serie DateYearFirst DaysSince1900 Serie Serie 320 Guía del desarrollador de Server Job . Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client con HH:MM:SS.SSS al final. DateYearFirst ToInfCLIWithTime Serie Serie sdk/date/ YearFirst DateYearFirst ToInternal DateYearFirst ToInternalWithTime Serie Fecha sdk/date/ YearFirst sdk/date/ YearFirst Serie Fecha DateYearFirst ToODBC Serie Serie sdk/date/ YearFirst DateYearFirst ToODBCWithTime Serie Serie sdk/date/ YearFirst DateYearFirst ToOraOCI Serie Serie sdk/date/ YearFirst DateYearFirst ToOraOCIWithTime Serie Serie sdk/date/ YearFirst DateYearFirst ToSybaseOC Serie Serie sdk/date/ YearFirst DateYearFirst ToSybaseOC WithTime Serie Serie sdk/date/ YearFirst DataYearFirst ToTimeStamp DateYearFirstDiff Serie Serie sdk/date/ YearFirst sdk/date/ YearFirst sdk/date/ YearFirst Serie. Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage. Compara la fecha de entrada con 1899-12-31 a las 12 de la noche y devuelve el número de días de diferencia. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI con HH:MM:SS al final. Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI con HH:MM:SS. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC con HH:MM:SS.SSS al final. Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage con HH:MM:SS.Transformación DateYearFirst ToInfCLI Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/date/ YearFirst Descripción Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI.SS:SSS. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI. Devuelve la fecha de entrada con un formato AAAAMMDD HH:MM.

Convierte ASCII PIC 9(n) con un supuesto lugar decimal en un número con un lugar decimal real. Convierte ASCII PIC 9(n) con dos supuestos lugares decimales en un número con dos lugares decimales reales. devuelve 0. Devuelve 1 si la entrada es una fecha válida.Transformación DateYearFirst DaysSince1970 Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/date/ YearFirst Descripción Compara la fecha de entrada con 1969-12-31 a las 12 de la noche y devuelve el número de días de diferencia. Convierte una serie ASCII en EBCDIC. Convierte EBCDIC PIC 9(n) en un entero. Convierte ASCII PIC 9(n) con tres supuestos lugares decimales en un número con tres lugares decimales reales. DateYearFirst DaysSinceToday Serie Serie sdk/date/ YearFirst DateYearFirstIsDate Serie Serie sdk/date/ YearFirst Transformaciones de tipo de datos Transformación DataTypeAsciiPic9 DataTypeAsciiPic9V9 Tipo de entrada Serie Serie Tipo de salida Número Número Carpeta sdk/Data Type sdk/Data Type Descripción Convierte ASCII PIC 9(n) en un entero. Convierte ASCII PIC 9(n) con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales. de lo contrario. Compara la fecha de entrada con hoy a las 12 de la noche y devuelve el número de días de diferencia. Convierte EBCDIC PIC 9(n) con un supuesto lugar decimal en un número con un lugar decimal real. DataTypeAscii Pic9V99 Serie Número sdk/Data Type DataTypeAscii Pic9V999 Serie Número sdk/Data Type DataTypeAscii Pic9V9999 Serie Número sdk/Data Type DataTypeAscii toEbcdic DataTypeEbcdicPic9 DataTypeEbcdic Pic9V9 Serie Serie Serie Serie Número Número sdk/Data Type sdk/Data Type sdk/Data Type Capítulo 8. Transformaciones y rutinas incorporadas 321 .

Transformación DataTypeEbcdic Pic9V99 Tipo de entrada Serie Tipo de salida Número Carpeta sdk/Data Type Descripción Convierte EBCDIC PIC 9(n) con dos supuestos lugares decimales en un número con dos lugares decimales reales. Convierte ASCII o EBCDIC PIC 9(n) con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales. Convierte ASCII o EBCDIC PIC 9(n) con un supuesto lugar decimal en un número con un lugar decimal real. Convierte una serie EBCDIC en ASCII. Convierte EBCDIC PIC 9(n) con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales. Convierte EBCDIC PIC 9(n) con tres supuestos lugares decimales en un número con tres lugares decimales reales. Convierte ASCII o EBCDIC PIC 9(n) con tres supuestos lugares decimales en un número con tres lugares decimales reales. Convierte COBOL PIC COMP en un entero. DataTypeEbcdic Pic9V999 Serie Número sdk/Data Type DataTypeEbcdic Pic9V9999 Serie Número sdk/Data Type DataTypeEbcdic toAscii DataTypePic9 Serie Serie Serie Número sdk/Data Type sdk/Data Type DataTypePic9V9 Serie Número sdk/Data Type DataTypePic9V99 Serie Número sdk/Data Type DataTypePic9V999 Serie Número sdk/Data Type DataTypePic9 V9999 Serie Número sdk/Data Type DataTypePicComp Serie Número sdk/Data Type 322 Guía del desarrollador de Server Job . Convierte ASCII o EBCDIC PIC 9(n) en un entero. Convierte ASCII o EBCDIC PIC 9(n) con dos supuestos lugares decimales en un número con dos lugares decimales reales.

Convierte un decimal empaquetado sin signo COBOL PIC COMP-3 en un entero. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con dos supuestos lugares decimales en un número con dos lugares decimales reales. DataTypePicComp2 Serie Número sdk/Data Type DataTypePicComp3 Serie Número sdk/Data Type DataTypePicComp3 Sin signo Serie Número sdk/Data Type DataTypePicComp3 UnsignedFast Serie Número sdk/Data Type DataTypePicComp3 V9 Serie Número sdk/Data Type DataTypePicComp3 V99 Serie Número sdk/Data Type DataTypePicComp3 V999 Serie Número sdk/Data Type DataTypePicComp3 V9999 Serie Número sdk/Data Type Capítulo 8. Convierte un decimal empaquetado sin signo COBOL PIC COMP-3 en un entero. Transformaciones y rutinas incorporadas 323 .Transformación DataTypePicComp1 Tipo de entrada Serie Tipo de salida Número Carpeta sdk/Data Type Descripción Convierte COBOL PIC COMP-1 en un número real. Convierte COBOL PIC COMP-2 en un número real. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 en un entero. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con tres supuestos lugares decimales en un número con tres lugares decimales reales. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con un supuesto lugar decimal en un número con un lugar decimal real. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales.

MeasureAreaSqFeetToSqMeters Serie Serie MeasureAreaSqFeetToSqMiles Serie Serie MeasureAreaSqFeetToSqYards Serie Serie 324 Guía del desarrollador de Server Job . una tabla. Serie. Convierte pies cuadrados en pulgadas cuadradas. Genera números secuenciales en un entorno simultáneo. Convierte un tipo de datos COBOL PIC S9(n) decimal derecho dividido en zonas en formato ASCII o EBCDIC en un entero. Genera números secuenciales. Convierte pies cuadrados en acres. Convierte pies cuadrados en yardas cuadradas. Serie Número sdk/Data Type Transformaciones de gestión de claves Transformación KeyMgtGetMaxKey Tipo de entrada Serie. Convierte pies cuadrados en metros cuadrados. Serie. Convierte pies cuadrados en millas cuadradas. Devuelve el valor máximo de la columna especificada.Transformación DataTypePicComp Sin signo DataTypePicS9 Tipo de entrada Serie Tipo de salida Número Carpeta sdk/Data Type Descripción Convierte un binario sin signo en un entero. Se utiliza normalmente para la gestión de claves. una etapa ODBC y un número del 1 al 99 como descriptor de contexto exclusivo (en el trabajo). KeyMgtGetNextValue KeyMgtGetNextValue Concurrent Serie literal Serie literal Serie Serie sdk/KeyMgt sdk/KeyMgt Transformaciones de medidas: área Transformación MeasureAreaAcresToSqFeet MeasureAreaAcresToSqMeters MeasureAreaSqFeetToAcres MeasureAreaSqFeetToSqInches Tipo de entrada Serie Serie Serie Serie Tipo de salida Serie Serie Serie Serie Carpeta sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area Descripción Convierte acres en pies cuadrados. Convierte acres en metros cuadrados. Serie Tipo de salida Serie Carpeta sdk/KeyMgt Descripción Utiliza una columna.

Convierte millas cuadradas en metros cuadrados. Convierte pulgadas en pies. Convierte metros cuadrados en yardas cuadradas. Capítulo 8. Convierte metros cuadrados en acres. Convierte metros cuadrados en pies cuadrados. Transformaciones y rutinas incorporadas 325 .Transformación MeasureAreaSqInchesToSqFeet Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area Descripción Convierte pulgadas cuadradas en pies cuadrados. Convierte metros cuadrados en pulgadas cuadradas. Convierte yardas cuadradas en pies cuadrados. Convierte pies en metros. Convierte pies en yardas. Convierte metros cuadrados en millas cuadradas. Convierte pulgadas cuadradas en metros cuadrados. Convierte pies en millas. Convierte pulgadas en metros. MeasureAreaSqInchesToSqMeters Serie Serie MeasureAreaSqMeterToAcres MeasureAreaSqMetersToSqFeet Serie Serie Serie Serie MeasureAreaSqMetersToSqInches Serie Serie MeasureAreaSqMetersToSqMiles Serie Serie MeasureAreaSqMetersToSqYards Serie Serie MeasureAreaSqMilesToSqFeet Serie Serie MeasureAreaSqMilesToSqMeters Serie Serie MeasureAreaSqYardsToSqFeet Serie Serie MeasureAreaSqYardsToSqMeters Serie Serie Transformaciones de medidas: distancia Transformación MeasureDistance FeetToInches MeasureDistance FeetToMeters MeasureDistance FeetToMiles MeasureDistance FeetToYards MeasureDistance InchesToFeet MeasureDistance InchesToMeters MeasureDistance InchesToMiles Tipo de entrada Serie Serie Serie Serie Serie Serie Serie Tipo de salida Serie Serie Serie Serie Serie Serie Serie Carpeta sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance Descripción Convierte pies en pulgadas. Convierte pulgadas en millas. Convierte millas cuadradas en pies cuadrados. Convierte yardas cuadradas en metros cuadrados.

Convierte yardas en pulgadas. 326 Guía del desarrollador de Server Job . Convierte yardas en millas. Convierte millas en pies. Transformaciones de medidas: temperatura Transformación MeasureTemp CelsiusToFahrenheit MeasureTemp FahrenheitToCelsius Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/Measure/ Temp sdk/Measure/ Temp Descripción Convierte grados centígrados en grados fahrenheit. Convierte grados fahrenheit en grados centígrados. Convierte millas en pulgadas. Convierte millas en yardas. Convierte metros en millas. Serie Serie Transformaciones de medidas: tiempo Transformación MeasureTime DaysToSeconds MeasureTime HoursToSeconds Tipo de entrada Serie Serie Tipo de salida Serie Serie Carpeta sdk/Measure/Time sdk/Measure/Time Descripción Convierte días en segundos. Convierte yardas en metros. Convierte metros en pulgadas.Transformación MeasureDistance InchesToYards MeasureDistance MetersToFeet MeasureDistance MetersToInches MeasureDistance MetersToMile MeasureDistance MetersToYard MeasureDistance MilesToFeet MeasureDistance MilesToInches MeasureDistance MilesToMeters MeasureDistance MilesToYards MeasureDistance YardsToFeet MeasureDistance YardsToInches MeasureDistance YardsToMeters MeasureDistance YardsToMiles Tipo de entrada Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Tipo de salida Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Carpeta sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance Descripción Convierte pulgadas en yardas. Convierte metros en pies. Convierte horas en segundos. Convierte millas en metros. Convierte yardas en pies. Convierte metros en yardas.

Capítulo 8. sdk/Measure/Volume Convierte pies cúbicos en barriles estadounidenses (líquido). Convierte segundos en semanas. Convierte minutos en segundos. Convierte segundos en minutos. Convierte segundos en años. sdk/Measure/Volume Convierte barriles estadounidenses (líquido) en galones estadounidenses. sdk/Measure/Volume Convierte barriles estadounidenses (petróleo) en litros. Transformaciones y rutinas incorporadas Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie 327 . sdk/Measure/Volume Convierte barriles estadounidenses (líquido) en litros.Transformación MeasureTime IsLeapYear Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/Measure/Time Descripción Devuelve 1 si la entrada de año de 4 dígitos es un año bisiesto. devuelve 0. Convierte semanas en segundos. sdk/Measure/Volume Convierte barriles estadounidenses (petróleo) en pies cúbicos. sdk/Measure/Volume Convierte barriles estadounidenses (petróleo) en galones estadounidenses. Convierte segundos en días. Convierte segundos en horas. de lo contrario. Convierte años estándar en segundos. MeasureTime MinutesTo Seconds MeasureTime SecondsToDays MeasureTime SecondsToHours MeasureTimeSeconds ToMinutes MeasureTime SecondsToWeeks MeasureTime SecondsToYears MeasureTime WeeksToSeconds MeasureTime YearsToSeconds Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie sdk/Measure/Time sdk/Measure/Time sdk/Measure/Time sdk/Measure/Time sdk/Measure/Time sdk/Measure/Time sdk/Measure/Time sdk/Measure/Time Transformaciones de medidas: volumen Transformación MeasureVolume BarrelsLiquid ToCubicFeet MeasureVolume BarrelsLiquid ToGallons MeasureVolume BarrelsLiquid ToLiters MeasureVolume BarrelsPetrol ToGallons MeasureVolume BarrelsPetrol ToLiters MeasureVolume BarrelsPetrol ToCubicFeet MeasureVolume CubicFeet ToBarrelsLiquid Tipo de entrada Serie Tipo de salida Serie Carpeta Descripción sdk/Measure/Volume Convierte barriles estadounidenses (líquido) en pies cúbicos.

sdk/Measure/Volume Convierte litros en barriles estadounidenses (líquido). sdk/Measure/Volume Convierte litros en barriles estadounidenses (petróleo). sdk/Measure/Volume Convierte litros en galones imperiales. Serie Serie Serie Serie Serie Serie Serie Serie MeasureVolume GallonsTo BarrelsPetrol Serie Serie MeasureVolume GallonsTo CubicFeet MeasureVolume GallonsToLiters MeasureVolume LitersTo BarrelsLiquid MeasureVolume LitersTo BarrelsPetrol MeasureVolume LitersTo CubicFeet MeasureVolume LitersToGallons MeasureVolume LitersToGallons MeasureVolume ImpGallons ToCubicFeet MeasureVolume ImpGallons ToLiters Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie 328 Guía del desarrollador de Server Job . sdk/Measure/Volume Convierte galones imperiales en litros. sdk/Measure/Volume Convierte litros en pies cúbicos. sdk/Measure/Volume Convierte galones estadounidenses en barriles estadounidenses (líquido). sdk/Measure/Volume Convierte pies cúbicos en galones imperiales. sdk/Measure/Volume Convierte galones estadounidenses en pies cúbicos. sdk/Measure/Volume Convierte pies cúbicos en litros. sdk/Measure/Volume Convierte galones estadounidenses en barriles estadounidenses (petróleo). sdk/Measure/Volume Convierte litros en galones estadounidenses.Transformación MeasureVolume CubicFeet ToBarrelsPetrol MeasureVolume CubicFeet ToGallons MeasureVolume CubicFeet ToLiters MeasureVolume CubicFeet ToImpGallons MeasureVolume GallonsTo BarrelsLiquid Tipo de entrada Serie Tipo de salida Serie Carpeta Descripción sdk/Measure/Volume Convierte pies cúbicos en barriles estadounidenses (petróleo). sdk/Measure/Volume Convierte galones estadounidenses en litros. sdk/Measure/Volume Convierte galones imperiales en pies cúbicos. sdk/Measure/Volume Convierte pies cúbicos en galones estadounidenses.

Convierte toneladas largas en libras. Convierte gramos en granos. Convierte libras en toneladas cortas. Capítulo 8. Convierte toneladas cortas en libras. Convierte gramos en libras. Convierte masa de un penique en gramos. Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Transformaciones numéricas Transformación NumericIsSigned Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/Numeric Descripción Devuelve 0 si la entrada es no numérica o cero. Convierte kilogramos en toneladas largas. Convierte libras en toneladas largas. Transformaciones y rutinas incorporadas 329 . Convierte gramos en masa de un penique. 1 para números positivos y -1 para los números negativos. Convierte libras en gramos.Transformaciones de medidas: peso Transformación MeasureWeightGrains ToGrams MeasureWeightGrams ToGrains MeasureWeightGrams ToOunces MeasureWeightGrams ToPennyWeight MeasureWeightGrams ToPounds MeasureWeightKilograms ToLongTons MeasureWeightKilograms ToShortTons MeasureWeightLongTons ToKilograms MeasureWeightLongTons ToPounds MeasureWeightOunces ToGrams MeasureWeightPennyWeight ToGrams MeasureWeightPounds ToGrams MeasureWeightPounds ToLongTons MeasureWeightPounds ToShortTons MeasureWeightShortTons ToKilograms MeasureWeightShortTons ToPounds Tipo de entrada Serie Serie Serie Serie Serie Serie Tipo de salida Serie Serie Serie Serie Serie Serie Carpeta sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight sdk/Measure/ Weight Descripción Convierte granos en gramos. Convierte toneladas cortas en kilogramos. Convierte kilogramos en toneladas cortas. Convierte toneladas largas en kilogramos. Convierte onzas en gramos. Convierte gramos en onzas.

de lo contrario. NumericRound1 Serie Serie sdk/Numeric NumericRound2 Serie Serie sdk/Numeric NumericRound3 Serie Serie sdk/Numeric NumericRound4 Serie Serie sdk/Numeric Transformaciones del procesador de filas Transformación RowProcCompareWith PreviousValue Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/RowProc Descripción Compara el valor actual con el valor anterior. Devuelve el número de entrada con cuatro cifras decimales más próximo. Devuelve el número de entrada con dos cifras decimales más próximo.Transformación NumericRound0 Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/Numeric Descripción Devuelve el número entero más próximo al número de entrada. Devuelve el valor anterior que se ha pasado a esta transformación y conserva la entrada actual para la siguiente referencia. Devuelve 1 si son iguales. Devuelve el número de entrada con tres cifras decimales más próximo. Sólo puede utilizarse en un lugar en un trabajo. Devuelve la suma en ejecución de la entrada. devuelve 0. Sólo puede utilizarse en un lugar en un trabajo. Devuelve el número de entrada con una cifra decimal más próximo. Sólo puede utilizarse en un lugar en un trabajo. RowProcGetPreviousValue Serie Serie sdk/RowProc RowProcRunningTotal Serie Serie sdk/RowProc 330 Guía del desarrollador de Server Job .

Transformaciones y rutinas incorporadas 331 . una lista de parámetros delimitados por el carácter |. Sólo está indicada a efectos de desarrollo. Utiliza como argumentos la salida de UtilityRunJob. serie delimitada. UtilityRunJob Serie. Serie Serie sdk/Utility UtilityPrintColumn ValueToLog Serie - sdk/Utility Capítulo 8. una acción y (de manera opcional) un nombre de enlace. Las acciones posibles son: LinkCount JobName JobCompletionStatus StartTimeEndTime UtilityMessageToLog Serie sdk/Utility Graba el mensaje proporcionado por el usuario en el registro en el cliente del Director. El trabajo se especifica por el nombre de trabajo. número. número Matriz sdk/Utility UtilityGetRunJobInfo Salida del programa de utilidad RunJob. Ejecuta el trabajo especificado y devuelve estadísticas de la ejecución del trabajo. Extrae información de la salida de UtilityRunJob. Graba un valor de columna en el registro en el cliente del Director. un límite de fila y un límite de aviso. Las estadísticas se devuelven en una matriz.Transformaciones del programa de utilidad Transformación UtilityAbortToLog Tipo de entrada Serie Tipo de salida Carpeta sdk/Utility Descripción Hace que el trabajo termine y graba el mensaje proporcionado en el registro de errores graves del cliente del Director. Serie.

Estas rutinas se almacenan en la carpeta Rutinas > Ejemplos > Funciones en el árbol de repositorio y se utilizan en las transformaciones incorporadas que se proporcionan con InfoSphere DataStage. Convierte cada carácter de la serie en su equivalente hexadecimal ASCII y lo graba en el registro en el cliente del Director. Devuelve el registro. v Ejemplos de funciones de transformación. Serie. Ejecuta una búsqueda en una tabla hash. Subrutinas anteriores y posteriores incorporadas Hay varias subrutinas anteriores y posteriores incorporadas que se suministran con IBM InfoSphere DataStage: v DSSendMail. el valor de la clave hash y la posición de columna. Estas rutinas se almacenan en la carpeta Rutinas > Incorporadas > Anteriores/posteriores en el árbol de repositorio. v Funciones de transformación utilizadas por las transformaciones SDK. El editor de expresiones no ofrece estas rutinas y deberá utilizar la transformación que tenga prioridad en la rutina (tal como se describe en “Transformaciones incorporadas” en la página 311). pero no puede editarlas. Graba el mensaje proporcionado como un aviso en el registro en el cliente del Director. así como editar las copias para trabajar en ellas. Serie Serie sdk/Utility Rutinas incorporadas Hay tres tipos de rutinas que se suministran con IBM InfoSphere DataStage: v Subrutinas incorporadas anteriores/posteriores. Estas son las rutinas que utilizan las transformaciones SDK del mismo tipo. Se almacenan en Rutina > sdk. 332 Guía del desarrollador de Server Job . o bien no exista.Transformación UtilityPrintHexValueToLog Tipo de entrada Serie Tipo de salida - Carpeta sdk/Utility Descripción Convierte el valor suministrado y lo procesa como una serie. Esta rutina es un interludio al programa de correo de envío local. Puede ver las definiciones de estas rutinas utilizando el cliente del Diseñador. UtilityWarningToLog Serie - - UtilityHashLookup Serie. o bien exista un trabajo denominado. puede copiarlas y renombrarlas. Utiliza como argumentos el nombre de la tabla hash. Puede copiar estas rutinas y utilizarlas como base para sus propias funciones de transformación escritas por el usuario. Si es necesario. v DSWaitForFile. Esta rutina se llama para suspender un trabajo hasta que. Se compilan y están listas para su uso como una subrutina anterior o posterior a la etapa o como una rutina anterior o posterior al trabajo.

pero no graba la línea de mandatos en el registro de trabajo. pero no grana la línea de mandatos en el registro de trabajo. v ExecDOSSilent. tiempo transcurrido y estado del trabajo. en función del tipo de informe. Esta rutina se puede llamar al final de un trabajo para grabar un informe de trabajo en un archivo.TAG. Esta rutina ejecuta un mandato mediante un shell Korn de UNIX. – L (el último día del mes) genera DATE.TAG. v ConvertQuarter. o los campos Subrutina anterior al trabajo o Subrutina posterior al trabajo en el recuadro de diálogo Propiedades del trabajo. – Y (el año que contiene el mes) genera YEAR. Funciones de transformación de ejemplo Estas son las funciones de transformación de ejemplo que se proporcionan con IBM InfoSphere DataStage: v ConvertMonth. v ExecSH. v ExecTCL.TAG. Capítulo 8. Si el soporte multilingüístico está habilitado.TAG. – Directorio. 1 o 2 para especificar detalles del informe. especifica una hoja de estilo XSL para formatear un informe XML. – Q (el trimestre que contiene el mes) genera QUARTER. Transformaciones y rutinas incorporadas 333 . v ExecSHSilent.xml. El mandato ejecutado se especifica en el argumento de entrada de la rutina. Transforma una entrada QUARTER.txt o nombreTrabajo_AAAAMMDD_HHMMSS. Especifica el directorio en el que se escribirá el informe. El tipo 2 produce una serie de texto que contiene un informe XML completo.TAG.txt o alias_nombreTrabajo. – Y (el año que contiene el mes) genera YEAR. También puede copiar estas rutinas y utilizar el código como base para sus propias subrutinas anteriores/posteriores. el informe se graba como nombreTrabajo_AAAAMMDD_HHMMSS. El tipo 1 es un informe básico pero también contiene información acerca de etapas y enlaces individuales dentro del trabajo. El tipo 0 produce una serie de texto que contiene hora de inicio/fin. – Hoja de estilo XSL. Como ExecSH. Esta rutina ejecuta un mandato mediante un shell MS-DOS. 0. Transformer o suplementaria. Como ExecDOS. deberá estar informado sobre cualquier requisito de correlación cuando utilice las rutinas ExecDOS y ExecSH (o ExecDOSSilent y ExecSHSilent). a continuación.TAG. La rutina toma un argumento que comprende dos o tres elementos separados por puntos y comas como se explica a continuación: – Tipo de informe. – L (el último día del mes) genera DATE. Transforma una entrada MONTH. El resultado depende del valor del segundo argumento: – F (el primer día del mes) genera DATE.TAG. Si estas rutinas utilizan datos en determinados juegos de caracteres. Estas rutinas aparecen en la lista de rutinas incorporadas disponibles cuando edita los campos Subrutina anterior a la etapa o Subrutina posterior a la etapa en una etapa Aggregator. El resultado depende del valor del segundo argumento: – F (el primer día del mes) genera DATE.TAG. será su responsabilidad correlacionar los datos desde o hacia Unicode. en función del tipo de informe.xml. Si el trabajo no tiene un. Si el trabajo tenía un identificador de alias. Esta rutina ejecuta un mandato mediante un shell de motor de InfoSphere Information Server.v DSJobReport. el informe se graba como alias_nombreTrabajo. Opcionalmente.TAG. v ExecDOS. El mandato ejecutado se especifica en el argumento de entrada de la rutina.

El resultado depende del valor del segundo argumento: – F (el primer día del año) genera DATE.TAG.TAG (AAAAQn).v ConvertTag. 334 Guía del desarrollador de Server Job .TAG.TAG (AAAAWnn). – 2 genera un miércoles. – 3 genera un jueves.TAG válido. se registra un error y se devuelve 0. – W (la semana que contiene la fecha) genera WEEK. – TIME genera una hora interna a partir de una indicación de fecha y hora (se omite la parte de fecha).TAG.TAG. Transforma una entrada de fecha en una serie QUARTER.TAG en una fecha interna correspondiente a un día específico de la semana. – M (el mes que contiene la fecha) genera MONTH. El resultado depende del valor del segundo argumento: – 0 genera un lunes. v Timestamp.TAG. – 1 genera un martes. – Y (el año que contiene la fecha) genera YEAR.TAG. Transforma una entrada DATE. Transforma una entrada de fecha en una serie WEEK. v WeekTag. v ConvertWeek. v ConvertYear. Transforma una entrada WEEK. – Q (el trimestre que contiene la fecha) genera QUARTER. – 4 genera un viernes.TAG. Transforma una indicación de fecha y hora (una serie con el formato AAAA-MM-DD HH:MM:SS) o una entrada de fecha. Si la entrada no parece ser un WEEK. – L (el último día del año) genera DATE. – DATE genera una fecha interna a partir de una indicación de fecha y hora (se omite la parte de hora). – 6 genera un domingo.TAG. – 5 genera un sábado. El resultado depende del valor del segundo argumento: – I (número de día interno) genera una Fecha. El resultado depende del valor del segundo argumento: – TIMESTAMP genera una indicación de fecha y hora igual a 00:00:00 a partir de una fecha. v QuarterTag. Transforma una entrada YEAR.

pero no entre trabajos o varias secuencias de datos en un trabajo.1. Funcionalidad de almacenamiento en ememoria caché de disco El almacenamiento en memoria caché de disco proporciona la funcionalidad y las ventajas siguientes: v Da soporte a la actualización compartible o al acceso a archivos de grabación en una secuencia de datos individual en un trabajo (almacenamiento en la memoria caché privada de enlaces) v Da soporte a la actualización compartible o al acceso a archivos de grabación con – varias secuencias de datos en un trabajo individual – varios trabajos © Copyright IBM Corp. Como resultado. cada enlace de un trabajo que utiliza una etapa Hashed File debe asignar y gestionar recursos para dar soporte a la memoria caché. Este mecanismo de memoria caché es una memoria caché privada por enlace. de aquí en adelante denominado almacenamiento en memoria caché del sistema. como los almacenamientos intermedios de memoria caché de grabación generan filas hasta que se llega al umbral. Asimismo. El almacenamiento en memoria caché pública de enlaces se desarrolló para aprovechar el motor paralelo de InfoSphere DataStage que maximiza la eficacia con un multiprocesador simétrico (SMP) cuando utiliza un archivo de búsqueda. Esto da como resultado un uso significativo de recursos y unos tiempos de arranque poco eficaces (en el caso de los enlaces de referencia). IBM InfoSphere DataStage ofrece la opción de v Almacenar los bloques en la memoria caché del servidor v Permitir que varios enlaces hagan referencia al mismo archivo hash v Hacer que las inserciones y las actualizaciones estén visibles para todos los procesos que tengan abierto el archivo El almacenamiento centralizado en memoria caché compartida de disco del sistema. El release 6. la etapa Hashed File sólo tenía un método para almacenar filas en la memoria caché para la lectura (enlaces de referencia) y la grabación (enlaces de salida). Esto supone un problema para los diseños de trabajo que utilizan el mismo archivo hash para las actualizaciones y las búsquedas de referencia.0 introdujo una opción adicional denominada almacenamiento en memoria caché pública de enlaces. así como las prestaciones que se ofrecen al administrador de InfoSphere DataStage para ajustar varios valores de configuración del sistema para maximizar el rendimiento basándose en la configuración de hardware y los pasos de InfoSphere DataStage. 1997. las filas en la memoria caché no se reflejan en la base de datos hasta que la memoria caché se desecha. En estos temas se describen los mandatos de usuario. Las funciones que dan soporte al almacenamiento en memoria caché de disco se describen en InfoSphere DataStage Programmer's Guide. Almacenamiento en la memoria caché de disco de la etapa Hashed File Antes del Release 5. Este método se denominaba almacenamiento en memoria caché privada de enlaces (y anteriormente. al implementar sólo una memoria caché que puede configurarse completamente y que da soporte a la lectura y la grabación. almacenamiento en memoria caché de etapas). 2011 335 . Esta opción permite que varias secuencias de datos de un trabajo utilicen el mismo archivo de memoria caché. El compartimiento está permitido en un trabajo con una secuencia de datos individual. reduce el uso de los recursos del sistema.Capítulo 9.

19. daemon de memoria caché Un proceso asíncrono en segundo plano que realiza las grabaciones de estado de grabación diferida. El motor del servidor pone los registros que ejecutan hash en el mismo número de grupo en un bloque. 4. El tamaño del bloque viene determinado por el valor SEPARATION de CREATE. 336 Guía del desarrollador de Server Job . 8.FILE. 2. n puede ser 4. incluidos los datos actualizados o que se acaban de crear v Da soporte únicamente al acceso en memoria a los datos actualizados o que se acaban de crear por otros procesos v Da soporte a los elementos ajustables que permiten al administrador configurar los algoritmos de memoria caché de disco para cumplir la configuración del sistema y el tamaño esperado de los archivos La siguiente funcionalidad no está soportada: v El almacenamiento en memoria caché de archivos con un tamaño mayor de medio terabyte v El almacenamiento en memoria caché del sistema de archivos de tipo 1. 25 ('árbol B') o 27 (particionado) v El almacenamiento en memoria caché de los archivos existentes con valores de separación (tamaños de bloque) distintos de 1. 16. 32 o 64 v Designación automática de archivos como almacenados en la memoria caché del sistema v Utilización de los programas de utilidad (copia de seguridad. cambio de tamaño y arreglo de archivo) en los archivos designados para que se utilicen en la memoria caché del sistema Terminología En este documento se utiliza la siguiente terminología: Término Significado bloque Un grupo de registros o filas. 16 o 32. restauración. almacenamiento intermedio de conjunto de bloques Una unidad de memoria en los segmentos compartidos del disco con un tamaño de n k más el tamaño de la estructura de cabecera del conjunto de bloques. memoria caché Un subsistema en el que los datos que se utilizan con frecuencia están disponibles para un acceso rápido. cadena libre de conjunto de bloques La cadena de almacenamientos intermedios de conjuntos de bloques sin utilizar disponible en alguno de los segmentos de disco compartido configurados. 8.– un trabajo que se ejecuta con el motor paralelo en SMP mientras se mantienen los archivos almacenados en la memoria caché (almacenamiento en la memoria caché pública de enlaces) v Da soporte a la actualización compartible o al acceso a archivos de grabación en los trabajos de un sistema mientras se mantienen los archivos almacenados en la memoria caché (almacenamiento en la memoria caché del sistema) v Permite la explotación de las prestaciones de SMP que permiten varias secuencias de datos simultáneas (almacenamiento en la memoria caché pública de enlaces) v Da soporte al acceso rápido en memoria a los datos por parte de una aplicación.

FILE. HEAPCHUNK público Un conjunto consecutivo de conjuntos de bloques (bset) asignado como una unidad (128 K) a un servidor de archivos hash para una parte de una memoria caché pública de enlaces. Consulte también número de dispositivo. segmentos de memoria compartida de disco Los segmentos a los que se asigna la memoria caché del sistema de IBM InfoSphere DataStage. Consulte también número de i-node. bloque de desbordamiento Un bloque o un conjunto de bloques exclusivo en el que la parte de desbordamiento de los campos de un registro se almacena si todos los campos de datos del registro no entran en su grupo. Una copia individual del sistema operativo está a cargo de todos los procesadores. archivo Un archivo nativo del motor de servidor que se crea con el mandato CREATE. así como el ID de usuario del propietario del archivo. desecho La hora a la que se libera un conjunto de bloques asignado actualmente. pero no todas. pid Un identificador exclusivo de un proceso. estado incoherente El estado de un archivo en el que algunas grabaciones generadas por una aplicación.cadena de archivos de memoria caché Un conjunto de entradas de archivo de memoria caché que están utilizadas (un archivo abierto) o sin utilizar. número de dispositivo Un número exclusivo asociado con la partición (un dispositivo) en la que reside el i-node. entrada de archivo de memoria caché Una estructura que define un archivo de motor de servidor y la información relacionada con su estado. el tamaño y la ubicación del archivo. se han grabado físicamente en disco antes de que la aplicación termine sin un archivo de cierre correcto. multiproceso simétrico (SMP) El proceso de programas de varios procesadores que comparten un sistema operativo y una memoria comunes. los recursos de hardware se comparten normalmente entre los procesadores. y puede obtenerse de un archivo y utilizarse para otro conjunto de bloques del mismo archivo o de otro diferente. grabación diferida Un bloque que hay actualmente en un conjunto de bloques que se ha modificado respecto a la Capítulo 9. semáforo Una estructura de sistema operativo que permite a los procesos modularse entre ellos en una hebra individual mediante un procedimiento. Esta área se divide posteriormente en entradas de conjunto de bloques. En SMP. lectura previa El acto de leer uno o varios bloques de un archivo en la memoria caché antes de generar una solicitud para el bloque. Almacenamiento en la memoria caché de disco de la etapa Hashed File 337 . número de i-node Un número exclusivo asociado con cada nombre de archivo. Este número se utiliza para buscar una entrada en la tabla de i-nodes que proporciona información sobre el tipo.

Pulse Propiedades. se producen secuencias de datos múltiples en uno de estos tres estados: v Cuando se procesan secuencias de datos múltiples en el mismo trabajo v Cuando se procesa un origen de datos individual de gran tamaño en varios conjuntos particionados utilizando el motor paralelo de InfoSphere DataStage v Cuando se ejecutan varios trabajos que hacen referencia al mismo archivo Para aumentar la eficacia de los procesos. utiliza la memoria en segmentos hasta el límite especificado. Inicie una sesión como dsadm. seleccione un proyecto en la página Proyectos. Directrices para elegir un tipo de memoria caché Utilice las siguientes directrices cuando seleccione el tipo de memoria caché que desea utilizar: Hasta Uso Compartir entre archivos de referencia y de salida en una secuencia de datos individual Almacenamiento en la memoria caché privada de enlaces Compartir entre varias secuencias de datos o en un contenedor que se ejecuta con el motor paralelo Almacenamiento en la memoria caché pública de enlaces Compartir entre varios trabajos que se ejecutan simultáneamente o en paralelo utilizando el mismo archivo de referencia o de salida Almacenamiento en la memoria caché del sistema Preparación de la memoria caché privada de enlaces Acerca de esta tarea En el cliente del Administrador. IBM InfoSphere DataStage no utiliza toda la memoria especificada de una vez. Para habilitar el almacenamiento en la memoria caché de disco. aunque no se ha actualizado en el archivo de disco.imagen en disco y está visible para las demás aplicaciones. el administrador de InfoSphere DataStage debe realizar los pasos siguientes. En su lugar. 338 Guía del desarrollador de Server Job . El valor predeterminado de cada uno es 128 MB. establezca Tamaño de memoria caché de lectura (para los archivos de consultas) o Tamaño de memoria caché de grabación (para los archivos de salida) en el límite superior adecuado para el trabajo y los recursos. IBM InfoSphere DataStage se proporciona con el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema inhabilitados. En el separador Elementos ajustables. Secuencias de datos múltiples En IBM InfoSphere DataStage. puede procesar varias secuencias de datos con un solo archivo de búsqueda común almacenado en memoria caché. Procedimiento 1. Preparación para el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema en las plataformas UNIX Acerca de esta tarea De forma predeterminada. El archivo está en un estado incoherente hasta que se hayan grabado todos los bloques de grabación diferida.

Requisitos especiales de AIX para determinar el tamaño de la memoria caché de disco Acerca de esta tarea Debido al modelo del espacio de direcciones predeterminado para los procesos de 32 bits en los sistemas AIX. Almacenamiento en la memoria caché de disco de la etapa Hashed File 339 . Consulte “Utilización de la memoria caché pública de enlaces” en la página 342 o “Utilización de la memoria caché del sistema” en la página 342. establezca el elemento ajustable DISKCACHE en un tamaño deseado en megabytes. La asignación de espacio predeterminada es de 128 megabytes.dshome’ Edite el archivo uvconfig que se encuentra en el directorio del motor de servidor (especificado en el archivo /. rev xxxx not currently running 5. Utilice el siguiente mandato para cambiar el directorio actual al directorio de instalación del motor de InfoSphere Information Server. revise la información sobre el kernel del sistema operativo y realice los cambios necesarios en ellos. 3. 4. Reinicie el motor de servidor de la siguiente manera: . Asegúrese de que no haya conexiones activas del cliente de InfoSphere DataStage ni usuarios interactivos. Capítulo 9./bin/uv -admin -regen 6. la salida es: DSEngine.) Nota: Los valores predeterminados sirven como un conjunto razonable de valores iniciales./bin/uv -admin -start Resultados El almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema están ahora habilitados. Utilice el siguiente mandato para comprobar que todas las aplicaciones de InfoSphere DataStage han dejado de ejecutarse: . Detenga el motor de servidor de la siguiente manera: . es posible que necesite una preparación adicional para todas las opciones de memoria caché de disco. Si recibe un error del sistema operativo de host indicando que no se han podido asignar los segmentos de InfoSphere DataStage. los diseños de trabajo nuevos o existentes pueden utilizar esta funcionalidad.dshome). Inicie una sesión como dsadm. siga estos pasos: Procedimiento 1. Como mínimo. La asignación máxima óptima es de 512 megabytes. y establezca los elementos ajustables de la memoria caché de disco en los valores que desee. cd ’cat /. (Consulte “Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema” en la página 351./bin/uv -admin -info Si todas las aplicaciones se han detenido. Una vez habilitado el almacenamiento en la memoria caché./bin/uv -admin -stop Nota: No puede continuar en el paso 5 hasta que todas las aplicaciones de InfoSphere DataStage hayan dejado de ejecutarse.2. Si desea asignar más de 128 megabytes de espacio para la memoria caché de disco en un sistema AIX. Genere una nueva configuración del motor de la siguiente manera: .

Utilizando un editor de texto como.dsenv: LDR_CNTRL=MAXDATA=0x30000000. Cambiar PMEMOFF a 0xa0000000 Guarde el archivo uvconfig. . 5. a. Notepad. Reinicie el motor de servidor de la siguiente manera: ./bin/uv -admin -stop Nota: No puede continuar en el paso 6 hasta que todas las aplicaciones de InfoSphere DataStage hayan dejado de ejecutarse. Inicie una sesión como administrador de Windows./bin/uv -admin -info Si todas las aplicaciones se han detenido. Aplique los nuevos valores de entorno ejecutando . disk segment size is xxxxxxx 7.2. 2./dsenv 9. 4./bin/uv -admin -regen Si el mandato es satisfactorio. rev xxxx not currently running 6. el administrador de InfoSphere DataStage debe realizar los pasos siguientes. Detenga el motor de servidor de la siguiente manera: .dshome’ 3./bin/uv -admin -start Nota: Estos valores pueden afectar a la cantidad de memoria utilizada para las etapas suplementarias que hacen un uso intensivo de la memoria. Utilice el siguiente mandato para cambiar el directorio actual al directorio de instalación del motor de InfoSphere Information Server: cd ’cat /. Asegúrese de que no haya conexiones activas del cliente de IBM InfoSphere DataStage ni usuarios interactivos. Cambiar DMEMOFF a 0x90000000 b. Genere una nueva configuración del motor de la siguiente manera: . Añada los siguientes valores de entorno al archivo . Edite el archivo uvconfig con un editor de texto como vi. la salida es: uvregen: reconfiguration complete. Preparación para el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema en las plataformas Windows Acerca de esta tarea De forma predeterminada. la salida es: DSENGINE. IBM InfoSphere DataStage se proporciona con el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema inhabilitados. y este tipo de etapas puede limitar la cantidad de memoria disponible para la memoria caché. por ejemplo. .exportar LDR_CNTRL 8./dsenv . Para habilitar el almacenamiento en la memoria caché de disco. Procedimiento 1. Utilice el siguiente mandato para comprobar que todas las aplicaciones de InfoSphere DataStage han dejado de ejecutarse: . edite el archivo uvconfig que se encuentra en el directorio del motor de servidor y establezca los elementos ajustables de la memoria caché de 340 Guía del desarrollador de Server Job .

Reinicie el motor de servidor de la siguiente manera: a. 4. Pulse Detener todos los servicios y pulse Sí como respuesta al mensaje de que se detendrán todos los mensajes de los Servicios de InfoSphere DataStage. Para comprobar que no se esté ejecutando ninguna aplicación de InfoSphere DataStage. Pulse Aceptar para salir del Panel de control. Nota: Genere un nuevo archivo de configuración del motor de la siguiente manera: En el indicador de mandatos de Windows NT. c. c. Como mínimo.disco en los valores que desee. cambie al directorio del motor de servidor y emita el siguiente mandato: C:\IBM\InformationServer\Server\DSEngine\bin\uvregen. Pulse Iniciar todos los servicios y pulse Sí como respuesta al mensaje de que se iniciarán todos los servicios de InfoSphere DataStage. Almacenamiento en la memoria caché de disco de la etapa Hashed File 341 . Utilización de la memoria caché privada de enlaces El motor de servidor utiliza el espacio privado si se cumple lo siguiente: v El almacenamiento en memoria caché de disco está habilitado (Habilitado o Habilitado. consulte el separador Procesos en el gestor de tareas. Consulte “Utilización de la memoria caché pública de enlaces” en la página 342 o “Utilización de la memoria caché del sistema” en la página 342. Resultados El almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema están ahora habilitados. Pulse Aceptar para salir del Panel de control de InfoSphere DataStage. revise la información sobre el kernel del sistema operativo y realice los cambios necesarios en ellos. Asegúrese de que no haya conexiones activas del cliente de InfoSphere DataStage ni usuarios interactivos. No debe aparecer ninguna entrada denominada uvsh ni entradas que empiecen por las letras ds. Nota: No puede continuar en el paso 5 hasta que todas las aplicaciones de InfoSphere DataStage hayan dejado de ejecutarse. 3. Nota: Si recibe un error del sistema operativo de host indicando que no se han podido asignar los segmentos de InfoSphere DataStage. los diseños de trabajo nuevos o existentes pueden utilizar esta funcionalidad. 5. Aparecerá el recuadro de diálogo Panel de control de InfoSphere DataStage.) Nota: Los valores predeterminados sirven como un conjunto razonable de valores iniciales. Una vez habilitado el almacenamiento en la memoria caché. (Consulte “Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema” en la página 351. Aparece el recuadro de diálogo Panel de control de InfoSphere DataStage. bloquear para actualizaciones en la lista desplegable Precargar archivo en memoria en el separador Salida del recuadro de diálogo Etapa Hashed File) Capítulo 9.exe donde C:\IBM\InformationServer\Server\DSEngine es la ubicación del motor de servidor instalado. Detenga el motor de servidor de la siguiente manera: a. Seleccione Inicio > Configuración > Panel de control > IBM InfoSphere Information Server. establezca el elemento ajustable DISKCACHE en un tamaño deseado en megabytes. b. Seleccione Inicio > Configuración > Panel de control > IBM InfoSphere Information Server. b.

el conjunto de segmentos de memoria compartida que mantiene la memoria caché de disco está visible para el proceso. bloquear para actualizaciones en la lista desplegable Precargar archivo en memoria en el separador Salida del recuadro de diálogo Etapa Hashed File). las nuevas aplicaciones utilizan el almacenamiento en memoria caché privada de enlaces. Utilización de la memoria caché pública de enlaces El motor de servidor utiliza el espacio público si se cumple todo lo siguiente: v El almacenamiento en memoria caché de disco está habilitado (Habilitado o Habilitado. Si se vuelve a compilar una aplicación existente. Habilitar compartimiento de memoria caché de archivos hash no está seleccionado.v Habilitar compartimiento de memoria caché de archivos hash no se ha seleccionado en el separador General del trabajo (Editar > Propiedades del trabajo) antes de la compilación. pero los mensajes de registro de tiempo de ejecución ahora hacen referencia al espacio privado de enlaces. se utiliza el almacenamiento en memoria caché privada de enlaces. Habilitar compartimiento de memoria caché de archivos hash no está seleccionado. se recomienda al administrador utilizar menos del máximo de memoria caché de disco compartida permitida. Si alguna de las tres condiciones anteriores no se cumple. ya sea en varias secuencias de datos en el mismo trabajo o en conjuntos particionados utilizando el motor paralelo de IBM InfoSphere DataStage. De forma predeterminada. Utilización de la memoria caché del sistema Cuando se inicia un proceso de IBM InfoSphere DataStage. debe crear un archivo con los atributos de memoria caché "grabación inmediata" o "grabación diferida". para que las aplicaciones puedan ejecutarse en el espacio de trabajo restante. v Habilitar compartimiento de memoria caché de archivos hash se ha seleccionado en el separador General del trabajo (Editar > Propiedades del trabajo) antes de la compilación. De forma predeterminada. consulte “Obtención del estado” en la página 344. puede ejecutarse con un archivo de registro diferente. Puede crear este archivo 342 Guía del desarrollador de Server Job . v El archivo de búsqueda se ejecutará en más de una secuencia. El diseño de los segmentos de memoria caché de disco compartida permite un acceso de actualización serializado y eficaz a la lista de bloques en la memoria caché para cada archivo (i-node y dispositivo). Para la memoria caché de disco. Un trabajo con una secuencia individual funciona de la misma forma que con el release anterior. Los mensajes de registro de tiempo de ejecución hacen referencia al espacio privado de enlaces. las nuevas aplicaciones utilizan el almacenamiento en memoria caché pública de enlaces. Para obtener el estado de la memoria caché de disco. Creación de un archivo hash para el almacenamiento en memoria caché del sistema Acerca de esta tarea Para utilizar la memoria caché del sistema en la etapa Hashed File. Los mensajes de registro de tiempo de ejecución hacen referencia al espacio público de enlaces. Si se cumplen todas estas condiciones. Si se cumplen todas estas condiciones. v El almacenamiento en memoria caché de disco está activado en el archivo uvconfig en el servidor (consulte “Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema” en la página 351).

El siguiente mandato cambia la modalidad de un archivo hash existente: SET. Este es el valor predeterminado. se habilita la actualización lenta. 4 KB. No asigna ningún atributo de memoria caché especial. 2 KB.FILE El mandato CREATE. Habilita el almacenamiento en memoria caché del archivo especificado utilizando grabaciones síncronas. en la página 135 para obtener información adicional. 16 KB o 32 KB. (En el archivo uvconfig. Para utilizar alguno de estos mandatos.DEFER. Capítulo 9. WRITE. Consulte la sección Capítulo 6.WRITE | WRITE. La lista desplegable tiene las siguientes entradas: v NINGUNO.MODE nombre_archivo [READ. Habilita el almacenamiento en memoria caché del archivo especificado utilizando la actualización bajo demanda o la actualización lenta. Nota: El tamaño de bloque del archivo debe ser 1 KB.CACHE | WRITE. cree definiciones de rutinas anteriores al trabajo o posteriores al trabajo. WRITE. 16. 4. si se habilita DCWRITEDAEMON.CACHE Almacena en la memoria caché los archivos para las lecturas y grabaciones con grabaciones inmediatas.CACHE. tal como se describe a continuación. Creación de archivos hash nuevos y alteración de archivos hash existentes El siguiente mandato crea un nuevo archivo has en memoria caché: CREATE.DEFER | INFORM] El mandato tiene las opciones siguientes: Opción Descripción READ.CACHE.seleccionando Permitir memoria caché de grabación de la etapa en la página Entrada del recuadro de diálogo Etapa Hashed File. Este recuadro de diálogo incluye el recuadro de lista desplegable Atributos de memoria caché.FILE se ha ampliado con dos opciones. respectivamente.CACHE.ONLY Impone el archivo para que sea de sólo lectura y almacena las lecturas en la memoria caché. Especifique los atributos que desee en los recuadros de diálogo Opciones de creación de archivo. 8. Consulte “Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema” en la página 351).ONLY | READ. Este tamaño se controla estableciendo la separación de archivos en 2. si el archivo va a utilizar la memoria caché de disco compartida. Almacenamiento en la memoria caché de disco de la etapa Hashed File 343 . v GRABACIÓN INMEDIATA. v GRABACIÓN DIFERIDA. Estas opciones tienen los siguientes significados: Opción Descripción WRITE. antes de ejecutar un trabajo o después de ejecutar un trabajo. Mandatos del motor de servidor El administrador de IBM InfoSphere DataStage puede administrar y supervisar el subsistema de memoria caché del sistema mediante la interfaz de línea de mandatos del motor de servidor. 8 KB. “Programación en IBM InfoSphere DataStage”. 32 o 64.DEFER Almacena en la memoria caché los archivos para las lecturas y grabaciones con las grabaciones diferidas hasta el cierre.CACHE y WRITE.

FILE. a menos que empiecen por 0[X|x]. una entrada por línea. 16 KB o 32 KB. Estos conjuntos de bloques aparecen al final de todas las entradas del archivo de memoria caché. Este tamaño se controla estableciendo la separación de archivos en 2. 4. pid of y 344 Guía del desarrollador de Server Job . 8. 8 KB. FILE nombre Proporciona información para el archivo almacenado en memoria caché denominado.READ. lo que indica que son hexadecimales.WRITE Restaura el archivo a la modalidad de lectura/grabación normal. respectivamente. Éste es el valor predeterminado. 16. WRITE. INFORM Muestra el valor actual del campo "readonly" en la cabecera. DETAIL Proporciona información adicional. MRURO Lista todos los conjuntos de bloques en la cola de conjuntos de bloques de sólo lectura de la memoria caché del archivo. WRITE. Obtención del estado El administrador (o el usuario) puede obtener el estado actual de la memoria caché de disco utilizando el siguiente mandato: LIST.CACHE daemon active with pause of x. Nota: El tamaño de bloque del archivo debe ser 1 KB.CACHE [DEVICE xxx INODE yyy | FILE nombre | [EVERY]] [[DETAIL][MRURO][MRUWD]] Nota: Este mandato está disponible para el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema.CACHE Almacena en la memoria caché los archivos para las lecturas y grabaciones con grabaciones inmediatas. aparece la siguiente línea primero. Si se ejecuta el daemon de memoria caché de disco. 4 KB.CACHE. 32 o 64.FILE. El mandato tiene las opciones siguientes: Opción Descripción DEVICE xxx INODE yyy Proporciona información para el archivo de memoria caché asociado con el número de dispositivo exclusivo y el número de i-node en el que se encuentra el archivo almacenado en memoria caché. EVERY Proporciona información sobre todos los archivos abiertos. MRUWD Lista cada conjunto de bloques en la cola de grabación diferida del archivo. xxx e yyy son decimales.DEFER Almacena en la memoria caché los archivos para las lecturas y grabaciones con las grabaciones diferidas hasta el cierre. 2 KB. DAEMON.

Cuando se ejecuta este mandato. Para obtener más información. cadena libre de conjunto de bloques y cadena de archivos de memoria caché. consulte el apartado “Inicio y detención del daemon de memoria caché” en la página 350. Un proceso puede ser propietario de uno o varios de los siguientes semáforos: solicitud de daemon. Si se especifica DETAIL.donde x es el intervalo de pausa en milisegundos e y es la identificación del ID de proceso. daemon request semaphore held by y blockset freechain semaphore held by y cache file chain semaphore held by y donde y es la identificación del ID de proceso. flushedwd Número total de conjuntos de bloques de grabación diferida desechados. blocksets Número total de conjuntos de bloques en la memoria caché de disco. freechain Número de conjuntos de bloques disponibles actualmente para su uso. fileentries 11 blocksets 61 freechain 61 flushedro 50 flushedwd 32 blockkhits 23292 El significado de la información de estado es el siguiente: Categoría Significado fileentries Número de entradas del archivo de memoria caché. Si es propietario de más de uno. dos líneas muestran el estado general de la memoria caché. Por ejemplo. blockhits Número total de bloques encontrados en la memoria caché. cuatro líneas adicionales proporcionan el estado detallado de la memoria caché de disco: blocksize 16384 arraysize 256 flushpc 80 maxpc 40 catpc 50 nophyread 29 nophywrite 445 nobsetwhits 4473 El significado del estado detallado es el siguiente: Categoría Significado Capítulo 9. flushedro Número total de conjuntos de bloques de sólo lectura desechados. se generan las líneas correspondientes. Almacenamiento en la memoria caché de disco de la etapa Hashed File 345 .

. Inode Número que identifica el archivo al que se está accediendo..blocksize Tamaño configurado del almacenamiento intermedio del conjunto de bloques. El tipo de archivo: v D representa datos de tipo 30 v O representa un desbordamiento de tipo 30 v S representa un archivo público de enlace de IBM InfoSphere DataStage v A espacio representa un archivo hash r El estado de lectura/grabación del archivo: v R representa de sólo lectura Guía del desarrollador de Server Job t 346 . nobsetwhits Número total de conjuntos de bloques encontrados en la memoria caché. Consulte DCBLOCKSIZE. nophyread Número total de lecturas realizadas en el sistema operativo.DY. Consulte DCMODULUS. c El estado del catálogo del archivo.30 blocksets 12 bsetswd 3 flushedro 0 flushedwd 144 bsethits 5667 hblockf 0x30000 El significado de esta información es el siguiente: Categoría Significado Device Número que identifica la partición lógica del disco donde se encuentra el sistema de archivos. Se proporciona la siguiente información para cada archivo: Device. 8912917 Inode. Consulte DCFLUSHPCT. openwd Número de veces que se ha abierto actualmente el archivo con grabación diferida. flushpc Porcentaje de flushpc configurado. v C si el archivo está catalogado.. catpc Porcentaje de catpc configurado. v A espacio si no lo está.1/DATA. Consulte DCMAXPCT. maxpc Porcentaje de maxpc configurado.. Consulte DCCATALOGPCT. open 1297708 1 openwd 1 c C t D r W d 1 time 11:46:17 fullname tress/REL7. arraysize Número configurado de matrices por entrada de archivo de memoria caché. nophywrite Número total de grabaciones realizadas en el sistema operativo. open Número de veces que se ha abierto actualmente el archivo.

Si un semáforo de entrada de archivos utilizado para este archivo de memoria caché está actualmente en espera. flushedro El número de conjuntos de bloques de sólo lectura que se han desechado. bsetswd El número de conjuntos de bloques que hay actualmente con al menos un bloque de grabación diferida. Almacenamiento en la memoria caché de disco de la etapa Hashed File 347 . El valor es v 1 si el daemon de memoria caché supervisa de forma activa el estado del archivo v ? si el daemon ha terminado anormalmente v A espacio si el daemon de memoria caché no supervisa de forma activa el estado del archivo y el archivo no ha terminado anormalmente La hora a la que se ha abierto el archivo. inset mru El número de bloques en este conjunto. blocksets El número de conjuntos de bloques que utiliza actualmente este archivo. Si se especifica DETAIL. 0xbaseblock 0 10000 20000 inset 8 8 8 mru WD RO latch 0x0 0x0 0x80000000 cntovf 0 0 0 writedef 0x80000000 0x0 0x0 time 11:46:17 11:46:17 11:46:17 Para cada entrada del conjunto de bloques. hblockf El número de bloque máximo en el archivo expresado en hexadecimales. se genera una línea con la siguiente información: this cache file entry semaphore (x) held by y donde x es el número del semáforo e y es el ID de proceso. el significado de esta información es el siguiente: Categoría Significado 0xbaseblock El número del bloque en hexadecimales (con el prefijo 0x). time fullname Los últimos 23 bytes de la vía de acceso completa.v W representa de grabación diferida v A espacio representa otros estados d El estado del daemon de memoria caché. se muestra la información de estado del archivo actual. El estado de sólo lectura o grabación diferida: v WD para la lista de grabación diferida del archivo de memoria caché Capítulo 9. bsethits El número de conjuntos de bloques encontrados en la memoria caché de este archivo. flushedwd El número de conjuntos de bloques desechados que tenían grabaciones diferidas.

time La hora a la que se ha hecho referencia por última vez al conjunto de bloques.STAT] 348 Guía del desarrollador de Server Job . xxx. Array entry z has cache file array semaphore (x) held by y donde x es el número del semáforo. Para cada clave. a menos que empiecen por 0[X|x].v RO para la lista de sólo lectura del archivo de memoria caché latched Cuatro caracteres hexadecimales que muestran los valores de cierre (prefijo 0x). Después de dos líneas de cabecera. con todas las líneas cero omitidas. Cambio del estado El administrador de IBM InfoSphere DataStage puede cambiar el estado de la memoria caché de disco compartida. writedef Cuatro caracteres hexadecimales que muestran los valores diferido (prefijo 0x). yyy y zzz son decimales. se proporciona esta información adicional. y es el ID de proceso y z es el número de entrada de la matriz.30] Cuando se ejecuta este mandato. Si un semáforo de matriz de archivos de memoria caché correspondiente a un conjunto de bloques mostrado está retenido actualmente por un proceso. Por ejemplo: bset 0x4001 first of 8 bsets make up this public HEAPCHUNK next 247 public HEAPCHUNKs of 8 bsets are consecutive bset 0x7C4001 first of 2 bsets make up this public HEAPCHUNK El ejemplo anterior indica que el archivo público de enlace está utilizando 248 HEAPCHUNK de 128 K cada uno y 1 HEAPCHUNK de 32 K También hay disponible un segundo formato de este mandato.FILE. Si se especifica DETAIL y se aplica un almacenamiento en memoria caché pública de enlaces.CACHE [DEVICE xxx INODE yyy|FILE name] BLOCK zzz [OVER. Nota: Debe haber iniciado una sesión en la cuenta dshome para poder cambiar el estado. se genera una línea.CACHE [[FILE nombre_archivo [GROUP zzz]] [FORCEWRITE | FLUSHRO | CLOSE | CLEAR. con 1 bit para cada bloque cerrado en el conjunto de bloques actual de izquierda a derecha.FILE. cntovf El número de procesos que hacen referencia a un grupo de desbordamiento en este conjunto de bloques. El vuelco termina cuando una clave tiene más de 511 bytes. se muestran un vuelco del bloque en hexadecimal y las claves de registro. El mandato es CLEAR. Si desea un bloque de desbordamiento de un archivo de tipo 30. Nota: Este mandato está disponible para el almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema. lo que indica que son hexadecimales. se muestran cada 64 bytes de datos en una línea. Consulte “Inicio de sesión en la cuenta dshome” en la página 351 para obtener más información sobre cómo iniciar una sesión en la cuenta dshome. LIST. La clave es un valor de hasta 511 bytes.30. se genera una línea con la siguiente información. especifique la opción OVER. con 1 bit para cada bloque en el conjunto de bloques actual de izquierda a derecha.

FREECHAIN es mutuamente excluyente con ALL. ARRAY es mutuamente excluyente con ALL. CLEAR. Si no se especifica. FREECHAIN o DAEMON. pero puede incluirse en combinación con DCFILE. pero puede incluirse en combinación con DCFILE. USER puede especificarse con ALL. Almacenamiento en la memoria caché de disco de la etapa Hashed File 349 . FREECHAIN y DAEMON para limitar estas opciones a un usuario específico. ENTRY. pero puede incluirse en combinación con ENTRY. se cambia el estado de todos los grupos. ARRAY. DAEMON es mutuamente excluyente con ALL. DCFILE es mutuamente excluyente con ALL. coloca entradas en la cadena libre de conjuntos de bloques y cierra la entrada de archivo de memoria caché designada. DCFILE.| ALL| DCFILE | ENTRY | ARRAY | FREECHAIN | DAEMON] [USER x | SEMNO y] [STOP {DAEMON}] [ABORT] {DETAIL} El mandato tiene las opciones siguientes: Opciones Descripción FILE nombre_archivo Nombra el archivo para el que se va a cambiar el estado. ENTRY Libera el semáforo de entrada de archivo de memoria caché. ENTRY. CLOSE En colaboración con FORCEWRITE. DAEMON Libera el semáforo de daemon de memoria caché. establece la indicación de fecha y hora en 0. ENTRY. se cambia el estado de todos los archivos de memoria caché. se suponen todos los usuarios. ARRAY o DAEMON. ENTRY. FREECHAIN Libera el semáforo de cadena libre de conjuntos de bloques. ARRAY. USER x Identifica el ID de proceso del usuario que es propietario del semáforo que se va a liberar. Capítulo 9. y coloca una entrada al final de la cadena utilizada más recientemente. TODOS Libera todos los semáforos. Si no se especifica. FORCEWRITE Hace que se graben todas las grabaciones diferidas. ARRAY o FREECHAIN. pero puede incluirse en combinación con DCFILE. ARRAY Libera el semáforo de matriz de archivos de memoria caché.STAT Borra las estadísticas de un determinado archivo o de toda la memoria caché. FLUSHRO Libera los conjuntos de bloques de sólo lectura de la memoria caché. ENTRY. ALL es mutuamente excluyente con DCFILE. ARRAY. ENTRY es mutuamente excluyente con ALL. Si se omite. FREECHAIN y DAEMON. FREECHAIN o DAEMON. DCFILE Libera el semáforo de cadena de archivos de memoria caché. pero puede incluirse en combinación con DCFILE. GROUP zzz Identifica el número de grupo para el que se va a cambiar el estado. FREECHAIN o DAEMON. ARRAY.

Si se especifica DETAIL. borra todos los semáforos y estadísticas. y detiene el daemon.DEFER Difiere la grabación en el archivo.CACHE nombre_archivo El mandato contiene el siguiente componente: Componentes Descripción FILE nombre_archivo Nombra el archivo que se va a eliminar de la memoria caché de disco. Como mínimo. se muestran los pasos. WRITE. PRE. También debe especificarse ENTRY o ARRAY. STOP {DAEMON} Detiene el daemon de grabación asíncrona de la memoria caché de disco. Eliminación de archivos de la memoria caché de disco El administrador puede eliminar un archivo de la memoria caché de disco con el siguiente mandato: DECATALOG. El administrador puede precargar un archivo en modalidad de sólo lectura o de grabación en memoria caché en la memoria caché. Permanecerá ahí entre usos normales. Si se especifica ABORT. se suponen todos los semáforos de matriz o entrada. Inicio y detención del daemon de memoria caché El administrador puede iniciar y detener el daemon de memoria caché asíncrono en segundo plano (grabador). Colocación de los archivos de forma permanente en la memoria caché de disco El administrador puede colocar archivos específicos de forma permanente en la memoria caché de disco con el siguiente mandato del motor de servidor: CATALOG. los registros modificados se graban en el disco cuando el último usuario lo cierra. El archivo se desecha y se elimina de la memoria caché cuando el último usuario actual cierra el archivo.FILE. ABORT [DETAIL] Detiene todo.LOAD Carga los datos del archivo en la memoria caché. DETAIL es el único otro parámetro permitido. Consulte “Inicio de sesión en la cuenta dshome” en la página 351 para obtener más información sobre cómo iniciar una sesión en la cuenta dshome. Nota: Debe haber iniciado una sesión en la cuenta dshome. desecha todos los archivos. Si se omite.LOAD|WRITE.DEFER} El mandato contiene los siguientes componentes: Componentes Descripción FILE nombre_archivo Nombra el archivo que se va a colocar de forma permanente en la memoria caché de disco. 350 Guía del desarrollador de Server Job .SEMNO y Especifica el número de semáforos de matriz o entrada que se van a liberar.CACHE nombre_archivo {PRE. mientras está en modalidad de grabación diferida.FILE.

En Windows: Acerca de esta tarea Para iniciar una sesión en la cuenta de inicio de InfoSphere DataStage: En el indicador de mandatos. Cambie de directorio a la vía de acceso especificada. 2. Por ejemplo. si la vía de acceso es /u1/uv.CACHE [[START x ] | STOP] El mandato contiene los siguientes componentes: Componentes Descripción START Inicia el daemon de memoria caché asíncrono en segundo plano.dshome 3. Capítulo 9. STOP Detiene el daemon de memoria caché asíncrono en segundo plano. x se expresa en unidades de 10 milisegundos. Inicie una sesión como dsadm. x Identifica el periodo de pausa entre exploraciones.FILE. En UNIX: Procedimiento 1.CACHE y el mandato DAEMON.FILE. cambie al directorio del motor de servidor y emita el siguiente mandato: C:\IBM\InformationServer\Server\DSEngine\bin\dssh donde C:\IBM\InformationServer\Server\DSEngine es la ubicación del motor de servidor instalado. Inicie una sesión en la cuenta de inicio.FILE. bin/dssh Resultados Ahora está en la cuenta de inicio de InfoSphere DataStage. Ahora está en la cuenta de inicio. Inicio de sesión en la cuenta dshome Para iniciar una sesión en la cuenta de inicio de InfoSphere DataStage: Acerca de esta tarea El mandato CLEAR.CACHE requieren que inicie una sesión como administrador en la cuenta de inicio de IBM InfoSphere DataStage (dshome). Almacenamiento en la memoria caché de disco de la etapa Hashed File 351 . Determine la vía de acceso de dshome: cat /. el mandato es: cd /u1/uv 4. Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema El administrador puede utilizar los siguientes elementos ajustables en el archivo uvconfig para ajustar el rendimiento de la memoria caché de disco.El mandato es: DAEMON.

Los valores válidos son 4. Este elemento ajustable es específico de la memoria caché del sistema. que significa REJECT. Éste es el valor predeterminado. DCCATALOGPCT Especifica el porcentaje del total de almacenamiento intermedio de memoria caché de disco compartida que pueden poseer los archivos de datos catalogados para la memoria caché de disco. Los valores válidos son los siguientes: v 0 es el valor predeterminado e indica que el daemon de grabación en segundo plano está inactivo. El subsistema de memoria caché de disco está activo. La memoria caché de disco está inactiva. que significa ALLOW. 256. DCFLUSHPCT Especifica el porcentaje del total de almacenamiento intermedio de memoria caché de disco compartida propiedad de un archivo que puede estar en un estado de grabación diferida antes de desecharse en el disco.Elemento ajustable Descripción DISKCACHE Especifica el estado del subsistema de memoria caché de disco. DCMAXPCT Especifica el porcentaje del total de almacenamiento intermedio de memoria caché de disco compartida que puede poseer un archivo. v n. Este elemento ajustable es específico de la memoria caché del sistema. Los valores válidos son 128. expresada en unidades de 10 milisegundos. Los valores válidos son de 1 a 100. n indica que el daemon de grabación está activo. n es la cantidad de tiempo que se detiene el daemon de grabación entre dos grabaciones. n representa el tamaño de la memoria caché compartida de disco en megabytes. Este elemento ajustable es específico de la memoria caché del sistema. Se permiten valores del 1 al 512. 8. 16 y 32. Los valores válidos son de 1 a 100. DCWRITEDAEMON Especifica el estado del daemon de grabación en segundo plano de la memoria caché de disco compartida. que tiene un límite de 176 mb. El subsistema de memoria caché de disco está inactivo. 512 y 1024. 352 Guía del desarrollador de Server Job . Los valores válidos son de 1 a 100. Este elemento ajustable debe tener un valor positivo cuando utiliza la memoria caché pública de enlaces o la memoria caché del sistema. Los valores válidos son los siguientes: v -1. Los archivos abiertos en modalidad de memoria caché de grabación o de sólo lectura se procesan como si se hubieran abierto en modalidad de grabación/lectura. 80 es el valor predeterminado. 80 es el valor predeterminado. 50 es el valor predeterminado. v 0. 256 es el valor predeterminado. La memoria caché compartida está limitada a 512 mb en todas las plataformas. DCMODULUS Especifica el número de cadenas de almacenamiento intermedio de memoria caché de disco compartida en las que se divide un archivo. Los archivos abiertos en modalidad de memoria caché de grabación o de sólo lectura producen un error. DCBLOCKSIZE Especifica el tamaño de un almacenamiento intermedio de memoria caché de disco compartida en unidades de 1K (1024 bytes). excepto Compaq Tru64. 16 es el valor predeterminado. Este elemento ajustable es específico de la memoria caché del sistema. Este elemento ajustable es específico de la memoria caché del sistema.

Utilización del símbolo de euro en los sistemas sin soporte multilingüístico Si desea incluir el símbolo del euro en los archivos hash en los sistemas sin soporte multilingüístico. El almacenamiento en la memoria caché del sistema no está diseñado para utilizarse si sólo hay una etapa individual creando o leyendo el archivo. el rendimiento se resiente. si el motor del servidor se cuelga. Mejoras del rendimiento Un conjunto de archivos de motor de servidor puede almacenarse en la memoria caché en segmentos de memoria compartida de un tamaño determinado por el archivo uvconfig. Si se hace una referencia aleatoria a todos los grupos de un archivo y no todos entran en la memoria caché de disco. permite minimizar los límites de cuota de conjunto de bloques y reducir la posibilidad de archivos dañados al mantener el archivo en un estado más coherente. el archivo puede dañarse. no hay activo ningún daemon de caché de grabación aparte. el rendimiento puede ser peor que si no se aplica ningún almacenamiento en la memoria caché. Con el almacenamiento en la memoria caché de grabación diferida. La actualización lenta es la actualización bajo demanda aumentada por un daemon de grabador asíncrono aparte. Almacenamiento en la memoria caché de grabación diferida Este tipo de almacenamiento en la memoria caché del sistema ofrece el máximo rendimiento. ya sea como archivos de sólo lectura o para grabar y actualizar archivos. se mejora el rendimiento. Almacenamiento en la memoria caché de disco de la etapa Hashed File 353 . los bloques diferidos reales de un conjunto de bloques que se graban en un disco están determinados por un algoritmo de antigüedad de utilizado menos recientemente. evita que se dañen los archivos lo máximo posible si se cuelga el motor del servidor. El archivo uvconfig en el directorio de inicio de IBM InfoSphere DataStage tiene varios elementos ajustables que se utilizan en la memoria caché de disco (consulte “Ajuste de la memoria caché pública de Capítulo 9. Si una mayoría de los grupos referenciados están en esta memoria caché dinámica. No obstante. Consulte la sección “Utilización del símbolo de euro en los sistemas sin soporte multilingüístico” en la página 44 para obtener información. Trabajo individual frente a múltiples trabajos El almacenamiento en la memoria caché del sistema permite ejecutar simultáneamente varios trabajos o etapas para compartir los mismos archivos del motor de servidor. Asimismo. Almacenamiento en la memoria caché de grabación inmediata Este tipo de almacenamiento en la memoria caché del sistema tiene un rendimiento más lento que el almacenamiento en la memoria caché de grabación diferida porque las grabaciones en el archivo de disco físico se producen al mismo tiempo que se actualiza la memoria caché. Aunque esta opción reduce el rendimiento. si el sistema operativo de host tiene menos memoria física que el tamaño de la memoria caché de disco configurada. A efectos de actualización bajo demanda. Consideraciones sobre el rendimiento Tenga en cuenta lo siguiente para mejorar el rendimiento de los trabajos. El daemon de grabación no es necesario para la actualización diferida. Aunque esta opción proporciona el máximo rendimiento general. deberá realizar varios pasos para dar soporte al símbolo. cuando está activo. y los bloques actualizados sólo se graban en el disco cuando se excede la cuota de conjunto de bloques de un archivo o cuando se ha cerrado la última referencia abierta al archivo. ya que se difieren las grabaciones síncronas más costosas en el archivo de disco físico.

8k. la E/S física aumentará y las cadenas de matrices tendrán una mayor longitud. Por este motivo. Cuando este número disminuye. especialmente para los archivos grandes. La memoria caché de disco sabe cuándo ningún proceso activo requiere acceso al bloque de un archivo y lo libera si es necesario. sólo un pequeño subconjunto de los bloques de un archivo residirán en la memoria caché. Cada archivo será propietario de m cadenas de conjuntos de bloques (donde m se configura como 64. 512 o 1024. A continuación. DCMODULUS tiene algún efecto en el tiempo de ejecución. lo que ralentiza el sistema. El valor predeterminado de DCBLOCKSIZE es 16. Cualquier plataforma puede mantener un subconjunto de un archivo o una tabla en la memoria caché con la liberación de los conjuntos de bloques antiguos cuando se necesitan nuevos conjuntos de bloques. que se establece con el elemento ajustable DISKCACHE. se proporcionan ejemplos de valores ajustables de forma que un archivo individual se mantiene en memoria con longitudes aceptables de cadena de conjuntos de bloques con referencia de matriz que deben explorarse secuencialmente para encontrar un bloque. Los bloques de memoria caché de disco se almacenan en n conjuntos de bloques (donde n se configura como 4k. Valores de ejemplo Tamaño de archivo 32 mb 32 mb 64 mb 64 mb 160 mb 320 mb 1024 mb 1024 mb 1024 mb 1024 mb DCBLOCKSIZE 8k 8k 8k 16k 16k 16k 16k 16k 16k 32k DCMODULUS 128 256 256 256 256 512 256 512 1024 1024 Longitud media de cadena de conjunto de bloques 32 16 32 16 40 40 256 128 64 32 354 Guía del desarrollador de Server Job . pero el administrador puede modificar los elementos ajustables para permitir el manejo eficaz de un subconjunto pequeño. Si el tamaño de DISKCACHE es inadecuadamente pequeño. DCBLOCKSIZE debe ser mayor que 16 sólo si la plataforma puede manejar las solicitudes de E/S física ampliadas en una E/S en el subsistema de disco. se establece en un valor lo suficientemente alto para contener todo el archivo o una gran proporción (90-95%) de los grupos referenciados. 16k o 32k. se produce la hiperpaginación en la memoria caché de disco. El inconveniente es que hay menos estructuras de archivo de memoria caché de disco que entran en un almacenamiento intermedio de caché. 256. lo que significa la eliminación de algunos de la agrupación de almacenamientos intermedios disponibles. lo que supone un mayor tiempo para ejecutar una búsqueda secuencial de una entrada. El rendimiento óptimo se consigue cuando el tamaño de la memoria caché de disco compartida. la longitud de las cadenas activas de los almacenamientos intermedios de DCBLOCKSIZE aumenta. el tamaño de separación de archivos está restringido a una potencia de 1024 bytes. siendo 16k el valor predeterminado) para reducir el tiempo de búsqueda secuencial y permitir la lectura previa de los bloques en el área del solicitado. Cuando hay varios archivos de gran tamaño en la memoria caché. 128. El establecimiento de DCMODULUS en 1024 es generalmente el óptimo para los archivos grandes (de más de 75 mb). DCMAXPCT controla el porcentaje máximo de la memoria caché que puede ocupar un archivo. Una forma de reconocerlo es que la plataforma tenga matrices de discos. siendo 256 el valor predeterminado). Tabla 19. Si es menor.enlaces y la memoria caché del sistema” en la página 351. DCFLUSHPCT proporciona al administrador control sobre el algoritmo de sustitución de conjuntos de bloques para evitar la inanición de sólo lectura.

Almacenamiento en la memoria caché de disco de la etapa Hashed File 355 . que se especifica en DCWRITEDAEMON. En una plataforma de multiprocesador. puede ser muy bajo. los dos archivos deben considerarse cuando se establece DCMAXPCT. en un procesador individual. el periodo de pausa del daemon de grabación. Por lo tanto. el valor debe ser 10 o superior. Capítulo 9. Valores de ejemplo (continuación) Tamaño de archivo 2048 mb DCBLOCKSIZE 32k DCMODULUS 1024 Longitud media de cadena de conjunto de bloques 64 Los archivos de tipo 30 son realmente dos archivos: uno para los grupos primarios y el otro para los bloques de desbordamiento.Tabla 19. El valor de DCWRITEDAEMON determina la cantidad de tiempo que se detiene el daemon de grabación entre dos grabaciones.

356 Guía del desarrollador de Server Job .

También permite utilizar lectores de pantalla y otras tecnologías de asistencia para acceder a la documentación. Los módulos y las interfaces de usuario de los productos de IBM InfoSphere Information Server no son totalmente accesibles. Documentación accesible Se proporciona documentación accesible sobre los productos de InfoSphere Information Server en un Information Center. consulte la información de accesibilidad de productos de IBM en http://www.Accesibilidad de los productos Puede obtener información sobre el estado de accesibilidad de los productos de IBM. IBM y la accesibilidad Consulte el IBM Human Ability and Accessibility Center para obtener más información sobre el compromiso de IBM con respecto a la accesibilidad.html.0. El programa de instalación instala los siguientes módulos y componentes del producto: v IBM InfoSphere Business Glossary v IBM InfoSphere Business Glossary Anywhere v IBM InfoSphere DataStage v IBM InfoSphere FastTrack v v v v IBM IBM IBM IBM InfoSphere InfoSphere InfoSphere InfoSphere Information Analyzer Information Services Director Metadata Workbench QualityStage Para obtener información sobre el estado de accesibilidad de los productos de IBM.ibm. El Information Center presenta la documentación en formato XHTML 1.com/able/product_accessibility/ index. © Copyright IBM Corp. 1997. 2011 357 . El formato XHTML permite establecer propiedades de visualización en el navegador. que se puede ver en la mayoría de navegadores web.

358 Guía del desarrollador de Server Job .

Nota: Desde IBM InfoSphere FastTrack e IBM InfoSphere Information Server Manager. v Pulse el enlace Ayuda de la parte superior derecha de la interfaz de cliente. v Pulse la tecla F1. ya sea en línea o a través de su representante local de IBM.com © Copyright IBM Corp.doc/ichomepage.Por ejemplo. El Information Center se instala como un servicio común con IBM InfoSphere Information Server.ibm.Acceso a la documentación de productos La documentación se proporciona en diversas ubicaciones y formatos. Obtener la documentación en PDF y en copia impresa v También puede disponer de un subconjunto de manuales en archivos PDF mediante el instalador de software de InfoSphere Information Server y el soporte de distribución. Nota: La tecla F1 no funciona en clientes Web. El nombre_host es el nombre del sistema de capa de servicios en el que está instalado en Information Center. así como documentación completa para todos los módulos de productos de la suite.boulder.com/software/data/rcf/ v Correo electrónico: comments@us.home. El resto de manuales en archivos PDF está disponible en línea y pueden accederse desde este documento de soporte: https://www. la dirección Web tendrá este formato: http://iisdocs2:9080/infocenter/topic/ com.ibm.iis. y número_puerto es el número de puerto para InfoSphere Information Server.jsp.swg. vaya al Centro de publicaciones de IBM en http://www. en un Information Center para toda la suite y en manuales en archivos PDF.iis. en un sistema Microsoft® Windows® Server denominado iisdocs2.productization. en el sitio web de IBM http://publib. Acceso a Information Center Puede utilizar los métodos siguientes para abrir el Information Center instalado.html. v Utilice un navegador Web para acceder al Information Center instalado. Puede abrir el Information Center desde el producto instalado o bien desde un navegador Web.com/infocenter/iisinfsv/v8r7/index.ibm.ibm.nav. La tecla F1 abre generalmente el tema que describe el contexto actual de la interfaz de cliente.ibm. Especifique la siguiente dirección en un navegador Web: http:// host_name:port_number/infocenter/topic/com.wss. Para solicitar publicaciones en línea. Seleccione Ayuda > Abrir Information Center para abrir el Information Center de toda la suite. El número de puerto predeterminado es 9080. Facilitar comentarios sobre la documentación Puede enviar sus comentarios sobre la documentación de la siguiente manera: v Formulario de comentarios en línea de los lectores: www. aunque no haya iniciado sesión en el producto.ibm.iisinfsv. También hay disponible un subconjunto del Information Center.im. 1997.com/support/docview.com/e-business/linkweb/publications/servlet/pbi. El Information Center contiene una ayuda para la mayoría de interfaces del producto.iisinfsv. 2011 359 .doc/dochome/iisinfsrv_home.ibm.html. el elemento Ayuda principal abre un sistema de ayuda local. v También puede solicitar publicaciones de IBM en formato impreso. también en la ayuda que se abre directamente desde la interfaz del producto.productization.wss?uid=swg27008803&wv=1.swg. que se renueva periódicamente.im.

360 Guía del desarrollador de Server Job .

Enlaces a sitios Web no IBM Este Information Center puede suministrar enlaces o referencias a sitios Web y recursos que no son de IBM. incluso a uno que pueda contener el logotipo de IBM. 1997. © Copyright IBM Corp. En consecuencia. 2011 361 . servicios. Cuando acceda a un sitio Web no IBM. IBM no toma parte ni es responsable de ninguna transacción que el cliente pueda establecer con terceros. aunque haya tenido conocimiento de ellos (o utilice un enlace con ellos) desde un sitio de IBM. el cliente tiene conocimiento y acepta que IBM no es responsable de la disponibilidad de tales sitios o recursos externos. garantías ni contrae otros compromisos en relación a sitios Web no pertenecientes a IBM o a recursos de terceros (incluido cualquier sitio Web de Lenovo) al que pueda hacerse referencia en cualquier sitio de IBM. troyanos y otros programas potencialmente destructivos y proteger la información según estime adecuado. Además. gusanos. Un enlace a un sitio Web no IBM no implica que IBM se haga responsable del contenido o de la utilización de tal sitio Web o de su propietario. IBM no ofrece representación. Es responsabilidad del cliente tomar precauciones para protegerse de los virus. tenga en cuenta que es independiente de IBM y que IBM no controla el contenido del mismo. ni tampoco del contenido. productos u otros materiales situados en dichos sitios o recursos o disponibles desde ellos. ser accesible o estar enlazado a él.

362 Guía del desarrollador de Server Job .

Cualquier referencia a un producto. 1623-14. © Copyright IBM Corp. PERO SIN LIMITARSE A ELLAS. a la siguiente dirección: IBM Director of Licensing IBM Corporation North Castle Drive Armonk. servicios o características que se describen en este manual. La posesión de este documento no otorga ninguna licencia sobre dichas patentes. programa o servicio funcionalmente equivalente que no vulnere ninguno de los derechos de propiedad intelectual de IBM. póngase en contacto con el departamento de la propiedad intelectual de IBM de su país o envíe las consultas. dichos cambios se incorporarán en nuevas ediciones de la publicación. NY 10504-1785 EE. INCLUIDAS. Es posible que IBM realice mejoras o efectúe cambios en el(los) producto(s) y/o el(los) programa(s) descritos en esta publicación en cualquier momento sin previo aviso. por escrito. NI EXPLÍCITA NI IMPLÍCITA. La información contenida en estos sitios Web no forma parte de la información del presente producto IBM. por escrito. LAS GARANTÍAS IMPLÍCITAS DE NO VULNERACIÓN DE DERECHOS. Algunos estados no permiten la declaración de limitación de responsabilidad de garantías expresas o implícitas en determinadas transacciones. Shimotsuruma. es responsabilidad del usuario evaluar y verificar el funcionamiento de cualquier producto. 1997. 2011 363 .Avisos y marcas registradas La presente información se ha desarrollado para productos y servicios ofrecidos en Estados Unidos. es posible que esta declaración no se aplique en su caso. SIN GARANTÍA DE NINGUNA CLASE. programa o servicio de IBM. Sin embargo. Yamato-shi Kanagawa 242-8502 Japón El párrafo siguiente no es aplicable al Reino Unido ni a ningún país en donde tales disposiciones sean incompatibles con la legislación local: INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA ESTA PUBLICACIÓN TAL CUAL. programa o servicio que no sea de IBM. En su lugar se puede utilizar cualquier producto. Para formular consultas relacionadas con el juego de caracteres de doble byte (DBCS). a la siguiente dirección: Intellectual Property Licensing Legal and Intellectual Property Law IBM Japan Ltd. Avisos Es posible que IBM no comercialice en otros países los productos. UU. Puede enviar consultas sobre licencias. Esta información podría contener imprecisiones técnicas o errores tipográficos. La información de este documento está sujeta a cambios periódicos. Por consiguiente. IBM puede tener patentes o solicitudes de patentes en tramitación que afecten al tema tratado en este documento. Consulte al representante local de IBM para obtener información sobre los productos y servicios que actualmente pueden adquirirse en su zona. Las referencias hechas en esta publicación a sitios Web que no son de IBM se proporcionan sólo para la comodidad del usuario y no constituyen un aval de esos sitios Web. programa o servicio de IBM no pretende afirmar ni implicar que sólo se pueda utilizar dicho producto. COMERCIALIZACIÓN O IDONEIDAD PARA UN FIN DETERMINADO. y el usuario es responsable de la utilización de dichos sitios.

sin contraer por ello ninguna obligación con el remitente. la compatibilidad ni ninguna otra afirmación sobre productos ajenos a IBM. Además. utilizar o distribuir programas de aplicación que se ajusten a la interfaz de programación de aplicaciones para la plataforma operativa para la que se han escrito los programas de ejemplo. empresas. Para ilustrarlos de la forma más completa posible. sin pagar a IBM. CA 95141-1003 EE. Los resultados reales pueden variar. marcas y productos. Este manual contiene ejemplos de datos e informes que se utilizan en operaciones comerciales diarias. por lo tanto.IBM puede utilizar o distribuir cualquier información que se le facilite de la manera que considere adecuada.UU. Los datos de rendimiento contenidos en este documento se obtuvieron en un entorno controlado. y no existe ninguna garantía de que dichas mediciones sean las mismas en sistemas de disponibilidad general. Esta información sólo tiene como objeto la planificación. Estos ejemplos no se han probado bajo todas las condiciones posibles. incluido en algunos casos el pago de una tarifa. LICENCIA DE COPYRIGHT: Esta información contiene programas de aplicación de ejemplo en código fuente que ilustran técnicas de programación en diferentes plataformas operativas. La información relacionada con productos ajenos a IBM se ha obtenido a partir de los proveedores de dichos productos. Todos estos nombres son ficticios y cualquier similitud con nombres y direcciones utilizados por una empresa real es totalmente fortuita. Algunas mediciones pueden haberse efectuado en sistemas a nivel de desarrollo. IBM no ha probado dichos productos ni puede confirmar la precisión del rendimiento. Puede copiar. es posible que algunas mediciones se hayan estimado mediante extrapolación. 364 Guía del desarrollador de Server Job . IBM. los ejemplos incluyen nombres de personas. sujeta a los términos y condiciones apropiados. El programa bajo licencia descrito en este documento y todo el material bajo licencia asociado a él los proporciona IBM según los términos del Acuerdo de Cliente de IBM. La información de este documento está sujeta a cambios antes de que los productos descritos estén disponibles. no puede garantizar ni dar por sentada la fiabilidad. es posible que los resultados obtenidos en otros entornos operativos varíen de forma significativa. sin garantía de ninguna clase. modificar y distribuir estos programas de ejemplo de cualquier forma. IBM no se hace responsable de los daños que se hayan podido causar debido al uso de los programas de ejemplo. y sólo representan objetivos. el Acuerdo Internacional de Programas Bajo Licencia de IBM o cualquier acuerdo equivalente entre el usuario e IBM. los anuncios que han publicado u otras fuentes de dominio público. Los licenciatarios de este programa que deseen obtener información sobre él con el fin de habilitar: (i) el intercambio de información entre programas creados de forma independiente y otros programas (incluido éste) y (ii) el uso mutuo de la información intercambiada. Los usuarios de este documento deben verificar los datos aplicables a su entorno específico. con la finalidad de desarrollar. la capacidad de mantenimiento ni el funcionamiento de dichos programas. deben ponerse en contacto con: IBM Corporation J46A/G4 555 Bailey Avenue San José. Todas las declaraciones de intenciones de IBM están sujetas a cambio o cancelación sin previo aviso. Por consiguiente. Las preguntas sobre las prestaciones de productos que no son de IBM deben dirigirse a los proveedores de esos productos. Los programas de ejemplo se suministran "TAL CUAL". Dicha información puede estar disponible.

Todas las copias o partes de estos programas de ejemplo, o cualquier trabajo derivado, deberán incluir un aviso de copyright como el siguiente: © (nombre de la empresa) (año). Partes de este código provienen de programas de ejemplo de IBM Corp. © Copyright IBM Corp. _entrar el año o los años_. Reservados todos los derechos. Si está visualizando esta información en copia software, es posible que las fotografías o las ilustraciones en color no aparezcan.

Marcas registradas
IBM, el logotipo de IBM e ibm.com son marcas registradas de International Business Machines Corp. en muchos países o regiones de alrededor del mundo. Otros nombres de productos y servicios pueden ser marcas registradas de IBM u otras empresas. Encontrará una lista actualizada de las marcas registradas de IBM en www.ibm.com/legal/copytrade.shtml. Los términos siguientes son marcas registradas de otras compañías: Adobe es una marca registrada de Adobe Systems Incorporated en los Estados Unidos y/o en otros países. IT Infrastructure Library es una marca registrada de Agencia Central de Telecomunicaicones e informática and Telecommunications Agency que es ahora parte de la Oficina de Comercio Gubernamental. Intel, el logotipo de Intel, Intel Inside, el logotipo de Intel Inside, Intel Centrino, el logotipo de Intel Centrino, Celeron, Intel Xeon, Intel SpeedStep, Itanium y Pentium son marcas comerciales o marcas registradas de Intel Corporation o de sus subsidiarias en los Estados Unidos y en otros países. Linux es una marca registrada de Linus Torvalds en los Estados Unidos y/o otros países. Microsoft, Windows, Windows NT y el logotipo de Windows son marcas registradas de Microsoft Corporation en los Estados Unidos y/o otros países. ITIL es un marca registrada y es una marca registrada comunitaria de la Oficina de Comercio Gubernamental, y está registrada en la Oficina de marcas registradas y patentes de los EE.UU. UNIX es una marca registrada de The Open Group en Estados Unidos y en otros países. Cell Broadband Engine es una marca registrada de Sony Computer Entertainment, Inc. en los Estados Unidos y/o en otros países y se utiliza bajo la licencia correspondiente. Java y todas las marcas registradas y logotipos basados en Java son marcas registradas de Oracle y/o sus afiliadas. El servicio postal de los Estados Unidos (United States Postal Service) es propietario de las siguientes marcas registradas: CASS, CASS Certified, DPV, LACSLink, ZIP, ZIP + 4, ZIP Code, Post Office, Postal Service, USPS y United States Postal Service. IBM Corporation tiene titularidad no exclusiva de licencias de DPV y LACSLink de United States Postal Service. Otros nombres de empresas, productos o servicios pueden ser marcas registradas o marcas de servicio de otros.

Avisos y marcas registradas

365

366

Guía del desarrollador de Server Job

Cómo ponerse en contacto con IBM
Puede ponerse en contacto con IBM para obtener soporte al cliente, servicios de software, información sobre el producto e información general. También puede facilitar comentarios a IBM acerca de productos y documentación. La siguiente tabla enumera los recursos para soporte al cliente, servicios de software, formación, e información de productos y soluciones.
Tabla 20. Recursos de IBM Recurso Portal de soporte de IBM Descripción y ubicación Puede personalizar la información de soporte seleccionando los productos y los temas que sean de su interés en www.ibm.com/support/entry/portal/ Software/Information_Management/ InfoSphere_Information_Server Puede encontrar información sobre servicios de software, de tecnologías de la información y de consultoría empresarial en el sitio de soluciones, en www.ibm.com/businesssolutions/ Puede gestionar enlaces a sitios web de IBM y a información que satisfaga sus necesidades específicas de soporte técnico creando una cuenta en el sitio Mi IBM: www.ibm.com/account/ Puede obtener información sobre formación técnica y servicios de educación diseñados para personas, empresas y organizaciones públicas, a fin de adquirir, mantener y optimizar sus habilidades de TI en http://www.ibm.com/software/sw-training/ Puede contactar con un representante de IBM para obtener información sobre soluciones en www.ibm.com/connect/ibm/us/en/

Servicios de software

Mi IBM

Formación y certificación

Representantes de IBM

Facilitar comentarios
La tabla siguiente describe la forma en que se facilitan comentarios a IBM acerca de productos y documentación de productos.
Tabla 21. Facilitar comentarios a IBM Tipo de comentarios Comentarios sobre el producto Acción Puede proporcionar comentarios generales sobre productos mediante la encuesta de consumo en el sitio web www.ibm.com/software/data/info/consumabilitysurvey

© Copyright IBM Corp. 1997, 2011

367

Tabla 21. Facilitar comentarios a IBM (continuación) Tipo de comentarios Comentarios sobre la documentación Acción Para realizar comentarios acerca del Information Center, pulse el enlace Comentarios situado en la parte superior derecha de cualquiera de los temas del Information Center. También puede enviar sus comentarios sobre los manuales en archivos PDF, el Information Center o cualquier otra documentación de los siguientes modos: v Formulario de comentarios en línea de los lectores: www.ibm.com/software/data/rcf/ v Correo electrónico: comments@us.ibm.com

368

Guía del desarrollador de Server Job

Índice Caracteres Especiales
[ ] operador 170 almacenar en memoria caché de disco (continuación) rendimiento del trabajo almacenamiento en la memoria caché de grabación diferida 353 almacenamiento en la memoria caché de grabación inmediata 353 trabajo individual frente a múltiples trabajos 353 utilizando la memoria caché dinámica 353 requisitos de AIX 339 secuencias de datos múltiples 338 símbolo del euro 353 terminología 336 tipos 338 visión general 335 anteriores/posteriores, subrutinas crear 140 descripción 137 incorporadas 332 archivos de texto acceso a remotas 68 fusionar 88, 95 archivos estructurados jerárquicamente, conversión a tablas relacionales 27, 38 archivos por lotes DOS, etapa Command 60 ASCII de 7 bits 20 asistente para Importar definiciones de funciones de transformación 146 asistentes Importar definiciones de funciones de transformación 146 avisos legales 363 Categoría Ordenación definición 22 Categoría Tipo C definición 22 categorías, consulte categorías de entorno local 21 categorías de entorno local Clasificar 22 Hora 21 Monetaria 21 Numérico 21 Tipo C 22 columnas GROUP y OCCURS 36 columnas OCCURS y GROUP 36 compilar código en rutinas BASIC 141 resolución de problemas de errores 132 trabajos 131 conductos con nombre 45 consideraciones sobre la fecha, etapas Complex Flat File 38 convenciones nacionales 20, 22 convenciones nacionales 20, 22 correlaciones de juegos de caracteres, definición etapa Command 62 Etapas Complex Flat File 29 etapas Folder 38 etapas Merge 89 etapas Sequential File 45 cuenta dshome, iniciar sesión 351

A
accesibilidad de los productos accesibilidad 357 acceso de archivo remoto 69 AIX, requisitos de memoria caché de disco 339 almacenamiento en la memoria caché, consulte almacenar en memoria caché de disco 338 almacenamiento en la memoria caché de disco de archivo hash, consulte almacenar en memoria caché de disco 335 almacenamiento en la memoria caché del sistema ajustar 351 directrices 338 preparación 338, 340 utilizar 342 almacenamiento en la memoria caché privada de enlaces directrices 338 preparación 338 utilizar 341 almacenamiento en la memoria caché pública de enlaces ajustar 351 directrices 338 preparación 338, 340 utilizar 342 almacenar en memoria caché de disco ajustar 351 almacenamiento en la memoria caché del sistema 338, 342, 351 almacenamiento en la memoria caché privada de enlaces 338, 341 almacenamiento en la memoria caché pública de enlaces 338, 342, 351 archivos hash alterar 343 cambiar estado 348 colocar en la memoria caché 350 crear 342, 343 eliminar de la memoria caché 350 obtener el estado 344 cuenta dshome, iniciar sesión 351 daemon de memoria caché, iniciar/detener 350 eficacia de los procesos 338 funcionalidad 335 mandatos de servidor 343 preparación 338, 340

D
daemon de memoria caché, iniciar/detener 350 definiciones de columna campos clave 58 clave 57 elemento de datos 57, 58 factor de escala 57, 58 longitud 57, 58 nombre de columna 57, 58 depurador barra de herramientas 128 trabajos de servidor 127 derivaciones, véase derivaciones de columna 115 derivaciones de columna de salida, definir 115 editar varias 116 documentación del producto acceder 359 DSSetDisableJobHandler, función 214 DSSetDisableProjectHandler, función 215

B
barras de herramientas depurador 128 Editor de transformador 109 búsqueda de múltiples filas 119

C
campo clave 58 carácter raíz 21 caracteres almacenamiento 19 ASCII de 7 bits[caracteres siete] 20 coma decimal 21 caracteres de almacenamiento Categoría de hora definición 21 Categoría monetaria definición 21 Categoría numérica definición 21

19

© Copyright IBM Corp. 1997, 2011

369

E
Editor de expresiones 123 Editor de transformador 108 área de enlaces 109 área de metadatos 109 barra de herramientas 109 menús de atajos 110 ejemplos columnas de giros 97 funciones de transformación 333 subrutinas anteriores y posteriores 332 en memoria caché, archivos hash alterar 343 cambiar estado 348 colocar en la memoria caché de disco 350 crear 342, 343 eliminar de la memoria caché de disco 350 obtener el estado 344 enlaces de rechazo 111 entornos locales visión general 20 equijoins 111 errores compilación 132 etapa Command programas BASIC 64 terminología 61 visión general 60 Etapa Command enlace de entrada 60 enlace de salida 60 funcionalidad 60 mandato dsjob 64 mandatos TCL 64 página Entrada 61, 63 Página Etapa 61 página Salida 61, 64 Separador Columnas página Entrada 63 página Salida 64 separador General Página Etapa 61 Separador General página Entrada 63 página Etapa 62 página Salida 64 separador Soporte multilingüístico 61, 62 utilizar mandatos 64 etapas incorporadas 1 suplementarias 1, 2 etapas Aggregator enlace de entrada 55 Separador General Página Etapa 56 Etapas Aggregator enlaces de salida 56 ordenar los datos de entrada 57 página Entradas 56 Página Etapa 56 página Salidas 58 Separador Columnas página Entradas 57

Etapas Aggregator (continuación) Separador Columnas (continuación) página Salidas 58 Separador General página Entradas 57 página Salidas 58 subrutinas anteriores y posteriores 56 visión general 55 Etapas Complex Flat File columnas GROUP y OCCURS 36 consideraciones sobre la fecha 38 enlaces de salida 27, 30 funcionalidad 28 gestión de OCCURS paralelas 35 página Etapa 29, 30 página Salida 30, 37 proceso de metadatos 35 REDEFINES 37 separador Columnas de origen 33 separador Criterios de selección 37 separador General página Salida 33 Separador General página Salida 30 separador Seleccionar columnas 36 separador Soporte multilingüístico 29 terminología 28 valores del campo Descripción 36 visión general 27 etapas Folder página Entradas 39 Página Etapa 38 página Salidas 39 Separador Columnas página Entradas 39 página Salidas 39 Separador General 38 Separador Propiedades 39 separador Soporte multilingüístico 38 visión general 38 etapas FTP Plug-in enlaces de entrada 69 enlaces de salida 69 funcionalidad 69 propiedades 70, 82 representación de datos 82, 83 terminología 70 visión general 68 etapas Hashed File enlaces de entrada 40 enlaces de salida 40 opciones de creación de archivo 42 página Entradas 41 Página Etapa 40 página Salidas 42 Separador Columnas página Entradas 41 página Salidas 43 Separador General página Entradas 41 Página Etapa 40 página Salidas 43 separador Selección 43 símbolo del euro 44

etapas Hashed File (continuación) vía de acceso de directorio 40 visión general 40 etapas InterProcess, véase etapas IPC 65 etapas IPC enlace de entrada 68 enlace de salida 68 página Entradas 68 Página Etapa 68 página Salidas 68 Separador Columnas página Entradas 68 página Salidas 68 Separador General página Entradas 68, 87 Página Etapa 68, 86 página Salidas 68, 88 Separador Propiedades 68 visión general 65 etapas Link Collector enlaces de entrada 85 enlaces de salida 85 página Entradas 85 Página Etapa 83 página Salidas 85 para optimizar el rendimiento de los trabajos 9, 83 Separador Columnas página Entradas 85 página Salidas 85 separador General Página Etapa 84 Separador General página Entradas 85 Página Etapa 83 página Salidas 85 separador Propiedades 84 subrutinas anteriores y posteriores 84 visión general 83 etapas Link Partitioner enlace de entrada 85 enlaces de salida 85 página Entradas 87 Página Etapa 86 página Salidas 88 para optimizar el rendimiento de los trabajos 9, 85 Separador Columnas página Entradas 87 página Salidas 88 separador Propiedades 87 subrutinas anteriores y posteriores 87 visión general 85 etapas Merge enlaces de salida 88 funcionalidad 88 página Etapa 89 Página Etapa 90 página Salida 90, 95 Separador Correlación 94, 95 Separador General página Etapa 89 página Salida 90, 91 separador Propiedades de archivo de entrada 91, 94

370

Guía del desarrollador de Server Job

etapas Merge (continuación) separador Columnas de primer archivo 92, 94 separador Columnas de segundo archivo 92, 94 separador Formato de primer archivo 91, 92 separador Formato de segundo archivo 91, 92 separador Soporte multilingüístico 89 tamaño de archivo de entrada, ajustar 90 tareas necesarias 88 visión general 2, 88 etapas Pivot ejemplos 97 enlaces de salida 97 funcionalidad 96 página Entradas 97 página Salidas 99 Separador Columnas página Entradas 97 página Salidas 97 visión general 2, 96 etapas Row Merger enlace de entrada 99 enlace de salida 99 funcionalidad 99 página Entrada 99, 100 Página Etapa 99 página Salida 101 Separador Columnas página Entrada 100 página Salida 101 separador Formato 100 separador General página Entrada 100 Separador General Página Etapa 99 página Salida 101 visión general 99 etapas Row Splitter enlace de entrada 101 enlace de salida 101 funcionalidad 101 página Entrada 102 Página Etapa 101 página Salida 102, 103 Separador Columnas página Entrada 102 página Salida 103 separador Formato 102, 103 separador General página Salida 102 Separador General página Entrada 102 Página Etapa 101 visión general 101 etapas Sequential File enlaces de entrada 44 enlaces de salida 44 página Entradas 46 Página Etapa 45 página Salidas 48 Separador Columnas página Entradas 47

etapas Sequential File (continuación) Separador Columnas (continuación) página Salidas 49 separador Formato página Entradas 46 página Salidas 48 Separador General página Entradas 46 Página Etapa 45 página Salidas 48 separador Soporte multilingüístico 45 terminadores de línea 45 visión general 44 etapas Sort enlace de salida 104 mejorar rendimiento 104 Etapas Sort criterios de ordenación 105, 106 enlace de entrada 104 funcionalidad 104 mejorar rendimiento 105 propiedades 106, 108 propiedades configurables 104, 105 visión general 103 etapas suplementarias 1, 2 etapas Transformer Editor de expresiones 123 rechazos 120 Etapas Transformer conceptos básicos 110 edición 112 enlaces de entrada 110 enlaces de salida 111 orden de enlaces 121 página Entradas 126 Página Etapa 126 página Salidas 126 propiedades 126 restricciones 120 subrutinas anteriores y posteriores 120 variables de la etapa local 122 varias derivaciones 116 visión general 108 expresión de formato 228 expresiones clave de columna de entrada 119 definición 137 edición 116, 123 validación 125 expresiones de clave, columna de entrada 119

F
función ACos 276 función Alpha 172 función Ascii 173 función ASin 276 función ATan 276 función BitAnd 174 función BitNot 174 función BitOr 174 función BitReset 174 función BitSet 174 función BitTest 174

función BitXOr 174 función Byte 176 función ByteLen 176 función ByteType 176 función ByteVal 177 función Cats 179 función Char 180 función Checksum 180, 186 función Col1 181 función Col2 182 función Compare 184 función Convert 185 función Cos 276 función CosH 276 función Count 186 función DCount 187 función de fecha 187 función Div 189 función DownCase 190 función DQuote 190 función DSDetachJob 192 función DSGetCustInfo 193 función DSGetIPCPageProps 208 función DSGetJobInfo 193 función DSGetJobMetaBag 196 función DSGetLinkInfo 197 función DSGetLinkMetaData 198 función DSGetLogEntry 199 función DSGetLogEventIds 200 función DSGetLogSummary 200, 201 función DSGetNewestLogId 201, 202 función DSGetParamInfo 202 función DSGetProjectInfo 204 función DSGetStageInfo 204 función DSGetStageLinks 206 función DSGetStagesOfType 207 función DSGetStageTypes 207 función DSGetVarInfo 207 función DSLogEvent 209 función DSLogFatal 209 función DSLogInfo 210 función DSLogWarn 210 función DSSetGenerateOpMetaData 215 función DSSetJobLimit 215, 216 función DSSetParam 216 función DSStopJob 217 función DSTransformError 218 función Dtx 220 función Ebcdic 221 función Ereplace 223 función Exchange 224 función Exp 224 función Field 225 función FieldStore 226 Función FIX 227 función Fmt 227 función FmtDP 232 función Fold 232 función FoldDP 233 función GetLocale 236 función Iconv 238 función Index 246 función InMat 246 función INSERT y sentencia LOCATE 250 función Int 247 función Left 248 Índice

371

140 recuadro de diálogo Sustitución de expresiones 116 recuadros de diálogo Buscar 142 Buscar y sustituir 113 edición de metadatos de columna 33 Guardar definición de tabla 93 Opciones de creación de archivo 42 Rutina de servidor 138 Seleccionar desde servidor 89 Sustitución de expresiones 116 recurso de coincidencia automática de columnas 116 REDEFINES 37 reglas de prioridad. 99 definición 96 ejemplos 97 guardar código en rutinas BASIC R 141 recuadro de diálogo Buscar 142 recuadro de diálogo Buscar y sustituir 113 Recuadro de diálogo de rutina página Creador 138 Página de códigos 139 Página Dependencias 139 Página General 138 utilizar Buscar 142 utilizar Sustituir 142 recuadro de diálogo Editar metadatos de columna 33 recuadro de diálogo Examinar. 65 mandatos TCL.. programación 137 rendimiento almacenar en memoria caché de disco 353. 83 representación de datos ASCII.Else 246 operadores de coincidencia de patrón 265 P paquetes de InfoSphere DataStage 2 programa de copia en masa. rutina BASIC 138 O OCCURS paralelas 35 operador If. consulte programa de utilidad BCP 1 programa de utilidad BCP (Programa de copia en masa) descripción 1 programar en InfoSphere DataStage 135 programas BASIC. ejecutar 2. véase recuadro de diálogo Seleccionar desde servidor 89 recuadro de diálogo Guardar definición de tabla 93 I importación funciones ActiveX (OLE) externas 146 InfoSphere DataStage. etapas FTP Plug-in 82. 139 importación 146 funciones Bit 174 funciones de transformación crear 140 ejemplos 333 funciones orientadas a los bytes 175 funciones trigonométricas 276 juegos de caracteres internos 19 M mandato dsjob utilizar en etapa Command 64 mandatos externo 2. etapas FTP Plug-in 82 representación de datos binaria. almacenar en memoria caché de disco 338 sentencia * 171 sentencia $Define 168 sentencia $Include 170 sentencia $Undefine 170 sentencia Call 177 sentencia Case 178 J juegos de caracteres 19 correlación entre interno y externo 19 puntos de código 19 juegos de caracteres externos 19 372 Guía del desarrollador de Server Job . 83 restricciones 120 rutinas consulte también rutinas BASIC 135 crear 135 probar 142 subrutinas anteriores y posteriores 332 tipos 135 rutinas BASIC cómo guardar código 141 copia 144 crear 135. búsqueda 119 N Navegador de datos 30. programar en 135 recuadro de diálogo Opciones de creación de archivo 42 recuadro de diálogo Rutina de servidor 138 recuadro de diálogo Seleccionar desde servidor 89. 355 estadísticas 10 etapa Sort 104 Etapa Sort 105 trabajo 5 representación de datos. 65 mandatos de servidor almacenar en memoria caché de disco 343 mandatos externos.. etapa Command 60 secuencias de datos múltiples.Then. etapas FTP Plug-in 82. 60. 42.función Len 248 función LenDP 248 función Ln 249 función MatchField 253 función Mod 254 función Neg 255 función Not 255 función Num 256 función Oconv 256 función Pwr 266 función REAL 268 función Right 269 función Rnd 270 función Seq 270 función SetLocale 270 función Sin 276 función SinH 276 función Soundex 272 función Space 272 función Sqrt 273 función SQuote 273 función Status 273 función Str 274 función Tan 276 función TanH 276 función Time 275 función TimeDate 276 función Trim 278 función TrimB 279 función TrimF 279 función UniChar 279 función UniSeq 279 función UpCase 280 función Xtd 283 Funciones ActiveX (OLE) funciones de programación 136.. etapa Command 64 punto de código 19 puntos de interrupción 127 G giros columnas 96. etapa Command 60 scripts UNIX.. 140 edición 143 entrada de código 140 name 138 número de versión 138 probar 142 tipo 138 visualizar 143 rutinas incorporadas 332 S scripts Perl. 48 nombre de rutina 138 número de versión. 60. etapa Command 64 marcas registradas lista 363 menús de atajos en el Editor de transformador 110 múltiples filas.

. 58 tipo de datos 57.. 58 variables de la etapa 122 variables de la etapa local 122 Ventana de depuración 128 visión general de entornos locales [visión general entornos locales] 20 de Unicode[visión general Unicode] 19 Índice 373 .GoSub 262 sentencias On. definir Etapas Aggregator 56 etapas Link Collector 84 etapas Link Partitioner 87 subrutinas posteriores a la etapa....sentencia CloseSeq 181 sentencia Common 183 sentencia Deffun 188 sentencia Dimension 188 sentencia End 221 sentencia Equate 222 sentencia Function 234 sentencia GoSub 236 sentencia LOCATE 249 sentencia Mat 252 sentencia Nap 254 sentencia Null 255 sentencia OpenSeq 264 sentencia Randomize 266 sentencia ReadSeq 267 sentencia Return 268 sentencia Return (valor) 269 sentencia Sleep 271 sentencia Subroutine 275 sentencia WEOFSeq 280 sentencia WriteSeq 281 sentencia WriteSeqF 282 sentencias $IfDef y $IfNDef 169 sentencias de asignación 173 sentencias For.. definir etapas Aggregator 56 etapas Link Collector 84 etapas Link Partitioner 87 etapas Transformer 112 subrutinas anteriores y posteriores crear 140 descripción 137 incorporadas 332 subrutinas posteriores a la etapa Etapas Transformer 120 subrutinas posteriores a la etapa.Repeat 251 sentencias On. 58 precisión de los datos 57.Then. 353 sitios Web no IBM 361 sitios Web no IBM enlaces a 361 soporte cliente 367 soporte al cliente contactar 367 SQL factor de escala de datos 57....... definir (continuación) etapas Transformer 112 supervisor de rendimiento 133 T tablas de correlación 19 terminadores de línea 45 terminadores de línea de UNIX 45 terminadores de línea de Windows 45 territorio 21 trabajos compilar 131 ejecutable 127 optimizar el rendimiento 5 transformaciones personalizadas.Next 233 sentencias If.Then 245 sentencias If. 58 subrutina DSExecute 192 subrutina DSSetUserStatus 217 subrutinas anteriores a la etapa etapas Transformer 120 subrutinas anteriores a la etapa. etapas FTP Plug-in 70 símbolo del euro.Else 244 sentencias Loop..GoTo 263 servicios de software contactar 367 servidor telnet. 58 visualizar caracteres 57.. definir 144 U Unicode estándar 19 visión general 19 V valores nulos 57.Else 243 sentencias If.. utilizar 44..

374 Guía del desarrollador de Server Job .

.

Impreso en España SC11-7972-00 .

Spine information: IBM InfoSphere DataStage Versión 8 Release 7 Guía del desarrollador de Server Job .

Sign up to vote on this title
UsefulNot useful