Data Stage

IBM InfoSphere DataStage Versión 8 Release 5 Guía del desarrollador de Server Job  SC11-7827-03 IBM InfoSphere D

Views 415 Downloads 23 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

IBM InfoSphere DataStage Versión 8 Release 5

Guía del desarrollador de Server Job



SC11-7827-03

IBM InfoSphere DataStage Versión 8 Release 5

Guía del desarrollador de Server Job



SC11-7827-03

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

© Copyright IBM Corporation 1997, 2010.

Contenido Capítulo 1. Trabajos de servidor de IBM InfoSphere DataStage . . . . . . . . . 1 Etapas suplementarias . . Paquetes de IBM InfoSphere Recursos personalizados . Después del desarrollo . .

. . . . DataStage . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

2 2 3 3

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 23 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 © Copyright IBM Corp. 1997, 2010

Funcionalidad . . . . . . . . . . . . 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 . . . . . . . . . . . . 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 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

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 . . . . . . . . . . . . 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 . . . . . . . . . . . . . . 95 Funcionalidad . . . . . . . . . . . . 96 Giro de datos . . . . . . . . . . . . . 96 Ejemplos . . . . . . . . . . . . . . 96 Etapas Row Merger. . . . . . . . . . . . 99 Funcionalidad . . . . . . . . . . . . 99 Separador General de la página Etapa . . . . 99 Página Entrada . . . . . . . . . . . . 99 Página Salida . . . . . . . . . . . . 101 Etapas Row Splitter . . . . . . . . . . . 101 Funcionalidad . . . . . . . . . . . . 101 Separador General de la página Etapa . . . . 101 Página Entrada . . . . . . . . . . . . 102 Página Salida . . . . . . . . . . . . 102 Etapas Sort . . . . . . . . . . . . . . 103 Funcionalidad . . . . . . . . . . . . 104 Propiedades configurables . . . . . . . . 104 Criterios de ordenación . . . . . . . . . 105 Propiedades de la 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 . . . . . . . . . . . . . 122 Propiedades de la etapa Transformer . . . . 125

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.. . . . . . . . .

iv

Guía del desarrollador de Server Job

. 127 . 127 . 128

. 128

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 143 144 144 146

.

. 146

Capítulo 7. Programación BASIC . . . 147 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 . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

147 148 148 148 149 149 149 150 150

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

156 156 156 157 157 158 159 160 160 160 160 162 163 163 164 165 166 166 166 167 168

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

168 168 169 170 170 171 171 172 173 174 174 174 175 175 176 177 177 178 178 179 179 180 181 182 183 183 184 184 185 185 186 187 188 188 188 189 189 190 190 191 191 194 195 196 197 197 198 199 200 202 202 204 205 205 205 206 207 207 208 208 208

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 . . . . . . .

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

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

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

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

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

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

209 210 210 211 212 212 213 213 214 214 215 215 216 216 217 218 218 219 219 220 221 222 222 223 224 225 225 226 226 226 226 226 226 227 230 230 231 231 232 234 234 235 236 236 241 242 243 243 244 244 245 245 246 246 246 247 247 249 250 251 252

Contenido

v

Sentencia Nap . . . . . . . . Función Neg . . . . . . . . Función Not . . . . . . . . . Sentencia Null . . . . . . . . Función Num . . . . . . . . Función Oconv . . . . . . . . Ejemplos . . . . . . . . . Sentencias On...GoSub . . . . . Sentencia On...GoTo . . . . . . Sentencia OpenSeq . . . . . . Operadores de coincidencia de patrón Función Pwr . . . . . . . . Sentencia Randomize . . . . . . ReadSeq . . . . . . . . . . Función REAL . . . . . . . . Sentencia Return . . . . . . . Sentencia Return (valor) . . . . . Función Right . . . . . . . . Función Rnd . . . . . . . . Función Seq . . . . . . . . . SetLocale . . . . . . . . . . Sentencia Sleep . . . . . . . . Función Soundex . . . . . . . Función Space . . . . . . . . Función Sqrt. . . . . . . . . Función SQuote . . . . . . . Función Status . . . . . . . . Función Str . . . . . . . . . Sentencia Subroutine . . . . . . Función Time . . . . . . . . Función TimeDate . . . . . . . Funciones trigonométricas . . . . Función Trim . . . . . . . . Función TrimB . . . . . . . . Función TrimF . . . . . . . . Función UniChar . . . . . . . Función UniSeq . . . . . . . Función UpCase . . . . . . . Función WEOFSeq . . . . . . Función WriteSeq . . . . . . . Función WriteSeqF . . . . . . Función Xtd . . . . . . . . . Códigos de conversión . . . . . D . . . . . . . . . . . . G . . . . . . . . . . . . L . . . . . . . . . . . . MB . . . . . . . . . . . . MCA . . . . . . . . . . . MC/A. . . . . . . . . . . MCD . . . . . . . . . . . MCL . . . . . . . . . . . MCM . . . . . . . . . . . MC/M . . . . . . . . . . MCN . . . . . . . . . . . MC/N . . . . . . . . . . MCP . . . . . . . . . . . MCT . . . . . . . . . . . MCU . . . . . . . . . . . MCX . . . . . . . . . . . MD. . . . . . . . . . . . ML & MR . . . . . . . . .

vi

Guía del desarrollador de Server Job

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

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

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

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

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

252 253 253 253 254 254 255 260 261 262 263 264 264 265 266 266 267 267 268 268 268 269 270 270 271 271 271 272 273 273 274 274 276 277 277 277 277 278 278 279 280 281 281 282 285 286 287 288 288 288 289 289 290 290 290 291 291 292 292 293 296

MM . MO. . MP . . MT . . MUOC MX . . MY . . NL . . NLS . NR . . P . . R . . S . . TI . .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

298 299 299 300 301 301 302 303 303 303 304 306 306 307

Capítulo 8. Transformaciones y rutinas incorporadas . . . . . . . . 309 Transformaciones incorporadas . . . . . . . Transformaciones de serie . . . . . . . . Transformaciones de fecha . . . . . . . . Transformaciones de tipo de datos . . . . . Transformaciones de gestión de claves . . . . Transformaciones de medidas: área . . . . . Transformaciones de medidas: distancia . . . Transformaciones de medidas: temperatura . . Transformaciones de medidas: tiempo . . . . Transformaciones de medidas: volumen . . . Transformaciones de medidas: peso . . . . . Transformaciones numéricas . . . . . . . Transformaciones del procesador de filas . . . Transformaciones del programa de utilidad . . Rutinas incorporadas . . . . . . . . . . . Subrutinas anteriores y posteriores incorporadas Funciones de transformación de ejemplo . . .

309 309 310 319 322 322 323 324 324 325 327 327 328 329 330 330 331

Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File . . . . . . . . . . . . 333 Funcionalidad . . . . . . . . . . . . . Terminología . . . . . . . . . . . . . Secuencias de datos múltiples . . . . . . . Directrices para elegir un tipo de memoria caché Preparación de la memoria caché privada de enlaces . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . Requisitos especiales de AIX para determinar el tamaño de la memoria caché de disco . . . . 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 . . . . . . . . . . . . . . . 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 . . . Creación de un archivo hash para el almacenamiento en memoria caché del sistema . Mandatos del motor de servidor . . . . . .

333 334 336 336 336

336 337

338 339 339 340 340 340

Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema . . . . . . . . . 349 Utilización del símbolo de euro en los sistemas sin soporte multilingüístico . . . . . . . . . . 350 Consideraciones sobre el rendimiento . . . . . 350

Accesibilidad de los productos. . . . 353

Enlaces a sitios Web no IBM . . . . . 357 Avisos y marcas registradas . . . . . 359 Cómo ponerse en contacto con IBM

363

Índice. . . . . . . . . . . . . . . 365

Acceso a la documentación del producto . . . . . . . . . . . . . 355

Contenido

vii

viii

Guía del desarrollador de Server Job

Capítulo 1. Trabajos de servidor de IBM InfoSphere DataStage Los trabajos de InfoSphere DataStage constan de etapas individuales. Cada etapa describe una base de datos o proceso en concreto. Por ejemplo, una etapa puede extraer datos de un origen de datos, mientras que otra puede transformarlos. Las etapas se añaden a un trabajo y se enlazan entre ellas utilizando InfoSphere DataStage y el Diseñador de QualityStage. Hay dos tipos de etapas: v Etapas integradas. Se proporcionan con InfoSphere DataStage y se utilizan para extraer, agregar, transformar y grabar datos. v Etapas suplementarias. Etapas adicionales que pueden instalarse en InfoSphere DataStage para ejecutar tareas especializadas a las que las etapas incorporadas no dan soporte. Por ejemplo, las etapas que se suministran como parte de los paquetes de InfoSphere DataStage. La paleta de herramientas del servidor organiza las etapas en los grupos siguientes: v Base de datos. Estas etapas leen o graban los datos contenidos en una base de datos. v Archivo. Estas etapas leen o graban los datos contenidos en un archivo o un conjunto de archivos. v Proceso. Estas etapas ejecutan algún proceso en los datos que se pasan entre ellas. La siguiente tabla lista los tipos de etapa disponibles y proporciona una guía rápida acerca de sus funciones: Tipo

Etapa

Función

Base de datos

ODBC (consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for ODBC)

Lee o graba datos en las bases de datos que dan soporte a la API estándar Open Database Connectivity.

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.

Base de datos

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)

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.

Base de datos

UniData (consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for IBM UniVerse and UniData)

Lee o graba datos en las bases de datos UniData.

Base de datos

UniData 6 (consulte IBM InfoSphere Lee o graba datos en las bases de datos UniData 6. DataStage and QualityStage Connectivity Guide for IBM UniVerse and UniData)

Base de datos

UniVerse (consulte IBM InfoSphere DataStage Lee o graba datos en las bases de datos UniVerse. and QualityStage Connectivity Guide for IBM UniVerse and UniData)

Archivo

Complex Flat File

Lee datos de una estructura de datos de archivo sin formato complejo.

Archivo

Folder

Lee o graba datos como archivos en un directorio ubicado en el servidor de InfoSphere DataStage.

Archivo

Hashed File

Lee o graba datos en un archivo hash.

Archivo

Sequential File

Lee o graba datos en un archivo secuencial.

© Copyright IBM Corp. 1997, 2010

1

Tipo

Etapa

Función

Proceso

Aggregator

Agrupa los datos entrantes, calcula los totales y otras funciones de resumen, y pasa los datos a otra etapa del trabajo.

Proceso

Etapa Command

Ejecuta mandatos, programas y trabajos externos.

Proceso

FTP Plug-in

Lee o graba datos en archivos secuenciales remotos utilizando FTP.

Proceso

InterProcess

Proporciona un canal de comunicación entre dos procesos de InfoSphere DataStage que se ejecutan simultáneamente en el mismo trabajo.

Proceso

Link Collector

Combina datos de diversos enlaces de entrada en un solo enlace de salida.

Proceso

Link Partitioner

Particiona los datos de un enlace de entrada individual en varios enlaces de salida.

Proceso

Merge

Combina dos archivos secuenciales en uno o varios enlaces de salida.

Proceso

Pivot

Correlaciona conjuntos de columnas en una tabla de entrada con una única columna de una tabla de salida.

Proceso

Row Merger

Fusiona columnas de entrada en una serie y graba la serie en una columna de salida.

Proceso

Row Splitter

Reparte los datos de una serie de entrada en varias columnas de salida.

Proceso

Sort

Ordena los datos entrantes en valores de columna ascendentes o descendentes y los pasa a otra etapa del trabajo.

Proceso

Transformer

Filtra y transforma los datos entrantes, y los genera como salida en otra etapa del trabajo.

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. Este manual describe los editores de etapas individuales que puede utilizar para desarrollar trabajos de servidor. Algunas de estas etapas están incorporadas y otras son suplementarias.

Etapas suplementarias Hay un gran número de etapas suplementarias especializadas disponibles para InfoSphere DataStage. Pueden instalarse cuando se instala inicialmente IBM® InfoSphere DataStage o más adelante en cualquier momento. Las etapas de conectividad se utilizan para conectarse a bases de datos específicas. Aparecen en la categoría Base de datos en la paleta de herramientas. Se describen en sus guías de consulta de conectividad respectivas. Las demás etapas suplementarias son etapas activas que aparecen en la categoría Proceso en la paleta de herramientas. 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; cada uno proporciona un conjunto de etapas suplementarias y una funcionalidad asociada.

2

Guía del desarrollador de Server Job

v Paquete XML. Este paquete se proporciona con InfoSphere DataStage. Proporciona las herramientas que permiten convertir datos entre documentos XML y tablas de datos. Las características y la funcionalidad se describen detalladamente en IBM InfoSphere DataStage XML Pack Guide. v Paquete Java™. Este paquete se proporciona con InfoSphere DataStage. Está formado por dos etapas de plantillas y una API que permite implementar etapas de InfoSphere DataStage en Java. Se describe en IBM InfoSphere DataStage and QualityStage Java Pack Guide. v Paquete de servicios web. 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. Ambos paquetes son complementos de InfoSphere DataStage. Los recursos de los servicios web se describen en IBM InfoSphere DataStage Web Services Pack Guide.

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. Se describen en Capítulo 8, “Transformaciones y rutinas incorporadas”, en la página 309. Si tiene requisitos específicos de rutinas y transformaciones personalizadas, InfoSphere DataStage dispone de un potente lenguaje de programación de procedimientos denominado BASIC que permite definir sus propios componentes. Puede encontrar material de referencia de BASIC en Capítulo 7, “Programación BASIC”, en la página 147. Una vez desarrollados estos componentes, pueden reutilizarse en otros trabajos de InfoSphere DataStage.

Después del desarrollo Una vez completado el desarrollo del trabajo de servidor de IBM InfoSphere DataStage, deberá compilarlo y probarlo antes de publicarlo para que esté disponible para su ejecución. InfoSphere DataStage tiene un depurador que permite eliminar los problemas con los trabajos de servidor que ha diseñado. El depurador se describe en Capítulo 5, “Depuración y compilación de un trabajo”, en la página 127. Si está satisfecho con el diseño del trabajo, puede validarlo y ejecutarlo utilizando el Director de InfoSphere DataStage y QualityStage. 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, que se describe en InfoSphere DataStage Development Kit (interfaces de control de trabajo).

Capítulo 1. Trabajos de servidor de IBM InfoSphere DataStage

3

4

Guía del desarrollador de Server Job

Capítulo 2. 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, pero también hay sugerencias para los trabajos que se ejecutan en sistemas de un solo procesador. Se recomienda leer estos temas antes de diseñar nuevos trabajos pero, si lo desea, también puede revisitar diseños de trabajos anteriores basándose en lo que lea aquí. Las sugerencias de proceso paralelo están especialmente indicadas para los sistemas UNIX® o Windows® de multiprocesador simétrico (SMP) de hasta 64 procesadores. Para los sistemas UNIX MPP y en clúster (y los sistemas Windows o UNIX SMP) hay disponibles trabajos paralelos. Para obtener detalles, consulte IBM InfoSphere DataStage and QualityStage Parallel Job Developer's Guide.

Trabajos y procesos de IBM InfoSphere DataStage Cuando diseña un trabajo, aparece en términos de etapas y enlaces. Cuando se compila, el motor de servidor lo ve el términos de los procesos que se ejecutan posteriormente en el servidor. ¿Cómo define el motor de servidor un proceso? Aquí es donde es importante la distinción entre etapas activas y pasivas. Las etapas activas como, por ejemplo, Transformer y Aggregator, ejecutan tareas de proceso, mientras que las etapas pasivas como, por ejemplo, Sequential File y Hashed File, leen o graban orígenes de datos y proporcionar servicios a las etapas activas. En su forma más simple, las etapas activas se convierten en procesos. No obstante, la situación se complica cuando conecta etapas activas entre ellas y etapas pasivas entre ellas. ¿Qué ocurre cuando tiene un trabajo que enlaza dos etapas pasivas? Obviamente, se produce algún proceso. De modo no visible, InfoSphere DataStage inserta una etapa Transformer reducida entre las etapas pasivas que pasa datos directamente de una etapa a otra, y se convierte en un proceso cuando se ejecuta el trabajo. ¿Qué ocurre cuando tiene un trabajo que enlaza dos o más etapas activas? De forma predeterminada, todas se ejecutarán en un solo proceso. Las etapas pasivas marcan los límites del proceso y todas las etapas activas adyacentes entre ellas se ejecutan en un solo proceso. Los siguientes diagramas ilustran cómo se convierten los trabajos en procesos.

Figura 1. Proceso individual

© Copyright IBM Corp. 1997, 2010

5

Figura 2. Un proceso individual, con una etapa pasiva enlazada a una etapa pasiva, y una etapa Transformer invisible insertada en el tiempo de compilación

Figura 3. Proceso individual

Figura 4. 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. Esto tiene sentido cuando se ejecuta el trabajo en un sistema de un procesador. Cuando se ejecuta en un sistema de múltiples procesadores, es mejor ejecutar cada etapa activa en un proceso diferente, para que los procesos puedan distribuirse entre los procesadores disponibles y ejecutarse en paralelo. 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, insertando etapas InterProcess (IPC) entre las etapas activas conectadas. v Implícitamente, activando el almacenamiento intermedio de filas entre procesos, 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. 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.

6

Guía del desarrollador de Server Job

El diagrama siguiente ilustra el posible comportamiento de las etapas activas:

Figura 5. Comportamiento predeterminado

Figura 6. Imposición implícita de varios procesos mediante el almacenamiento intermedio de filas entre procesos

Capítulo 2. Optimización del rendimiento en los trabajos de servidor

7

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

Figura 8. Comportamiento predeterminado con la etapa Transformer invisible insertada en el tiempo de compilación

Figura 9. Utilización de la etapa IPC para imponer varios procesos, con las etapas Transformer invisibles insertadas en el tiempo de compilación

Particionamiento y recopilación Con la introducción del soporte de multiprocesador mejorado en el Release 6 y posteriores, es posible mejorar aún más el rendimiento de los trabajos del servidor mediante el particionamiento de datos. La etapa Link Partitioner permite particionar los datos que está leyendo, de forma que pueden procesarse en procesadores individuales que se ejecutan en varios procesadores. La etapa Link Collector permite recopilar y unir datos particionados para grabarlos en un destino de datos individual. El siguiente diagrama ilustra cómo puede utilizar las etapas Link Partitioner y Link Collector en un trabajo. Ambas etapas están activas, 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.

Figura 10. Utilización de las etapas Link Partitioner y Link Collector

Capítulo 2. Optimización del rendimiento en los trabajos de servidor

9

Diagnóstico de limitaciones de trabajo Después de diseñar un trabajo, si lo desea, puede ejecutar algunos diagnósticos para ver si el rendimiento se puede mejorar. 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. La colección de estadísticas de rendimiento puede activarse y desactivarse para cada etapa activa en un trabajo de IBM InfoSphere DataStage. Para recopilar estadísticas de rendimiento: 1. Abra la ventana Opciones de ejecución del trabajo: v En el cliente del Diseñador, pulse el botón de la barra de herramientas Ejecutar. v En el cliente del Director, seleccione el trabajo y pulse el botón de la barra de herramientas Ejecutar ahora. 2. Pulse el separador Rastreo. 3. Seleccione las etapas que desee supervisar en la lista Nombres de etapa. Utilice mayúscula-pulsar para seleccionar varias etapas activas. 4. Seleccione el recuadro de selección Estadísticas de rendimiento. 5. Pulse Ejecutar. Si el rastreo de rendimiento está activado, se genera inmediatamente una entrada especial después del mensaje de terminación de la etapa en el registro de trabajo. La entrada de registro es parecida a la siguiente: job.stage.DSD.StageRun Performance statistics(...) Para ver las estadísticas de forma tabular, pulse con el botón derecho del ratón sobre la entrada de registro y seleccione Detalle. 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. La etapa resaltada es la que tiene activado Estadísticas de rendimiento:

10

Guía del desarrollador de Server Job

Figura 11. Trabajo de ejemplo para las estadísticas de rendimiento

La tabla siguiente permite interpretar las estadísticas, que se han pegado en una hoja de cálculo, como se muestra a continuación: Tabla 1. Estadísticas de rendimiento Enlace en el diseño de trabajo

Acción

Fila en la hoja de cálculo

DSLink5

Leer archivo secuencial

2

DSLink6

Derivación de transformador

5

Grabación entre procesos (de una etapa Transformer a una etapa Transformer)

3

DSLink8

Grabar archivo secuencial

3

DSLink7

Derivación de transformador

6

Grabar archivo secuencial

7

Figura 12. Hoja de cálculo de estadísticas de rendimiento

Capítulo 2. Optimización del rendimiento en los trabajos de servidor

11

Figura 13. 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, mientras que la vista Supervisor en una etapa completada muestra el porcentaje promedio de CPU utilizada por la etapa.

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, y de cada uno de sus enlaces de entrada y salida. La información que se muestra es: v Porcentaje. El porcentaje del tiempo de ejecución general que utiliza esta parte del proceso. v Recuento. El número de veces que se ha ejecutado esta parte del proceso. v Mínimo. El tiempo mínimo transcurrido en microsegundos que ha utilizado esta parte del proceso para algunas de las filas procesadas. v Promedio. El tiempo promedio transcurrido en microsegundos que ha utilizado esta parte del proceso para las filas procesadas. Debe tener cuidado cuando interprete estas cifras. Por ejemplo, cuando se utilizan enlaces de etapa activa en curso a etapa activa, la columna de porcentaje no sumará el 100%. Asimismo, tenga en cuenta que, en estas circunstancias, si recopila estadísticas para la primera etapa activa, 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). Esta distorsión permanece incluso cuando ejecuta las etapas activas en distintos procesos (con el almacenamiento intermedio de filas entre procesos habilitado), a menos que se ejecute realmente en un sistema de multiprocesador. Si la cifra de Mínimo y la cifra de Promedio están muy próximas, esto indica que el proceso tiene una limitación de CPU. De lo contrario, los trabajos con un mal rendimiento pueden tener una limitación de E/S.

12

Guía del desarrollador de Server Job

Si la ventana del supervisor de trabajos muestra que una etapa activa está utilizando casi el 100% del tiempo de CPU, esto también indica que el trabajo tiene una limitación de CPU.

Mejora del rendimiento En las siguientes secciones se proporcionan algunos consejos sobre cómo mejorar el rendimiento de los diseños de trabajo.

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. Esto permite que las etapas activas conectadas pasen datos a través de los almacenamientos intermedios en lugar de fila por fila. Puede activar el almacenamiento intermedio de filas en curso de todo el proyecto utilizando el cliente del Administrador. O bien, puede activarlo para trabajos individuales utilizando el separador Rendimiento en el recuadro de diálogo Propiedades del trabajo. 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. 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 multiprocesador Para mejorar el rendimiento de la mayoría de trabajos de IBM InfoSphere DataStage, active el almacenamiento intermedio de filas entre procesos y vuelva a compilar el trabajo. Esto permite que el trabajo se ejecute utilizando un proceso distinto para cada etapa activa; estos se ejecutarán simultáneamente en procesadores aparte. Puede activar el almacenamiento intermedio de filas entre procesos de todo el proyecto utilizando el cliente del Administrador. O bien, puede activarlo para trabajos individuales utilizando el separador Rendimiento en el recuadro de diálogo Propiedades del 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. Se recomienda rediseñar el trabajo para que utilice el almacenamiento intermedio de filas en lugar de los bloques COMMON. Si tiene un etapa activa que utiliza casi el 100% de la CPU, puede mejorar el rendimiento ejecutando varias copias paralelas de un proceso de etapa. Para ello, 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. Las siguientes capturas de pantalla muestran un ejemplo de cómo puede hacerlo.

Capítulo 2. Optimización del rendimiento en los trabajos de servidor

13

Figura 14. Trabajo de ejemplo

Figura 15. Trabajo de ejemplo

14

Guía del desarrollador de Server Job

Trabajos limitados de E/S Aunque es difícil diagnosticar trabajos limitados de E/S y mejorarlos, 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, puede utilizar una etapa InterProcess (IPC) en lugar de la etapa Sequential File. De esta forma, el proceso se divide y se reduce la E/S y el tiempo transcurrido, ya que el proceso de lectura puede empezar a leer datos tan pronto como estén disponibles, en lugar de tener que esperar a que finalice el proceso de grabación. v Si se está utilizando una etapa Sequential File intermedia para descargar un archivo para que se pueda introducir en una herramienta externa, por ejemplo, un cargador masivo o un clasificador externo, 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). v Si procesa un conjunto de datos de gran tamaño, puede utilizar la etapa Link Partitioner para dividirlo en varias partes sin cargar los campos intermedios. 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, puede utilizar las estadísticas de rendimiento para determinar qué etapas individuales tienen una limitación de E/S: 1. Ejecute el trabajo con un conjunto de datos considerable y con el rastreo de rendimiento habilitado para cada una de las etapas activas. 2. Analice los resultados y compárelos para cada etapa. En concreto, busque las etapas activas que utilicen menos CPU que otras. Una vez identificada la etapa, las acciones a realizar dependerán de los tipos de etapa pasiva implicados en el proceso. Un archivo hash mal diseñado puede tener un efecto concreto en el rendimiento (para obtener ayuda con el diseño del archivo hash, consulte “Diseño de archivo hash”). Para todos los tipos de etapa, 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. Los archivos hash se utilizan normalmente para proporcionar una tabla de referencia basada en una clave individual. Realizar búsquedas puede ser rápido en un archivo bien diseñado, pero lento en uno mal diseñado. Otro uso es alojar tablas de dimensiones de crecimiento lento en un diseño de almacén de esquema de estrella. De nuevo, un archivo bien diseñado hará que la extracción de datos de los archivos de dimensión sea mucho más rápida.

Operación básica del archivo hash Si está familiarizado con los principios de los archivos hash, puede omitir esta sección. Los archivos hash funcionan distribuyendo los datos entre varios grupos de un archivo. Esto acelera el acceso a los datos, ya que puede ir a un grupo específico antes de buscar secuencialmente en los datos que contiene una determinada fila de datos. El número de grupos que tiene, 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. Se ejecuta hash en las filas de datos (es decir, se asignan a los grupos) en un campo de clave. El algoritmo hash convierte de forma eficaz y repetible una serie en un número del rango del 1 al n, donde n es el módulo de archivo. Esto proporciona el grupo donde se grabarán las filas. El campo de clave Capítulo 2. Optimización del rendimiento en los trabajos de servidor

15

puede ser de cualquier tipo; por ejemplo, puede contener un nombre, un número de serie, una fecha, etc. El tipo de datos en la clave determina el algoritmo hash óptimo que se puede utilizar al grabar datos; este algoritmo también se utiliza para ubicar los datos cuando se vuelven a leer. El objetivo es utilizar un algoritmo que distribuya los datos uniformemente en el archivo. El otro objetivo es distribuir los datos lo más uniformemente posible entre varios grupos. En términos de rendimiento, es especialmente importante que los grupos no estén superpoblados y no que se tengan que ampliar a grupos de desbordamiento, ya que esto dificulta el acceso a los datos. Asimismo, es importante tener en cuenta el tamaño de los registros (las filas) cuando se diseña el archivo, ya que es preferible que se ajusten equitativamente a los grupos y no generen desbordamientos. Existe una relación de compensación entre el tamaño del grupo y el número de grupos. En la mayoría de operaciones, un buen diseño tiene muchos grupos de pequeño tamaño (por ejemplo, cuatro registros por grupo). La búsqueda secuencial de la fila de datos necesaria no será nunca tan larga. No obstante, puede haber casos en los que el diseño funcionará mejor con un número pequeño de grupos grandes.

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. v Archivos estáticos. Son los que ofrecen el máximo rendimiento si están bien diseñados. No obstante, si están mal diseñados, es probable que ofrezcan el mínimo rendimiento. Los archivos estáticos permiten decidir de qué forma se ejecuta hash en el archivo. Puede especificar: – Algoritmo hash. La forma en que se asignan las filas de datos a los distintos grupos, dependiendo del valor de sus campos de clave. – Módulo. El número de grupos que tiene el archivo. – Separación. El tamaño del grupo como el número de bloques de 512 bytes. En general, 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. Puede reestructurar un archivo hash estático entre ejecuciones de trabajo si desea ajustarlo. Para ello, utilice el mandato RESIZE, que puede emitirse mediante la característica Mandato del cliente del Administrador. 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. 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.388.608. separación especifica el tamaño de los grupos en bloques de 512 bytes y está en el rango de 1 a 8.388.608. v Archivos dinámicos. Hay archivos hash que cambian dinámicamente cuando se graban datos en ellos con el tiempo. Esto puede sonar ideal, pero si se deja un crecer orgánicamente archivo dinámico, deberá realizar varias opciones de división en grupos mientras se graban los datos en él, lo que puede consumir mucho tiempo y reducir el rendimiento si tiene un archivo con un rápido crecimiento. Los archivos dinámicos no funcionan tan bien como un archivo estático bien diseñado, pero funcionan mejor que uno mal diseñado. Cuando se crea un archivo dinámico, puede especificar la siguiente información (aunque todas estas opciones tienen valores predeterminados): – Módulo mínimo. El número mínimo de grupos que tiene el archivo. El valor predeterminado es 1. – Tamaño del grupo. El grupo puede especificarse como 1 (2048 bytes) o 2 (4096 bytes). El valor predeterminado es 1. – Carga partida. Especifica cuánto puede cargarse un archivo (en porcentaje) antes de partirse. El carga del archivo se calcula de la manera siguiente:

16

Guía del desarrollador de Server Job

Carga del archivo = ((total de bytes de datos) / (total de bytes de archivo)) * 100

La carga partida predeterminada es 80. – Carga con fusión. Especifica cómo puede ser de pequeña la carga de un archivo (en porcentaje) antes de que se parta el archivo. La carga del archivo se calcula como la carga partida. El valor predeterminado es 50. – Registro grande. Especifica el número de bytes que puede contener un registro (fila). Un registro de gran tamaño siempre se coloca en un grupo de desbordamiento. – Algoritmo hash. Elija GENERAL para la mayoría de tipos de campo de clave y SEQ.NUM para las claves que son una serie de números secuencial. – Tamaño de registro. De manera opcional, utilice esta opción para especificar el tamaño de registro medio en bytes. A continuación, puede utilizarse para calcular el tamaño de grupo y el tamaño de registro grande. Puede cambiar manualmente el tamaño de un archivo dinámico utilizando el mandato RESIZE, que se emite mediante la característica Mandato del cliente del Administrador. 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. parámetro es uno de los siguientes y se corresponde con los argumentos descritos anteriormente para crear un archivo dinámico: GENERAL | SEQ.NUM MINIMUM.MODULUS n SPLIT.LOAD n MERGE.LOAD n LARGE.RECORD n RECORD.SIZE n

De forma predeterminada, InfoSphere DataStage creará un archivo dinámico con los valores predeterminados descritos anteriormente. No obstante, 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. Esto ofrece la opción de varios tipos de archivos hash (estáticos) y un tipo de archivo dinámico. Los distintos tipos de archivos estáticos reflejan los distintos algoritmos hash que utilizan. Elija un tipo según su tipo de clave, tal como se muestra a continuación: Tipo

Adecuado para las claves que se forman de la siguiente manera:

2

Numérica, significativa en los últimos 8 caracteres

3

Mayormente numérica con delimitadores, significativa en los últimos 8 caracteres

4

Alfabética, significativa en los últimos 5 caracteres

5

Cualquier clave ASCII, significativa en los últimos 4 caracteres

6

Numérica, significativa en los primeros 8 caracteres

7

Mayormente numérica con delimitadores, significativa en los primeros 8 caracteres

8

Alfabética, significativa en los primeros 5 caracteres

9

Cualquier clave ASCII, significativa en los primeros 4 caracteres

10

Numérica, significativa en los últimos 20 caracteres

11

Mayormente numérica con delimitadores, significativa en los últimos 20 caracteres

12

Alfabética, significativa en los últimos 16 caracteres Capítulo 2. Optimización del rendimiento en los trabajos de servidor

17

13

Cualquier clave ASCII, significativa en los últimos 16 caracteres

14

La clave numérica completa es significativa

15

Mayormente numérica con delimitadores, la clave completa es significativa

16

La clave alfabética completa es significativa

17

Cualquier clave ASCII completa es significativa

18

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 Precarga. Puede acelerar las operaciones de lectura de los enlaces de referencia si precarga un archivo hash en la memoria. Puede especificarlo en la página Salidas de la etapa Hashed File. v Memoria caché de grabación. 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. Esto garantiza que los archivos hash se graben en el disco en el orden del grupo, 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). Si el almacenamiento en la memoria caché del servidor está habilitado, puede especificar el tipo de almacenamiento en la memoria caché de grabación cuando cree el archivo has, y el archivo siempre utilizará el tipo especificado de memoria caché de grabación. De lo contrario, puede activar la memoria caché de grabación a nivel de etapa en la página Salidas de la etapa Hashed File. v Preasignación. Si utiliza archivos dinámicos, puede acelerar la carga del archivo realizando algunos cálculos preliminares y especificar el módulo mínimo según corresponda. Esto mejora significativamente la operación al recortar o eliminar las operaciones de división. 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, puede especificarlo para crear un archivo (utilizando la característica Crear archivo del recuadro de diálogo Etapa Hashed File; 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). v Cálculo del módulo de un archivo estático. 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 especificarlo para crear un archivo (utilizando la característica Crear archivo del recuadro de diálogo Etapa Hashed File; 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).

18

Guía del desarrollador de Server Job

Capítulo 3. Trabajos de servidor y soporte multilingüístico Estos temas proporcionan detalles acerca del soporte multilingüístico en trabajos de servidor de IBM InfoSphere DataStage. 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, InfoSphere DataStage correlaciona entre los dos juegos de caracteres, si es necesario. El mecanismo para manejar el soporte multilingüístico varía para los trabajos paralelos y los trabajos de servidor. Cada uno utiliza un juego de caracteres interno distinto, de manera que utilizan un conjunto distinto de correlaciones para la conversión de datos. Tenga en cuenta que son algunos tipos de series (es decir, caracteres) que necesitan correlación; los tipos de datos puramente numéricos no la requieren nunca. Los trabajos paralelos y de servidor utilizan también entornos locales distintos.

Juegos de caracteres internos El juego de caracteres interno puede representar, como mínimo, 64.000 caracteres. Cada carácter del juego de caracteres interno tiene un punto de código exclusivo. Este es un número que, por convención, se representa en formato hexadecimal. Puede utilizar este número para representar el carácter en programas. InfoSphere DataStage almacena fácilmente varios idiomas. El juego de caracteres interno del soporte multilingüístico forma el estándar Unicode. El consorcio de Unicode especifica varias formas de representar puntos de código, conocidas como Formatos de transformación de Unicode (UTF). Los trabajos de servidor utilizan UTF-8, y los trabajos paralelos, UTF-16. Dado que los dos tipos de trabajo utilizan distintos juegos de caracteres internos, 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). Para obtener más información sobre Unicode, consulte la página Web a nivel mundial del Consorcio de Unicode en http://www.unicode.org.

Correlación Cuando debe transformar o transferir datos, el soporte multilingüístico correlaciona los datos en o de el juego de caracteres externo que desee utilizar. El soporte multilingüístico incluye tablas de correlación © Copyright IBM Corp. 1997, 2010

19

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). Puede especificar correlaciones a distintos niveles dentro de InfoSphere DataStage: v Un valor predeterminado de todo el proyecto. En el cliente del Administrador de InfoSphere DataStage and QualityStage especifique una correlación predeterminada para todos los trabajos de servidor de un proyecto, y una correlación predeterminada para todos los trabajos paralelos de un proyecto. v Un valor predeterminado de trabajo. 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. v Una correlación de etapa. Algunas etapas paralelas y de servidor permiten especificar que utilizan una correlación determinada. Esto sustituye el valor predeterminado del proyecto y del trabajo. v Una correlación de columna. Algunas etapas paralelas y de servidor soportan la correlación por columna. Ello le permite especificar una correlación concreta para determinadas columnas de datos. Esto sustituye el valor predeterminado de proyecto, el valor predeterminado de trabajo y las correlaciones de etapa. Si los archivos incluyen caracteres ASCII de 7 bits, es necesario que no se correlacionen.

Entornos locales Un entorno local de soporte multilingüístico de InfoSphere DataStage es un conjunto de convenciones nacionales. Un entorno local se ve como una entidad separada de un juego de caracteres. Debe tener en cuenta el idioma, el juego de caracteres, y las convenciones para el formateo de los datos que no o varios grupos de personas utilizan. Defina el juego de caracteres por separado, aunque para que las convenciones nacionales funcionen correctamente, debe utilizar también los juegos de caracteres adecuados. Por ejemplo, tanto Venezuela como Ecuador utilizan el español como idioma, pero tienen convenciones de formateo de datos distintas. Los entornos locales no respetan los límites nacionales. Un país puede utilizar varios entornos locales, por ejemplo, Canadá utiliza dos y Bélgica utiliza tres. Varios países pueden utilizar un entorno local, por ejemplo, una empresa multinacional podría definir un entorno local a nivel mundial para utilizarlo en todas sus oficinas. 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. 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, numérico, si no puede imprimirse, etc. Orden en que deben ordenarse los caracteres (clasificación)

Puede combinar entornos locales si es necesario, por ejemplo podría especificar horas y fechas en un entorno local y convenciones monetarias en otro. 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. En el cliente del Administrador especifique los entornos locales predeterminados para todos los trabajos de servidor de un proyecto, y un entorno local predeterminado para todos los trabajos paralelos del proyecto.

20

Guía del desarrollador de Server Job

v Un valor predeterminado de trabajo. En el cliente del Diseñador puede especificar entornos locales predeterminados utilizados por un trabajo concreto que sobrescribe el valor predeterminado de proyecto. v Un entorno local de etapa. Algunas etapas paralelas permiten especificar que utilizan un entorno local determinado. Esto sustituye el valor predeterminado del proyecto y del trabajo. Este manual utiliza el término territorio en lugar de país para describir una zona que utiliza un entorno local.

Hora y fecha La mayor parte de los territorios tienen un estilo preferido para presentar las horas y las fechas. En cuanto a las horas, suele ser una elección entre un reloj de 12 horas o un reloj de 24 horas. En cuanto a las fechas, existen más variaciones. Aquí aparecen algunos ejemplos de formatos utilizados por los distintos entornos locales para expresar las 9.30 de la noche del día 1 de abril de 1990: Territorio

Hora

Fecha

Entorno local InfoSphere DataStage

Francia

21h30

1.4.90

FR-FRENCH

EE.UU.

9:30 p.m.

4/1/90

US-ENGLISH

Japón

21:30

90.4.1

JP-JAPANESE

Numérico Esta convención define la forma en que se muestran los números, 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, los números siguientes pueden significar mil, dependiendo del entorno local en que los utilice: Territorio

Número

Entorno local InfoSphere DataStage

Irlanda

1,000

IE-ENGLISH

Países Bajos

1.000

NL-DUTCH

Francia

1 000

FR-FRENCH

Monetaria Esta convención define la forma en que se muestran los valores monetarios, incluyendo: v Carácter utilizado como separador decimal. Este puede ser distinto que el separador decimal utilizado en los formatos numéricos. v Carácter utilizado como separador de millares. Este puede ser distinto que el separador de miles utilizado en los formatos numéricos. v El símbolo de la moneda local del territorio, por ejemplo, $, £ o ¥. v La serie utilizada como símbolo de moneda internacional, por ejemplo, USD (dólares estadounidenses) NOK (Kroner noruego), JPY (Yen japonés). v El número de las posiciones decimales que se utilizan en los valores monetarios locales. v El número de las posiciones decimales que se utilizan en los valores monetarios internacionales. v El signo que se utiliza para indicar los valores monetarios positivos. Capítulo 3. Trabajos de servidor y soporte multilingüístico

21

v El signo que se utiliza para indicar los valores monetarios negativos. v Las posiciones relativas del símbolo de moneda y los signos positivo o negativo de los valores monetarios. A continuación se facilitan ejemplos de los formatos monetarios que utilizan los distintos entornos locales: Moneda

Formato

Entorno local InfoSphere DataStage

Dólares de EE.UU.

$123.45

US-ENGLISH

Libras de GB

£37,000.00

GB-ENGLISH

Marcos de Alemania

DM123,45

DE-GERMAN

Euros de Alemania

€123,45

DE-GERMAN-EURO

Tipo de carácter Esta convención define si un carácter es alfabético, numérico, si no puede imprimirse, etc. Esta convención define también las normas de mayúsculas y minúsculas, por ejemplo, algunas letras llevan acento en minúsculas pero no en mayúsculas.

Ordenación Esta convención define el orden en que se clasifican los caracteres, es decir, el orden. Puede haber muchas variaciones en el orden de clasificación dentro de un único juego de caracteres. Por ejemplo, el carácter Ä sigue al carácter A en Alemania, pero sigue al carácter Z en Suecia.

Correlaciones y entornos locales en los trabajos de IBM IBM InfoSphere DataStage Cuando instala InfoSphere DataStage con el soporte multilingüístico habilitado, se instalan un gran número de correlaciones y entornos locales. InfoSphere DataStage realiza una distinción entre las correlaciones y los entornos locales disponibles y las correlaciones y los entornos locales cargados. Dependiendo de qué idioma especifique al instalar InfoSphere DataStage, 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. Las correlaciones y los entornos locales disponibles son los que InfoSphere DataStage tiene disponibles para la compilación y la carga; pueden especificarse cuando se diseñan los trabajos, pero deben cargarse realmente antes de ejecutar un trabajo que los utiliza. Puede ver qué correlaciones y entornos locales hay cargados actualmente y cuáles están disponibles en el Administrador de InfoSphere DataStage: 1. Abra el cliente del Administrador. 2. Pulse el separador Proyectos para pasar a la página Proyectos. 3. Seleccione un proyecto y pulse el botón NLS... para abrir el diálogo Valores de soporte multilingüístico del proyecto para el proyecto. De forma predeterminada, se muestran todas las correlaciones cargadas actualmente para los trabajos de servidor. Elija la opción Mostrar todas las correlaciones para ver una lista de las correlaciones disponibles para la carga. 4. Para ver los entornos locales cargados, pulse el separador Entornos locales del servidor. Pulse la flecha abajo al lado de la categoría de entorno local para ver la lista desplegable de los entornos locales cargados. Seleccione la opción Mostrar todos los entornos locales para que las listas desplegables muestren todas las correlaciones disponibles para la carga.

22

Guía del desarrollador de Server Job

Carga de correlaciones Para cargar una de las correlaciones disponibles para que los trabajos puedan utilizarla en el tiempo de ejecución: 1. En la página Correlaciones del servidor, pulse el botón Instalar. La página se expande para mostrar las listas de correlaciones disponibles y cargadas: 2. Seleccione la correlación que desee cargar en la lista Disponibles de la izquierda y pulse el botón Añadir. Un recuadro de diálogo solicitará que confirme la acción. Pulse Sí. Cuando la correlación se haya compilado, se añadirá a la lista Instaladas de la derecha. Debe detener y reiniciar el motor de servidor para que se cargue del todo, por lo que inicialmente no aparece ninguna marca de referencia al lado. 3. Para detener y reiniciar el motor, rearranque la máquina, 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). La correlación estará disponible para los trabajos en el tiempo de ejecución.

Carga de entornos locales Para cargar uno de los entornos locales disponibles para que los trabajos puedan utilizarlo en el tiempo de ejecución: 1. En la página Entornos locales del servidor, pulse el botón Instalar. La página se expande para mostrar las listas de entornos locales disponibles y cargados: 2. Seleccione el entorno local que desee cargar en la lista Disponibles de la izquierda y pulse el botón Añadir. Un recuadro de diálogo solicitará que confirme la acción. Pulse Sí. Cuando el entorno local se haya compilado, se añadirá a la lista Instalados de la derecha. Debe detener y reiniciar el motor de servidor para que se cargue del todo, por lo que inicialmente no aparece ninguna marca de referencia al lado. 3. Para detener y reiniciar el motor de servidor, rearranque la máquina, o detenga e inicie los servicios de DataStage (consulte la Guía del cliente del administrador para obtener instrucciones sobre cómo hacerlo). El entorno local estará disponible para los trabajos en el tiempo de ejecución.

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. La correlación indica a InfoSphere DataStage cómo convertir el juego de caracteres externo en un juego de caracteres Unicode interno. No es necesario correlacionar los datos si está: v Manejando datos puramente numéricos. v Leyendo o grabando en una etapa que representa el almacenamiento interno proporcionado por InfoSphere DataStage (es decir, una etapa Hashed File o una etapa UniVerse). v Leyendo o grabando en una base de datos UniVerse externa con el soporte multilingüístico habilitado. v Leyendo o grabando datos ASCII de 7 bits. 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. Se utilizará en todas las etapas de todos los trabajos de un proyecto, a menos que se altere temporalmente en el diseño del trabajo. v Puede especificar la correlación predeterminada de un trabajo. Se utilizará en todas las etapas de un trabajos (sustituyendo el valor predeterminado del proyecto), a menos que se altere temporalmente en el diseño del trabajo.

Capítulo 3. Trabajos de servidor y soporte multilingüístico

23

v Puede especificar una correlación para que una determinada etapa en el trabajo. Esto sustituye el valor predeterminado del proyecto y del trabajo. v Para determinadas etapas, puede especificar una correlación de columnas individuales, que altera temporalmente el proyecto, el trabajo y las correlaciones predeterminadas de la etapa.

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. 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, que deben correlacionarse con el juego de caracteres Unicode interno de InfoSphere DataStage.

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: 1. Abra el cliente del Administrador. 2. Pulse el separador Proyectos para pasar a la página Proyectos. 3. Seleccione el proyecto para el que desee establecer una correlación predeterminada y pulse el botón NLS... para abrir el diálogo Valores de soporte multilingüístico del proyecto para el proyecto. De forma predeterminada, se muestran todas las correlaciones cargadas actualmente para los trabajos de servidor. 4. Elija la correlación que desee en la lista Nombre de correlación predeterminada. Puede seleccionar la opción Mostrar todas las correlaciones y elegir una correlación que no se haya cargado todavía, pero tenga en cuenta que deberá cargar la correlación (consulte "Carga de correlaciones") antes de ejecutar los trabajos que utilizan la correlación. 5. Pulse Aceptar. 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, utilizando el recuadro de diálogo Propiedades del trabajo: 1. Abra el trabajo para el que desea establecer la correlación en el Diseñador de InfoSphere DataStage. 2. Abra el recuadro de diálogo Propiedades de trabajo para dicho trabajo (elija Editar → Propiedades de trabajo). 3. Pulse el separador Soporte multilingüístico para pasar a la página Soporte multilingüístico: 4. Elija la correlación que desee en la lista Correlación predeterminada para las etapas. Seleccione la opción Mostrar todas las correlaciones y elija una correlación que no se haya cargado todavía, pero tenga en cuenta que deberá cargar la correlación (consulte "Carga de correlaciones") antes de ejecutar el trabajo. 5. Pulse Aceptar. La correlación seleccionada es ahora la predeterminada para el trabajo y la que utilizan todas las etapas del trabajo.

24

Guía del desarrollador de Server Job

Especificación de una correlación de etapa 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. Puede especificar correlaciones para todos los tipos de etapa, excepto: v Las etapas activas como, por ejemplo, la etapa Aggregator y Transformer. Estas manejan los datos que se han especificado en InfoSphere DataStage y, por lo tanto, ya se han correlacionado. v Las etapas que utilizan el almacenamiento interno ofrecido por InfoSphere DataStage, es decir, las etapas Hashed File y UniVerse. Estas manejan los datos en el juego de caracteres Unicode, por lo que no requieren ninguna correlación. Para especificar una correlación para una etapa: 1. Abra el editor de etapas en el trabajo en el cliente del Diseñador. Seleccione el separador NLS de la página Etapa. 2. 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. Seleccione la opción Mostrar todas las correlaciones y elija una correlación que no se haya cargado todavía, pero tenga en cuenta que deberá cargar la correlación (consulte “Carga de correlaciones” en la página 23) antes de ejecutar el trabajo que contiene la etapa. v Pulse el botón Utilizar parámetro de trabajo... Esta opción permite seleccionar un parámetro de trabajo existente o especificar uno nuevo. Cuando se ejecuta el trabajo, InfoSphere DataStage utilizará el valor del parámetro para el nombre de correlación. 3. Pulse Aceptar. La etapa utilizará el parámetro de trabajo o la correlación seleccionada.

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. Las siguientes etapas permiten la correlación por columnas: v Etapa ODBC v Etapa Sequential File Para especificar una correlación por columnas: 1. Abra el editor de etapas en el trabajo. Pulse el separador NLS de la página Etapa: 2. Seleccione la opción Permitir correlación por columnas. A continuación, 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. Seleccione la correlación que desee para una determinada columna en la lista desplegable. 4. Pulse Aceptar.

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. No existe siempre una relación directa entre el entorno local y el idioma, por ejemplo, el entorno local del francés es distinto al del francés canadiense. 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 Capítulo 3. Trabajos de servidor y soporte multilingüístico

25

v Visualización de valores monetarios v Si un carácter es alfabético, numérico, si no puede imprimirse, etc. v Orden en que deben ordenarse los caracteres (clasificación) Puede combinar entornos locales si es necesario, por ejemplo podría especificar horas y fechas en un entorno local y convenciones monetarias en otro. En "Entornos locales", se proporcionan descripciones de cada tipo de convenio. En los trabajos del servidor, puede establecer un entorno local predeterminado para un proyecto o para un trabajo individual.

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: 1. Abra el cliente del Administrador. 2. Pulse el separador Proyectos para pasar a la página Proyectos. 3. Seleccione el proyecto para el que desee establecer una correlación predeterminada y pulse el botón NLS... para abrir el diálogo Valores de soporte multilingüístico del proyecto para el proyecto. Pulse el separador Entornos locales del servidor para pasar a la página Entornos locales del servidor. 4. 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. Puede seleccionar la opción Mostrar todos los entornos locales y elegir un entorno local que no se haya cargado todavía, pero tenga en cuenta que deberá cargar el entorno local (consulte "Carga de entornos locales") antes de ejecutar los trabajos que lo utilizan. 5. Pulse Aceptar. El entorno local seleccionado es ahora el predeterminado para la categoría en el proyecto y el que utilizan todos los trabajos del proyecto.

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, utilizando el diálogo Propiedades del trabajo: 1. Abra el trabajo para el que desee establecer el entorno local en el cliente del Diseñador. 2. Abra el recuadro de diálogo Propiedades de trabajo para dicho trabajo (elija Editar → Propiedades de trabajo). 3. Pulse el separador Soporte multilingüístico para pasar a la página Soporte multilingüístico: 4. 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. Puede seleccionar la opción Mostrar todos los entornos locales y elegir un entorno local que no se haya cargado todavía, pero tenga en cuenta que deberá cargar el entorno local (consulte "Carga de entornos locales") antes de ejecutar el trabajo. 5. Pulse Aceptar. El entorno local seleccionado es ahora el predeterminado para la categoría en el trabajo y el que utilizan todas las etapas del trabajo.

26

Guía del desarrollador de Server Job

Capítulo 4. 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. Un archivo sin formato complejo tiene una estructura jerárquica en su disposición de las columnas. Físicamente es un archivo sin formato (es decir, no tiene punteros ni ninguna otra infraestructura complicada), pero lógicamente representa relaciones padre-hijo. Puede utilizar varios tipos de registro para conseguir esta estructura jerárquica.

Cómo reconocer una estructura jerárquica Por ejemplo, utilice registros con varias estructuras para diferentes tipos de información, 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). También puede combinar estas agrupaciones de registros y, cuando se trate de datos que se repitan, puede presentar simultáneamente grupos OCCURS anidados.

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, gestionar y utilizar. 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. 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.

Selección de subconjuntos de columnas Puede seleccionar un subconjunto de columnas desde una extensa CFD (COBOL File Description, Descripción de archivo COBOL). 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, cuando en realidad, sólo necesita unas pocas. Los archivos sin formato complejo también pueden incluir tipos de datos de herencia.

Enlaces de salida La etapa Complex Flat File soporta varias salidas. Un enlace de salida especifica los datos que está extrayendo es decir, una secuencia de filas que se deben leer. Si utiliza la etapa Complex Flat File para procesar un extenso número de columnas, por ejemplo, más de 300, utilice sólo un enlace de salida en su trabajo. Así mejorará sustancialmente el rendimiento de la interfaz gráfica de usuario al cargar, guardar o estructurar estas columnas. 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. La etapa Complex Flat File no dispone de la función de búsqueda de referencias ni soporta los enlaces de entrada. Para obtener más información acerca de los trabajos creados con la versión 1 de esta etapa, consulte la siguiente sección.

© Copyright IBM Corp. 1997, 2010

27

Trabajos existentes creados con la versión 1 de la etapa Complex Flat File Cuando abre por primera vez la etapa Complex Flat File, la cuadrícula del separador Columnas de origen está vacía para los trabajos existentes hasta que pulsa Aceptar y guarda el trabajo. La GUI genera los valores de columna de origen utilizando la lista de columnas de salida, 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. ¿Desea actualizar esta etapa?

Las columnas de origen se rellenan, y puede seleccionar y modificar columnas. Puede detener la actualización seleccionando No en la consulta. No puede utilizar el separador Columnas de origen y la cuadrícula permanece vacía. Los trabajos existentes se ejecutan sin alterar siempre que no guarde el trabajo.

Funcionalidad Funcionalidad soportada La etapa Complex Flat File soporta la funcionalidad siguiente: v Datos en bruto EBCDIC y ASCII. v Los siguientes tipos de datos de COBOL: – Empaquetados (COMP-3). – Delimitados (DISPLAY son signos). – Carácter (DISPLAY o PIC X). – – – – –

Entero (COMP. Entero también soporta implementaciones de 1 y 3 bytes no estándares). Binario (lo mismo que COMP, pero sin signos.) Decimal (COMP-2). Flotante (COMP-1). Estructuras de formato fijas. No soporta columnas que estén separadas por delimitadores.

v Una cláusula REDEFINES. v OCCURS paralela mediante enlaces de salida separados. v OCCURS anidada en el mismo formato CFD. Deben presentarse simultáneamente durante el tiempo de carga (no durante el tiempo de ejecución). v OCCURS fija con ninguna cláusula DEPENDING ON. v Archivos sin formato complejo generados en el sistema principal de IBM. v Soporte multilingüístico. v La capacidad de seleccionar subconjuntos de columnas desde una CFD.

Funcionalidad no soportada No se da soporte a la siguiente funcionalidad: v Formatos de archivo de byte que no son de 8 bits. v Archivos sin formato complejo generados en sistemas principales que no son de IBM (por ejemplo, Windows).

Terminología La lista siguiente describe los términos utilizados en este documento:

28

Guía del desarrollador de Server Job

Término Descripción CFD

Formato de descripción de archivos COBOL.

Archivo sin formato complejo Un superconjunto del archivo sin formato simple que contiene estructuras de datos complejas. Las estructuras de datos complejas soportadas por el archivo sin formato complejo son los grupos, las matrices y las redefiniciones, que se encuentran en los archivos VSAM o QSAM. (Los archivos preparados para la carga o delimitados no contienen estas estructuras complejas). Un archivo sin formato complejo tiene una estructura jerárquica implicada en su disposición de las columnas. Los archivos sin formato complejo también pueden incluir tipos de datos de herencia. 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. Archivo sin formato de ancho fijo Un archivo caracterizado por archivos delimitados o de longitud fija (binarios). Presentación simultánea La conversión de archivos que contienen estructuras de datos complejas como, por ejemplo, matrices, grupos y redefiniciones, en archivos de datos que contienen registros sin relaciones estructuradas. 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). QSAM Método de acceso secuencial en cola. VSAM Método de acceso de almacenamiento virtual. Este método es un sistema de gestión de archivos para el sistema operativo de sistema principal de IBM MVS.

Utilización de la etapa Complex Flat File Si utiliza la interfaz gráfica de usuario personalizada para editar una etapa Complex Flat File, 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 muestra el nombre de la etapa que está editando en el campo Nombre de etapa. El separador General describe el objetivo de la etapa en el campo Descripción. (El separador Soporte multilingüístico sólo aparece si se ha instalado el soporte multilingüístico). Para obtener detalles, consulte “Separador Soporte multilingüístico”.) Nota: No puede cambiar el nombre de la etapa desde este recuadro de diálogo. v Salida. Esta página especifica las fuentes de datos que se deben utilizar y las definiciones de columnas asociadas para cada enlace de salida.

Separador Soporte multilingüístico Puede definir una correlación de juegos de caracteres que interprete el archivo de entrada para una etapa. Realícelo en el separador Soporte multilingüístico en la página Etapa, que sólo aparecerá si ha instalado el soporte multilingüístico. 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.

Capítulo 4. Etapas de trabajo de servidor

29

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 juegos de caracteres predeterminada para el proyecto o el trabajo. 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. Utilice el formato #Param#, donde Param es el nombre del parámetro de trabajo. La serie #Param# se sustituye por el parámetro de trabajo cuando se ejecuta el trabajo. v Mostrar todas las correlaciones. Muestra una lista de todas las correlaciones transferidas con IBM InfoSphere DataStage. v Sólo correlaciones cargadas. Muestra una lista de las correlaciones que están cargadas en ese momento. Si el soporte multilingüístico no está instalado, 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. 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.

Definición de un enlace de salida Al leer datos de un origen de datos, la etapa Complex Flat File tiene un enlace de salida. Defina las propiedades de este enlace y las definiciones de columna de los datos en la página Salida, en el recuadro de diálogo Etapa CFF.

Acerca de la página Salida La página Salida tiene un campo Nombre de salida, los separadores General, Columnas de origen, Seleccionar columnas, Criterios de selección y Columnas de destino y los botones Columnas... y Visualizar datos.... (El separador Soporte multilingüístico sólo aparece si se ha instalado el soporte multilingüístico). Para obtener detalles, consulte “Separador Soporte multilingüístico” en la página 29.) v Nombre de salida. Nombre del enlace de salida. Seleccione el enlace que desee editar en el recuadro de lista Nombre de salida. Esta lista muestra todos los enlaces de salida de una etapa Complex Flat File. v Botón Columnas.... Pulse el botón Columnas... para visualizar una breve lista de columnas en el archivo de fuente de datos. Puede seguir visualizando la lista a medida que va entrando metadatos detallados en el separador Origen Columnas. v Botón Visualizar datos... . Pulse el botón Ver datos... para iniciar el Navegador de datos. Permite ver los datos asociados con el enlace de salida.

Separador General Este separador se visualiza de forma predeterminada. Opcionalmente, puede entrar texto para describir la finalidad del enlace de salida en el campo Descripción. Entre la información correspondiente en los siguientes campos: v Vía de acceso. El nombre de la vía de acceso de entrada de la fuente de datos a partir del que se pueden recuperar los datos. 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. v Formato de los datos. El formato de un archivo de entrada: EBCDIC, ASCII o NLS. Si el soporte multilingüístico está habilitado, el formato de los datos se fija en Soporte multilingüístico y no se podrá editar. (Las correlaciones de soporte multilingüístico soportan datos EBCDIC.) v Estilo del registro. 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

Tabla 2. Tratamiento de fin de la línea Formato de los datos

Estilo del registro

Longitud del registro

Comentarios

ASCII o EBCDIC

Binary

Mayor que cero

La longitud del registro viene determinada por el campo Longitud del registro. Si los metadatos definen un registro que es más largo que el campo Longitud del registro, las columnas que tengan posiciones de inicio mayores que la Longitud del registro se establecerán en nulo.

ASCII o EBCDIC

Binary

Cero

La longitud del registro viene determinada por los metadatos.

ASCII o EBCDIC

CR/LF

Cualquier valor

La longitud del registro viene determinada por el delimitador CR/LF. Si los metadatos definen un registro que es más largo que la Longitud del registro tal y como ha determinado el CR/LF, las columnas que tengan posiciones de inicio mayores que la posición de CR/LF se establecerán en nulo. Si los metadatos definen un registro que es menor que la posición del CR/LF, los datos después del final del registro y antes del CR/LF (tal y como han determinado los metadatos) se descartarán. Si los datos que se están leyendo están en formato EBCDIC, puede generarse una coincidencia de caracteres CR/LF. Éstos también delimitan un registro.

Capítulo 4. Etapas de trabajo de servidor

31

Tabla 2. Tratamiento de fin de la línea (continuación) Formato de los datos

Estilo del registro

Longitud del registro

Comentarios

Soporte multilingüístico

Binary

>0

La longitud del registro viene determinada por el campo Longitud del registro. Si los metadatos definen un registro que es más largo que el campo Longitud del registro, las columnas que tengan posiciones de inicio mayores que la Longitud del registro se establecerán en espacios.

Soporte multilingüístico

CR/LF

Cualquier valor

La longitud del registro viene determinada por el delimitador CR/LF. Si los metadatos definen un registro que es más largo que la Longitud del registro tal y como ha determinado el CR/LF, las columnas que tengan posiciones de inicio mayores que la posición de CR/LF se establecerán en espacios. Si los metadatos definen un registro que es menor que la posición del CR/LF, los datos después del final del registro y antes del CR/LF (tal y como han determinado los metadatos) se descartarán. Si los datos que se están leyendo están en formato EBCDIC, puede generarse una coincidencia de caracteres CR/LF. Éstos también delimitan un registro.

Soporte multilingüístico

Binary

0

La longitud del registro viene determinada por los metadatos.

Nota: Si el Estilo del registro se establece en CR/LF, el CR/LF no debe finalizar el último registro del conjunto de datos. Si uno o varios CR/LF se encuentran al final de un conjunto de datos, se generarán registros vacíos para cada CR/LF. v Verificar valor de signo en datos DECIMAL COMP-3. Si se selecciona esta opción, la etapa comprueba si existe un valor de signo válido en los datos definidos como COMP-3. Si el valor no es un hexadecimal "C," "F," o "D,", la etapa graba un mensaje de error en el registro de IBM InfoSphere DataStage.

32

Guía del desarrollador de Server Job

v Preservar NULL. Si se selecciona esta opción, la etapa interpreta que el valor de cualquier columna que contenga valores nulos binarios será un a SQL_NULL. Si no se selecciona, la etapa interpreta que el valor es cero. De forma predeterminada, no se selecciona la opción Preservar NULL. v Descripción. Texto opcional que describe la finalidad del enlace de salida.

Separador Columnas de origen El separador Columnas de origen contiene la lista completa de todas las columnas. Si utiliza el separador Seleccionar Columnas, podrá seleccionar columnas de esta lista para que los datos se trasladen al enlace de salida de CFF. (También puede utilizar la etapa Transformer para hacerlo, pero el rendimiento será más lento debido a los datos de las columnas que no se utilizan.) Utilice el separador Columnas de origen para entrar los datos de columna que constituyen el archivo sin formato manualmente o puede utilizar Cargar. Nota: No utilice el separador Columnas de origen para omitir columnas del archivo de destino. Las Columnas de origen deben describir de forma precisa y completa el archivo de origen o, de lo contrario, el archivo no se analizará correctamente. En su lugar, utilice el separador Seleccionar columnas para omitir columnas.

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, también deberá presentar simultáneamente todas las matrices manualmente. Las columnas siguientes tienen un significado especial para la etapa Complex Flat File: v Número de nivel. Representa el número de nivel de la columna dentro de una descripción de archivo de COBOL. v Tipo nativo. Representa el tipo de datos de COBOL. Las otras columnas de la cuadrícula son las columnas estándar para el separador Columnas. Puede editar estos campos pulsando el botón derecho del ratón en una fila de la cuadrícula y seleccionado Editar fila... . Se abrirá el recuadro de diálogo Editar columna.

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. 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, 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.

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. La lista siguiente define las propiedades que se capturan para metadatos de archivo sin formato complejo. Campo Descripción Nombre de la columna Nombre de la columna. Capítulo 4. Etapas de trabajo de servidor

33

Clave Especifica si la columna es una clave. Tipo nativo Tipo de datos nativo de la columna. Utilice uno de los valores siguientes: FLOAT, DECIMAL, BINARY, DISPLAY_NUMERIC, CHARACTER, o GROUP. Para obtener detalles acerca de la utilización del tipo nativo GROUP para manejar fechas, consulte “Separador Columnas de destino” en la página 37. Longitud Valor numérico de la precisión. Escala Número de posiciones decimales. Con posibilidades de nulos Especifica si la columna puede contener valores nulos. Si se establece en Sí, estará sujeta a una restricción NOT NULL. (Sí/No) Formato de fecha Formato de una columna de fecha. Descripción Descripción de una columna. Consulte los ejemplos de los valores del campo Descripción al final de esta sección. Número de nivel Número de nivel COBOL relativo de la columna. OCCURS Número de ocurrencias de la columna especificada en la cláusula OCCURS de COBOL. (Consulte los ejemplos de OCCURS paralela, a la que no se da soporte, al final de esta sección.) Especifica una cláusula de uso de COBOL. Utilice una de las siguientes:

Uso

COMP COMP-1 COMP-2 COMP-3 DISPLAY Indicador de signo Especifica el signo. Fíjelo en S si la serie de caracteres de la imagen contiene el símbolo S. De lo contrario, fíjelo en U. Opción de signo Si especifica una cláusula de signo y la serie de caracteres de la imagen contiene un símbolo S, este atributo se establece en uno de los valores siguientes: L - LEADING T - TRAILING LS - LEADING SEPARATE TS - TRAILING SEPARATE Indicador de sinc. Especifica si es una cláusula sincronizada de COBOL. Campo redefinido Nombre de la columna que se está redefiniendo. Depending on Nombre de la columna de dependencia. Longitud de almacenamiento Longitud de almacenamiento real en bytes de la columna. Picture Muestra una cláusula Picture generada en base a los valores en Nativo Tipo, Longitud y Escala.

34

Guía del desarrollador de Server Job

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. v Anterior y Siguiente. Visualizar los metadatos de la fila anterior o de la siguiente. v Cerrar. Cerrar el recuadro de diálogo Editar metadatos de columna. Si hay cambios pendientes para la fila actual, se le preguntará si desea guardarlos antes de cerrar la ventana. v Aplicar. Guardar los cambios en la fila actual. v Restablecer. Eliminar todos los cambios efectuados en la fila desde la última vez que se aplicaron los cambios. Sólo aparece visible un subconjunto de estas propiedades en el separador Columnas de origen. Para ver todas las propiedades de una determinada fila, pulse con el botón derecho del ratón en una fila de la cuadrícula y seleccione Editar fila.... 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, pulse el botón Guardar.... Para cargar una definición de tabla existente en una etapa, utilice el botón Cargar....

Gestión de OCCURS paralelas La etapa Complex Flat File no soporta OCCURS paralelas, es decir: dos o más cláusulas OCCURS en la misma definición de datos. Es necesario procesar estas cláusulas OCCURS paralelas para separar enlaces de salida. Este ejemplo emplea una cláusula PHONES OCCURS y una cláusula ADDRESS OCCURS: 01 CLIENT. 03 SURNAME 03 FORENAME 03 ADDRESS 05 ADDLINE 03 POSTCODE 03 PHONES 05 TELNO

PIC X(25). PIC X(25). OCCURS 4. PIC X (10). PIC X (10). OCCURS 2. PIC X(10).

El ejemplo siguiente utiliza una cláusula PHONES OCCURS y una cláusula ADDLINE OCCURS: 01 CLIENT. 03 SURNAME 03 FORENAME 03 ADDRESS. 05 ADDLINE 03 POSTCODE 03 PHONES 05 TELNO

PIC X(25). PIC X(25). PIC X (10) OCCURS 5. PIC X (10). OCCURS 2. PIC X(10).

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. Para procesar OCCURS paralelas: 1. Borre el campo OCCURS utilizando el recuadro de diálogo Editar metadatos de columna. 2. Entre NONE en el campo Descripción de las columnas que no están siendo procesadas en este enlace. De esta manera se consigue que los datos de dichas columnas fluyan sin modificarse. Capítulo 4. Etapas de trabajo de servidor

35

3. Cree un enlace de salida separado utilizando un procedimiento similar para procesar la próxima OCCURS.

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. Sólo utilícelo con campos DECIMAL. Puede utilizar este valor con campos de decimales empaquetados para desencadenar algoritmos especiales de desempaquetamiento. v ANYSIGN_DECIMAL. Sólo utilícelo con campos DECIMAL. Puede utilizar este valor con campos de decimales empaquetados para desencadenar algoritmos especiales de desempaquetamiento. v NONE. Utilícelo con tipos nativos non-GROUP. NONE provoca que los datos fluyan por la etapa sin modificarla, es decir, no se realizan conversiones en los datos y se produce una salida de datos en bruto. NONE se ignorará si utiliza un formato de fecha. v OCCURS_COUNTER. Se comporta como una pseudocolumna del tipo nativo DECIMAL que no espera recibir datos en la secuencia de entrada. Primero debe insertar un campo nuevo con el tipo DECIMAL en la cuadrícula Columnas dentro de la cláusula OCCURS. También debe incluir la serie OCCURS_COUNTER en el campo Descripción. Durante el tiempo de ejecución, la etapa crea sus propios datos incrementando automáticamente el contador para cada ocurrencia que se procesa. Actualmente no está soportado por el OCCURS anidado.

Columnas GROUP y OCCURS Si selecciona una columna en un GROUP que tiene una OCCURS y no se selecciona la columna GROUP, podrían visualizarse resultados incorrectos. Debe incluir la columna GROUP con OCCURS en su selección si elige cualquier columna en el GROUP. Nota: Sólo podrían seleccionarse determinados tipos de columnas GROUP. Consulte las secciones siguientes para obtener detalles.

Separador Seleccionar columnas Utilice el separador Seleccionar columnas para elegir las columnas que se deben cargar al enlace de salida. 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. Nota: No utilice el separador Columnas de origen con el objetivo de seleccionar columnas para el archivo de destino. Sólo utilice el separador Seleccionar columnas para este propósito. 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 funciona de forma parecida a la etapa de origen de sistema principal Complex File, tal y como se describe a continuación: v Columnas disponibles lista las columnas de origen visualizadas en formato jerárquico. Utiliza campos para columnas non-GROUP y carpetas para columnas GROUP. Cuando selecciona o borra cada columna, aparece una marca de selección en la columna de la lista. Sólo puede seleccionar columnas GROUP si todas las columnas en GROUP tienen el tipo de datos CHARACTER. Si cualquier columna en GROUP tiene un tipo de datos distintos, no podrá seleccionar la columna GROUP y se visualizará como tal. v Columnas seleccionadas contiene la lista de columnas que está creando utilizando las teclas de flecha. v Utilice estas teclas de flecha para mover las columnas de acá para allá entre la lista Columnas disponibles y la lista Columnas seleccionadas. Utilice la flecha simple ( > ) para mover columnas resaltadas y la flecha doble ( >> ) para mover todos los elementos.

36

Guía del desarrollador de Server Job

v De forma predeterminada se seleccionan todas las columnas para la carga. Pulse Buscar para abrir un recuadro de diálogo que permite buscar una columna en concreto. v Pulse Aceptar cuando termine la selección para cargar las columnas seleccionadas.

Separador Criterios de selección Utilice el separador Criterios de selección para redefinir campos extraídos del archivo de entrada. Entre la información correspondiente en los siguientes campos: v Registro de inicio #. Número de registro a partir del que se inicia el proceso. v Registro de fin #. Número de registro a partir del que se detiene el proceso. v Campo ID. Seleccione el campo que contenga el tipo de registro del recuadro de lista. v Valor (hex). Valor del tipo de registro. Este valor se convierte en el Estilo de registro antes de la comparación, por ejemplo, ASCII o EBCDIC. Sólo se envían los registros que contienen este valor al enlace de salida. No se soportan los rangos de valores. Si el valor está precedido por el carácter &, se tratará como un valor hexadecimal y se comparará sin ninguna conversión.

Ejemplo redefinido La etapa Complex Flat File soporta la redefinición de cualquier parte del archivo de origen. Lo hace al restableciendo la posición de inicio de un campo cuyos metadatos redefinen otro campo. Por ejemplo, Field-2 redefine Field-1 y así sucesivamente. Entrada: 01 Ejemplo-Registro. 03 Field-1 Pic X(24). 03 Field-2 redefine Field-1. 05 Field-2a Pic X(8). 05 Field-2b Pic X(8). 05 Field-2c Pic X(8). 03 Field-3 Pic X(24). 03 Field-3 redefine Field-3. 05 Field-4a Pic X(8). 05 Field-4b Pic X(8). 05 Field-4c Pic X(8). 03 Field-5 redefine Field-1. 05 Field-5a Pic X(8). 05 Field-5b Pic X(8). 05 Field-5c Pic X(8). 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. Las columnas aparecen en gris y no son editables. Debe utilizar el separador Seleccionar columnas para elegir las columnas que desea cargar al enlace de salida.

Capítulo 4. Etapas de trabajo de servidor

37

Consideraciones sobre la fecha En muchos casos, los archivos de COBOL definen fechas como un campo de caracteres. Por ejemplo: 05 Application-Date

pic 99999999.

Pulse el separador Origen Columnas en la página Salida para entrar o cargar definiciones de columna para sus datos. En este caso, defina el campo Tipo nativo para Application-Date (aplicación-fecha) como CARÁCTER. Seleccione un formato adecuado en el campo Formato de fecha de la ventana Editar metadatos de columna, en este caso, CCYYMMDD. Para generar una fecha de IBM InfoSphere DataStage en la columna del enlace de salida, los datos de entrada y el campo Formato de fecha deben utilizar el mismo formato. Por ejemplo, los datos de entrada con formato "25/12/2000" deben utilizar el formato DD/MM/CCYY en el campo Formato de fecha. De lo contrario, 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.

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.

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. Las etapas Folder también pueden grabar filas de datos como archivos en un directorio. Las filas llegan a la etapa en un enlace de entrada. Nota: El comportamiento de la etapa Folder cuando lee carpetas que contienen otras carpetas no está definido. En un entorno de soporte multilingüístico, 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. Cuando edita una etapa Folder, aparece el recuadro de diálogo Etapa Folder. Este recuadro de diálogo tiene tres páginas: v Etapa. El separador General muestra el nombre de la etapa que está editando, el tipo de etapa y una descripción. El separador Propiedades contiene las propiedades que definen la operación de la etapa. v Entradas. El separador Columnas muestra las definiciones de columna para los datos que llegan al enlace de entrada. 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. v Salidas. El separador Columnas muestra las definiciones de columna para los datos que salen en el enlace de salida. El separador Propiedades controla la operación del enlace. 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.

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. 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. El separador también presenta los campos siguientes:

38

Guía del desarrollador de Server Job

v Mostrar todas las correlaciones. Lista todas las correlaciones suministradas mediante IBM InfoSphere DataStage. Las correlaciones no se pueden utilizar a menos que se hayan cargado utilizando el cliente del Administrador. v Sólo correlaciones cargadas. Muestra las correlaciones que se han cargado y que están preparadas para ser utilizadas. v Utilizar parámetro de trabajo... . Permite especificar una correlación de juegos de caracteres como un parámetro del trabajo que contiene la etapa. Si el parámetro todavía no se ha definido, el sistema solicitará su definición desde el recuadro de diálogo Propiedades del trabajo.

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. En este caso, el directorio en el que se graban se define en el separador Propiedades de la página Etapa. El separador Propiedades de la página Entradas define propiedades para el enlace de entrada. Las propiedades son las siguientes: v Conservar CRLF. Cuando Conservar CRLF se establece en Sí, las marcas de campo no se convierten en nuevas líneas al grabarse. Se establece en Sí de forma predeterminada. El separador Columnas define los datos que llegan al enlace que se van a grabar en archivo en el directorio. La primera columna del separador Columnas debe definirse como una clave, y proporciona el nombre del archivo. Las restantes columnas se graban en el archivo denominado, separando cada columna con una línea nueva. Los datos que se van a grabar en un directorio se proporcionan normalmente en una sola columna. Por ejemplo, la cuadrícula de columnas será parecida a la siguiente: Nombre de la columna Nombre de archivo Registro

Escala

Con posibilidades de nulos

Clave

Tipo de SQL

Longitud

U

VarChar

255

No

LongVarChar

999999

No

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. Las propiedades son las siguientes: v Orden de clasificación. Puede elegir Ascendente, Descendente o Ninguno. Especifica el orden en el que se leen los archivos en el directorio. v Asterisco. Permite la utilización sencilla de comodines en los nombres de los archivos en el directorio. Cualquier aparición de * (asterisco) o ... (tres puntos) se trata como una instrucción para que coincida con cualquier carácter o con ninguno. v Conservar CRLF. Cuando Conservar CRLF se establece en Sí, las nuevas líneas no se convierten en marcas de campo al leerse. Se establece en Sí de forma predeterminada. v Calificado al completo. 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, en lugar de sólo el nombre de archivo. El separador Columnas define un máximo de dos columnas. La primera columna se debe marcar como la clave y recibe el nombre de archivo. La segunda columna, si existe, recibe el contenido del archivo. Puede cargar estas definiciones de columna de la definición de tabla predeterminada proporcionada para la

Capítulo 4. Etapas de trabajo de servidor

39

etapa. 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.

Etapas Hashed File Las etapas Hashed File representan un archivo hash, es decir, un archivo que utiliza un algoritmo de hash para distribuir registros en uno o más grupos en el disco. Utilice una etapa Hashed File para acceder a los archivos de UniVerse. El motor de servidor puede alojar archivos de UniVerse localmente. Puede utilizar un archivo hash como archivo intermedio en un trabajo y aprovechar las ventajas del alojamiento local de DSEngine. 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.

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. El rol principal de una etapa Hashed File es el de una tabla de referencia basada en un solo campo clave. Cada etapa Hashed File puede tener una cantidad distinta de entradas o salidas. Cuando edita una etapa Hashed File, aparece el recuadro de diálogo Etapa Hashed File. 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. Muestra el nombre de la etapa que se está editando. Esta pestaña tiene un separador General, 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. Si selecciona esta opción, debe elegir el nombre de la cuenta en la lista Nombre de cuenta. Esta lista contiene todas las cuentas definidas en la carpeta Definiciones de tablas → Con hash en el repositorio. Si la cuenta que desea no está en la lista, es conveniente definir una definición de tabla. O buen, puede especificar un nombre de cuenta o utilizar un parámetro de trabajo. Para obtener más información sobre cómo crear una definición de tabla, o cómo definir y utilizar parámetros de trabajo, consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. – Utilizar vía de acceso de directorio. Si selecciona esta opción, debe especificar una vía de acceso de directorio que contenga la cuenta de UV. El directorio debe ser una cuenta de UniVerse y se utiliza para las cuentas de UniVerse que no aparecen en el archivo UV.ACCOUNT. Si DSEngine aloja localmente el archivo hash, debe especificar el directorio del proyecto de IBM InfoSphere DataStage como la vía de acceso del directorio, por ejemplo, C:\IBM\InformationServer\Server\Projects\ Dstage. El directorio se especifica en el campo Vía de acceso de directorio. Puede especificar la vía de acceso directamente, pulsar Examinar... para buscar un directorio adecuado en el sistema o utilizar un parámetro de trabajo. – Valor nulo de SQL. Determina qué carácter representa el valor nulo de SQL en el archivo hash correspondiente a esta etapa. Si el sistema utiliza el símbolo del Euro, seleccione la opción Especial (permitir Euro) en la lista. Seleccione Detección automática para que InfoSphere DataStage determine que representa el nulo SQL. – Compatibilidad de etapas de UniVerse. Marque este recuadro de selección para asegurarse de que las conversiones de trabajos funcionarán correctamente. Con esta opción seleccionada, 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. (El programa de utilidad de conversión de trabajos es una herramienta autónoma especial; no está disponible en el cliente del Diseñador.) v Entradas. Esta página sólo se muestra si dispone de un enlace de entrada de esta página. Especifica el archivo de datos que se debe utilizar y las definiciones de columnas asociadas para cada enlace de entrada de datos. Esta página también especifica cómo se graban datos en el archivo de datos.

40

Guía del desarrollador de Server Job

v Salidas. Esta página sólo se muestra si dispone de un enlace de salida de esta etapa. Especifica el archivo de datos que se debe utilizar y las definiciones de columnas asociadas a cada enlace de salida de datos. Pulse Aceptar para cerrar este recuadro de diálogo. Los cambios se guardan cuando se guarda el trabajo. Si una etapa Hashed File hace referencia a un archivo hash que no existe, utilice la característica Trabajo de validación de Director antes de ejecutar el trabajo y InfoSphere DataStage lo creará automáticamente. Para validar un trabajo, elija Trabajo → Validar en el cliente del Director. Aparecerá el diálogo Opciones de ejecución del trabajo. Pulse Validar. Para obtener más información sobre cómo validar un trabajo y establecer las opciones de trabajo, consulte IBM InfoSphere DataStage and QualityStage Director Client Guide.

Definición de datos de entrada de Hashed File Al grabar datos en un archivo hash, la etapa Hashed File dispone de un enlace de entrada. 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. La página Entradas presenta el campo y los dos separadores siguientes: v Nombre de entrada. Nombre del enlace de entrada. Seleccione el enlace que desee editar desde la lista Nombre de entrada. Esta lista muestra todos los enlaces de entrada con la etapa Hashed File. v General. Se visualiza de forma predeterminada. Contiene los campos y opciones siguientes: – Nombre de archivo. El nombre del archivo en el que se graban los datos. 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. Esta lista contiene todos los archivos definidos en la carpeta Definiciones de tabla → Con hashNombre de cuenta del repositorio, donde Nombre de cuenta es el nombre de la cuenta elegida en la página Etapa. De forma predeterminada, el nombre del enlace de entrada se utiliza como nombre de archivo. Si el archivo que desea no está en la lista, es conveniente definir una definición de tabla. – Borrar archivo antes de grabar. Si selecciona este recuadro, el archivo existente se borra, y se graban registros de datos nuevos en el archivo vacío. Este recuadro de selección está deseleccionado de forma predeterminada. – Hacer copia de seguridad de archivo existente. Si selecciona este recuadro, se realiza una copia de seguridad del archivo existente antes de grabar los registros de datos nuevos en el 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. Este recuadro de selección está deseleccionado de forma predeterminada. – Permitir memoria caché de grabación de la etapa. 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. No lo seleccione si el trabajo graba y lee en el mismo archivo hash en la misma secuencia de ejecución, por ejemplo, cuando una etapa Transformer comprueba si ya existe un registro para determinar la operación necesaria. (Si tiene habilitado el almacenamiento en memoria caché en el servidor, los atributos de memoria caché con los que se ha creado el archivo alterarán temporalmente la memoria caché a nivel de etapa). – Crear archivo. Seleccione este recuadro de selección para especificar que la etapa creará el archivo hash en el que grabar. 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). – Descripción. Contiene una descripción opcional del enlace de entrada. v Columnas. Contiene las definiciones de columnas para los datos grabados en el archivo. Nota: Debe utilizar los recuadros de selección Clave para identificar las columnas de claves. De lo contrario, se toma la primera definición de columna como campo de clave del archivo hash. Las Capítulo 4. Etapas de trabajo de servidor

41

restantes columnas dictan el orden en el que se grabarán los datos en el archivo hash. 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. Pulse Ver datos... para abrir el Navegador de datos. Esto le permite examinar los datos asociados al enlace de entrada. Para obtener una descripción del Navegador de datos, consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide.

Opciones de creación de archivo Si elige crear el archivo hash en el que desea grabar, el recuadro de diálogo Opciones de creación de archivo permite especificar diversas opciones sobre cómo se crea el archivo. El recuadro de diálogo contiene los campos siguientes: v Tipo de archivo. El tipo de archivo seleccionado determina qué otras opciones están disponibles en el recuadro de diálogo. El valor predeterminado es Type30(Dynamic). v Módulo mínimo. Sólo visible para tipos de archivo Type30(Dynamic). Especifica el módulo mínimo de archivo dinámico en el rango entre 1 y 999999. El valor predeterminado es 1. v Tamaño del grupo. Sólo visible para tipos de archivo Type30(Dynamic). Especifica el tamaño del grupo dinámico. 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. El valor predeterminado es 1. v Carga partida. Sólo visible para tipos de archivo Type30(Dynamic). Especifica el particionamiento del archivo dinámico como un porcentaje entre 1 y 99. El valor predeterminado es 80. v Carga con fusión. Sólo visible para tipos de archivo Type30(Dynamic). Especifica la carga con fusión del archivo dinámico como un porcentaje en el rango entre 1 y 99. El valor predeterminado es 50. v Registro grande. Sólo visible para tipos de archivo Type30(Dynamic). Especifica el valor de registro grande en bytes en el rango entre 1 y 999999. El valor predeterminado es 1628. v Algoritmo hash. Sólo visible para tipos de archivo Type30(Dynamic). Especifica el algoritmo de dispersión (hash) de archivos dinámico. Seleccione entre GENERAL o SEQ.NUM. El valor predeterminado es GENERAL. v Tamaño de registro. Sólo visible para tipos de archivo Type30(Dynamic). Especifica el tamaño de registro en el rango entre 1 y 999999. v Módulo. Sólo es visible para tipos de archivo hash. Especifica el módulo del archivo hash en el rango entre 1 y 999999. El valor predeterminado es 1. v Separación. Sólo es visible para tipos de archivo hash. Especifica la separación del archivo hash en el rango entre 1 y 999999. El valor predeterminado es 2. v Atributos de memoria caché. Si tiene habilitada la memoria caché del servidor, esta opción permite elegir los atributos de memoria caché para el archivo que está creando. Estos atributos permanecerán con el archivo siempre que se utilice posteriormente. NINGUNO significa que no se realiza el almacenamiento en memoria caché. GRABACIÓN DIFERIDA es el método más rápido, pero la integridad de los archivos se puede perder si se cuelga el sistema. GRABACIÓN INMEDIATA es más lento, pero más seguro por lo que respecta a la integridad. v Espacio mínimo. Sólo visible para tipos de archivo Type30(Dynamic). Seleccione esta opción para especificar que se ajusten algunas de las otras opciones para optimizar el tamaño de archivo mínimo. v Suprimir el archivo antes de la creación. 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.

Definición de datos de salida de Hashed File Al extraer datos de un archivo hash, la etapa Hashed File dispone de un enlace de salida. 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.

42

Guía del desarrollador de Server Job

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

Capítulo 4. Etapas de trabajo de servidor

43

Pulse Ver datos... para abrir el Navegador de datos. Esto le permitirá ver los datos asociados con el enlace de salida. Si tiene previsto leer y grabar en un archivo hash al mismo tiempo, debe configurar una selección en el separador Selección, o debe seleccionar el recuadro de selección Lectura por registros en el separador General. Esto garantiza que el archivo se lea en registros en lugar de en grupos y que funcionen los bloqueos de registros. No obstante, 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.

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, deberá realizar varios pasos para dar soporte al símbolo. Los pasos a realizar dependen de en qué tipo de sistema esté ejecutando el servidor de IBM InfoSphere DataStage.

Sistemas UNIX con la página de códigos ISO 8859-15 Para dar soporte al símbolo de euro en este sistema, debe editar el archivo msg.txt en el directorio de inicio de IBM InfoSphere DataStage, tal como se muestra a continuación: v En la línea LOC0016, sustituya el símbolo $ por el símbolo de euro (puede generar un símbolo de euro utilizando un teclado que lo genere, o utilizar el mandato BASIC char(128) o char(164). v En la línea LOC0015, asegúrese de que se haya establecido el separador decimal correcto. v En la línea LOC0014, asegúrese de que se haya establecido el separador de millares correcto.

Sistemas Windows y sistemas UNIX con la página de códigos Windows En estos sistemas, 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. Para solucionar este problema, deben realizarse varios pasos: v Si el sistema no necesitará nunca que el símbolo de euro aparezca de forma aislada en una columna de un archivo hash, lo único que debe hacer es editar el archivo msg.txt en el directorio de inicio de IBM InfoSphere DataStage, tal como se muestra a continuación: – En la línea LOC0016, sustituya el símbolo $ por el símbolo de euro (puede generar un símbolo de euro utilizando un teclado que lo genere, o utilizar el mandato BASIC char(128) o char(164). – En la línea LOC0015, asegúrese de que se haya establecido el separador decimal correcto. – En la línea LOC0014, asegúrese de que se haya establecido el separador de millares correcto. v Si el sistema requiere utilizar el símbolo de euro de forma aislada, deberá elegir otro carácter para representar el nulo de SQL. Esta acción se realiza en el separador General de la página Etapa del archivo hash. Seleccione una de las opciones siguientes en la lista Valor nulo de SQL: – Especial (permitir Euro). Esta opción establece el nulo de SQL en 0x19. – Detección automática. Esta opción detecta si el euro es el símbolo de la moneda local y, en caso afirmativo, establece el nulo de SQL en 0x19.

Etapas Sequential File Las etapas Sequential File se utilizan para extraer datos de, o grabar datos en, un archivo de texto. El archivo de texto se puede crear o puede existir en cualquier unidad que sea local o que esté correlacionada con el servidor. Cada etapa Sequential File puede tener una cantidad distinta de entradas o salidas.

44

Guía del desarrollador de Server Job

Utilización de la etapa Sequential File Cuando edita una etapa Sequential File, aparece el recuadro de diálogo Etapa Sequential File. 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. Muestra el nombre de la etapa que se está editando. El separador General también permite especificar opciones de finalización de línea, una descripción opcional de la etapa y si la etapa utiliza conductos con nombre o mandatos de filtro. 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. De forma predeterminada, la finalización de línea coincide con el tipo utilizado en el servidor IBM InfoSphere DataStage. Para cambiar el valor, elija Estilo Unix (LF), Estilo DOS (CR LF) o Ninguno. Seleccione el recuadro de selección La etapa utiliza conductos con nombre si desea utilizar los recursos de los conductos con nombre. Estos recursos permiten dividir un trabajo grande en diversos trabajos más pequeños. Se recomienda hacerlo si hay un elevado grado de paralelismo en el diseño, ya que aumenta el rendimiento y permite a varios desarrolladores trabajar en el diseño al mismo tiempo. Cuando este recuadro de selección está seleccionado, todas las entradas y salidas de la etapa utilizan conductos con nombre. Puede ver algunos ejemplos de cómo utilizar los recursos de conducto con nombre en la ayuda del desarrollador de InfoSphere DataStage. 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. 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). Las opciones La etapa utiliza conductos con nombre y La etapa utiliza mandatos de filtro son mutuamente exclusivas. Si el soporte multilingüístico está habilitado, el separador Soporte multilingüístico permite definir una correlación de juegos de caracteres y valores Unicode para la etapa. Para obtener más información, consulte “Definición de correlaciones de juegos de caracteres”. v Entradas. Contiene información sobre los formatos de archivo y las definiciones de columna para cada enlace de entrada de datos. Esta página sólo se muestra si dispone de un enlace de entrada de esta página. v Salidas. Contiene información sobre el formato de archivo y las definiciones de columna para los enlaces de salida de datos. Esta página solamente aparece si dispone de un enlace de salida de esta etapa. Pulse Aceptar para cerrar este recuadro de diálogo. Los cambios se guardan cuando se guarda el trabajo.

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. 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. El separador también presenta los campos siguientes: v Mostrar todas las correlaciones. Elija este campo para mostrar todas las correlaciones proporcionadas con IBM InfoSphere DataStage en la lista. Las correlaciones no se pueden utilizar a menos que se hayan cargado utilizando el cliente del Administrador. v Sólo correlaciones cargadas. Muestra las correlaciones que se han cargado y que están preparadas para ser utilizadas. v Utilizar parámetro de trabajo... . Permite especificar una correlación de juegos de caracteres como un parámetro del trabajo que contiene la etapa. Si el parámetro todavía no se ha definido, el sistema solicitará su definición desde el recuadro de diálogo Propiedades del trabajo. Capítulo 4. Etapas de trabajo de servidor

45

v Utilizar correlación de UNICODE. Si selecciona este campo, 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. – Si se selecciona Intercambio de bytes, los datos se leen o se graban con el byte de orden inferior primero. Por ejemplo, 0X0041 (es decir, "A") se graba como los bytes 0X41,0X00. De lo contrario, se graba como 0X00,0X41. – Si se selecciona El primer carácter es la marca de orden de bytes, la etapa lee o graba la secuencia 0XFE,0XFF, si hay intercambio de bytes, o 0XFF,0XFE si no hay intercambio de bytes.

Definición de datos de entrada de Sequential File Al grabar datos en un archivo secuencial, la etapa Sequential File dispone de un enlace de entrada. 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. La página Entradas contiene el campo y los tres separadores siguientes: v Nombre de entrada. Nombre del enlace de entrada. Seleccione el enlace que desee editar desde la lista Nombre de entrada. Esta lista muestra todos los enlaces de entrada con la etapa Sequential File. v General. Se visualiza de forma predeterminada. Contiene los siguientes parámetros: – Nombre de archivo. 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. Para obtener más información sobre cómo definir parámetros de trabajo, consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide. También se puede localizar el archivo. Si no especifica ninguno, el nombre de archivo tomará como valor predeterminado el nombre del enlace. – Mandato de filtro. Aquí puede especificar un programa de filtro que procese los datos antes de que se graben en el archivo. Por ejemplo, este parámetro se puede utilizar para especificar un programa zip para comprimir los datos. Puede escribir el nombre del programa de filtro, o examinar para buscarlo, y especificar los argumentos de línea de mandatos que necesite en el recuadro de texto. 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). Tenga en cuenta que si se especifica un mandato de filtro, no se podrán examinar los datos, por lo que el botón Ver datos estará inhabilitado. – Descripción. Contiene una descripción opcional del enlace de entrada. El separador General también contiene opciones que determinan cómo se graban los datos en el archivo. Se encuentran debajo del área Acción de actualización: – Sobrescribir archivo existente. Esta opción es la predeterminada. Si se selecciona esta opción, el archivo existente se trunca y los nuevos registros de datos se graban en un archivo vacío. – Anexar a archivo existente. Si selecciona esta opción, los registros de datos se anexan al final del archivo existente. – Hacer copia de seguridad de archivo existente. Si selecciona este recuadro de selección, se realiza una copia de seguridad del archivo existente. Los nuevos registros de datos se graban según decida anexar o sobrescribir el archivo existente. 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. Consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide para obtener más información. v Formato. Contiene parámetros que determinan el formato de los datos del archivo. Puede haber hasta cuatro recuadros de selección:

46

Guía del desarrollador de Server Job

– Columnas de anchura fija. Si selecciona este recuadro de selección, los datos se graban en el archivo en 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). De forma predeterminada, esta opción está borrada. – La primera línea es nombres de columnas. Seleccione este recuadro de selección si la primera fila de datos del archivo contiene nombres de columna. Esta opción está sin marcar de forma predeterminada; es decir, la primera fila del archivo contiene datos. – Omitir última línea nueva. Marque este recuadro de selección si desea eliminar el último carácter de nueva línea del archivo. Esta opción está sin marcar de forma predeterminada; es decir, el carácter de línea nueva no se elimina. – Desechar después de cada fila. Este parámetro sólo aparece si ha seleccionado La etapa utiliza conductos con nombre en la página Etapa. Si selecciona este recuadro de selección, los datos se pasan entre el lector y el grabador del conducto registro por registro. –







Puede haber hasta siete campos en el separador Formato: Delimitador. Sólo se activa si no ha especificado columnas de anchura fija. Contiene el delimitador que separa los campos de datos en el archivo. De forma predeterminada, este campo contiene una coma. 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 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. Los valores hexadecimales deben prefijarse con &h. Entre 000 para suprimir el delimitador. Carácter de cita. Sólo se activa si no ha especificado columnas de anchura fija. Contiene el carácter utilizado para incluir series. De forma predeterminada, este campo contiene un carácter de comillas dobles. 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 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. Los valores hexadecimales deben prefijarse con &h. Entre 000 para suprimir el carácter de cita. Espacios entre columnas. Este campo sólo se activa cuando selecciona el recuadro de selección Columnas de anchura fija. Contiene un número para representar el número de espacios utilizado entre columnas. Serie NULL 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).

– Relleno predeterminado. Contiene el carácter utilizado para rellenar las columnas ausentes. Es # de forma predeterminada, 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. 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. 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 valores recomendados son de 30 a 600 segundos. Si la etapa supera el tiempo de espera , se emitirá un error y el trabajo terminará anormalmente. – Tiempo de espera para la grabación. Especifica durante cuánto tiempo intentará la etapa grabar datos en un conducto antes de exceder el tiempo de espera. Los valores recomendados son de 30 a 600 segundos. Si la etapa supera el tiempo de espera , se emitirá un error y el trabajo terminará anormalmente. v Columnas. Contiene las definiciones de columnas de los datos en el enlace de entrada elegido. Además de los campos de definición de columna estándar (Nombre de columna, Clave, Tipo de SQL, Longitud, Escala, Con posibilidades de nulos, Visualización, Elemento de datos y Descripción), los separadores Columna de la etapa Sequential File también tienen los campos siguientes: – Serie Null. Rellene este campo si desea alterar temporalmente el valor predeterminado del separador Formato correspondiente a esta columna en particular. Capítulo 4. Etapas de trabajo de servidor

47

– Relleno. Rellene este campo si desea alterar temporalmente el valor predeterminado del separador Formato correspondiente a esta columna en particular. – Contiene terminadores. No se aplica a los enlaces de entrada. – Columna incompleta. No se aplica a los enlaces de entrada. Tenga en cuenta que la Escala de una columna de archivo secuencial tiene un límite práctico de 14. Si se utilizan valores mayores que este, los resultados pueden ser ambiguos. Las propiedades de tipo de datos SQL afectan a cómo se graban los datos en un archivo secuencial. El tamaño de visualización de SQL determina el tamaño de las columnas de anchura fija. 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, y los tipos de datos numéricos no se escriben entre comillas y están justificados a la derecha. Las propiedades de SQL están en la cuadrícula Columnas cuando edita una columna de entrada. Pulse Ver datos... para abrir el Navegador de datos. Esto le permite examinar los datos asociados al enlace de entrada. Para obtener una descripción del Navegador de datos, consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide.

Definición de datos de salida de Sequential File Al extraer (leer) datos de un archivo secuencial, la etapa Sequential File dispone de un enlace de salida. 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. La página Salidas presenta el campo y los tres separadores siguientes: v Nombre de salida. Nombre del enlace de salida. Seleccione el enlace que desee editar desde la lista Nombre de salida. Esta lista muestra todos los enlaces de salida con la etapa Sequential File. v General. Se visualiza de forma predeterminada. Hay dos campos: – Nombre de archivo. El nombre de vía de acceso del archivo del que se extraen los datos. Puede especificar un parámetro de trabajo que represente el archivo creado en tiempo de ejecución. También se puede localizar el archivo. – Mandato de filtro. Aquí puede especificar un programa de filtro para procesar el archivo del que está extrayendo datos. Por ejemplo, esta característica se puede utilizar para descomprimir un archivo comprimido antes de leerlo. Puede escribir el nombre del programa de filtro, o examinar para buscarlo, y especificar los argumentos de línea de mandatos que necesite en el recuadro de texto. 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). Tenga en cuenta que si se especifica un mandato de filtro, no se podrán examinar los datos, por lo que el botón Ver datos estará inhabilitado. – Descripción. Contiene una descripción opcional del enlace de salida. v Formato. Contiene parámetros que determinan el formato de los datos del archivo. Hay tres recuadros de selección: – Columnas de anchura fija. Si selecciona este recuadro de selección, los datos se extraen del archivo en 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). De forma predeterminada, esta opción está borrada. – La primera línea es nombres de columnas. Seleccione este recuadro de selección si la primera fila de datos del archivo contiene nombres de columna. Esta opción está sin marcar de forma predeterminada; es decir, la primera fila del archivo contiene datos. – Supresión de advertencias de truncamiento de filas. Si el archivo secuencial que se está leyendo contiene más columnas que las que haya definido, normalmente recibirá avisos acerca de las filas

48

Guía del desarrollador de Server Job

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

49

Entrecomillado para especificar que las marcas de EOR que forman parte de los datos van entrecomilladas, mientras que las marcas de EOR sin entrecomillar se deben interpretar como fin de registro. No para especificar que las marcas de EOR de la columna se deben interpretar como fin de registro. – Columna incompleta. Permite especificar la acción que se realiza si la columna contiene datos insuficientes para coincidir con los metadatos. Puede elegir: Error para terminar anormalmente el trabajo cuando se encuentra una fila de este tipo. 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, o actuar de acuerdo con Acción si faltan columnas si falta una columna y grabar un aviso en el archivo de registro. Retener y avisar para pasar los datos tal cual, pero emitiendo un aviso. Retener para pasar los datos tal cual. Sustituir para rellenar una columna corta con un nulo de SQL, o actuar de acuerdo con Acción si faltan columnas si falta una columna. El comportamiento de Columna incompleta también depende de si el archivo es de anchura fija o CSV. En formato CSV, resulta imposible tener una columna corta, de modo que la opción se aplica sólo a las columnas ausentes y las opciones Retener no tienen sentido. Pulse Ver datos... para abrir el Navegador de datos. Esto le permitirá ver los datos asociados con el enlace de salida.

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. Los metadatos del enlace especifican que los datos se organizan en tres columnas que contienen tres caracteres cada una. En la tabla, indica un nulo SQL, una serie vacía o una serie vacía correlacionada, dependiendo de los valores. Conjunto de datos de entrada 1 Fila 1: ABC|123|YZ Fila 2: PQR... Tabla 3. Conjunto de datos de entrada 1 Opciones de formato

Opciones de columna: (se aplica a todas las filas)

¿Inicio de 2ª fila? Comentario

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

UNIX

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|123| ABC|123| "ABC|123|" " " " " "ABC|123|" " " " "

Error muy grave Aviso Aviso Ninguno Aviso Ninguno

n/d Y Y Y Y Y

Sin datos de salida Fila 1 descartada Fila fantasma Fila fantasma Fila fantasma Fila fantasma

UNIX

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

P P P P P P

Datos Datos Datos Datos Datos Datos

50

Guía del desarrollador de Server Job

correctos correctos correctos correctos correctos correctos

Tabla 3. Conjunto de datos de entrada 1 (continuación) Opciones de formato

Opciones de columna: (se aplica a todas las filas)

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

¿Inicio de 2ª fila? Comentario

DOS

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

n/d n/d n/d n/d n/d n/d

Sin Sin Sin Sin Sin Sin

fin fin fin fin fin fin

de de de de de de

fila fila fila fila fila fila

DOS

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

n/d n/d n/d n/d n/d n/d

Sin Sin Sin Sin Sin Sin

fin fin fin fin fin fin

de de de de de de

fila fila fila fila fila fila

Ninguno

n/d

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ ABC|123|YZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno





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|XZ Fila 2: PQR... Tabla 4. Conjunto de datos de entrada 2 Opciones de formato

Opciones de columna: (se aplica a todas las filas)

¿Inicio de 2ª fila? Comentario

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

UNIX

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|123| ABC|123| ABC|123|X ABC|123|X

Error muy grave Aviso Aviso Ninguno Aviso Ninguno

n/d Z Z Z Z Z

Sin datos de salida Fila 1 descartada Fila fantasma Fila fantasma Fila fantasma Fila fantasma

UNIX

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

P P P P P P

Datos Datos Datos Datos Datos Datos

correctos correctos correctos correctos correctos correctos

Capítulo 4. Etapas de trabajo de servidor

51

Tabla 4. Conjunto de datos de entrada 2 (continuación) Opciones de formato

Opciones de columna: (se aplica a todas las filas)

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

¿Inicio de 2ª fila? Comentario

DOS

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

n/d n/d n/d n/d n/d n/d

Sin Sin Sin Sin Sin Sin

fin fin fin fin fin fin

de de de de de de

fila fila fila fila fila fila

DOS

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

n/d n/d n/d n/d n/d n/d

Sin Sin Sin Sin Sin Sin

fin fin fin fin fin fin

de de de de de de

fila fila fila fila fila fila

Ninguno

n/d

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ ABC|123|XZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno





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|XYZ Fila 2: PQR... Tabla 5. Conjunto de datos de entrada 3 Opciones de formato

Opciones de columna: (se aplica a todas las filas)

¿Inicio de 2ª fila? Comentario

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

UNIX

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC||

ABC||

ABC|12| ABC|12|

Error muy grave Aviso Aviso Ninguno Aviso Ninguno

n/d X X X X X

Sin datos de salida Descartar fila 1 Fila fantasma Fila fantasma Fila fantasma Fila fantasma

UNIX

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

P P P P P P

Datos Datos Datos Datos Datos Datos

52

Guía del desarrollador de Server Job

correctos correctos correctos correctos correctos correctos

Tabla 5. Conjunto de datos de entrada 3 (continuación) Opciones de formato

Opciones de columna: (se aplica a todas las filas)

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

¿Inicio de 2ª fila? Comentario

DOS

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

n/d n/d n/d n/d n/d n/d

Sin Sin Sin Sin Sin Sin

fin fin fin fin fin fin

de de de de de de

fila fila fila fila fila fila

DOS

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

n/d n/d n/d n/d n/d n/d

Sin Sin Sin Sin Sin Sin

fin fin fin fin fin fin

de de de de de de

fila fila fila fila fila fila

Ninguno

n/d

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ ABC|12|XYZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno





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| Tabla 6. Conjunto de datos de entrada 4 Opciones de formato

Opciones de columna: (se aplica a todas las filas)

¿Inicio de 2ª fila? Comentario

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

UNIX

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|123| ABC|123| "ABC|123|" " " " " "ABC|123|" " " " "

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

UNIX

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|123| ABC|123| "ABC|123|" " " " " "ABC|123|" " " " "

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

Capítulo 4. Etapas de trabajo de servidor

53

Tabla 6. Conjunto de datos de entrada 4 (continuación) Opciones de formato

Opciones de columna: (se aplica a todas las filas)

¿Inicio de 2ª fila? Comentario

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

DOS

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|123| ABC|123| "ABC|123|" " " " " "ABC|123|" " " " "

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

DOS

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|123| ABC|123| "ABC|123|" " " " " "ABC|123|" " " " "

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

Ninguno

n/d

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|123| ABC|123| "ABC|123|" " " " " "ABC|123|" " " " "

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

Conjunto de datos de entrada 5 Fila 1: ABC|12|YZ Fila 2: PQR... Tabla 7. Conjunto de datos de entrada 5 Opciones de formato

Opciones de columna: (se aplica a todas las filas)

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

UNIX

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC|12|

ABC|12|

"ABC|12| " " " " " "ABC|12| " " " " "

Error muy grave Aviso Aviso Ninguno Aviso Ninguno

54

Guía del desarrollador de Server Job

¿Inicio de 2ª fila? Comentario n/d Y Y Y Y Y

Sin datos de salida Descartar fila 1 Fila fantasma Fila fantasma Fila fantasma Fila fantasma

Tabla 7. Conjunto de datos de entrada 5 (continuación) Opciones de formato

Opciones de columna: (se aplica a todas las filas)

Finalización de línea

Contiene terminadores

Columna incompleta

Datos de salida (primera fila)

Entradas de registro

¿Inicio de 2ª fila? Comentario

UNIX

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

P P P P P P

Datos Datos Datos Datos Datos Datos

DOS

N

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

Ninguno Ninguno ABC||

ABC||

ABC|12| ABC|12|

Error muy grave Aviso Aviso Ninguno Aviso Ninguno

n/d Y Y Y Y Y

Sin datos de salida Descartar fila 1 Fila fantasma Fila fantasma Fila fantasma Fila fantasma

DOS

S

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

P P P P P P

Datos Datos Datos Datos Datos Datos

Ninguno

n/d

Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener

ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ ABC|12| YZ

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno





Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos Omisión datos

correctos correctos correctos correctos correctos correctos

correctos correctos correctos correctos correctos correctos

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. La etapa produce los totales sumados de cada grupo mediante un enlace de salida.

Capítulo 4. Etapas de trabajo de servidor

55

Utilización de una etapa Aggregator Si desea agregar los datos de entrada de varias formas, puede tener varios enlaces de salida, donde cada uno especifica un conjunto diferente de propiedades para definir cómo se agrupan y se resumen los datos de entrada. Cuando edita una etapa Aggregator, aparece el recuadro de diálogo Etapa Aggregator. Este recuadro de diálogo tiene tres páginas: v Etapa. Muestra el nombre de la etapa que se está editando. 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. Para obtener más información sobre estas rutinas, consulte “Subrutinas anteriores y posteriores a la etapa”. v Entradas. Especifica las definiciones de columna para el enlace de entrada de datos. v Salidas. Especifica las definiciones de columna para el enlace de salida de datos. Pulse Aceptar para cerrar este recuadro de diálogo. Los cambios se guardan cuando se guarda el trabajo.

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. v Subrutina anterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. Por ejemplo, se puede especificar una rutina que prepare los datos antes de que se inicie el proceso. v Subrutina posterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. Por ejemplo, se puede especificar una rutina que envíe un mensaje electrónico cuando la etapa haya finalizado. Seleccione una rutina en la lista. Esta lista contiene todas las rutinas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. Si elige una rutina definida en el repositorio, 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 Aggregator. 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. Si ha instalado o importado un trabajo, 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. En tal caso, aparecerá un mensaje de aviso cuando cierre el recuadro de diálogo Etapa Aggregator. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar.

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. 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. Nota: La etapa Aggregator no conserva el orden de las filas de entrada, incluso cuando los datos de entrada ya están ordenados. La página Entradas presenta el campo y los dos separadores siguientes:

56

Guía del desarrollador de Server Job

v Nombre de entrada. Nombre del enlace de entrada a la etapa Aggregator. v General. Se visualiza de forma predeterminada. Contiene una descripción opcional del enlace. v Columnas. 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. – Nombre de la columna. Nombre de la columna. – Ordenación. Muestra la posición clave de orden de la columna, si la ordenación está habilitada. Para obtener más información, consulte “Definición del orden de clasificación de la columna de entrada”. – Orden de clasificación. Especifica el orden de clasificación. Este campo esta en blanco de forma predeterminada; es decir, no hay orden de clasificación. Elija Ascendente para el orden ascendente, Descendiente para el orden descendiente o Ignorar si no desea seleccionar una clasificación. – Clave. Indica si la columna forma parte de la clave primaria. – Tipo SQL. Tipo de datos SQL. – Longitud. Precisión de los datos. Es la longitud para los datos CHAR y la longitud máxima para los datos VARCHAR. – Escala. Factor de escala de los datos. – Con posibilidades de nulos. Especifica si la columna puede contener valores nulos. – Visualización. Número máximo de caracteres necesarios para visualizar los datos de la columna. – Elemento de datos. Tipo de datos de la columna. – Descripción. Una descripción en texto de la columna.

Definición del orden de clasificación de la columna de entrada Cuando la etapa Aggregator clasifica datos de entrada para la agregación, se almacenan en la memoria. Si se ordenan una o varias columnas de grupo en los datos de entrada, puede mejorar considerablemente el modo en que la etapa Aggregator maneja los datos. 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. Para utilizar datos de entrada ordenados, puede utilizar las propiedades de columna adicionales en el separador Columnas de la página Entradas. Escriba un número en la columna Ordenar para especificar la posición que ocupa la columna en la clave de ordenación. Por ejemplo, si los datos de entrada se han ordenado por fecha y posteriormente por código de producto, 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. Un valor de 1 siempre indica la clave más significativa. Si no especifica ningún valor en este campo, la columna se añadirá el final de la secuencia de claves de ordenación. Cuando pulsa Aceptar, todas las columnas se ordenan en secuencia de la columna más significativa hacia arriba. Elija el orden en que se ordenan los datos en la columna Orden de clasificación. El valor predeterminado es ninguno: v Ascendente. Seleccione esta opción si los datos de entrada de la columna especificada se ordenan en orden ascendente. Si selecciona esta opción, el servidor de IBM InfoSphere DataStage comprobará el orden en tiempo de ejecución. v Descendente. Seleccione esta opción si los datos de entrada de la columna especificada se ordenan en orden descendente. Si selecciona esta opción, el servidor de InfoSphere DataStage comprobará el orden en tiempo de ejecución. v Ignorar. No comprueba el orden. 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. Al seleccionar esta opción, debe hacerlo con prudencia. En tiempo de

Capítulo 4. Etapas de trabajo de servidor

57

ejecución, el servidor de InfoSphere DataStage no comprueba el orden de clasificación de los datos, lo que puede producir errores. Si selecciona esta opción, aparece un mensaje de aviso cuando pulsa Aceptar. Para poder editar otras columnas de entrada, deberá aceptar este mensaje.

Definición de datos de salida de Aggregator Cuando extrae datos de una etapa Aggregator, 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. La página Salidas presenta el campo y los dos separadores siguientes: v Nombre de salida. Nombre del enlace de salida. Seleccione el enlace que desee editar desde la lista Nombre de salida. Esta lista muestra todos los enlaces de salida desde la etapa. v General. Se visualiza de forma predeterminada. Contiene una descripción opcional del enlace. v Columnas. Contiene una cuadrícula que muestra las definiciones de columna para los datos que se están extrayendo de la etapa. La cuadrícula tiene las columnas siguientes: – Nombre de la columna. Nombre de la columna. – Grupo. Especifica si se deben realizar una agrupación de acuerdo con los datos de la columna. – Derivación. Contiene una expresión que especifica cómo se agregan los datos. Esta es una celda compleja que requiere más de un dato. Si efectúa una doble pulsación en la celda, se abre el recuadro de diálogo Derivación. Para obtener más información, consulte “Agregación de datos”. – Clave. Indica si la columna forma parte de la clave primaria. – Tipo SQL. Tipo de datos SQL. – Longitud. Precisión de los datos. Es la longitud para los datos CHAR y la longitud máxima para los datos VARCHAR. – Escala. Factor de escala de los datos. – Con posibilidades de nulos. Especifica si la columna puede contener valores nulos. – Visualización. Número máximo de caracteres necesarios para visualizar los datos de la columna. – Elemento de datos. Tipo de datos de la columna. – Descripción. Una descripción en texto de la columna. Para obtener una descripción de cómo entrar y editar definiciones de columna, consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide.

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. Por ejemplo, los datos en una base de datos de ventas pueden contener información sobre cada transacción o venta. Puede pasar todos estos datos a su depósito de datos. No obstante, 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. Si sólo desea información de resumen, por ejemplo, el total del producto A vendido desde el 01/01/96, puede agregar los datos y pasar sólo la suma total al depósito de datos. Esto reduce la cantidad de datos que se almacenan en el depósito de datos, 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. La etapa Aggregator permite agrupar por o resumir las columnas que desee en cualquiera de los enlaces de salida. Nota: Cada salida de columna de una etapa Aggregator debe estar resumida, o se debe haber agrupado por ella.

58

Guía del desarrollador de Server Job

Un grupo de datos de entrada es un conjunto de filas de entrada que comparten los mismos valores, agrupados por comas. Por ejemplo, si la base de datos de ventas contiene información sobre tres productos diferentes, A, B y C, puede agruparla por la columna Producto. Toda la información sobre el producto A se agrupará conjuntamente, de la misma forma que toda la información de los productos B y C. Al resumir los datos, puede realizar cálculos básicos en los valores de una determinada columna. Las acciones que puede realizar dependen del tipo de datos SQL de la columna seleccionada. Puede realizar las acciones siguientes para los tipos de datos SQL numéricos: v Mínimo. Devuelve el valor más bajo de la columna. v v v v v v v

Máximo. Devuelve el valor más alto de la columna. Recuento. Cuenta el número de valores de la columna. Suma. Suma los valores totales de la columna. Promedio. Proporciona el promedio de los valores de la columna. Primer. Devuelve el primer valor de la columna. Último. Devuelve el último valor de la columna. Desviación estándar. Devuelve la desviación estándar de los valores en la columna. Al calcular la desviación estándar, IBM InfoSphere DataStage utiliza la fórmula: desviación_estándar = sqrt [ (sum(Xi2) - N avg(Xi)2) / N ]

Algunos otros paquetes como, por ejemplo, Microsoft Excel, utilizan la fórmula: desviación_estándar = sqrt [ (sum(Xi2) - N avg(Xi)2) / (N-1)]

Puede realizar las acciones siguientes para los demás tipos de datos SQL: v Mínimo. Devuelve el valor más bajo de la columna. v v v v

Máximo. Devuelve el valor más alto de la columna. Recuento. Cuenta el número de valores de la columna. Primer. Devuelve el primer valor de la columna. Último. Devuelve el último valor de la columna.

Por ejemplo, si desea saber el número total del producto A vendido, debe sumar los valores de la columna QtySold. Para agrupar por o resumir una columna, debe editar la columna Derivación en el recuadro de diálogo Columna de salida. Para ello, efectúe una doble pulsación en la celda para abrir el recuadro de diálogo Derivación. El recuadro de diálogo Derivación contiene los campos y las opciones siguientes: v Columna de origen. Contiene el nombre de la columna por la que desea agrupar o que desea resumir, con el formato nombre_enlace.nombre_columna. Puede elegir cualquiera de las columnas de entrada de la lista. v Función agregada. Contiene la función de agregación que se ejecuta. Elija la función que desee en la lista. La opción predeterminada es Suma. v Agrupar por esta columna. Especifica si la columna se agrupará. Este recuadro de selección está deseleccionado de forma predeterminada. Si desea agrupar por la columna, seleccione el recuadro de selección Agrupar por esta columna. La función agregada se establece automáticamente en (agrupada) y no puede seleccionar una función agregada en la lista. Capítulo 4. Etapas de trabajo de servidor

59

Para utilizar una función agregada, deseleccione el recuadro de selección Agrupar por esta columna y seleccione la función que desee utilizar en la lista Función agregada. Pulse Aceptar para guardar los valores de la columna.

Etapa Command La etapa Command es una etapa activa que puede ejecutar distintos mandatos externos, incluidos los mandatos de motor de servidor, los programas y los trabajos desde cualquier punto del flujo de datos de IBM InfoSphere DataStage. Puede ejecutar un mandato cualquiera, incluidos sus argumentos, que puede escribir en el shell del sistema operativo como, por ejemplo, Windows o UNIX. A modo de ejemplo cabe citar scripts Perl, archivos por lotes DOS, 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. Puede utilizar la etapa Command en cualquier lugar de la vía de acceso de trabajo para invocar un mandato externo. Las rutinas anteriores y posteriores que ya están disponibles actúan de forma parecida, excepto que puede colocar la etapa Command en cualquier lugar de una secuencia de trabajos e invocarla varias veces en paralelo. Si la etapa se coloca en medio de una secuencia y no se selecciona No reenviar datos de fila, los datos se mueven al enlace de salida. Si la etapa está al final de una vía de acceso, ejecuta el mandato y pasa los datos entrantes sin alterar. La llega de la fila sólo causa la ejecución del mandato. La etapa Command sólo puede tener un enlace de entrada y un enlace de salida: v Enlace de entrada. Especifica una fila de datos reales o una fila individual de una instancia previa de la etapa Command. 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). v Enlace de salida. Si ejecuta una etapa Command al principio de una vía de acceso de trabajo para un enlace de salida, la etapa ejecuta el mandato especificado y envía una fila individual en el enlace de salida. Como mínimo, esta fila contiene el código de retorno del mandato especificado en la primera columna. A continuación, una etapa Transformer puede utilizar las operaciones de ramificación de InfoSphere DataStage para procesar el código. Si selecciona Salida a enlace, 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, No reenviar datos de fila y No esperar al mandato.

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. v Metadatos visuales y textuales. v Invocación gráfica de mandatos externos sin recurrir a la codificación del control de trabajos. 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. v Soporte para soporte multilingüístico.

60

Guía del desarrollador de Server Job

Funcionalidad no soportada No se da soporte a la siguiente funcionalidad: v Prestaciones de transformación de datos en las filas que fluyen en la etapa. Para ello, utilice la etapa Transformer y Aggregator. v Mandatos que requieren la entrada del usuario o la creación de ventanas. Generan anomalías en los trabajos. v Acceso de cliente a un RDBMS. Si desea ejecutar una sentencia SQL, utilice llamadas a las aplicaciones de cliente existentes, incluidos los trabajos de InfoSphere DataStage. v Acceso directo a los mandatos del motor de servidor. No puede utilizar esta etapa para devolver filas que se generan como resultado de una ejecución de mandato en el motor.

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. Grabe estas rutinas en BASIC de IBM InfoSphere DataStage. Algunas etapas dan soporte a las rutinas anteriores y posteriores a la etapa. Estas se invocan antes o después de invocar una etapa. ExecTCL Una rutina incorporada que ejecuta mandatos del motor de servidor desde un trabajo de InfoSphere DataStage. ExecDOS Una rutina incorporada que ejecuta mandatos de DOS desde un trabajo de InfoSphere DataStage.

Utilización de la etapa Command Si utiliza la interfaz gráfica de usuario para editar una etapa Command, se abre el recuadro de diálogo Etapa Command. Este recuadro de diálogo tiene las páginas Etapa, Entrada y Salida, en función de si existen entradas a y salidas de la etapa: v Etapa. Esta página muestra el nombre de la etapa que se está editando. El separador General define el tipo de mandato, el texto del mandato, la acción que se debe emprender si se produce un error, dónde grabar la salida y si el trabajo debe esperar que se complete el mandato. También puede describir el objetivo de la etapa. Para obtener detalles, consulte “Definición de la etapa Command”. El separador Soporte multilingüístico define una correlación de juego de caracteres que se debe utilizar con la etapa. Este separador sólo aparece si se ha instalado el soporte multilingüístico para IBM InfoSphere DataStage. Para obtener detalles, consulte “Definición de la correlación de juego de caracteres” en la página 62. v Entrada. Esta página sólo se muestra si dispone de un enlace de entrada de esta página. Especifica cuando debe ejecutarse el mandato y cómo deben tratarse las filas desde este enlace. v Salida. Esta página sólo se muestra si dispone de un enlace de salida de esta etapa. Especifica cómo debe tratarse la salida desde el mandato.

Definición de la etapa Command Los parámetros del mandato se establecen en el separador General de la página Etapa. Especifique la información adecuada utilizando los siguientes campos: Capítulo 4. Etapas de trabajo de servidor

61

v Tipo de mandato. El tipo de mandato que se debe ejecutar. Seleccione una de las opciones siguientes: – OS. La etapa ejecuta un mandato de sistema operativo. – TCL. La etapa ejecuta un mandato de motor de servidor. Puede ejecutar programas BASIC de IBM InfoSphere DataStage. Para obtener información sobre cómo utilizar estos mandatos, consulte “Utilización de mandatos” en la página 64. v Mandato. La serie que se debe pasar como mandato. v Terminar anormalmente si el mandato falla. Si se selecciona, el trabajo termina anormalmente si se produce un error al ejecutar el mandato. v Inhabilitar salida en registro. Si se selecciona, la salida del mandato no se graba en el registro de InfoSphere DataStage. v No esperar al mandato. Si se selecciona, el trabajo no espera a que el mandato finalice antes de continuar. El trabajo es un proceso independiente y prosigue con el proceso de los datos. Ejecuta el mandato como una hebra en Windows. 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.RTNCODE y COMMAND.OUTPUT desde el enlace de salida. No se permite la salida de enlace, 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 primera columna en el enlace de salida no se utiliza para el código de retorno. De forma adicional, 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. Graba la salida desde el mandato a un archivo. Si no especifica un nombre de vía de acceso, el archivo se crea en el directorio padre para el proyecto. Si deja el campo en blanco, no se crea ningún archivo de salida. v Descripción. Opcional. Describe el objetivo de la etapa Command.

Definición de la correlación de juego de caracteres Puede definir una correlación de juego de caracteres para una etapa. Realice esta tarea desde el separador Soporte multilingüístico en la página Etapa. El separador Soporte multilingüístico sólo aparece si ha instalado el soporte multilingüístico. Especifique la información mediante el siguiente botón y los siguientes campos: v Nombre de correlación que debe utilizarse con la etapa. Se define la correlación de juego de caracteres predeterminada para el proyecto o el trabajo. 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. Utilice el formato #Parám#, donde Parám es el nombre del parámetro de trabajo. La serie #Parám# se sustituye por el parámetro de trabajo cuando se ejecuta el trabajo. v Mostrar todas las correlaciones. Lista todas las correlaciones que se envían con IBM InfoSphere DataStage. v Sólo correlaciones cargadas. Muestra una lista de las correlaciones que están cargadas en ese momento.

62

Guía del desarrollador de Server Job

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, ejecuta el mandato especificado. 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.

Acerca de la página Entrada La página Entrada tiene un campo Nombre de entrada, los separadores General y Columnas y el botón Columnas.... v Nombre de entrada. Nombre del enlace de entrada. Seleccione el enlace que desee editar desde el recuadro de la lista desplegable Nombre de entrada. Este recuadro de lista muestra todos los enlaces de entrada a la etapa Command. v Pulse el botón Columnas... para visualizar una breve lista de las columnas asociadas con el enlace de entrada. Puede seguir visualizando la lista a medida que va entrando metadatos detallados en el separador Columnas. Separador General: Este separador, de forma predeterminada, contiene los campos siguientes: v Repetir para cada fila. Si se selecciona, ejecuta el mandato especificado para cada fila que llega a este enlace. Si no selecciona No esperar a mandato desde el separador General de la página Etapa, esta opción estará inhabilitada para evitar saturar al servidor con procesos. v Ejecutar mandato después de fila. Si se selecciona, ejecuta el mandato especificado después de copiar y enviar la fila al enlace de salida. Si no existe ningún enlace de salida, la opción se inhabilita. De modo predeterminado, el mandato se ejecuta de forma asíncrona cuando la fila llega al enlace de entrada. Si selecciona esta opción se eliminan los elementos de datos COMMAND.RTNCODE y COMMAND.OUTPUT desde el enlace de salida. No se permite la salida de enlace, 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. Las opciones siguientes están inhabilitadas: – No reenviar datos de fila (entrada) – Salida a enlace (salida) v No reenviar datos de fila. Si se borra, la etapa pasa a través de filas hacia el mismo número de columnas en el enlace de salida, siempre que contenga tanto enlaces de entrada como de salida. No puede seleccionar esta opción si no existe ningún enlace de salida. Si se borra, las definiciones de columna se copian desde el enlace de entrada al enlace de salida. 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. Opcional. Describe el objetivo del enlace de entrada. Separador Columnas: Este separador contiene las definiciones de columna para los datos grabados en el origen de datos. El separador Columnas se comporta de la misma forma que el separador Columnas de la etapa ODBC.

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. La interfaz gráfica de usuario gestiona automáticamente las definiciones de columna de salida. Las

Capítulo 4. Etapas de trabajo de servidor

63

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. Por ello, tiene una flexibilidad mínima al definir las columnas de salida de la etapa Command. El paso a través de columnas debe tener los mismos tipos datos y tamaños que las correspondientes columnas de entrada. No obstante, puede editar los campos Nombre, Elemento de datos, Derivación y Descripción para las columnas.

Acerca de la página Salida La página Salida tiene un campo Nombre de salida, los separadores General y Columnas y el botón Columnas.... v Nombre de salida. Nombre del enlace de salida. Seleccione el enlace que desee editar desde el recuadro de la lista desplegable Nombre de salida. Este recuadro de lista muestra todos los enlaces de salida. v Pulse el botón Columnas... para visualizar una breve lista de columnas designadas en este enlace. Puede seguir visualizando la lista a medida que va entrando metadatos detallados en el separador Columnas. Separador General: Este separador, de forma predeterminada, contiene los campos siguientes: v Salida a enlace. Si se selecciona, envía la salida del mandato como la segunda columna del enlace de salida. Esta columna COMMAND.OUTPUT mantiene la salida de la ejecución de mandato. v Descripción. Opcional. Describe el objetivo del enlace de salida. Separador Columnas: Este separador contiene las definiciones de columna para los datos a los que se da salida en el enlace seleccionado. La interfaz gráfica de usuario gestiona automáticamente las definiciones de columna de salida. Si no selecciona No esperar al mandato y se selecciona la opción de salida Salida a enlace, los elementos de datos COMMAND.RTNCODE y COMMAND.OUTPUT para las definiciones de columna contendrán el código de retorno y la salida del mandato respectivamente. Por el contrario, el campo Derivación carece de sentido para esta etapa.

Utilización de mandatos Puede ejecutar cualquier mandato, incluyendo sus argumentos, que pueda escribir en el shell del sistema operativo, por ejemplo, scripts Perl, archivos de proceso por lotes DOS, scripts de UNIX y otros programas accionados por líneas de mandatos que no son interactivas y no precisan ninguna entrada.

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.

Mandato dsjob Puede utilizar el mandato dsjob para llamar a otros trabajos de IBM InfoSphere DataStage desde la etapa Command. InfoSphere DataStage proporciona el programa dsjob que permite ejecutar trabajos compilados desde un mandato en lugar de desde InfoSphere DataStage. El programa dsjob tiene la sintaxis simple siguiente:

64

Guía del desarrollador de Server Job

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. Nota: Si selecciona Omitir en el recuadro de diálogo Conectar con proyecto mientras inicia InfoSphere DataStage, deberá utilizar las opciones de usuario y contraseña cuando utilice el mandato dsjob. Puede grabar la salida de un mandato en uno de los siguientes lugares: v El registro de InfoSphere DataStage. Este es el valor predeterminado. v En enlaces de salida. Si existen enlaces de salida, puede escribir la salida como una columna en el enlace, además del código de retorno para el mandato. El código de retorno se envía automáticamente como la primera columna al enlace de salida. v En un archivo. Nota: Puesto que la etapa envía el código de retorno para el mandato como la primera columna de un enlace de salida, la interfaz gráfica de usuario lo proporciona automáticamente. Si utiliza el editor de cuadrículas estándar, deberá añadir manualmente las columnas obligatorias a las definiciones de columna para el enlace de salida.

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. Permite diseñar trabajos que se ejecutan en sistemas SMP con grandes ventajas para el rendimiento. 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, consulte “Trabajos y procesos de IBM InfoSphere DataStage” en la página 5. 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. Puede utilizar las etapas InterProcess para unir etapas pasivas. Por ejemplo, puede utilizarlas para acelerar la transferencia de datos entre dos orígenes de datos:

Capítulo 4. Etapas de trabajo de servidor

65

Figura 16. Trabajo de ejemplo

En este ejemplo, 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. Una vez la etapa Sequential File ha abierto su enlace de salida, la etapa IPC puede empezar a pasar datos a la etapa ODBC. Si el trabajo se ejecuta en un sistema de multiprocesador, los dos procesos pueden ejecutarse simultáneamente para que la transferencia sea mucho más rápida. También puede utilizar la etapa IPC para especificar explícitamente que las etapas activas conectadas se ejecuten como procesos aparte. Esto ofrece muchas ventajas de rendimiento para los sistemas de multiprocesador. También puede especificar este comportamiento implícitamente activando el almacenamiento intermedio de filas entre procesos, ya sea para todo el proyecto mediante el cliente del

66

Guía del desarrollador de Server Job

administrador o individualmente para un trabajo en el recuadro de diálogo Propiedades del trabajo. Figura 17. Trabajo de ejemplo

Utilización de la etapa IPC Cuando edita una etapa IPC, aparece el recuadro de diálogo Etapa InterProcess. Este recuadro de diálogo tiene tres páginas: Capítulo 4. Etapas de trabajo de servidor

67

v Etapa. La página Etapa tiene dos separadores, General y Propiedades. La página General permite especificar una descripción opcional de la etapa. El separador Propiedades permite especificar las propiedades de la etapa. v Entradas. La etapa IPC sólo puede tener un enlace de entrada. La página Entradas muestra información sobre el enlace. v Salidas. La etapa IPC sólo puede tener un enlace de salida. La página Salidas muestra información sobre el enlace.

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. Toma como valor predeterminado 128 kb. La etapa IPC utiliza dos bloques de memoria; un bloque puede grabarse mientras se lee el otro. Esta propiedad define el tamaño de cada bloque, de forma que se asigna un valor predeterminado de 256 Kb en total. v Tiempo de espera. Toma como valor predeterminado 10 segundos. 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. Normalmente no debe modificarse, 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.

Definición de los datos de entrada de la etapa IPC La etapa IPC puede tener un enlace de entrada. Aquí es donde se conecta el proceso que está grabando. La página Entradas tiene dos separadores: v General. El separador General permite especificar una descripción opcional de la etapa. v Columnas. El separador Columnas contiene las definiciones de columna para los datos en el enlace de entrada. 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). Tenga en cuenta que los metadatos del enlace de entrada deben ser idénticos a los metadatos del enlace de salida.

Definición de datos de salida de la etapa IPC La etapa IPC puede tener un enlace de salida. Aquí es donde se conecta el proceso que está leyendo. La página Salidas tiene dos separadores: General y Columnas. v General. El separador General permite especificar una descripción opcional de la etapa. v Columnas. El separador Columnas contiene las definiciones de columna para los datos en el enlace de salida. 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). Tenga en cuenta que los metadatos del enlace de salida deben ser idénticos a los metadatos del enlace de entrada.

Etapas FTP Plug-in Como la etapa Sequential File, la etapa FTP Plug-in extrae datos desde un único archivo de texto o los graba en un único archivo de texto. Sin embargo, los archivos de texto a los que debe accederse mediante la etapa FTP Plug-in residen en otra máquina (posiblemente, 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.

68

Guía del desarrollador de Server Job

La etapa FTP Plug-in proporciona un rápido y eficiente acceso de archivos remoto a los usuarios utilizando servidores FTP en plataformas remotas. La etapa FTP Plug-in no precisa ninguna instalación adicional en las plataformas remotas. De forma adicional, la etapa de conector FTP proporciona la opción de ejecutar mandatos Before/After en la máquina remota. Así, se automatizan los siguientes procesos de flujo de datos: v Antes de que empiece la transferencia de archivos. 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. v Después de que finalice la transferencia de archivos. Puede utilizar el mandato After (después) para suprimir archivos temporales o para iniciar una actividad subsiguiente que utilice el archivo transferido. 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, que es una secuencia de filas que se debe cargar en un único archivo remoto. v Los enlaces de salida especifican los datos que está extrayendo, que es una secuencia de filas que se debe leer desde un único archivo remoto.

Funcionalidad La etapa FTP Plug-in contiene las funcionalidades y ventajas siguientes: v Comparte propiedades comunes de nombre de host remoto, nombre de usuario, contraseña y vía de acceso del directorio hacia o desde los archivos que se transfieren para cada instancia de etapa. v Se corresponde generalmente con una sesión de transferencia de archivos independiente para cada enlace, por lo que pueden transferirse varios archivos de forma simultánea. 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. Mantiene una sesión FTP el tiempo suficiente para permitir la transferencia de grandes cantidades de datos. v Da soporte al protocolo de datos STREAM. Si se cierra una conexión de transferencia STREAM, el trabajo termina anormalmente con un mensaje de error. v Maneja las anomalías en los trabajos según corresponda cuando se transfieren archivos incompletos. 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. A partir del release 1.3, si limita las filas, 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. No obstante, la transferencia de datos estará completa para el número de filas seleccionado. v Da soporte a un número especificado por el usuario de reintentos de conexión e intervalos de reintento. 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). v Proporciona un nivel de rastreo opcional para diagnosticar problemas de rendimiento. v Permite leer o grabar datos ASCII o binarios. Nota: La modalidad binaria no está soportada en el lienzo del servidor paralelo. Consulte la propiedad de entrada Tipo de representación de datos y la propiedad de salida Tipo de representación de datos. v Utiliza las propiedades de etapa y enlace, y el tipo de columna para determinar el formato de las series de caracteres antes de la transferencia. 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. Capítulo 4. Etapas de trabajo de servidor

69

v Permite validar la existencia del archivo remoto en el cliente del Director de InfoSphere DataStage (sólo para el enlace de salida). v Soporta el soporte multilingüístico. 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. mandato before El mandato que se ejecuta en la máquina remota utilizando una sesión de telnet antes de iniciar la transferencia. FTP

Protocolo de transferencia de archivos. Una prestación de transferencia interactiva de archivos que se utiliza a menudo en las redes TCP/IP.

retrotraer Cancela todos los cambios de E/S de archivo realizados durante una transacción. 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. 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.

Instalación de la etapa Para especificar retrotracciones de transacciones, compromisos o el proceso anterior/posterior en el servidor Windows, debe proporcionar primero un servidor telnet distinto del servidor telnet de UniVerse.

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. 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.

70

Guía del desarrollador de Server Job

Propiedades de la etapa La etapa FTP Plug-in da soporte a las siguientes propiedades de etapa: Solicitud

Tipo

Valor predeterminado

Descripción

Nombre del servidor

Serie

Ninguno

Necesario. El nombre de la máquina de host en la que reside el archivo para el servidor FTP.

Puerto de FTP remoto

Largo

21

Necesario. Número de puerto del servidor FTP de la máquina remota.

Puerto Telnet remoto

Largo

23

Necesario. Número de puerto del servidor telnet de la máquina remota.

Nombre de usuario

Serie

Ninguno

Necesario. Nombre de usuario para iniciar la sesión en la máquina remota.

Contraseña del usuario

Serie

Ninguno

La contraseña para el usuario especificado. Es necesaria si la máquina remota utiliza una contraseña para el "Nombre de usuario."

Nombre de cuenta

Serie

Ninguno

El nombre de cuenta para el inicio de sesión de FTP remoto. Sólo es necesario si la máquina remota necesita información de cuentas de usuario durante el proceso de inicio de sesión.

Nivel de rastreo

Largo

0

Opcional. Controla el tipo de información de rastreo que se añade al registro. Utilice uno de los siguientes niveles de rastreo: 0 Ningún rastreo 1 Propiedades de la etapa del informe

Reintentos

Largo

3

Opcional. El número de reintentos si falla la conexión.

Intervalo de reintentos

Largo

15

Opcional. Número de segundos que se debe esperar entre reintentos si la conexión falla.

Número de solicitudes de Telnet

Serie

2

Necesaria si se utilizan servicios de telnet. Número total de solicitudes previstas que se reciben durante el proceso de inicio de sesión en el servidor de telnet. Capítulo 4. Etapas de trabajo de servidor

71

Solicitud

Tipo

Valor predeterminado

Descripción

Solicitud de Telnet 1

Serie

Inicio de sesión

Necesaria si se utilizan servicios 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 IBM InfoSphere DataStage los datos de inicio de sesión.

Respuesta de Telnet 1

Serie

Ninguno

Necesaria si se utilizan servicios de telnet. El nombre de usuario de telnet para iniciar sesión en la sesión de telnet.

Solicitud de Telnet 2

Serie

Contraseña

Necesaria si se utilizan servicios 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.

Respuesta de Telnet 2

Serie

Ninguno

Necesaria si se utilizan servicios de telnet. Contraseña de telnet del usuario de telnet especificado.

Solicitud de Telnet n

Serie

Ninguno

Las solicitudes que son necesarias para conectarse a un sistema de destino mediante telnet, además del inicio de sesión y la contraseña.

Respuesta de Telnet n

Serie

Ninguno

Las repuestas que son necesarias para conectarse a un sistema de destino mediante telnet, además del inicio de sesión y la contraseña.

Tiempo de espera de mandatos

Int

50

Número de milisegundos que se esperará a que finalicen los mandatos anterior (Before) y posterior (After) de Telnet.

72

Guía del desarrollador de Server Job

Propiedades del enlace de entrada La tabla siguiente lista las propiedades del enlace de entrada en el editor de cuadrícula: Tabla 8. Propiedades del enlace de entrada Solicitud

Tipo

Valor predeterminado

Descripción

Vía de acceso remota

Serie

Ninguno

Opcional. 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 de archivo remoto

Serie

Ninguno

Necesario. El nombre del archivo en la máquina remota que se ha de recuperar o enviar.

Tipo de representación de datos

Lista

ASCII

Necesario. Controla cómo se leen o se graban los datos del archivo remoto. Para la representación ASCII, la transferencia de datos utiliza el NVT-ASCII estándar, sobre todo para archivos de texto. Para la representación binaria, los datos se transfieren en bits continuos como datos IMAGE. Debe establecer las "Columnas de anchura fija" en Sí. Nota: La modalidad binaria no se soporta cuando la etapa se ejecuta en el lienzo paralelo. Para transferir datos en modalidad binaria, utilice los tipos de datos binarios o varbinarios con el "Tipo de representación de datos" fijado en ASCII.

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. Si "Tipo de representación de datos" se establece en ASCII, los valores válidos son "sin terminación" (no termination) y [CR] [LF].

Columnas de anchura fija

Serie

No

Necesario. Indica si los datos del archivo remoto pueden estar con columnas de anchura fija.

Capítulo 4. Etapas de trabajo de servidor

73

Tabla 8. Propiedades del enlace de entrada (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Espacios entre columnas

Largo

0

El número de espacios entre las columnas de anchura fija en el archivo remoto. Es necesario si "Columnas con anchura fija" está establecido en Sí.

Delimitador de columna

Char

, (coma)

Es necesario si "Columnas con anchura fija" está establecido en No. El delimitador que separa los campos de datos en el archivo remoto. Puede entrar un único carácter sin comillas o el valor ASCII del carácter que desea utilizar.

Carácter de comilla

Char

" (comillas dobles)

Opcional y válido solamente si "Columnas con anchura fija" está establecido en No. El carácter único se utiliza para incluir un valor de datos que contiene un carácter delimitador como datos. También puede entrar el valor ASCII para el carácter que desee utilizar. Puede suprimir "Carácter de comillas" si no entra ningún valor.

Carácter de escape

Char

\ (barra inclinada invertida)

Necesario. El único carácter entrado para ser interpretado como el carácter de escape.

Serie Null

Serie

Ninguno

Opcional. Especifica la serie que debe interpretarse como el valor nulo de SQL.

Nombres de columnas de la Serie primera línea

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, es posible que contenga nombres de columnas).

Omitir la última línea nueva

No

Necesario. Indica si desea omitir la última línea nueva al final de los datos al enviarlos a la máquina remota.

74

Serie

Guía del desarrollador de Server Job

Tabla 8. Propiedades del enlace de entrada (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Anexar a archivo

Serie

No

Opcional. Indica si los datos deben colocarse en el archivo remoto en modalidad de anexo o de sobrescritura. Sí indica "anexo" con respecto al archivo existente. No indica que se sobrescribirá el archivo.

Archivo de copia de seguridad

Serie

No

Opcional. Indica si el "Mandato de copia de seguridad de Telnet" debe ejecutarse antes de continuar con el trabajo.

Mandato de copia de seguridad de Telnet

Serie

Ninguno

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. Este mandato de Telnet sólo se ejecuta si "Realizar copia de seguridad del archivo" está fijado en Sí. Utilice este mandato para crear copias de seguridad del archivo.

Mandato anterior (Before) de Telnet

Serie

Ninguno

Opcional. El mandato de Telnet que se debe ejecutar en la máquina remota antes de iniciar un trabajo.

Mandato posterior (After) de Telnet

Serie

Ninguno

Opcional. Especifica el mandato de Telnet que debe ejecutarse en la máquina remota después de completar un trabajo.

Mandato de iniciar transacción

Serie

Ninguno

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.

Mandato de confirmar transacción

Serie

Ninguno

Opcional. Especifica el mandato de Telnet que debe ejecutarse después de una transferencia de datos satisfactoria. Utilice este mandato para suprimir cualquier archivo temporal que se haya creado.

Capítulo 4. Etapas de trabajo de servidor

75

Tabla 8. Propiedades del enlace de entrada (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Mandato de retrotracción de transacciones

Serie

Ninguno

Opcional. Especifica el mandato de Telnet que debe ejecutarse si se produce un error al enviar el archivo a la máquina remota, o si utiliza el cliente del Director para restablecer el trabajo. Utilice este mandato para restaurar cualquier archivo de la copia temporal si se produce una anomalía o una terminación anormal.

Modalidad de conexión de datos de FTP

Lista

Pasiva

Especifica el proceso que inicia la conexión para la transferencia de datos. Si se establece en Activa, el servidor FTP inicia las conexiones. Si se establece en Pasiva, las conexiones se inician desde el sistema principal donde se ha instalado la capa de motor. Permite almacenar archivos en sistemas principales que se encuentran fuera del cortafuegos basado en un router. Sistemas OpenVMS digitales. Establézcalo en Activos para los enlaces de entrada de forma que el servidor FTP inicie la conexión para la transferencia de datos. De lo contrario, no se aceptarán los datos.

76

Guía del desarrollador de Server Job

Tabla 8. Propiedades del enlace de entrada (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Nivel de rastreo de enlace

Largo

0

Opcional. Controla el tipo de información de rastreo que se añade al registro. 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. 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.

Longitud de Largo almacenamiento intermedio

4096

Necesario. 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.

Puede especificar cualquier mandato de UNIX para las siguientes propiedades de enlace: Telnet después de mandato, Mandato de copia de seguridad de Telnet, Mandato de inicio de transacción, Mandato de confirmación de transacción o Mandato de retrotracción de transacción. Por ejemplo, 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. Propiedades del enlace de salida Solicitud

Tipo

Valor predeterminado

Descripción

Vía de acceso remota

Serie

Ninguno

Opcional. 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 de archivo remoto

Serie

Ninguno

Necesario. El nombre del archivo en la máquina remota que se ha de recuperar o enviar.

Capítulo 4. Etapas de trabajo de servidor

77

Tabla 9. Propiedades del enlace de salida (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Tipo de representación de datos

Lista

ASCII

Necesario. Controla cómo se leen o se graban los datos del archivo remoto. Para la representación ASCII, la transferencia de datos utiliza el NVT-ASCII estándar, sobre todo para archivos de texto. Para la representación binaria, los datos se transfieren en bits continuos como datos IMAGE. Debe establecer las "Columnas de anchura fija" en Sí. Nota: La modalidad binaria no se soporta cuando la etapa se ejecuta en el lienzo paralelo. Para transferir datos en modalidad binaria, utilice los tipos de datos binarios o varbinarios con el "Tipo de representación de datos" fijado en ASCII.

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. Se leerán los datos hasta que se agoten los metadatos. Para los datos de anchura fija, esto significa el total de la longitud de las columnas más los espacios.Para los datos delimitados, esto significa el número de columnas. Si se establece en No, 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

Tabla 9. Propiedades del enlace de salida (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Finalización de línea

Lista

[CR] [LF]

Especifica la secuencia de terminación de fila (fin de la línea) en el archivo remoto.

(Terminación de estilo DOS)

Si las "Columnas de anchura fija" se establecen en No, utilice el valor [CR] [LF]. Si las "Columnas de anchura fija" se establecen en Sí y el "Tipo de representación de datos" se establece en ASCII, los valores válidos son sin terminación ni [CR] [LF] (terminador de estilo DOS). Si se establece en "Ninguna terminación", "Comprobar datos con metadatos" debe estar fijado en Sí. Columnas de anchura fija

Serie

No

Necesario. Indica si los datos del archivo remoto pueden estar con columnas de anchura fija.

Espacios entre columnas

Largo

0

El número de espacios entre las columnas de anchura fija en el archivo remoto. Es necesario si "Columnas con anchura fija" está establecido en Sí.

Delimitador de columna

Char

, (coma)

Es necesario si "Columnas con anchura fija" está establecido en No. El delimitador que separa los campos de datos en el archivo remoto. Puede entrar un único carácter sin comillas o el valor ASCII del carácter que desea utilizar.

Carácter de comilla

Char

" (comillas dobles)

Opcional y válido solamente si "Columnas con anchura fija" está establecido en No. El carácter único se utiliza para incluir un valor de datos que contiene un carácter delimitador como datos. También puede entrar el valor ASCII para el carácter que desee utilizar. Puede suprimir "Carácter de comillas" si no entra ningún valor.

Capítulo 4. Etapas de trabajo de servidor

79

Tabla 9. Propiedades del enlace de salida (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Carácter de escape

Char

\ (barra inclinada invertida)

Necesario. El único carácter entrado para ser interpretado como el carácter de escape.

Serie Null

Serie

Ninguno

Opcional. Especifica la serie que debe interpretarse como el valor nulo de SQL.

Nombres de columnas de la Serie primera línea

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, es posible que contenga nombres de columnas).

Mandato anterior (Before) de Telnet

Serie

Ninguno

Opcional. El mandato de Telnet que se debe ejecutar en la máquina remota antes de iniciar un trabajo.

Mandato posterior (After) de Telnet

Serie

Ninguno

Opcional. Especifica el mandato de Telnet que debe ejecutarse en la máquina remota después de completar un trabajo.

Modalidad de conexión de datos de FTP

Lista

Activa

Especifica el proceso que inicia la conexión para la transferencia de datos. Si se establece en Activa, el servidor FTP inicia las conexiones. Si se establece en Pasiva, las conexiones se inician desde el sistema principal donde se ha instalado la capa de motor. Permite almacenar archivos en sistemas principales que se encuentran fuera del cortafuegos basado en un router.

80

Guía del desarrollador de Server Job

Tabla 9. Propiedades del enlace de salida (continuación) Solicitud

Tipo

Valor predeterminado

Descripción

Puerto de datos de FTP

Lista

Ninguno

Opcional. El número de puerto exclusivo en el que se reciben datos desde el servidor FTP de la máquina remota. El servidor FTP de la máquina remota se conecta a este puerto para transferir el archivo remoto. Si no especifica un valor o dicho valor es 0, la etapa configura automáticamente un número de puerto disponible para el usuario. Si especifica un valor, éste debe estar entre el 1025 y el 4999. Para obtener más información acerca del modelo de FTP, consulte el protocolo de transferencia de archivos (FTP) 959 RFC estándar.

Nivel de rastreo de enlace

Largo

0

Opcional. Controla el tipo de información de rastreo que se añade al registro. 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. 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.

Longitud de Largo almacenamiento intermedio

4096

Necesario. 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.

Capítulo 4. Etapas de trabajo de servidor

81

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

82

Guía del desarrollador de Server Job

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. Nota: La modalidad binaria no está soportada en el lienzo del servidor paralelo. Consulte la propiedad de entrada Tipo de representación de datos y la propiedad de salida Tipo de representación de datos.

Etapas Link Collector En estos temas se describe cómo utilizar una etapa Link Collector en el diseño del trabajo. 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. La etapa espera que el enlace de salida utilice los mismos metadatos que los enlaces de entrada. La etapa Link Collector puede utilizarse con una etapa Link Partitioner para aprovechar un sistema multiprocesador y procesar los datos en paralelo. La etapa Link Partitioner particiona los datos y los procesa en paralelo y, a continuación, la etapa Link Collector vuelve a recopilarlos conjuntamente antes de grabarlos en un único destino. Para conocer las ventajas, 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. 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, 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. Los archivos temporales generados por esta etapa se colocan en el directorio especificado por la variable de entorno TEMP. 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, aparece el recuadro de diálogo Etapa Link Collector. Este recuadro de diálogo tiene tres páginas: v Etapa. Muestra el nombre de la etapa que se está editando. 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. Capítulo 4. Etapas de trabajo de servidor

83

Para obtener más información sobre estas rutinas, consulte “Subrutinas anteriores y posteriores a la etapa”. También tiene un separador Propiedades que permite especificar propiedades que afectan al comportamiento de la etapa. Para obtener detalles, consulte “Definición de propiedades de la etapa Link Collector”. v Entradas. Especifica las definiciones de columna para los enlaces de entrada de datos. v Salidas. Especifica las definiciones de columna para el enlace de salida de datos. Pulse Aceptar para cerrar este recuadro de diálogo. Los cambios se guardan cuando se guarda el trabajo.

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. v Subrutina anterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. Por ejemplo, se puede especificar una rutina que prepare los datos antes de que se inicie el proceso. v Subrutina posterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. Por ejemplo, se puede especificar una rutina que envíe un mensaje electrónico cuando la etapa haya finalizado. Seleccione una rutina en la lista. Esta lista contiene todas las rutinas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. Si elige una rutina definida en el repositorio, 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 Collector. 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. Si ha instalado o importado un trabajo, 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. 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.

Definición de propiedades de la etapa Link Collector El separador Propiedades permite especificar dos propiedades para la etapa Link Collector. v Algoritmo de colección. Utilice esta propiedad para especificar el método que utiliza la etapa para recopilar datos. Elija entre: – Iteración cíclica. Este es el método predeterminado. Utilizando el método de iteración cíclica, la etapa lee una fila de cada enlace de entrada consecutivamente. – Ordenar/Fusionar. Utilizando el método de ordenar/fusionar, la etapa lee diversas entradas ordenadas y graba una sola salida ordenada. v Clave de orden. Esta propiedad sólo es significativa si ha seleccionado un algoritmo de colección de Ordenar/Fusionar. 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. La clave tiene el formato siguiente: Nombre_columna {orden_clasificación] [,Nombre_columna [orden_clasificación]]...

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

Orden ascendente

Orden descendente

a

p

asc

dsc

ascendente

descendente

A

D

ASC

DSC

ASCENDING

DESCENDING

En un entorno de soporte multilingüístico, el convenio de clasificación del entorno local afectar al orden de clasificación. El convenio de clasificación predeterminado se establece en el cliente del Administrador, pero puede establecerse para trabajos individuales en el recuadro de diálogo Propiedades del trabajo. Por ejemplo: FIRSTNAME d, SURNAME D

Especifica que las filas se ordenan según la columna FIRSTNAME y la columna SURNAME en orden descendente.

Definición de datos de entrada de etapa Link Collector La etapa Link Collector puede tener hasta 64 enlaces de entrada. Aquí es donde llegan los datos que se van a recopilar. La lista Nombre de entrada de la página Entradas permite seleccionar cuál de los 64 enlaces está buscando. La página Entradas tiene dos separadores: v General. El separador General permite especificar una descripción opcional de la etapa. v Columnas. El separador Columnas contiene las definiciones de columna para los datos en los enlaces de entrada. Normalmente se rellena con los metadatos de las etapas que se conectan 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). Tenga en cuenta que los metadatos de todos los enlaces de entrada deben ser idénticos, y a la vez coincidir con los metadatos del enlace de salida.

Definición de datos de salida de etapa Link Collector La etapa Link Collector puede tener un enlace de salida. La página Salidas tiene dos separadores: General y Columnas. v General. El separador General permite especificar una descripción opcional de la etapa. v Columnas. El separador Columnas contiene las definiciones de columna para los datos en el enlace de salida. Puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Guardar esta en el repositorio si es necesario). Tenga en cuenta que los metadatos del enlace de salida deben ser idénticos a los metadatos de los enlaces de entrada.

Etapas Link Partitioner En estos temas se describe cómo utilizar una etapa Link Partitioner en el diseño del trabajo. 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. La etapa espera que los enlaces de salida utilicen los mismos metadatos que el enlace de entrada.

Capítulo 4. Etapas de trabajo de servidor

85

El particionamiento de los datos permite aprovechar las ventajas de un sistema multiprocesador y procesar los datos en paralelo. Puede utilizarse con la etapa Link Collector para particionar datos, procesarlos en paralelo y volver a recopilarlos conjuntamente antes de grabarlos en un único destino. Para conocer las ventajas, 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. El siguiente diagrama ilustra cómo puede utilizarse la etapa Link Partitioner en un trabajo de la siguiente manera.

Para que este trabajo pueda compilarse y ejecutarse según lo previsto en un sistema multiprocesador, 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. Los archivos temporales generados por esta etapa se colocan en el directorio especificado por la variable de entorno TEMP. Utilice el cliente del Administrador para establecer la variable TEMP en cada proyecto.

Utilización de una etapa Link Partitioner Cuando edita una etapa Link Partitioner, aparece el recuadro de diálogo Etapa Link Partitioner. Este recuadro de diálogo tiene tres páginas: v Etapa. Muestra el nombre de la etapa que se está editando. 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. Para obtener más información sobre estas rutinas, consulte “Subrutinas anteriores y posteriores a la etapa”. También tiene un separador Propiedades que permite especificar propiedades que afectan al comportamiento de la etapa. Para obtener detalles, consulte “Definición de propiedades de la etapa Link Partitioner” en la página 87. v Entradas. Especifica las definiciones de columna para el enlace de entrada de datos. v Salidas. Especifica las definiciones de columna para los enlaces de salida de datos. Pulse Aceptar para cerrar este recuadro de diálogo. Los cambios se guardan cuando se guarda el trabajo.

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.

86

Guía del desarrollador de Server Job

v Subrutina anterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. Por ejemplo, se puede especificar una rutina que prepare los datos antes de que se inicie el proceso. v Subrutina posterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. Por ejemplo, se puede especificar una rutina que envíe un mensaje electrónico cuando la etapa haya finalizado. Seleccione una rutina en la lista. Esta lista contiene todas las rutinas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. Si elige una rutina definida en el repositorio, 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. 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. Si ha instalado o importado un trabajo, 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. En tal caso, aparecerá un mensaje de aviso cuando cierre el recuadro de diálogo Etapa Link Partitioner. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar.

Definición de propiedades de la etapa Link Partitioner El separador Propiedades permite especificar dos propiedades para la etapa Link Partitioner. v Algoritmo de particionamiento. Utilice esta propiedad para especificar el método que utiliza la etapa para particionar datos. Elija entre: – Iteración cíclica. Este es el método predeterminado. Utilizando el método de iteración cíclica, la etapa grabará cada fila entrante en uno de los enlaces de salida sucesivamente. – Aleatorio. Mediante este método, la etapa utilizará un generador de números aleatorios para distribuir filas entrantes equitativamente entre todos los enlaces de salida. – Hash. 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. – Módulo. Mediante este método, 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. v Clave de particionamiento. Esta propiedad sólo es significativa si ha seleccionado un algoritmo de particionamiento Hash o Módulo. Para el algoritmo Hash, especifique uno o varios nombres de columna separados por comas. Estas claves se concatenan y se aplica una función hash para determinar el enlace de salida de destino. Para el algoritmo Módulo, especifique un solo nombre de columna que identifique una columna numérica de entero. El valor de esta columna determina el enlace de salida de destino.

Definición de datos de entrada de etapa Link Partitioner La etapa Link Partitioner puede tener un enlace de entrada. Aquí es donde llegan los datos que se van a particionar. La página Entradas tiene dos separadores: v General. El separador General permite especificar una descripción opcional de la etapa. v Columnas. El separador Columnas contiene las definiciones de columna para los datos en el enlace de entrada. 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 Capítulo 4. Etapas de trabajo de servidor

87

Guardar esta en el repositorio si es necesario). Tenga en cuenta que los metadatos del enlace de entrada deben ser idénticos a los metadatos de los enlaces de salida.

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. La página Salidas tiene dos separadores: v General. El separador General permite especificar una descripción opcional de la etapa. v Columnas. El separador Columnas contiene las definiciones de columna para los datos en el enlace de salida. Puede Cargar una definición de columna desde el repositorio o escribir la suya propia (y Guardar esta en el repositorio si es necesario). Tenga en cuenta que los metadatos del enlace de salida deben ser idénticos a los metadatos del enlace de entrada. De esta forma, los metadatos son idénticos para todos los enlaces de salida.

Etapas Merge La etapa Merge permite combinar dos archivos secuenciales en uno o varios enlaces de salida. Merge, una etapa pasiva, no tiene enlaces de entrada, pero tiene al menos un enlace de salida. Utilice la interfaz gráfica de usuario (GUI) para definir la operación de unión que se utiliza para fusionar dos archivos. Los dos archivos de entrada que se fusionarán deben ser archivos de texto secuenciales.

Funcionalidad La etapa Merge da soporte a la siguiente funcionalidad: v Combinación de dos archivos de texto secuenciales. v Elección entre varios tipos de uniones diferentes. v Soporte para soporte multilingüístico sólo en la modalidad automática.

Utilización de la etapa Merge A continuación, se proporciona una serie de tareas necesarias para fusionar dos archivos, que se muestran en el orden en el que deben ejecutarse. Debe especificar: v Los directorios del archivo de entrada y el archivo de trabajo, y la información del archivo de registro. Consulte “El separador General de la página Etapa” en la página 89. v Los nombres de los archivos que se van a fusionar. Consulte El separador General. v El tipo de unión. Consulte Tipo de unión. v El nivel de rastreo. Consulte Nivel de rastreo. v El formato del archivo de entrada. Consulte “Separador Propiedades de archivo de entrada” en la página 91. v Las columnas el archivo de entrada. Consulte Separadores Columnas del primer y del segundo archivo. v Dónde se guarda la información de la columna. Consulte El recuadro de diálogo Guardar definición de tabla. v Las claves de la unión. Consulte “El separador Correlación” en la página 94. v El contenido de las columnas de salida. Consulte “Especificación de columnas de salida” en la página 94. v El nombre y el formato de las columnas de archivo de salida. Consulte “El separador Columnas” en la página 95.

88

Guía del desarrollador de Server Job

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, y la información del archivo de registro. El separador General contiene los campos siguientes: v Vía de acceso del directorio del primer archivo. La vía de acceso y el directorio del primer archivo secuencial. v ... (Botón Examinar). Si pulsa ..., se abre el recuadro de diálogo Seleccionar desde servidor. Consulte “Recuadro de diálogo Seleccionar desde servidor”. v Vía de acceso del directorio del segundo archivo. La vía de acceso y el directorio del segundo archivo secuencial. v ... (Botón Examinar). Si pulsa ..., se abre el recuadro de diálogo Seleccionar desde servidor. Consulte “Recuadro de diálogo Seleccionar desde servidor”. v Directorio temporal. La vía de acceso completa y el directorio en el que se almacenan los archivos temporales. Estos archivos temporales se crean cuando se está ejecutando el trabajo y se suprimen cuando finaliza el trabajo. El valor predeterminado es el directorio de trabajo actual. v ... (Botón Examinar). Si pulsa ..., se abre el recuadro de diálogo Seleccionar desde servidor. Consulte “Recuadro de diálogo Seleccionar desde servidor”. v Nivel de rastreo. El tipo de información que debe incluirse en el archivo de registro de trabajo. Puede especificar los siguientes niveles de rastreo: – 0 - No se graba información en el archivo de registro – 1 - Las propiedades de la etapa se graban en el archivo de registro El valor predeterminado es 0. v Descripción. Descripción opcional de las propiedades de la etapa. Nota: También puede incluir un parámetro de trabajo en la vía de acceso del directorio.

Recuadro de diálogo Seleccionar desde servidor Si pulsa Examinar (botón ...), se abre el recuadro de diálogo Seleccionar desde servidor. Los campos siguientes se encuentran en el recuadro de diálogo Seleccionar desde servidor: v Buscar en. El nombre del directorio predeterminado seleccionado. 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. Una lista de nombres de directorios o archivos en el directorio de Buscar en. v Nombre de archivo (o patrón). Nombre del archivo o patrón seleccionado. v Archivos del tipo. La expresión de nombre de archivo. De forma predeterminada, se muestran todos los archivos.

Definición de la correlación de juego de caracteres Puede definir una correlación de juego de caracteres para una etapa. Realice esta tarea desde el separador Soporte multilingüístico en la página Etapa. El separador Soporte multilingüístico sólo aparece si ha instalado el soporte multilingüístico. Especifique la información mediante los siguientes campos: v Nombre de correlación que debe utilizarse con la etapa. Define la correlación de juego de caracteres predeterminada para el proyecto o el trabajo. Puede cambiar la correlación seleccionando un nombre de correlación de la lista. v Mostrar todas las correlaciones. Muestra una lista de todas las correlaciones transferidas con InfoSphere DataStage. Capítulo 4. Etapas de trabajo de servidor

89

v Sólo correlaciones cargadas. Muestra una lista de las correlaciones que están cargadas en ese momento. v Permitir correlación por columnas. Habilita la correlación de juegos de caracteres por columna. Las columnas de un registro pueden utilizar distintas correlaciones dentro de los metadatos. v Utilizar parámetro de trabajo.... Especifica los valores de los parámetros para el trabajo. Utilice el formato #Parám#, donde Parám es el nombre del parámetro de trabajo. La serie #Parám# se sustituye por el parámetro de trabajo cuando se ejecuta el trabajo.

Ajuste del tamaño del archivo de entrada La etapa Merge da soporte a los archivos de 64 bits. No obstante, debe cambiar el valor de la propiedad Espacio máximo en VM para la Hash Table si desea alojar archivos de entrada extremadamente grandes. Si no lo hace, se produce una terminación anómala de los trabajos. El valor predeterminado de Espacio máximo en VM para la Hash Table es 12. Este valor es adecuado para muchos tamaños de archivo. Cuando aumenta el tamaño del mayor de los dos archivos de entrada, debe aumentar el valor de Espacio máximo en VM para la Hash Table. Para los archivos de 2 GB o más, debe establecer el valor de Espacio máximo en VM para la Hash Table en su valor máximo, 512. Para acceder a Espacio máximo en VM para la Hash Table, pulse con el botón derecho del ratón sobre el icono Fusionar en el lienzo y seleccione Estilo de cuadrícula. Aparece el editor de estilo de cuadrícula. Vaya al separador Propiedades de la página Salida. Desplácese en la lista de propiedades hasta que llegue a Espacio máximo en VM para la Hash Table.

Definición de propiedades de salida El separador Salida del recuadro de diálogo Etapa MERGE permite especificar propiedades para el enlace de salida. Las propiedades de salida describen las distintas características de los archivos de entrada y el enlace de salida, 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, 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, incluida la correlación de juego de caracteres

El separador General Si selecciona la página Salida, se abrirá el separador General. Nota: El botón Columnas... elabora un listado de las columnas en el enlace de salida y sólo se incluye por motivos de compatibilidad con otras etapas. El separador General contiene los campos siguientes: v Nombre del primer archivo. La vía de acceso del directorio y el nombre de archivo del primer archivo que se debe fusionar. Este archivo debe ser un archivo de texto secuencial. También puede incluir un parámetro de trabajo en la vía de acceso del directorio.

90

Guía del desarrollador de Server Job

v Nombre del segundo archivo. La vía de acceso del directorio y el nombre de archivo del segundo archivo que se debe fusionar. Este archivo debe ser un archivo de texto secuencial. También puede incluir un parámetro de trabajo en la vía de acceso del directorio. v Tipo de unión. El tipo de unión que desea efectuar entre dos archivos de entrada. Puede elegir uno de los siguientes tipos de operación de unión: Tipo de unión

Operación

Descripción

Unión interna pura

A AND B

Sólo fusiona aquellas filas que tienen los mismos valores clave en ambos archivos de entrada.

Conjunto completo

A OR B

Fusiona todas las filas de los dos archivos.

Sólo derecha e izquierda

A NOR B

Fusiona todas las filas de los dos archivos excepto aquellas filas con los mismos valores clave.

Unión externa izquierda

A

Fusiona todas las filas del primer archivo (A) con filas del segundo archivo (B) con el mismo valor clave.

Unión externa derecha

B

Fusiona todas las filas del segundo archivo (B) con filas del primer archivo (A) con el mismo valor clave.

Sólo izquierda

A NOT B

Fusiona todas las filas del primer archivo excepto las filas con el mismo valor clave en el segundo archivo (B).

Sólo derecha

B NOT A

Fusiona todas las filas del segundo archivo excepto las filas con el mismo valor clave en el primer archivo (A).

v Nivel de rastreo. Especifica un nivel de rastreo para el enlace de salida. El nivel de rastreo especifica el tipo de información que debe incluirse en el archivo de registro de trabajo. Puede especificar los siguientes niveles de rastreo: – 0 - No se graba información en el archivo de registro – 1 - 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. Para especificar el formato de archivo, 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. Para especificar el formato del segundo archivo de entrada, pulse el separador Formato de segundo archivo. Los campos y los recuadros de selección son idénticos para el segundo archivo. A continuación, se describe cada campo y recuadro de selección de las páginas Formato de primer archivo o Formato de segundo archivo: Separadores Formato del primer y del segundo archivo: v Columnas de anchura fija. Indica si el archivo tiene columnas de anchura fija. El valor predeterminado es sin seleccionar. v La primera línea son nombres de columna. Indica si la primera línea del primer archivo secuencial contiene nombres de columna. El valor predeterminado es sin seleccionar. v Comprobar datos con metadatos. 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. Se leerán los datos hasta que se agoten los metadatos. Capítulo 4. Etapas de trabajo de servidor

91

– Para los datos de anchura fija, esto significa el total de la longitud de las columnas más los espacios. – Para los datos delimitados, esto significa el número de columnas. – Si se borra, el final de la fila se determina por la secuencia de fin de la línea. v

v

v

v v v v

El valor predeterminado es sin seleccionar. Delimitador. Especifica el delimitador que separa los campos de datos del archivo. Esta opción está habilitada si se ha borrado Columnas de anchura fija. Puede entrar un único carácter sin comillas o el valor ASCII del carácter que desea utilizar. El valor predeterminado es , (coma). Carácter de cita. Especifica el carácter que se utiliza para incluir un valor de datos que contiene el carácter delimitador como datos. Esta opción está habilitada si se ha borrado Columnas de anchura fija. También puede entrar el valor ASCII de tres dígitos para el carácter que desee utilizar. Todos los valores con una longitud del 1 al 2 se tratarán como series. Puede entrar "097" para "a". Puede suprimir el Carácter de cita si no entra ningún valor. El valor predeterminado es " (comillas dobles). Carácter de escape. Especifica un único carácter para que sea interpretado como un carácter de escape. Esta opción está habilitada si se ha borrado Columnas de anchura fija. El valor predeterminado es \ (barra inclinada invertida). Espacios entre columnas. Especifica el número de espacios entre columnas en un archivo secuencial con columnas de anchura fija. El valor predeterminado es 0. Serie vacía. Especifica la serie utilizada para el valor nulo de SQL. No existe ningún valor predeterminado. Estilo Unix (LF). 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. De forma predeterminada, no se selecciona Estilo Unix (LF). Estilo Dos (CR LF). 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. De forma predeterminada, no se selecciona Estilo Dos (LF).

v Ninguno. Especifica si debe utilizarse un terminado de fin de la línea. Ninguno estará habilitado si se ha seleccionado Columnas de anchura fija y Comprobar datos con metadatos. De forma predeterminada, no se selecciona la opción Ninguno. Separadores Columnas del primer y del segundo archivo: 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, incluyendo tipo de SQL, longitud, escala, 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. 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. v Puede entrar la información sobre la columna manualmente. Cómo utilizar la información de la columna de una tabla existente: Puede utilizar información de una tabla existente para definir las columnas en el primer o el segundo archivo de entrada. Las definiciones de tabla especifican los datos utilizados en cada etapa de un trabajo de InfoSphere DataStage y se almacenan en el repositorio. Para transferir información sobre columnas de una tabla existente:

92

Guía del desarrollador de Server Job

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

Capítulo 4. Etapas de trabajo de servidor

93

v Descripción breve. Una descripción breve opcional de los datos. El valor predeterminado es la hora y la fecha guardadas. v Descripción explicativa. Una descripción explicativa opcional de los datos.

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 las claves, pulse el separador Correlación en la página Salida. Se abrirá el separador Correlación. Especificación de claves para la unión: 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. Estas claves se utilizan en la operación de unión para comparar dos archivos. Puede especificar varias claves para la operación de unión. Si utiliza varias claves, 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. Para suprimir una entrada que ha realizado, selecciónela y pulse con el botón derecho del ratón Borrar entrada del menú de atajo. Especificación de columnas de salida: Debe especificar el contenido de las columnas que deben incluirse en el enlace de salida. Utilice la página Correlación para especificar el contenido de las columnas. En la página Correlación, los Nombres de columna del primer archivo y Nombres de columna del segundo archivo ya están definidos. Se han definido en la página Propiedades de archivos de entrada. En la página Correlación, debe especificar qué columnas de los archivos de entrada desea incluir en el enlace de salida. Para especificar el contenido de una columna en el enlace de salida, 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. El Nombre de columna de salida se genera automáticamente. Las propiedades de las columnas en el enlace de salida se derivan de los del archivo de entrada. Debe incluir una Clave de columna del primer archivo y una Clave de columna del segundo archivo en la Lista de columnas. Si desea especificar de forma explícita los nombres y las propiedades de las columnas en el enlace de salida, vaya a la página Columnas, tal como se describe en “El separador Columnas” en la página 95. 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. Para seleccionar varias columnas, seleccione la primera columna y mantenga pulsada la tecla Control hasta que se hayan resaltado todas las columnas que desea. O bien, mantenga pulsada la tecla Mayús y pulse para seleccionar varias columnas. 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 columnas del enlace de salida, pulse el separador Columnas y suprima las columnas tal como se describe en “El separador Columnas” en la página 95. Nota: Si cambia los Nombres de columna del primer archivo (o el segundo archivo) a la izquierda de la página, deberá comprobar la información de correlación (es decir, las claves de correlación y la lista de columnas) a la derecha de la página. Si los nombres de columna de la derecha de la página no coinciden con los de la izquierda, arrastre los nombres de columna correctos de la izquierda a la derecha.

94

Guía del desarrollador de Server Job

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

Etapas Pivot Pivot, una etapa activa, correlaciona conjuntos de columnas en una tabla de entrada con una única columna de una tabla de salida. Este tipo de correlación se denomina girar. Esta etapa gira datos horizontales, es decir, columnas dentro de una única fila en muchas filas. 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.

Capítulo 4. Etapas de trabajo de servidor

95

Un conjunto de columnas de entrada consiste en una o en varias columnas. El giro normalmente da como resultado una tabla de salida que contiene menos columnas pero más filas que la tabla de entrada original. La etapa no tiene propiedades de etapa ni de enlace. Simplemente correlaciona filas de entrada con filas de salida.

Funcionalidad Funcionalidad soportada La funcionalidad de la etapa Pivot es la siguiente: v Da soporte a los giros horizontales. v Soporte multilingüístico.

Funcionalidad no soportada No se da soporte a la siguiente funcionalidad: v Compatibilidad con releases anteriores al 7.0 de IBM InfoSphere DataStage. v Los giros verticales, es decir, la correlación de datos verticales de varias filas en una fila. (Los giros verticales agrupan una o varias columnas y las correlacionan con muchas columnas de la fila agrupada en una tabla de salida). v Una interfaz de usuario personalizada.

Giro de datos Un giro horizontal correlaciona las columnas de una fila con varias filas, es decir, repite un segmento de datos para cada columna girada. Los datos normalmente están orientados a las claves. Utilice el campo Derivación en la cuadrícula de columna del enlace de salida para especificar los giros. Un campo vacío indica que hay un nombre de columna de entrada con el mismo nombre que la columna de salida. Esta columna de entrada está correlacionada con la columna de salida correspondiente.

Derivación individual Si el campo Derivación de una columna de salida muestra un único nombre de columna, la columna de entrada que tiene el mismo nombre que el especificado en el campo Derivación se correlaciona con esta columna de salida. 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.

Varias derivaciones Cuando una columna de salida se deriva de más de una columna de entrada, es decir, cuando aparecen varios nombres de columna de entrada en el campo Derivación, se genera una tabla de salida con más filas que la tabla de entrada. Cada columna de entrada especificada en el campo Derivación para las columnas de salida se correlaciona con la columna de salida. Se crea una nueva fila para cada una de las columnas de entrada especificada.

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. Estos ejemplos ilustran los conceptos de un giro horizontal.

96

Guía del desarrollador de Server Job

Columnas de enlace de entrada El ejemplo siguiente ilustra la entrada de datos en la etapa Pivot. El separador Columnas de la página Entradas contiene tres columnas de entrada con datos de ventas: Ventas_ENE, Ventas_FEB y Ventas_MAR. Las columnas están estructuradas de la forma siguiente: Tabla 10. Columnas de entrada Nombre de la columna

Tipo de SQL

Longitud

Escala

CUSTID

Entero

10

LNAME

VarChar

10

Ventas_ENE

Decimal

10

2

Ventas_FEB

Decimal

10

2

Ventas_MAR

Decimal

10

2

Nota: En toda columna, el tipo de datos documentado en Tipo de SQL debe ser el mismo que el tipo de datos de la tabla de origen. Los datos de las filas de origen para las columnas de entrada tienen la apariencia siguiente: Tabla 11. Filas de origen de entrada CUSTID

LNAME

Ventas_ENE

Ventas_FEB

Ventas_MAR

100

Smith

$1,234.00

$1,456.00

$1,578.00

101

Yamada

$1,245.00

$1,765.00

$1,934.00

Columnas de enlace de salida El siguiente ejemplo ilustra como especificar los datos de salida de la etapa Pivot. El separador Columnas del enlace de salida contiene una columna de Ventas derivada de las tres columnas de entrada: Ventas_ENE, Ventas_FEB y Ventas_MAR. Las columnas están estructuradas de la forma siguiente: Tabla 12. Columnas de salida Nombre de la columna

Derivación

CUSTID

Tipo de SQL

Longitud

Entero

10

Apellido

LNAME

VarChar

10

Ventas

Ventas_ENE, Ventas_FEB y Ventas_MAR

Decimal

10

Escala

2

Nota: En toda columna, el tipo de datos documentado en Tipo de SQL debe ser el mismo que el tipo de datos de la tabla de destino. La columna de salida que se deriva de una única columna de entrada es un valor clave. El valor clave se repite en cada fila que resulta de la correspondiente fila de entrada. 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:

Capítulo 4. Etapas de trabajo de servidor

97

Tabla 13. Filas de destino de salida CUSTID

Apellido

Ventas

100

Smith

$1,234.00

100

Smith

$1,456.00

100

Smith

$1,578.00

101

Yamada

$1,245.00

101

Yamada

$1,765.00

101

Yamada

$1.934.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, la fila de salida contendrá un valor nulo para cada columna en la que no esté disponible una derivación. Por ejemplo, supongamos que se pide al cliente que realice los pagos en su cuenta dos veces al año, en junio y en diciembre. Es posible que los datos de origen sean como los siguientes: Tabla 14. Ejemplo de pagos CUSTID

LNAME

Ventas_ENE

Ventas_FEB

Ventas_MAR

Pagos_JUN

Pagos_DIC

100

Smith

$1,234.00

$1,456.00

$1,578.00

$6,298.00

$7,050.00

101

Yamada

$1,245.00

$1,765.00

$1,934.00

$7,290.00

$7,975.00

Supongamos que el enlace de salida contiene una derivación adicional para pagos: Tabla 15. Columnas de salida con detalles de pagos Nombre de la columna

Derivación

Tipo de SQL Entero

10

Apellido

LNAME

VarChar

10

Ventas

Ventas_ENE, Ventas_FEB y Ventas_MAR

Decimal

10

Pagos

Pagos JUN, Pagos DIC

CUSTID

Longitud

2

Los datos de salida en las filas de destino después del giro podrían ser los siguientes: Tabla 16. Datos de salida en filas de destino después de giro CUSTID

LNAME

Ventas

Pagos

100

Smith

$1,234.00

$6,298.00

100

Smith

$1,456.00

$7,050.00

100

Smith

$1,578.00

nulo

101

Yamada

$1,245.00

$7,290.00

101

Yamada

$1,765.00

$7,975.00

101

Yamada

$1,934.00

nulo

98

Guía del desarrollador de Server Job

Escala

Etapas Row Merger La etapa Row Merger lee datos de una fila sin parar desde un enlace de entrada. Fusiona todas las columnas en una única serie de un formato especificado. A continuación, grana la serie en una columna indicada del enlace de salida. La etapa puede tener un único enlace de entrada y un único enlace de salida. Durante una operación normal de la etapa Row Merger, cada fila de entrada con varias columnas da como resultado una fila de salida de una única columna. La etapa también ofrece recursos de concatenación, no obstante, 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). Nota: La etapa Row Merger se parece a la etapa Sequential File de servidor. La diferencia radica en que, mientras la etapa Sequential File graba en un archivo, la etapa Row Merger realiza la salida en un enlace.

Funcionalidad Funcionalidad soportada La etapa Row Merger da soporte a la siguiente funcionalidad: v La posibilidad de leer una fila cada vez, fusionar todas las columnas de una fila en una serie individual con un determinado formato y, posteriormente, grabar las series en una columna específica del enlace de salida. v Agregación de varias filas de datos. v Soporte multilingüístico. La etapa graba lo que lee sin realizar ninguna interpretación ni conversión.

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. El separador General contiene los campos siguientes: v Varias líneas. Determina si la etapa Row Merger debe concatenar las filas de entrada en una fila de salida individual, o si produce cada fila de entrada como una fila de salida aparte. Seleccione Varias líneas para concatenar las filas. De forma predeterminada, esta opción no está seleccionada. v Finalización de línea. 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. Especifica el carácter/caracteres que se colocarán como delimitador entre las filas concatenadas cuando se muestren en una sola fila. Seleccione uno de los valores siguientes: – Estilo Unix (LF). Coloca un carácter de salto de línea como delimitador entre cada fila fusionada. – Estilo DOS (CR LF). Coloca un carácter de retorno de carro y un carácter de salto de línea como delimitador entre cada fila fusionada. – Ninguna. No coloca ningún delimitador entre las filas fusionadas. v Descripción. Entre una descripción opcional de la etapa.

Página Entrada La página Entrada contiene varios separadores que describen los datos que están entrando en la etapa Row Merger. El separador General contiene un campo de descripción que permite entrar una descripción opcional del enlace de entrada. El separador Formato y el separador Columnas se describen más abajo.

Capítulo 4. Etapas de trabajo de servidor

99

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. El separador contiene los campos siguientes: v Columnas de anchura fija. Seleccione este recuadro de selección para generar la salida de los datos en un formato de anchura fija. 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, separador Columnas). De forma predeterminada, esta opción está borrada. v Supresión de advertencias de truncamiento de filas. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. Si las filas de entrada contienen más columnas que las que haya definido en el separador Columnas, normalmente recibirá avisos acerca de las filas demasiado largas cuando ejecute el trabajo. Si desea suprimir estos mensajes (por ejemplo, es posible que sólo esté interesado en las tres primeras columnas y desee prescindir del resto), seleccione este recuadro de selección. v Delimitador. Esta opción no 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. De forma predeterminada, este campo contiene una coma. 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 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. Los valores hexadecimales deben prefijarse con &h. Entre 000 para suprimir el delimitador. v Carácter de cita. Esta opción no está disponible si se ha seleccionado Columnas de anchura fija. Especifica el carácter utilizado para incluir series. De forma predeterminada, este campo contiene un carácter de comillas dobles. 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 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. Los valores hexadecimales deben prefijarse con &h. Entre 000 para suprimir el carácter de cita. v Espacios entre columnas. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. Contiene un número para representar el número de espacios utilizado entre columnas. De forma predeterminada es 0. v Serie NULL predeterminada. Contiene caracteres que, cuando se encuentran en una fila de entrada, se interpretan como el valor nulo de SQL. v Relleno predeterminado. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. Contiene el carácter utilizado para rellenar las columnas ausentes. De forma predetermina es #, pero aquí se puede establecer otro carácter. El separador Formato también tiene un botón Cargar. Si tiene definiciones de tabla que incluyen información sobre el formato, puede cargar detalles sobre el formato desde estas definiciones de tabla directamente a la página Formato: 1. Pulse Cargar. Aparecerá el recuadro de diálogo Cargar definiciones de tabla. 2. Realice una búsqueda para encontrar la definición de tabla que contenga el formato que desea cargar. 3. Pulse Aceptar. 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 leyendo desde las filas de entrada. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna.

100

Guía del desarrollador de Server Job

Página Salida La página Salida contiene varios separadores que describen los datos editados por la etapa Row Merger.

Separador General El separador General identifica la columna que contiene los datos fusionados. El separador General contiene los campos siguientes: v Nombre de la columna que se debe fusionar. Una lista contiene una lista de las columnas de salida definidas para esta etapa. Seleccione la columna en la que quiere que se produzca la salida de los datos fusionados. v Descripción. Descripción opcional del enlace de salida.

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. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna. El campo Derivación no se utiliza. Como mínimo, debe definir una columna que lleve los datos fusionados. También puede definir columnas adicionales para que lleven datos como entrada en la etapa.

Etapas Row Splitter La etapa Row Splitter lee datos de una fila sin parar desde un enlace de entrada. Esta etapa divide los campos de datos de una serie en numerosas columnas. A continuación, graba las columnas en el enlace de salida. La etapa puede tener un único enlace de entrada y un único enlace de salida. Durante una operación normal de la etapa Row Splitter, cada serie de entrada procesada da como resultado una fila de salida de múltiples columnas. En algunos casos, sin embargo, una única serie de entrada puede representar muchas filas de datos de entrada. En este caso, la etapa puede desconcatenarlas en filas separadas para la salida. Nota: La etapa Row Splitter se parece a la etapa Sequential File de servidor. La diferencia radica en que, mientras la etapa Sequential File lee a partir de un archivo, la etapa Row Splitter lo hace desde un enlace.

Funcionalidad Funcionalidad soportada La etapa Row Splitter da soporte a la siguiente funcionalidad: v La posibilidad de leer una fila cada vez, repartir los campos de datos contenidos en una serie entre varias columnas y, posteriormente, grabar las columnas en el enlace de salida. v Generación de varias filas de salida. v Soporte multilingüístico. La etapa graba lo que lee sin realizar ninguna interpretación ni conversión.

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. El separador General contiene los campos siguientes: v Varias líneas. 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. Seleccione Varias líneas para desconcatenar las filas. De forma predeterminada, esta opción no está seleccionada.

Capítulo 4. Etapas de trabajo de servidor

101

v Finalización de línea. 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. Especifica el carácter/caracteres que se colocan como un delimitador entre las filas concatenadas, de forma que la etapa sabe dónde partirlas. Elija entre: – Estilo Unix (LF). El delimitador es un carácter de salto de línea. – Estilo DOS (CR LF). El delimitador es un carácter de retorno de carro y un carácter de salto de línea. – Ninguna. No existe ningún delimitador. v Descripción. Entre una descripción opcional de la etapa.

Página Entrada La página Entrada contiene varios separadores que describen los datos que están entrando en la etapa Row Splitter.

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. El separador General contiene los campos siguientes: v Nombre de la columna que se debe partir. Una lista contiene una lista de las columnas de entrada definidas para esta etapa. Seleccione la columna que contiene la serie a partir de la que la etapa extrae las columnas. v Descripción. Entre una descripción opcional del enlace de entrada.

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. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna. Como mínimo, debe definir una columna que lleve la serie de datos que la etapa está partiendo. Si es necesario, también puede definir columnas adicionales. 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.

Página Salida La página Salida contiene varios separadores que describen los datos editados por la etapa Row Splitter. El separador General contiene un campo de descripción que permite entrar una descripción opcional del enlace de entrada. El separador Formato y el separador Columnas se describen más abajo.

Separador Formato Utilice este separador para especificar cómo se formatea la serie de entrada, de forma que la etapa pueda separar las columnas. El separador contiene los campos siguientes: v Columnas de anchura fija. Seleccione este recuadro de selección si los datos entrantes están en un formato de anchura fija. 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, separador Columnas). De forma predeterminada, esta opción está borrada. 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, por lo general recibirá avisos sobre filas demasiado largas cuando ejecute el trabajo. Si desea suprimir estos mensajes (por ejemplo, es posible que sólo esté interesado en las tres primeras columnas y desee prescindir del resto), seleccione este recuadro de selección.

102

Guía del desarrollador de Server Job

v Mensaje de columnas ausentes. Si en la fila de entrada hay menos campos de datos que columnas de división definidas para los mismos, esta opción permite especificar la acción que se debe realizar: – Muy grave. Se graba un error muy grave en el registro de trabajo y el trabajo termina anormalmente (es el valor predeterminado.) – Aviso. Se graba un mensaje de aviso en el registro de trabajo, los nulos de SQL graban en columnas adicionales y el trabajo prosigue. – Ninguna. No se efectúa ninguna acción. Los nulos de SQL graban en columnas adicionales y el trabajo prosigue. v Delimitador. Esta opción no está disponible si se ha seleccionado Columnas de anchura fija. Especifica el delimitador utilizado para separar los campos de datos en la serie de datos de entrada. De forma predeterminada, este campo contiene una coma. 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 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. Los valores hexadecimales deben prefijarse con &h. Entre 000 para suprimir el delimitador. v Carácter de cita. Esta opción no está disponible si se ha seleccionado Columnas de anchura fija. Especifica el carácter utilizado para incluir series. De forma predeterminada, este campo contiene un carácter de comillas dobles. 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 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. Los valores hexadecimales deben prefijarse con &h. Entre 000 para suprimir el carácter de cita. v Espacios entre columnas. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. Contiene un número para representar el número de espacios utilizado entre columnas. De forma predeterminada es 0. v Serie NULL predeterminada. Contiene caracteres que, cuando se encuentran en una fila de entrada, se interpretan como el valor nulo de SQL (que puede ser sobrescrito para definiciones de columna individuales en el separador Columnas). v Relleno predeterminado. Esta opción sólo está disponible si se ha seleccionado Columnas de anchura fija. Contiene el carácter utilizado para rellenar las columnas ausentes. De forma predetermina es #, pero aquí se puede establecer otro carácter. El separador Formato también tiene un botón Cargar. Si tiene definiciones de tabla que incluyen información sobre el formato, puede cargar detalles sobre el formato desde estas definiciones de tabla directamente a la página Formato: 1. Pulse Cargar. Aparecerá el recuadro de diálogo Cargar definiciones de tabla. 2. Realice una búsqueda para encontrar la definición de tabla que contenga el formato que desea cargar. 3. Pulse Aceptar. 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. La cuadrícula tiene campos estándar que tienen todas las definiciones de columna. El campo Derivación no se utiliza.

Etapas Sort Ordena una etapa activa, ordena varios datos. Ordena cantidades pequeñas de datos de forma eficiente en la memoria siempre y cuando disponga de la suficiente memoria. Ordena grandes cantidades de datos utilizando el almacenamiento de disco temporal, no el espacio de intercambio de memoria virtual.

Capítulo 4. Etapas de trabajo de servidor

103

El modelo de la etapa Sort es el mandato de UNIX Sort, como se utiliza en una interconexión de shell. Las filas de datos de entrada que se deben ordenar llegan como líneas de caracteres ASCII leídas desde la secuencia stdin. Debe utilizar los argumentos de la línea de mandatos para especificar cómo ordenar estas filas. Las filas ordenadas resultantes se graban como líneas de caracteres ASCII en la secuencia stdout. En InfoSphere DataStage, la etapa Sort recibe una secuencia de filas que utiliza un único enlace de entrada. Las filas ya están separadas en valores de columna individuales. Los valores para las propiedades de la etapa y los atributos de columna especifican cómo ordenar estas filas. Las filas ordenadas resultantes se graban como valores de columnas en un único enlace de salida. La etapa Sort debe tener un enlace de entrada y un enlace de salida. 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. El tipo de columna de la columna de entrada debe poder convertirse en el tipo de columnas de salida. v Un único enlace de secuencia de salida recibe filas de datos ordenadas. Las filas de salida tienen el mismo orden de columnas que las columnas de entrada. Los nombres de las columnas de salida pueden diferir de los nombres de las columnas de entrada. 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 Funcionalidad soportada La etapa Sort contiene las funcionalidades y ventajas siguientes: v Soporta el soporte multilingüístico. v Soporta una opción que ordena por columna utilizando la correlación de secuencia de clasificación. v Soporta una opción que solicita una ordenación estable. Una ordenación estable preserva la ordenación de entrada de filas que si se comparan, son equivalentes. v Registra mensajes para informar sobre avisos no importantes que pueden tener un impacto sobre la precisión de los datos ordenados. v Soporta los parámetros de ajuste de rendimiento para obtener una ordenación eficiente, por lo tanto, un uso de la memoria virtual limitado.

Funcionalidad no soportada No se da soporte a la siguiente funcionalidad: 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.

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. Si se limita el número total de filas que se deben ordenar, el algoritmo de ordenación realiza

104

Guía del desarrollador de Server Job

ordenaciones crecientes. 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. Esta propiedad se utiliza cuando el número de filas dentro del enlace de entrada excede el valor suministrado por esta propiedad. El algoritmo de ordenación ordena filas por múltiples de este valor y almacena estos grupos ordenados de filas en archivos temporales. Estos archivos temporales, a continuación, se fusionan para la ordenación final.

Propiedad Número máximo de archivos abiertos El Número máx. de archivos abiertos limita el número de archivos de datos intermedios que se crean cuando se realizan ordenaciones crecientes. 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 Suponga que el enlace de entrada contiene 100.000 filas de datos y que Filas máx. en memoria virtual se establece en 10.000 filas. El algoritmo de ordenación lee las 10.000 primeras filas del enlace de entrada, realiza una ordenación intermedia y, a continuación, almacena los datos ordenados en un archivo temporal. El algoritmo prosigue agrupando porciones de 10.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. El número total de archivos temporales es menor que el valor especificado en Máx. de archivos abiertos. Tras las ordenaciones intermedias, los 10 archivos temporales se fusionan y se ordenan de forma conjunta y la ordenación final se graba en el enlace de salida. v El número de archivos temporales es igual al valor especificado en Máx. de archivos abiertos. Si, por ejemplo, Máx. de archivos abiertos está fijado en 5, las primeras 50.000 filas se procesan como cinco archivos temporales, cada uno de ellos con 10.000 filas. Estos archivos temporales se fusionan de forma conjunta para formar un nuevo archivo temporal con 50.000 filas de datos ordenados. El algoritmo toma las siguientes 10.000 filas del enlace de entrada y prosigue con las ordenaciones intermedias. Este algoritmo prosigue recursivamente hasta que se procesan todos los datos. Nota: Si los valores de estos parámetros son demasiado restrictivos, un se produce un alto número de ordenaciones intermedias con una fusión de archivos constante.

Criterios de ordenación La etapa Sort acumula filas de entrada en la memoria, limitadas por Filas máx. en memoria virtual. Clasifica las filas acumuladas, almacenándolas en archivos de disco, si es necesario. (Los conjuntos de ordenación pequeños se pueden almacenar en la memoria.) Esta etapa fusiona estos archivos almacenados y graba las filas en el enlace de salida. Puede entrar los valores listados en la tabla siguiente para especificar el orden de las filas, según la distinción de mayúsculas y minúsculas en la búsqueda

Capítulo 4. Etapas de trabajo de servidor

105

Tabla 17. Criterios de ordenación Distinción de mayúsculas y minúsculas en la búsqueda

Orden ascendente

Orden descendente

Sensible a la coincidencia de mayúsculas y minúsculas en la búsqueda

a asc ascending

d

No sensible a la coincidencia de mayúsculas y minúsculas en la búsqueda

A

D

ASC

DSC

ASCENDING

DESCENDING

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 la 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 la 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

Valor predeterminado

Descripción

Especificaciones de ordenación

Ninguno

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.

Filas máx. en memoria virtual

10.000

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.

Directorio temporal

Ninguno

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.

Carácter de escape

\ (barra inclinada invertida)

El carácter simple que se utiliza en archivos de correlación de orden de clasificación para especificar caracteres de control.

Nivel de rastreo

0

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.

Separador de columna

, (coma)

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 abiertos 10

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.

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 la 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. 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. Para utilizar arrastrar y soltar: 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. Puede arrastrar varias columnas, expresiones de clave o derivaciones. Utilice las teclas estándar del Explorador cuando seleccione las celdas de la columna de origen y continúe como para una celda individual. Puede arrastrar y soltar el conjunto completo de columnas arrastrando el título del enlace.

112

Guía del desarrollador de Server Job

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.

Recursos de Buscar y sustituir Si trabaja en un trabajo complejo donde hay varios enlaces, de varias columnas cada uno, que entran y salen en la etapa Transformer, puede utilizar el recurso de buscar y sustituir columna para localizar una determinada columna o expresión y cambiarla. 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, 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. Permite localizar la aparición de una determinada serie en una expresión y sustituirla si es necesario. Puede buscar hacia arriba o hacia abajo, y elegir que coincidan mayúsculas y minúsculas, que coincidan palabras completas o ninguna de estas opciones. También puede elegir sustituir todas las apariciones de la serie en una expresión. v Nombres de columna. Permite buscar una determinada columna y cambiarle el nombre si es necesario. Puede buscar hacia arriba o hacia abajo, y elegir que coincidan mayúsculas y minúsculas, que coincida la palabra completa o ninguna de estas opciones. v Tipos de expresión. Permite buscar la siguiente expresión vacía o la siguiente expresión que contenga un error. 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. Nota: Los resultados de buscar y sustituir se muestran en el color especificado en Herramientas → Opciones. Pulse F3 para repetir la última búsqueda que ha realizado sin abrir el recuadro de diálogo Buscar y sustituir.

Recursos de selección Si trabaja en un trabajo complejo donde hay varios enlaces, de varias columnas cada uno, que entran y salen en la etapa Transformer, puede utilizar el recurso de selección de columna para seleccionar varias columnas. Este recurso también está disponible en los separadores Correlación de algunas etapas de trabajo paralelo. El recurso de selección permite: v Seleccionar todas las columnas/variables de etapa cuyas expresiones contengan texto que coincide con el texto especificado. v Seleccionar todas las columnas/variables de etapa cuyo nombre contenga el texto especificado (y, de manera opcional, coincida con un tipo especificado). v Seleccionar todas las columnas/variables de etapa con un determinado tipo de datos. v Seleccionar todas las columnas con expresiones no válidas o que faltan. Capítulo 4. Etapas de trabajo de servidor

113

Para poder utilizar los recursos de selección, elija Seleccionar en el menú de atajos del enlace. Aparece el recuadro de diálogo Seleccionar. Tiene tres separadores: v Texto de la expresión. 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. El texto especificado es una coincidencia de texto simple, que tiene en cuenta el valor de Coincidencia de mayúsculas y minúsculas. v Nombres de columna. El separador Nombres de columna permite seleccionar todas las columnas/variables de etapa cuyo nombre contenga el texto especificado. Hay una lista desplegable adicional, Tipo de datos, que limitará las columnas seleccionadas a aquellas con dicho tipo de datos. Puede utilizar la lista desplegable Tipo de datos por sí sola para seleccionar todas las columnas de un determinado tipo de datos. Por ejemplo, puede seleccionar todas las columnas de serie dejando el campo de texto en blanco y seleccionar Serie como tipo de datos. 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 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.

Especificación del enlace de entrada primario El primer enlace a una etapa Transformer siempre se designa como el enlace de entrada primario. No obstante, puede elegir otro enlace para que sea al enlace primario si es necesario. Para ello: 1. Seleccione el enlace de entrada primario actual en la ventana Diagrama. 2. Seleccione Convertir en referencia en el menú de atajos de la ventana Diagrama. 3. Seleccione el enlace de referencia que desea que sea el nuevo enlace de entrada primario. 4. Seleccione Convertir en secuencia en el menú de atajos de la ventana Diagrama.

Creación y supresión de columnas Puede crear columnas en los enlaces de la etapa Transformer utilizando cualquiera de los métodos siguientes: v Seleccione el enlace y, a continuación, 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. 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 Utilice los menús de atajo para crear una nueva definición de columna. v Edite las cuadrículas en el separador de metadatos del enlace para insertar una nueva columna. Cuando copia columnas, se crea una nueva columna con los mismos metadatos que la columna desde la que se ha copiado. Para suprimir una columna desde el editor de transformador, seleccione la columna que desee suprimir y pulse Cortar o elija Suprimir columna en el menú de atajos.

Movimiento de columnas en un enlace Puede mover las columnas en un enlace utilizando arrastrar y soltar o cortar y pegar. Seleccione la columna necesaria y arrástrela a su nueva ubicación, o córtela y péguela en su nueva ubicación.

Edición de metadatos de columna Puede editar los metadatos de columna desde la cuadrícula en la parte inferior del editor de transformador. Seleccione el separador de los metadatos de enlace que desee editar y, a continuación, utilice los controles estándar de la cuadrícula de edición de IBM InfoSphere DataStage.

114

Guía del desarrollador de Server Job

Los metadatos mostrados no incluyen las derivaciones de columna ni las expresiones de clave, ya que se editan en el área de enlaces.

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, puede arrastrar o copiar una columna de entrada en un enlace de salida. Las columnas de salida tendrán los mismos nombres que las columnas de entrada de las que se derivan. v Si la columna de salida ya existe, puede arrastrar o copiar una columna de entrada en el campo Derivación de la columna de salida. Esto especifica que la columna se deriva directamente de una columna de entrada sin que se realice ninguna transformación. 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. 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. En este caso, puede arrastrar o copiar la celda de derivación de una columna a otra. v En muchos casos, necesitará transformar los datos antes de derivar una columna de salida de ellos. Para ello, utilice el editor de expresiones. Para mostrar el editor de expresiones, efectúe una doble pulsación en la celda Derivación de la columna de enlace de salida necesaria. (También puede invocar el editor de expresiones utilizando el menú de atajos o las teclas de atajo). Si una derivación aparece en rojo (o el color definido en Herramientas → Opciones), significa que el editor de transformador la considera incorrecta. (En algunos casos, simplemente significa que la derivación no cumple estrictamente las reglas del patrón de uso del motor de servidor, pero funcionará correctamente). Si una columna de enlace de salida tiene definida una derivación que contiene las columnas de enlace de entrada, se dibuja una línea de relación entre la columna de entrada y la columna de salida. Puede haber varias líneas de relación que entran o salen de las columnas. 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. 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. Con esta característica, puede rellenar todas las derivaciones de enlace de salida para direccionar los datos de las columnas de entrada correspondientes, y volver atrás y editar las columnas de enlace de salida individuales en las que desee una derivación diferente. Para utilizar este recurso: 1. 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. v Elija Coincidencia automática en el menú de atajos de la cabecera del enlace de entrada o la cabecera del enlace de salida. 2. Elija en las listas el enlace de entrada o el enlace de salida para el que desee hacer coincidir las columnas. 3. Pulse Coincidencia de ubicación o Coincidencia de nombre en el área Tipo de coincidencia.

Capítulo 4. Etapas de trabajo de servidor

115

Si selecciona Coincidencia de ubicación, se establecerán las derivaciones de las columnas de salida en las columnas del enlace de entrada en las posiciones equivalentes. 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. Si elige Coincidencia de nombre, 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 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. Omitir prefijo. 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. Omitir sufijo. De manera opcional, especifica los caracteres que van al final del nombre de la columna que se deben pasar por alto durante el procedimiento de coincidencia. v Columnas de salida: Omitir prefijo. 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. Omitir sufijo. De manera opcional, especifica los caracteres que van al final del nombre de la columna que se deben pasar por alto durante el procedimiento de coincidencia. v Omitir mayúsculas y minúsculas. 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. Este valor también afecta a los valores de Omitir prefijo y Omitir sufijo. Por ejemplo, si especifica que el prefijo IP se pasará por alto y activa Omitir mayúsculas y minúsculas, se pasará por alto IP e ip. 4. Pulse Aceptar para proseguir con la coincidencia automática. Nota: La coincidencia automática no tiene en cuenta la incompatibilidad de tipos de datos entre las columnas que relacionadas; las derivaciones se establecen independientemente.

Edición de varias derivaciones Para realizar ediciones en varias derivaciones de variable de etapa o columna de salida, seleccione Sustitución de derivación... en el menú de atajos. Se abrirá el recuadro de diálogo Sustitución de expresiones. 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. Por ejemplo, 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, puede hacerlo en dos pasos. En primer lugar, utilice el recuadro de diálogo Seleccionar para seleccionar todas las columnas de salida de la serie. A continuació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. Puede elegir entre la sustitución de la expresión completa o la sustitución de una parte de la expresión. Expresión completa: Con esta opción, la expresión completa existente de cada columna se sustituye por el valor de sustitución especificado. Este valor de sustitución puede ser un valor completamente nuevo, pero normalmente será un valor basado en el valor de la expresión original. Cuando se especifica el valor de sustitución, el valor existente de la expresión de la columna puede incluirse en este nuevo valor incluyendo "$1". El valor puede incluirse varias veces.

116

Guía del desarrollador de Server Job

Por ejemplo, si añade una llamada trim() alrededor de cada expresión del conjunto de columnas seleccionado actualmente y selecciona las columnas necesarias, siga estos pasos: 1. Seleccione la opción Expresión completa. 2. Especifique un valor de sustitución: trim($1)

3. Pulse Aceptar Si la expresión original de una columna era: DSLink3.col1

Se sustituirá por: trim(DSLink3.col1)

Esto se aplicará a las expresiones de cada una de las columnas seleccionadas. Si necesita incluir el texto real $1 en la expresión, especifíquelo como "$$1". Parte de la expresión: Con esta opción, sólo se sustituye una parte de cada expresión seleccionada, en lugar de la expresión completa. 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. Si se selecciona Sustituir todas las apariciones, cada aparición de una coincidencia se actualizará con el valor de sustitución especificado. Si no se selecciona, sólo se sustituirá la primera aparición. Al sustituir parte de una expresión, el valor de sustitución especificado puede incluir dicha parte de la expresión original que se está sustituyendo. Para ello, la expresión regular especificada debe tener el valor entre paréntesis. "$1" en el valor de sustitución representará el texto coincidente. Si la expresión regular no se incluye entre paréntesis, "$1" será simplemente el texto "$1". Para el uso de expresiones regulares complejas, se pueden incluir subconjuntos del texto de la expresión regular entre paréntesis en lugar de todo el texto. En este caso, toda la parte coincidente de la expresión original seguirá sustituida, pero se puede utilizar "$1", "$2", etc. para hacer referencia a cada parte coincidente entre paréntesis de la expresión regular especificada. A continuación, se proporciona un ejemplo de la parte de la sustitución de la expresión. Supongamos que un conjunto seleccionado de columnas tienen derivaciones que utilizan columnas de entrada de `DSLink3'. Por ejemplo, dos de estas derivaciones pueden ser: DSLink3.OrderCount + 1 If (DSLink3.Total > 0) Then DSLink3.Total Else -1

Si desea proteger el uso de estas columnas de entrada de los valores nulos, utilice un valor cero en lugar del nulo. Para ello: 1. Seleccione las columnas para las que desee sustituir expresiones. 2. Seleccione la opción Parte de la expresión. 3. Especifique un valor de expresión regular: (DSLink3\.[a-z,A-Z,0-9]*)

Este coincidirá con las series que contengan "DSLink3." seguido de varios dígitos o caracteres alfabéticos. (Se supone que los nombres de columna de este caso están formados por dígitos y Capítulo 4. Etapas de trabajo de servidor

117

caracteres alfabéticos). 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. 4. 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, pero rodeadas por la llamada NullToZero. 5. Pulse Aceptar para aplicarlo a todas las derivaciones de columna seleccionadas. En los ejemplos anteriores: DSLink3.OrderCount + 1

generará NullToZero(DSLink3.OrderCount) + 1

y If (DSLink3.Total > 0) Then DSLink3.Total Else -1

generará: If (NullToZero(DSLink3.Total) > 0) Then DSLink3.Total Else -1

i se selecciona la opción Sustituir todas las apariciones, la segunda expresión generará: If (NullToZero(DSLink3.Total) > 0) Then NullToZero(DSLink3.Total) Else -1

El valor de sustitución puede ser una serie de expresión de cualquier formato. Por ejemplo, en el caso anterior, el valor de sustitución puede ser: (If (StageVar1 > 50000) Then $1 Else ($1 + 100))

En el primer caso anterior, la expresión DSLink3.OrderCount + 1

generará: (If (StageVar1 > 50000) Then DSLink3.OrderCount Else (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. Este proceso es similar a la definición de derivaciones para las columnas de salida. En la mayoría de los casos, una expresión de clave será un equijoin de una columna de enlace de entrada primario. 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. 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. Se crea un enlace de relación entre la columna de enlace de entrada primario y la expresión de clave. También puede arrastrar o copiar una expresión de clave existente en otra columna de entrada, y arrastrar o copiar varias selecciones.

118

Guía del desarrollador de Server Job

Si necesita una expresión más compleja que un equijoin, puede efectuar una doble pulsación en la celda de la expresión de clave necesaria para abrir el editor de expresiones. 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. (En algunos casos, simplemente significa que la expresión de clave no cumple estrictamente las reglas del patrón de uso del motor de servidor, pero funcionará correctamente). Inicialmente, las celdas de expresión de clave ocupan una columna muy estrecha. En la mayoría de los casos, la línea de relación ofrece suficiente información sobre la expresión de clave; de lo contrario, puede arrastrar el borde izquierdo de la columna para expandirla.

Definición de la búsqueda de múltiples filas para las entradas de referencia 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 seleccionan con una clave foránea, en lugar de con una clave primaria, como ocurre con los enlaces de referencia normales. Para poder utilizar la funcionalidad de múltiples filas, debe definir qué columna o columnas son las claves foráneas en los metadatos de columna. Para ello, cambie el atributo Clave de la columna de claves primarias actual por No y, a continuación, cambie el atributo Clave de la columna o columnas de claves foráneas necesarias por Sí. Las expresiones de clave foránea pueden definirse mediante el editor de expresiones, de la misma forma que las expresiones de clave primaria que se describen en “Definición de expresiones de clave de columna de entrada” en la página 118. También debe especificar que el enlace de referencia utiliza la funcionalidad de múltiples filas. Para ello, abra el recuadro de diálogo Propiedades de la etapa Transformer, vaya al separador General en la página Entradas, 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.

Especificación de subrutinas 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. Para especificar una rutina, 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. El separador General contiene los campos siguientes: v Subrutina anterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta antes de que la etapa empiece a procesar datos. v Subrutina posterior a la etapa y Valor de entrada. Contiene el nombre (y el valor) de una subrutina que se ejecuta después de que la etapa haya procesado los datos. Seleccione una rutina en la lista. Esta lista contiene todas las rutinas integradas definidas como una Subrutina anterior/posterior en la carpeta Rutinas del árbol de repositorio. Entre un valor apropiado para el argumento de entrada de la rutina en el campo Valor de entrada. Si elige una rutina definida en el repositorio, 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 Transformer. Si ha instalado o importado un trabajo, 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. En tal caso, aparecerá un mensaje de aviso cuando cierre el recuadro de diálogo. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar. Capítulo 4. Etapas de trabajo de servidor

119

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. Si edita un trabajo creado utilizando el Release 1 de IBM InfoSphere DataStage, 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. Cuando se actualiza InfoSphere DataStage, se identifican estas rutinas y se renombran automáticamente. Por ejemplo, si utiliza una subrutina anterior a la etapa denominada BeforeSubr, aparece como BeforeSubr\ en el campo Subrutina anterior a la etapa. Puede continuar utilizando estas rutinas. No obstante, como no ha podido especificar valores de entrada para las rutinas en el Release 1 de InfoSphere DataStage, el campo Valor de entrada está sombreado cuando utiliza una de estas rutinas "antiguas".

Definición de restricciones y manejo de rechazos Puede definir límites en los datos de salida especificando una restricción. Las restricciones son expresiones BASIC y puede especificar una restricción para cada enlace de salida de una etapa Transformer. También puede especificar que un enlace concreto actúe como un enlace de rechazo. Los enlaces de rechazo generan filas que no se han grabado en otros enlaces de salida de la etapa Transformer. Para definir una restricción o especificar un enlace de rechazo, utilice una de las opciones siguientes: v Seleccione un enlace de salida y pulse el botón Restricciones. v Efectúe una doble pulsación en el campo de entrada de restricción del enlace de salida. v Elija Restricciones en los menús de atajos de cabecera o en segundo plano. 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. Defina una restricción especificando una expresión BASIC en el campo Restricción del enlace. A continuación, las restricciones existentes aparecerán debajo de la barra de título del enlace en el Editor de transformación. Esta expresión de restricción se comprobará con los datos de fila en el tiempo de ejecución. Si los datos no cumplen la restricción, la fila no se grabará en el enlace. También es posible definir un enlace que se puede utilizar para detectar las filas que se han "rechazado" de un enlace anterior. Para definir un enlace de rechazo, 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, establezca el campo Restricción en nombre_enlace.REJECTED. Esto debe establecerse siempre se rechace una fila en el enlace nombre_enlace, 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. 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. v Para detectar las filas que han generado un error de grabación en un enlace de salida, establezca el campo Restricción en nombre_enlace.REJECTEDCODE. El valor de nombre_enlace.REJECTEDCODE será distinto de cero si la fila se ha rechazado debido a un error de grabación o 0 (DSE.NOERROR) si la fila se ha rechazado porque no se ha cumplido una restricción de enlace. Cuando edita el campo Restricción, puede establecer los valores de retorno de nombre_enlace.REJECTEDCODE realizando una selección en las opciones de menú Variables de enlaceRestricciones... del Editor de expresiones. Estos proporcionan un rango de errores, pero tenga en cuenta que la mayoría de errores de grabación devuelven DSE.WRITERROR. Para poder establecer una restricción de rechazo que diferencie entre un error de grabación y una restricción no cumplida, puede utilizarse una combinación de los distintivos nombre_enlace.REJECTEDCODE y nombre_enlace.REJECTED. Por ejemplo:

120

Guía del desarrollador de Server Job

– Para detectar las filas que no se ha podido grabar en un enlace de salida, establezca el campo Restricción en nombre_enlace.REJECTEDCODE – Para detectar las filas que no cumplen una restricción en un enlace de salida, establezca el campo Restricción en nombre_enlace.REJECTEDCODE = DSE.NOERROR AND nombre_enlace.REJECTED – Para detectar qué filas se han rechazado debido a una restricción o un error de grabación, establezca el campo Restricción en nombre_enlace.REJECTED v Para "detectar todo", el campo Restricción puede dejarse en blanco. 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. Por lo tanto, el enlace de rechazo debe ser el último enlace en el orden de proceso definido. v Puede definirse cualquier otra Restricción. Esto hará que el número de filas grabadas en el enlace (es decir, las filas que cumplen la restricción) se registren en el registro de trabajo como "filas rechazadas". Nota: Debido a la naturaleza del caso "detectar todo" anterior, sólo debe utilizar un enlace de rechazo cuyo campo Restricción esté en blanco. Para utilizar varios enlaces de rechazo, debe definirlos para que utilicen el distintivo nombre_enlace.REJECTED detallado en el primer caso anterior.

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. Para los enlaces de entrada, puede ordenar los enlaces de referencia (el enlace primario siempre se procesa primero). Para los enlaces de salida, puede ordenar todos los enlaces. El orden inicial de los enlaces el orden en el que se añaden a la etapa. Para reordenar los enlaces: 1. 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. v Elija Reordenar enlaces de entrada o Reordenar enlaces de salida en el menú de atajos en segundo plano. 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. 2. Utilice los botones de flecha para reorganizar la lista de enlaces en el orden de ejecución necesario. 3. Si está satisfecho con el orden, pulse Aceptar. Nota: Aunque los recursos de orden de los enlaces permiten utilizar una columna de salida anterior para derivar una columna de salida posterior, no se recomienda y recibirá un aviso si lo hace.

Definición de variables de la etapa local Puede declarar y utilizar sus propias variables en una etapa Transformer. Este tipo de variables son accesibles sólo desde la etapa Transformer en la que se declaran. Pueden utilizarse de la siguiente manera: v Se les pueden asignar valores por expresiones. v Pueden utilizarse en expresiones que definen una derivación de columna de salida. v Las expresiones que evalúan una variable pueden incluir otras variables o la propia variable que se está ejecutando. Las variables de etapa que declara se muestran en una tabla en el panel de la derecha del área de enlaces. La tabla es parecida a un enlace de salida. Para mostrar u ocultar la tabla, pulse el botón Variables de Capítulo 4. Etapas de trabajo de servidor

121

etapa en la barra de herramientas del transformador, o seleccione Variables de etapa en el menú de atajos en segundo plano. 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. La tabla muestra las variables de etapa junto con las expresiones utilizadas para derivar sus valores. Las líneas de enlace unen las variables de etapa con las columnas de entrada utilizadas en las expresiones. Los enlaces de la derecha de la tabla enlazan las variables con las columnas de salida que las utilizan. Para declarar una variable de etapa: 1. 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. v Seleccione Propiedades de la etapa desde el menú de atajos de fondo. 2. Pulse el separador Variables de la página General. El separador Variables contiene una cuadrícula que muestra las variables declaradas actualmente, sus valores iniciales y una descripción opcional. Utilice los controles de la cuadrícula estándar para añadir nuevas variables. Los nombres de variable deben empezar por un carácter alfabético (a-z, A-Z) y sólo pueden contener caracteres alfanuméricos (a-z, A-Z, 0-9). Asegúrese de que la variable no utilice el nombre de ninguna palabra clave de BASIC. 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. En general, 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). Un menú de tajos ofrece los mismos mandatos. No obstante, no puede pegar una variable de etapa como una nueva columna o una columna como una nueva variable de etapa.

Editor de expresiones de IBM InfoSphere DataStage El Editor de expresiones de InfoSphere DataStage permite especificar expresiones correctas cuando edita etapas Transformer. También permite definir transformaciones personalizadas en el repositorio (consulte “Definición de transformaciones personalizadas” en la página 144). 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, that is, 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, use XXX not including the quotation marks) =================================================

122

Guía del desarrollador de Server Job

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 "," 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, system variable, 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 | concatenation_operator | matches_operator | relational_operator | logical_operator arithmetic_operator ::= "+" | "-" | "*" | "/" | "^" concatenation_operator ::= ":" matches_operator ::= "MATCHES" relational_operator ::= " =" |"EQ" | "" | "#" | "NE" | ">" | "GT" | ">=" | "=>" | "GE" | " 100 Then Call DSLogWarn("La entrada debe ser =< 100; received ":InputArg,"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.

Sintaxis TextoInforme = DSMakeJobReport(DescriptorContextoTrabajo, NivelInforme, SeparadorLíneas)

DescriptorContextoTrabajo es la serie tal como se ha devuelto de DSAttachJob. NivelInforme especifica el tipo de informe y es uno de los siguientes: v 0 - informe básico. Serie de texto que contiene fecha de inicio/finalización, tiempo transcurrido y estado de trabajo. v 1 - detalle de etapa/enlace. Como el informe básico, pero también contiene información sobre etapas individuales y enlaces dentro del trabajo. v 2 - serie de texto que contiene el informe XML completo. De manera predeterminada, el XML generado no contendrá una instrucción de proceso . Si es necesaria una hoja de estilo, especifique un NivelInforme de 2 y añada el nombre del URL de hoja de estilo necesario, es decir, 2;URLHojaEstilo. Esto inserta una instrucción de proceso en el XML generado con el formato: 0, se presupone que es un estado de trabajo. v Si Código < 0, se presupone que es un código de error. v (No se debe pasar nunca 0 y devolverá "ningún error") Ans es el mensaje asociado con el código.

216

Guía del desarrollador de Server Job

Comentarios Si Código no se reconoce, se notificará Ans.

Ejemplo code$ = DSGetLastErrorMsg() ans$ = DSTranslateCode(code$)

DSWaitForFile Suspende un trabajo hasta que existe o no existe un archivo nombrado.

Sintaxis Respuesta = DSWaitForFile(Parámetros)

Parámetros es la vía de acceso completa del archivo que se debe esperar. No se realiza ninguna comprobación respecto a si se trata de una vía de acceso razonable (por ejemplo, si existen todos los directorios de la vía de acceso). Un nombre de vía de acceso que empieza con "-" indica un distintivo para comprobar la no-existencia de la vía de acceso. No forma parte del nombre de vía de acceso. Los parámetros también pueden finalizar con el formato "timeout:NNNN" (o "timeout=NNNN"). Esto indica un tiempo no predeterminado que se debe esperar antes de abandonar. Existen varios formatos posibles, 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. Si se ha pasado esta hora o nn:nn, esperará hasta el día siguiente. El tiempo de espera predeterminado es el mismo que "12H". El formato puede opcionalmente terminar con "/nn", lo que indica un tiempo de retardo de sondeo en segundos. Si se omite, se utiliza un tiempo de sondeo predeterminado. Respuesta puede ser: v DSJE.NOERROR (0) OK - El archivo ahora existe o no existe, dependiendo del distintivo. v DSJE.BADTIME Formato de tiempo de espera no reconocido v DSJE.NOFILEPATH Falta vía de acceso de archivo v DSJE.TIMEOUT Se ha esperado demasiado

Ejemplos Respuesta = DSWaitForFile("C:\ftp\incoming.txt timeout:2H")

(espera 7200 segundos a que exista el archivo en C: antes de abandonar.) Respuesta = DSWaitForFile("-incoming.txt timeout=15:00")

(espera hasta las 3 de la tarde a que NO exista el archivo en el directorio local.) Respuesta = DSWaitForFile("incoming.txt timeout:3600/60")

(espera 1 hora a que exista un archivo local, comprobándolo una vez por minuto.)

Capítulo 7. Programación BASIC

217

DSWaitForJob Esta función sólo es válida si el trabajo actual ha emitido un DSRunJob en los DescriptorContextoTrabajo proporcionados. Devuelve el valor de retorno si el/un trabajo se ha iniciado desde que finalizó el último DSRunJob.

Sintaxis CódigoError = DSWaitForJob (DescriptorContextoTrabajo)

DescriptorContextoTrabajo es la serie devuelta de DSAttachJob. Si contiene comas, es un conjunto delimitado por comas de descriptores de contexto de trabajo, que representa una lista de trabajos a todos los cuales se debe esperar. CódigoError es 0 sino hay ningún error, de lo contrario los posibles valores de error (0 => el descriptor de contexto del trabajo ha finalizado desde una espera de varias trabajos.

Comentarios DSWaitForJob esperará un único trabajo o varios trabajos.

Ejemplo Para esperar el retorno del trabajo qsales: WaitErr = DSWaitForJob(qsales_handle)

Función Dtx Convierte un entero decimal en hexadecimal.

Sintaxis Dtx (número [ ,tamaño] )

número es el número decimal que se va a convertir. Si el número es un valor nulo, se devuelve un nulo. tamaño es el número mínimo de caracteres en el valor hexadecimal. El valor devuelto se rellena con ceros iniciales, según sea necesario. Si el tamaño es un valor nulo, se produce un error de tiempo de ejecución.

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, 4)

218

Guía del desarrollador de Server Job

;* devuelve "2F" ;* devuelve "002F"

Función Ebcdic Convierte los valores de los caracteres de una serie del formato ASCII al formato EBCDIC.

Sintaxis Ebcdic (serie)

serie es la serie o la expresión que desea convertir. Si la serie es un valor nulo, se produce un error de tiempo de ejecución.

Comentarios Las funciones Ebcdic y Ascii realizan operaciones complementarias. Nota: Si el soporte multilingüístico está habilitado, esta función puede devolver datos no reconocidos para la correlación de juego de caracteres actual.

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, el dígito 1 es el decimal 241 en EBCDIC) If EbcdicStr = Char(193):Char(241) Then ... ;* ... por lo tanto, se utiliza esta ramificación EndIf

Sentencia End Indica el final de un programa, una subrutina o bloque de sentencias.

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.

Ejemplos Este ejemplo ilustra el uso de una sentencia End con varias formas de la construcción If...Then en una rutina: Function MyTransform(Arg1, Arg2, Arg3) * Las cláusulas Then y Else ocupan una línea cada una: If Arg1 Matches "A..." 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. Programación BASIC

219

Reply += 2 Reply = (Arg2 - 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 - 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 ;* los demás valores Call DSTransformError("Bad arg":Arg1, "MyTransform" Reply = "" End Case Return(Reply)

Sentencia Equate Compara un valor con un símbolo o una serie literal durante la compilación. No está disponible en las expresiones.

Sintaxis Equate símbolo To valor [ ,símbolo To valor] ... Equate símbolo Literally valor [ ,símbolo Literally valor] ...

símbolo es el nombre de comparación que desea dar a un valor en el programa. El valor de símbolo no puede ser un número. valor es el valor que desea identificar mediante símbolo. El valor debe ir entre comillas. To especifica que el valor es un tipo cualquiera de expresión. Literally (o Lit) especifica que el valor es una serie literal.

Comentarios Puede comparar el símbolo sólo una vez; de lo contrario, obtiene un error de compilador.

Ejemplo El ejemplo siguiente muestra cómo utilizar Equate...To y Equate...Literally para establecer símbolos en el código:

220

Guía del desarrollador de Server Job

Function MyFunction(Arg1, Arg2) Equate Option1 To "O1" Equate Option2 To "O2" Equate TestOption Literally "If Arg1 = " TestOption Option1 Then ;* el código se convierte en: If Arg1 = "1 Then Ans = ... End TestOption Option2 Then ;* el código se convierte en: If Arg1 = "O2" Then Ans = ... End Return(Ans)

Función Ereplace Sustituye una o varias instancias de una subserie.

Sintaxis Ereplace (serie, subserie, sustitución [ ,número [ ,inicio] ] )

serie es la serie o la expresión. subserie es la subserie que desea sustituir. Si la subserie es una serie vacía, se devuelve el valor de la serie. sustitución es la subserie de sustitución. Si sustitución es una serie vacía, se eliminan todas las apariciones de subserie. número especifica el número de instancias de subserie que hay que sustituir. Para cambiar todas las instancias, utilice un valor menor que 1. inicio especifica la primera instancia que hay que sustituir. Un valor menor que 1 toma el valor 1 de forma predeterminada.

Comentarios Un valor nulo para serie devuelve un valor nulo. Si utiliza un valor nulo para otra variable, se produce un error de tiempo de ejecución.

Ejemplos El siguiente ejemplo sustituye todas las apariciones de una subserie por otra: MyString = "AABBCCBBDDBB" NewString = Ereplace(MyString, "BB", "xxx") * El resultado es "AAxxxCCxxxDDxxx"

El ejemplo siguiente sustituye sólo las dos primeras apariciones: MyString = "AABBCCBBDDBB" NewString = Ereplace(MyString, "BB", "xxx", 2, 1) * El resultado es "AAxxxCCxxxDDBB"

El ejemplo siguiente elimina todas las apariciones de la subserie: MyString = "AABBCCBBDDBB" NewString = Ereplace(MyString, "BB", "") * El resultado es "AACCDD"

Capítulo 7. Programación BASIC

221

Función Exchange Sustituye un carácter en una serie.

Sintaxis Exchange (serie, buscar.carácter, sustituir.carácter)

serie es la serie o la expresión que contiene el carácter que desea sustituir. Una serie nula devuelve un valor nulo. buscar.carácter es el valor hexadecimal del carácter que se busca. Si buscar.carácter es un valor nulo, Exchange falla y genera un error de tiempo de ejecución. sustituir.carácter es el valor hexadecimal del carácter de sustitución. Si el valor de sustituir.carácter es FF, buscar.carácter se suprime de la serie. Si sustituir.carácter es un valor nulo, Exchange falla y genera un error de tiempo de ejecución.

Comentarios Exchange sustituye todas las apariciones del carácter especificado. Si el soporte multilingüístico está habilitado, Exchange utiliza los dos primeros bytes de buscar.carácter y sustituir.carácter. Los caracteres se evalúan de la siguiente manera: Bytes

Se evalúan como...

De 00 a FF

De 00 a FF

De 00 a FA

Caracteres Unicode de 0000 a FA

De FB a FE

Delimitadores del sistema

Ejemplo En el ejemplo siguiente, 41 es el valor hexadecimal del carácter "A" y 2E es el valor hexadecimal del carácter de punto (.): MyString = Exchange("ABABC", "41", "2E") * el resultado es ".B.BC" * La línea anterior es funcionalmente equivalente a: * MyString = Convert("A", ".", "ABABC")

Función Exp Devuelve el valor de "e" elevado a la potencia especificada.

Sintaxis Exp (potencia)

potencia es un número o una expresión numérica que especifica la potencia. Un valor nulo devuelve un valor nulo. Si la potencia es demasiado alta o baja, se genera un mensaje de aviso y se devuelve 0.

222

Guía del desarrollador de Server Job

Comentarios El valor de "e" es aproximadamente 2,71828. La fórmula utilizada para realizar el cálculo es: Exp valor de función = 2.71828**(potencia)

Ejemplo Este ejemplo utiliza la función Exp para devolver "e" elevado a una potencia: * Se define el ángulo en radianes. MyAngle = 1.3 * Se calcula la secante hiperbólica. MyHSec = 2 / (Exp(MyAngle) + Exp(-MyAngle))

Función Field Devuelve las subseries delimitadas de una serie.

Sintaxis Field (serie, delimitador, instancia [ ,número] )

serie es la serie que contiene la subserie. Si la serie es un valor nulo, se devuelve el valor nulo. delimitador es el carácter que delimita la subserie. Si delimitador es una serie vacía, se devuelve la serie. Si la serie no contiene un delimitador, se devuelve una serie vacía, salvo que instancia sea 1, en cuyo caso se devuelve la serie. Si el delimitador es un valor nulo, se produce un error de tiempo de ejecución. Si se devuelve más de una subserie, se devuelven los delimitadores con las subseries. instancia especifica qué instancia del delimitador termina la subserie. Si instancia es menor que 1, se supone 1. Si la serie no contiene la instancia, se devuelve una serie vacía. Si la instancia es un valor nulo, se produce un error de tiempo de ejecución. El número especifica el número de subseries delimitadas que se devolverán. Si el número es una serie vacía o menor que 1, se supone 1. Si el número es un valor nulo, se produce un error de tiempo de ejecución.

Ejemplos En el siguiente ejemplo, la variable MyString se establece en los datos entre la tercera y la cuarta aparición del delimitador "#": MyString = Field("###DHHH#KK","#", 4)

;* devuelve "DHHH"

En el siguiente ejemplo, SubString se establece en "" ya que el delimitador "/" no aparece en la serie: MyString = "London+0171+NW2+AZ" SubString = Field(Mystring, "/", 1)

;* devuelve ""

En el siguiente ejemplo, SubString se establece en "0171+NW2", ya que se han solicitado dos campos utilizando el delimitador "+" (el segundo y el tercer campo): MyString = "London+0171+NW2+AZ" SubString = Field(Mystring, "+", 2, 2) * devuelve "0171+NW2"

Capítulo 7. Programación BASIC

223

Función FieldStore Modifica las series de caracteres insertando, suprimiendo o sustituyendo los campos separados por los delimitadores especificados.

Sintaxis FieldStore (serie, delimitador, inicio, número, nuevos.campos)

serie es la serie que se va a modificar. Si la serie es un valor nulo, se devuelve el valor nulo. delimitador delimita los campos y puede ser un carácter ASCII individual cualquiera. Si delimitador es nulo, se produce un error de tiempo de ejecución. inicio es el número del campo que inicia la modificación. v Si inicio es mayor que el número de campos de serie, la serie se rellena con campos vacíos antes de iniciar el proceso. v Si inicio es nulo, se produce un error de tiempo de ejecución. número es el número de campos de nuevos.campos que se insertan en la serie. v Si el número es positivo, se sustituirá el número indicado de campos de serie por el número indicado de primeros campos de nuevos.campos. v Si el número es negativo, se sustituirán el número indicado de campos de serie por todos los campos de nuevos.campos. v Si el número es 0, se insertarán todos los campos de nuevos.campos en la serie antes del campo indicado por inicio. v Si el número es nulo, se produce un error de tiempo de ejecución. nuevos.campos es una serie o una expresión que contiene los nuevos campos que se utilizarán. Si nuevos.campos es nulo, se produce un error de tiempo de ejecución.

Ejemplo Los siguientes ejemplos muestran varias formas de sustituir subseries en una serie: MyString = "1#2#3#4#5" String = Fieldstore(MyString, "#", 2, 2, "A#B") * El código anterior da como resultado: "1#A#B#4#5" String2 = Fieldstore(MyString, "#", 2, -2, "A#B") * El código anterior da como resultado: "1#A#B#4#5" String3 = Fieldstore(MyString, "#", 2, 0, "A#B") * El código anterior da como resultado: "1#A#B#2#3#4#5" String4 = Fieldstore(MyString, "#", 1, 4, "A#B#C#D") * El código anterior da como resultado: "A#B#C#D#5" String5 = Fieldstore(MyString, "#", 7, 3, "A#B#C#D") * El código anterior da como resultado: "1#2#3#4#5##A#B#"

224

Guía del desarrollador de Server Job

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. FIX permite controlar la exactitud del cálculo eliminando los datos excesivos o poco fiables de los resultados numéricos. Por ejemplo, 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. Una aplicación de ingeniería tiene que descartar los dígitos que rebasan el grado de fiabilidad aceptado para los cálculos.

Sintaxis FIX (número [ ,precisión [ ,modalidad ] ] )

La expresión número se evalúa como el valor numérico que se convertirá.Si número se evalúa como valor nulo, se devuelve el valor nulo. La expresión precisión se evalúa como el número de dígitos de precisión del número de coma flotante. La precisión predeterminada es 4. El distintivo modalidad indica cuántos dígitos sobrantes se manejan. Si modalidad es 0 o no se especifica, los dígitos sobrantes se redondean. Si modalidad es un valor distinto de 0, los dígitos sobrantes se truncan.

Ejemplos El ejemplo siguiente calcula un valor con la precisión predeterminada 4: REAL.VALUE = 37.73629273 PRINT FIX (REAL.VALUE)

Esta es la salida del programa: 37.7363

El ejemplo siguiente calcula el mismo valor con dos dígitos de precisión. El primer resultado se redondea, y el segundo se trunca: PRINT FIX (REAL.VALUE, 2) PRINT FIX (REAL.VALUE, 2, 1)

Esta es la salida del programa: 37.74 37.73

Función Fmt Formatea los datos de la salida.

Sintaxis Fmt (serie, formato)

serie es la serie que se va a formatear. Si la serie es un valor nulo, se devuelve el valor nulo. formato es una expresión que define cómo se formateará la serie. Si el formato es nulo, la función Fmt falla. Para ver la sintaxis detallada, consulte Expresión de formato.

Capítulo 7. Programación BASIC

225

Comentarios La expresión de formato proporciona un patrón para formatear la serie. 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, 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.

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. Debe especificar longitud a menos que especifique máscara. (Puede especificar longitud y máscara.) v Si serie es menor que longitud, se rellena con caracteres de relleno. v Si serie es mayor que longitud, la serie se divide en campos mediante una marca de texto, CHAR(251), que se inserta cada longitud caracteres. Cada campo se rellena con caracteres de relleno hasta 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. El carácter de relleno predeterminado es un espacio. Si desea emplear un carácter numérico o las letras L, R, T o Q como carácter de relleno, deberá escribirlo entre comillas simples.

Justificación La justificación de la salida se especifica utilizando el parámetro de justificación, que debe ser uno de los códigos siguientes: L Justificar a al izquierda e interrumpir al final del campo. R Justificar a al derecha e interrumpir al final del campo. 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.

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:

226

Guía del desarrollador de Server Job

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. Si especifica 0 para n, el valor se redondea al entero más próximo. La salida se rellena con ceros o se redondea al enésimo lugar decimal, si es necesario. m especifica cómo desescalar el valor: v Un valor de 0 desescala el valor según la precisión actual. v Un valor del 1 al 9 desescala del valor en m menos la precisión actual. Si no especifica m, el valor predeterminado es 0. La precisión predeterminada es 4.

$

Antepone a la salida numérica como prefijo un signo de dólar.

F

Antepone a la salida numérica como prefijo un signo de franco.

,

Inserta una coma para separar los millares.

Z

Suprime los ceros iniciales. Devuelve una serie vacía si el valor es 0.

E

Delimita los números negativos con corchetes angulares.

C

Anexa cr a los números negativos.

D

Anexa db a los números positivos.

B

Anexa db a los números negativos.

L

Anexa el signo menos a los números negativos.

N

Suprime el signo menos en los números negativos.

J

Trunca un número, en lugar de redondearlo.

S

Si está habilitado el soporte multilingüístico, antepone el carácter de yen/yuan al valor.

Las opciones E, M, C, D y N definen representaciones numéricas de uso monetario, mediante prefijos o sufijos. Si el soporte multilingüístico está habilitado, estas opciones alteran temporalmente los convenios numéricos y monetarios establecidos para el entorno local actual.

Salida enmascarada Puede especificar una plantilla de formato para la salida utilizando el parámetro máscara. Por ejemplo, un patrón de formato 10L##-##-#### formatea la serie 31121999 en 31-12-1999. Una máscara puede incluir los caracteres que desee, pero estos caracteres tienen un significado especial: #n

Especifica que los datos se visualizan en un campo de n caracteres de relleno. Si la expresión de formato no especifica un carácter de relleno, se utiliza un espacio.

%n

Especifica que los datos se visualizan en un campo de n ceros.

*n

Especifica que los datos se visualizan en un campo de n asteriscos.

Los demás caracteres seguidos de n insertan dichos caracteres en la salida n veces. Si desea utilizar números o caracteres especiales como literales, debe aplicar la función de escape al carácter especial con una barra inclinada invertida ( \ ). máscara debe ir entre paréntesis a efectos de claridad, en cuyo caso también debe escribir entre paréntesis la máscara completa. Por ejemplo: ((###) ###-####)

Capítulo 7. Programación BASIC

227

La función Status devuelve el resultado de la edición, de la siguiente manera: 0

El código de edición es satisfactorio.

1

La serie o la expresión no es válida.

2

El código de edición no es válido.

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. QL

Justificar a la izquierda una expresión exponencial e interrumpir en longitud del campo.

nEm

Si se usa con la justificación Q, QR o QL, n es el número de dígitos fraccionarios, y m especifica el exponente. Cada uno puede ser un número de 0 a 9.

n.m

Si se usa con la justificación Q, QR o QL, n es el número de dígitos que preceden al separador decimal, y m es el número de dígitos fraccionarios. Cada uno puede ser un número de 0 a 9.

Z

Si se utiliza con el formato Q, solo se suprimen los ceros fraccionarios finales, y se suprime el exponente cero.

Ejemplos Los siguientes ejemplos muestran el efecto de varios códigos Fmt. En cada caso, el resultado se muestra como una serie, para que estén visibles todos los espacios significativos. Expresión de formato Valor formateado X = Fmt("1234567", "14R2") X = "1234567.00" X = Fmt("1234567", "14R2$," X = " $1,234,567.00" X = Fmt("12345", "14*R2$," X = "****$12,345.00" X = Fmt("1234567", "14L2" X = "1234567.00" X = Fmt("0012345", "14R") X = "0012345" X = Fmt("0012345", "14RZ") X = "12345" X = Fmt("00000", "14RZ") X = " " X = Fmt("12345", "14’0’R") X = "00000000012345" X = Fmt("ONE TWO THREE", "10T") X = "ONE TWO ":T:"THREE" X = Fmt("ONE TWO THREE", "10R") X = "ONE TWO TH":T:"REE " X = Fmt("AUSTRALIANS", "5T") X = "AUSTR":T:"ALIAN":T:"S "

228

Guía del desarrollador de Server Job

X = Fmt("89", "R#####") X = " 89" X = Fmt("6179328323", "L###-#######") X = "617-9328323" X = Fmt("123456789", "L#3-#3-#3") X = "123-456-789" X = Fmt("123456789", "R#5") X = "56789" X = Fmt("67890", "R#10") X = " 67890" X = Fmt("123456789", "L#5") X = "12345" X = Fmt("12345", "L#10") X = "12345 " X = Fmt("123456", "R##-##-##") X = "12-34-56" X = Fmt("555666898", "20*R2$,") X = "*****$555,666,898.00" X = Fmt("DAVID", "10.L") X = "DAVID....." X = Fmt("24500", "10R2$Z") X = " $24500.00" X = Fmt("0.12345678E1", "9*Q") X = "*1.2346E0" X = Fmt("233779", "R") X = "233779" X = Fmt("233779", "R0") X = "233779" X = Fmt("233779", "R00") X = "2337790000" X = Fmt("233779", "R2") X = "233779.00" X = Fmt("233779", "R20") X = "2337790000.00" X = Fmt("233779", "R24") X = "233779.00" X = Fmt("2337.79", "R") X = "2337.79" X = Fmt("2337.79", "R0" X = "2338" X = Fmt("2337.79", "R00") X = "23377900" X = Fmt("2337.79", "R2") X = "2337.79"

Capítulo 7. Programación BASIC

229

X = Fmt("2337.79", "R20") X = "23377900.00" X = Fmt("2337.79", "R24") X = "2337.79" X = Fmt("2337.79", "R26") X = "23.38"

Función FmtDP En la modalidad de soporte multilingüístico, formatea los datos en las posiciones de visualización en lugar de por longitud de caracteres.

Sintaxis FmtDP (serie, formato [, nombrecorrelación] )

serie es la serie que se va a formatear. Si la serie es un valor nulo, se devuelve el valor nulo. Los caracteres que no se pueden correlacionar en la serie se supone que tienen una longitud de visualización de 1. formato es una expresión que define cómo se formateará la serie. Si el formato es nulo, FmtDP falla. Para ver la sintaxis detallada, consulte Expresión de formato. nombrecorrelación es el nombre de una correlación de juego de caracteres que se utiliza para el formateo. Si no se especifica el nombrecorrelación, se utiliza el valor predeterminado actual para el proyecto o el trabajo.

Comentarios FmtDP está especialmente indicada para su uso con juegos de caracteres de varios bytes. Si el soporte multilingüístico no está habilitado, la función FmtDP funciona como una función Fmt equivalente.

Función Fold Dobla las series para crear subseries.

Sintaxis Fold (serie, longitud)

serie es la serie que se va a doblar. longitud es la longitud de las subseries en caracteres.

Comentarios Utilice la función Fold para dividir una serie en un número de subseries separadas por marcas de campo. El valor de serie se separa en subseries de longitud igual o menor que longitud. El valor de serie se separa por los espacios en blanco, si es posible, y de lo contrario se separa en subseries de la longitud especificada. Si serie se evalúa como valor nulo, se devuelve el valor nulo. Si longitud es menor que 1, se devuelve una serie vacía. Si longitud es el valor nulo, Fold falla y el programa termina con un mensaje de error de tiempo de ejecución.

230

Guía del desarrollador de Server Job

Ejemplo A=Fold("This is a folded string", 5)

Establece A e: ThisFis a FfoldeFdFstrinFg

Donde F es la marca de campo.

Función FoldDP En la modalidad de soporte multilingüístico, dobla las series para crear subseries utilizando las posiciones de visualización de los caracteres.

Sintaxis FoldDP (serie, longitud [ , nombrecorrelación ] )

serie es la serie que se va a doblar. longitud es la longitud de las subseries en posiciones de visualización. nombrecorrelación es el nombre de una correlación de juego de caracteres que se utiliza para el formateo. Si no se especifica el nombrecorrelación, se utiliza el valor predeterminado actual para el proyecto o el trabajo.

Comentarios La función FoldDP está especialmente indicada para su uso con juegos de caracteres de varios bytes. Si el soporte multilingüístico no está habilitado, la función FoldDP funciona como una función Fold equivalente.

Sentencias For...Next Cree un bucle de programa For...Next. No está disponible en las expresiones.

Sintaxis For variable = inicio To fin [Step incremento] [sentencias.bucle] [Continue|Exit] [ {While | Until} condición] [sentencias.bucle] [Continue] Next [variable]

For variable identifica el inicio del bucle. 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. Step incremento especifica la cantidad que aumenta el contador cuando se alcanza una sentencia Next. sentencias.bucle son las sentencias que se ejecutan en el bucle. Continue inicia la siguiente iteración del bucle desde un punto en el bucle. Capítulo 7. Programación BASIC

231

Exit sale del bucle desde un punto en el bucle. While...Continue es un bucle interior. Si condición se evalúa en true, el bucle interior continúa ejecutándose. Si condición se evalúa en false, el bucle interior finaliza. La ejecución del programa continúa con la sentencia que figura a continuación de la sentencia Next. Si condición se evalúa como un valor nulo, la condición es falsa. Until...Continue es un bucle interior. Si condición se evalúa en false, el bucle interior continúa ejecutándose. Cuando condición se evalúa en true, el bucle finalizará y la ejecución del programa continuará con la sentencia que figura tras la sentencia Next. condición define la condición para ejecutar un bucle While o Until. condición puede ser una sentencia cualquiera que utilice una cláusula Then...Else, pero la cláusula Then...Else no se incluye. En su lugar, cuando la sentencia condicional ejecuta la cláusula Else, condición se evalúa en false; cuando la sentencia condicional ejecuta la cláusula Then, condición se evalúa en true. La cláusula Locked no está soportada en este contexto. Next variable especifica el final del bucle. variable es la variable que se utiliza para definir el bucle con la sentencia For. Su uso es opcional, pero se recomienda para mejorar la legibilidad del programa, en concreto, si utiliza bucles anidados.

Comentarios Puede utilizar varias cláusulas While y Until en un bucle For...Next. Si anida bucles For...Next, cada bucle debe tener un nombre de variable exclusivo como contador. Si una sentencia Next no tiene ninguna sentencia For correspondiente, genera un error de compilador.

Ejemplo Este ejemplo utiliza sentencias For...Next para crear una serie que contiene tres instancias de los números del 5 al 1, donde cada serie está separada de la otra por un guión. El bucle externo utiliza una variable de contador de bucle que disminuye en 1 cada vez que pasa por el bucle. String = "" ;* debe configurarse el valor inicial For Outer = 5 To 1 Step -1 ;* 5 repeticiones externas For Inner = 1 To 3 ;* 5 repeticiones internas String = String : Outer Next Inner String = String : "-" ;* se añade un guión Next Outer * La serie será parecida a: 555-444-333-222-111-.

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. No está disponible en las expresiones.

Sintaxis Function [nombre] [ argumento1 [, argumento2] ...]

nombre es el nombre de la función escrita por el usuario y puede ser cualquier nombre de variable válido. argumento1 y argumento2 son los nombres formales de los argumentos que se van a pasar a la función. 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). Puede especificar hasta 254 argumentos. La función de

232

Guía del desarrollador de Server Job

llamada en el programa principal debe especificar el mismo número de argumentos que la sentencia Function.

Comentarios Una función escrita por el usuario puede contener una sola sentencia Function, que debe ser la primera línea no comentada. Un argumento adicional está oculto para que la función escrita por el usuario pueda utilizarlo para devolver un valor. La función escrita por el usuario conserva un argumento adicional para que se devuelva un valor mediante la sentencia Return. Si utiliza la sentencia Return en una función escrita por el usuario y no especifica un valor para devolver, se devuelve una serie vacía.

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. La función escrita por el usuario debe estar catalogada en un catálogo local o el catálogo del sistema, o debe ser un registro del mismo archivo de objeto que el programa de llamada. Si la función definida por el usuario se invoca a sí misma recursivamente, debe incluir una sentencia Deffun antes de la llamada recursiva. Por ejemplo: Function Cut(expression, character) Deffun Cut (A1,A2) If character # ’’ Then ... Return (Cut (expression, character [2,999999])) End Else Return (expression) End End

Ejemplos En este ejemplo, una función definida por el usuario denominada Short compara la longitud de dos argumentos y devuelve el más corto: Function Short(A,B) AL = Len(A) BL = Len(B) If AL < BL Then Result = A Else Result = B Return(Result)

En este ejemplo, se define una función llamada MyFunc con los nombres de argumento A, B y C. A continuación, figura un ejemplo de la sentencia DefFun que declara y utiliza la función MyFunc. Los nombres de argumento A, B y C hacen referencia a los valores de X, Y y Z, lo que permite calcular el valor asignado a T. Function MyFunc(A, B, C) Z = ... Return (Z) ... End DefFun MyFunc(X, Y, Z) T = MyFunc(X, Y, 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, debe declararla como una función con el Capítulo 7. Programación BASIC

233

* número correcto de argumentos y añadirle un prefijo "DSU.". Deffun MyFunctionB(A) Calling "DSU.MyFunctionB" Ans = MyFunctionB(Arg1) * Añada su propia transformación al valor en Ans... ...

Función GetLocale En la modalidad de soporte multilingüístico, recupera el valor de entorno local actual para una determinada categoría.

Sintaxis $Include UNIVERSE.INCLUDE UVNLSLOC.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. LCE$BAD.CATEGORY No se reconoce la categoría especificada.

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

Sintaxis GoSub etiqueta.sentencia [ : ]

etiqueta.sentencia define dónde se inicia puede ser cualquier etiqueta válida definida en el programa. : identifica el texto anterior como una etiqueta de sentencia para que el programa sea más legible.

234

Guía del desarrollador de Server Job

Comentarios Para transferir el control de nuevo al programa principal, 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. v Return To etiqueta transfiere el control de programa a una ubicación en el programa especificada por etiqueta. Un programa puede llamar a una subrutina el número de veces que desee. Puede anidar subrutinas hasta 256 niveles.

Ejemplo Este ejemplo utiliza GoSub para invocar una subrutina interna en una función de transformación de IBM InfoSphere DataStage. 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 la subrutina. 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 ;* se utiliza GoTo para evitar un error MyRoutine: Arg1 = SQRT(Arg1) ;* utiliza la raíz cuadrada Return ;* devuelve el control a la sentencia ExitFunction: Return(Reply)

Sentencia GoTo Transfiere el control de programa a la sentencia especificada. No está disponible en las expresiones.

Sintaxis GoTo etiqueta.sentencia [ : ]

etiqueta.sentencia especifica la sentencia de destino. : identifica el texto anterior como una etiqueta de sentencia para que el programa sea más legible.

Comentarios Si la sentencia referenciada es ejecutable, se ejecuta y el programa continúa. Si no es ejecutable, el programa continúa en la primera sentencia ejecutable después de la referenciada.

Ejemplo Este ejemplo utiliza la sentencia GoTo para ramificarse a las etiquetas de línea de una rutina. Tenga en cuenta que este tipo de proceso es a menudo más claro que la utilización de una construcción Begin Case. Function MyTransform(Arg1) * Evalúa el argumento y se ramifica a la etiqueta correspondiente. If Arg1 = 1 Then GoTo Label1 Else GoTo Label2 Label1: Reply = "A" GoTo LastLabel

Capítulo 7. Programación BASIC

235

Label2: Reply = "B" LastLabel: Return(Reply)

Función Iconv Convierte una serie al formato de almacenamiento interno.

Sintaxis Iconv (serie, código [ @VM código ] ... )

serie se evalúa como la serie que se va a convertir. Si la serie es un valor nulo, se devuelve el valor nulo. código es un código de conversión y debe escribirse entre comillas. Varios códigos de conversión deben ir separados por marcas de valor. Si hay varios códigos, se aplican de izquierda a derecha. El segundo código convierte la salida del primero, etc. Si código es un valor nulo, genera un error de tiempo de ejecución.

Comentarios La función Status devuelve el resultado de la conversión, de la siguiente manera: 0

La conversión ha sido satisfactoria.

1

La serie no era válida. Se devuelve una serie vacía, a menos que serie fuera un valor nulo, en cuyo caso se devuelve un valor nulo.

2

La conversión no era válida.

3

La conversión ha sido satisfactoria, pero puede que los datos de entrada no sean válidos, por ejemplo, una fecha que no existe como, por ejemplo, el 31 de septiembre.

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", "MY") X = 41424344 X = Iconv("0123", "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", "D") X = 0

236

Guía del desarrollador de Server Job

X = Iconv("27 MAY 97", "D2") X = 10740 X = Iconv("05/27/97", "D2/") X = 10740 X = Iconv("27/05/1997", "D/E") X = 10740 X = Iconv("1997 5 27", "D YMD") X = 10740 X = Iconv("27 MAY 97", "D DMY") X = 10740 X = Iconv("5/27/97", "D/MDY") X = 10740 X = Iconv("27 MAY 1997", "D DMY") X = 10740 X = Iconv("97 05 27", "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.05.1997", "G1.2") X = "05.1997" X = Iconv("27.05.1997", "G.2") X = "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", "L0") X = 10 X = Iconv("QWERTYUIOP", "L7") X = "" X = Iconv("QWERTYU", "L7") X = "QWERTYU" X = Iconv("QWERTYUOP", "L3,5") X = "" X = Iconv("QWER", "L3,5") X = "QWER"

Conversiones de caracteres enmascarados Los siguientes ejemplos muestran el efecto de algunos códigos de conversión de caracteres enmascarados (MCA, MC/A, MCD, MCL, MCN, MC/N, MCP, MCT, MCU y MCX):

Capítulo 7. Programación BASIC

237

Expresión de conversión Valor interno X = Iconv("John Smith 1-234", "MCA") X = "JohnSmith" X = Iconv("John Smith 1-234","MC/A") X = " 1-234" X = Iconv("4D2", "MCD") X = "1234" X = Iconv("4D2", "MCDX") X = "1234" X = Iconv("John Smith 1-234", "MCL") X = "john smith 1-234" X = Iconv("John Smith 1-234", "MCN") X = "1234" X = Iconv("John Smith 1-234", "MC/N") X = "John Smith -" X = Iconv("John^CSmith^X1-234", "MCP") X = "John.Smith.1-234" X = Iconv("john SMITH 1-234", "MCT") X = "John Smith 1-234" X = Iconv("john smith 1-234", "MCU") X = "JOHN SMITH 1-234" X = Iconv("1234", "MCX") X = "4D2" X = Iconv("1234", "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.54", "MD2") X = 987654 X = Iconv("987654", "MD0") X = 987654 X = Iconv("$1,234,567.89", "MD2$,") X = 123456789 X = Iconv("123456.789", "MD33") X = 123456789 X = Iconv("12345678.9", "MD32") X = 1234567890 X = Iconv("F1234567.89", "MD2F") X = 123456789 X = Iconv("1234567.89cr", "MD2C") X = -123456789

238

Guía del desarrollador de Server Job

X = Iconv("1234567.89 ", "MD2D") X = 123456789 X = Iconv("1,234,567.89 ", "MD2,D") X = 123456789 X = Iconv("9876.54", "MD2-Z") X = 987654 X = Iconv("$####1234.56", "MD2$12#") X = 123456 X = Iconv("$987.654 ", "MD3,$CPZ") X = 987654 X = Iconv("####9,876.54", "MD2,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,234,567.89", "ML2$,") X = 123456789 X = Iconv(".123", "ML3Z") X = 123 X = Iconv("123456.789", "ML33") X = 123456789 X = Iconv("12345678.9", "ML32") X = 1234567890 X = Iconv("1234567.89cr", "ML2C") X = -123456789 X = Iconv("1234567.89db", "ML2D") X = 123456789 X = Iconv("1234567.89-", "ML2M") X = -123456789 X = Iconv("", "ML2E") X = -123456789 X = Iconv("1234567.89**", "ML2(*12)") X = 123456789 X = Iconv("**1234567.89", "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. Programación BASIC

239

X = Iconv("MCMXCVmm", "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", "P(3N-3A-3X);(9N)") X = "123456789" X = Iconv("123-ABC-A7G", "P(3N-3A-3X);(9N)") X = "123-ABC-A7G" X = Iconv("123-45-6789", "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 y MB (Radix): Expresión de conversión Valor interno X = Iconv("400", "MX") X = 1024 X = Iconv("434445", "MX0C") X = "CDE" X = Iconv("2000", "MO") X = 1024 X = Iconv("103104105", "MO0C") X = "CDE" X = Iconv("10000000000", "MB") X = 1024 X = Iconv("010000110100010001000101", "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", "R100,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", "S") X = "G650"

240

Guía del desarrollador de Server Job

X = Iconv("greene", "S") X = "G650" X = Iconv("GREENWOOD", "S") X = "G653" X = Iconv("GREENBAUM", "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", "MT") X = 9960 X = Iconv("02:46:40am", "MTHS") X = 10000 X = Iconv("02:46am", "MTH") X = 9960 X = Iconv("02.46", "MT.") X = 9960 X = Iconv("02:46:40", "MTS") X = 10000

Sentencias If...Else Ejecutan una o varias sentencias de manera condicional. Puede utilizar una sintaxis de una sola línea o varias líneas en un bloque. No está disponible en las expresiones.

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. Si la condición es false, se ejecutan las sentencias. sentencias son las sentencias que se ejecutan si condición es false.

Comentarios Si desea ejecutar más de una sentencia cuando condición es false, utilice la sintaxis multilínea.

Ejemplo Function MyTransform(Arg1, Arg2, Arg3) * La cláusula Else ocupa sólo una línea: Reply = 0 ;* valor predeterminado If Arg1 Matches "A..." Else Reply = 2 * Cláusula Else multilínea: If Len(arg1) > 10 Else Reply += 2 Capítulo 7. Programación BASIC

241

Reply = (Arg2 - 1) * Reply End * Otro estilo de la cláusula Else multilínea: If Len(Arg1) > 20 Else Reply += 4 Reply = (Arg3 - 1) * Reply End Return(Reply)

Sentencias If...Then...Else Defina varios bloques de sentencias y las condiciones que determinan qué bloque se ejecuta. Puede utilizar una sintaxis de una sola línea o varias líneas en un bloque. No está disponible en las expresiones.

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. Si condición es true, se utiliza la cláusula Then. Si condición es false, se utiliza la cláusula Else. Si condición es un valor nulo, se evalúa en false. sentencias son las sentencias que se ejecutan dependiendo del valor de condición.

Comentarios Puede anidar sentencias If...Then...Else. Si las sentencias Then o Else están escritas en varias líneas, deberá emplear una sentencia End como la última sentencia.

Ejemplo Function MyTransform(Arg1, Arg2, Arg3) * Las cláusulas Then y Else ocupan una línea cada una: If Arg1 Matches "A..." 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 - 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 - 1) * Reply End Return(Reply)

242

Guía del desarrollador de Server Job

Sentencias If...Then Ejecutan una o varias sentencias de manera condicional. Puede utilizar una sintaxis de una sola línea o varias líneas en un bloque. 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. Si la condición es true, se ejecutan las sentencias. sentencias son las sentencias que se ejecutan si la condición es true.

Comentarios Si desea ejecutar más de una sentencia cuando condición es true, utilice la sintaxis multilínea.

Ejemplo Este ejemplo ilustra las distintas formas de la construcción If...Then que pueden utilizarse en una rutina: Function MyTransform(Arg1, Arg2, Arg3) * La cláusula Then ocupa sólo una línea: Reply = 0 ;* valor predeterminado If Arg1 Matches "A..." 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...Then...Else Asigna un valor que cumple las condiciones especificadas. Operador If...Then...Else

Sintaxis variable = If condición Then expresión Else expresión

variable es la variable que se asigna. If condición define la condición que determina qué valor se asigna. Then expresión define el valor que se asigna si la condición es true. Capítulo 7. Programación BASIC

243

Else expresión define el valor que se asigna si la condición es false.

Comentarios El operador If es la única forma de la construcción If...Then...Else que puede utilizarse en una expresión.

Ejemplo Tenga en cuenta que la cláusula Else es necesaria. * 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, y devolverlo: Column2 + (If Column3 Matches "A..." Then 1 Else 2)

Función Index Devuelve la posición inicial de una subserie.

Sintaxis Index (serie, subserie, instancia)

serie es la serie o la expresión que contiene la subserie. Si serie es un valor nulo, se devuelve 0. subserie es la subserie que desea encontrar. Si subserie es una serie vacía, se devuelve 1. Si subserie es un valor nulo, se devuelve 0. instancia especifica qué instancia de la subserie se va a ubicar. Si no se encuentra la instancia, se devuelve 0. Si la instancia es un valor nulo, genera un error de tiempo de ejecución.

Ejemplos Los siguientes ejemplos muestran varias formas de buscar la posición de una subserie en una serie: MyString = "P1234XXOO1299XX00P1" Position = Index(MyString, 1, 2) * El código anterior devuelve el índice Position = Index(MyString, "XX", 2) * El código anterior devuelve el índice * (14). Position = Index(MyString, "xx", 2) * El código anterior devuelve 0, ya que Position = Index(MyString, "XX", 3) * El código anterior devuelve 0, ya que * tercera aparición de la subserie "XX"

del segundo carácter "1" (10). inicial de la segunda subserie "XX" no se produce la subserie "xx". no se puede encontrar la *.

Función InMat Recupera las dimensiones de una matriz o determina si una sentencia Dimension ha fallado debido a que la memoria es insuficiente. No está disponible en las expresiones.

Sintaxis InMat [(matriz)]

244

Guía del desarrollador de Server Job

matriz es el nombre de la matriz cuyas dimensiones desea recuperar.

Comentarios Si especifica una matriz, InMat devuelve las dimensiones de la matriz. Si no especifica una matriz, 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", → "MyRoutine") End

Función Int Devuelve la parte entera de una expresión numérica.

Sintaxis Int (expresión)

expresión es una expresión numérica. Después de la evaluación, la parte de fracción del valor se trunca y se devuelve la parte entera. Si la expresión es un valor nulo, se devuelve un nulo.

Ejemplo Este ejemplo muestra la parte entera de una expresión devuelta por la función Int: MyValue = 2.3 IntValue = Int(MyValue) IntValue = Int(-MyValue) IntValue = Int(MyValue / 10)

;* la respuesta es 2 ;* la respuesta es -2 ;* la respuesta es 0

Función IsNull Prueba si una variable contiene un valor nulo.

Sintaxis IsNull (variable)

variable es la variable que se prueba. Si variable contiene un valor nulo, se devuelve 1; de lo contrario, se devuelve 0.

Comentarios Esta es la única manera de probar si es un valor nulo, ya que el valor nulo no es igual a ningún valor, incluido él mismo.

Ejemplo Este ejemplo muestra cómo probar una expresión que se está estableciendo en el valor nulo:

Capítulo 7. Programación BASIC

245

MyVar = @Null ;* establece la variable en el valor nulo If IsNull(MyVar * 10) Then * Será true, ya que toda operación aritmética que incluya un valor nulo * da como resultado un valor nulo. End

Función Left Extrae una subserie del principio de una serie.

Sintaxis Left (serie, n)

serie es la serie que contiene la subserie. Si la serie es un valor nulo, se devuelve el valor nulo. n es el número de caracteres que se extraen del principio de la serie. Si n es un valor nulo, genera un error de tiempo de ejecución.

Ejemplos Estos ejemplos extraen los tres caracteres más a la izquierda de una serie: MyString = "ABCDEF" MySubStr = Left(MyString, 3) MySubStr = Left("AB", 3)

;* la respuesta es "ABC" ;* la respuesta es "AB"

Función Len Devuelve el número de caracteres de una serie.

Sintaxis Len (serie)

serie es la serie cuyos caracteres se cuentan. Se cuentan todos los caracteres, incluidos los espacios y los espacios en blanco finales. Si serie es un valor nulo, se devuelve 0.

Ejemplos Estos ejemplos determinan la longitud de una serie o de un número cuando se expresa como una serie: MyStr = "PORTLAND, OREGON" StrLen = Len(MyStr) ;* la respuesta es 16 NumLen = Len(12345.67) ;* la respuesta es 8 (observe ;* el separador decimal)

Función LenDP En la modalidad de soporte multilingüístico, devuelve la longitud de una serie en posiciones de visualización.

Sintaxis LenDP (serie [, nombrecorrelación ])

246

Guía del desarrollador de Server Job

serie es la serie que se va a medir. Los caracteres que no se pueden correlacionar en la serie se supone que tienen una longitud de visualización de 1. nombrecorrelación es el nombre de la correlación que define el juego de caracteres que se utiliza en la serie. Si se omite el nombrecorrelación, se utiliza la correlación de juego de caracteres predeterminada para el proyecto o el trabajo.

Comentarios Si el soporte multilingüístico no está habilitado, esta función funciona como la función Len y devuelve el número de caracteres de la serie.

Función Ln Calcula el logaritmo natural del valor de una expresión, empleando la base "e".

Sintaxis Ln (expresión)

expresión es la expresión numérica que se evalúa. Si la expresión es 0 o un valor negativo, se devuelve 0 y se emite un aviso. Si la expresión es un valor nulo, se devuelve un nulo.

Comentarios El valor de "e" es aproximadamente 2,71828.

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, "Log10") Ans = 0 ;* 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.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.dinámica. v La ubicación en que se debe insertar expresión en matriz.dinámica si no se ha encontrado. La búsqueda puede iniciarse en cualquier punto de matriz.dinámica.

Sintaxis LOCATE expresión IN matriz.dinámica [ < númcampo [ ,númvalor] > ] [,inicio] [BY sec] SETTING variable {THEN sentencias [ELSE sentencias] | ELSE sentencias}

Capítulo 7. Programación BASIC

247

El valor de expresión se evalúa como la serie que se buscará en matriz.dinámica. Si expresión o matriz.dinámica se evalúa como valor nulo, variable se establece en 0 y se ejecutan las sentencias ELSE. Si expresión y matriz.dinámica se evalúan como series vacías, variable se establece en 1 y se ejecutan las sentencias THEN. Los valores de númcampo, 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.dinámica. v El tipo de elemento que se busca. El valor de inicio se evalúa como un número que especifica el campo, valor o subvalor a partir del cual se debe iniciar la búsqueda. Las expresiones de delimitador especifican el nivel de búsqueda, e inicio especifica la posición inicial de la búsqueda. Si alguna expresión de delimitador o inicio se evalúa como valor nulo, la sentencia LOCATE falla y el programa termina con un mensaje de error de tiempo de ejecución. En variable se almacena el índice de expresión. El valor de variable devuelve un número de campo, valor o subvalor, según las expresiones de delimitador empleadas. 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, si se encuentra ese elemento. v Un índice que se puede utilizar en una función INSERT para crear un elemento nuevo con el valor especificado por expresión.

Comentarios Durante la búsqueda, los campos se procesan como campos de un solo valor aunque contengan marcas de valor o subvalor. Los valores se procesan como valores únicos, aunque contengan marcas de subvalor. La búsqueda se detiene cuando se da una de las condiciones siguientes: v Se encuentra un campo que contiene expresión. v Se llega al final de la matriz dinámica. v Se encuentra un campo superior o inferior, según se haya especificado en sec. Si los elementos de la búsqueda están ordenados en una de las secuencias ASCII ascendentes o descendentes que figuran a continuación, puede utilizar la expresión BY sec para finalizar la búsqueda. La búsqueda finaliza en la posición donde se debe insertar expresión para mantener la secuencia ASCII, en lugar de al final de la lista de elementos especificados. 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; indica las condiciones de terminación de la búsqueda. Si se utiliza una expresión seq y los elementos no se encuentran en la secuencia indicada por seq, es posible que no se encuentre un elemento con el valor de expresión. Si sec se evalúa como valor nulo, la sentencia falla y el programa termina.

248

Guía del desarrollador de Server Job

Las sentencias ELSE se ejecutan si no se encuentra expresión. El formato de la sentencia ELSE es el mismo que se utiliza en la sentencia IF...THEN. Si el soporte multilingüístico está habilitado, la sentencia LOCATE con una expresión BY sec utiliza el convenio de clasificación especificado por el entorno local actual.

Ejemplos Se muestra una marca de campo junto a F, se muestra una marca de valor junto a V y se muestra una marca de subvalor junto a S. Q=’X’:@SM:"$":@SM:’Y’:@VM:’Z’:@SM:4:@SM:2:@VM:’B’:@VM PRINT "Q= ":Q LOCATE "$" IN Q SETTING WHERE ELSE PRINT ’ERROR’ PRINT "WHERE= ",WHERE LOCATE "$" IN Q SETTING HERE ELSE PRINT ’ERROR’ PRINT "HERE= ", HERE NUMBERS=122:@FM:123:@FM:126:@FM:130:@FM PRINT "BEFORE INSERT, NUMBERS= ",NUMBERS NUM= 128 LOCATE NUM IN NUMBERS BY "AR" SETTING X ELSE NUMBERS = INSERT(NUMBERS,X,0,0,NUM) PRINT "AFTER INSERT, NUMBERS= ",NUMBERS END

Esta es la salida del programa: Q= XS$SYVZS4S2VBV ERROR WHERE= 5 HERE= 2 BEFORE INSERT, NUMBERS= 122F123F126F130FAFTER INSERT, NUMBERS=

122F128F123F126F130F

Sentencias Loop...Repeat Define un bucle de programa. No está disponible en las expresiones.

Sintaxis Loop [sentencias] [Continue | Exit] [While | Until condición Do] [sentencias] [Continue | Exit] Repeat

Loop define el inicio del bucle de programa. sentencias son las sentencias que se ejecutan en el bucle. Continue especifica que el bucle actual se interrumpe y se reinicia en este punto. Exit especifica que el programa abandona el bucle actual. While condición Do especifica que el bucle se repite siempre que condición sea true. Cuando condición es false, el bucle se detiene y la ejecución del programa continúa con la sentencia que figura tras la sentencia Repeat. Si condición es un valor nulo, se supone que es false.

Capítulo 7. Programación BASIC

249

Until condición Do especifica que el bucle se repite siempre que condición sea false. Cuando condición es true, el bucle se detiene y la ejecución del programa continúa con la sentencia que figura tras la sentencia Repeat. Si condición es un valor nulo, se supone que es false. Repeat define el fin del bucle.

Comentarios Puede utilizar varias cláusulas While y Until en un bucle Loop...Repeat. Puede anidar bucles Loop...Repeat. Si una sentencia Repeat no tiene ninguna sentencia Loop correspondiente, genera un error de compilador.

Ejemplo Este ejemplo muestra cómo pueden utilizarse las sentencias Loop...Repeat. La sentencia Loop...Repeat interior hace el bucle 10 veces, establece el valor del distintivo en false y sale prematuramente utilizando la sentencia Exit. El bucle exterior sale inmediatamente después de comprobar el valor del distintivo. Check = @True Counter = 0 ;* inicializa variables Loop ;* bucle exterior Loop While Counter < 20 ;* bucle interior Counter += 1 ;* contador de incrementos If Counter = 10 Then ;* si la condición es True... Check = @False ;* establece el valor del distintivo en False... Exit ;* y sale del bucle interior. End Repeat Until Not(Check) ;* sale del bucle exterior cuando la comprobación se establece en False Repeat

Sentencia Mat Asigna valores a los elementos de una matriz. No está disponible en las expresiones.

Sintaxis Mat matriz = expresión

matriz es una matriz denominada y dimensionada a la que desea asignar valores. expresión puede ser un valor único o el nombre de una matriz dimensionada. Si expresión es un valor único, el valor se asigna a todos los elementos de la matriz. Si es una matriz, los valores se asignan a la matriz, elemento a elemento, independientemente de si coinciden las dimensiones de las dos matrices. Los valores excedentes se descartan; los elementos excedentes permanecen sin asignar.

Comentarios No puede utilizar la sentencia Mat para asignar valores a elementos específicos de una matriz.

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:

250

Guía del desarrollador de Server Job

Dim Array1(4) Dim Array2(2,2) For n = 1 To 4 Array1(n) = n ;* Array1(1) = 1, Array1(2) = 2, etc. Next n Mat Array2 = Mat Array1 * Los resultados son: Array2(1,1) = 1, Array2(1,2) = 2 * Array2(2,1) = 3, Array2(2,2) = 4

Función MatchField Busca en una serie y devuelve la parte de la misma que coincide con un elemento de patrón.

Sintaxis MatchField (serie, patrón, elemento)

serie es la serie que en la que se realiza la búsqueda. Si la serie no coincide con ningún patrón o es un valor nulo, se devuelve una serie vacía. patrón es uno o varios elementos de patrón que describen la serie, y puede ser cualquiera de los códigos de patrón utilizados por el operador Match. Si el patrón es un valor nulo, se devuelve una serie vacía. elemento es un número, n, que especifica que se devuelve la parte de la serie que coincide con el enésimo elemento del patrón. Si el elemento es un valor nulo, genera un error de tiempo de ejecución.

Comentarios patrón debe contener elementos que describen todos los caracteres de la serie. Por ejemplo, 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", 1)

La siguiente sentencia describe la serie completa y devuelve un valor "XYZ", que es 3X, la subserie que coincide con el primer elemento del patrón: MatchField ("XYZ123AB", "3X3N...", 1)

Ejemplos Q se evalúa en BBB: Q = MatchField("AA123BBB9","2A0N3A0N",3)

zip se evalúa en 01234: addr = ’20 GREEN ST. NATICK, MA.,01234’ zip = MatchField(ADDR,"0N0X5N",3)

col se evalúa en BLUE: inv = ’PART12345 BLUE AU’ col = MatchField(INV,"10X4A3X",2)

En los ejemplos siguientes, la serie no coincide con el patrón y se devuelve una serie vacía: XYZ=MatchField(’ABCDE1234’,"2N3A4N",1) XYZ=ABC=MatchField(’1234AB’,"4N1A",2) ABC=

Capítulo 7. Programación BASIC

251

Función Mod Devuelve el resto de una operación de división.

Sintaxis Mod (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 La función Mod calcula el resto mediante la fórmula: Mod (X, Y) = X - (Int (X / Y) * Y)

Utilice la función Div para devolver el resultado de una operación de división.

Ejemplos Los siguientes ejemplos muestran el uso de la función Mod: Remainder = Mod(100, 25) el resultado es 0 Remainder = Mod(100, 30)

;* ;* el resultado es 10

Sentencia Nap Detiene un programa el número de milisegundos especificado. No está disponible en las expresiones.

Sintaxis Nap [milisegundos]

milisegundos es el número de milisegundos que se detiene. El valor predeterminado es 1. Si milisegundos es un valor nulo, la sentencia Nap se omite.

Comentarios No utilice la sentencia Nap en una transformación, 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, con un breve intervalo de espera entre los sondeos: If NumTimesWaited < RepeatCount Then NumTimesWaited += 1 Nap 500 ;* esperar 500 milisegundos = 1/2 segundo End

252

Guía del desarrollador de Server Job

Función Neg Devuelve el inverso de un número.

Sintaxis Neg (número)

número es el número que desea invertir.

Ejemplo El siguiente ejemplo muestra un uso de la función Neg, equivalente al operador unario menos: MyNum = 10 * La siguiente línea puede ser más clara que la construcción * equivalente, que es: -(MyNum + 75) / 100 MyExpr = Neg(MyNum + 75) / 100

Función Not Invierte el resultado lógico de una expresión.

Sintaxis Not (expresión)

expresión es la expresión cuyo resultado se invierte. Si la expresión es true, se devuelve 0; si es false, se devuelve 1. Si la expresión es un valor nulo, se devuelve un nulo.

Comentarios La expresión es false si se evalúa en 0 o si es una serie vacía. Para los demás valores (excepto el valor nulo), es true.

Ejemplos A continuació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 - Value2);* Booleano = 1, es decir, True Boolean = Not(Value1 + Value2);* Booleano = 0, es decir, False Boolean = Not(Value1 = Value2);* Booleano = 0, 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. Por ejemplo, puede emplearla con la cláusula Else si no desea que se efectúe ninguna operación cuando se ejecute la cláusula Else. Capítulo 7. Programación BASIC

253

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’ * ... realizar alguna acción para el primer caso. Case Arg1 = ’B’ * ... realizar alguna acción para el segundo caso. Case @True * ... en los demás casos, no realizar ninguna acción. Null End Case

Función Num Determina si una serie es numérica. Si el soporte multilingüístico está habilitado, el resultado de esta función depende del valor de entorno local actual del convenio Numeric.

Sintaxis Num (expresión)

expresión es la expresión que se prueba. Si la expresión es un número, una serie numérica o una serie vacía, se devuelve un valor 1. Si es un valor nulo, se devuelve un valor nulo; de lo contrario, se devuelve 0.

Comentarios Las series que contienen puntos utilizados como separadores decimales se consideran numéricas. No obstante, las series que contienen otros caracteres utilizados para formatear cantidades numéricas o monetarias como, por ejemplo, comas, signos de dólar, etc., no se consideran numéricas.

Ejemplos Los siguientes ejemplos muestran la función Num que se utiliza para determinar si una variable contiene un número: Arg1 = "123.45 Boolean = Num(Arg1) Arg2 = "Section 4" Boolean = Num(Arg2) Arg3 = " " Boolean = Num(Arg3) Arg4 = "" Boolean = Num(Arg4)

;* devuelve 1, es decir, True ;* devuelve 0, es decir, False ;* False (el espacio no es un carácter numérico) ;* True (la serie vacía es numérica)

Función Oconv Convierte una expresión a un formato de salida.

Sintaxis Oconv (expresión, conversión [@VM conversión] ...)

expresión es una serie almacenada en formato interno que desea convertir a un formato de salida. Si la expresión es un valor nulo, se devuelve un nulo.

254

Guía del desarrollador de Server Job

conversión son uno o varios códigos de conversión que especifican cómo se formatea la serie. Separe los distintos códigos con una marca de valor. Si conversión es un valor nulo, genera un error de tiempo de ejecución.

Comentarios Si especifica varios códigos, se aplican de izquierda a derecha. El primer código se aplica a la expresión, el siguiente código se aplica al resultado de la primera conversión, y así sucesivamente. La función Status utiliza los siguientes valores para indicar el resultado de una función Oconv: 0

La conversión ha sido satisfactoria.

1

Se ha pasado una serie no válida a la función Oconv. O bien se ha devuelto la serie original o, si la serie era un valor nulo, se ha devuelto un valor nulo.

2

La conversión no era válida.

Ejemplos Conversiones ASCII Los siguientes ejemplos muestran el efecto de algunos códigos de conversión MY (ASCII). Expresión de conversión Valor externo X = Oconv("41424344", "MY") X = "ABCD" X = Oconv("30313233", "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, "D") X = "31 DEC 1967" X = Oconv(10740, "D2") X = "27 MAY 97" X = Oconv(10740, "D2/") X = "05/27/97" X = Oconv(10740, "D/E") X = "27/05/1997" X = Oconv(10740, "D-YJ") X = "1997-147" X = Oconv(10740, "D2*JY") X = "147*97" X = Oconv(10740, "D YMD") X = "1997 5 27" X = Oconv(10740, "D MY[A,2]") X = "MAY 97" Capítulo 7. Programación BASIC

255

X = Oconv(10740, "D DMY[,A3,2]") X = "27 MAY 97" X = Oconv(10740, "D/MDY[Z,Z,2]") X = "5/27/97" X = Oconv(10740, "D DMY[,A,]") X = "27 MAY 1997" X = Oconv(10740, "DYMD[2,2,2]") X = "97 05 27" X = Oconv(10740, "DQ") X = "2" X = Oconv(10740, "DMA") X = "MAY" X = Oconv(10740, "DW") X = "2" X = Oconv(10740, "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.05.1997", "G1.2") X = "05.1997" X = Oconv("27.05.1997", "G.2") X = "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 externo X = Oconv("QWERTYUIOP", "L0") X = 10 X = Oconv("QWERTYUIOP", "L7") X = "" X = Oconv("QWERTYU", "L7") X = "QWERTYU" X = Oconv("QWERTYUOP", "L3,5") X = "" X = Oconv("QWER", "L3,5") X = "QWER"

Conversiones de caracteres enmascarados Los siguientes ejemplos muestran el efecto de algunos códigos de conversión de caracteres enmascarados (MCA, MC/A, MCD, MCL, MCN, MC/N, MCP, MCT, MCU y MCX):

256

Guía del desarrollador de Server Job

Expresión de conversión Valor externo X = Oconv("John Smith 1-234", "MCA") X = "JohnSmith" X = Oconv("John Smith 1-234", "MC/A") X = " 1-234" X = Oconv("1234", "MCD") X = "4D2" X = Oconv("1234", "MCDX") X = "4D2" X = Oconv("John Smith 1-234", "MCL") X = "john smith 1-234" X = Oconv("John Smith 1-234", "MCN") X = "1234" X = Oconv("John Smith 1-234", "MC/N") X = "John Smith -" X = Oconv("John^CSmith^X1-234", "MCP") X = "John.Smith.1-234" X = Oconv("john SMITH 1-234", "MCT") X = "John Smith 1-234" X = Oconv("john smith 1-234", "MCU") X = "JOHN SMITH 1-234" X = Oconv("4D2", "MCX") X = "1234" X = Oconv("4D2", "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, "MD2") X = "9876.54" X = Oconv(987654, "MD0") X = "987654" X = Oconv(123456789, "MD2$,") X = "$1,234,567.89" X = Oconv(987654, "MD24$") X = "$98.77" X = Oconv(123456789, "MD2[’f’,’.’,’,’]") X = "f1.234.567,89" X = Oconv(123456789, "MD2,[’’,’’,’’,’SEK’]") X = "1,234,567.89SEK"

Capítulo 7. Programación BASIC

257

X = Oconv(-123456789, "MD2 "123456"

LETTERS

Serie

Serie

Built-in/String

Devuelve una serie de la que se han eliminado todos los caracteres excepto las letras, por ejemplo: LETTERS("123abc456") => "abc"

© Copyright IBM Corp. 1997, 2010

309

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

StringDecode

Véase la descripción

Serie

sdk/String

Carga una matriz a efectos de búsqueda. La matriz contiene pares de nombre=valor. En la primera llamada, la matriz se guarda; en todas las llamadas se busca el nombre proporcionado en la matriz y se devuelve el valor correspondiente. Toma como argumentos una clave de búsqueda y una matriz, y devuelve una serie.

StringIsSpace

Serie

Serie

sdk/String

Devuelve 1 si la serie sólo consta de uno o más espacios.

StringLeftJust

Serie

Serie

sdk/String

Elimina los espacios iniciales de la entrada y devuelve una serie con la misma longitud que la entrada. No reduce los espacios entre caracteres que no son espacios en blanco.

StringRightJust

Serie

Serie

sdk/String

Elimina los espacios finales de la entrada y devuelve una serie con la misma longitud que la entrada. No reduce los espacios entre caracteres que no son espacios en blanco.

StringUpperFirst

Serie

Serie

sdk/String

Devuelve la serie de entrada con mayúsculas iniciales en cada palabra.

Transformaciones de fecha Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MONTH.FIRST

MONTH.TAG

Fecha

Built-in/Dates

Devuelve una fecha interna numérica correspondiente al primer día de un mes con el formato MONTH.TAG (AAAA-MM), por ejemplo: MONTH.FIRST("1993-02") => 9164 donde 9164 es la representación interna del 1 de febrero de 1993.

310

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MONTH.LAST

MONTH.TAG

Fecha

Built-in/Dates

Devuelve una fecha interna numérica correspondiente al último día de un mes con el formato MONTH.TAG (AAAA-MM), por ejemplo: MONTH.LAST("1993-02") => 9191 donde 9191 es la representación interna del 28 de febrero de 1993.

QUARTER.FIRST

QUARTER.TAG

Fecha

Built-in/Dates

Devuelve una fecha interna numérica correspondiente al primer día de un trimestre con el formato QUARTER.TAG (AAAAQn), por ejemplo: QUARTER.FIRST ("1993Q2") => 9133 donde 9133 es la representación interna del 1 de enero de 1993.

QUARTER.LAST

QUARTER.TAG

Fecha

Built-in/Dates

Devuelve una fecha interna numérica correspondiente al último día de un trimestre con el formato QUARTER.TAG (AAAAQn), por ejemplo: QUARTER.LAST("1993Q2") => 9222 donde 9222 es la representación interna del 31 de marzo de 1993.

TIMESTAMP. TO.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, por ejemplo: TIMESTAMP.TO.DATE("199612-05 13:46:21") => "10567"

TAG.TO.DATE

DATE.TAG

Fecha

Built-in/Dates

Convierte una serie con el formato AAAA-MM-DD en una fecha interna numérica, por ejemplo: TAG.TO.DATE("1993-02-14") => 9177

Capítulo 8. Transformaciones y rutinas incorporadas

311

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

WEEK.FIRST

WEEK.TAG

Fecha

Built-in/Dates

Devuelve una fecha interna numérica correspondiente al primer día (Lunes) de una semana con el formato WEEK.TAG (AAAAWnn), por ejemplo: WEEK.FIRST("1993W06") => 9171 donde 9171 es la representación interna del 8 de febrero de 1993.

WEEK.LAST

WEEK.TAG

Fecha

Built-in/Dates

Devuelve una fecha interna numérica correspondiente al último día (Domingo) de una semana con el formato WEEK.TAG (AAAAWnn), por ejemplo: WEEK.LAST("1993W06") => 9177 donde 9177 es la representación interna del 14 de febrero de 1993.

YEAR.FIRST

YEAR.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 (AAAA), por ejemplo: YEAR.FIRST("1993") => 9133 donde 9133 es la representación interna del 1 de enero de 1993.

YEAR.LAST

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.TAG (AAAA), por ejemplo: YEAR.LAST("1993") => 9497 donde 9497 es la representación interna del 31 de diciembre de 1993.

312

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

TIMESTAMP. TO.TIME

Indicación de fecha y hora

Hora

Built-in/Dates

Convierte el formato de TIMESTAMP (AAAA-MM-DD HH:MM:SS) en un formato de hora interna. Por ejemplo: TIMESTAMP.TO.TIME("199612-05 13:46:21") => "49581" donde 49581 es la representación interna del 5 de diciembre de 1996, 1:46 p.m. y 21 segundos.

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). Por ejemplo: TIMESTAMP("10567") => "1996-12- 05 00:00:00" donde 10567 es la representación interna del 5 de diciembre de 1996.

DATE.TAG

Fecha

DATE.TAG

Built-in/Dates

Convierte una fecha interna numérica en una serie con el formato DATE.TAG (AAAA-MM-DD), por ejemplo: DATE.TAG(9177) => "1993-02-14"

TAG.TO.WEEK

DATE.TAG

WEEK.TAG

Built-in/Dates

Convierte una serie con el formato DATE.TAG (AAAA-MM-DD) al formato WEEK.TAG (AAAAWnn), por ejemplo: TAG.TO.WEEK("1993-02-14") => "1993W06"

WEEK.TAG

Fecha

WEEK.TAG

Built-in/Dates

Convierte una fecha con formato de fecha interna en una serie WEEK.TAG (AAAAWnn), por ejemplo: WEEK.TAG(9177) => "1993W06"

MONTH.TAG

Fecha

MONTH.TAG

Built-in/Dates

Convierte una fecha interna numérica en una serie con el formato MONTH.TAG (AAAA-MM), por ejemplo: MONTH.TAG(9177) => "1993-02"

Capítulo 8. Transformaciones y rutinas incorporadas

313

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

TAG.TO.MONTH

DATE. TAG

MONTH.TAG

Built-in/Dates

Convierte una serie con el formato DATE.TAG (AAAA-MM-DD) al formato MONTH.TAG (AAAA-MM), por ejemplo: TAG.TO.MONTH("1993-02014") => "1993-02"

QUARTER.TAG

Fecha

QUARTER.TAG

Built-in/Dates

Convierte una fecha interna numérica en una serie con el formato QUARTER.TAG (AAAAQn), por ejemplo: QUARTER.TAG(9177) => "1993Q2"

TAG.TO. QUARTER

DATE.TAG

QUARTER.TAG

Built-in/Dates

Convierte una serie con el formato DATE.TAG (AAAA-MM-DD) al formato QUARTER.TAG (AAAAQn), por ejemplo: TAG.TO.QUARTER("1993-0214") => "1993Q2"

MONTH.TO. QUARTER

MONTH.TAG

QUARTER.TAG

Built-in/Dates

Convierte una serie con el formato MONTH.TAG (AAAA-MM) al formato QUARTER.TAG (AAAAQn), por ejemplo: MONTH.TO.QUARTER("199302") => "1993Q1"

YEAR.TAG

Fecha

YEAR.TAG

Built-in/Dates

Convierte una fecha con formato de fecha interna al formato YEAR.TAG (AAAA), por ejemplo: YEAR.TAG(9177) => "1993"

TAG.TO.YEAR

DATE.TAG

YEAR.TAG

Built-in/Dates

Convierte una serie con el formato DATE.TAG (AAAA-MM-DD) al formato YEAR.TAG (AAAA), por ejemplo: TAG.TO.YEAR("1993-02-14") => "1993"

MONTH.TO.YEAR

MONTH.TAG

YEAR.TAG

Built-in/Dates

Convierte una serie con el formato MONTH.TAG (AAAA-MM) al formato YEAR.TAG (AAAA), por ejemplo: MONTH.TO.YEAR("1993-02") => "1993"

314

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

QUARTER.TO. YEAR

QUARTER.TAG

YEAR.TAG

Built-in/Dates

Convierte una serie con el formato QUARTER.TAG (AAAAQn) al formato YEAR.TAG (AAAA), por ejemplo: QUARTER.TO.YEAR("1993Q2") => "1993"

DateCurrent DateTime

-

Serie

sdk/date

Devuelve la fecha/hora actual con el formato AAAA-MM-DD HH:MM:SS.SSS.

DateCurrent GMTTime

-

Serie

sdk/date

Devuelve la fecha/hora actual en GMT con el formato AAAA-MM-DD HH:MM:SS.SSS.

DateCurrent SwatchTime

-

Número

sdk/date

Devuelve la hora de Internet o Swatch actual.

DateDaysSince 1900To TimeStamp

-

Serie

sdk/date

Convierte los días desde 1900 al formato AAAAMMDD HH:MM:SS:SSS.

DateDaysSince 1970To TimeStamp

-

Serie

sdk/date

Convierte los días desde 1970 al formato AAAAMMDD HH:MM:SS:SSS.

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, 4/19/1999, 4.19.1999, 4/19/99, 4.19.99) v Fechas de mes alfa (por ejemplo, Abr 08 1999, Abr 08 99) v Fechas no delimitadas con formato Año Mes Día (por ejemplo, 19990419, 990419) v Fechas del calendario juliano (por ejemplo, 99126, 1999126) DateGenericGetDay

Serie

Serie

sdk/date/ generic

Devuelve el valor Día de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateGeneric GetMonth

Serie

Serie

sdk/date/ generic

Devuelve el valor Mes de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateGenericGetTime Serie

Serie

sdk/date/ generic

Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateGeneric GetTimeHour

Serie

Serie

sdk/date/ generic

Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateGenericGetTime Serie Minute

Serie

sdk/date/ generic

Devuelve el valor Minutos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

Capítulo 8. Transformaciones y rutinas incorporadas

315

Transformación

Tipo de salida

Carpeta

Descripción

DateGenericGetTime Serie Second

Serie

sdk/date/ generic

Devuelve el valor Segundos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateGenericGetYear

Serie

Serie

sdk/date/ generic

Devuelve el valor Año de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateGeneric ToInfCLI

Serie

Serie

sdk/date/ generic

Devuelve una fecha de entrada adecuada para la carga utilizando Informix CLI.

DateGeneric ToInfCLIWithTime

Serie

Serie

sdk/date/ generic

Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI con HH:MM:SS:SSS al final.

DateGeneric ToInternal

Serie

Fecha

sdk/date/ generic

Devuelve la fecha de entrada con un formato interno de IBM InfoSphere DataStage.

DateGeneric ToInternalWithTime

Serie

Fecha

sdk/date/ generic

Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage con HH:MM:SS.SSS al final.

DateGeneric ToODBC

Serie

Serie

sdk/date/ generic

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC.

DateGeneric ToODBCWithTime

Serie

Serie

sdk/date/ generic

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC con HH:MM:SS.SSS al final.

DateGeneric ToOraOCI

Serie

Serie

sdk/date/ generic

Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI.

DateGeneric ToOraOCIWithTime

Serie

Serie

sdk/date/ generic

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI con HH:MM:SS al final.

DateGeneric ToSybaseOC

Serie

Serie

sdk/date/ generic

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client.

DateGeneric ToSybaseOC WithTime

Serie

Serie

sdk/date/ generic

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client con HH:MM:SS.SSS al final.

316

Tipo de entrada

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

DataGeneric ToTimeStamp

Serie

Serie

sdk/date/ generic

Devuelve la fecha de entrada con un formato AAAAMMDD HH:MM:SS:SSS.

DateGeneric DateDiff

Serie, Serie

Serie

sdk/date/ generic

Compara dos fechas y devuelve el número de días de diferencia.

DateGeneric DaysSince1900

Serie

Serie

sdk/date/ generic

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.

DateGeneric DaysSince1970

Serie

Serie

sdk/date/ generic

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.

DateGeneric DaysSinceToday

Serie

Serie

sdk/date/ generic

Compara la fecha de entrada con hoy a las 12 de la noche y devuelve el número de días de diferencia.

DateGenericIsDate

Serie

Serie

sdk/date/ generic

Devuelve 1 si la entrada es una fecha válida; de lo contrario, devuelve 0.

Las siguientes transformaciones aceptan series de fecha de entrada delimitada con el formato [AA]AA MM DD utilizando un delimitador cualquiera. Las series también pueden contener una entrada de hora con el formato HH:MM:SS:SSS, HH:MM:SS o HH:MM. DateYearFirst GetDay

Serie

Serie

sdk/date/ YearFirst

Devuelve el valor Día de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateYearFirst GetMonth

Serie

Serie

sdk/date/ YearFirst

Devuelve el valor Mes de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateYearFirst GetTime

Serie

Serie

sdk/date/ YearFirst

Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateYearFirst GetTimeHour

Serie

Serie

sdk/date/ YearFirst

Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateYearFirst GetTimeMinute

Serie

Serie

sdk/date/ YearFirst

Devuelve el valor Minutos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateYearFirst GetTimeSecond

Serie

Serie

sdk/date/ YearFirst

Devuelve el valor Segundos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

DateYearFirst GetYear

Serie

Serie

sdk/date/ YearFirst

Devuelve el valor Año de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.

Capítulo 8. Transformaciones y rutinas incorporadas

317

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

DateYearFirst ToInfCLI

Serie

Serie

sdk/date/ YearFirst

Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI.

DateYearFirst ToInfCLIWithTime

Serie

Serie

sdk/date/ YearFirst

Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI con HH:MM:SS.SSS al final.

DateYearFirst ToInternal

Serie

Fecha

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage.

DateYearFirst ToInternalWithTime

Serie

Fecha

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage con HH:MM:SS.SSS al final.

DateYearFirst ToODBC

Serie

Serie

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC.

DateYearFirst ToODBCWithTime

Serie

Serie

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC con HH:MM:SS.SSS al final.

DateYearFirst ToOraOCI

Serie

Serie

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI.

DateYearFirst ToOraOCIWithTime

Serie

Serie

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI con HH:MM:SS al final.

DateYearFirst ToSybaseOC

Serie

Serie

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client.

DateYearFirst ToSybaseOC WithTime

Serie

Serie

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client con HH:MM:SS.SSS al final.

DataYearFirst ToTimeStamp

Serie

Serie

sdk/date/ YearFirst

Devuelve la fecha de entrada con un formato AAAAMMDD HH:MM.SS:SSS.

DateYearFirstDiff

Serie, Serie

Serie

sdk/date/ YearFirst

Compara dos fechas y devuelve el número de días de diferencia.

DateYearFirst DaysSince1900

Serie

Serie

sdk/date/ YearFirst

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.

318

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

DateYearFirst DaysSince1970

Serie

Serie

sdk/date/ YearFirst

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.

DateYearFirst DaysSinceToday

Serie

Serie

sdk/date/ YearFirst

Compara la fecha de entrada con hoy a las 12 de la noche y devuelve el número de días de diferencia.

DateYearFirstIsDate

Serie

Serie

sdk/date/ YearFirst

Devuelve 1 si la entrada es una fecha válida; de lo contrario, devuelve 0.

Transformaciones de tipo de datos Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

DataTypeAsciiPic9

Serie

Número

sdk/Data Type

Convierte ASCII PIC 9(n) en un entero.

DataTypeAsciiPic9V9

Serie

Número

sdk/Data Type

Convierte ASCII 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

Convierte ASCII PIC 9(n) con dos supuestos lugares decimales en un número con dos lugares decimales reales.

DataTypeAscii Pic9V999

Serie

Número

sdk/Data Type

Convierte ASCII PIC 9(n) con tres supuestos lugares decimales en un número con tres lugares decimales reales.

DataTypeAscii Pic9V9999

Serie

Número

sdk/Data Type

Convierte ASCII PIC 9(n) con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales.

DataTypeAscii toEbcdic

Serie

Serie

sdk/Data Type

Convierte una serie ASCII en EBCDIC.

DataTypeEbcdicPic9

Serie

Número

sdk/Data Type

Convierte EBCDIC PIC 9(n) en un entero.

DataTypeEbcdic Pic9V9

Serie

Número

sdk/Data Type

Convierte EBCDIC PIC 9(n) con un supuesto lugar decimal en un número con un lugar decimal real.

Capítulo 8. Transformaciones y rutinas incorporadas

319

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

DataTypeEbcdic Pic9V99

Serie

Número

sdk/Data Type

Convierte EBCDIC PIC 9(n) con dos supuestos lugares decimales en un número con dos lugares decimales reales.

DataTypeEbcdic Pic9V999

Serie

Número

sdk/Data Type

Convierte EBCDIC PIC 9(n) con tres supuestos lugares decimales en un número con tres lugares decimales reales.

DataTypeEbcdic Pic9V9999

Serie

Número

sdk/Data Type

Convierte EBCDIC PIC 9(n) con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales.

DataTypeEbcdic toAscii

Serie

Serie

sdk/Data Type

Convierte una serie EBCDIC en ASCII.

DataTypePic9

Serie

Número

sdk/Data Type

Convierte ASCII o EBCDIC PIC 9(n) en un entero.

DataTypePic9V9

Serie

Número

sdk/Data Type

Convierte ASCII o EBCDIC PIC 9(n) con un supuesto lugar decimal en un número con un lugar decimal real.

DataTypePic9V99

Serie

Número

sdk/Data Type

Convierte ASCII o EBCDIC PIC 9(n) con dos supuestos lugares decimales en un número con dos lugares decimales reales.

DataTypePic9V999

Serie

Número

sdk/Data Type

Convierte ASCII o EBCDIC PIC 9(n) con tres supuestos lugares decimales en un número con tres lugares decimales reales.

DataTypePic9 V9999

Serie

Número

sdk/Data Type

Convierte ASCII o EBCDIC PIC 9(n) con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales.

DataTypePicComp

Serie

Número

sdk/Data Type

Convierte COBOL PIC COMP en un entero.

320

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

DataTypePicComp1

Serie

Número

sdk/Data Type

Convierte COBOL PIC COMP-1 en un número real.

DataTypePicComp2

Serie

Número

sdk/Data Type

Convierte COBOL PIC COMP-2 en un número real.

DataTypePicComp3

Serie

Número

sdk/Data Type

Convierte un decimal empaquetado con signo COBOL PIC COMP-3 en un entero.

DataTypePicComp3 Sin signo

Serie

Número

sdk/Data Type

Convierte un decimal empaquetado sin signo COBOL PIC COMP-3 en un entero.

DataTypePicComp3 UnsignedFast

Serie

Número

sdk/Data Type

Convierte un decimal empaquetado sin signo COBOL PIC COMP-3 en un entero.

DataTypePicComp3 V9

Serie

Número

sdk/Data Type

Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con un supuesto lugar decimal en un número con un lugar decimal real.

DataTypePicComp3 V99

Serie

Número

sdk/Data Type

Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con dos supuestos lugares decimales en un número con dos lugares decimales reales.

DataTypePicComp3 V999

Serie

Número

sdk/Data Type

Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con tres supuestos lugares decimales en un número con tres lugares decimales reales.

DataTypePicComp3 V9999

Serie

Número

sdk/Data Type

Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con cuatro supuestos lugares decimales en un número con cuatro lugares decimales reales.

Capítulo 8. Transformaciones y rutinas incorporadas

321

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

DataTypePicComp Sin signo

Serie

Número

sdk/Data Type

Convierte un binario sin signo en un entero.

DataTypePicS9

Serie

Número

sdk/Data Type

Convierte un tipo de datos COBOL PIC S9(n) decimal derecho dividido en zonas en formato ASCII o EBCDIC en un entero.

Transformaciones de gestión de claves Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

KeyMgtGetMaxKey

Serie, Serie, Serie, Serie

Serie

sdk/KeyMgt

Utiliza una columna, una tabla, una etapa ODBC y un número del 1 al 99 como descriptor de contexto exclusivo (en el trabajo). Devuelve el valor máximo de la columna especificada. Se utiliza normalmente para la gestión de claves.

KeyMgtGetNextValue

Serie literal

Serie

sdk/KeyMgt

Genera números secuenciales.

KeyMgtGetNextValue Concurrent

Serie literal

Serie

sdk/KeyMgt

Genera números secuenciales en un entorno simultáneo.

Transformaciones de medidas: área Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureAreaAcresToSqFeet

Serie

Serie

sdk/Measure/ Area

Convierte acres en pies cuadrados.

MeasureAreaAcresToSqMeters

Serie

Serie

sdk/Measure/ Area

Convierte acres en metros cuadrados.

MeasureAreaSqFeetToAcres

Serie

Serie

sdk/Measure/ Area

Convierte pies cuadrados en acres.

MeasureAreaSqFeetToSqInches

Serie

Serie

sdk/Measure/ Area

Convierte pies cuadrados en pulgadas cuadradas.

MeasureAreaSqFeetToSqMeters

Serie

Serie

sdk/Measure/ Area

Convierte pies cuadrados en metros cuadrados.

MeasureAreaSqFeetToSqMiles

Serie

Serie

sdk/Measure/ Area

Convierte pies cuadrados en millas cuadradas.

MeasureAreaSqFeetToSqYards

Serie

Serie

sdk/Measure/ Area

Convierte pies cuadrados en yardas cuadradas.

322

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureAreaSqInchesToSqFeet

Serie

Serie

sdk/Measure/ Area

Convierte pulgadas cuadradas en pies cuadrados.

MeasureAreaSqInchesToSqMeters

Serie

Serie

sdk/Measure/ Area

Convierte pulgadas cuadradas en metros cuadrados.

MeasureAreaSqMeterToAcres

Serie

Serie

sdk/Measure/ Area

Convierte metros cuadrados en acres.

MeasureAreaSqMetersToSqFeet

Serie

Serie

sdk/Measure/ Area

Convierte metros cuadrados en pies cuadrados.

MeasureAreaSqMetersToSqInches

Serie

Serie

sdk/Measure/ Area

Convierte metros cuadrados en pulgadas cuadradas.

MeasureAreaSqMetersToSqMiles

Serie

Serie

sdk/Measure/ Area

Convierte metros cuadrados en millas cuadradas.

MeasureAreaSqMetersToSqYards

Serie

Serie

sdk/Measure/ Area

Convierte metros cuadrados en yardas cuadradas.

MeasureAreaSqMilesToSqFeet

Serie

Serie

sdk/Measure/ Area

Convierte millas cuadradas en pies cuadrados.

MeasureAreaSqMilesToSqMeters

Serie

Serie

sdk/Measure/ Area

Convierte millas cuadradas en metros cuadrados.

MeasureAreaSqYardsToSqFeet

Serie

Serie

sdk/Measure/ Area

Convierte yardas cuadradas en pies cuadrados.

MeasureAreaSqYardsToSqMeters

Serie

Serie

sdk/Measure/ Area

Convierte yardas cuadradas en metros cuadrados.

Transformaciones de medidas: distancia Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureDistance FeetToInches

Serie

Serie

sdk/Measure/ Distance

Convierte pies en pulgadas.

MeasureDistance FeetToMeters

Serie

Serie

sdk/Measure/ Distance

Convierte pies en metros.

MeasureDistance FeetToMiles

Serie

Serie

sdk/Measure/ Distance

Convierte pies en millas.

MeasureDistance FeetToYards

Serie

Serie

sdk/Measure/ Distance

Convierte pies en yardas.

MeasureDistance InchesToFeet

Serie

Serie

sdk/Measure/ Distance

Convierte pulgadas en pies.

MeasureDistance InchesToMeters

Serie

Serie

sdk/Measure/ Distance

Convierte pulgadas en metros.

MeasureDistance InchesToMiles

Serie

Serie

sdk/Measure/ Distance

Convierte pulgadas en millas.

Capítulo 8. Transformaciones y rutinas incorporadas

323

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureDistance InchesToYards

Serie

Serie

sdk/Measure/ Distance

Convierte pulgadas en yardas.

MeasureDistance MetersToFeet

Serie

Serie

sdk/Measure/ Distance

Convierte metros en pies.

MeasureDistance MetersToInches

Serie

Serie

sdk/Measure/ Distance

Convierte metros en pulgadas.

MeasureDistance MetersToMile

Serie

Serie

sdk/Measure/ Distance

Convierte metros en millas.

MeasureDistance MetersToYard

Serie

Serie

sdk/Measure/ Distance

Convierte metros en yardas.

MeasureDistance MilesToFeet

Serie

Serie

sdk/Measure/ Distance

Convierte millas en pies.

MeasureDistance MilesToInches

Serie

Serie

sdk/Measure/ Distance

Convierte millas en pulgadas.

MeasureDistance MilesToMeters

Serie

Serie

sdk/Measure/ Distance

Convierte millas en metros.

MeasureDistance MilesToYards

Serie

Serie

sdk/Measure/ Distance

Convierte millas en yardas.

MeasureDistance YardsToFeet

Serie

Serie

sdk/Measure/ Distance

Convierte yardas en pies.

MeasureDistance YardsToInches

Serie

Serie

sdk/Measure/ Distance

Convierte yardas en pulgadas.

MeasureDistance YardsToMeters

Serie

Serie

sdk/Measure/ Distance

Convierte yardas en metros.

MeasureDistance YardsToMiles

Serie

Serie

sdk/Measure/ Distance

Convierte yardas en millas.

Transformaciones de medidas: temperatura Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureTemp CelsiusToFahrenheit

Serie

Serie

sdk/Measure/ Temp

Convierte grados centígrados en grados fahrenheit.

MeasureTemp FahrenheitToCelsius

Serie

Serie

sdk/Measure/ Temp

Convierte grados fahrenheit en grados centígrados.

Transformaciones de medidas: tiempo Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureTime DaysToSeconds

Serie

Serie

sdk/Measure/Time

Convierte días en segundos.

MeasureTime HoursToSeconds

Serie

Serie

sdk/Measure/Time

Convierte horas en segundos.

324

Guía del desarrollador de Server Job

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureTime IsLeapYear

Serie

Serie

sdk/Measure/Time

Devuelve 1 si la entrada de año de 4 dígitos es un año bisiesto; de lo contrario, devuelve 0.

MeasureTime MinutesTo Seconds

Serie

Serie

sdk/Measure/Time

Convierte minutos en segundos.

MeasureTime SecondsToDays

Serie

Serie

sdk/Measure/Time

Convierte segundos en días.

MeasureTime SecondsToHours

Serie

Serie

sdk/Measure/Time

Convierte segundos en horas.

MeasureTimeSeconds ToMinutes

Serie

Serie

sdk/Measure/Time

Convierte segundos en minutos.

MeasureTime SecondsToWeeks

Serie

Serie

sdk/Measure/Time

Convierte segundos en semanas.

MeasureTime SecondsToYears

Serie

Serie

sdk/Measure/Time

Convierte segundos en años.

MeasureTime WeeksToSeconds

Serie

Serie

sdk/Measure/Time

Convierte semanas en segundos.

MeasureTime YearsToSeconds

Serie

Serie

sdk/Measure/Time

Convierte años estándar en segundos.

Descripción

Transformaciones de medidas: volumen Transformación

Tipo de entrada

Tipo de salida

Carpeta

MeasureVolume BarrelsLiquid ToCubicFeet

Serie

Serie

sdk/Measure/Volume Convierte barriles estadounidenses (líquido) en pies cúbicos.

MeasureVolume BarrelsLiquid ToGallons

Serie

Serie

sdk/Measure/Volume Convierte barriles estadounidenses (líquido) en galones estadounidenses.

MeasureVolume BarrelsLiquid ToLiters

Serie

Serie

sdk/Measure/Volume Convierte barriles estadounidenses (líquido) en litros.

MeasureVolume BarrelsPetrol ToGallons

Serie

Serie

sdk/Measure/Volume Convierte barriles estadounidenses (petróleo) en galones estadounidenses.

MeasureVolume BarrelsPetrol ToLiters

Serie

Serie

sdk/Measure/Volume Convierte barriles estadounidenses (petróleo) en litros.

MeasureVolume BarrelsPetrol ToCubicFeet

Serie

Serie

sdk/Measure/Volume Convierte barriles estadounidenses (petróleo) en pies cúbicos.

MeasureVolume CubicFeet ToBarrelsLiquid

Serie

Serie

sdk/Measure/Volume Convierte pies cúbicos en barriles estadounidenses (líquido). Capítulo 8. Transformaciones y rutinas incorporadas

325

Transformación

Tipo de entrada

Tipo de salida

Carpeta

MeasureVolume CubicFeet ToBarrelsPetrol

Serie

Serie

sdk/Measure/Volume Convierte pies cúbicos en barriles estadounidenses (petróleo).

MeasureVolume CubicFeet ToGallons

Serie

Serie

sdk/Measure/Volume Convierte pies cúbicos en galones estadounidenses.

MeasureVolume CubicFeet ToLiters

Serie

Serie

sdk/Measure/Volume Convierte pies cúbicos en litros.

MeasureVolume CubicFeet ToImpGallons

Serie

Serie

sdk/Measure/Volume Convierte pies cúbicos en galones imperiales.

MeasureVolume GallonsTo BarrelsLiquid

Serie

Serie

sdk/Measure/Volume Convierte galones estadounidenses en barriles estadounidenses (líquido).

MeasureVolume GallonsTo BarrelsPetrol

Serie

Serie

sdk/Measure/Volume Convierte galones estadounidenses en barriles estadounidenses (petróleo).

MeasureVolume GallonsTo CubicFeet

Serie

Serie

sdk/Measure/Volume Convierte galones estadounidenses en pies cúbicos.

MeasureVolume GallonsToLiters

Serie

Serie

sdk/Measure/Volume Convierte galones estadounidenses en litros.

MeasureVolume LitersTo BarrelsLiquid

Serie

Serie

sdk/Measure/Volume Convierte litros en barriles estadounidenses (líquido).

MeasureVolume LitersTo BarrelsPetrol

Serie

Serie

sdk/Measure/Volume Convierte litros en barriles estadounidenses (petróleo).

MeasureVolume LitersTo CubicFeet

Serie

Serie

sdk/Measure/Volume Convierte litros en pies cúbicos.

MeasureVolume LitersToGallons

Serie

Serie

sdk/Measure/Volume Convierte litros en galones estadounidenses.

MeasureVolume LitersToGallons

Serie

Serie

sdk/Measure/Volume Convierte litros en galones imperiales.

MeasureVolume ImpGallons ToCubicFeet

Serie

Serie

sdk/Measure/Volume Convierte galones imperiales en pies cúbicos.

MeasureVolume ImpGallons ToLiters

Serie

Serie

sdk/Measure/Volume Convierte galones imperiales en litros.

326

Guía del desarrollador de Server Job

Descripción

Transformaciones de medidas: peso Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

MeasureWeightGrains ToGrams

Serie

Serie

sdk/Measure/ Weight

Convierte granos en gramos.

MeasureWeightGrams ToGrains

Serie

Serie

sdk/Measure/ Weight

Convierte gramos en granos.

MeasureWeightGrams ToOunces

Serie

Serie

sdk/Measure/ Weight

Convierte gramos en onzas.

MeasureWeightGrams ToPennyWeight

Serie

Serie

sdk/Measure/ Weight

Convierte gramos en masa de un penique.

MeasureWeightGrams ToPounds

Serie

Serie

sdk/Measure/ Weight

Convierte gramos en libras.

MeasureWeightKilograms ToLongTons

Serie

Serie

sdk/Measure/ Weight

Convierte kilogramos en toneladas largas.

MeasureWeightKilograms ToShortTons

Serie

Serie

sdk/Measure/ Weight

Convierte kilogramos en toneladas cortas.

MeasureWeightLongTons ToKilograms

Serie

Serie

sdk/Measure/ Weight

Convierte toneladas largas en kilogramos.

MeasureWeightLongTons ToPounds

Serie

Serie

sdk/Measure/ Weight

Convierte toneladas largas en libras.

MeasureWeightOunces ToGrams

Serie

Serie

sdk/Measure/ Weight

Convierte onzas en gramos.

MeasureWeightPennyWeight ToGrams

Serie

Serie

sdk/Measure/ Weight

Convierte masa de un penique en gramos.

MeasureWeightPounds ToGrams

Serie

Serie

sdk/Measure/ Weight

Convierte libras en gramos.

MeasureWeightPounds ToLongTons

Serie

Serie

sdk/Measure/ Weight

Convierte libras en toneladas largas.

MeasureWeightPounds ToShortTons

Serie

Serie

sdk/Measure/ Weight

Convierte libras en toneladas cortas.

MeasureWeightShortTons ToKilograms

Serie

Serie

sdk/Measure/ Weight

Convierte toneladas cortas en kilogramos.

MeasureWeightShortTons ToPounds

Serie

Serie

sdk/Measure/ Weight

Convierte toneladas cortas en libras.

Transformaciones numéricas Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

NumericIsSigned

Serie

Serie

sdk/Numeric

Devuelve 0 si la entrada es no numérica o cero, 1 para números positivos y -1 para los números negativos.

Capítulo 8. Transformaciones y rutinas incorporadas

327

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

NumericRound0

Serie

Serie

sdk/Numeric

Devuelve el número entero más próximo al número de entrada.

NumericRound1

Serie

Serie

sdk/Numeric

Devuelve el número de entrada con una cifra decimal más próximo.

NumericRound2

Serie

Serie

sdk/Numeric

Devuelve el número de entrada con dos cifras decimales más próximo.

NumericRound3

Serie

Serie

sdk/Numeric

Devuelve el número de entrada con tres cifras decimales más próximo.

NumericRound4

Serie

Serie

sdk/Numeric

Devuelve el número de entrada con cuatro cifras decimales más próximo.

Transformaciones del procesador de filas Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

RowProcCompareWith PreviousValue

Serie

Serie

sdk/RowProc

Compara el valor actual con el valor anterior. Devuelve 1 si son iguales; de lo contrario, devuelve 0. Sólo puede utilizarse en un lugar en un trabajo.

RowProcGetPreviousValue

Serie

Serie

sdk/RowProc

Devuelve el valor anterior que se ha pasado a esta transformación y conserva la entrada actual para la siguiente referencia. Sólo puede utilizarse en un lugar en un trabajo.

RowProcRunningTotal

Serie

Serie

sdk/RowProc

Devuelve la suma en ejecución de la entrada. Sólo puede utilizarse en un lugar en un trabajo.

328

Guía del desarrollador de Server Job

Transformaciones del programa de utilidad Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

UtilityAbortToLog

Serie

-

sdk/Utility

Hace que el trabajo termine y graba el mensaje proporcionado en el registro de errores graves del cliente del Director. Sólo está indicada a efectos de desarrollo.

UtilityRunJob

Serie, serie delimitada, número, número

Matriz

sdk/Utility

Ejecuta el trabajo especificado y devuelve estadísticas de la ejecución del trabajo. El trabajo se especifica por el nombre de trabajo, una lista de parámetros delimitados por el carácter |, un límite de fila y un límite de aviso. Las estadísticas se devuelven en una matriz.

UtilityGetRunJobInfo

Salida del programa de utilidad RunJob, Serie, Serie

Serie

sdk/Utility

Extrae información de la salida de UtilityRunJob. Utiliza como argumentos la salida de UtilityRunJob, 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.

UtilityPrintColumn ValueToLog

Serie

-

sdk/Utility

Graba un valor de columna en el registro en el cliente del Director.

Capítulo 8. Transformaciones y rutinas incorporadas

329

Transformación

Tipo de entrada

Tipo de salida

Carpeta

Descripción

UtilityPrintHexValueToLog

Serie

-

sdk/Utility

Convierte el valor suministrado y lo procesa como una serie. Convierte cada carácter de la serie en su equivalente hexadecimal ASCII y lo graba en el registro en el cliente del Director.

UtilityWarningToLog

Serie

-

-

Graba el mensaje proporcionado como un aviso en el registro en el cliente del Director.

UtilityHashLookup

Serie, Serie, Serie

Serie

sdk/Utility

Ejecuta una búsqueda en una tabla hash. Utiliza como argumentos el nombre de la tabla hash, el valor de la clave hash y la posición de columna. Devuelve el registro.

Rutinas incorporadas Hay tres tipos de rutinas que se suministran con IBM InfoSphere DataStage: v Subrutinas incorporadas anteriores/posteriores. Estas rutinas se almacenan en la carpeta Rutinas → Incorporadas → Anteriores/posteriores en el árbol de repositorio. 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. v Ejemplos de funciones de transformación. 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. Puede copiar estas rutinas y utilizarlas como base para sus propias funciones de transformación escritas por el usuario. v Funciones de transformación utilizadas por las transformaciones SDK. Estas son las rutinas que utilizan las transformaciones SDK del mismo tipo. Se almacenan en Rutina → 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 309). Puede ver las definiciones de estas rutinas utilizando el cliente del Diseñador, pero no puede editarlas. Si es necesario, puede copiarlas y renombrarlas, así como editar las copias para trabajar en ellas.

Subrutinas anteriores y posteriores incorporadas Hay varias subrutinas anteriores y posteriores incorporadas que se suministran con IBM InfoSphere DataStage: v DSSendMail. Esta rutina es un interludio al programa de correo de envío local. v DSWaitForFile. Esta rutina se llama para suspender un trabajo hasta que, o bien exista un trabajo denominado, o bien no exista.

330

Guía del desarrollador de Server Job

v DSJobReport. Esta rutina se puede llamar al final de un trabajo para grabar un informe de trabajo en un archivo. 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. 0, 1 o 2 para especificar detalles del informe. El tipo 0 produce una serie de texto que contiene hora de inicio/fin, tiempo transcurrido y estado del trabajo. 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 2 produce una serie de texto que contiene un informe XML completo. – Directorio. Especifica el directorio en el que se escribirá el informe. – Hoja de estilo XSL. Opcionalmente, especifica una hoja de estilo XSL para formatear un informe XML. Si el trabajo tenía un identificador de alias, a continuación, el informe se graba como alias_nombreTrabajo.txt o alias_nombreTrabajo.xml, en función del tipo de informe. Si el trabajo no tiene un, el informe se graba como nombreTrabajo_AAAAMMDD_HHMMSS.txt o nombreTrabajo_AAAAMMDD_HHMMSS.xml, en función del tipo de informe. v ExecDOS. Esta rutina ejecuta un mandato mediante un shell MS-DOS. El mandato ejecutado se especifica en el argumento de entrada de la rutina. v ExecDOSSilent. Como ExecDOS, pero no grana la línea de mandatos en el registro de trabajo. v ExecTCL. Esta rutina ejecuta un mandato mediante un shell de motor de InfoSphere Information Server. El mandato ejecutado se especifica en el argumento de entrada de la rutina. v ExecSH. Esta rutina ejecuta un mandato mediante un shell Korn de UNIX. v ExecSHSilent. Como ExecSH, pero no graba la línea de mandatos en el registro de trabajo. 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, Transformer o suplementaria, o los campos Subrutina anterior al trabajo o Subrutina posterior al trabajo en el recuadro de diálogo Propiedades del trabajo. También puede copiar estas rutinas y utilizar el código como base para sus propias subrutinas anteriores/posteriores. Si el soporte multilingüístico está habilitado, deberá estar informado sobre cualquier requisito de correlación cuando utilice las rutinas ExecDOS y ExecSH (o ExecDOSSilent y ExecSHSilent). Si estas rutinas utilizan datos en determinados juegos de caracteres, será su responsabilidad correlacionar los datos desde o hacia Unicode.

Funciones de transformación de ejemplo Estas son las funciones de transformación de ejemplo que se proporcionan con IBM InfoSphere DataStage: v ConvertMonth. Transforma una entrada MONTH.TAG. El resultado depende del valor del segundo argumento: – F (el primer día del mes) genera DATE.TAG. – L (el último día del mes) genera DATE.TAG. – Q (el trimestre que contiene el mes) genera QUARTER.TAG. – Y (el año que contiene el mes) genera YEAR.TAG. v ConvertQuarter. Transforma una entrada QUARTER.TAG. El resultado depende del valor del segundo argumento: – F (el primer día del mes) genera DATE.TAG. – L (el último día del mes) genera DATE.TAG. – Y (el año que contiene el mes) genera YEAR.TAG.

Capítulo 8. Transformaciones y rutinas incorporadas

331

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

332

Guía del desarrollador de Server Job

Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File Antes del Release 5.1, 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). Este método se denominaba almacenamiento en memoria caché privada de enlaces (y anteriormente, almacenamiento en memoria caché de etapas). Este mecanismo de memoria caché es una memoria caché privada por enlace. 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é. El compartimiento está permitido en un trabajo con una secuencia de datos individual, pero no entre trabajos o varias secuencias de datos en un trabajo. Esto da como resultado un uso significativo de recursos y unos tiempos de arranque poco eficaces (en el caso de los enlaces de referencia). Asimismo, como los almacenamientos intermedios de memoria caché de grabación generan filas hasta que se llega al umbral, las filas en la memoria caché no se reflejan en la base de datos hasta que la memoria caché se desecha. 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. 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, de aquí en adelante denominado almacenamiento en memoria caché del sistema, reduce el uso de los recursos del sistema, al implementar sólo una memoria caché que puede configurarse completamente y que da soporte a la lectura y la grabación. El release 6.0 introdujo una opción adicional denominada almacenamiento en memoria caché pública de enlaces. Esta opción permite que varias secuencias de datos de un trabajo utilicen el mismo archivo de memoria caché. 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. Las funciones que dan soporte al almacenamiento en memoria caché de disco se describen en InfoSphere DataStage Programmer's Guide. En estos temas se describen los mandatos de usuario, 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.

Funcionalidad 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. 1997, 2010

333

– 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, 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, 19, 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, 2, 4, 8, 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, restauración, 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. El motor del servidor pone los registros que ejecutan hash en el mismo número de grupo en un bloque. El tamaño del bloque viene determinado por el valor SEPARATION de CREATE.FILE. 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. n puede ser 4, 8, 16 o 32. 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. memoria caché Un subsistema en el que los datos que se utilizan con frecuencia están disponibles para un acceso rápido. daemon de memoria caché Un proceso asíncrono en segundo plano que realiza las grabaciones de estado de grabación diferida.

334

Guía del desarrollador de Server Job

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. entrada de archivo de memoria caché Una estructura que define un archivo de motor de servidor y la información relacionada con su estado. número de dispositivo Un número exclusivo asociado con la partición (un dispositivo) en la que reside el i-node. Consulte también número de i-node. segmentos de memoria compartida de disco Los segmentos a los que se asigna la memoria caché del sistema de IBM InfoSphere DataStage. Esta área se divide posteriormente en entradas de conjunto de bloques. archivo Un archivo nativo del motor de servidor que se crea con el mandato CREATE.FILE. desecho La hora a la que se libera un conjunto de bloques asignado actualmente, y puede obtenerse de un archivo y utilizarse para otro conjunto de bloques del mismo archivo o de otro diferente. estado incoherente El estado de un archivo en el que algunas grabaciones generadas por una aplicación, pero no todas, se han grabado físicamente en disco antes de que la aplicación termine sin un archivo de cierre correcto. 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, el tamaño y la ubicación del archivo, así como el ID de usuario del propietario del archivo. Consulte también número de dispositivo. 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. pid

Un identificador exclusivo de un proceso.

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. 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. semáforo Una estructura de sistema operativo que permite a los procesos modularse entre ellos en una hebra individual mediante un procedimiento. multiproceso simétrico (SMP) El proceso de programas de varios procesadores que comparten un sistema operativo y una memoria comunes. Una copia individual del sistema operativo está a cargo de todos los procesadores. En SMP, los recursos de hardware se comparten normalmente entre los procesadores. grabación diferida Un bloque que hay actualmente en un conjunto de bloques que se ha modificado respecto a la

Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

335

imagen en disco y está visible para las demás aplicaciones, aunque no se ha actualizado en el archivo de disco. El archivo está en un estado incoherente hasta que se hayan grabado todos los bloques de grabación diferida.

Secuencias de datos múltiples En IBM InfoSphere DataStage, 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, puede procesar varias secuencias de datos con un solo archivo de búsqueda común almacenado en memoria caché.

Directrices para elegir un tipo de memoria caché Utilice las siguientes directrices cuando seleccione el tipo de memoria caché que desea utilizar: Para

Utilice:

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 En el cliente del Administrador, seleccione un proyecto en la página Proyectos. Pulse Propiedades. En el separador Elementos ajustables, 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 no utiliza toda la memoria especificada de una vez. En su lugar, utiliza la memoria en segmentos hasta el límite especificado. El valor predeterminado de cada uno es 128 MB.

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 De forma predeterminada, 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. Para habilitar el almacenamiento en la memoria caché de disco, el administrador de InfoSphere DataStage debe realizar los pasos siguientes. 1. Inicie una sesión como dsadm. 2. Utilice el siguiente mandato para cambiar el directorio actual al directorio de instalación de DSEngine. cd ’cat /.dshome’

Edite el archivo uvconfig que se encuentra en el directorio del motor de servidor (especificado en el archivo /.dshome), y establezca los elementos ajustables de la memoria caché de disco en los valores

336

Guía del desarrollador de Server Job

que desee. Como mínimo, establezca el elemento ajustable DISKCACHE en un tamaño deseado en megabytes. (Consulte “Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema” en la página 349.) Nota: Los valores predeterminados sirven como un conjunto razonable de valores iniciales. 3. Asegúrese de que no haya conexiones activas del cliente de InfoSphere DataStage ni usuarios interactivos. 4. Detenga el motor de servidor de la siguiente manera: ./bin/uv -admin -stop

Nota: No puede continuar en el paso 5 hasta que todas las aplicaciones de InfoSphere DataStage hayan dejado de ejecutarse. Utilice el siguiente mandato para comprobar que todas las aplicaciones de InfoSphere DataStage han dejado de ejecutarse: ./bin/uv -admin -info

Si todas las aplicaciones se han detenido, la salida es: DSEngine, rev xxxx not currently running

5. Genere una nueva configuración del motor de la siguiente manera: ./bin/uv -admin -regen

6. Reinicie el motor de servidor de la siguiente manera: ./bin/uv -admin -start

El almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema están ahora habilitados. Una vez habilitado el almacenamiento en la memoria caché, los diseños de trabajo nuevos o existentes pueden utilizar esta funcionalidad. Consulte “Utilización de la memoria caché pública de enlaces” en la página 339 o “Utilización de la memoria caché del sistema” en la página 340. Si recibe un error del sistema operativo de host indicando que no se han podido asignar los segmentos de InfoSphere DataStage, revise la información sobre el kernel del sistema operativo y realice los cambios necesarios en ellos.

Requisitos especiales de AIX para determinar el tamaño de la memoria caché de disco Debido al modelo del espacio de direcciones predeterminado para los procesos de 32 bits en los sistemas AIX, es posible que necesite una preparación adicional para todas las opciones de memoria caché de disco. La asignación de espacio predeterminada es de 128 megabytes. La asignación máxima óptima es de 512 megabytes. Si desea asignar más de 128 megabytes de espacio para la memoria caché en un sistema AIX, siga estos pasos: 1. Inicie una sesión como dsadm. 2. Utilice el siguiente mandato para cambiar el directorio actual al directorio de instalación de DSEngine: cd ’cat /.dshome’

3. Edite el archivo uvconfig con un editor de texto como vi. a. Cambiar DMEMOFF a 0x90000000 b. Cambiar PMEMOFF a 0xa0000000 Guarde el archivo uvconfig. 4. Asegúrese de que no haya conexiones activas del cliente de IBM InfoSphere DataStage ni usuarios interactivos. 5. Detenga el motor de servidor de la siguiente manera: Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

337

. ./dsenv./bin/uv -admin -stop

Nota: No puede continuar en el paso 6 hasta que todas las aplicaciones de InfoSphere DataStage hayan dejado de ejecutarse. Utilice el siguiente mandato para comprobar que todas las aplicaciones de InfoSphere DataStage han dejado de ejecutarse: ./bin/uv -admin -info

Si todas las aplicaciones se han detenido, la salida es: DSENGINE, rev xxxx not currently running

6. Genere una nueva configuración del motor de la siguiente manera: ./bin/uv -admin -regen

Si el mandato es satisfactorio, la salida es: uvregen: reconfiguration complete, disk segment size is xxxxxxx

7. Añada los siguientes valores de entorno al archivo .dsenv: LDR_CNTRL=MAXDATA=0x30000000;exportar LDR_CNTRL

8. Aplique los nuevos valores de entorno ejecutando . ./dsenv

9. Reinicie el motor de servidor de la siguiente manera: ./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, y este tipo de etapas puede limitar la cantidad de memoria disponible para la memoria caché.

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 De forma predeterminada, 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. Para habilitar el almacenamiento en la memoria caché de disco, el administrador de InfoSphere DataStage debe realizar los pasos siguientes. 1. Inicie una sesión como administrador de Windows. 2. Utilizando un editor de texto como, por ejemplo, Notepad, edite el archivo uvconfig que se encuentra en el directorio del motor de servidor y establezca los elementos ajustables de la memoria caché de disco en los valores que desee. Como mínimo, establezca el elemento ajustable DISKCACHE en un tamaño deseado en megabytes. (Consulte “Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema” en la página 349.) Nota: Los valores predeterminados sirven como un conjunto razonable de valores iniciales. 3. Asegúrese de que no haya conexiones activas del cliente de InfoSphere DataStage ni usuarios interactivos. 4. Detenga el motor de servidor de la siguiente manera: a. Seleccione Inicio → Configuración → Panel de control → IBM InfoSphere Information Server. Aparece el recuadro de diálogo Panel de control de InfoSphere DataStage. b. 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. c. Pulse Aceptar para salir del Panel de control. Nota: No puede continuar en el paso 5 hasta que todas las aplicaciones de InfoSphere DataStage hayan dejado de ejecutarse. Para comprobar que no se esté ejecutando ninguna aplicación de

338

Guía del desarrollador de Server Job

InfoSphere DataStage, consulte el separador Procesos en el gestor de tareas. No debe aparecer ninguna entrada denominada uvsh ni entradas que empiecen por las letras ds. Nota: Genere un nuevo archivo de configuración del motor de la siguiente manera: En el indicador de mandatos de Windows NT®, cambie al directorio del motor de servidor y emita el siguiente mandato: C:\IBM\InformationServer\Server\DSEngine\bin\uvregen.exe

donde C:\IBM\InformationServer\Server\DSEngine es la ubicación del motor de servidor instalado. 5. Reinicie el motor de servidor de la siguiente manera: a. Seleccione Inicio → Configuración → Panel de control → IBM InfoSphere Information Server. Aparecerá el recuadro de diálogo Panel de control de InfoSphere DataStage. b. Pulse Iniciar todos los servicios y pulse Sí como respuesta al mensaje de que se iniciarán todos los servicios de InfoSphere DataStage. c. Pulse Aceptar para salir del Panel de control de InfoSphere DataStage. Nota: Si recibe un error del sistema operativo de host indicando que no se han podido asignar los segmentos de InfoSphere DataStage, revise la información sobre el kernel del sistema operativo y realice los cambios necesarios en ellos. El almacenamiento en la memoria caché pública de enlaces y el almacenamiento en la memoria caché del sistema están ahora habilitados. Una vez habilitado el almacenamiento en la memoria caché, los diseños de trabajo nuevos o existentes pueden utilizar esta funcionalidad. Consulte “Utilización de la memoria caché pública de enlaces” o “Utilización de la memoria caché del sistema” en la página 340.

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, bloquear para actualizaciones en la lista desplegable Precargar archivo en memoria en el separador Salida del recuadro de diálogo Etapa Hashed File) 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. De forma predeterminada, Habilitar compartimiento de memoria caché de archivos hash no está seleccionado. Si se cumplen todas estas condiciones, las nuevas aplicaciones utilizan el almacenamiento en memoria caché privada de enlaces. Los mensajes de registro de tiempo de ejecución hacen referencia al espacio privado de enlaces. Si se vuelve a compilar una aplicación existente, puede ejecutarse con un archivo de registro diferente. Un trabajo con una secuencia individual funciona de la misma forma que con el release anterior, pero los mensajes de registro de tiempo de ejecución ahora hacen referencia al espacio privado 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, bloquear para actualizaciones en la lista desplegable Precargar archivo en memoria en el separador Salida del recuadro de diálogo Etapa Hashed File). 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, Habilitar compartimiento de memoria caché de archivos hash no está seleccionado. Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

339

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 349). v El archivo de búsqueda se ejecutará en más de una secuencia, ya sea en varias secuencias de datos en el mismo trabajo o en conjuntos particionados utilizando el motor paralelo de IBM InfoSphere DataStage. Si alguna de las tres condiciones anteriores no se cumple, se utiliza el almacenamiento en memoria caché privada de enlaces. Si se cumplen todas estas condiciones, las nuevas aplicaciones utilizan el almacenamiento en memoria caché pública de enlaces. Los mensajes de registro de tiempo de ejecución hacen referencia al espacio público de enlaces. Para obtener el estado de la memoria caché de disco, consulte “Obtención del estado” en la página 341.

Utilización de la memoria caché del sistema Cuando se inicia un proceso de IBM InfoSphere DataStage, el conjunto de segmentos de memoria compartida que mantiene la memoria caché de disco está visible para el proceso. Para la memoria caché de disco, se recomienda al administrador utilizar menos del máximo de memoria caché de disco compartida permitida, para que las aplicaciones puedan ejecutarse en el espacio de trabajo restante. 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).

Creación de un archivo hash para el almacenamiento en memoria caché del sistema Para utilizar la memoria caché del sistema en la etapa Hashed File, debe crear un archivo con los atributos de memoria caché "grabación inmediata" o "grabación diferida". Puede crear este archivo seleccionando Permitir memoria caché de grabación de la etapa en la página Entrada del recuadro de diálogo Etapa Hashed File. Especifique los atributos que desee en los recuadros de diálogo Opciones de creación de archivo. Este recuadro de diálogo incluye el recuadro de lista desplegable Atributos de memoria caché. La lista desplegable tiene las siguientes entradas: v NINGUNO. No asigna ningún atributo de memoria caché especial. Este es el valor predeterminado. v GRABACIÓN DIFERIDA. Habilita el almacenamiento en memoria caché del archivo especificado utilizando la actualización bajo demanda o la actualización lenta. (En el archivo uvconfig, si se habilita DCWRITEDAEMON, se habilita la actualización lenta. Consulte “Ajuste de la memoria caché pública de enlaces y la memoria caché del sistema” en la página 349). v GRABACIÓN INMEDIATA. Habilita el almacenamiento en memoria caché del archivo especificado utilizando grabaciones síncronas.

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, tal como se describe a continuación. Para utilizar alguno de estos mandatos, antes de ejecutar un trabajo o después de ejecutar un trabajo, cree definiciones de rutinas anteriores al trabajo o posteriores al trabajo. Consulte la sección Capítulo 6, “Programación en IBM InfoSphere DataStage”, en la página 135 para obtener información adicional.

340

Guía del desarrollador de Server Job

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.FILE

El mandato CREATE.FILE se ha ampliado con dos opciones, WRITE.CACHE y WRITE.CACHE.DEFER, si el archivo va a utilizar la memoria caché de disco compartida. Estas opciones tienen los siguientes significados: Opción Descripción WRITE.CACHE Almacena en la memoria caché los archivos para las lecturas y grabaciones con grabaciones inmediatas. WRITE.CACHE.DEFER Almacena en la memoria caché los archivos para las lecturas y grabaciones con las grabaciones diferidas hasta el cierre. Nota: El tamaño de bloque del archivo debe ser 1 KB, 2 KB, 4 KB, 8 KB, 16 KB o 32 KB. Este tamaño se controla estableciendo la separación de archivos en 2, 4, 8, 16, 32 o 64, respectivamente. El siguiente mandato cambia la modalidad de un archivo hash existente: SET.MODE nombre_archivo [READ.ONLY | READ.WRITE | WRITE.CACHE | WRITE.CACHE.DEFER | INFORM]

El mandato tiene las opciones siguientes: Opción Descripción READ.ONLY Impone el archivo para que sea de sólo lectura y almacena las lecturas en la memoria caché. READ.WRITE Restaura el archivo a la modalidad de lectura/grabación normal. Éste es el valor predeterminado. WRITE.CACHE Almacena en la memoria caché los archivos para las lecturas y grabaciones con grabaciones inmediatas. WRITE.CACHE.DEFER Almacena en la memoria caché los archivos para las lecturas y grabaciones con las grabaciones diferidas hasta el cierre. INFORM Muestra el valor actual del campo "readonly" en la cabecera. Nota: El tamaño de bloque del archivo debe ser 1 KB, 2 KB, 4 KB, 8 KB, 16 KB o 32 KB. Este tamaño se controla estableciendo la separación de archivos en 2, 4, 8, 16, 32 o 64, respectivamente.

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.FILE.CACHE [DEVICE xxx INODE yyy | FILE nombre | [EVERY]] [[DETAIL][MRURO][MRUWD]] Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

341

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. 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é. xxx e yyy son decimales, a menos que empiecen por 0[X|x], lo que indica que son hexadecimales. FILE nombre Proporciona información para el archivo almacenado en memoria caché denominado. EVERY Proporciona información sobre todos los archivos abiertos. 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. Estos conjuntos de bloques aparecen al final de todas las entradas del archivo de memoria caché, una entrada por línea. MRUWD Lista cada conjunto de bloques en la cola de grabación diferida del archivo. Si se ejecuta el daemon de memoria caché de disco, aparece la siguiente línea primero. DAEMON.FILE.CACHE daemon active with pause of x, pid of y

donde x es el intervalo de pausa en milisegundos e y es la identificación del ID de proceso. Para obtener más información, consulte el apartado “Inicio y detención del daemon de memoria caché” en la página 348. Un proceso puede ser propietario de uno o varios de los siguientes semáforos: solicitud de daemon, cadena libre de conjunto de bloques y cadena de archivos de memoria caché. Si es propietario de más de uno, se generan las líneas correspondientes. 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. Cuando se ejecuta este mandato, dos líneas muestran el estado general de la memoria caché. Por ejemplo, fileentries

blocksets

freechain

flushedro

flushedwd

blockkhits

11

61

61

50

32

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é.

342

Guía del desarrollador de Server Job

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. flushedro Número total de conjuntos de bloques de sólo lectura desechados. flushedwd Número total de conjuntos de bloques de grabación diferida desechados. blockhits Número total de bloques encontrados en la memoria caché. Si se especifica DETAIL, cuatro líneas adicionales proporcionan el estado detallado de la memoria caché de disco: blocksize

arraysize

flushpc

maxpc

catpc

16384

256

80

40

50

nophyread

nophywrite

nobsetwhits

29

445

4473

El significado del estado detallado es el siguiente: Categoría Significado blocksize Tamaño configurado del almacenamiento intermedio del conjunto de bloques. Consulte DCBLOCKSIZE. arraysize Número configurado de matrices por entrada de archivo de memoria caché. Consulte DCMODULUS. flushpc Porcentaje de flushpc configurado. Consulte DCFLUSHPCT. maxpc Porcentaje de maxpc configurado. Consulte DCMAXPCT. catpc

Porcentaje de catpc configurado. Consulte DCCATALOGPCT.

nophyread Número total de lecturas realizadas en el sistema operativo. nophywrite Número total de grabaciones realizadas en el sistema operativo. nobsetwhits Número total de conjuntos de bloques encontrados en la memoria caché. Se proporciona la siguiente información para cada archivo: Device...

Inode... open

openwd

c

t

r

p

time

fullname

8912917

1297708

1

C

D

W

1

11:46:17

tress/REL7.DY.1/DATA.30

1

Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

343

blocksets

bsetswd

flushedro

flushedwd

bsethits

hblockf

12

3

0

144

5667

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. Inode Número que identifica el archivo al que se está accediendo. open

Número de veces que se ha abierto actualmente el archivo.

openwd Número de veces que se ha abierto actualmente el archivo con grabación diferida. c

El estado del catálogo del archivo. v C si el archivo está catalogado. v A espacio si no lo está.

t

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 v W representa de grabación diferida v A espacio representa otros estados

p

El estado del daemon de memoria caché. 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

time

La hora a la que se ha abierto el archivo.

fullname Los últimos 23 bytes de la vía de acceso completa. blocksets El número de conjuntos de bloques que utiliza actualmente este archivo. bsetswd El número de conjuntos de bloques que hay actualmente con al menos un bloque de grabación diferida. flushedro El número de conjuntos de bloques de sólo lectura que se han desechado. flushedwd El número de conjuntos de bloques desechados que tenían grabaciones diferidas. bsethits El número de conjuntos de bloques encontrados en la memoria caché de este archivo.

344

Guía del desarrollador de Server Job

hblockf El número de bloque máximo en el archivo expresado en hexadecimales. Si un semáforo de entrada de archivos utilizado para este archivo de memoria caché está actualmente en espera, 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. Si se especifica DETAIL, se muestra la información de estado del archivo actual. 0xbaseblock

inset

mru

latch

cntovf

writedef

time

0

8

WD

0x0

0

0x80000000

11:46:17

10000

8

RO

0x0

0

0x0

11:46:17

20000

8

0x80000000

0

0x0

11:46:17

Para cada entrada del conjunto de bloques, el significado de esta información es el siguiente: Categoría Significado 0xbaseblock El número del bloque en hexadecimales (con el prefijo 0x). inset

El número de bloques en este conjunto.

mru

El estado de sólo lectura o grabación diferida: v WD para la lista de grabación diferida del archivo de memoria caché 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), con 1 bit para cada bloque cerrado en el conjunto de bloques actual de izquierda a derecha. cntovf El número de procesos que hacen referencia a un grupo de desbordamiento en este conjunto de bloques. writedef Cuatro caracteres hexadecimales que muestran los valores diferido (prefijo 0x), con 1 bit para cada bloque en el conjunto de bloques actual de izquierda a derecha. time

La hora a la que se ha hecho referencia por última vez al conjunto de bloques.

Si un semáforo de matriz de archivos de memoria caché correspondiente a un conjunto de bloques mostrado está retenido actualmente por un proceso, se genera una línea con la siguiente información. Array entry z has cache file array semaphore (x) held by y

donde x es el número del semáforo, y es el ID de proceso y z es el número de entrada de la matriz. Si se especifica DETAIL y se aplica un almacenamiento en memoria caché pública de enlaces, se proporciona esta información adicional. 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 Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

345

También hay disponible un segundo formato de este mandato. LIST.FILE.CACHE [DEVICE xxx INODE yyy|FILE name] BLOCK zzz [OVER.30]

Cuando se ejecuta este mandato, se muestran un vuelco del bloque en hexadecimal y las claves de registro. Si desea un bloque de desbordamiento de un archivo de tipo 30, especifique la opción OVER.30. Después de dos líneas de cabecera, se muestran cada 64 bytes de datos en una línea, con todas las líneas cero omitidas. Para cada clave, se genera una línea. La clave es un valor de hasta 511 bytes. El vuelco termina cuando una clave tiene más de 511 bytes. xxx, yyy y zzz son decimales, a menos que empiecen por 0[X|x], lo que indica que son hexadecimales.

Cambio del estado El administrador de IBM InfoSphere DataStage puede cambiar el estado de la memoria caché de disco compartida. 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. Nota: Debe haber iniciado una sesión en la cuenta dshome para poder cambiar el estado. Consulte “Inicio de sesión en la cuenta dshome” en la página 348 para obtener más información sobre cómo iniciar una sesión en la cuenta dshome. El mandato es CLEAR.FILE.CACHE [[FILE nombre_archivo [GROUP zzz]] [FORCEWRITE | FLUSHRO | CLOSE | CLEAR.STAT] | 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. Si no se especifica, se cambia el estado de todos los archivos de memoria caché. GROUP zzz Identifica el número de grupo para el que se va a cambiar el estado. Si no se especifica, se cambia el estado de todos los grupos. FORCEWRITE Hace que se graben todas las grabaciones diferidas. FLUSHRO Libera los conjuntos de bloques de sólo lectura de la memoria caché, establece la indicación de fecha y hora en 0, y coloca una entrada al final de la cadena utilizada más recientemente. CLOSE En colaboración con FORCEWRITE, coloca entradas en la cadena libre de conjuntos de bloques y cierra la entrada de archivo de memoria caché designada. CLEAR.STAT Borra las estadísticas de un determinado archivo o de toda la memoria caché.

346

Guía del desarrollador de Server Job

ALL

Libera todos los semáforos. ALL es mutuamente excluyente con DCFILE, ENTRY, ARRAY, FREECHAIN y DAEMON.

DCFILE Libera el semáforo de cadena de archivos de memoria caché. DCFILE es mutuamente excluyente con ALL, pero puede incluirse en combinación con ENTRY, ARRAY, FREECHAIN o DAEMON. ENTRY Libera el semáforo de entrada de archivo de memoria caché. ENTRY es mutuamente excluyente con ALL, pero puede incluirse en combinación con DCFILE, ARRAY, FREECHAIN o DAEMON. ARRAY Libera el semáforo de matriz de archivos de memoria caché. ARRAY es mutuamente excluyente con ALL, pero puede incluirse en combinación con DCFILE, ENTRY, FREECHAIN o DAEMON. FREECHAIN Libera el semáforo de cadena libre de conjuntos de bloques. FREECHAIN es mutuamente excluyente con ALL, pero puede incluirse en combinación con DCFILE, ENTRY, ARRAY o DAEMON. DAEMON Libera el semáforo de daemon de memoria caché. DAEMON es mutuamente excluyente con ALL, pero puede incluirse en combinación con DCFILE, ENTRY, ARRAY o FREECHAIN. USER x Identifica el ID de proceso del usuario que es propietario del semáforo que se va a liberar. Si se omite, se suponen todos los usuarios. USER puede especificarse con ALL, DCFILE, ENTRY, ARRAY, FREECHAIN y DAEMON para limitar estas opciones a un usuario específico. SEMNO y Especifica el número de semáforos de matriz o entrada que se van a liberar. También debe especificarse ENTRY o ARRAY. Si se omite, se suponen todos los semáforos de matriz o entrada. STOP {DAEMON} Detiene el daemon de grabación asíncrona de la memoria caché de disco. ABORT [DETAIL] Detiene todo, desecha todos los archivos, borra todos los semáforos y estadísticas, y detiene el daemon. Si se especifica DETAIL, se muestran los pasos. Si se especifica ABORT, DETAIL es el único otro parámetro permitido.

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.FILE.CACHE nombre_archivo {PRE.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. PRE.LOAD Carga los datos del archivo en la memoria caché. WRITE.DEFER Difiere la grabación en el archivo.

Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

347

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. Como mínimo, los registros modificados se graban en el disco cuando el último usuario lo cierra, mientras está en modalidad de grabación diferida.

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.FILE.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. El archivo se desecha y se elimina de la memoria caché cuando el último usuario actual cierra el archivo.

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). Nota: Debe haber iniciado una sesión en la cuenta dshome. Consulte “Inicio de sesión en la cuenta dshome” para obtener más información sobre cómo iniciar una sesión en la cuenta dshome. El mandato es: DAEMON.FILE.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. x

Identifica el periodo de pausa entre exploraciones. x se expresa en unidades de 10 milisegundos.

STOP Detiene el daemon de memoria caché asíncrono en segundo plano.

Inicio de sesión en la cuenta dshome El mandato CLEAR.FILE.CACHE y el mandato DAEMON.FILE.CACHE requieren que inicie una sesión como administrador en la cuenta de inicio de IBM InfoSphere DataStage (dshome). En UNIX: Para iniciar una sesión en la cuenta de inicio de InfoSphere DataStage: 1. Inicie una sesión como dsadm. 2. Determine la vía de acceso de dshome: cat /.dshome

3. Cambie de directorio a la vía de acceso especificada. Por ejemplo, si la vía de acceso es /u1/uv, el mandato es: cd /u1/uv

4. Inicie una sesión en la cuenta de inicio.

348

Guía del desarrollador de Server Job

bin/dssh

Ahora está en la cuenta de inicio de InfoSphere DataStage. En Windows: Para iniciar una sesión en la cuenta de inicio de InfoSphere DataStage: En el indicador de mandatos, 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. Ahora está en la cuenta de inicio.

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. Elemento ajustable Descripción DISKCACHE Especifica el estado del subsistema de memoria caché de disco. 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, que significa ALLOW. La memoria caché de disco está inactiva. 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. Éste es el valor predeterminado. v 0, que significa REJECT. El subsistema de memoria caché de disco está inactivo. Los archivos abiertos en modalidad de memoria caché de grabación o de sólo lectura producen un error. v n. El subsistema de memoria caché de disco está activo. n representa el tamaño de la memoria caché compartida de disco en megabytes. Se permiten valores del 1 al 512. La memoria caché compartida está limitada a 512 mb en todas las plataformas, excepto Compaq Tru64, que tiene un límite de 176 mb. DCBLOCKSIZE Especifica el tamaño de un almacenamiento intermedio de memoria caché de disco compartida en unidades de 1K (1024 bytes). Los valores válidos son 4, 8, 16 y 32. 16 es el valor predeterminado. DCMODULUS Especifica el número de cadenas de almacenamiento intermedio de memoria caché de disco compartida en las que se divide un archivo. Los valores válidos son 128, 256, 512 y 1024. 256 es el valor predeterminado. Este elemento ajustable es específico de la memoria caché del sistema. DCMAXPCT Especifica el porcentaje del total de almacenamiento intermedio de memoria caché de disco compartida que puede poseer un archivo. Los valores válidos son de 1 a 100. 80 es el valor predeterminado. Este elemento ajustable es específico de la memoria caché del sistema. 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. Los valores válidos son de 1 a 100. 80 es el valor predeterminado. Este elemento ajustable es específico de la memoria caché del sistema.

Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

349

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 de 1 a 100. 50 es el valor predeterminado. Este elemento ajustable es específico de la memoria caché del sistema. DCWRITEDAEMON Especifica el estado del daemon de grabación en segundo plano de la memoria caché de disco compartida. 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. 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, expresada en unidades de 10 milisegundos. 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, deberá realizar varios pasos para dar soporte al símbolo. 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.

Consideraciones sobre el rendimiento Tenga en cuenta lo siguiente para mejorar el rendimiento de los trabajos.

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, ya sea como archivos de sólo lectura o para grabar y actualizar archivos. 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.

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 que se difieren las grabaciones síncronas más costosas en el archivo de disco físico. A efectos de actualización bajo demanda, no hay activo ningún daemon de caché de grabación aparte, 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. La actualización lenta es la actualización bajo demanda aumentada por un daemon de grabador asíncrono aparte. El daemon de grabación no es necesario para la actualización diferida. No obstante, cuando está activo, 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. Con el almacenamiento en la memoria caché de grabación diferida, 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. Aunque esta opción proporciona el máximo rendimiento general, si el motor del servidor se cuelga, el archivo puede dañarse.

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

350

Guía del desarrollador de Server Job

físico se producen al mismo tiempo que se actualiza la memoria caché. Aunque esta opción reduce el rendimiento, evita que se dañen los archivos lo máximo posible si se cuelga el motor del servidor.

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 una mayoría de los grupos referenciados están en esta memoria caché dinámica, se mejora el rendimiento. Si se hace una referencia aleatoria a todos los grupos de un archivo y no todos entran en la memoria caché de disco, el rendimiento puede ser peor que si no se aplica ningún almacenamiento en la memoria caché. Asimismo, si el sistema operativo de host tiene menos memoria física que el tamaño de la memoria caché de disco configurada, el rendimiento se resiente. 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 enlaces y la memoria caché del sistema” en la página 349. 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. Cuando hay varios archivos de gran tamaño en la memoria caché, sólo un pequeño subconjunto de los bloques de un archivo residirán en la memoria caché, pero el administrador puede modificar los elementos ajustables para permitir el manejo eficaz de un subconjunto pequeño. DCFLUSHPCT proporciona al administrador control sobre el algoritmo de sustitución de conjuntos de bloques para evitar la inanición de sólo lectura. DCMAXPCT controla el porcentaje máximo de la memoria caché que puede ocupar un archivo. 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. El rendimiento óptimo se consigue cuando el tamaño de la memoria caché de disco compartida, que se establece con el elemento ajustable DISKCACHE, se establece en un valor lo suficientemente alto para contener todo el archivo o una gran proporción (90-95%) de los grupos referenciados. Si el tamaño de DISKCACHE es inadecuadamente pequeño, se produce la hiperpaginación en la memoria caché de disco. DCMODULUS tiene algún efecto en el tiempo de ejecución, especialmente para los archivos grandes. Cuando este número disminuye, la longitud de las cadenas activas de los almacenamientos intermedios de DCBLOCKSIZE aumenta, lo que supone un mayor tiempo para ejecutar una búsqueda secuencial de una entrada. El establecimiento de DCMODULUS en 1024 es generalmente el óptimo para los archivos grandes (de más de 75 mb). El inconveniente es que hay menos estructuras de archivo de memoria caché de disco que entran en un almacenamiento intermedio de caché, lo que significa la eliminación de algunos de la agrupación de almacenamientos intermedios disponibles. El valor predeterminado de DCBLOCKSIZE es 16. Si es menor, la E/S física aumentará y las cadenas de matrices tendrán una mayor longitud, lo que ralentiza el sistema. 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. Una forma de reconocerlo es que la plataforma tenga matrices de discos. Los bloques de memoria caché de disco se almacenan en n conjuntos de bloques (donde n se configura como 4k, 8k, 16k o 32k, 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. Por este motivo, el tamaño de separación de archivos está restringido a una potencia de 1024 bytes. Cada archivo será propietario de m cadenas de conjuntos de bloques (donde m se configura como 64, 128, 256, 512 o 1024, siendo 256 el valor predeterminado). A continuación, 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.

Capítulo 9. Almacenamiento en la memoria caché de disco de la etapa Hashed File

351

Tabla 19. Valores de ejemplo Tamaño de archivo

DCBLOCKSIZE

DCMODULUS

Longitud media de cadena de conjunto de bloques

32 mb

8k

128

32

32 mb

8k

256

16

64 mb

8k

256

32

64 mb

16k

256

16

160 mb

16k

256

40

320 mb

16k

512

40

1024 mb

16k

256

256

1024 mb

16k

512

128

1024 mb

16k

1024

64

1024 mb

32k

1024

32

2048 mb

32k

1024

64

Los archivos de tipo 30 son realmente dos archivos: uno para los grupos primarios y el otro para los bloques de desbordamiento. Por lo tanto, los dos archivos deben considerarse cuando se establece DCMAXPCT. El valor de DCWRITEDAEMON determina la cantidad de tiempo que se detiene el daemon de grabación entre dos grabaciones. En una plataforma de multiprocesador, el periodo de pausa del daemon de grabación, que se especifica en DCWRITEDAEMON, puede ser muy bajo; en un procesador individual, el valor debe ser 10 o superior.

352

Guía del desarrollador de Server Job

Accesibilidad de los productos Puede obtener información sobre el estado de accesibilidad de los productos de IBM. Los módulos y las interfaces de usuario de los productos de IBM InfoSphere Information Server no son totalmente accesibles. 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, consulte la información de accesibilidad de productos de IBM en http://www.ibm.com/able/product_accessibility/ index.html.

Documentación sobre accesibilidad Se proporciona documentación accesible sobre los productos de InfoSphere Information Server en un Information Center. El Information Center presenta la documentación en formato XHTML 1.0, que se puede ver en la mayoría de navegadores web. El formato XHTML permite establecer propiedades de visualización en el navegador. También permite utilizar lectores de pantalla y otras tecnologías de asistencia para acceder a la documentación.

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.

© Copyright IBM Corp. 1997, 2010

353

354

Guía del desarrollador de Server Job

Acceso a la documentación del producto La documentación se proporciona en diversas ubicaciones y formatos, incluida la ayuda que se abre directamente desde las interfaces de cliente del producto, en un Information Center (centro de información) para toda la suite y en manuales en archivos PDF. El Information Center se instala como un servicio común con IBM InfoSphere Information Server. El Information Center contiene ayuda para la mayoría de las interfaces del producto, así como documentación completa correspondiente a todos los módulos de producto de la suite. Puede abrir el Information Center desde el producto instalado o bien desde un navegador Web.

Acceso al Information Center Puede utilizar los métodos siguientes para abrir el Information Center instalado. v Pulse el enlace Ayuda de la parte superior derecha de la interfaz de cliente. Nota: Desde IBM InfoSphere FastTrack e IBM InfoSphere Information Server Manager, la opción principal Ayuda abre un sistema de ayuda local. Seleccione Ayuda > Abrir Info Center para abrir el Information Center completo de la suite. v Pulse la tecla F1. Generalmente, la tecla F1 abre el tema que describe el contexto actual de la interfaz de cliente. Nota: La tecla F1 no funciona en clientes Web. v Utilice un navegador web para acceder al Information Center instalado aunque no esté conectado al producto. Especifique la dirección siguiente en un navegador web: http:// nombre_host:número_puerto/infocenter/topic/com.ibm.swg.im.iis.productization.iisinfsv.home.doc/ichomepage.html. El elemento nombre_host es el nombre del sistema de nivel de servicios en el que está instalado Information Center, y número_puerto es el número de puerto de InfoSphere Information Server. El número de puerto predeterminado es 9080. Por ejemplo, en un sistema Microsoft® Windows® Server denominado iisdocs2, la dirección Web tendrá el formato siguiente: http://iisdocs2:9080/ infocenter/topic/com.ibm.swg.im.iis.productization.iisinfsv.nav.doc/dochome/iisinfsrv_home.html. También encontrará un subconjunto del Information Center que se renueva periódicamente en el sitio Web de IBM, en http://publib.boulder.ibm.com/infocenter/iisinfsv/v8r5/index.jsp.

Obtener documentación en formato PDF y en papel v También puede disponer de manuales en archivos PDF mediante el instalador de software de InfoSphere Information Server y el soporte de distribución. También encontrará un subconjunto de los manuales en archivos PDF en línea que se renueva periódicamente en www.ibm.com/support/ docview.wss?rs=14&uid=swg27016910. v También puede realizar pedidos de publicaciones de IBM en formato de copia en papel en línea o por medio de su representante local de IBM. Para solicitar publicaciones en línea, vaya al Centro de publicaciones de IBM en http://www.ibm.com/e-business/linkweb/publications/servlet/pbi.wss.

Facilitar comentarios sobre la documentación Puede enviar sus comentarios sobre la documentación de los modos siguientes: v Formulario de comentarios del lector en línea: www.ibm.com/software/data/rcf/ v Correo electrónico: [email protected]

© Copyright IBM Corp. 1997, 2010

355

356

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. IBM no ofrece representación, 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, ser accesible o estar enlazado a él. 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. Además, 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. En consecuencia, el cliente tiene conocimiento y acepta que IBM no es responsable de la disponibilidad de tales sitios o recursos externos, ni tampoco del contenido, servicios, productos u otros materiales situados en dichos sitios o recursos o disponibles desde ellos. Cuando acceda a un sitio Web no IBM, incluso a uno que pueda contener el logotipo de IBM, tenga en cuenta que es independiente de IBM y que IBM no controla el contenido del mismo. Es responsabilidad del cliente tomar precauciones para protegerse de los virus, gusanos, troyanos y otros programas potencialmente destructivos y proteger la información según estime adecuado.

© Copyright IBM Corp. 1997, 2010

357

358

Guía del desarrollador de Server Job

Avisos y marcas registradas La presente información se ha desarrollado para productos y servicios ofrecidos en Estados Unidos.

Avisos Es posible que IBM no comercialice en otros países los productos, servicios o características que se describen en este manual. Consulte al representante local de IBM para obtener información sobre los productos y servicios que actualmente pueden adquirirse en su zona. Cualquier referencia a un producto, programa o servicio de IBM no pretende afirmar ni implicar que sólo se pueda utilizar dicho producto, programa o servicio de IBM. En su lugar se puede utilizar cualquier producto, programa o servicio funcionalmente equivalente que no vulnere ninguno de los derechos de propiedad intelectual de IBM. Sin embargo, es responsabilidad del usuario evaluar y verificar el funcionamiento de cualquier producto, programa o servicio que no sea de IBM. IBM puede tener patentes o solicitudes de patentes en tramitación que afecten al tema tratado en este documento. La posesión de este documento no otorga ninguna licencia sobre dichas patentes. Puede enviar consultas sobre licencias, por escrito, a la siguiente dirección: IBM Director of Licensing IBM Corporation North Castle Drive Armonk, NY 10504-1785 EE. UU. Para formular consultas relacionadas con el juego de caracteres de doble byte (DBCS), póngase en contacto con el departamento de la propiedad intelectual de IBM de su país o envíe las consultas, por escrito, a la siguiente dirección: Intellectual Property Licensing Legal and Intellectual Property Law IBM Japan Ltd. 1623-14, Shimotsuruma, 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, SIN GARANTÍA DE NINGUNA CLASE, NI EXPLÍCITA NI IMPLÍCITA, INCLUIDAS, PERO SIN LIMITARSE A ELLAS, LAS GARANTÍAS IMPLÍCITAS DE NO VULNERACIÓN DE DERECHOS, COMERCIALIZACIÓN O IDONEIDAD PARA UN FIN DETERMINADO. Algunos estados no permiten la declaración de limitación de responsabilidad de garantías expresas o implícitas en determinadas transacciones. Por consiguiente, es posible que esta declaración no se aplique en su caso. 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; dichos cambios se incorporarán en nuevas ediciones de la publicación. 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. 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. La información contenida en estos sitios Web no forma parte de la información del presente producto IBM, y el usuario es responsable de la utilización de dichos sitios.

© Copyright IBM Corp. 1997, 2010

359

IBM puede utilizar o distribuir cualquier información que se le facilite de la manera que considere adecuada, sin contraer por ello ninguna obligación con el remitente. 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, deben ponerse en contacto con: IBM Corporation J46A/G4 555 Bailey Avenue San José, CA 95141-1003 EE.UU. Dicha información puede estar disponible, sujeta a los términos y condiciones apropiados, incluido en algunos casos el pago de una tarifa. 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, el Acuerdo Internacional de Programas Bajo Licencia de IBM o cualquier acuerdo equivalente entre el usuario e IBM. Los datos de rendimiento contenidos en este documento se obtuvieron en un entorno controlado. Por consiguiente, es posible que los resultados obtenidos en otros entornos operativos varíen de forma significativa. Algunas mediciones pueden haberse realizado en sistemas experimentales y no es seguro que estas mediciones sean las mismas en los sistemas disponibles comercialmente. Además, algunas mediciones pueden haberse calculado mediante extrapolación. Los resultados reales pueden variar. Los usuarios del presente manual deben verificar los datos aplicables para su entorno específico. La información relacionada con productos ajenos a IBM se ha obtenido a partir de los proveedores de dichos productos, los anuncios que han publicado u otras fuentes de dominio público. IBM no ha probado dichos productos ni puede confirmar la precisión del rendimiento, la compatibilidad ni ninguna otra afirmación sobre productos ajenos a IBM. Las preguntas sobre las prestaciones de productos que no son de IBM deben dirigirse a los proveedores de esos productos. Todas las declaraciones de intenciones de IBM están sujetas a cambio o cancelación sin previo aviso, y sólo representan objetivos. Esta información sólo tiene como objeto la planificación. La información de este documento está sujeta a cambios antes de que los productos descritos estén disponibles. Este manual contiene ejemplos de datos e informes que se utilizan en operaciones comerciales diarias. Para ilustrarlos de la forma más completa posible, los ejemplos incluyen nombres de personas, empresas, marcas y productos. Todos estos nombres son ficticios y cualquier similitud con nombres y direcciones utilizados por una empresa real es totalmente fortuita. 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. Puede copiar, modificar y distribuir estos programas de ejemplo de cualquier forma, sin pagar a IBM, con la finalidad de desarrollar, 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. Estos ejemplos no se han probado exhaustivamente bajo todas las condiciones. Por tanto, IBM no puede garantizar ni dar por sentada la fiabilidad, la capacidad de mantenimiento ni el funcionamiento de dichos programas. Los programas de ejemplo se proporcionan "tal como están", sin garantías de ningún tipo. IBM no se hace responsable de los daños que se hayan podido causar debido al uso de los programas de ejemplo.

360

Guía del desarrollador de Server Job

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 Central Computer and Telecommunications Agency, que ahora forma parte del departamento de comercio (Office of Government Commerce) del gobierno de los Estados Unidos de América. 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 registradas de Intel Corporation o de sus subsidiarias en los Estados Unidos de América 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 una marca registrada y una marca de comunidad registrada del departamento de comercio del gobierno (Office of Government Commerce), y está registrada en la oficina de patentes y marcas registradas (Patent and Trademark Office) de los Estados Unidos. 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 de América o en otros países y se utiliza con su licencia. Java y todas las marcas basadas en Java son marcas registradas de Sun Microsystems, Inc. en los EE.UU. y/o otros países. 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

361

362

Guía del desarrollador de Server Job

Cómo ponerse en contacto con IBM Puede ponerse en contacto con IBM para obtener soporte, información del producto, de servicios de software y otro tipo de información general. También puede enviar a IBM comentarios sobre los productos y la documentación. La tabla siguiente indica los recursos de soporte al cliente, servicios de software, formación e información sobre productos y soluciones. Tabla 20. Recursos IBM Recurso

Descripción y ubicación

Portal de soporte de IBM

Puede personalizar la información de soporte eligiendo los productos y temas que le interesen en www.ibm.com/support/entry/portal/Software/ Information_Management/ InfoSphere_Information_Server

Servicios de software

Puede buscar información sobre servicios de software, de tecnologías de la información y de consultoría empresarial en el sitio de soluciones: www.ibm.com/businesssolutions.

Mi IBM

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/.

Formación y certificación

Puede obtener información acerca de servicios de formación técnica diseñados para personas, empresas y organizaciones públicas para adquirir, mantener y optimizar sus conocimientos de TI en http://www.ibm.com/software/sw-training/

Representantes de IBM

Puede ponerse en contacto con un representante de IBM para obtener información acerca de las soluciones en www.ibm.com/connect/ibm/us/en/

Envío de comentarios La tabla siguiente describe cómo enviar a IBM comentarios sobre los productos y la documentación de los mismos. Tabla 21. Envío de comentarios a IBM Tipo de comentario

Acción

Comentarios sobre productos

Puede proporcionar comentarios generales sobre productos mediante la encuesta de usabilidad, en el sitio web www.ibm.com/software/data/info/consumabilitysurvey.

© Copyright IBM Corp. 1997, 2010

363

Tabla 21. Envío de comentarios a IBM (continuación) Tipo de comentario

Acción

Comentarios sobre la documentación

Pulse el enlace Comentarios de la parte superior derecha de cualquier tema del Information Center para hacer comentarios sobre Information Center. También puede enviar sus comentarios sobre los manuales en archivos PDF, Information Center o cualquier otra documentación de los siguientes modos: v Formulario de comentarios del lector en línea: www.ibm.com/software/data/rcf/ v Correo electrónico: [email protected]

364

Guía del desarrollador de Server Job

Índice Caracteres Especiales [ ] operador

168

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

© Copyright IBM Corp. 1997, 2010

almacenar en memoria caché de disco (continuación) rendimiento del trabajo almacenamiento en la memoria caché de grabación diferida 350 almacenamiento en la memoria caché de grabación inmediata 350 trabajo individual frente a múltiples trabajos 350 utilizando la memoria caché dinámica 351 requisitos de AIX 337 secuencias de datos múltiples 336 símbolo del euro 350 terminología 334 tipos 336 visión general 333 anteriores/posteriores, subrutinas crear 140 descripción 137 incorporadas 330 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 359

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 [siente caracteres] 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

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 348

D daemon de memoria caché, iniciar/detener 348 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 visión general 127 derivaciones, véase derivaciones de columna 115 derivaciones de columna de salida, definir 115 editar varias 116 documentación del producto acceso 355 DSSetDisableJobHandler function 212 DSSetDisableProjectHandler function 213

365

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

366

Guía del desarrollador de Server Job

etapas Aggregator (continuación) separador General (continuación) página Salidas 58 subrutinas anteriores y posteriores 56 visión general 55 Etapas Aggregator ordenar los datos de entrada 57 etapas Complex Flat File columnas GROUP y OCCURS 36 enlaces de salida 27, 30 funcionalidad 28 proceso de metadatos 35 REDEFINES 37 valores del campo Descripción 36 Etapas Complex Flat File consideraciones sobre la fecha 38 gestión de OCCURS paralelas 35 página Etapa 29, 30 página Salida 30, 37 separador Columnas de origen 33 separador Criterios de selección 37 separador General página Salida 30, 33 separador Seleccionar columnas 36 separador Soporte multilingüístico 29 terminología 28 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 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 vía de acceso de directorio 40 visión general 40

Etapas Hashed File opciones de creación de archivo 42 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 83 separador Columnas página Entradas 85 página Salidas 85 separador General página Entradas 85 página Etapa 83, 84 página Salidas 85 separador Propiedades 84 subrutinas anteriores y posteriores 84 visión general 83 Etapas Link Collector para optimizar el rendimiento de los trabajos 9 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, 90 página Salida 90, 95 separador Correlación 94 separador General página Etapa 89 página Salida 90, 91 separador Propiedades de archivo de entrada 91, 94

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 96 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, 95 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 99 página Etapa 99 Separador General 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 Entrada 102 página Etapa 101 página Salida 102 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 página Salidas 49

etapas Sequential File (continuación) 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 funcionalidad 104 mejorar rendimiento 104, 105 propiedades configurables 105 Etapas Sort criterios de ordenación 105, 106 enlace de entrada 104 propiedades 106, 108 propiedades configurables 104 visión general 103 etapas suplementarias 1, 2 etapas Transformer conceptos básicos 110 edición 112 Editor de expresiones 122 enlaces de entrada 110 orden de enlaces 121 página Entradas 126 página Etapa 125 página Salidas 126 propiedades 125 rechazos 120 restricciones 120 subrutinas anteriores y posteriores 119 varias derivaciones 116 visión general 108 Etapas Transformer enlaces de salida 111 variables de la etapa local 121 expresión de formato 226 expresiones clave de columna de entrada 118 definición 137 edición 116, 122 validación 125 expresiones de clave, columna de entrada 118

F función ACos 274 función Alpha 170 función Ascii 171 función ASin 274 función ATan 274 función BitAnd 172 función BitNot 172 función BitOr 172 función BitReset 172 función BitSet 172 función BitTest 172 función BitXOr 172 función Byte 174

función ByteLen 174 función ByteType 174 función ByteVal 175 función Cats 177 función Char 178 función Checksum 178, 184 función Col1 179 función Col2 180 función Compare 182 función Convert 183 función Cos 274 función CosH 274 función Count 184 función DCount 185 función de fecha 185 función Div 188 función DownCase 188 función DQuote 188 función DSDetachJob 190 función DSGetCustInfo 191 función DSGetIPCPageProps 206 función DSGetJobInfo 191 función DSGetJobMetaBag 194 función DSGetLinkInfo 195 función DSGetLinkMetaData 196 función DSGetLogEntry 197 función DSGetLogEventIds 198 función DSGetLogSummary 198, 199 función DSGetNewestLogId 199, 200 función DSGetParamInfo 200 función DSGetProjectInfo 202 función DSGetStageInfo 202 función DSGetStageLinks 204 función DSGetStagesOfType 205 función DSGetStageTypes 205 función DSGetVarInfo 205 función DSLogEvent 207 función DSLogFatal 207 función DSLogInfo 208 función DSLogWarn 208 función DSSetGenerateOpMetaData 213 función DSSetJobLimit 213, 214 función DSSetParam 214 función DSStopJob 215 función DSTransformError 216 función Dtx 218 función Ebcdic 219 función Ereplace 221 función Exchange 222 función Exp 222 función Field 223 función FieldStore 224 Función FIX 225 función Fmt 225 función FmtDP 230 función Fold 230 función FoldDP 231 función GetLocale 234 función Iconv 236 función Index 244 función InMat 244 función INSERT y sentencia LOCATE 248 función Int 245 función Left 246 función Len 246 función LenDP 246 Índice

367

función Ln 247 función MatchField 251 función Mod 252 función Neg 253 función Not 253 función Num 254 función Oconv 254 función Pwr 264 función REAL 266 función Right 267 función Rnd 268 función Seq 268 función SetLocale 268 función Sin 274 función SinH 274 función Soundex 270 función Space 270 función Sqrt 271 función SQuote 271 función Status 271 función Str 272 función Tan 274 función TanH 274 función Time 273 función TimeDate 274 función Trim 276 función TrimB 277 función TrimF 277 función UniChar 277 función UniSeq 277 función UpCase 278 función Xtd 281 funciones ActiveX (OLE) funciones de programación 136, 139 importación 146 funciones Bit 172 funciones de transformación crear 140 ejemplos 331 funciones orientadas a los bytes 173 funciones trigonométricas 274

G giros columnas 95, 99 definición 95 ejemplos 96 guardar código en rutinas BASIC

mandato dsjob utilizar en etapa Command 64 mandatos externo 2, 60, 65 mandatos de servidor almacenar en memoria caché de disco 340 mandatos externos, ejecutar 2, 60, 65 mandatos TCL, etapa Command 64 marcas registradas lista de 359 menús de atajos en el Editor de transformador 110 múltiples filas, búsqueda 119

N Navegador de datos 30, 42, 48 nombre de rutina 138 número de versión, rutina BASIC

138

O OCCURS paralelas 35 operador If...Then...Else 244 operadores de coincidencia de patrón 263

P paquetes de InfoSphere DataStage 2 programa de copia en masa, véase programa de utilidad BCP 1 programa de utilidad BCP (Programa de copia en masa) descripción 1 programar en InfoSphere DataStage 135 programas BASIC, etapa Command 64 punto de código 19 puntos de interrupción 127

R 141

I importación funciones ActiveX (OLE) externas 146 InfoSphere DataStage, programar en

135

J juegos de caracteres 19 correlación entre interno y externo 19 puntos de código 19 juegos de caracteres externos 19 juegos de caracteres internos 19

368

M

Guía del desarrollador de Server Job

recuadro de diálogo Buscar 142 recuadro de diálogo Buscar y sustituir 113 recuadro de diálogo Editar metadatos de columna 33 recuadro de diálogo Examinar, véase recuadro de diálogo Seleccionar desde servidor 89 recuadro de diálogo Guardar definición de tabla 93 recuadro de diálogo Opciones de creación de archivo 42 recuadro de diálogo 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 Rutina de servidor 138

recuadro de diálogo Seleccionar desde servidor 89, 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 115 REDEFINES 37 reglas de prioridad, programación 137 rendimiento almacenar en memoria caché de disco 350, 352 estadísticas 10 etapa Sort 104, 105 trabajo 5 representación de datos, etapas FTP Plug-in 82, 83 representación de datos ASCII, etapas FTP Plug-in 82 representación de datos binaria, etapas FTP Plug-in 82, 83 restricciones 120 rutinas consulte también rutinas BASIC 135 crear 135 probar 142 subrutinas anteriores y posteriores 330 tipos 135 rutinas BASIC cómo guardar código 141 copia 143 crear 135, 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 330

S scripts Perl, etapa Command 60 scripts UNIX, etapa Command 60 secuencias de datos múltiples, almacenar en memoria caché de disco 336 sentencia * 169 sentencia $Define 166 sentencia $Include 168 sentencia $Undefine 168 sentencia Call 175 sentencia Case 176 sentencia CloseSeq 179 sentencia Common 181 sentencia Deffun 186 sentencia Dimension 187 sentencia End 219

sentencia Equate 220 sentencia Function 232 sentencia GoSub 234 sentencia LOCATE 247 sentencia Mat 250 sentencia Nap 252 sentencia Null 253 sentencia OpenSeq 262 sentencia Randomize 264 sentencia ReadSeq 265 sentencia Return 266 sentencia Return (valor) 267 sentencia Sleep 269 sentencia Subroutine 273 sentencia WEOFSeq 278 sentencia WriteSeq 279 sentencia WriteSeqF 280 sentencias $IfDef y $IfNDef 167 sentencias de asignación 171 sentencias For...Next 231 sentencias If...Else 241 sentencias If...Then 243 sentencias If...Then...Else 242 sentencias Loop...Repeat 249 sentencias On...GoSub 260 sentencias On...GoTo 261 servicios de software contactar 363 servidor telnet, etapas FTP Plug-in 70 símbolo del euro, utilizar 44, 350 sitios Web no IBM 357 sitios Web no IBM enlaces a 357 soporte cliente 363 soporte al cliente contactar 363 SQL factor de escala de datos 57, 58 precisión de los datos 57, 58 tipo de datos 57, 58 visualizar caracteres 57, 58 subrutina DSExecute 190 subrutina DSSetUserStatus 215 subrutinas anteriores a la etapa etapas Transformer 119 subrutinas anteriores a la etapa, 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 330 subrutinas posteriores a la etapa etapas Transformer 119 subrutinas posteriores a la etapa, definir etapas Aggregator 56 etapas Link Collector 84 etapas Link Partitioner 87 etapas Transformer 112 supervisor de rendimiento 132

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, definir 144

U Unicode estándar 19 visión general

19

V valores nulos 57, 58 variables de la etapa 121 variables de la etapa local 121 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

369

370

Guía del desarrollador de Server Job



Impreso en España

SC11-7827-03

IBM InfoSphere DataStage

Spine information:

Versión 8 Release 5

Guía del desarrollador de Server Job