Академический Документы
Профессиональный Документы
Культура Документы
Versin 8 Release 7
SC11-7972-00
SC11-7972-00
Nota Antes de utilizar esta informacin y el producto al que da soporte, lea la informacin de la seccin Avisos y marcas registradas en la pgina 363.
Contenido
Captulo 1. Trabajos de servidor . . . . 1
Etapas suplementarias . . Paquetes de IBM InfoSphere Recursos personalizados . Despus del desarrollo . . . . . . DataStage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 3 Terminologa . . . . . . . . . . . . . Utilizacin de la etapa Complex Flat File . . . Definicin de un enlace de salida . . . . . . Acerca de la pgina Salida . . . . . . . . Consideraciones sobre la fecha . . . . . . . Etapas Folder. . . . . . . . . . . . . . Utilizacin de etapas Folder . . . . . . . . Definicin de correlaciones de juegos de caracteres . . . . . . . . . . . . . . Definicin de los datos de entrada de la etapa Folder . . . . . . . . . . . . . . . Definicin de los datos de salida de la etapa Folder . . . . . . . . . . . . . . . Etapas Hashed File . . . . . . . . . . . . Utilizacin de la etapa Hashed File . . . . . Definicin de datos de entrada de Hashed File Definicin de datos de salida de Hashed File . . Utilizacin del smbolo de euro en los sistemas sin soporte multilingstico . . . . . . . . Etapas Sequential File . . . . . . . . . . . Utilizacin de la etapa Sequential File . . . . Definicin de correlaciones de juegos de caracteres . . . . . . . . . . . . . . Definicin de datos de entrada de Sequential File Definicin de datos de salida de Sequential File Cmo se comporta la etapa Sequential . . . . Etapas Aggregator . . . . . . . . . . . . Utilizacin de una etapa Aggregator . . . . . Subrutinas anteriores y posteriores a la etapa . . Definicin de datos de entrada de Aggregator . . Definicin de datos de salida de Aggregator . . Etapa Command. . . . . . . . . . . . . Funcionalidad . . . . . . . . . . . . Terminologa . . . . . . . . . . . . . Utilizacin de la etapa Command . . . . . . Definicin de la correlacin de juego de caracteres . . . . . . . . . . . . . . Definicin de los datos de entrada de la etapa Command . . . . . . . . . . . . . . Definicin de datos de salida de etapa Command Utilizacin de mandatos . . . . . . . . . Etapas InterProcess . . . . . . . . . . . . Utilizacin de la etapa IPC . . . . . . . . Definicin de propiedades de la etapa IPC . . . Definicin de los datos de entrada de la etapa IPC . . . . . . . . . . . . . . . . Definicin de datos de salida de la etapa IPC . . Etapas FTP Plug-in . . . . . . . . . . . . Funcionalidad de la etapa FTP Plug-in . . . . Terminologa . . . . . . . . . . . . . Instalacin de la etapa . . . . . . . . . . Propiedades . . . . . . . . . . . . . Etapas Link Collector . . . . . . . . . . . Utilizacin de una etapa Link Collector . . . . Subrutinas anteriores y posteriores a la etapa . . 28 29 30 30 38 38 38 38 39 39 40 40 41 42 44 44 45 45 46 48 50 55 56 56 56 58 60 60 61 61 62 63 63 64 65 67 68 68 68 68 69 70 70 70 83 83 84
iii
Definicin de propiedades de la etapa Link Collector . . . . . . . . . . . . . . 84 Definicin de datos de entrada de etapa Link Collector . . . . . . . . . . . . . . 85 Definicin de datos de salida de etapa Link Collector . . . . . . . . . . . . . . 85 Etapas Link Partitioner . . . . . . . . . . 85 Utilizacin de una etapa Link Partitioner . . . 86 Subrutinas anteriores y posteriores a la etapa . . 86 Definicin de propiedades de la etapa Link Partitioner . . . . . . . . . . . . . . 87 Definicin de datos de entrada de etapa Link Partitioner . . . . . . . . . . . . . . 87 Definicin de datos de salida de etapa Link Partitioner . . . . . . . . . . . . . . 88 Etapas Merge . . . . . . . . . . . . . . 88 Funcionalidad Merge stage . . . . . . . . 88 Utilizacin de la etapa Merge . . . . . . . 88 El separador General de la pgina Etapa . . . 89 Recuadro de dilogo Seleccionar desde servidor 89 Definicin de la correlacin de juego de caracteres . . . . . . . . . . . . . . 89 Ajuste del tamao del archivo de entrada . . . 90 Definicin de propiedades de salida . . . . . 90 Etapas Pivot . . . . . . . . . . . . . . 96 Funcionalidad de la etapa Pivot . . . . . . 96 Giro de datos . . . . . . . . . . . . . 96 Ejemplos . . . . . . . . . . . . . . 97 Etapas Row Merger. . . . . . . . . . . . 99 Funcionalidad de la etapa Row merger . . . . 99 Separador General de la pgina Etapa . . . . 99 Pgina Entrada . . . . . . . . . . . . 99 Pgina Salida . . . . . . . . . . . . 101 Etapas Row Splitter . . . . . . . . . . . 101 Funcionalidad de la etapa Row Splitter . . . . 101 Separador General de la pgina Etapa . . . . 101 Pgina Entrada . . . . . . . . . . . . 102 Pgina Salida . . . . . . . . . . . . 102 Etapas Sort . . . . . . . . . . . . . . 103 Funcionalidad de la etapa Sort . . . . . . 104 Propiedades configurables . . . . . . . . 104 Criterios de ordenacin . . . . . . . . . 105 Propiedades de etapa. . . . . . . . . . 106 Etapas Transformer . . . . . . . . . . . 108 Utilizacin de una etapa Transformer . . . . 108 Componentes del editor de transformadores . . 108 Conceptos bsicos de la etapa Transformer . . 110 Edicin de las etapas Transformer . . . . . 112 Editor de expresiones de IBM InfoSphere DataStage . . . . . . . . . . . . . 123 Propiedades de la etapa Transformer . . . . 126
Depuracin de los contenedores compartidos Compilacin de un trabajo . . . . . . . . Comprobaciones de compilacin . . . . . Compilacin satisfactoria . . . . . . . Resolucin de problemas . . . . . . . Supervisor de rendimiento grfico . . . . .
. . . . .
. 146
. 128
iv
Sentencia $Undefine . . Operador [] . . . . . Sentencia * . . . . . Funcin Abs. . . . . Funcin Alpha . . . . Funcin Ascii . . . . Sentencia de asignacin . funciones Bit . . . . Funciones orientadas a los Funcin Byte . . . . Funcin ByteLen . . . Funcin ByteType . . . Funcin ByteVal . . . Sentencia Call . . . . Sentencia Case . . . . Sentencia Cats . . . . Funcin Change . . . Funcin Char . . . . Funcin Checksum . . Sentencia CloseSeq . . Funcin Col1 . . . . Funcin Col2 . . . . Sentencia Common . . Funcin Compare . . . Funcin Convert . . . Sentencia Convert . . . Funcin Count . . . . Funcin CRC32. . . . Funcin de fecha . . . Funcin DCount . . . Sentencia Deffun . . . Sentencia Dimension . . Funcin Div . . . . . Funcin DownCase . . Funcin DQuote . . . DSAttachJob. . . . . DSCheckRoutine . . . DSDetachJob . . . . DSExecute . . . . . DSGetCustInfo . . . . DSGetJobInfo . . . . DSGetJobMetaBag . . . DSGetLinkInfo . . . . DSGetLinkMetaData . . DSGetLogEntry. . . . DSGetLogEventIds . . DSGetLogSummary . . DSGetNewestLogId . . DSGetParamInfo . . . DSGetProjectInfo . . . DSGetStageInfo. . . . DSGetStageLinks . . . DSGetStagesOfType . . DSGetStagesTypes . . . DSGetVarInfo . . . . DSIPCPageProps . . . DSLogEvent . . . . . DSLogFatal . . . . . DSLogInfo . . . . . DSLogToController . . DSLogWarn . . . . .
. . . . . . . . . . . . . . . . bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
170 170 171 172 172 173 173 174 175 176 176 176 177 177 178 179 179 180 180 181 181 182 183 184 185 185 186 186 187 187 188 188 189 190 190 191 191 192 192 193 193 196 197 198 199 199 200 201 202 204 204 206 207 207 207 208 209 209 210 210 210
DSMakeJobReport . . . . . . DSMakeMsg. . . . . . . . DSPrepareJob . . . . . . . DSRunJob . . . . . . . . DSSendMail . . . . . . . . DSSetDisableJobHandler. . . . DSSetDisableProjectHandler . . DSSetGenerateOpMetaData. . . DSSetJobLimit . . . . . . . DSSetParam . . . . . . . . DSSetUserStatus . . . . . . DSStopJob . . . . . . . . DSTransformError . . . . . . DSTranslateCode . . . . . . DSWaitForFile . . . . . . . DSWaitForJob . . . . . . . Funcin Dtx . . . . . . . . Funcin Ebcdic . . . . . . . Sentencia End . . . . . . . Sentencia Equate . . . . . . Funcin Ereplace . . . . . . Funcin Exchange . . . . . . Funcin Exp. . . . . . . . Funcin Field . . . . . . . Funcin FieldStore. . . . . . Funcin FIX . . . . . . . . Funcin Fmt. . . . . . . . Expresin de formato. . . . . Sintaxis . . . . . . . . Longitud de salida . . . . Carcter de relleno . . . . Justificacin . . . . . . . Formatos numrico y monetario Salida enmascarada . . . . Funcin FmtDP. . . . . . . Funcin Fold . . . . . . . Funcin FoldDP . . . . . . Sentencias For...Next . . . . . Sentencia Function . . . . . Funcin GetLocale. . . . . . Sentencia GoSub . . . . . . Sentencia GoTo . . . . . . . Funcin Iconv . . . . . . . Ejemplos . . . . . . . . Sentencias If...Else . . . . . . Sentencias If...Then...Else . . . Sentencias If...Then . . . . . Operador If...Then...Else . . . . Funcin Index . . . . . . . Funcin InMat . . . . . . . Funcin Int . . . . . . . . Funcin IsNull . . . . . . . Funcin Left. . . . . . . . Funcin Len . . . . . . . . Funcin LenDP. . . . . . . Funcin Ln . . . . . . . . Sentencia LOCATE . . . . . Sentencias Loop...Repeat. . . . Sentencia Mat . . . . . . . Funcin MatchField . . . . . Funcin Mod . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211 212 212 213 214 214 215 215 216 216 217 217 218 218 219 220 220 221 221 222 223 224 224 225 226 227 227 228 228 228 228 228 228 229 232 232 233 233 234 236 236 237 238 238 243 244 245 245 246 246 247 247 248 248 248 249 249 251 252 253 254
Contenido
Sentencia Nap . . . . . . . . Funcin Neg . . . . . . . . Funcin Not . . . . . . . . . Sentencia Null . . . . . . . . Funcin Num . . . . . . . . Funcin Oconv . . . . . . . . Ejemplos . . . . . . . . . Sentencias On...GoSub . . . . . Sentencia On...GoTo . . . . . . Sentencia OpenSeq . . . . . . Operadores de coincidencia de patrn Funcin Pwr . . . . . . . . Sentencia Randomize . . . . . . ReadSeq . . . . . . . . . . Funcin REAL . . . . . . . . Sentencia Return . . . . . . . Sentencia Return (valor) . . . . . Funcin Right . . . . . . . . Funcin Rnd . . . . . . . . Funcin Seq . . . . . . . . . SetLocale . . . . . . . . . . Sentencia Sleep . . . . . . . . Funcin Soundex . . . . . . . Funcin Space . . . . . . . . Funcin Sqrt. . . . . . . . . Funcin SQuote . . . . . . . Funcin Status . . . . . . . . Funcin Str . . . . . . . . . Sentencia Subroutine . . . . . . Funcin Time . . . . . . . . Funcin TimeDate . . . . . . . Funciones trigonomtricas . . . . Funcin Trim . . . . . . . . Funcin TrimB . . . . . . . . Funcin TrimF . . . . . . . . Funcin UniChar . . . . . . . Funcin UniSeq . . . . . . . Funcin UpCase . . . . . . . Funcin WEOFSeq . . . . . . Funcin WriteSeq . . . . . . . Funcin WriteSeqF . . . . . . Funcin Xtd . . . . . . . . . Cdigos de conversin . . . . . D . . . . . . . . . . . . G . . . . . . . . . . . . L . . . . . . . . . . . . MB . . . . . . . . . . . . MCA . . . . . . . . . . . MC/A. . . . . . . . . . . MCD . . . . . . . . . . . MCL . . . . . . . . . . . MCM . . . . . . . . . . . MC/M . . . . . . . . . . MCN . . . . . . . . . . . MC/N . . . . . . . . . . MCP . . . . . . . . . . . MCT . . . . . . . . . . . MCU . . . . . . . . . . . MCX . . . . . . . . . . . MD. . . . . . . . . . . . ML & MR . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
254 255 255 255 256 256 257 262 263 264 265 266 266 267 268 268 269 269 270 270 270 271 272 272 273 273 273 274 275 275 276 276 278 279 279 279 279 280 280 281 282 283 283 284 287 288 289 289 290 290 291 291 292 292 292 293 293 294 294 295 298
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
300 301 301 302 303 303 304 305 305 305 306 308 308 309
338 339
vi
Mandatos del motor de servidor . . . . . . Ajuste de la memoria cach pblica de enlaces y la memoria cach del sistema . . . . . . . . . Utilizacin del smbolo de euro en los sistemas sin soporte multilingstico . . . . . . . . . . Consideraciones sobre el rendimiento . . . . .
Enlaces a sitios Web no IBM . . . . . 361 Avisos y marcas registradas . . . . . 363 Cmo ponerse en contacto con IBM 367
ndice. . . . . . . . . . . . . . . 369
Contenido
vii
viii
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. Sybase BCP Load (consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for Sybase Databases y IBM InfoSphere DataStage and QualityStage Connectivity Guide for Microsoft SQL Server and OLE DB Data) UniData (consulte IBM InfoSphere DataStage and QualityStage Connectivity Guide for IBM UniVerse and UniData) Utiliza el programa de utilidad BCP (Programa de copia en masa) para copiar programas en masa a una nica tabla de una base de datos Microsoft SQL Server o Sybase. Lee o graba datos en las bases de datos UniData.
Base de datos
Base de datos
Base de datos
UniData 6 (consulte IBM InfoSphere Lee o graba datos en las bases de datos UniData 6. DataStage and QualityStage Connectivity Guide for IBM UniVerse and UniData) UniVerse (consulte IBM InfoSphere DataStage Lee o graba datos en las bases de datos UniVerse. and QualityStage Connectivity Guide for IBM UniVerse and UniData) Complex Flat File Folder Hashed File Sequential File Lee datos de una estructura de datos de archivo sin formato complejo. Lee o graba datos como archivos en un directorio ubicado en el servidor de InfoSphere DataStage. Lee o graba datos en un archivo hash. Lee o graba datos en un archivo secuencial.
Base de datos
Tipo Proceso
Etapa Aggregator
Funcin Agrupa los datos entrantes, calcula los totales y otras funciones de resumen, y pasa los datos a otra etapa del trabajo. Ejecuta mandatos, programas y trabajos externos. Lee o graba datos en archivos secuenciales remotos utilizando FTP. Proporciona un canal de comunicacin entre dos procesos de InfoSphere DataStage que se ejecutan simultneamente en el mismo trabajo. Combina datos de diversos enlaces de entrada en un solo enlace de salida. Particiona los datos de un enlace de entrada individual en varios enlaces de salida. Combina dos archivos secuenciales en uno o varios enlaces de salida. Correlaciona conjuntos de columnas en una tabla de entrada con una nica columna de una tabla de salida. Fusiona columnas de entrada en una serie y graba la serie en una columna de salida. Reparte los datos de una serie de entrada en varias columnas de salida. Ordena los datos entrantes en valores de columna ascendentes o descendentes y los pasa a otra etapa del trabajo. Filtra y transforma los datos entrantes, y los genera como salida en otra etapa del trabajo.
Proceso
Transformer
Puede encontrar informacin general sobre cmo construir el trabajo y definir los metadatos necesarios utilizando el cliente del Diseador 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 estn incorporadas y otras son suplementarias.
Etapas suplementarias
Hay un gran nmero de etapas suplementarias especializadas disponibles para InfoSphere DataStage. Pueden instalarse cuando se instala inicialmente IBM InfoSphere DataStage o ms adelante en cualquier momento. Las etapas de conectividad se utilizan para conectarse a bases de datos especficas. Aparecen en la categora Base de datos en la paleta de herramientas. Se describen en sus guas de consulta de conectividad respectivas. Las dems etapas suplementarias son etapas activas que aparecen en la categora Proceso en la paleta de herramientas. Todas se describen en esta gua.
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 caractersticas 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 travs de los trabajos de InfoSphere DataStage y la otra tambin 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 nmero de transformaciones y rutinas incorporadas para su uso en las etapas Transformer en los trabajos de servidor. Se describen en Captulo 8, Transformaciones y rutinas incorporadas, en la pgina 311. Si tiene requisitos especficos de rutinas y transformaciones personalizadas, InfoSphere DataStage dispone de un potente lenguaje de programacin de procedimientos denominado BASIC que permite definir sus propios componentes. Puede encontrar material de referencia de BASIC en Captulo 7, Programacin BASIC, en la pgina 149. Una vez desarrollados estos componentes, pueden reutilizarse en otros trabajos de InfoSphere DataStage.
Figura 2. Un proceso individual, con una etapa pasiva enlazada a una etapa pasiva, y una etapa Transformer invisible insertada en el tiempo de compilacin
Figura 6. Imposicin implcita de varios procesos mediante el almacenamiento intermedio de filas entre procesos
Figura 8. Comportamiento predeterminado con la etapa Transformer invisible insertada en el tiempo de compilacin
Figura 9. Utilizacin de la etapa IPC para imponer varios procesos, con las etapas Transformer invisibles insertadas en el tiempo de compilacin
Particionamiento y recopilacin
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 cmo puede utilizar las etapas Link Partitioner y Link Collector en un trabajo. Ambas etapas estn activas, y debe activar el almacenamiento intermedio de filas entre procesos a nivel de proyecto o de trabajo para poder implementar los lmites de proceso.
10
La tabla siguiente permite interpretar las estadsticas, que se han pegado en una hoja de clculo, como se muestra a continuacin:
Tabla 1. Estadsticas de rendimiento Enlace en el diseo de trabajo DSLink5 DSLink6 Accin Leer archivo secuencial Derivacin de transformador Grabacin entre procesos (de una etapa Transformer a una etapa Transformer) DSLink8 DSLink7 Grabar archivo secuencial Derivacin de transformador Grabar archivo secuencial Fila en la hoja de clculo 2 5 3
3 6 7
11
El mensaje de registro de terminacin 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.
12
Si la ventana del supervisor de trabajos muestra que una etapa activa est utilizando casi el 100% del tiempo de CPU, esto tambin indica que el trabajo tiene una limitacin de CPU.
13
14
Procedimiento
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 comprelos para cada etapa. En concreto, busque las etapas activas que utilicen menos CPU que otras.
Resultados
Una vez identificada la etapa, las acciones a realizar dependern de los tipos de etapa pasiva implicados en el proceso. Un archivo hash mal diseado puede tener un efecto concreto en el rendimiento (para obtener ayuda con el diseo del archivo hash, consulte Diseo 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
15
que contiene una determinada fila de datos. El nmero de grupos que tiene, el tamao de los grupos y el algoritmo utilizado para determinar la distribucin se deciden segn 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 nmero del rango del 1 al n, donde n es el mdulo de archivo. Esto proporciona el grupo donde se grabarn las filas. El campo de clave puede ser de cualquier tipo; por ejemplo, puede contener un nombre, un nmero 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 tambin 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 ms uniformemente posible entre varios grupos. En trminos de rendimiento, es especialmente importante que los grupos no estn 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 tamao de los registros (las filas) cuando se disea el archivo, ya que es preferible que se ajusten equitativamente a los grupos y no generen desbordamientos. Existe una relacin de compensacin entre el tamao del grupo y el nmero de grupos. En la mayora de operaciones, un buen diseo tiene muchos grupos de pequeo tamao (por ejemplo, cuatro registros por grupo). La bsqueda secuencial de la fila de datos necesaria no ser nunca tan larga. No obstante, puede haber casos en los que el diseo funcionar mejor con un nmero pequeo de grupos grandes.
Donde: nombre_archivo es el nombre del archivo al que se cambia el tamao. tipo especifica el algoritmo de hash que se utiliza (consulte Diseo de archivo hash en la pgina 15) mdulo especifica el nmero de grupos en el rango de 1 a 8.388.608. separacin especifica el tamao de los grupos en bloques de 512 bytes y est en el rango de 1 a 8.388.608. v Archivos dinmicos. Hay archivos hash que cambian dinmicamente cuando se graban datos en ellos con el tiempo. Esto puede sonar ideal, pero si se deja un crecer orgnicamente archivo dinmico, deber realizar varias opciones de divisin 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 rpido crecimiento. Los archivos dinmicos no funcionan tan bien como un archivo esttico bien diseado, pero funcionan
16
mejor que uno mal diseado. Cuando se crea un archivo dinmico, puede especificar la siguiente informacin (aunque todas estas opciones tienen valores predeterminados): Mdulo mnimo. El nmero mnimo de grupos que tiene el archivo. El valor predeterminado es 1. Tamao del grupo. El grupo puede especificarse como 1 (2048 bytes) o 2 (4096 bytes). El valor predeterminado es 1. Carga partida. Especifica cunto puede cargarse un archivo (en porcentaje) antes de partirse. El carga del archivo se calcula de la manera siguiente:
Carga del archivo = ((total de bytes de datos) / (total de bytes de archivo)) * 100
La carga partida predeterminada es 80. Carga con fusin. Especifica cmo puede ser de pequea 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 nmero de bytes que puede contener un registro (fila). Un registro de gran tamao siempre se coloca en un grupo de desbordamiento. Algoritmo Hash. Elija GENERAL para la mayora de tipos de campo de clave y SEQ.NUM para las claves que son una serie de nmeros secuencial. Tamao de registro. De manera opcional, utilice esta opcin para especificar el tamao de registro medio en bytes. A continuacin, puede utilizarse para calcular el tamao de grupo y el tamao de registro grande. Puede cambiar manualmente el tamao de un archivo dinmico utilizando el mandato RESIZE, que se emite mediante la caracterstica Mandato del cliente del Administrador. El mandato para cambiar el tamao de un archivo dinmico es:
RESIZE nombre_archivo [parmetro] [valor]
donde: nombre_archivo es el nombre del archivo al que se cambia el tamao. parmetro es uno de los siguientes y se corresponde con los argumentos descritos anteriormente para crear un archivo dinmico:
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 dinmico con los valores predeterminados descritos anteriormente. No obstante, puede utilizar las opciones de Crear archivo en la pgina Entradas de la etapa Hashed File para especificar el tipo de archivo y sus valores. Esto ofrece la opcin de varios tipos de archivos hash (estticos) y un tipo de archivo dinmico. Los distintos tipos de archivos estticos reflejan los distintos algoritmos hash que utilizan. Elija un tipo segn su tipo de clave, tal como se muestra a continuacin: Tipo 2 3 4 5 6 7 Adecuado para las claves que se forman de la siguiente manera: Numrica, significativa en los ltimos 8 caracteres Mayormente numrica con delimitadores, significativa en los ltimos 8 caracteres Alfabtica, significativa en los ltimos 5 caracteres Cualquier clave ASCII, significativa en los ltimos 4 caracteres Numrica, significativa en los primeros 8 caracteres Mayormente numrica con delimitadores, significativa en los primeros 8 caracteres
Captulo 2. Optimizacin del rendimiento en los trabajos de servidor
17
8 9 10 11 12 13 14 15 16 17 18
Alfabtica, significativa en los primeros 5 caracteres Cualquier clave ASCII, significativa en los primeros 4 caracteres Numrica, significativa en los ltimos 20 caracteres Mayormente numrica con delimitadores, significativa en los ltimos 20 caracteres Alfabtica, significativa en los ltimos 16 caracteres Cualquier clave ASCII, significativa en los ltimos 16 caracteres La clave numrica completa es significativa Mayormente numrica con delimitadores, la clave completa es significativa La clave alfabtica completa es significativa Cualquier clave ASCII completa es significativa Cualquier clave de caracteres completa es significativa
Mejoras operativas
Puede realizar varios pasos en el diseo 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 pgina Salidas de la etapa Hashed File. v Memoria cach de grabacin. Puede especificar una memoria cach para las operaciones de grabacin 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 necesitarn un acceso de disco aleatorio ms lento). Si el almacenamiento en la memoria cach del servidor est habilitado, puede especificar el tipo de almacenamiento en la memoria cach de grabacin cuando cree el archivo has, y el archivo siempre utilizar el tipo especificado de memoria cach de grabacin. De lo contrario, puede activar la memoria cach de grabacin a nivel de etapa en la pgina Salidas de la etapa Hashed File. v Preasignacin. Si utiliza archivos dinmicos, puede acelerar la carga del archivo realizando algunos clculos preliminares y especificar el mdulo mnimo segn corresponda. Esto mejora significativamente la operacin al recortar o eliminar las operaciones de divisin. Puede calcular el mdulo mnimo de la siguiente manera:
mdulo mnimo = tamao de datos estimado/(tamao de grupo * 2048)
Una vez calculado el mdulo mnimo, puede especificarlo para crear un archivo (utilizando la caracterstica Crear archivo del recuadro de dilogo Etapa Hashed File; consulte Definicin de datos de entrada de Hashed File en la pgina 41) o cambiar el tamao de un archivo existente (utilizando el mandato RESIZE que se describe en Archivos hash de IBM InfoSphere DataStage en la pgina 16). v Clculo del mdulo de un archivo esttico. Puede calcular el mdulo necesario para un archivo esttico utilizando un mtodo parecido al que se ha descrito anteriormente para calcular un mdulo de preasignacin para los archivos dinmicos:
mdulo = tamao de datos estimado/(separacin * 512)
Una vez calculado el mdulo, puede especificarlo para crear un archivo (utilizando la caracterstica Crear archivo del recuadro de dilogo Etapa Hashed File; consulte Definicin de datos de entrada de Hashed File en la pgina 41) o cambiar el tamao de un archivo existente (utilizando el mandato RESIZE que se describe en Archivos hash de IBM InfoSphere DataStage en la pgina 16).
18
Correlacin
Cuando debe transformar o transferir datos, el soporte multilingstico correlaciona los datos en o de el juego de caracteres externo que desee utilizar. El soporte multilingstico incluye tablas de correlacin
Copyright IBM Corp. 1997, 2011
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 correlacin predeterminada para todos los trabajos de servidor de un proyecto, y una correlacin predeterminada para todos los trabajos paralelos de un proyecto. v Un valor predeterminado de trabajo. En el cliente del Diseador de InfoSphere DataStage and QualityStage puede especificar una correlacin predeterminada utilizada por un trabajo concreto que sobrescribe el valor predeterminado de proyecto. v Una correlacin de etapa. Algunas etapas paralelas y de servidor permiten especificar que utilizan una correlacin determinada. Esto sustituye el valor predeterminado del proyecto y del trabajo. v Una correlacin de columna. Algunas etapas paralelas y de servidor soportan la correlacin por columna. Ello le permite especificar una correlacin 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 multilingstico 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 tambin los juegos de caracteres adecuados. Por ejemplo, tanto Venezuela como Ecuador utilizan el espaol como idioma, pero tienen convenciones de formateo de datos distintas. Los entornos locales no respetan los lmites nacionales. Un pas puede utilizar varios entornos locales, por ejemplo, Canad utiliza dos y Blgica utiliza tres. Varios pases pueden utilizar un entorno local, por ejemplo, una empresa multinacional podra 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 nmeros Visualizacin de valores monetarios Si un carcter es alfabtico, numrico, si no puede imprimirse, etc. Orden en que deben ordenarse los caracteres (clasificacin)
Puede combinar entornos locales si es necesario, por ejemplo podra 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 (clasificacin) 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
v Un valor predeterminado de trabajo. En el cliente del Diseador 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 trmino territorio en lugar de pas 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 eleccin entre un reloj de 12 horas o un reloj de 24 horas. En cuanto a las fechas, existen ms variaciones. Aqu aparecen algunos ejemplos de formatos utilizados por los distintos entornos locales para expresar las 9.30 de la noche del da 1 de abril de 1990:
Territorio Francia EE.UU. Japn Hora 21h30 9:30 p.m. 21:30 Fecha 1.4.90 4/1/90 90.4.1 Entorno local InfoSphere DataStage FR-FRENCH US-ENGLISH JP-JAPANESE
Numrico
Esta convencin define la forma en que se muestran los nmeros, incluyendo: v El carcter utilizado como separador decimal (carcter raz) v Carcter utilizado como separador de millares v Si los ceros del principio se deben utilizar para los nmeros de 1 a -1 Por ejemplo, los nmeros siguientes pueden significar mil, dependiendo del entorno local en que los utilice:
Territorio Irlanda Pases Bajos Francia Nmero 1,000 1.000 1 000 Entorno local InfoSphere DataStage IE-ENGLISH NL-DUTCH FR-FRENCH
Monetaria
Esta convencin define la forma en que se muestran los valores monetarios, incluyendo: v Carcter utilizado como separador decimal. Este puede ser distinto que el separador decimal utilizado en los formatos numricos. v Carcter utilizado como separador de millares. Este puede ser distinto que el separador de miles utilizado en los formatos numricos. v El smbolo de la moneda local del territorio, por ejemplo, $, o . v La serie utilizada como smbolo de moneda internacional, por ejemplo, USD (dlares estadounidenses) NOK (Kroner noruego), JPY (Yen japons). v El nmero de las posiciones decimales que se utilizan en los valores monetarios locales. v El nmero de las posiciones decimales que se utilizan en los valores monetarios internacionales. v El signo que se utiliza para indicar los valores monetarios positivos.
Captulo 3. Trabajos de servidor y soporte multilingstico
21
v El signo que se utiliza para indicar los valores monetarios negativos. v Las posiciones relativas del smbolo de moneda y los signos positivo o negativo de los valores monetarios. A continuacin se facilitan ejemplos de los formatos monetarios que utilizan los distintos entornos locales:
Moneda Dlares de EE.UU. Libras de GB Marcos de Alemania Euros de Alemania Formato (Format) $123.45 37,000.00 DM123,45 123,45 Entorno local InfoSphere DataStage US-ENGLISH GB-ENGLISH DE-GERMAN DE-GERMAN-EURO
Tipo de carcter
Esta convencin define si un carcter es alfabtico, numrico, si no puede imprimirse, etc. Esta convencin define tambin las normas de maysculas y minsculas, por ejemplo, algunas letras llevan acento en minsculas pero no en maysculas.
Ordenacin
Esta convencin define el orden en que se clasifican los caracteres, es decir, el orden. Puede haber muchas variaciones en el orden de clasificacin dentro de un nico juego de caracteres. Por ejemplo, el carcter sigue al carcter A en Alemania, pero sigue al carcter Z en Suecia.
Carga de correlaciones
Puede cargar una de las correlaciones disponibles para que los trabajos puedan utilizarla en el tiempo de ejecucin.
22
Procedimiento
1. En la pgina Correlaciones del servidor, pulse el botn Instalar. La pgina se expande para mostrar las listas de correlaciones disponibles y cargadas: 2. Seleccione la correlacin que desee cargar en la lista Disponibles de la izquierda y pulse el botn Aadir. Un recuadro de dilogo solicitar que confirme la accin. Pulse S. Cuando la correlacin se haya compilado, se aadir 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 mquina, o detenga e inicie los servicios de IBM InfoSphere DataStage (consulte la Gua del cliente del administrador para obtener instrucciones sobre cmo hacerlo). La correlacin estar disponible para los trabajos en el tiempo de ejecucin.
Procedimiento
1. En la pgina Entornos locales del servidor, pulse el botn Instalar. La pgina 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 botn Aadir. Un recuadro de dilogo solicitar que confirme la accin. Pulse S. Cuando el entorno local se haya compilado, se aadir 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 mquina, o detenga e inicie los servicios de DataStage (consulte la Gua del cliente del administrador para obtener instrucciones sobre cmo hacerlo). El entorno local estar disponible para los trabajos en el tiempo de ejecucin.
23
v Para determinadas etapas, puede especificar una correlacin de columnas individuales, que altera temporalmente el proyecto, el trabajo y las correlaciones predeterminadas de la etapa.
Todos los tipos anteriores denotan columnas de serie, que deben correlacionarse con el juego de caracteres Unicode interno de InfoSphere DataStage.
Procedimiento
1. Abra el cliente del Administrador. 2. Pulse el separador Proyectos para pasar a la pgina Proyectos. 3. Seleccione el proyecto para el que desee establecer una correlacin predeterminada y pulse el botn NLS... para abrir el dilogo Valores de soporte multilingstico del proyecto para el proyecto. De forma predeterminada, se muestran todas las correlaciones cargadas actualmente para los trabajos de servidor. 4. Elija la correlacin que desee en la lista Nombre de correlacin predeterminada. Puede seleccionar la opcin Mostrar todas las correlaciones y elegir una correlacin que no se haya cargado todava, pero tenga en cuenta que deber cargar la correlacin (consulte "Carga de correlaciones") antes de ejecutar los trabajos que utilizan la correlacin. 5. Pulse Aceptar. La correlacin seleccionada es ahora la predeterminada para el proyecto y la que utilizan todos los trabajos del proyecto.
Procedimiento
1. Abra el trabajo para el que desea establecer la correlacin en el Diseador de InfoSphere DataStage. 2. Abra el recuadro de dilogo Propiedades de trabajo para dicho trabajo (elija Editar > Propiedades de trabajo). 3. Pulse el separador Soporte multilingstico para pasar a la pgina Soporte multilingstico: 4. Elija la correlacin que desee en la lista Correlacin predeterminada para las etapas. Seleccione la opcin Mostrar todas las correlaciones y elija una correlacin que no se haya cargado todava, pero tenga en cuenta que deber cargar la correlacin (consulte "Carga de correlaciones") antes de ejecutar el trabajo. 5. Pulse Aceptar. La correlacin seleccionada es ahora la predeterminada para el trabajo y la que utilizan todas las etapas del trabajo.
24
Procedimiento
1. Abra el editor de etapas en el trabajo en el cliente del Diseador. Seleccione el separador NLS de la pgina Etapa. 2. Realice uno de los pasos siguientes: v Elija la correlacin que desee en la lista Nombre de correlacin que se utiliza con la etapa. Seleccione la opcin Mostrar todas las correlaciones y elija una correlacin que no se haya cargado todava, pero tenga en cuenta que deber cargar la correlacin (consulte Carga de correlaciones en la pgina 22) antes de ejecutar el trabajo que contiene la etapa. v Pulse el botn Utilizar parmetro de trabajo... Esta opcin permite seleccionar un parmetro de trabajo existente o especificar uno nuevo. Cuando se ejecuta el trabajo, InfoSphere DataStage utilizar el valor del parmetro para el nombre de correlacin. 3. Pulse Aceptar. La etapa utilizar el parmetro de trabajo o la correlacin seleccionada.
Procedimiento
1. Abra el editor de etapas en el trabajo. Pulse el separador NLS de la pgina Etapa: 2. Seleccione la opcin Permitir correlacin por columnas. A continuacin, vaya a la pgina Entradas o Salidas (dependiendo de si est grabando o leyendo datos) y seleccione el separador Columnas: 3. La cuadrcula de columnas tiene ahora un campo adicional denominado Correlacin de soporte multilingstico. Seleccione la correlacin que desee para una determinada columna en la lista desplegable. 4. Pulse Aceptar.
25
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 nmeros v Visualizacin de valores monetarios v Si un carcter es alfabtico, numrico, si no puede imprimirse, etc. v Orden en que deben ordenarse los caracteres (clasificacin) Puede combinar entornos locales si es necesario, por ejemplo podra 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.
Procedimiento
1. Abra el cliente del Administrador. 2. Pulse el separador Proyectos para pasar a la pgina Proyectos. 3. Seleccione el proyecto para el que desee establecer una correlacin predeterminada y pulse el botn NLS... para abrir el dilogo Valores de soporte multilingstico del proyecto para el proyecto. Pulse el separador Entornos locales del servidor para pasar a la pgina Entornos locales del servidor. 4. Pulse la flecha que aparece al lado de la categora para la que desea establecer un entorno local y elija un entorno local en la lista desplegable. Puede seleccionar la opcin Mostrar todos los entornos locales y elegir un entorno local que no se haya cargado todava, 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 categora en el proyecto y el que utilizan todos los trabajos del proyecto.
Procedimiento
1. Abra el trabajo para el que desee establecer el entorno local en el cliente del Diseador. 2. Abra el recuadro de dilogo Propiedades de trabajo para dicho trabajo (elija Editar > Propiedades de trabajo). 3. Pulse el separador Soporte multilingstico para pasar a la pgina Soporte multilingstico: 4. Pulse la flecha que aparece al lado de la categora para la que desea establecer un entorno local y elija un entorno local en la lista desplegable. Puede seleccionar la opcin Mostrar todos los entornos locales y elegir un entorno local que no se haya cargado todava, 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 categora en el trabajo y el que utilizan todas las etapas del trabajo.
26
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 nmero de columnas, por ejemplo, ms de 300, utilice slo un enlace de salida en su trabajo. As mejorar sustancialmente el rendimiento de la interfaz grfica de usuario al cargar, guardar o estructurar estas columnas. El hecho de tener ms 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 funcin de bsqueda de referencias ni soporta los enlaces de entrada. Para obtener ms informacin acerca de los trabajos creados con la versin 1 de esta etapa, consulte la siguiente seccin.
27
Las columnas de origen se rellenan, y puede seleccionar y modificar columnas. Puede detener la actualizacin seleccionando No en la consulta. No puede utilizar el separador Columnas de origen y la cuadrcula permanece vaca. Los trabajos existentes se ejecutan sin alterar siempre que no guarde el trabajo.
v v v v v v
Funcionalidad no soportada
La siguiente funcionalidad no est soportada: 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).
Terminologa
La lista siguiente describe los trminos utilizados en este documento:
28
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 jerrquica implicada en su disposicin de las columnas. Los archivos sin formato complejo tambin pueden incluir tipos de datos de herencia. Importacin de DCLGen El componente IBM InfoSphere DataStage al que se importa una definicin 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). Presentacin simultnea La conversin 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. Normalizacin La conversin 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 Mtodo de acceso secuencial en cola. VSAM Mtodo de acceso de almacenamiento virtual. Este mtodo es un sistema de gestin de archivos para el sistema operativo de sistema principal de IBM MVS.
29
Especifique la informacin mediante el siguiente botn y los siguientes campos: v Correlacionar el nombre que debe utilizarse con la etapa. Se define la correlacin de juego de caracteres predeterminada para el proyecto o el trabajo. Puede cambiar la correlacin seleccionando un nombre de correlacin de la lista. v Utilizar parmetro de trabajo... . Especifica los valores de los parmetros para el trabajo. Utilice el formato #Param#, donde Param es el nombre del parmetro de trabajo. La serie #Param# se sustituye por el parmetro 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 Slo correlaciones cargadas. Muestra una lista de las correlaciones que estn cargadas en ese momento. Si el soporte multilingstico no est instalado, la opcin Soporte multilingstico no est disponible en el recuadro de lista Formato de los datos y el separador Soporte multilingstico de la pgina Salida est inhabilitado. El archivo de entrada se interpreta de acuerdo con la opcin que se selecciona el recuadro de lista Formato de los datos del separador General de la pgina 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 Descripcin. Entre la informacin correspondiente en los siguientes campos: v Va de acceso. El nombre de la va de acceso de entrada de la fuente de datos a partir del que se pueden recuperar los datos. Tambin puede pulsar el botn ... 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 multilingstico est habilitado, el formato de los datos se fija en Soporte multilingstico y no se podr editar. (Las correlaciones de soporte multilingstico soportan datos EBCDIC.) v Estilo del registro. El tratamiento de fin de la lnea de los registros de acuerdo con la tabla siguiente:
30
Tabla 2. Tratamiento de fin de la lnea Formato de los datos ASCII o EBCDIC Estilo del registro Binario Longitud del registro Mayor que cero Comentarios La longitud del registro viene determinada por el campo Longitud del registro. Si los metadatos definen un registro que es ms largo que el campo Longitud del registro, las columnas que tengan posiciones de inicio mayores que la Longitud del registro se establecern en nulo. ASCII o EBCDIC Binario Cero La longitud del registro viene determinada por los metadatos. La longitud del registro viene determinada por el delimitador CR/LF. Si los metadatos definen un registro que es ms largo que la Longitud del registro tal y como ha determinado el CR/LF, las columnas que tengan posiciones de inicio mayores que la posicin de CR/LF se establecern en nulo. Si los metadatos definen un registro que es menor que la posicin del CR/LF, los datos despus del final del registro y antes del CR/LF (tal y como han determinado los metadatos) se descartarn. Si los datos que se estn leyendo estn en formato EBCDIC, puede generarse una coincidencia de caracteres CR/LF. stos tambin delimitan un registro.
ASCII o EBCDIC
CR/LF
Cualquier valor
31
Tabla 2. Tratamiento de fin de la lnea (continuacin) Formato de los datos NLS Estilo del registro Binario Longitud del registro >0 Comentarios La longitud del registro viene determinada por el campo Longitud del registro. Si los metadatos definen un registro que es ms largo que el campo Longitud del registro, las columnas que tengan posiciones de inicio mayores que la Longitud del registro se establecern en espacios. NLS CR/LF Cualquier valor La longitud del registro viene determinada por el delimitador CR/LF. Si los metadatos definen un registro que es ms largo que la Longitud del registro tal y como ha determinado el CR/LF, las columnas que tengan posiciones de inicio mayores que la posicin de CR/LF se establecern en espacios. Si los metadatos definen un registro que es menor que la posicin del CR/LF, los datos despus del final del registro y antes del CR/LF (tal y como han determinado los metadatos) se descartarn. Si los datos que se estn leyendo estn en formato EBCDIC, puede generarse una coincidencia de caracteres CR/LF. stos tambin delimitan un registro. NLS Binario 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 generarn registros vacos para cada CR/LF. v Verificar valor de signo en datos DECIMAL COMP-3. Si se selecciona esta opcin, la etapa comprueba si existe un valor de signo vlido 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
v Preservar NULL. Si se selecciona esta opcin, 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 opcin Preservar NULL. v Descripcin. Texto opcional que describe la finalidad del enlace de salida.
Botn Cargar
Cargar presenta simultneamente las matrices generando nombres de columnas con nmeros que incrementan monotnicamente si se responde con S a la consulta siguiente:
Desea presentar simultneamente OCCURS en las columnas que se estn cargando?
Si entra los datos manualmente, tambin deber presentar simultneamente todas las matrices manualmente. Las columnas siguientes tienen un significado especial para la etapa Complex Flat File: v Nmero de nivel. Representa el nmero de nivel de la columna dentro de una descripcin de archivo de COBOL. v Tipo nativo. Representa el tipo de datos de COBOL. Las otras columnas de la cuadrcula son las columnas estndar para el separador Columnas. Puede editar estos campos pulsando el botn derecho del ratn en una fila de la cuadrcula y seleccionado Editar fila... . Se abrir el recuadro de dilogo Editar columna.
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 Descripcin Nombre de la columna Nombre de la columna.
Captulo 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 utilizacin del tipo nativo GROUP para manejar fechas, consulte Separador Columnas de destino en la pgina 37. Longitud Valor numrico de la precisin. Escala Nmero de posiciones decimales. Con posibilidades de nulos Especifica si la columna puede contener valores nulos. Si se establece en S, estar sujeta a una restriccin NOT NULL. (S/No) Formato de fecha Formato de una columna de fecha. Descripcin Descripcin de una columna. Consulte los ejemplos de los valores del campo Descripcin al final de esta seccin. Nmero de nivel Nmero de nivel COBOL relativo de la columna. OCCURS Nmero de ocurrencias de la columna especificada en la clusula OCCURS de COBOL. (Consulte los ejemplos de OCCURS paralela, a la que no se da soporte, al final de esta seccin.) Uso Especifica una clusula de uso de COBOL. Utilice una de las siguientes: COMP COMP-1 COMP-2 COMP-3 DISPLAY Indicador de signo Especifica el signo. Fjelo en S si la serie de caracteres de la imagen contiene el smbolo S. De lo contrario, fjelo en U. Opcin de signo Si especifica una clusula de signo y la serie de caracteres de la imagen contiene un smbolo 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 clusula 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 clusula Picture generada en base a los valores en Nativo Tipo, Longitud y Escala.
34
Proceso de metadatos
Utilice los botones de la parte inferior del recuadro de dilogo Editar metadatos de columna para continuar aadiendo o editando columnas o guardar los cambios y cerrar el recuadro de dilogo. v Anterior y Siguiente. Visualizar los metadatos de la fila anterior o de la siguiente. v Cerrar. Cerrar el recuadro de dilogo 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. Slo 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 botn derecho del ratn en una fila de la cuadrcula 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 botn Guardar.... Para cargar una definicin de tabla existente en una etapa, utilice el botn Cargar....
El ejemplo siguiente utiliza una clusula PHONES OCCURS y una clusula 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 grfica de usuario personalizada CFF reconoce las OCCURS paralelas y muestra el error siguiente:
Demasiadas OCCURS
No dispone de autorizacin para guardar las definiciones de columna cargadas o editadas. Para procesar OCCURS paralelas: 1. Borre el campo OCCURS utilizando el recuadro de dilogo Editar metadatos de columna. 2. Entre NONE en el campo Descripcin de las columnas que no estn siendo procesadas en este enlace. De esta manera se consigue que los datos de dichas columnas fluyan sin modificarse.
Captulo 4. Etapas de trabajo de servidor
35
3. Cree un enlace de salida separado utilizando un procedimiento similar para procesar la prxima OCCURS.
36
v De forma predeterminada se seleccionan todas las columnas para la carga. Pulse Buscar para abrir un recuadro de dilogo que permite buscar una columna en concreto. v Pulse Aceptar cuando termine la seleccin para cargar las columnas seleccionadas.
Ejemplo redefinido
La etapa Complex Flat File soporta la redefinicin de cualquier parte del archivo de origen. Lo hace al restableciendo la posicin 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
37
Pulse el separador Origen Columnas en la pgina Salida para entrar o cargar definiciones de columna para sus datos. En este caso, defina el campo Tipo nativo para Application-Date (aplicacin-fecha) como CARCTER. 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 conversin 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.
38
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 Slo correlaciones cargadas. Muestra las correlaciones que se han cargado y que estn preparadas para ser utilizadas. v Utilizar parmetro de trabajo... . Permite especificar una correlacin de juegos de caracteres como un parmetro del trabajo que contiene la etapa. Si el parmetro todava no se ha definido, el sistema solicitar su definicin desde el recuadro de dilogo Propiedades del trabajo.
Clave U
Escala
39
etapa. Pulse Cargar y seleccione la definicin de tabla Folder que se encuentra en la carpeta Table Definitions\Built-in\Examples del rbol de repositorios.
40
v Salidas. Esta pgina slo 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 dilogo. 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 caracterstica Trabajo de validacin de Director antes de ejecutar el trabajo y InfoSphere DataStage lo crear automticamente. Para validar un trabajo, elija Trabajo > Validar en el cliente del Director. Aparecer el dilogo Opciones de ejecucin del trabajo. Pulse Validar. Para obtener ms informacin sobre cmo validar un trabajo y establecer las opciones de trabajo, consulte IBM InfoSphere DataStage and QualityStage Director Client Guide.
41
restantes columnas dictan el orden en el que se grabarn los datos en el archivo hash. No reorganice las definiciones de columnas de la cuadrcula a menos que est seguro de que conoce cules sern las consecuencias de su accin. Pulse Ver datos... para abrir el Navegador de datos. Esto le permite examinar los datos asociados al enlace de entrada. Para obtener una descripcin del Navegador de datos, consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide.
42
La pgina 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 asociacin o una sola columna de varios valores sin asociar. La lista Normalizar slo 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 parmetro de trabajo para representar el archivo creado en tiempo de ejecucin o elegir el archivo de la lista Nombre de archivo. Esta lista contiene todos los archivos definidos en la carpeta Definiciones de tabla > Con hash Nombre de cuenta del repositorio, donde Nombre de cuenta es el nombre de la cuenta elegida en la pgina Etapa. Si el archivo que desea no est en la lista, es conveniente definir una definicin de tabla. Lectura por registros . Seleccione esta opcin para forzar la lectura del archivo registro a registro. Es ms lento, pero es necesario si desea leer y grabar el archivo hash a la vez. Si especifica una sentencia Select en el separador Seleccin, el archivo se leer por registros igualmente, y este recuadro de seleccin 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 estn especialmente indicadas para los especialistas y se utilizan en aquellas situaciones en las que es necesario modificar una tabla de bsqueda 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 bsqueda en la memoria, el trabajo buscar en el archivo que hay en el disco. Si la bsqueda sigue sin encontrarse, se aplicar un bloqueo de actualizaciones sabiendo que el trabajo grabar posteriormente el registro en el archivo hash. La operacin de Inhabilitado, bloquear para actualizaciones es similar, a excepcin de que el archivo hash no se lee en la memoria. Descripcin. Contiene una descripcin 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 posicin en el archivo. Tambin 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 Posicin. Las columnas se grabarn en el enlace de salida en dicho orden, aunque mantengan el mismo nombre de columna. Si utiliza esta caracterstica, deber identificar las columnas de clave estableciendo su campo Posicin en 0. No reorganice las definiciones de columnas de la cuadrcula si no est seguro de cules sern las consecuencias de su accin. Tenga especial cuidado cuando utilice el campo Posicin para reorganizar las columnas y guarde la definicin como una definicin de tabla en el repositorio para su reutilizacin posterior. En concreto, si utiliza esta definicin 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 Posicin de la definicin de columna del campo del registro. (El campo Posicin de la columna de clave debe ser 0.) v Seleccin. Contiene clusulas SELECT opcionales para la extraccin condicional de datos de un archivo. Este separador slo est disponible si ha especificado el archivo hash por nombre de cuenta, en lugar de por va de acceso del directorio, en la pgina Etapa.
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 seleccin en el separador Seleccin, o debe seleccionar el recuadro de seleccin 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 operacin es mucho ms lenta y slo debe utilizarse si hay una clara necesidad de leer y grabar el mismo archivo al mismo tiempo.
44
45
v Utilizar correlacin de UNICODE. Si selecciona este campo, la correlacin del juegos de caracteres se altera temporalmente y todos los datos se leen y se graban en formato Unicode con dos bytes por carcter. 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 carcter 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.
46
Columnas de anchura fija. Si selecciona este recuadro de seleccin, los datos se graban en el archivo en columnas de anchura fija. La anchura de cada columna se especifica mediante el tamao de visualizacin de SQL (establecido en la columna Visualizacin de la cuadrcula Columnas). De forma predeterminada, esta opcin est borrada. La primera lnea es nombres de columnas. Seleccione este recuadro de seleccin si la primera fila de datos del archivo contiene nombres de columna. Esta opcin est sin marcar de forma predeterminada; es decir, la primera fila del archivo contiene datos. Omitir ltima lnea nueva. Marque este recuadro de seleccin si desea eliminar el ltimo carcter de nueva lnea del archivo. Esta opcin est sin marcar de forma predeterminada; es decir, el carcter de lnea nueva no se elimina. Desechar despus de cada fila. Este parmetro slo aparece si ha seleccionado La etapa utiliza conductos con nombre en la pgina Etapa. Si selecciona este recuadro de seleccin, 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. Slo 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 carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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. Carcter de cita. Slo se activa si no ha especificado columnas de anchura fija. Contiene el carcter utilizado para incluir series. De forma predeterminada, este campo contiene un carcter de comillas dobles. Puede entrar un nico carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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 carcter de cita. Espacios entre columnas. Este campo slo se activa cuando selecciona el recuadro de seleccin Columnas de anchura fija. Contiene un nmero para representar el nmero 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 definicin de columna individual en el separador Columnas). Relleno predeterminado. Contiene el carcter utilizado para rellenar las columnas ausentes. Es # de forma predeterminada, pero puede establecerse en otro carcter para aplicarlo a todas las columnas o puede alterarse temporalmente para definiciones de columnas individuales en el separador Columnas. Los campos siguientes slo aparecen si ha seleccionado La etapa utiliza conductos con nombre en la pgina Etapa: Esperar que transcurra el tiempo de espera del lector. Especifica cunto tiempo esperar la etapa una conexin 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 grabacin. Especifica durante cunto 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. Adems de los campos de definicin de columna estndar (Nombre de columna, Clave, Tipo de SQL, Longitud, Escala, Con posibilidades de nulos, Visualizacin, Elemento de datos y Descripcin), los separadores Columna de la etapa Sequential File tambin 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.
Captulo 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 lmite prctico de 14. Si se utilizan valores mayores que este, los resultados pueden ser ambiguos. Las propiedades de tipo de datos SQL afectan a cmo se graban los datos en un archivo secuencial. El tamao de visualizacin de SQL determina el tamao de las columnas de anchura fija. El tipo de datos SQL determina cmo se justifican los datos en una columna: los tipos de datos de carcter se escriben entre comillas y estn justificados a la izquierda, y los tipos de datos numricos no se escriben entre comillas y estn justificados a la derecha. Las propiedades de SQL estn en la cuadrcula 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 descripcin del Navegador de datos, consulte el manual IBM InfoSphere DataStage and QualityStage Designer Client Guide.
48
demasiado largas cuando ejecute el trabajo. Si desea suprimir este mensaje (por ejemplo, es posible que slo est interesado en las tres primeras columnas y desee prescindir del resto), seleccione este recuadro de seleccin. Puede haber hasta ocho campos en el separador Formato: Accin si faltan columnas. Permite especificar la accin que se debe realizar cuando falta una columna de los datos de entrada. Elija Rellenar con nulo de SQL, Correlacionar serie vaca o Rellenar con serie vaca en la lista. Delimitador. Slo 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 carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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. Carcter de cita. Slo se activa si no ha especificado columnas de anchura fija. Contiene el carcter utilizado para incluir series. De forma predeterminada, este campo contiene un carcter de comillas dobles. Puede entrar un nico carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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 carcter de cita. Espacios entre columnas. Este campo slo se activa cuando selecciona el recuadro de seleccin Columnas de anchura fija. Contiene un nmero para representar el nmero 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 carcter utilizado para rellenar las columnas ausentes. Es # de forma predeterminada, pero puede establecerse en otro carcter para aplicarlo a todas las columnas o puede alterarse temporalmente para definiciones de columnas individuales en el separador Columnas. Los campos siguientes slo aparecen si ha seleccionado La etapa utiliza conductos con nombre en la pgina Etapa: Esperar que transcurra el tiempo de espera del grabador. Especifica cunto tiempo esperar la etapa una conexin durante la grabacin 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 cunto 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. Adems de los campos de definicin de columna estndar (Nombre de columna, Clave, Tipo de SQL, Longitud, Escala, Con posibilidades de nulos, Visualizacin, Elemento de datos y Descripcin), los separadores Columna de la etapa Sequential File tambin 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 cmo se tratan las marcas de fin de registro, (EOR, del ingls 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 definicin de la columna final de un archivo CSV, la opcin S est inhabilitada.
Captulo 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 accin 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 Accin 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 Accin si faltan columnas si falta una columna. El comportamiento de Columna incompleta tambin depende de si el archivo es de anchura fija o CSV. En formato CSV, resulta imposible tener una columna corta, de modo que la opcin se aplica slo 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.
<LF> UNIX
50
Tabla 3. Conjunto de datos de entrada 1 (continuacin) Opciones Opciones Finalizacin de lnea <CR><LF> DOS Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna (primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ ABC|123|<LF>YZ Entradas de registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Inicio de 2 fila? Comentario n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d <LF> <LF> <LF> <LF> <LF> <LF> Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin fin fin fin fin fin fin fin fin fin fin fin fin de de de de de de de de de de de de fila fila fila fila fila fila fila fila fila fila fila fila
<CR><LF> DOS
Ninguno
n/d
Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos
de de de de de de
<LF> UNIX
51
Tabla 4. Conjunto de datos de entrada 2 (continuacin) Opciones Opciones Finalizacin de lnea <CR><LF> DOS Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna (primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z ABC|123|X<LF>Z Entradas de registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Inicio de 2 fila? Comentario n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d <LF> <LF> <LF> <LF> <LF> <LF> Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin fin fin fin fin fin fin fin fin fin fin fin fin de de de de de de de de de de de de fila fila fila fila fila fila fila fila fila fila fila fila
<CR><LF> DOS
Ninguno
n/d
Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos
de de de de de de
Finalizacin Contiene Datos de salida de lnea terminadores Columna Columna(primera fila) <LF> UNIX N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|<EMPTY>| <EMPTY> ABC|<EMPTY>| <EMPTY> ABC|12|<EMPTY> ABC|12|<EMPTY> ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ
<LF> UNIX
52
Tabla 5. Conjunto de datos de entrada 3 (continuacin) Opciones Opciones Opciones de columna: (se aplica a todas las filas) Inicio de Entradas de 2 fila? Comentario registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d n/d <LF> <LF> <LF> <LF> <LF> <LF> Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin Sin fin fin fin fin fin fin fin fin fin fin fin fin de de de de de de de de de de de de fila fila fila fila fila fila fila fila fila fila fila fila
Finalizacin Contiene Datos de salida de lnea terminadores Columna Columna(primera fila) <CR><LF> DOS N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ ABC|12<LF>|XYZ
<CR><LF> DOS
Ninguno
n/d
Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos
de de de de de de
<LF> UNIX
n/d
53
Tabla 6. Conjunto de datos de entrada 4 (continuacin) Opciones Opciones Finalizacin de lnea <CR><LF> DOS Opciones de columna: (se aplica a todas las filas) Contiene Datos de salida terminadores Columna Columna(primera fila) N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " Ninguno Ninguno ABC|123|<EMPTY> ABC|123|<EMPTY> "ABC|123|" " " " " "ABC|123|" " " " " Inicio de Entradas de 2 fila? Comentario registro Error muy grave Aviso Aviso Ninguno Aviso Ninguno Error muy grave Aviso Aviso Ninguno Aviso Ninguno Error muy grave Aviso Aviso Ninguno Aviso Ninguno n/d Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos Sin datos de salida Descartar fila 1 Datos correctos Datos correctos Datos correctos Datos correctos
<CR><LF> DOS
n/d
Ninguno
n/d
n/d
Finalizacin Contiene Datos de salida de lnea terminadores Columna Columna (primera fila) <LF> UNIX N Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener Ninguno Ninguno ABC|12<CR>| <EMPTY> ABC|12<CR>| <EMPTY> "ABC|12<CR>| " " " " " "ABC|12<CR>| " " " " "
54
Tabla 7. Conjunto de datos de entrada 5 (continuacin) Opciones Opciones Opciones de columna: (se aplica a todas las filas) Inicio de Entradas de 2 fila? Comentario registro Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno P P P P P P Datos Datos Datos Datos Datos Datos correctos correctos correctos correctos correctos correctos
Finalizacin Contiene Datos de salida de lnea terminadores Columna Columna (primera fila) <LF> UNIX S Error Descartar y avisar Sustituir y avisar Sustituir Retener y avisar Retener ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ Ninguno Ninguno ABC|<EMPTY>| <EMPTY> ABC|<EMPTY>| <EMPTY> ABC|12|<EMPTY> ABC|12|<EMPTY> ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ ABC|12<CR>| <LF>YZ
<CR><LF> DOS
Error muy grave Aviso Aviso Ninguno Aviso Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno
n/d S S S S S
Sin datos de salida Descartar fila 1 Fila fantasma Fila fantasma Fila fantasma Fila fantasma Datos Datos Datos Datos Datos Datos correctos correctos correctos correctos correctos correctos
<CR><LF> DOS
P P P P P P
Ninguno
n/d
Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos Omisin datos
de de de de de de
Etapas Aggregator
Las etapas Aggregator clasifican las filas de datos de un solo enlace de entrada en grupos y calculan totales u otras funciones de totales para cada grupo. La etapa produce los totales sumados de cada grupo mediante un enlace de salida.
55
56
v Nombre de entrada. Nombre del enlace de entrada a la etapa Aggregator. v General. Se visualiza de forma predeterminada. Contiene una descripcin opcional del enlace. v Columnas. Contiene una cuadrcula que muestra las definiciones de columna para los datos que se estn grabando en la etapa y un orden de clasificacin opcional. Nombre de la columna. Nombre de la columna. Ordenacin. Muestra la posicin clave de orden de la columna, si la ordenacin est habilitada. Para obtener ms informacin, consulte Definicin del orden de clasificacin de la columna de entrada. Orden de clasificacin. Especifica el orden de clasificacin. Este campo esta en blanco de forma predeterminada; es decir, no hay orden de clasificacin. Elija Ascendente para el orden ascendente, Descendiente para el orden descendiente o Ignorar si no desea seleccionar una clasificacin. Clave. Indica si la columna forma parte de la clave primaria. Tipo SQL. Tipo de datos SQL. Longitud. Precisin de los datos. Es la longitud para los datos CHAR y la longitud mxima para los datos VARCHAR. Escala. Factor de escala de los datos. Con posibilidades de nulos. Especifica si la columna puede contener valores nulos. Visualizacin. Nmero mximo de caracteres necesarios para visualizar los datos de la columna. Elemento de datos. Tipo de datos de la columna. Descripcin. Una descripcin en texto de la columna.
57
ejecucin, el servidor de InfoSphere DataStage no comprueba el orden de clasificacin de los datos, lo que puede producir errores. Si selecciona esta opcin, aparece un mensaje de aviso cuando pulsa Aceptar. Para poder editar otras columnas de entrada, deber aceptar este mensaje.
Agregacin de datos
Los orgenes 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 informacin sobre cada transaccin o venta. Puede pasar todos estos datos a su depsito de datos. No obstante, esto significa que deber realizar bsquedas en grandes volmenes de datos en el depsito de datos antes de obtener los resultados que desee. Si slo desea informacin de resumen, por ejemplo, el total del producto A vendido desde el 01/01/96, puede agregar los datos y pasar slo la suma total al depsito de datos. Esto reduce la cantidad de datos que se almacenan en el depsito de datos, acelera el tiempo necesario para encontrar los datos que desea y garantiza que el depsito 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
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 informacin sobre tres productos diferentes, A, B y C, puede agruparla por la columna Producto. Toda la informacin sobre el producto A se agrupar conjuntamente, de la misma forma que toda la informacin de los productos B y C. Al resumir los datos, puede realizar clculos bsicos 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 numricos: v Mnimo. Devuelve el valor ms bajo de la columna. v v v v v v v Mximo. Devuelve el valor ms alto de la columna. Recuento. Cuenta el nmero 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. Desviacin estndar. Devuelve la desviacin estndar de los valores en la columna. Al calcular la desviacin estndar, IBM InfoSphere DataStage utiliza la frmula:
desviacin_estndar = sqrt [ (sum(Xi2) - N avg(Xi)2) / N ]
Algunos otros paquetes como, por ejemplo, Microsoft Excel, utilizan la frmula:
desviacin_estndar = sqrt [ (sum(Xi2) - N avg(Xi)2) / (N-1)]
Puede realizar las acciones siguientes para los dems tipos de datos SQL: v Mnimo. Devuelve el valor ms bajo de la columna. v v v v Mximo. Devuelve el valor ms alto de la columna. Recuento. Cuenta el nmero 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 nmero total del producto A vendido, debe sumar los valores de la columna QtySold. Para agrupar por o resumir una columna, debe editar la columna Derivacin en el recuadro de dilogo Columna de salida. Para ello, efecte una doble pulsacin en la celda para abrir el recuadro de dilogo Derivacin. El recuadro de dilogo Derivacin 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 Funcin agregada. Contiene la funcin de agregacin que se ejecuta. Elija la funcin que desee en la lista. La opcin predeterminada es Suma. v Agrupar por esta columna. Especifica si la columna se agrupar. Este recuadro de seleccin est deseleccionado de forma predeterminada. Si desea agrupar por la columna, seleccione el recuadro de seleccin Agrupar por esta columna. La funcin agregada se establece automticamente en (agrupada) y no puede seleccionar una funcin agregada en la lista.
Captulo 4. Etapas de trabajo de servidor
59
Para utilizar una funcin agregada, deseleccione el recuadro de seleccin Agrupar por esta columna y seleccione la funcin que desee utilizar en la lista Funcin 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 lnea de mandatos que pueda llamar si no son interactivos. Hay disponible una interfaz grfica de usuario (GUI) para la etapa Command. Puede utilizar la etapa Command en cualquier lugar de la va de acceso de trabajo para invocar un mandato externo. Las rutinas anteriores y posteriores que ya estn disponibles actan 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 va de acceso, ejecuta el mandato y pasa los datos entrantes sin alterar. La llega de la fila slo causa la ejecucin del mandato. La etapa Command slo 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 va de acceso de trabajo (sin ningn enlace de salida). v Enlace de salida. Si ejecuta una etapa Command al principio de una va de acceso de trabajo para un enlace de salida, la etapa ejecuta el mandato especificado y enva una fila individual en el enlace de salida. Como mnimo, esta fila contiene el cdigo de retorno del mandato especificado en la primera columna. A continuacin, una etapa Transformer puede utilizar las operaciones de ramificacin de InfoSphere DataStage para procesar el cdigo. Si selecciona Salida a enlace, la segunda columna mantiene la salida del mandato. La GUI maneja la creacin 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 Ms flexibilidad que cuando se utilizan otras rutinas anteriores o posteriores a la etapa. v Metadatos visuales y textuales. v Invocacin grfica de mandatos externos sin recurrir a la codificacin del control de trabajos. v Un proceso ms sencillo de los cdigos de retorno de los mandatos externos. v La etapa y sus enlaces aparecen como metadatos de sucesos en los Servicios de gestin de metadatos de la suite de IBM InfoSphere DataStage. v Soporte para soporte multilingstico.
60
Funcionalidad no soportada
La siguiente funcionalidad no est soportada: v Prestaciones de transformacin 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 creacin de ventanas. Generan anomalas 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 ejecucin de mandato en el motor.
Terminologa
La lista siguiente describe los trminos de la etapa Command utilizados en este documento: Trmino Descripcin Rutinas anteriores y posteriores Las rutinas externas que puede definir para que se invoquen antes de que se inicie un trabajo y despus 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 despus 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.
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 informacin sobre cmo utilizar estos mandatos, consulte Utilizacin de mandatos en la pgina 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 an se est ejecutando despus de procesar todos los datos. Si selecciona esta opcin 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 cdigo 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 cdigo de retorno. De forma adicional, se inhabilitan las opciones siguientes: Terminar anormalmente si el mandato falla (etapa) Repetir para cada fila (entrada) Ejecutar mandato despus 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 va de acceso, el archivo se crea en el directorio padre para el proyecto. Si deja el campo en blanco, no se crea ningn archivo de salida. v Descripcin. Opcional. Describe el objetivo de la etapa Command.
62
63
columnas de salida dependen ms 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 mnima al definir las columnas de salida de la etapa Command. El paso a travs de columnas debe tener los mismos tipos datos y tamaos que las correspondientes columnas de entrada. No obstante, puede editar los campos Nombre, Elemento de datos, Derivacin y Descripcin para las columnas.
Utilizacin 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 lneas de mandatos que no son interactivas y no precisan ninguna entrada.
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
dsjob -run [ -mode ] [ -param ] [ -warn ] [ -rows ] [ -wait ] [ -stop ] [ -jobstatus ] [ -userstatus ] trabajo de proyecto
Para ver informacin sobre la sintaxis completa, consulte InfoSphere DataStage Programmer's Guide. Nota: Si selecciona Omitir en el recuadro de dilogo Conectar con proyecto mientras inicia InfoSphere DataStage, deber utilizar las opciones de usuario y contrasea 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, adems del cdigo de retorno para el mandato. El cdigo de retorno se enva automticamente como la primera columna al enlace de salida. v En un archivo. Nota: Puesto que la etapa enva el cdigo de retorno para el mandato como la primera columna de un enlace de salida, la interfaz grfica de usuario lo proporciona automticamente. Si utiliza el editor de cuadrculas estndar, deber aadir 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 comunicacin entre los procesos de IBM InfoSphere DataStage que se ejecutan simultneamente en el mismo trabajo. Permite disear 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 ms informacin sobre cmo se ejecutan realmente los trabajos de InfoSphere DataStage como procesos. Para ello, consulte Trabajos y procesos de IBM InfoSphere DataStage en la pgina 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 orgenes de datos:
65
En este ejemplo, el trabajo se ejecutar como dos procesos: uno que maneja la comunicacin desde la etapa Sequential File a la etapa IPC y otro que maneja la comunicacin 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 simultneamente para que la transferencia sea mucho ms rpida. Tambin puede utilizar la etapa IPC para especificar explcitamente que las etapas activas conectadas se ejecuten como procesos aparte. Esto ofrece muchas ventajas de rendimiento para los sistemas de multiprocesador. Tambin puede especificar este comportamiento implcitamente activando el almacenamiento intermedio de filas entre procesos, ya sea para todo el proyecto mediante el cliente del
66
67
v Etapa. La pgina Etapa tiene dos separadores, General y Propiedades. La pgina General permite especificar una descripcin opcional de la etapa. El separador Propiedades permite especificar las propiedades de la etapa. v Entradas. La etapa IPC slo puede tener un enlace de entrada. La pgina Entradas muestra informacin sobre el enlace. v Salidas. La etapa IPC slo puede tener un enlace de salida. La pgina Salidas muestra informacin sobre el enlace.
68
La etapa FTP Plug-in proporciona un rpido y eficiente acceso de archivos remoto a los usuarios utilizando servidores FTP en plataformas remotas. La etapa FTP Plug-in no precisa ninguna instalacin adicional en las plataformas remotas. De forma adicional, la etapa de conector FTP proporciona la opcin de ejecutar mandatos Before/After en la mquina 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 mquina remota que va a recibirlo. v Despus de que finalice la transferencia de archivos. Puede utilizar el mandato After (despus) 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 nmero 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.
69
v Permite validar la existencia del archivo remoto en el cliente del Director de InfoSphere DataStage (slo para el enlace de salida). v Soporta el soporte multilingstico. La siguiente funcionalidad no est soportada: v Carga masiva para enlaces de entrada de secuencia v Bsquedas con clave en una etapa de transferencia de archivos v Procedimientos almacenados
Terminologa
En la lista siguiente se describen los trminos de FTP Plug-in utilizados en este documento: Trmino Descripcin mandato after El mandato que se ejecuta en la mquina remota utilizando una sesin de telnet si la transferencia ha finalizado. mandato before El mandato que se ejecuta en la mquina remota utilizando una sesin de telnet antes de iniciar la transferencia. FTP Protocolo de transferencia de archivos. Una prestacin 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 transaccin. telnet El nombre de una sesin de protocolo que acta como una emulacin de terminal remoto estndar con las comunicaciones con el host a travs de una red. transaccin Una secuencia de operaciones de E/S de archivo que se trata como una operacin lgica en relacin con la recuperacin y la visibilidad para otros usuarios.
Instalacin 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 diseador 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 diseador del trabajo no suministra ningn valor. v Descripcin describe las propiedades.
70
Propiedades de etapa
La etapa FTP Plug-in da soporte a las siguientes propiedades de etapa:
Solicitud Nombre del servidor Tipo Serie Predeterminada Ninguno Descripcin Necesario. El nombre de la mquina de host en la que reside el archivo para el servidor FTP. Necesario. Nmero de puerto del servidor FTP de la mquina remota. Necesario. Nmero de puerto del servidor telnet de la mquina remota. Necesario. Nombre de usuario para iniciar la sesin en la mquina remota. La contrasea para el usuario especificado. Es necesaria si la mquina remota utiliza una contrasea para el "Nombre de usuario." El nombre de cuenta para el inicio de sesin de FTP remoto. Slo es necesario si la mquina remota necesita informacin de cuentas de usuario durante el proceso de inicio de sesin. Opcional. Controla el tipo de informacin de rastreo que se aade al registro. Utilice uno de los siguientes niveles de rastreo: 0 Ningn rastreo 1 Propiedades de la etapa del informe Reintentos Largo 3 Opcional. El nmero de reintentos si falla la conexin. Opcional. Nmero de segundos que se debe esperar entre reintentos si la conexin falla. Necesaria si se utilizan servicios de telnet. Nmero total de solicitudes previstas que se reciben durante el proceso de inicio de sesin en el servidor de telnet.
Captulo 4. Etapas de trabajo de servidor
Largo
21
Largo
23
Nombre de usuario
Serie
Ninguno
Serie
Ninguno
Nombre de cuenta
Serie
Ninguno
Nivel de rastreo
Largo
Intervalo de reintentos
Largo
15
Serie
71
Tipo Serie
Descripcin Necesaria si se utilizan servicios de telnet. La serie literal (no distingue entre maysculas y minsculas) que enva el servidor de telnet y solicita al proceso de IBM InfoSphere DataStage los datos de inicio de sesin. Necesaria si se utilizan servicios de telnet. El nombre de usuario de telnet para iniciar sesin en la sesin de telnet. Necesaria si se utilizan servicios de telnet. La serie literal (no distingue entre maysculas y minsculas) que enva el servidor de telnet y solicita al proceso de InfoSphere DataStage los datos de contrasea. Necesaria si se utilizan servicios de telnet. Contrasea de telnet del usuario de telnet especificado. Las solicitudes que son necesarias para conectarse a un sistema de destino mediante telnet, adems del inicio de sesin y la contrasea. Las repuestas que son necesarias para conectarse a un sistema de destino mediante telnet, adems del inicio de sesin y la contrasea. Nmero de milisegundos que se esperar a que finalicen los mandatos anterior (Before) y posterior (After) de Telnet.
Respuesta de Telnet 1
Serie
Ninguno
Solicitud de Telnet 2
Serie
Contrasea
Respuesta de Telnet 2
Serie
Ninguno
Solicitud de Telnet n
Serie
Ninguno
Respuesta de Telnet n
Serie
Ninguno
Int
50
72
Serie
Ninguno
Lista
ASCII
73
Tabla 8. Propiedades del enlace de entrada (continuacin) Solicitud Espacios entre columnas Tipo Largo Predeterminada 0 Descripcin El nmero de espacios entre las columnas de anchura fija en el archivo remoto. Es necesario si "Columnas con anchura fija" est establecido en S. 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 carcter sin comillas o el valor ASCII del carcter que desea utilizar. Opcional y vlido solamente si "Columnas con anchura fija" est establecido en No. El carcter nico se utiliza para incluir un valor de datos que contiene un carcter delimitador como datos. Tambin puede entrar el valor ASCII para el carcter que desee utilizar. Puede suprimir "Carcter de comillas" si no entra ningn valor. Necesario. El nico carcter entrado para ser interpretado como el carcter de escape. Opcional. Especifica la serie que debe interpretarse como el valor vaco de SQL. Es necesario si "Tipo de representacin de datos" est establecido en ASCII. Especifica si se debe transferir la primera lnea al archivo remoto (es decir, es posible que contenga nombres de columnas). Necesario. Indica si desea omitir la ltima lnea nueva al final de los datos al enviarlos a la mquina remota.
Delimitador de columna
Char
, (coma)
Carcter de comillas
Char
Carcter de escape
Char
Serie vaca
Serie
Ninguno
No
Serie
No
74
Tabla 8. Propiedades del enlace de entrada (continuacin) Solicitud Anexar a archivo Tipo Serie Predeterminada No Descripcin 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. Opcional. Indica si el "Mandato de copia de seguridad de Telnet" debe ejecutarse antes de continuar con el trabajo. Opcional. Especifica el mandato de Telnet que debe ejecutarse en la mquina remota antes de que se grabe el trabajo en el archivo remoto. Este mandato de Telnet slo se ejecuta si "Realizar copia de seguridad del archivo" est fijado en S. Utilice este mandato para crear copias de seguridad del archivo. Opcional. El mandato de Telnet que se debe ejecutar en la mquina remota antes de iniciar un trabajo. Opcional. Especifica el mandato de Telnet que debe ejecutarse en la mquina remota despus de completar un trabajo. Opcional. Especifica el mandato de Telnet que debe ejecutarse antes de iniciar la transferencia de archivos a la mquina remota. Utilice este mandato para crear copias temporales de los archivos. Opcional. Especifica el mandato de Telnet que debe ejecutarse despus de una transferencia de datos satisfactoria. Utilice este mandato para suprimir cualquier archivo temporal que se haya creado.
No
Serie
Ninguno
Serie
Ninguno
Serie
Ninguno
Serie
Ninguno
Serie
Ninguno
75
Tabla 8. Propiedades del enlace de entrada (continuacin) Solicitud Mandato de retrotraccin de transacciones Tipo Serie Predeterminada Ninguno Descripcin Opcional. Especifica el mandato de Telnet que debe ejecutarse si se produce un error al enviar el archivo a la mquina 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 anomala o una terminacin anormal. Especifica el proceso que inicia la conexin 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. Establzcalo en Activos para los enlaces de entrada de forma que el servidor FTP inicie la conexin para la transferencia de datos. De lo contrario, no se aceptarn los datos.
Lista
Pasiva
76
Tabla 8. Propiedades del enlace de entrada (continuacin) Solicitud Nivel de rastreo de enlace Tipo Largo Predeterminada 0 Descripcin Opcional. Controla el tipo de informacin de rastreo que se aade al registro. Los niveles de rastreo disponibles son: 0 Ningn rastreo 1 Propiedades de enlace 2 Rendimiento 4 Mensajes de FTP 8 Mensajes de Telnet 16 Rastreo de funcin 32 Volcado de datos de Telnet Puede combinar los niveles de rastreo. Por ejemplo, un nivel de rastreo de 3 significa que se aadirn las propiedades del enlace y los mensajes de rendimiento en el registro. Longitud del Largo almacenamiento intermedio 4096 Necesario. Establece la longitud (en fragmentos superiores a 512 bytes) de los almacenamientos intermedios de recepcin y de envo 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 despus de mandato, Mandato de copia de seguridad de Telnet, Mandato de inicio de transaccin, Mandato de confirmacin de transaccin o Mandato de retrotraccin de transaccin. Por ejemplo, el siguiente mandato de UNIX copia un archivo a otro archivo en un directorio diferente:
cp /nombre_va_acceso/nombre_archivo1 /nombre_va_acceso2/nombre_archivo2
Serie
Ninguno
77
Tabla 9. Propiedades del enlace de salida (continuacin) Solicitud Tipo de representacin de datos Tipo Lista Predeterminada ASCII Descripcin Necesario. Controla cmo se leen o se graban los datos del archivo remoto. Para la representacin ASCII, la transferencia de datos utiliza el NVT-ASCII estndar, sobre todo para archivos de texto. Para la representacin 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 representacin 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 lnea para identificar el final de una fila. Se leern los datos hasta que se agoten los metadatos. Para los datos de anchura fija, esto significa el total de la longitud de las columnas ms los espacios.Para los datos delimitados, esto significa el nmero de columnas. Si se establece en No, el final de la fila viene determinado por la secuencia de fin de la lnea [CR] [LF]
78
Tabla 9. Propiedades del enlace de salida (continuacin) Solicitud Finalizacin de lnea Tipo Lista Predeterminada [CR] [LF] (Terminacin de estilo DOS) Descripcin Especifica la secuencia de terminacin de fila (fin de la lnea) en el archivo remoto. 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 representacin de datos" se establece en ASCII, los valores vlidos son sin terminacin ni [CR] [LF] (terminador de estilo DOS). Si se establece en "Ninguna terminacin", "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. El nmero de espacios entre las columnas de anchura fija en el archivo remoto. Es necesario si "Columnas con anchura fija" est establecido en S. 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 carcter sin comillas o el valor ASCII del carcter que desea utilizar. Opcional y vlido solamente si "Columnas con anchura fija" est establecido en No. El carcter nico se utiliza para incluir un valor de datos que contiene un carcter delimitador como datos. Tambin puede entrar el valor ASCII para el carcter que desee utilizar. Puede suprimir "Carcter de comillas" si no entra ningn valor.
Largo
Delimitador de columna
Char
, (coma)
Carcter de comillas
Char
79
Tabla 9. Propiedades del enlace de salida (continuacin) Solicitud Carcter de escape Tipo Char Predeterminada \ (barra inclinada invertida) Descripcin Necesario. El nico carcter entrado para ser interpretado como el carcter de escape. Opcional. Especifica la serie que debe interpretarse como el valor vaco de SQL. Es necesario si "Tipo de representacin de datos" est establecido en ASCII. Especifica si se debe transferir la primera lnea al archivo remoto (es decir, es posible que contenga nombres de columnas). Opcional. El mandato de Telnet que se debe ejecutar en la mquina remota antes de iniciar un trabajo. Opcional. Especifica el mandato de Telnet que debe ejecutarse en la mquina remota despus de completar un trabajo. Especifica el proceso que inicia la conexin 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.
Serie vaca
Serie
Ninguno
No
Serie
Ninguno
Serie
Ninguno
Lista
Activa
80
Tabla 9. Propiedades del enlace de salida (continuacin) Solicitud Puerto de datos de FTP Tipo Lista Predeterminada Ninguno Descripcin Opcional. El nmero de puerto exclusivo en el que se reciben datos desde el servidor FTP de la mquina remota. El servidor FTP de la mquina remota se conecta a este puerto para transferir el archivo remoto. Si no especifica un valor o dicho valor es 0, la etapa configura automticamente un nmero de puerto disponible para el usuario. Si especifica un valor, ste debe estar entre el 1025 y el 4999. Para obtener ms informacin acerca del modelo de FTP, consulte el protocolo de transferencia de archivos (FTP) 959 RFC estndar. Nivel de rastreo de enlace Largo 0 Opcional. Controla el tipo de informacin de rastreo que se aade al registro. Los niveles de rastreo disponibles son: 0 Ningn rastreo 1 Propiedades de enlace 2 Rendimiento 4 Mensajes de FTP 8 Mensajes de Telnet 16 Rastreo de funcin 32 Volcado de datos de Telnet Puede combinar los niveles de rastreo. Por ejemplo, un nivel de rastreo de 3 significa que se aadirn las propiedades del enlace y los mensajes de rendimiento en el registro. Longitud del Largo almacenamiento intermedio 4096 Necesario. Establece la longitud (en fragmentos superiores a 512 bytes) de los almacenamientos intermedios de recepcin y de envo del FTP para filas de datos antes de ser enviadas o recuperadas.
81
82
v Se aaden los caracteres de terminacin especificados por Finalizacin de lnea a cada fila de datos y se envan a la mquina remota. Nota: La modalidad binaria no est soportada en el lienzo del servidor paralelo. Consulte la propiedad de entrada Tipo de representacin de datos y la propiedad de salida Tipo de representacin de datos.
Para que este trabajo pueda compilarse y ejecutarse segn 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 dilogo 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.
83
Para obtener ms informacin sobre estas rutinas, consulte Subrutinas anteriores y posteriores a la etapa. Tambin tiene un separador Propiedades que permite especificar propiedades que afectan al comportamiento de la etapa. Para obtener detalles, consulte Definicin 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 dilogo. Los cambios se guardan cuando se guarda el trabajo.
Nombre_columna especifica una o varias columnas que se deben ordenar. orden_clasificacin define el orden de clasificacin de la siguiente manera:
84
En un entorno de soporte multilingstico, el convenio de clasificacin del entorno local afectar al orden de clasificacin. El convenio de clasificacin predeterminado se establece en el cliente del Administrador, pero puede establecerse para trabajos individuales en el recuadro de dilogo Propiedades del trabajo. Por ejemplo:
FIRSTNAME d, SURNAME D
Especifica que las filas se ordenan segn la columna FIRSTNAME y la columna SURNAME en orden descendente.
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 pgina 5 para ver cmo se ejecutan los trabajos de IBM InfoSphere DataStage como procesos. El siguiente diagrama ilustra cmo puede utilizarse la etapa Link Partitioner en un trabajo de la siguiente manera.
Para que este trabajo pueda compilarse y ejecutarse segn 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 dilogo 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.
86
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 despus de que la etapa haya procesado los datos. Por ejemplo, se puede especificar una rutina que enve un mensaje electrnico 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 dilogo Etapa Link Partitioner. Un cdigo de retorno 0 de la rutina indica que ha resultado satisfactoria y cualquier otro cdigo indica que la rutina ha resultado anmala 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 dilogo Etapa Link Partitioner. Debe instalar o importar la rutina "ausente" o seleccionar una rutina alternativa que utilizar.
87
Guardar esta en el repositorio si es necesario). Tenga en cuenta que los metadatos del enlace de entrada deben ser idnticos a los metadatos de 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 grfica de usuario (GUI) para definir la operacin de unin que se utiliza para fusionar dos archivos. Los dos archivos de entrada que se fusionarn deben ser archivos de texto secuenciales.
88
89
v Slo correlaciones cargadas. Muestra una lista de las correlaciones que estn cargadas en ese momento. v Permitir correlacin por columnas. Habilita la correlacin de juegos de caracteres por columna. Las columnas de un registro pueden utilizar distintas correlaciones dentro de los metadatos. v Utilizar parmetro de trabajo.... Especifica los valores de los parmetros para el trabajo. Utilice el formato #Parm#, donde Parm es el nombre del parmetro de trabajo. La serie #Parm# se sustituye por el parmetro de trabajo cuando se ejecuta el trabajo.
El separador General
Si selecciona la pgina Salida, se abrir el separador General. Nota: El botn Columnas... elabora un listado de las columnas en el enlace de salida y slo se incluye por motivos de compatibilidad con otras etapas. El separador General contiene los campos siguientes: v Nombre del primer archivo. La va 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. Tambin puede incluir un parmetro de trabajo en la va de acceso del directorio.
90
v Nombre del segundo archivo. La va 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. Tambin puede incluir un parmetro de trabajo en la va de acceso del directorio. v Tipo de unin. El tipo de unin que desea efectuar entre dos archivos de entrada. Puede elegir uno de los siguientes tipos de operacin de unin:
Tipo de unin Unin interna pura Operacin A AND B Descripcin Slo fusiona aquellas filas que tienen los mismos valores clave en ambos archivos de entrada. Fusiona todas las filas de los dos archivos. Fusiona todas las filas de los dos archivos excepto aquellas filas con los mismos valores clave. Fusiona todas las filas del primer archivo (A) con filas del segundo archivo (B) con el mismo valor clave. Fusiona todas las filas del segundo archivo (B) con filas del primer archivo (A) con el mismo valor clave. Fusiona todas las filas del primer archivo excepto las filas con el mismo valor clave en el segundo archivo (B). Fusiona todas las filas del segundo archivo excepto las filas con el mismo valor clave en el primer archivo (A).
A OR B A NOR B
Slo izquierda
A NOT B
Slo derecha
B NOT A
v Nivel de rastreo. Especifica un nivel de rastreo para el enlace de salida. El nivel de rastreo especifica el tipo de informacin que debe incluirse en el archivo de registro de trabajo. Puede especificar los siguientes niveles de rastreo: 0 - No se graba informacin en el archivo de registro 1 - Las propiedades del enlace de salida se graban en el archivo de registro
91
Para los datos de anchura fija, esto significa el total de la longitud de las columnas ms los espacios. Para los datos delimitados, esto significa el nmero de columnas. Si se borra, el final de la fila se determina por la secuencia de fin de la lnea. El valor predeterminado es sin seleccionar. v Delimitador. Especifica el delimitador que separa los campos de datos del archivo. Esta opcin est habilitada si se ha borrado Columnas de anchura fija. Puede entrar un nico carcter sin comillas o el valor ASCII del carcter que desea utilizar. El valor predeterminado es , (coma). v Carcter de cita. Especifica el carcter que se utiliza para incluir un valor de datos que contiene el carcter delimitador como datos. Esta opcin est habilitada si se ha borrado Columnas de anchura fija. Tambin puede entrar el valor ASCII de tres dgitos para el carcter que desee utilizar. Todos los valores con una longitud del 1 al 2 se tratarn como series. Puede entrar "097" para "a". Puede suprimir el Carcter de cita si no entra ningn valor. El valor predeterminado es " (comillas dobles). v Carcter de escape. Especifica un nico carcter para que sea interpretado como un carcter de escape. Esta opcin est habilitada si se ha borrado Columnas de anchura fija. El valor predeterminado es \ (barra inclinada invertida). v Espacios entre columnas. Especifica el nmero de espacios entre columnas en un archivo secuencial con columnas de anchura fija. El valor predeterminado es 0. v Serie vaca. Especifica la serie utilizada para el valor nulo de SQL. No existe ningn valor predeterminado. v Estilo Unix (LF). Especifica si se utiliza un carcter de avance de lnea para indicar la secuencia de fin de la lnea en un archivo de entrada. De forma predeterminada, no se selecciona Estilo Unix (LF). v Estilo Dos (CR LF). Especifica si se utiliza una combinacin de retorno de carro y de caracteres de avance de lnea para indicar la secuencia de fin de la lnea en el archivo de entrada. De forma predeterminada, no se selecciona Estilo Dos (LF). v Ninguna. Especifica si debe utilizarse un terminado de fin de la lnea. Ninguno estar habilitado si se ha seleccionado Columnas de anchura fija y Comprobar datos con metadatos. De forma predeterminada, no se selecciona la opcin Ninguno. Separadores Columnas del primer y del segundo archivo: Acerca de esta tarea Mediante las pginas 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 Caractersticas del archivo secuencial, incluyendo tipo de SQL, longitud, escala, capacidad de nulos y visualizacin de la columna v Correlacin de juego de caracteres utilizada para la columna Pulse el separador Columnas de primer archivo o Columnas de segundo archivo de la pgina Propiedades de archivos de entrada Se abrir la pgina Columnas de primer archivo o Columnas de segundo archivo. Tiene dos opciones para entrar informacin sobre las columnas: v Puede utilizar informacin de una tabla existente para especificar las columnas de archivo de entrada. v Puede entrar la informacin sobre la columna manualmente. Cmo utilizar la informacin de la columna de una tabla existente: Acerca de esta tarea Puede utilizar informacin 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.
92
Para transferir informacin sobre columnas de una tabla existente: Procedimiento 1. Pulse Cargar... . Aparecer el recuadro de dilogo Definicin de tabla. 2. Utilice el ratn para seleccionar la definicin de tabla en el panel izquierdo y pulse Aceptar. Las tablas listadas ya estn definidas en el repositorio. a. Si no sabe la definicin de tablas, pulse Buscar... . Aparecer el recuadro de dilogo Buscar. b. En el campo Texto de bsqueda, entre una serie de texto. La primera definicin 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 informacin de columna: Acerca de esta tarea Puede entrar informacin sobre columnas manualmente especificando dicha informacin en la pgina Columnas del primer archivo. Entre un nombre de columna en Lista de nombres de columna y utilice los botones de Acciones de columna (Aadir, Insertar Antes, Modificar, Eliminar o Eliminar todo) para especificar dnde colocar los nombres en la Lista de nombres de columna. El sistema le solicitar que entre la informacin que se describe a continuacin. 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 pgina Correlacin que define el enlace de salida. No existe ningn valor predeterminado. v Tipo de SQL. Especifica el tipo de datos SQL. No existe ningn valor predeterminado. v Longitud. Define la precisin de los datos. Es la longitud de los datos CHAR o la longitud mxima de los datos VARCHAR. Si se trata de datos numricos, es el nmero de dgitos de precisin. El valor predeterminado es 0. v Escala. Especifica el factor de escala de los datos. Si se trata de datos numricos, es el nmero de dgitos 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 Visualizacin. Especifica el nmero mximo de caracteres necesarios para visualizar los datos de la columna. El valor predeterminado es 0. v Correlacin de soporte multilingstico. Especifica una correlacin diferente para la columna si se ha habilitado Correlacin por columna (consulte Definicin de la correlacin de juego de caracteres en la pgina 89). Seleccione una correlacin de la lista. El recuadro de dilogo Guardar definicin de tabla: Una vez haya especificado los nombres de las columnas y la correspondiente informacin necesaria, puede grabar dicha informacin en una tabla nueva. Para guardar la informacin de columna en una tabla, pulse Guardar.... Se abrir el recuadro de dilogo Guardar definicin de tabla. El recuadro de dilogo Guardar definicin 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 definicin de tabla se almacena de acuerdo con la fuente de datos en la ramificacin Definiciones de tabla. El valor predeterminado es Guardado. v Nombre de la fuente de datos. Constituye la segunda parte del identificador de la definicin de tabla y proporciona el nombre creado bajo la ramificacin de tipo de fuente de datos. Facilita un medio para realizar un seguimiento de dnde se ha originado la definicin de datos. El valor predeterminado es el nombre del enlace.
Captulo 4. Etapas de trabajo de servidor
93
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. v Descripcin breve. Una descripcin breve opcional de los datos. El valor predeterminado es la hora y la fecha guardadas. v Descripcin explicativa. Una descripcin explicativa opcional de los datos.
El separador Correlacin
Debe especificar las claves en el primer y el segundo archivo de entrada secuencial para que se utilicen en la operacin de unin. Para especificar las claves, pulse el separador Correlacin en la pgina Salida. Se abrir el separador Correlacin. Especificacin de claves para la unin: Acerca de esta tarea Seleccione claves del Primer (y el Segundo) Nombre de columna de archivos en la parte izquierda de la pgina y arrstrelos a la Primera (y a la Segunda) Clave de columna de archivos a la derecha. Estas claves se utilizan en la operacin de unin para comparar dos archivos. Puede especificar varias claves para la operacin de unin. Si utiliza varias claves, debe tener el mismo nmero 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, seleccinela y pulse con el botn derecho del ratn Borrar entrada del men de atajo. Especificacin de columnas de salida: Debe especificar el contenido de las columnas que deben incluirse en el enlace de salida. Utilice la pgina Correlacin para especificar el contenido de las columnas. Acerca de esta tarea En la pgina Correlacin, los Nombres de columna del primer archivo y Nombres de columna del segundo archivo ya estn definidos. Se han definido en la pgina Propiedades de archivos de entrada. En la pgina Correlacin, 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 Correlacin de la columna de entrada. El Nombre de columna de salida se genera automticamente. 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 explcita los nombres y las propiedades de las columnas en el enlace de salida, vaya a la pgina Columnas, tal como se describe en El separador Columnas en la pgina 95. Puede seleccionar varias columnas a la vez para arrastrarlas de la lista Nombres de columna del primer (o segundo) archivo a la lista Correlacin 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 Mays y pulse para seleccionar varias columnas. Puede pulsar el botn derecho del ratn para suprimir un elemento de la lista Correlacin 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 pgina 95.
94
Nota: Si cambia los Nombres de columna del primer archivo (o el segundo archivo) a la izquierda de la pgina, deber comprobar la informacin de correlacin (es decir, las claves de correlacin y la lista de columnas) a la derecha de la pgina. Si los nombres de columna de la derecha de la pgina no coinciden con los de la izquierda, arrastre los nombres de columna correctos de la izquierda a la derecha.
El separador Columnas
Puede utilizar el separador Columnas para especificar el nombre y el formato de las columnas en el enlace de salida. Tambin puede utilizar el separador Columnas para especificar una correlacin 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 informacin de una tabla existente para especificar las columnas. Consulte dicha seccin para ver cmo puede utilizar el botn Cargar... para transferir informacin de una tabla. Nota: Debe establecer todas las columnas en "Con posibilidades de nulos", excepto si establece la fusin en Unin interna pura, tal como se describe en Tipo de unin. 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. Derivacin. Especifica que desea resumir utilizando esta columna. Clave. Define si la columna es una clave. Tipo de SQL. Especifica el tipo de datos SQL. El valor predeterminado es (Desconocido). Longitud. Define la precisin de los datos. Es la longitud de los datos CHAR o la longitud mxima de los datos VARCHAR. Si se trata de datos numricos, es el nmero de dgitos de precisin. v Escala. Especifica el factor de escala de los datos. Si se trata de datos numricos, es el nmero de dgitos 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 unin interna pura. El valor predeterminado es No. v Visualizacin. Especifica el nmero mximo de caracteres necesarios para visualizar los datos de la columna. v v v v v Elemento de datos. Especifica el tipo de datos de la columna. v Descripcin. Especifica una descripcin de texto opcional de la columna. v Correlacin de soporte multilingstico. Si se habilita la correlacin por columnas, especifica la correlacin que se ejecuta para la columna. Seleccione uno de los nombres de correlacin en la lista desplegable. El valor predeterminado es el del proyecto (MS1252). Supresin de columnas en el enlace de salida: Puede suprimir las columnas del enlace de salida. Acerca de esta tarea En la pgina Columnas, puede suprimir las columnas que ha definido en el enlace de salida. Procedimiento 1. Seleccione la fila que desea suprimir. 2. Pulse la tecla Suprimir.
95
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 correlacin 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. 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 ms 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 no soportada
La siguiente funcionalidad no est soportada: v Compatibilidad con releases anteriores al 7.0 de IBM InfoSphere DataStage. v Los giros verticales, es decir, la correlacin 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 estn orientados a las claves. Utilice el campo Derivacin en la cuadrcula de columna del enlace de salida para especificar los giros. Un campo vaco 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.
Derivacin individual
Si el campo Derivacin 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 Derivacin se correlaciona con esta columna de salida. Una columna que tenga una derivacin 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 ms de una columna de entrada, es decir, cuando aparecen varios nombres de columna de entrada en el campo Derivacin, se genera una tabla de salida con ms filas que la tabla de entrada. Cada columna de entrada especificada en el campo Derivacin para las
96
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.
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 100 101 LNAME Smith Yamada Ventas_ENE $1,234.00 $1,245.00 Ventas_FEB $1,456.00 $1,765.00 Ventas_MAR $1,578.00 $1,934.00
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.
Captulo 4. Etapas de trabajo de servidor
97
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 nmero mximo de filas de salida que resulta de una nica fila de entrada viene determinado por la columna de salida que se deriva de la mayora de columnas de entrada. Las tres filas de salida de los datos de ventas que resultan de cada fila de entrada en este ejemplo son de la manera siguiente:
Tabla 13. Filas de destino de salida CUSTID 100 100 100 101 101 101 Apellido Smith Smith Smith Yamada Yamada Yamada Ventas $1,234.00 $1,456.00 $1,578.00 $1,245.00 $1,765.00 $1.934.00
Si el giro incluye cualquier derivacin con menos del nmero mximo de filas de salida pero ms de una fila, la fila de salida contendr un valor nulo para cada columna en la que no est disponible una derivacin. Por ejemplo, supongamos que se pide al cliente que realice los pagos en su cuenta dos veces al ao, en junio y en diciembre. Es posible que los datos de origen sean como los siguientes:
Tabla 14. Ejemplo de pagos CUSTID 100 101 LNAME Smith Yamada Ventas_ENE $1,234.00 $1,245.00 Ventas_FEB $1,456.00 $1,765.00 Ventas_MAR $1,578.00 $1,934.00 Pagos_JUN $6,298.00 $7,290.00 Pagos_DIC $7,050.00 $7,975.00
Supongamos que el enlace de salida contiene una derivacin adicional para pagos:
Tabla 15. Columnas de salida con detalles de pagos Nombre de la columna CUSTID Apellido Ventas Pagos LNAME Ventas_ENE, Ventas_FEB y Ventas_MAR Pagos JUN, Pagos DIC Derivacin Tipo de SQL Entero VarChar Decimal Longitud 10 10 10 2 Escala
Los datos de salida en las filas de destino despus del giro podran ser los siguientes:
Tabla 16. Datos de salida en filas de destino despus de giro CUSTID 100 100 100 101 101 LNAME Smith Smith Smith Yamada Yamada
Gua del desarrollador de Server Job
98
Tabla 16. Datos de salida en filas de destino despus de giro (continuacin) CUSTID 101 LNAME Yamada Ventas $1,934.00 Pagos null
Pgina Entrada
La pgina Entrada contiene varios separadores que describen los datos que estn entrando en la etapa Row Merger.
Captulo 4. Etapas de trabajo de servidor
99
El separador General contiene un campo de descripcin que permite entrar una descripcin opcional del enlace de entrada. El separador Formato y el separador Columnas se describen ms abajo.
Separador Formato
Utilice este separador para especificar el modo en que los datos ledos en columnas individuales en cada fila de entrada se formatearn 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 seleccin para generar la salida de los datos en un formato de anchura fija. La anchura de cada campo se toma desde el tamao de visualizacin de SQL de las columnas de entrada (establecido en la columna Visualizacin en la Cuadrcula de columnas de la pgina Entradas, separador Columnas). De forma predeterminada, esta opcin est borrada. v Supresin de advertencias de truncamiento de filas. Esta opcin slo est disponible si se ha seleccionado Columnas de anchura fija. Si las filas de entrada contienen ms 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 slo est interesado en las tres primeras columnas y desee prescindir del resto), seleccione este recuadro de seleccin. v Delimitador. Esta opcin 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 carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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 Carcter de cita. Esta opcin no est disponible si se ha seleccionado Columnas de anchura fija. Especifica el carcter utilizado para incluir series. De forma predeterminada, este campo contiene un carcter de comillas dobles. Puede entrar un nico carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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 carcter de cita. v Espacios entre columnas. Esta opcin slo est disponible si se ha seleccionado Columnas de anchura fija. Contiene un nmero para representar el nmero 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 opcin slo est disponible si se ha seleccionado Columnas de anchura fija. Contiene el carcter utilizado para rellenar las columnas ausentes. De forma predetermina es #, pero aqu se puede establecer otro carcter. El separador Formato tambin tiene un botn Cargar. Si tiene definiciones de tabla que incluyen informacin sobre el formato, puede cargar detalles sobre el formato desde estas definiciones de tabla directamente a la pgina Formato: 1. Pulse Cargar. Aparecer el recuadro de dilogo Cargar definiciones de tabla. 2. Realice una bsqueda para encontrar la definicin de tabla que contenga el formato que desea cargar. 3. Pulse Aceptar. Se cargarn los detalles sobre el formato.
Separador Columnas
Las entradas en la cuadrcula de columnas especifican el formato de los datos que se estn leyendo desde las filas de entrada. La cuadrcula tiene campos estndar que tienen todas las definiciones de columna.
100
Pgina Salida
La pgina 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 Descripcin. Descripcin opcional del enlace de salida.
Separador Columnas
Las entradas en la cuadrcula de columnas especifican el formato de los datos que se estn grabando al enlace de entrada. La cuadrcula tiene campos estndar que tienen todas las definiciones de columna. El campo Derivacin no se utiliza. Como mnimo, debe definir una columna que lleve los datos fusionados. Tambin puede definir columnas adicionales para que lleven datos como entrada en la etapa.
101
v Finalizacin de lnea. Esta opcin slo est disponible si ha seleccionado la opcin Varias lneas para especificar que la etapa est desconcatenando filas de entrada. Especifica el carcter/caracteres que se colocan como un delimitador entre las filas concatenadas, de forma que la etapa sabe dnde partirlas. Elija entre: Estilo Unix (LF). El delimitador es un carcter de salto de lnea. Estilo DOS (CR LF). El delimitador es un carcter de retorno de carro y un carcter de salto de lnea. Ninguna. No existe ningn delimitador. v Descripcin. Entre una descripcin opcional de la etapa.
Pgina Entrada
La pgina Entrada contiene varios separadores que describen los datos que estn 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 Descripcin. Entre una descripcin opcional del enlace de entrada.
Separador Columnas
Las entradas en la cuadrcula de columnas especifican el formato de los datos que se estn leyendo desde el enlace de entrada. La cuadrcula tiene campos estndar que tienen todas las definiciones de columna. Como mnimo, debe definir una columna que lleve la serie de datos que la etapa est partiendo. Si es necesario, tambin puede definir columnas adicionales. Todas las columnas que se definan aqu y en el separador Columnas de la pgina Salida se pasarn directamente a travs de la etapa.
Pgina Salida
La pgina Salida contiene varios separadores que describen los datos editados por la etapa Row Splitter. El separador General contiene un campo de descripcin que permite entrar una descripcin opcional del enlace de entrada. El separador Formato y el separador Columnas se describen ms abajo.
Separador Formato
Utilice este separador para especificar cmo 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 seleccin si los datos entrantes estn en un formato de anchura fija. La anchura de cada campo se toma desde el tamao de visualizacin de SQL de las columnas de salida (establecido en la columna Visualizacin en la Cuadrcula de columnas de la pgina Entradas, separador Columnas). De forma predeterminada, esta opcin est borrada. v Supresin de advertencias de truncamiento de filas. Si la fila de entrada contiene ms 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 slo est interesado en las tres primeras columnas y desee prescindir del resto), seleccione este recuadro de seleccin.
102
v Mensaje de columnas ausentes. Si en la fila de entrada hay menos campos de datos que columnas de divisin definidas para los mismos, esta opcin permite especificar la accin 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 efecta ninguna accin. Los nulos de SQL graban en columnas adicionales y el trabajo prosigue. v Delimitador. Esta opcin 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 carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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 Carcter de cita. Esta opcin no est disponible si se ha seleccionado Columnas de anchura fija. Especifica el carcter utilizado para incluir series. De forma predeterminada, este campo contiene un carcter de comillas dobles. Puede entrar un nico carcter imprimible o un nmero decimal o hexadecimal para representar el cdigo ASCII del carcter que desea utilizar. Los cdigos ASCII vlidos 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 carcter de cita. v Espacios entre columnas. Esta opcin slo est disponible si se ha seleccionado Columnas de anchura fija. Contiene un nmero para representar el nmero 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 opcin slo est disponible si se ha seleccionado Columnas de anchura fija. Contiene el carcter utilizado para rellenar las columnas ausentes. De forma predetermina es #, pero aqu se puede establecer otro carcter. El separador Formato tambin tiene un botn Cargar. Si tiene definiciones de tabla que incluyen informacin sobre el formato, puede cargar detalles sobre el formato desde estas definiciones de tabla directamente a la pgina Formato: 1. Pulse Cargar. Aparecer el recuadro de dilogo Cargar definiciones de tabla. 2. Realice una bsqueda para encontrar la definicin de tabla que contenga el formato que desea cargar. 3. Pulse Aceptar. Se cargarn los detalles sobre el formato.
Separador Columnas
Las entradas en la cuadrcula de columnas especifican el formato de los datos que se estn grabando al enlace de entrada. La cuadrcula tiene campos estndar que tienen todas las definiciones de columna. El campo Derivacin no se utiliza.
Etapas Sort
Ordena una etapa activa, ordena varios datos. Ordena cantidades pequeas 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.
103
El modelo de la etapa Sort es el mandato de UNIX Sort, como se utiliza en una interconexin de shell. Las filas de datos de entrada que se deben ordenar llegan como lneas de caracteres ASCII ledas desde la secuencia stdin. Debe utilizar los argumentos de la lnea de mandatos para especificar cmo ordenar estas filas. Las filas ordenadas resultantes se graban como lneas 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 estn separadas en valores de columna individuales. Los valores para las propiedades de la etapa y los atributos de columna especifican cmo 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 comparacin que se debe realizar: v Comparacin numrica para nmeros v Fecha y hora v Serie de caracteres (orden de izquierda a derecha para series e indicaciones de hora y fecha)
Funcionalidad no soportada
La siguiente funcionalidad no est soportada: v Carga masiva para enlaces de entrada de secuencia v Procedimientos almacenados
Propiedades configurables
Puede configurar propiedades para mejorar el rendimiento de la etapa Sort.
104
ordenaciones crecientes. Esto reduce el uso de la memoria virtual y el excesivo intercambio de pginas 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 nmero de filas dentro del enlace de entrada excede el valor suministrado por esta propiedad. El algoritmo de ordenacin ordena filas por mltiples de este valor y almacena estos grupos ordenados de filas en archivos temporales. Estos archivos temporales, a continuacin, se fusionan para la ordenacin final.
Ejemplo de Sort
Suponga que el enlace de entrada contiene 100.000 filas de datos y que Filas mx. en memoria virtual se establece en 10.000 filas. El algoritmo de ordenacin lee las 10.000 primeras filas del enlace de entrada, realiza una ordenacin intermedia y, a continuacin, 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 unvocos hasta que se produce una de las siguientes condiciones: v Todos los datos de entrada se han procesado en archivos temporales. El nmero total de archivos temporales es menor que el valor especificado en Mx. de archivos abiertos. Tras las ordenaciones intermedias, los 10 archivos temporales se fusionan y se ordenan de forma conjunta y la ordenacin final se graba en el enlace de salida. v El nmero de archivos temporales es igual al valor especificado en Mx. de archivos abiertos. Si, por ejemplo, Mx. 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 parmetros son demasiado restrictivos, un se produce un alto nmero de ordenaciones intermedias con una fusin de archivos constante.
Criterios de ordenacin
La etapa Sort acumula filas de entrada en la memoria, limitadas por Filas mx. en memoria virtual. Clasifica las filas acumuladas, almacenndolas en archivos de disco, si es necesario. (Los conjuntos de ordenacin pequeos 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, segn la distincin de maysculas y minsculas en la bsqueda
105
Tabla 17. Criterios de ordenacin Distincin de maysculas y minsculas en la bsqueda Sensible a la coincidencia de maysculas y minsculas en la bsqueda No sensible a la coincidencia de maysculas y minsculas en la bsqueda Orden ascendente a asc ascending Orden descendente d dsc descending A ASC ASCENDING D DSC DESCENDING
: El ejemplo siguiente indica que las filas resultantes deben ordenarse en un orden ascendente sensible a la coincidencia de maysculas y minsculas en la columna REGION del enlace de entrada. Utiliza un archivo de correlacin externo denominado CSM en el directorio C:\USER en la columna CUSTOMER y un orden descendente en la columna SALE_PRICE (consulte Ordenar especificaciones en Propiedades de etapa ).
REGION asc, CUSTOMER ASC C:\USER\CSM, SALE_PRICE DSC
Propiedades de etapa
La tabla siguiente incluye estas cabeceras de columna: v Solicitud es el texto que el diseador de trabajo puede ver en la interfaz de usuario del editor de etapas. v Valor predeterminado es el texto que se utiliza si el diseador del trabajo no suministra ningn valor. v Descripcin describe las propiedades.
106
10.000
Directorio temporal
Ninguno
Carcter de escape
Nivel de rastreo
Separador de columna
, (coma)
107
Etapas Transformer
Las etapas Transformer no extraen ni graban datos en una base de datos de destino. Se utilizan para manejar los datos extrados, 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.
108
Barra de herramientas
La barra de herramientas del Transformador contiene los siguientes botones: v Propiedades de etapa v Restricciones v Mostrar todas o las relaciones seleccionadas v v v v v v v Mostrar/ocultar variables de la etapa Cortar Copiar Pegar Buscar y sustituir Cargar definicin de columna Guardar definicin de columna
v Coincidencia automtica de columnas v Orden de ejecucin de los enlaces de entrada v Orden de ejecucin 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 tamao de los paneles, que depende el uno del otro. Tambin 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 expresin definida aparecen en rojo (o el color definido en Herramientas > Opciones), al igual que las columnas de salida que no tienen ninguna derivacin definida. En el Editor de transformador, slo se puede seleccionar un enlace a la vez. Cuando se selecciona, se resalta la barra de ttulo 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 cuadrcula incluida en una pgina tabulada. Pulse el separador para traer al frente al enlace necesario. Este enlace tambin se selecciona en el rea de enlaces. Si selecciona un enlace en el rea de enlaces, el separador de metadatos se traer al frente automticamente.
109
Las cuadrculas se pueden editar para cambiar los metadatos de columnas de cualquiera de los enlaces. Tambin puede aadir y suprimir metadatos.
Mens de atajos
Los mens de atajos del Editor de transformador se muestran pulsando con el botn derecho del ratn sobre los enlaces en el rea de enlaces. Los mens varan 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 dilogo Propiedades para especificar una descripcin del enlace. v Abrir el recuadro de dilogo Restricciones para especificar una restriccin (slo est disponible para los enlaces de salida). v v v v v v v Abrir el recuadro de dilogo Coincidencia automtica de columnas. Mostrar el recuadro de dilogo Buscar y sustituir. Mostrar el recuadro de dilogo Seleccionar. Editar, validar o borrar una expresin de clave, una derivacin o una variable de etapa. Editar varias derivaciones en una operacin. Aadir 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 expresin de clave, una derivacin o una variable de etapa. Si muestra el men desde el rea de enlaces en segundo plano, puede: v Abrir el recuadro de dilogo Propiedades de la etapa para especificar una subrutina anterior o posterior a la etapa. v Abrir el recuadro de dilogo Restricciones para especificar una restriccin para el enlace de salida seleccionado. v Abrir el recuadro de dilogo Orden de ejecucin 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 slo para el enlace seleccionado. v Conmutar entre mostrar u ocultar las variables de etapa. Si pulsa con el botn derecho del ratn sobre el rea de metadatos del Editor de transformador, se abren los men de atajos de edicin de cuadrcula estndar.
Enlaces de entrada
El origen de datos principal est unido a la etapa Transformer a travs del enlace primario, pero la etapa tambin puede tener un nmero cualquiera de enlaces de entrada de referencia.
110
Un enlace de referencia representa una bsqueda de tabla. Se utilizan para suministrar informacin 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 ms comn de la expresin 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 nmeros de telfono, la columna nombre del enlace de referencia se marca como un campo de clave y la expresin 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 ningn registro en la entrada de referencia que coincida con la expresin 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 mltiples filas desde la tabla de referencia. Las filas se especifican mediante una clave fornea, por oposicin a la clave primaria que se utiliza para la bsqueda de filas individuales.
Enlaces de salida
Puede tener un nmero cualquiera de enlaces de salida de la etapa Transformer. Si lo desea, puede pasar algunos datos directamente a travs 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 operacin de este tipo, escriba una expresin BASIC o seleccione una transformacin 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 segn sea necesario. El origen de una columna del enlace de salida se define en la celda Derivacin de dicha columna con el editor de transformador. Puede utilizar el editor de expresiones para especificar expresiones o transformaciones en esta celda. Tambin puede arrastrar simplemente una columna de entrada a la celda Derivacin de la columna de salida, para pasar los datos directamente a travs de la etapa Transformer. Asimismo, para especificar detalles de derivacin para columnas de salida individuales, tambin puede especificar restricciones que operen en enlaces de salida completos. Una restriccin es una expresin BASIC que especifica criterios que los datos deben cumplir antes de que puedan pasarse al enlace de salida. Tambin 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 expresin de restriccin se evala en TRUE para una fila de entrada, la fila de datos se genera en dicho enlace. Y a la inversa, si una expresin de restriccin se evala en FALSE para una fila de entrada, la fila de datos no se genera en dicho enlace. Las expresiones de restriccin en distintos enlaces son independientes. Si tiene ms 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 informacin sobre un nmero cualquiera de distintos colores. Si desea separar los colores en archivos diferentes, deber configurar distintas restricciones. Puede generar la informacin sobre la pintura verde y azul en LinkA, la pintura roja y amarilla en LinkB, y la pintura negra en LinkC.
111
Cuando una fila de entrada contiene informacin sobre la pintura amarilla, la expresin de restriccin LinkA se evala en FALSE y la fila no se genera en LinkA. No obstante, los datos de entrada cumplen el criterio de restriccin de LinkB y las filas se generan en LinkB. Si los datos de entrada contienen informacin sobre la pintura blanca, esta no cumple ninguna restriccin 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 comodn" para las filas que no se generan en ningn otro enlace. La tabla o el archivo que contiene estos rechazos se representa en otra etapa del diseo de trabajo.
Procedimiento
1. Pulse la celda de origen para seleccionarla. 2. Vuelva a pulsar la celda seleccionada y, sin soltar el botn del ratn, arrastre el puntero del ratn a la ubicacin deseada en el enlace de destino. Aparece un punto de insercin en el enlace de destino para indicar dnde ir la nueva celda. 3. Suelte el botn del ratn para soltar la celda seleccionada.
112
Resultados
Puede arrastrar varias columnas, expresiones de clave o derivaciones. Utilice las teclas estndar del Explorador cuando seleccione las celdas de la columna de origen y contine como para una celda individual. Puede arrastrar y soltar el conjunto completo de columnas arrastrando el ttulo del enlace. Puede aadir una columna al final de una derivacin o una expresin de clave existente manteniendo pulsada la tecla Control cuando arrastre la columna.
Recursos de seleccin
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 seleccin de columna para seleccionar varias columnas. Este recurso tambin est disponible en los separadores Correlacin de algunas etapas de trabajo paralelo.
113
El recurso de seleccin 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 vlidas o que faltan. Para poder utilizar los recursos de seleccin, elija Seleccionar en el men de atajos del enlace. Aparece el recuadro de dilogo Seleccionar. Tiene tres separadores: v Texto de la expresin. Este separador Texto de la expresin 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 maysculas y minsculas. 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 genricos y cada uno de los tipos de datos SQL de columna pertenece a uno de estos tipos genricos. v Tipos de expresin. El separador Tipos de expresin permite seleccionar todas las columnas que contengan expresiones vacas o expresiones que no sean vlidas.
Procedimiento
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.
114
115
Procedimiento 1. Abra el recuadro de dilogo Coincidencia automtica de columnas utilizando uno de los mtodos siguientes: v Pulse el botn Coincidencia automtica de columnas en la barra de herramientas del editor de transformador. v Elija Coincidencia automtica 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 ubicacin o Coincidencia de nombre en el rea Tipo de coincidencia. Si selecciona Coincidencia de ubicacin, se establecern 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 contina avanzando hasta que no quedan columnas de entrada. Si elige Coincidencia de nombre, deber especificar ms informacin 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 slo 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 maysculas y minsculas. Seleccione este recuadro de seleccin para especificar que la distincin entre maysculas y minsculas se debe pasar por alto al buscar coincidencias de nombres. Este valor tambin 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 maysculas y minsculas, se pasar por alto IP e ip. 4. Pulse Aceptar para proseguir con la coincidencia automtica. Nota: La coincidencia automtica no tiene en cuenta la incompatibilidad de tipos de datos entre las columnas que relacionadas; las derivaciones se establecen independientemente.
116
las columnas de salida de la serie. A continuacin, utilice el recuadro de dilogo Sustitucin de expresiones para aplicar una llamada trim() alrededor de cada uno de los valores de expresin existentes en las columnas seleccionadas. Puede elegir entre la sustitucin de la expresin completa o la sustitucin de una parte de la expresin. Expresin completa: Con esta opcin, la expresin completa existente de cada columna se sustituye por el valor de sustitucin especificado. Acerca de esta tarea El valor de sustitucin puede ser un valor completamente nuevo, pero normalmente ser un valor basado en el valor de la expresin original. Cuando se especifica el valor de sustitucin, el valor existente de la expresin de la columna puede incluirse en este nuevo valor incluyendo "$1". El valor puede incluirse varias veces. Por ejemplo, si aade una llamada trim() alrededor de cada expresin del conjunto de columnas seleccionado actualmente y selecciona las columnas necesarias, debe utilizar este procedimiento: Procedimiento 1. Seleccione la opcin Expresin completa. 2. Especifique un valor de sustitucin:
trim($1)
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 expresin, especifquelo como "$$1". Parte de la expresin: Acerca de esta tarea Con esta opcin, slo se sustituye una parte de cada expresin seleccionada, en lugar de la expresin completa. La parte de la expresin que se sustituye est especificada por una coincidencia de expresin regular. Es posible que ms de una parte de una serie de una expresin coincida con la expresin regular especificada. Si se selecciona Sustituir todas las apariciones, cada aparicin de una coincidencia se actualizar con el valor de sustitucin especificado. Si no se selecciona, slo se sustituir la primera aparicin. Al sustituir parte de una expresin, el valor de reemplazo especificado puede incluir dicha parte de la expresin original que se est sustituyendo. Para ello, la expresin regular especificada debe tener el valor entre parntesis. "$1" en el valor de sustitucin representar el texto coincidente. Si la expresin regular no se incluye entre parntesis, "$1" ser simplemente el texto "$1".
Captulo 4. Etapas de trabajo de servidor
117
Para el uso de expresiones regulares complejas, se pueden incluir subconjuntos del texto de la expresin regular entre parntesis en lugar de todo el texto. En este caso, toda la parte coincidente de la expresin original seguir sustituida, pero se puede utilizar "$1", "$2", etc. para hacer referencia a cada parte coincidente entre parntesis de la expresin regular especificada. A continuacin, se proporciona un ejemplo de la parte de la sustitucin de la expresin. 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. Puede utilizar el procedimiento siguiente para realizar esto. Procedimiento 1. Seleccione las columnas para las que desee sustituir expresiones. 2. Seleccione la opcin Parte de la expresin. 3. Especifique un valor de expresin regular:
(DSLink3\.[a-z,A-Z,0-9]*)
Este coincidir con las series que contengan "DSLink3."seguido de varios dgitos o caracteres alfabticos. (Se supone que los nombres de columna de este caso estn formados por dgitos y caracteres alfabticos). Los parntesis entre los que se escribe la expresin completa indican que $1 representar el texto coincidente completo en el valor de sustitucin. 4. Especifique un valor de sustitucin
NullToZero($1)
Este valor sustituye slo las subseries coincidentes en la expresin original por las mismas subseries, pero rodeadas por la llamada NullToZero. 5. Pulse Aceptar para aplicarlo a todas las derivaciones de columna seleccionadas. Resultados 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
El valor de sustitucin puede ser una serie de expresin de cualquier formato. Por ejemplo, en el caso anterior, el valor de sustitucin puede ser:
(If (StageVar1 > 50000) Then $1 Else ($1 + 100))
118
generar:
(If (StageVar1 > 50000) Then DSLink3.OrderCount Else (DSLink3.OrderCount + 100)) + 1
119
120
Defina una restriccin especificando una expresin BASIC en el campo Restriccin del enlace. A continuacin, las restricciones existentes aparecern debajo de la barra de ttulo del enlace en el Editor de transformacin. Esta expresin de restriccin se comprobar con los datos de fila en el tiempo de ejecucin. Si los datos no cumplen la restriccin, la fila no se grabar en el enlace. Tambin 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 Restriccin de la siguiente manera: v Para detectar las filas que se han rechazado en un enlace de salida especfico, establezca el campo Restriccin 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 restriccin del enlace de salida o porque una operacin de grabacin en el destino falla para la fila. Tenga en cuenta que este tipo de enlace de rechazo debe producirse despus 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 grabacin en un enlace de salida, establezca el campo Restriccin 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 grabacin o 0 (DSE.NOERROR) si la fila se ha rechazado porque no se ha cumplido una restriccin de enlace. Cuando edita el campo Restriccin, puede establecer los valores de retorno de nombre_enlace.REJECTEDCODE realizando una seleccin en las opciones de men Variables de enlace Restricciones... del Editor de expresiones. Estos proporcionan un rango de errores, pero tenga en cuenta que la mayora de errores de grabacin devuelven DSE.WRITERROR. Para poder establecer una restriccin de rechazo que diferencie entre un error de grabacin y una restriccin no cumplida, puede utilizarse una combinacin de los distintivos nombre_enlace.REJECTEDCODE y nombre_enlace.REJECTED. Por ejemplo: Para detectar las filas que no se ha podido grabar en un enlace de salida, establezca el campo Restriccin en nombre_enlace.REJECTEDCODE Para detectar las filas que no cumplen una restriccin en un enlace de salida, establezca el campo Restriccin en nombre_enlace.REJECTEDCODE = DSE.NOERROR AND nombre_enlace.REJECTED Para detectar qu filas se han rechazado debido a una restriccin o un error de grabacin, establezca el campo Restriccin en nombre_enlace.REJECTED v Para "detectar todo", el campo Restriccin 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 Restriccin. Esto har que el nmero de filas grabadas en el enlace (es decir, las filas que cumplen la restriccin) se registren en el registro de trabajo como "filas rechazadas". Nota: Debido a la naturaleza del caso "detectar todo" anterior, slo debe utilizar un enlace de rechazo cuyo campo Restriccin 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.
121
Procedimiento
1. Abra el separador Orden de los enlaces del recuadro de dilogo Propiedades de la etapa Transformer de la siguiente manera: v Pulse el botn Orden de ejecucin de los enlaces de entrada o Orden de ejecucin 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 botn 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 pgina Etapa. 2. Utilice los botones de flecha para reorganizar la lista de enlaces en el orden de ejecucin 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.
Procedimiento
1. Abra el recuadro de dilogo Propiedades de la etapa Transformer de la siguiente manera: v Pulse el botn 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 pgina General. El separador Variables contiene una cuadrcula que muestra las variables declaradas actualmente, sus valores iniciales y una descripcin opcional. Utilice los controles de la cuadrcula estndar para aadir nuevas variables. Los nombres de variable deben empezar por un carcter alfabtico (a-z, A-Z) y slo pueden contener caracteres alfanumricos (a-z, A-Z, 0-9). Asegrese de que la variable no utilice el nombre de ninguna palabra clave de BASIC.
Resultados
Las variables especificadas en el recuadro de dilogo Propiedades de la etapa aparecen en la tabla Variable de la etapa en el panel de enlaces.
122
En general, puede realizar prcticamente las mismas operaciones en una variable de etapa que en una columna de salida (consulte Definicin de derivaciones de columna de salida en la pgina 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.
Formato de expresin
El formato de una expresin es el siguiente:
KEY: something_like_this is a token something_in_italics is a terminal, that is, doesnt 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) ================================================= 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 |
Captulo 4. Etapas de trabajo de servidor
123
concatenation_operator | matches_operator | relational_operator | logical_operator arithmetic_operator ::= "+" | "-" | "*" | "/" | "^" concatenation_operator ::= ":" matches_operator ::= "MATCHES" relational_operator ::= " =" |"EQ" | "<>" | "#" | "NE" | ">" | "GT" | ">=" | "=>" | "GE" | "<" | "LT" | "<=" | "=<" | "LE" logical_operator ::= "AND" | "OR" if_then_else_expression ::= "IF" expression "THEN" expression "ELSE" expression substring_expression ::= expression "[" [expression ["," expression] "]" field_expression ::= expression "[" expression "," expression "," expression "]" /* Es decir, siempre 3 argumentos
Nota: Las palabras clave "AND", "IF" o "EQ" pueden ir en maysculas o minsculas.
Especificacin de expresiones
Cuando el punto de insercin est en un recuadro de la expresin, puede utilizar el editor de expresiones para sugerir el siguiente elemento de la expresin. Para ello, pulse con el botn derecho del ratn sobre el recuadro o pulse el botn Sugerir a la derecha del recuadro. Se abrir el men Sugerir operando o Sugerir operador. El men que aparece depende del contexto, es decir, de si debe especificar un operando o un operador como siguiente elemento de expresin. Se le ofrecer una seleccin diferente del men Sugerir operando, dependiendo de si est definiendo expresiones de clave, derivaciones y restricciones, o una transformacin personalizada. El men Sugerir operador siempre es el mismo.
Men Sugerir operando: etapa Transformer Macro de DS... Funcin de DS... Constante de DS... Rutina de DS... Transformacin de DS... Parmetro de trabajo... Columna de entrada... Variables de enlace Variables de etapa... Variable del sistema... Serie... Funcin... () Parntesis If Then Else
124
Men Sugerir operando: definicin de transformaciones personalizadas Funcin de DS... Constante de DS... Rutina de DS... Argumento de transformacin... Variable del sistema... Serie... Funcin... () Parntesis If Then Else
Men Sugerir operador + * / ^ = <> < <= > >= Concatenar Subserie Coincidencias And Or
Validacin de la expresin
Si ha especificado una expresin en el editor de transformador, pulse Intro para validarla. El editor de expresiones comprueba que la sintaxis sea correcta y que los nombres de variable utilizados sean aceptables para el compilador. Cuando utilice el editor de expresiones para definir una transformacin personalizada, pulse Aceptar para validar la expresin. Si hay un error, aparece un mensaje y el elemento que causa el error se resalta en el recuadro de la expresin. Puede corregir la expresin o cerrar el editor de transformador o el recuadro de dilogo Transformacin. En el editor de transformador, las expresiones que no son vlidas se muestran en rojo. (En algunos casos, simplemente significa que la expresin no cumple estrictamente las reglas del patrn de uso del motor de servidor, pero funcionar correctamente). Para obtener ms informacin sobre la sintaxis que puede utilizar en una expresin, consulte Captulo 7, Programacin BASIC, en la pgina 149.
125
Pgina Etapa
La pgina Etapa tiene cuatro separadores: v General. Permite introducir una descripcin opcional de la etapa y especificar una subrutina anterior o posterior a la etapa. v Variables. Permite configurar variables de etapa para utilizarlas en la etapa. v Orden de los enlaces. Permite especificar el orden en el que se procesarn los enlaces de salida. El separador General se describe en Rutinas anteriores y posteriores a la etapa en la pgina 112. El separador Variables se describe en Definicin de variables de la etapa local en la pgina 122. El separador Orden de los enlaces se describe en Especificacin del orden de enlaces en la pgina 121.
Pgina Entradas
La pgina Entradas permite especificar detalles sobre los datos que llegan a la etapa Transformer. La etapa Transformer slo puede tener un enlace de entrada. El separador General permite especificar una descripcin opcional del enlace de entrada.
Pgina Salidas
La pgina Salidas tiene un separador General que permite especificar una descripcin opcional para cada uno de los enlaces de salida en la etapa Transformer.
126
Resultados
Aparece un crculo en el enlace para indicar que se ha aadido un punto de interrupcin. Elija Editar puntos de interrupcin en el men Depurar o pulse Editar puntos de interrupcin en la barra de herramientas Depurar para abrir el recuadro de dilogo Editar puntos de interrupcin y configurar el punto de interrupcin.
127
No puede colocar un punto de interrupcin en un enlace que tenga un contenedor como etapa de origen. En su lugar, debe colocar el punto de interrupcin en el mismo enlace que se representa en la propia vista del contenedor. El enlace slo mostrar que tiene un punto de interrupcin en la vista del contenedor. Para obtener ms informacin, consulte el apartado Depuracin de los contenedores compartidos en la pgina 129. La Ventana de depuracin permite ver las variables en la lista de observaciones y las variables en contexto cuando se detiene un punto de interrupcin. La Ventana de depuracin est visible cuando se selecciona Depurar > Ventana de depuracin. Siempre aparece sobre la ventana del cliente del Diseador. Si pulsa con el botn derecho del ratn sobre la Ventana de depuracin, aparece un men de atajos que contiene los mismos elementos que el men Depurar. La Ventana de depurador tiene dos paneles de visualizacin. Puede arrastrar la barra divisora entre los dos paneles para redimensionar los paneles. La ventana tambin proporciona informacin sobre el estado del trabajo y el depurador. El panel superior muestra variables locales. Antes de iniciar la depuracin, se muestran todas las columnas de todos los enlaces del trabajo, y todas se marcan como "Fuera de contexto". Durante la depuracin, el panel muestra slo las variables que hay en contexto cuando se detiene el trabajo en el punto de interrupcin. Muestra los nombres y los valores de las variables que hay actualmente en contexto. Puede aadir las variables en contexto que desee a la lista de observaciones, que mantiene un registro de las variables seleccionadas el tiempo que sea necesario. El panel inferior muestra las variables de la lista de observaciones. Cuando las variables estn en contexto, sus valores se muestran y se actualizan en cada punto de interrupcin. Cuando variables no estn en contexto, se marcan como "Fuera de contexto". La lista de observaciones se guarda entre las distintas sesiones.
Para suprimir variables de la lista de observaciones, seleccione las variables y pulse Eliminar observacin.
Acerca de esta tarea
Los siguientes mandatos estn disponibles en el men Depurar o la barra de herramientas Depurar: v Trabajo de destino. Selecciona el trabajo que se va a depurar. Slo puede depurarse un trabajo cada vez. Una vez depurado un trabajo, el trabajo en la lista Trabajo de destino no estar disponible. v Ir. Ejecuta el trabajo actual en la modalidad de depuracin, compilndolo primero si es necesario. En la modalidad de depuracin, el trabajo se ejecutar hasta que se encuentre un punto de interrupcin. A continuacin, se detiene en la modalidad de interrupcin, lo que permite interactuar con el trabajo. La primera vez que se utiliza Ir despus de compilar o cargar un trabajo, aparece el recuadro de dilogo Opciones de ejecucin del trabajo, que permite recopilar los valores de parmetro necesarios o los lmites de tiempo de ejecucin. v Pasar al siguiente enlace. El trabajo se ejecuta hasta que se produce la siguiente accin en un enlace (lectura o grabacin), cuando se detiene en modalidad de interrupcin. v Pasar a la siguiente fila. El trabajo se ejecuta hasta que se procesa la siguiente fila o hasta que se encuentra otro enlace con un punto de interrupcin, lo que ocurra primero. A continuacin, el trabajo
128
se detiene en modalidad de interrupcin. Si el trabajo no se ha detenido actualmente en un punto de interrupcin en un enlace (por ejemplo, si no ha empezado a depurar todava o se ha detenido en un aviso), se ejecutar como Pasar al siguiente enlace. v Detener trabajo. Slo est disponible en la modalidad de interrupcin. Detiene el trabajo y sale de la modalidad de interrupcin. v Parmetro de trabajo... Permite especificar parmetros de trabajo para cuando se ejecuta el trabajo en modalidad de depuracin. Si selecciona esta opcin, se invoca el recuadro de dilogo Opciones de ejecucin del trabajo, que permite especificar los parmetros necesarios o los lmites de tiempo de ejecucin del trabajo. El elemento se inhabilita cuando se inicia el trabajo en modalidad de depuracin. v Editar puntos de interrupcin... Permite editar los puntos de interrupcin existentes o aadir otros nuevos. v Conmutar punto de interrupcin. Permite establecer o borrar un punto de interrupcin en el enlace seleccionado. Si un enlace tiene un conjunto de puntos de interrupcin (indicado por un crculo negro en el origen de enlace), Conmutar punto de interrupcin borra el punto de interrupcin. Si el enlace no tiene ningn punto de interrupcin, se aade uno que especifica una detencin en cada fila procesada. v Borrar todos los puntos de interrupcin. Suprime todos los puntos de interrupcin definidos para todos los enlaces. v Ver registro de trabajo. Seleccione esta opcin para abrir el cliente del Director con el trabajo actual abierto en la vista de registro de trabajo (el trabajo debe haberse guardado en el cliente del Diseador en algn punto para que esto funcione). v Ventana de depuracin. Seleccione esta opcin para ver la Ventana de depuracin. Deseleccinela para ocultar la Ventana de depuracin.
129
En su lugar, debe colocar el punto de interrupcin en el mismo enlace que se representa en la vista del contenedor. El enlace slo se mostrar con un punto de interrupcin en la vista del contenedor.
v Si se establece un punto de interrupcin en un enlace dentro de un contenedor compartido, slo se activar (y estar visible) para el trabajo de destino, tal como se muestra en la barra de depuracin.
130
Nota: La barra de depuracin slo muestra trabajos de servidor abiertos porque un contenedor compartido no puede ejecutarse fuera del contexto de un trabajo. v Si otro trabajo utiliza el mismo contenedor compartido que se est depurando, el punto de interrupcin no estar visible ni se activar en el otro trabajo. El siguiente ejemplo muestra un trabajo denominado `Ex2', que utiliza el mismo contenedor compartido que el ejemplo anterior denominado `Exercise 4.' El punto de interrupcin slo se establecer para el trabajo de destino que es Exercise 4.
Compilacin de un trabajo
Acerca de esta tarea
Los trabajos se compilan utilizando el cliente del Diseador. Para compilar un trabajo, abra el trabajo en el cliente del Diseador y efecte uno de los pasos siguientes: v Seleccione Archivo > Compilar. v Pulse el botn Compilar en la barra de herramientas. Si se han realizado cambios en el trabajo pero no se han guardado, el sistema le preguntar si desea guardar el trabajo y, en caso afirmativo, deber pulsar Aceptar. Se abrir la ventana Compilar trabajo. Esta ventana contiene una rea de visualizacin para mensajes de compilacin y tiene los siguientes botones: v Recompilar. Vuelve a compilar el trabajo si se han efectuado cambios. v Mostrar error. Resalta la etapa que ha generado un error de compilacin. Este botn slo est activo si se ha generado un error durante la compilacin. v Ms. Muestra la salida que no se adapta al rea de visualizacin. Algunos errores producidos por el compilador incluyen una salida BASIC detallada. v Cerrar. Cierra la ventana Compilar trabajo.
131
v Ayuda. Invoca al sistema de ayuda. El trabajo se compila tan pronto como se abre la ventana. Debe comprobar el rea de visualizacin por si se han producido mensajes de compilacin o se han generado errores. Si se establecen puntos de interrupcin para enlaces que ya no existen, aparece un mensaje durante la compilacin para avisarle al respecto. Los puntos de interrupcin se eliminan automticamente. Tambin puede compilar varios trabajos a la vez utilizando el asistente del compilador de IBM InfoSphere DataStage. Consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide para obtener ms informacin.
Comprobaciones de compilacin
Durante la compilacin se comprueban los criterios siguientes en el diseo del trabajo: v Entrada primaria. Si tiene ms de un enlace de entrada a una etapa Transformer, el compilador comprueba que se haya definido uno como enlace de entrada primario. v Entrada de referencia. Si tiene entradas de referencia definidas en una etapa Transformer, el compilador comprueba que stas no provengan de archivos secuenciales. v Expresiones de clave. Si tiene campos de clave especificados en sus definiciones de columna, el compilador comprueba que haya expresiones de clave que unan las tablas de datos. v Transformaciones. Si ha especificado una transformacin, el compilador comprueba que sea una transformacin adecuada para el tipo de datos.
Compilacin satisfactoria
Si la ventana Compilar trabajo muestra el mensaje Trabajo compilado satisfactoriamente sin errores, puede: v Validar el trabajo v Ejecutar o planificar el trabajo Los trabajos se validan utilizando el cliente del Director. (Tambin puede realizar una ejecucin de prueba en el cliente del Diseador durante el desarrollo, aunque las ejecuciones de produccin se ejecutan normalmente en el cliente del Director). Consulte IBM InfoSphere DataStage and QualityStage Director Client Guide para obtener ms informacin.
Resolucin de problemas
Si la ventana Compilar trabajo muestra un error, puede utilizar el botn Mostrar error para solucionar los problemas del diseo del trabajo. Cuando pulsa Mostrar error, se resalta la etapa que contiene el primer error en el diseo. Debe editar la etapa para cambiar los valores incorrectos y volver a compilar el trabajo. El proceso de solucionar los errores de iteracin es un proceso iterativo. Debe perfeccionar cada etapa "problemtica" hasta que el trabajo se compile satisfactoriamente.
132
Procedimiento
1. Con el trabajo abierto y compilado en el Diseador, elija Diagrama > Mostrar estadsticas de rendimiento. Aparecer informacin sobre el rendimiento de los enlaces. Si el trabajo an no se ha ejecutado, las figuras estarn vacas.
2. Ejecute el trabajo (desde el cliente del Director o seleccionado Depurar > Ir). Observe como los enlaces cambian de color mientras se ejecuta el trabajo y cmo se llenan las estadsticas con el nmero de filas y filas/seg.
133
Resultados
Si altera cualquier cosa del diseo de trabajo, perder la informacin estadstica hasta la prxima vez que compile el trabajo. Los colores que utiliza el supervisor de rendimiento se establecen mediante el recuadro de dilogo Opciones. Elija Herramientas > Opciones y seleccione la ramificacin Supervisor de rendimiento grfico para ver los colores predeterminados y cambiarlos si es necesario. Tambin puede establecer el intervalo de renovacin segn el cual el supervisor actualizar la informacin mientras se ejecuta el trabajo.
134
Componentes de programacin
En los trabajos de servidor, se utilizan tipos de componentes de programacin muy diferentes. Pueden clasificarse en tres categoras principales: v Incorporados. IBM InfoSphere DataStage se proporciona con varios componentes de programacin incorporados que puede reutilizar en los trabajos de servidor, segn sea necesario. Algunos de los componentes incorporados son accesibles desde el repositorio, y puede copiar el cdigo desde ellos. Otros son slo accesibles desde el Editor de expresiones, y el cdigo subyacente no est visible. v Personalizados. Tambin puede definir sus propios componentes de programacin utilizando el cliente del Diseador, en concreto, rutinas (consulte Cmo trabajar con las rutinas en la pgina 138) y transformaciones personalizadas (consulte Definicin de transformaciones personalizadas en la pgina 144). Se almacenan en el repositorio y puede reutilizarse para otros trabajos y por otros usuarios de InfoSphere DataStage. v Externos. Puede utilizar algunos tipos de componentes externos desde InfoSphere DataStage. Si tiene una gran inversin en funciones UniVerse personalizadas o funciones ActiveX (OLE), es posible invocarlas desde InfoSphere DataStage. Para ello, se define una rutina de derivador que, a su vez, invoca las funciones externas. Tenga en cuenta que el mecanismo para incluir funciones UniVerse personalizadas es distinto al de incluir funciones ActiveX (OLE). En las siguientes secciones se describen los trminos de programacin que deber conocer cuando programe trabajos de servidor.
Rutinas
Las rutinas se almacenan en la carpeta Rutinas del rbol de repositorio de forma predeterminada, pero puede almacenarlas en la carpeta que prefiera. Las rutinas se pueden crear, ver o editar utilizando el recuadro de dilogo Rutina de servidor. Los siguientes componentes de programa se clasifican como rutinas:
135
v Funciones de transformacin. Se trata de funciones que puede utilizar al definir transformaciones personalizadas. IBM InfoSphere DataStage tiene varias funciones de transformacin incorporadas que se encuentran en la carpeta Rutinas > Ejemplos > Funciones del rbol de repositorio. Tambin puede definir sus propias funciones de transformacin en el recuadro de dilogo Rutina de servidor. v Subrutinas anteriores/posteriores. Al disear un trabajo, puede especificar una subrutina para ejecutarla antes o despus del trabajo, o antes o despus de una etapa activa. InfoSphere DataStage tiene varias subrutinas anteriores/posteriores incorporadas que se encuentran en la carpeta Rutinas Incorporadas > Anteriores/posteriores del rbol de repositorio. Tambin puede definir sus propias subrutinas anteriores/posteriores utilizando el recuadro de dilogo Rutina de servidor. v Funciones de UniVerse personalizadas. Son funciones BASIC especializadas que se han definido fuera de InfoSphere DataStage. Mediante el recuadro de dilogo Rutina de servidor, puede hacer que InfoSphere DataStage cree un derivador que permita llamar a estas funciones desde dentro de InfoSphere DataStage. Estas funciones se almacenan en la carpeta Rutinas del rbol de repositorio. Cuando cree la rutina, especifique la categora. Si el soporte multilingstico est habilitado, deber estar informado sobre cualquier requisito de correlacin al crear funciones de UniVerse personalizadas. Si una funcin utiliza datos en un juego de caracteres en concreto, ser su responsabilidad correlacionar los datos desde y hacia Unicode. v Funciones ActiveX (OLE). Puede utilizar funciones ActiveX (OLE) como componentes de programacin dentro de InfoSphere DataStage. En InfoSphere DataStage se pueden utilizar tales funciones realizando una importacin de las mismas. Este programa crea un derivador que permite llamar a las funciones. Tras la importacin, puede ver y editar el derivador BASIC utilizando el recuadro de dilogo Rutina de servidor. De forma predeterminada, estas funciones se encuentran en la carpeta Rutinas > Nombre de clase del rbol de repositorio, pero puede especificar su propia carpeta al importar las funciones. Cuando utiliza el editor de expresiones, todos estos componentes aparecen en el mandato Rutinas de DS... en el men Sugerir operando. Un caso especial de rutina es la rutina de control de trabajos. Este tipo de rutina se utiliza para configurar un trabajo que controla otros trabajos. Las rutinas de control de trabajos se especifican en la pgina Control de trabajos del recuadro de dilogo Propiedades del trabajo. Las rutinas de control de trabajos no se almacenan en la carpeta Rutinas del rbol de repositorio.
Transformaciones
Las transformaciones se almacenan en la carpeta Transformaciones del rbol de repositorio de forma predeterminada, pero puede almacenarlas en la carpeta que desee. Las transformaciones se pueden crear, ver o editar utilizando el recuadro de dilogo Transformacin. Las transformaciones especifican el tipo de datos transformados, el tipo en que se transforman y la expresin que realiza la transformacin. IBM InfoSphere DataStage se suministra con numerosas transformaciones incorporadas (que no se pueden editar). Tambin puede definir sus propias transformaciones personalizadas, que se almacenan en el repositorio y que pueden ser utilizadas por otros trabajos. Cuando utiliza el editor de expresiones, las transformaciones aparecen bajo el mandato Transformacin de DS... en el men Sugerir operando.
Funciones
Las funcionen utilizan argumentos y devuelven un valor. La palabra "funcin" se aplica a muchos componentes de IBM InfoSphere DataStage: v Funciones BASIC. Estas constituyen unos de los bloques de creacin fundamentales del lenguaje BASIC. Cuando utiliza el editor de expresiones, puede acceder a las funciones BASIC mediante el mandato Funcin... del men Sugerir operando. v Funciones BASIC de InfoSphere DataStage. Estas son funciones BASIC especiales que son especficas de InfoSphere DataStage. Se utilizan principalmente en las rutinas de control de trabajos. Las funciones
136
de InfoSphere DataStage empiezan por DS para distinguirlas de las funciones BASIC generales. Cuando utiliza el editor de expresiones, puede acceder a las funciones BASIC de InfoSphere DataStage mediante el mandato Funciones de DS... del men Sugerir operando. Los siguientes elementos, aunque se denominan "funciones", se clasifican como rutinas y se describen en Rutinas en la pgina 135. Cuando utiliza el editor de expresiones, todas aparecen bajo el mandato Rutinas de DS... en el men Sugerir operando. v Funciones de transformacin v Funciones de UniVerse personalizadas v Funciones ActiveX (OLE)
Expresiones
Una expresin es un elemento de cdigo que define un valor. La palabra "expresin" se utiliza como una parte especfica de la sintaxis de BASIC y para describir las partes de cdigo que puede especificar cuando define un trabajo. Las reas de IBM InfoSphere DataStage donde puede utilizar este tipo de expresiones son: v Definicin de puntos de interrupcin en el depurador v Definicin de derivaciones de columna, expresiones de clave y restricciones en las etapas Transformer v Definicin de una transformacin personalizada En cada uno de estos casos, el editor de expresiones de InfoSphere DataStage sirve de gua sobre qu elementos de programacin puede insertar en la expresin.
Subrutinas
Una subrutina es un conjunto de instrucciones que realizan una tarea concreta. Las subrutinas no devuelven un valor. La palabra "subrutina" se utiliza como una parte especfica de la sintaxis de BASIC, pero tambin para hacer referencia especfica a subrutinas anteriores/posteriores que realizan tareas antes o despus de un trabajo en una etapa activa. IBM InfoSphere DataStage tiene muchas subrutinas anteriores y posteriores incorporadas, pero tambin definir rutinas personalizadas. Las subrutinas anteriores/posteriores se incluyen en la clasificacin general de rutinas, ya que son accesibles desde la carpeta Rutinas en el rbol de repositorio de forma predeterminada.
Macros
IBM InfoSphere DataStage tiene varias macros incorporadas. Pueden utilizarse en las expresiones, las rutinas de control de trabajos y las subrutinas anteriores/posteriores. Las macros disponibles permiten establecer el estado del trabajo. Cuando utiliza el editor de expresiones, todas aparecen bajo el mandato Macro de DS... en el men Sugerir operando.
Reglas de prioridad
Se aplican las siguientes reglas de prioridad si hay conflictos de nombres entre los distintos operandos cuando se trabaja con los componentes de programacin de IBM InfoSphere DataStage: 1. Funciones incorporadas declaradas en el archivo DSParams 2. Macros de InfoSphere DataStage 3. Constantes de InfoSphere DataStage 4. Funciones de InfoSphere DataStage 5. Transformaciones de InfoSphere DataStage 6. Rutinas de InfoSphere DataStage
Captulo 6. Programacin en IBM InfoSphere DataStage
137
Estas reglas ignoran el nmero de argumentos implicados. Por ejemplo, si hay una transformacin con tres argumentos y una rutina del mismo nombre con dos argumentos, se genera un error si llama a la rutina, porque la transformacin se encontrar primero y la transformacin espera tres argumentos.
Pgina General
Aparece la pgina General de modo predeterminado. Contiene informacin general sobre la rutina, incluido: v Nombre de rutina. Nombre de la funcin o subrutina. v Tipo. Tipo de rutina. Existen tres tipos de rutina: Funcin de transformacin, Subrutina anterior/posterior o Funcin de UniVerse personalizada. v Nombre de catlogo externo. Slo est disponible si ha elegido la Funcin de UniVerse personalizada en el recuadro Tipo. Entre el nombre catalogado de la rutina externa. v Descripcin breve. Descripcin breve opcional de la rutina. v Descripcin explicativa. Descripcin detallada opcional de la rutina.
Pgina Creador
La pgina Creador contiene informacin sobre el creador y el nmero de versin de la rutina, por ejemplo: v Proveedor. Empresa que ha creado la rutina. v Autor. Creador de la rutina. v Versin. Nmero de versin de la rutina, que se utiliza al importar la rutina. El campo Versin contiene una nmero de versin de tres partes, por ejemplo: 3.1.1. La primera parte de este nmero es un nmero interno utilizado para comprobar la compatibilidad entre la rutina y el sistema IBM InfoSphere DataStage. La segunda parte de este nmero representa el nmero de release. Este nmero debera ir incrementando a medida que se vayan realizando cambios importantes en la definicin de rutina o en el cdigo subyacente. El release nuevo de la rutina reemplaza cualquier release anterior. Los trabajos que utilicen la rutina utilizarn el release nuevo. La ltima parte de este nmero marca los releases intermedios cuando se ha realizado un cambio menor o un arreglo.
138
Si crea una definicin de una rutina, la primera parte del nmero de versin se establecer de acuerdo con la versin de InfoSphere DataStage que utilice. Puede editar el resto del nmero para especificar el nivel del release. Pulse la parte del nmero que desee cambiar y entre un nmero directamente o utilice el botn de flecha para incrementar el valor. v Copyright. Informacin de copyright.
Pgina de argumentos
Los nombres de rutina predeterminados y si puede aadir o suprimir argumentos depender del tipo de rutina que est editando: v Subrutinas anteriores/posteriores. Los nombres de los argumentos son ArgEntrada y Cdigo de error. Puede editar los nombres y las descripciones de los argumentos pero no puede aadir ni suprimir argumentos. v Funciones de transformacin y funciones de UniVerse personalizadas. De forma predeterminada, tienen un argumento denominado Arg1. Puede editar nombres y descripciones de argumentos y aadir y suprimir argumentos. Como mnimo tiene que haber un argumento, pero no ms de 255.
Pgina de cdigos
La pgina Cdigo se utiliza para ver o grabar el cdigo para la rutina. La barra de herramientas contiene botones para cortar, copiar, pegar y formatear cdigos, as como para activar Buscar (y Reemplazar). La parte principal de esta pgina consta de un recuadro de texto con varias lneas con barras de desplazamiento. Para obtener ms informacin sobre cmo utilizar esta pgina, consulte Introduccin de cdigo en la pgina 140. Nota: Esta pgina no estar disponible si ha seleccionado Funcin de UniVerse personalizada en la pgina General.
Pgina Dependencias
La pgina Dependencias permite entrar cualquier funcin o rutina catalogada de forma local o global que vaya a utilizar en la rutina que est definiendo. As tambin se puede garantizar, que cuando empaquete cualquier trabajo utilizando esta rutina para desplegarla en otro sistema, todas las dependencias se incluirn en el paquete. La informacin necesaria es la siguiente: v Tipo. El tipo de elemento sobre el que depende la rutina. Seleccione una de las opciones siguientes: Local. Funciones y subrutinas BASIC de IBM InfoSphere DataStage catalogadas localmente. Global. Funciones y subrutinas BASIC de InfoSphere DataStage catalogadas globalmente. Archivo. Un archivo estndar. ActiveX. Un objeto ActiveX (OLE) (no disponible en sistemas basados en UNIX). Servicio web. Una operacin de servicio web. v Nombre. Nombre de la funcin o de la rutina. El nombre necesario depende del tipo de dependencia: Local. Nombre del catlogo. Global. Nombre del catlogo. Archivo. Nombre del archivo. ActiveX. La entrada Nombre actualmente no es relevante para los objetos ActiveX. Entre algo significativo para usted (los objetos ActiveX se identifican por el campo Ubicacin). Servicio web. Nombre de la operacin de servicio web. v Ubicacin. Ubicacin de la dependencia. Para una operacin de servicio web, es un URL. Esta ubicacin puede ser una va de acceso absoluta, pero es recomendable especificar una va de acceso relativa utilizando las siguientes variables de entorno: %SERVERENGINE% - directorio de la cuenta del motor de servidor (normalmente C:\IBM\InformationServer\Server\DSEngine).
Captulo 6. Programacin en IBM InfoSphere DataStage
139
%PROJECT% - Directorio del proyecto Current. %SYSTEM% - directorio del sistema en Windows o /usr/lib en UNIX. Para examinar la ubicacin, efecte una doble pulsacin para abrir la ventana Seleccionar desde servidor. (Esta ventana no est disponible para los elementos locales catalogados). No puede navegar al directorio padre de una variable de entorno. Cuando examina la ubicacin de un archivo en un servidor UNIX, hay una entrada denominada Root en la lista Ubicaciones bsicas.
Procedimiento
1. Abra el recuadro de dilogo Rutina de servidor de la siguiente manera: v Seleccione Archivo > Nuevo en el men principal, o pulse el botn Nuevo en la barra de herramientas. Aparecer el recuadro de dilogo Nuevo. Pulse la carpeta Rutinas y seleccione el icono Rutina de servidor. v Pulse con el botn derecho del ratn sobre Rutinas en el rbol de repositorio y seleccione Nueva > Rutina de servidor en el men de atajos. 2. En la pgina General, escriba el nombre de la funcin o subrutina en el campo Nombre de rutina. No puede coincidir con otro nombre de funcin BASIC. 3. Elija el tipo de rutina que desea crear en la lista Tipo. Existen tres opciones: v Funcin de transformacin. Seleccione esta opcin si desea crear una rutina para la definicin de una transformacin. v Subrutina anterior/posterior. Seleccione esta opcin si desea crear una rutina para una subrutina anterior a la etapa o posterior a la etapa o una subrutina anterior al trabajo o posterior al trabajo. v Funcin de UniVerse personalizada. Seleccione esta opcin si desea hacer referencia a una rutina externa, en lugar de definir una en este recuadro dilogo. Si selecciona esta opcin, la pgina Cdigo no estar disponible. 4. De forma opcional, puede entrar una descripcin breve de la rutina en el campo Descripcin breve. 5. De forma opcional, puede entrar una descripcin ms detallada de la rutina en el campo Descripcin detallada.
Resultados
Cuando complete esta pgina, puede especificar informacin del creador en la pgina Creador, informacin de argumentos en la pgina Argumentos y detalles de las dependencias en la pgina Dependencias. A continuacin, debe especificar su cdigo en la pgina Cdigo.
Introduccin de cdigo
Puede entrar o editar cdigos para una rutina en la pgina Cdigo, en el recuadro de dilogo Rutina de Servidor. El primer campo de esta pgina muestra el nombre de la rutina y los nombres del argumento. Si desea cambiar estas propiedades, deber editar los campos en las pginas General y Argumentos. El parte principal de esta pgina contiene un recuadro de entrada de texto de varias lneas, en el que deber entrar su cdigo. Para entrar el cdigo, pulse el recuadro y empiece a escribir. Puede utilizar las siguientes funciones de edicin estndar de Windows en este recuadro de texto: v Suprimir utilizando la tecla Supr v Cortar utilizando Control-X v Copiar utilizando Control-C
140
v v v v
Pegar utilizando Control-V Ir al final de la lnea utilizando la tecla Fin Ir al principio de la lnea utilizando la tecla Inicio Seleccione texto pulsando y arrastrando o efectuando una doble pulsacin
Algunas de estas funciones de edicin se incluyen en un men de atajos que se puede visualizar pulsando el botn derecho del ratn. Tambin puede cortar y pegar cdigos utilizando los botones de la barra de herramientas. Su cdigo slo debe contener funciones y sentencias BASIC soportadas por IBM InfoSphere DataStage. Si no est seguro de las funciones y de las sentencias que se soportan o de la sintaxis apropiada que debe utilizar, consulte Captulo 7, Programacin BASIC, en la pgina 149 para obtener una lista completa de las funciones BASIC de InfoSphere DataStage soportadas. Si el soporte multilingstico est habilitado, podr utilizar caracteres no ingleses en las siguientes circunstancias: v En comentarios v En datos de serie (es decir, en series incluidas entre comillas) El uso de caracteres no ingleses en cualquier otro lugar provocar errores de compilacin. Si desea formatear su cdigo, pulse el botn Formatear de la barra de herramientas. El ltimo campo de esta pgina muestra la sentencia de retorno para la funcin o la subrutina. Este campo no se puede editar.
Cdigo de compilacin
Acerca de esta tarea
Una vez haya guardado la rutina, deber compilarla. Para compilar una rutina, pulse Compilar en el recuadro de dilogo Rutina de servidor. Si la rutina se compila satisfactoriamente, aparece un recuadro de mensaje. Pulse Aceptar para acusar la recepcin del mensaje. La rutina se marca como "creada" en el repositorio y est disponible para ser utilizada. Si la rutina es una Funcin de transformacin, sta se visualiza en la lista de funciones disponibles cuando se edita una transformacin. Si la rutina es una Subrutina anterior/posterior, aparece en lista de las subrutinas disponibles cuando se edita una etapa Aggregator, Transformer o suplementaria, o se definen propiedades del trabajo. Si la rutina no puede compilarse, se muestran los errores generados. Antes de empezar a investigar la causa del error, se recomienda mover la ventana Salida de compilacin al lado o debajo del recuadro de dilogo Rutina de servidor, ya que necesita ver ambas ventanas para solucionar el error. Para solucionar el error, efecte una doble pulsacin en la ventana Salida de la compilacin. IBM InfoSphere DataStage intenta encontrar la lnea correspondiente del cdigo que ha causado el error y lo resalta en el recuadro de dilogo Rutina de servidor. Debe editar el cdigo para eliminar todas las sentencias incorrectas o para corregir posibles errores sintcticos.
141
Si el soporte multilingstico est habilitado, busque mltiples signos interrogantes en la ventana Salida de compilacin. Normalmente indica que se ha producido un error en la correlacin de juego de caracteres. Cuando haya modificado su cdigo, pulse Guardar y, a continuacin, Compilar. Si es necesario, prosiga solucionando cualquier error que se haya podido producir hasta que la rutina se compile de forma satisfactoria. Cuando la rutina se haya compilado, puede utilizarla en otras reas de InfoSphere DataStage o comprobarla. Consulte Comprobacin de una rutina para obtener ms informacin.
142
v Coincidencia de maysculas y minsculas. Especifica si desea realizar una bsqueda en la que coincidan maysculas y minsculas. Este recuadro de seleccin est deseleccionado de forma predeterminada. Seleccione este recuadro de seleccin para realizar una bsqueda que distinga entre maysculas y minsculas. v Arriba y Abajo. Especifica la direccin de la bsqueda. El valor predeterminado es Abajo. Pulse Arriba para realizar una bsqueda en la direccin opuesta. v Buscar siguiente. Inicia la bsqueda. No estar disponible hasta que especifique el texto de bsqueda. Siga pulsando Buscar siguiente hasta encontrar todas las apariciones del texto. v Cancelar. Cierra el recuadro de dilogo Buscar. v Sustituir... Muestra el recuadro de dilogo Sustituir. Para obtener ms informacin, consulte Sustitucin de texto. v Ayuda. Invoca al sistema de Ayuda.
Sustitucin de texto
Acerca de esta tarea
Si desea sustituir texto en el cdigo con una serie de texto alternativa, pulse Sustituir... en el recuadro de dilogo Buscar. Cuando pulsa este botn, el recuadro de dilogo Buscar cambia al recuadro de dilogo Sustituir. Este recuadro de dilogo tiene los campos, opciones y botones siguientes: v Texto de bsqueda. Contiene el texto que desea buscar y sustituir. v Sustituir por. Contiene el texto que desea utilizar en lugar del texto de bsqueda. v Coincidencia de maysculas y minsculas. Especifica si desea realizar una bsqueda en la que coincidan maysculas y minsculas. Este recuadro de seleccin est deseleccionado de forma predeterminada. Seleccione este recuadro de seleccin para realizar una bsqueda que distinga entre maysculas y minsculas. v Arriba y Abajo. Especifica la direccin de la bsqueda y sustitucin. El valor predeterminado es Abajo. Pulse Arriba para realizar una bsqueda en la direccin opuesta. v Buscar siguiente. Inicia la bsqueda y sustitucin. Este botn no estar disponible hasta que especifique el texto de bsqueda. Siga pulsando Buscar siguiente hasta encontrar todas las apariciones del texto. v Cancelar. Cierra el recuadro de dilogo Sustituir. v Sustituir. Sustituye el texto de bsqueda por el texto alternativo. v Sustituir todo. Realiza una sustitucin global de todas las instancias del texto de bsqueda. v Ayuda. Invoca al sistema de Ayuda.
143
cerrar el recuadro de dilogo Rutina de Servidor. Consulte Cmo guardar cdigos en la pgina 141 para obtener ms informacin.
144
Para proporcionar an ms flexibilidad, tambin puede definir sus propias rutinas y funciones personalizadas a partir de las cuales se crearn transformaciones personalizadas. Hay tres modos de hacerlo: v Entrar el cdigo en InfoSphere DataStage (utilizando las funciones BASIC). Consulte Creacin de una rutina en la pgina 140. v Crear una referencia a una rutina catalogada externamente. Consulte Creacin de una rutina en la pgina 140. v Importar funciones ActiveX (OLE) externas. Consulte Importacin de funciones ActiveX (OLE) externas en la pgina 146.
Procedimiento
1. En el rbol de repositorio, seleccione la carpeta Transformaciones y efecte uno de los siguientes pasos: v Seleccione Archivo > Nuevo en el men del cliente del Diseador, o pulse el botn Nuevo en la barra de herramientas. Aparecer el recuadro de dilogo Nuevo. Pulse la carpeta Otros y seleccione Transformacin. v Pulse con el botn derecho del ratn y seleccione Nuevo > Otros > Transformacin en el men de atajos. Aparecer el recuadro de dilogo Transformacin. Este recuadro de dilogo tiene dos pginas: v General. Se visualiza de forma predeterminada. Contiene informacin general sobre la transformacin. v Detalles. Permite especificar elementos de datos de origen y de destino, la funcin y los argumentos que se deben utilizar. 2. Escriba el nombre de la transformacin en el campo Nombre de la transformacin. El nombre que se entre aqu debe ser exclusivo; dos transformaciones no pueden tener el mismo nombre. Tenga tambin en cuenta, que la transformacin no debe tener el mismo nombre que una funcin BASIC existente; si lo tiene, se llamar a la funcin en lugar de la transformacin cuando se ejecute el trabajo. Consulte Reglas de prioridad en la pgina 137 para ver las consideraciones sobre los nombres de componente. 3. De forma opcional, puede escribir una descripcin breve de la transformacin en el campo Descripcin breve. 4. De forma opcional, puede escribir una descripcin detallada de la transformacin en el campo Descripcin detallada. Una vez completada esta pgina, puede especificar cmo convertir los datos. 5. Pulse el separador Detalles. 6. De forma opcional, elija el elemento de datos que desee como elemento de datos de destino a parte de la lista Elemento de datos de destino. (La utilizacin de un elemento de datos de origen y de destino permite aplicar una escritura de datos ms estricta a su transformacin. Consulte IBM InfoSphere DataStage and QualityStage Designer Client Guide para ver una descripcin de los elementos de datos). 7. Especifique argumentos de origen para la transformacin en la cuadrcula Argumento visible. Escriba el nombre del argumento y, opcionalmente, elija el elemento de datos correspondiente de la lista. Utilice el editor de expresiones del campo Definicin para entrar una expresin que defina cmo debe comportarse la transformacin. El Editor de expresiones se describe en Editor de expresiones de IBM InfoSphere DataStage en la pgina 123. El men Sugerir operando es ligeramente diferente cuando se utiliza el editor de expresiones para definir transformaciones personalizadas y proporciona mandatos que resultan tiles al definir transformaciones.
Men Sugerir operando: definicin de transformaciones personalizadas Macro de DS... Funcin de DS... Constante de DS...
145
Men Sugerir operando: definicin de transformaciones personalizadas Rutina de DS... Argumento de transformacin... Variable del sistema... Serie... Funcin... () Parntesis If Then Else
8. Pulse Aceptar. Aparecer el recuadro de dilogo Guardar transformacin como, que permite seleccionar la carpeta en la que se guardar en el rbol de repositorio. Si es necesario, tambin puede cambiar el nombre de la transformacin. Pulse Guardar para guardar la transformacin y cierre el recuadro de dilogo Transformacin.
Resultados
A continuacin, puede utilizar la nueva transformacin desde dentro del Editor de transformador. Nota: Si se ha habilitado el soporte multilingstico, evite utilizar las funciones Iconv y Oconv integradas para correlacionar datos a no ser que sea perfectamente consciente de las consecuencias de sus acciones.
Procedimiento
1. En el cliente del Diseador, seleccione Importar > Definiciones de la funcin externa.... Se abre el asistente para Importar definiciones de funciones de transformacin solicitando que se facilite el nombre de la va de acceso del archivo que contiene las transformaciones que se deben importar. Normalmente se trata de un archivo DDL que debe haberse instalado en el sistema donde reside la capa de motor.
146
2. Entre el nombre de la va de acceso o localcelo y, a continuacin, pulse Siguiente. El asistente solicita el archivo DDL especificado para establecer las clases de automatizacin que contiene y las presenta en una lista. 3. Seleccione una clase de automatizacin y pulse Siguiente. El asistente interroga a la clase de automatizacin para obtener detalles de las funciones adecuadas que soporta. A continuacin, las visualiza. 4. Seleccione las funciones que desea importar. Pulse Siguiente. El asistente mostrar los detalles de la importacin propuesta. 5. Si est satisfecho con los detalles, pulse Importar. IBM InfoSphere DataStage empezar a generar las rutinas necesarias y mostrar una barra de progreso. Al finalizar, se abre una ventana de resumen. 6. Pulse Finalizar para salir del asistente.
147
148
Convenios de sintaxis
Las descripciones de sintaxis utilizan los siguientes convenios: Convenio Uso Negrita El tipo negrita indica funciones, sentencias, subrutinas, opciones, parntesis, comas, etc., que deben especificarse exactamente tal como aparecen. Cursiva La cursiva indica informacin variable que debe proporcionar como, por ejemplo, una expresin, una serie de entrada, un nombre de variable o una lista de sentencias. [] [] Los corchetes encierran elementos opcionales. No especifique estos corchetes. Los corchetes con un tipo de letra cursiva y negrita deben especificarse como parte de la sintaxis.
{ Then | Else } Dos palabras clave o clusulas separadas por barras verticales y entre signos de llave indican que puede elegir slo una opcin. No especifique los signos de llave ni la barra vertical. ... @FM @IM @SM @TM @VM Los tres puntos indican que el ltimo elemento de la sintaxis puede repetirse si es necesario. Marca de campo. Marca de elemento. Marca de subvalor. Marca de texto. Marca de valor.
149
El lenguaje BASIC
En esta seccin se proporciona una visin general de los componentes fundamentales del lenguaje IBM InfoSphere DataStage BASIC. Se describen las constantes, las variables, los tipos de datos y cmo se combinan los datos con operadores aritmticos, de series, relacionales y lgicos para formar expresiones.
Constantes
Una constante es un valor que se fija durante la ejecucin de un programa y puede reutilizarse en distintos contextos. Una constante puede ser: v Una serie de caracteres v Una serie vaca v Una serie numrica con formato de entero o coma flotante Los caracteres ASCII del 0 al 10, y los caracteres del 251 al 255, inclusivos, no pueden incorporarse en las constantes de tipo serie en los sistemas sin soporte multilingstico (estos caracteres no pueden utilizarse tampoco en los comentarios).
Variables
Las variables se utilizan para almacenar valores en la memoria temporalmente. Posteriormente podr utilizar los valores en varias operaciones. Puede asignar un valor explcito a una variable, o asignarle el valor que es el resultado de las operaciones efectuadas por el programa durante la ejecucin. Las variables pueden cambiar de valor durante la ejecucin del programa. Al principio de la ejecucin del programa, todas las variables estn desasignadas. Si se intenta emplear una variable desasignada, se genera un mensaje de error. El valor de una variable puede ser: v v v v Ningn valor asignado Una serie Un entero o un nmero de coma flotante El valor nulo
v Una matriz dimensionada v Una variable de archivo IBM InfoSphere DataStage proporciona un conjunto de variables del sistema de slo lectura que almacenan datos del sistema como, por ejemplo, la fecha actual, la hora, el nombre de la va de acceso, etc. Puede acceder a ellas desde una rutina o una transformacin.
Matrices dimensionadas
Una matriz es una variable de varios valores a la que se accede desde un nombre individual. Cada valor es un elemento de la matriz. IBM InfoSphere DataStage utiliza dos tipos de matrices dimensionadas: v Matrices unidimensionales o vectores v Matrices bidimensionales o matrices Los vectores tienen elementos almacenados en la memoria en una fila individual. Cada elemento est indexado, es decir, tiene un nmero secuencial asignado. El ndice del primer elemento es 1. Para especificar un elemento del vector, utilice el nombre de variable seguido del ndice del elemento entre parntesis. El ndice puede ser una constante o una expresin, por ejemplo:
A(1) ;*especifica el primer elemento de la variable A Cost(n + 1) ;* especifica una expresin para calcular el ndice
150
Las matrices tienen elementos almacenados en varias filas. Para especificar un elemento de una matriz, debe proporcionar dos ndices: el nmero de fila y el nmero de columna. Por ejemplo, en una matriz con cuatro columnas y tres filas, los elementos se especifican utilizando estos ndices:
1,1 2,1 3,1 1,2 2,2 3,2 1,3 2,3 3,3 1,4 2,4 3,4
La especificacin completa utiliza el nombre de variable seguido de los ndices entre parntesis. Por ejemplo:
Obj(3,1) Widget(7,17)
Los vectores se tratan como si fueran matrices con una segunda dimensin 1. COST(35) y COST(35,1) significan lo mismo. Las dimensiones de una matriz se definen con la sentencia Dimension. Tambin puede redimensionar una matriz utilizando Dimension.
Expresiones
Una expresin define un valor. El valor se evala en el tiempo de ejecucin. El resultado puede utilizarse como entrada de una funcin, asignarse a una variable, etc. Una expresin simple puede constar de: v v v v Una serie o una constante numrica, por ejemplo, "porcentaje" o "42" Un nombre de variable Una funcin Una funcin definida por el usuario
Una expresin compleja puede contener una combinacin de constantes, variables, operadores, funciones y otras expresiones.
Funciones
Una funcin realiza manipulaciones matemticas o de serie en los argumentos que se proporcionan y devuelve un valor. Algunas funciones no tienen argumentos; la mayora tienen uno o varios. Los argumentos van siempre entre parntesis, separados por comas, tal como se muestra en la sintaxis general:
FunctionName (argumento, argumento)
Una expresin puede contener una funcin. Un argumento en una funcin puede ser una expresin que incluya una funcin. Las funciones pueden realizar tareas: v En las series numricas, por ejemplo, cuando se calcula el seno de un ngulo que se pasa como argumento (funcin Sin) v En las series de caracteres, por ejemplo, cuando se suprimen los espacios en blanco y las tabulaciones excedentes (funcin Trim) Las funciones de transformacin en IBM InfoSphere DataStage deben tener al menos un argumento que contenga el valor de entrada que se va a transformar. Una definicin de transformacin puede utilizar otros argumentos opcionales para seleccionar una determinada va de acceso mediante la funcin de transformacin, si es necesario. Esto significa que una funcin individual puede encapsular la lgica de varias transformaciones relacionadas. La funcin de transformacin debe devolver el valor transformado utilizando una sentencia Return (valor).
Sentencias
Las sentencias se utilizan para:
151
v Cambiar el control de programa. Las sentencias se ejecutan en el orden en el que se especifican, a menos que una sentencia de control cambie el orden, por ejemplo, invocando una subrutina o definiendo un bucle. v Asignar un valor a una variable. v Especificar el valor de una constante. v Aadir comentarios a los programas.
Etiquetas de sentencias
Una etiqueta de sentencia es un identificador exclusivo de una lnea de cdigo. Una etiqueta de sentencia consta de una serie de hasta 64 caracteres seguida de un carcter de dos puntos. La serie puede contener caracteres alfanumricos, puntos, signos de dlar y signos de porcentaje. Las etiquetas de sentencia son sensibles a las maysculas y minsculas. Una etiqueta de sentencia puede colocarse delante de una sentencia o en su propia lnea.
Subrutinas
Una subrutina es un conjunto autocontenido de instrucciones que realizan una tarea concreta. Una subrutina puede tomar dos formas: v Una subrutina incorporada est contenida en el programa y se accede a ella con una sentencia GoSub. v Una subrutina externa se almacena en un archivo aparte y se accede a ella con una sentencia Call. En trminos generales, utilice una subrutina incorporada para el cdigo que desea invocar muchas veces desde el mismo programa; utilice una subrutina externa para el cdigo que desee invocar desde varios programas diferentes. Hay varias subrutinas BASIC que son especficas de IBM InfoSphere DataStage. Sus nombres empiezan por DS y se describen en Subrutinas BASIC de IBM InfoSphere DataStage especiales. InfoSphere DataStage tambin se proporciona con varias subrutinas anteriores/posteriores, que se ejecutan antes o despus de un trabajo o una etapa activa. Puede definir sus propias subrutinas anteriores/posteriores utilizando el cliente del Diseador. Las subrutinas anteriores/posteriores deben tener dos argumentos. El primero contiene el valor que especifica el usuario cuando se invoca la subrutina desde un trabajo o una etapa; el segundo es el cdigo de respuesta de la rutina. El cdigo de respuesta es 0 si no hay ningn error. Los dems valores indican que el trabajo se ha detenido.
Operadores
Un operador realiza una operacin en una o varias expresiones (los operandos). Los operadores se dividen en las categoras siguientes: v Operadores aritmticos v Operadores de serie para: Concatenar series con Cats o : Extraer subseries con [ ] v Operadores relacionales v Operadores de coincidencia de patrn
152
Operadores aritmticos
Los operadores aritmticos combinan operandos mediante sumas, restas, etc. Las expresiones resultantes pueden combinarse tambin con otras expresiones. Los operandos deben ser expresiones numricas. Las expresiones no numricas se tratan como 0 y generan un aviso de tiempo de ejecucin. Una variable de serie de caracteres que contiene nicamente caracteres numricos cuenta como una expresin numrica. Por ejemplo, la siguiente expresin da como resultado el valor 66:
"22" + 44
Puede cambiar el orden de evaluacin utilizando parntesis. Las expresiones escritas entre parntesis se evalan antes que las de fuera de los parntesis. Por ejemplo, esta expresin se evala como 112 + 6 + 2, o 120:
(14 * 8) + 12 / 2 + 2
El resultado de una operacin aritmtica que incluya el valor nulo es un valor nulo.
Concatenacin de series
El operador de concatenacin, : o Cats, enlaza expresiones de serie para formar expresiones de serie compuestas. Por ejemplo, si x tiene el valor Tarzan, esta expresin:
"Hello. " : "My Name is " : X : ". Whats yours?"
se evala en:
"Hello. My name is Tarzan. Whats yours?"
Si hay distintas operaciones de concatenacin, estas se ejecutan normalmente de izquierda a derecha. Puede cambiar el orden de evaluacin utilizando parntesis. Las expresiones entre parntesis se evalan antes que las operaciones situadas fuera de los parntesis. Los operandos numricos en las expresiones concatenadas se consideran valores de serie. Los operadores aritmticos tienen una mayor prioridad que el operador de concatenacin. Por ejemplo:
"There are " : "2" + "2" : "3" : " windows."
tiene el valor:
"There are 43 windows."
153
El resultado de cualquier operacin de serie que comprenda el valor nulo es un valor nulo. Pero si se hace referencia al valor nulo como una serie de caracteres que contiene nicamente el valor nulo (es decir, como la serie CHAR(128)), este se considera informacin de serie de caracteres. Por ejemplo, esta expresin se evala como valor nulo:
"A" : @NULL ;*concatenate A with @NULL system variable
se evala en "A<CHAR128>".
Extraccin de subseries
Una subserie es una serie dentro de una serie. Por ejemplo, tab y abla son ambas subseries de tabla. Puede utilizar el operador [ ] para especificar una subserie utilizando esta sintaxis:
serie[ [ inicio, ] longitud ]
serie es la serie que contiene la subserie. inicio es un nmero que especifica dnde se inicia la subserie. El primer carcter de la serie cuenta como 1. Si inicio es 0 o un nmero negativo, se supone que la posicin inicial es 1. Si omite inicio, la posicin inicial se calcula segn la frmula siguiente:
longitud.serie - longitud.subserie + 1
v Subseries finales. Puede especificar una subserie final omitiendo inicio en la sintaxis. Por ejemplo, esta especificacin:
"1234567890" [5]
devuelve la subserie:
67890
v Subseries delimitadas. Puede extraer una subserie delimitada con esta sintaxis:
serie [ delimitador, instancia, campos ]
serie es la serie que contiene la subserie. delimitador especifica el carcter que delimita la subserie. instancia especifica la instancia del delimitador donde se inicia la extraccin. campos especifica el nmero de campos que se van a extraer. Los delimitadores que marcan el inicio y el final de la extraccin no se devuelven, pero si extrae ms de una serie, se devuelven los delimitadores provisionales. Esta sintaxis funciona de la misma forma que la funcin Field. v Asignacin de una subserie a una variable. Todas las sintaxis de subserie se pueden utilizar junto con el operador = para sustituir el valor que normalmente devuelve el operador [ ] por el valor asignado a la variable. Por ejemplo:
A="12345" A[3]=1212
devuelve el resultado 121212. Esta sintaxis funciona de la misma forma que la funcin FieldStore.
Operadores relacionales
Los operadores relacionales comparan las series u otros datos. El resultado de la comparacin puede ser true ( 1 ) o false ( 0 ). Esta tabla muestra los operadores relacionales que puede utilizar:
154
Operador Eq o = Ne o # o >< o <> Lt o < Gt o > Le o <= o =< o #> Ge o >= o => o #<
Relacin Igualdad Desigualdad Menor que Mayor que Menor que o igual a Mayor que o igual a
Las operaciones aritmticas se ejecutan antes de los operadores relacionales de una expresin. Por ejemplo, la expresin:
X + Y < (T - 1) / Z
es verdadera si el valor de X ms Y es menor que el valor de T menos 1 dividido por Z. Las series se comparan carcter a carcter. La serie con el cdigo de carcter ms alto se considera mayor. Si todos los cdigos de carcter son iguales, las series se consideran iguales. Un espacio se evala como menor que 0. Una serie con los espacios en blanco iniciales y finales se considera mayor que la misma serie sin los espacios en blanco. Una serie vaca siempre se compara como una serie de caracteres. No es igual al valor numrico 0. Si dos series contienen caracteres numricos, se comparan numricamente. Por ejemplo:
"22" < "44"
devuelve true. A continuacin, se proporcionan ejemplos de comparaciones que se evalan en true en ASCII de 7 bits con los convenios de clasificacin estndar:
"AA" < "AB" "FILENAME" = "FILENAME" "X&" > "X#" "CL " > "CL" "kg" > "KG" "SMYTH" < "SMYTHE" B$ < "9/14/99" ;* donde B$ = "8/14/99"
No puede utilizar operadores relacionales para probar si hay un valor nulo. En su lugar, utilice la funcin IsNull.
155
serie es la serie que se va a comparar. Si la serie es un valor nulo, la coincidencia es false y se devuelve 0. patrn es el patrn de formato y puede ser uno de los cdigos siguientes: Este cdigo... Coincide con este tipo de serie... ... 0X nX 0A nA 0N nN Cero o ms caracteres de cualquier tipo. Cero o ms caracteres de cualquier tipo. n caracteres de cualquier tipo. Cero o ms caracteres alfabticos. n caracteres alfabticos. Cero o ms caracteres numricos. n caracteres numricos.
'serie ' Texto exacto escrito entre comillas simples o dobles. Puede especificar una coincidencia negativa aadiendo ~ (tilde) delante del cdigo. Por ejemplo, ~ 4A coincide con una serie que no contiene cuatro caracteres alfabticos. Si n tiene ms de nueve dgitos, se utiliza como serie literal. Si la serie coincide con el patrn, la comparacin devuelve 1; de lo contrario, devuelve 0. Puede especificar varios patrones separndolos con marcas de valor. Por ejemplo, la expresin siguiente es verdadera si la direccin tiene 16 caracteres alfabticos o 4 caracteres numricos seguidos de 12 caracteres alfabticos; de lo contrario, es falsa:
address Matches "16A": CHAR(253): "4N12A"
Una serie vaca coincide con los patrones siguientes: "0A", "0X", "0N", "...", "", '' o \\.
Operadores If
Un operador If asigna un valor que cumple las condiciones especificadas. Tiene la sintaxis siguiente:
variable = If condicin Then expresin Else expresin
variable es la variable que se asigna. If condicin define la condicin que determina qu valor se asigna. Then expresin define el valor que se asigna si la condicin es true. Else expresin define el valor que se asigna si la condicin es false. El operador If es la nica forma de la construccin If...Then...Else que puede utilizarse en una expresin. Tenga en cuenta que la clusula Else es necesaria en los siguientes ejemplos:
* Devolver A o B dependiendo del valor de Column1: If Column1 > 100 Then "A" Else "B" * Aadir 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)
156
Operadores lgicos
Los datos numricos, los datos de serie y el valor nulo pueden funcionar como datos lgicos: v El valor numrico 0 es false; todos los dems valores numricos son true. v Una serie vaca es false; las dems series de caracteres son true. v El valor nulo SQL no es true ni false. Tiene el valor lgico nulo. Los operadores lgicos prueban estas condiciones. Los operadores lgicos disponibles son: v And (o el equivalente &) v Or (o el equivalente !) v Not (invierte un valor lgico) Estos son los factores que determinan la prioridad de los operadores en las operaciones lgicas: v Las operaciones aritmticas y relacionales tienen preferencia sobre las operaciones lgicas. v Las operaciones lgicas se evalan de izquierda a derecha. v Las sentencias And y las sentencias Or tienen una prioridad igual. v En las clusulas If...Then...Else, el valor lgico nulo utiliza la accin false.
Operadores de asignacin
Los operadores de asignacin asignan valores a las variables. Esta tabla muestra los operadores de asignacin y sus usos:
Operador = += Sintaxis variable = expresin variable += expresin Descripcin Asigna el valor de la expresin a la variable. Suma el valor de la expresin al valor de la variable y reasigna el resultado a la variable. Resta el valor de la expresin del valor de la variable y reasigna el resultado a la variable. Concatena el valor de la variable y el valor de la expresin y reasigna el resultado a la variable.
-=
variable - = expresin
:=
variable := expresin
Este ejemplo muestra una secuencia de operaciones en la misma variable. La primera sentencia asigna el valor 5 a la variable X.
X = 5
Este ejemplo concatena una serie con la variable y es equivale a X=X:Y. Si el valor de X es `con' y el valor de Y es `catenate':
X := Y
157
El valor nulo representa unos datos de valor desconocido, tal como se define en SQL. El valor nulo se representa externamente, segn sea necesario, mediante una serie de caracteres formada por el byte nico Char(128). En el tiempo de ejecucin, se le asigna un tipo de datos nulo. Los programas pueden hacer referencia al valor nulo con la variable del sistema @NULL. Para probar si un valor es el valor nulo, utilice la funcin IsNull. Si especifica un valor nulo en una funcin o en otra operacin, siempre se devuelve un valor nulo. Por ejemplo, si concatena un valor de serie con una serie vaca, se devuelve el valor de serie pero, si concatena un valor de serie con el valor nulo, se devuelve el valor nulo:
A B C X Y = = = = = @NULL "" "JONES" C:B C:A
Campos
En las funciones de IBM InfoSphere DataStage como, por ejemplo, Field o FieldStore, puede definir campos especificando subseries delimitadas. Para determinar qu constituye un campo, tenga en cuenta lo siguiente: v Una subserie seguida de un delimitador es un campo. v Si una serie empieza por un delimitador, InfoSphere DataStage supone que hay un campo que contiene una serie vaca delante del delimitador. v Si una subserie final no termina con un delimitador, InfoSphere DataStage supone que hay uno. Por ejemplo, si utiliza la serie ABC con dos puntos como delimitador, InfoSphere DataStage genera tres o cuatro campos, de la siguiente manera:
Ejemplo A:B:C: Nmero de campos 3 Explicacin Cada campo termina con un delimitador.
158
Nmero de campos 3 4
Explicacin InfoSphere DataStage supone que hay un delimitador final. InfoSphere DataStage supone que hay un campo que contiene una serie vaca antes del primer delimitador. InfoSphere DataStage supone que hay un campo que contiene una serie vaca antes del primer delimitador y que hay un delimitador final.
:A:B:C
Palabras reservadas
Estas palabras estn reservadas y no deben utilizarse como nombres de variable en una transformacin o una rutina: v And v Cat v Else v End v Eq v Ge v Get v v v v v v v v v v v Go GoSub GoTo Gt If Include Locked Lt Match Coincidencias Ne
v Le
159
El cdigo objeto es la salida compilada que IBM InfoSphere DataStage invoca como una subrutina o una funcin. Una lnea de cdigo fuente tiene la sintaxis siguiente:
[ etiqueta: ] sentencia [ ; sentencia ] ...<Return>
Una lnea de cdigo fuente puede empezar con una etiqueta de sentencia. Siempre termina con Return.
Caracteres especiales
Los siguientes caracteres tienen un significado especial en las transformaciones y rutinas. Su uso est restringido en las constantes numricas y de tipo serie. Tenga en cuenta tambin que los caracteres ASCII del 0 al 10 y del 251 al 255 no deben incorporarse en las constantes de tipo serie. Caracteres Uso permitido Espacio Se utiliza en las constantes de tipo serie, o para formatear el cdigo fuente. Separador Se utiliza en las constantes de tipo serie, o para formatear el cdigo fuente. = + * \ / ^ () # $ [] , . "" '' : ; & < Se utiliza para indicar los operadores de igualdad o asignacin. Signo ms. Se utiliza para indicar el operador de suma o el operador unario ms. Signo menos. Se utiliza para indicar el operador de resta o el operador unario menos. Asterisco. Se utiliza para indicar el operador de multiplicacin o un comentario en el cdigo fuente. Barra inclinada invertida. Se utiliza para las series entrecomilladas. Barra inclinada. Se utiliza para indicar el operador de divisin. Flecha arriba. Se utiliza para indicar el operador de elevacin a una potencia. Parntesis. Se utilizan para encerrar argumentos en las funciones o dimensiones de matriz. Hash. Se utiliza para indicar el operador de no igual. Signo del dlar. Est permitido en los nombres de variable y las etiquetas de sentencias, pero no en las constantes numricas. Corchetes. Se utilizan para indicar el operador de extraccin de subserie y para encerrar determinadas expresiones. Coma. Se utiliza para separar argumentos en las funciones y subrutinas, o en las dimensiones de matriz. No est permitida en las constantes numricas. Punto. Se utiliza para indicar un separador decimal en las constantes numricas. Comillas dobles. Se utilizan para escribir series entre comillas. Comillas simples. Se utilizan para escribir series entre comillas. Dos puntos. Se utiliza para indicar el operador de concatenacin o el final de una etiqueta de sentencia. Punto y coma. Se utiliza para indicar el final de una sentencia si desea incluir un comentario en la misma lnea. Carcter &. Se utiliza para indicar el operador Y relacional. Corchete angular izquierdo. Se utiliza para indicar el operador menor que.
Gua del desarrollador de Server Job
160
> @
Corchete angular derecho. Se utiliza para indicar el operador mayor que. Signo de arroba. Reservado para su uso en variables del sistema.
@INROWNUM Contador de filas de entrada. Se utiliza en las restricciones y derivaciones en las etapas Transformer. @OUTROWNUM Contador de filas de salida (por enlace). Se utiliza en las derivaciones en las etapas Transformer. @LOGNAME El nombre de inicio de sesin del usuario. @MONTH El actual extrado del valor de @DATE. @NULL Valor nulo. @NULL.STR Representacin interna del valor nulo, Char(128). @PATH El nombre de va de acceso del proyecto InfoSphere DataStage actual. @SCHEMA El nombre de esquema del proyecto InfoSphere DataStage actual. @SM Una marca de subvalor, Char(252).
@SYSTEM. RETURN.CODE Cdigos de estado devueltos por los procesos o mandatos del sistema. @TIME La hora interna en la que se inici el programa. Consulte la funcin Time. @TM @TRUE El compilador sustituye el valor por 1. @USERNO Nmero de usuario. Una marca de texto, Char(251).
161
@VM @WHO
Una marca de valor, Char(253). Nombre del directorio del proyecto de InfoSphere DataStage actual.
Declaracin
Estas sentencias declaran matrices, funciones y subrutinas para su uso en las rutinas. Para hacer esto... Utilice esto... Definir un rea de almacenamiento en la memoria Sentencia Common Definir una funcin escrita por el usuario Sentencia Deffun Declarar el nombre y las dimensiones de una variable de matriz Sentencia Dimension Identificar una subrutina interna Sentencia Subroutine
Control de trabajos
Estas funciones se pueden utilizar en una rutina de control de trabajo, que se define como parte de las propiedades de un trabajo y permite que otros trabajos se ejecuten y sean controlados desde el primer trabajo. Algunas de estas funciones tambin se pueden utilizar para obtener informacin de estado sobre el trabajo actual; son tiles en expresiones de etapa activa y en subrutinas anteriores y posteriores a la etapa. Para hacer esto... Utilice esto...
162
Especificar el trabajo que desee controlar DSAttachJob Establecer parmetros para el trabajo que desee controlar DSSetParam Establecer lmites para el trabajo que desee controlar DSSetJobLimit Solicitar que se ejecute un trabajo DSRunJob Esperar a que finalice un trabajo al que se ha llamado DSWaitForJob Obtener informacin sobre el proyecto actual DSGetCustInfo Obtener informacin sobre el trabajo controlado o trabajo actual DSGetProjectInfo Obtener informacin sobre una etapa en el trabajo controlado o trabajo actual DSGetJobInfo Obtener informacin sobre un enlace en un trabajo controlado o trabajo actual DSGetStageInfo Obtener informacin sobre los parmetros de un trabajo controlado DSGetLinkInfo Obtener el suceso de registro del registro de trabajos DSGetParamInfo Obtener una serie de sucesos de registro sobre el tema especificado del registro de sucesos DSGetLogEntry Obtener una lista de ID de suceso de registro para una ejecucin determinada de la invocacin de un trabajo DSGetLogEventIds Obtener el suceso de registro ms reciente, de un tipo especificado, del registro de trabajos DSGetLogSummary Registrar un suceso en el registro de trabajo de un trabajo distinto DSLogEvent Registrar un mensaje de error muy grave en el archivo de registro de un trabajo y terminar anormalmente el trabajo DSLogFatal Registrar un mensaje de informacin en el archivo de registro de un trabajo DSLogInfo Poner un mensaje de informacin en el registro de trabajo de un trabajo actual de control de trabajo DSLogToController Registrar un mensaje de aviso en el archivo de registro de un trabajo DSLogWarn Generar una serie que describe el estado actual de un trabajo conectado vlido DSMakeJobReport Insertar argumentos en la plantilla de mensaje DSMakeMsg
163
Asegurar que un trabajo est en el estado correcto para ser ejecutado y validado DSPrepareJob Interactuar con el recurso de envo de correo del sistema DSSendMail Registrar un mensaje de aviso en el archivo de registro de un trabajo DSTransformError Convertir un estado de control de trabajo o cdigo de error en un mensaje de texto explicativo DSTranslateCode Suspender un trabajo hasta que exista o no exista un archivo nombrado DSWaitForFile Comprobar si est catalogada una rutina de BASIC, en el VOC como elemento invocable o en el espacio de catlogo DSCheckRoutine Ejecutar un mandato del motor de servidor o de DOS desde una subrutina anterior/posterior DSExecute Detener un trabajo controlado DSStopJob Devolver un descriptor de contexto de trabajo obtenido anteriormente de DSAttachJob DSDetachJob Establece un mensaje de estado que devolver un trabajo como mensaje de terminacin cuando finalice DSSetUserStatus Especificar si un trabajo genera metadatos operativos cuando se ejecuta (altera temporalmente el valor predeterminado del proyecto) DSSetGenerateOpMetaData
164
Volver de una subrutina externa o interna Sentencia Return Definir el inicio de un bucle For...Next For (consulte Sentencias For...Next) Definir el final de un bucle For...Next Next (consulte Sentencias For...Next) Ir a la siguiente iteracin de un bucle Continue (consulte Sentencias For...Next) Crear un bucle Sentencias Loop...Repeat Definir condiciones para que se detenga un bucle While, Until (consulte Sentencias For...Next) Salir de un bucle Exit (consulte Sentencias For...Next) Invocar una subrutina de una sentencia sin condiciones Sentencia GoTo Invocar una subrutina de una sentencia con condiciones Sentencia On...GoTo Especificar condiciones para el flujo del programa Operador If...Then...Else
165
Comprobar si una serie es alfabtica Funcin Alpha Verificar con una suma de comprobacin de 16 bits Funcin Checksum Verificar con un cdigo de comprobacin de redundancia cclica de 32 bits Funcin CRC32 Entrecomillar una serie Funcin DQuote Delimita una serie con comillas simples Funcin SQuote Analizar una serie fonticamente Funcin Soundex Convertir una serie a maysculas Funcin UpCase Convertir una serie a minsculas Funcin DownCase Sustituir caracteres especificados en una variable Funcin Convert Sustituir caracteres especificados en una serie Sentencia Convert Sustituir o suprimir caracteres en una serie Funcin Exchange Comparar la igualdad de dos series Funcin Compare Calcular el nmero de caracteres en una serie Funcin Len Calcular la longitud de una serie en posiciones de visualizacin Funcin LenDP Recortar los espacios en blanco excedentes de una serie Funcin Trim Funcin TrimB Funcin TrimF Crear una serie formada slo por espacios Funcin Space
166
Contar las subseries delimitadas en una serie Funcin DCount Sustituir una o varias instancias de una subserie Funcin Ereplace Devolver una subserie delimitada Funcin Field Sustituir, suprimir o insertar subseries en una serie Funcin FieldStore Doblar las series para crear subseries Funcin Fold Doblar las series para crear subseries utilizando las posiciones de visualizacin de los caracteres Funcin FoldDP Extraer los primeros n caracteres de una serie Funcin Left Extraer los ltimos n caracteres de una serie Funcin Right Buscar una subserie que coincida con un patrn Funcin MatchField Repetir una serie para crear una serie nueva Funcin Str Buscar una matriz dinmica de una expresin Sentencia LOCATE
Conversin de datos
Estas funciones realizan conversiones numricas y de caracteres. Para hacer esto... Utilice esto... Convertir valores de cdigo ASCII en sus equivalentes EBCDIC Funcin Ebcdic Convertir valores de cdigo EBCDIC en sus equivalentes ASCII Funcin Ascii Convertir un valor de cdigo ASCII en su equivalente de carcter Funcin Char Convertir un carcter ASCII en su valor de cdigo Funcin Seq Convertir valores hexadecimales en decimales Funcin Xtd Convertir valores decimales en hexadecimales Funcin Dtx Convertir un valor numrico en uno de coma flotante con la precisin especificada Funcin FIX Convertir un valor numrico en uno de coma flotante sin prdida de precisin Funcin REAL Generar un carcter individual en formato Unicode Funcin UniChar
Captulo 7. Programacin BASIC
167
Formateo de datos
Estas funciones pueden utilizarse para formatear los datos en horas, fechas, cantidades monetarias, etc. Para hacer esto... Utilice esto... Convertir datos para la salida Funcin Oconv Convertir datos en la entrada Funcin Iconv Formatear datos para la salida Funcin Fmt Formatear datos por posicin de visualizacin Funcin FmtDP en la pgina 232
Sentencia $Define
Define los identificadores que controlan la compilacin del programa o proporciona el texto de sustitucin de un identificador. No est disponible en las expresiones.
Sintaxis
$Define identificador [texto.sustitucin]
El valor de identificador es el smbolo que se va a definir. Puede ser cualquier identificador vlido. El valor de texto.sustitucin es una serie de caracteres que el compilador utiliza para sustituir identificador en todos los casos en que aparece en el programa que contiene la sentencia $Define.
Comentarios
Especifique un espacio en blanco para separar el identificador del texto.sustitucin. Los siguientes espacios en blancos se consideran parte del texto.sustitucin. Finalice el texto.sustitucin con una nueva lnea. No incluya comentarios despus del texto.sustitucin o se incluirn como parte del texto de sustitucin.
168
Ejemplos
Este ejemplo muestra cmo puede utilizarse $Define en el tiempo de compilacin para determinar si una rutina opera en modalidad de depuracin, y cmo se utilizan $IfDef y $IfNDef para controlar el flujo del programa, segn corresponda:
* Establece la siguiente lnea en $UnDefine para desactivar el cdigo de depuracin $Define DebugMode ... $IfDef DebugMode * En modalidad de depuracin, se registra cada vez mediante esta rutina. Call DSLogInfo("Transform entered,arg1 = ":Arg1, "Test") $EndIf
Este ejemplo muestra cmo puede utilizarse $Define para sustituir texto del programa por un identificador simblico.
* Da un nombre simblico a los ltimos 3 caracteres del * argumento de entrada de la rutina de transformacin. $Define NameSuffix Arg1[3] ... If NameSuffix = "X27" Then * La accin se basa en un valor especfico en los ltimos 3 caracteres. ...End
Sintaxis
{$IfDef | IfNDef} identificador [ sentencias ] $Else [ sentencias ] $EndIf
identificador es el identificador que se prueba. $Else especifica las sentencias alternativas que se ejecutan. $EndIf finaliza el bloque de compilacin condicional.
Comentarios
Con $IfDef, si el identificador est definido por una sentencia $Define anterior, todas las lneas de cdigo fuente del programa que aparecen entre la sentencia $IfDef y la sentencia $EndIf de cierre se compilan. Con $IfNDef, las lneas se compilan si el identificador no est definido. Las sentencias $IfDef y $IfNDef se pueden anidar hasta 10 niveles.
Ejemplo
Este ejemplo muestra cmo puede utilizarse $Define en el tiempo de compilacin para determinar si una rutina opera en modalidad de depuracin, y cmo se utilizan $IfDef y $IfNDef para controlar el flujo del programa, segn corresponda:
* Establece la siguiente lnea en $UnDefine para desactivar el cdigo de depuracin $Define DebugMode ...
169
$IfDef DebugMode * En modalidad de depuracin, se registra cada vez mediante esta rutina. Call DSLogInfo("Transform entered,arg1 = ":Arg1, "Test") $EndIf
Sentencia $Include
Inserta el cdigo fuente contenido en un archivo aparte y lo compila con el programa principal. No est disponible en las expresiones.
Sintaxis
$Include programa
Comentarios
El archivo incluido debe estar en el subdirectorio del proyecto DSU_BP. Puede anidar sentencias $Include.
Sentencia $Undefine
Elimina un identificador que se ha establecido utilizando la sentencia $Define. Si no se establece ningn identificador, $Undefine no tiene ningn efecto. No est disponible en las expresiones.
Sintaxis
$Undefine identificador
Operador []
Sintaxis
Extrae una subserie de una serie de caracteres. La segunda sintaxis acta como la funcin Field. Los corchetes del operador [ ] se muestran en negrita y cursiva en la sintaxis y deben especificarse.
serie [ [ inicio,] longitud ] serie[ delimitador, instancia, repeticiones ]
serie es la serie de caracteres. Si la serie es un valor nulo, el valor extrado tambin es nulo. inicio es un nmero que define la posicin inicial del primer carcter de la subserie. Un valor 0 o un valor negativo se supone que es 1. Si especifica una posicin inicial despus del final de serie, se devuelve una serie vaca. longitud es el nmero de caracteres en la subserie. Si especifica 0 o un nmero negativo, se devuelve una serie vaca. Si especifica ms caracteres de los que quedan entre el inicio y el final de la serie, el valor devuelto contiene slo el nmero de caracteres que quedan en serie. delimitador es un carcter que delimita el inicio y el final de la subserie. Si no se encuentra el delimitador en la serie, se devuelve una serie vaca, salvo que instancia sea 1, en cuyo caso se devuelve la serie. instancia especifica qu instancia del delimitador marca el final de la subserie. Un valor menor que 1 se supone que es 1.
170
repeticin especifica el nmero de veces que se repite la extraccin en la serie. Un valor menor que 1 se supone que es 1. Se devuelve el delimitador con las sucesivas subseries.
Comentarios
Puede especificar una subserie formada por los n ltimos caracteres de una serie utilizando la primera sintaxis y omitiendo inicio.
Ejemplos
En el ejemplo siguiente (donde se utiliza la segunda sintaxis), el cuarto carcter # es el terminador de la subserie que se va a extraer, y se extrae un campo:
A="###DHHH#KK" B = A["#",4,1]
El resultado es B es igual a DHHH. Las sintaxis siguientes especifican subseries que empiezan en la posicin de carcter 1:
expression [ 0, length ] expression [ -1, length ]
El resultado es 67890. Todas las sintaxis de subserie se pueden utilizar con el operador de asignacin ( = ). El nuevo valor asignado a la variable sustituye a la subserie especificada por el operador [ ]. Este uso no est disponible en las expresiones. Por ejemplo:
A = 12345 A[3] = 1212
El resultado es A es igual a 121212. Como no se ha especificado ningn argumento de longitud, A[3] sustituye los tres ltimos caracteres de A (345) por el nuevo valor asignado para esa subserie (1212).
Sentencia *
Inserta un comentario en un programa.
Sintaxis
* [texto.comentario]
Comentarios
Un comentario puede aparecer en cualquier lugar del programa, excepto en el texto de sustitucin de un identificador (consulte la sentencia $Define). Cada lnea de comentarios completa debe empezar por un asterisco (*). Si aade un comentario al final de una lnea que contiene una sentencia ejecutable, debe escribir un carcter de punto y coma (;) antes del asterisco.
Ejemplo
Este ejemplo contiene un comentario en lnea y un comentario de lnea completa.
171
MyVar = @Null ;* establece la variable en un valor nulo If IsNull(MyVar * 10) Then * Ser true, ya que toda operacin aritmtica que incluya un valor nulo * da como resultado un valor nulo. End
Funcin Abs
Devuelve el valor absoluto (sin signo) de un nmero.
Sintaxis
Abs (nmero)
Comentarios
Una forma til de eliminar el signo ms o menos de una serie. Por ejemplo, si nmero es -6 o +6, Abs devuelve 6. Si nmero es un valor nulo, se devuelve un valor nulo.
Ejemplo
Este ejemplo utiliza la funcin Abs para calcular el valor absoluto de un nmero:
AbsValue = Abs(12.34) ;* devuelve 12.34 AbsValue = Abs(-12.34) ;* devuelve 12.34
Funcin Alpha
Comprueba si una serie es alfabtica. Si el soporte multilingstico est habilitado, el resultado de esta funcin depende del valor de entorno local actual del convenio Ctype.
Sintaxis
Alpha (serie)
Comentarios
Las series alfabticas contienen slo los caracteres de a-z o A-Z. Alpha devuelve 1 si la serie es alfabtica, un valor nulo si la serie es un valor nulo y 0 en los dems casos.
Ejemplos
Estos ejemplos muestran cmo comprobar que una serie contiene slo caracteres alfabticos:
Column1 = "ABcdEF%" * el carcter "%" no es alfabtico Column2 = (If Alpha(Column1) Then "A" Else "B") * Column2 se establece en "B" Column1 = "" * tenga en cuenta que la serie vaca no es un carcter alfabtico Column2 = (If Alpha(Column1) Then "A" Else "B") * Column2 se establece en "B"
172
Funcin Ascii
Convierte los valores de los caracteres de una serie del formato EBCDIC al formato ASCII.
Sintaxis
Ascii (serie)
serie es la serie o la expresin que desea convertir. Si la serie es un valor nulo, se devuelve un valor nulo.
Comentarios
Las funciones Ascii y Ebcdic realizan operaciones complementarias. Nota: Si el soporte multilingstico est habilitado, esta funcin puede devolver datos no reconocidos para la correlacin de juego de caracteres actual.
Ejemplo
Este ejemplo muestra cmo se utiliza la funcin Ascii para comparar una serie de bytes EBCDIC:
EbcdicStr = Char(193):Char(241) AsciiStr = Ascii(EbcdicStr) If AsciiStr = "A1" Then ... EndIf ;* letra A dgito 1 en EBCDIC ;* convierte EBCDIC en ASCII ;* se compara con la constante ASCII ;* ... se utiliza esta ramificacin
Sentencia de asignacin
Las sentencias de asignacin son =, +=, -= y :=. Asignan valores a las variables. No est disponible en las expresiones. s
Sintaxis
variable = valor variable += valor variable -= valor variable := valor
valor es el valor que desea asignar. Puede ser una expresin o una constante cualquiera, incluido el valor nulo.
Comentarios
= asigna el valor a la variable. += aade el valor a la variable. -= resta el valor de la variable. := concatena el valor al final de la variable. Para asignar un valor nulo a una variable, utilice esta sintaxis:
variable = @NULL
Captulo 7. Programacin BASIC
173
Para asignar una serie de caracteres que contiene nicamente el carcter utilizado para representar el valor nulo a una variable, utilice esta sintaxis:
variable = @NULL.STR
funciones Bit
Las funciones Bit son BitAnd, BitOr, BitNot, BitSet, BitReset, BitTest y BitXOr. Realizan operaciones bit a bit en los enteros.
Sintaxis
BitAnd | BitOr | BitXOr (entero1, entero2) BitSet | BitReset | BitTest (entero, nmero.bit) BitNot (entero [,nmero.bit])
entero1 y entero2 son los enteros que se van a comparar. Si alguno de los valores de entero es nulo, se devuelve un valor nulo. Los lugares decimales se truncan antes de la evaluacin. entero es el entero que se va a evaluar. Si el entero es un valor nulo, se devuelve un valor nulo. Los lugares decimales se truncan antes de la evaluacin. nmero.bit es el nmero del bit en el que se acta. Los bits se cuentan de derecha a izquierda a partir de 0. Si nmero.bit es un valor nulo, el programa falla con un error de tiempo de ejecucin.
Comentarios
Las funciones Bit operan en una palabra de complemento de a dos de 32 bits. No utilice estas funciones si desea que el cdigo sea porttil, ya que el valor de bit superior puede variar en otro hardware. BitAnd compara dos enteros bit a bit. Para cada bit, devuelve el bit 1 si ambos bits son 1; de lo contrario, devuelve el bit 0. BitOr compara dos enteros bit a bit. Para cada bit, devuelve el bit 1 si uno de los bits o ambos son 1; de lo contrario, devuelve el bit 0. BitXOr compara dos enteros bit a bit. Para cada bit, devuelve el bit 1 si slo uno de los dos bits es 1; de lo contrario, devuelve el bit 0. BitTest prueba si se ha establecido el bit especificado. Devuelve 1 si el bit se ha establecido; de lo contrario, devuelve 0. BitNot invierte los bits en un entero, es decir, cambia el bit 1 por el bit 0, y viceversa. Si se especifica nmero.bit, se invierte ese bit; de lo contrario, se invierten todos los bits. BitSet establece el bit especificado en 1. Si ya es 1, no se cambia. BitReset restablece el bit especificado en 0. Si ya es 0, no se cambia.
Ejemplos
BitAnd
Result = BitAnd(6, 12) ;* Result is 4 * (bin) (dec) BitAnd (bin) (dec) gives (bin) (dec) * 110 6 1100 12 100
174
BitNot
Result = BitNot(6) Result = BitNot(15, 0) Result = BitNot(15, 1) Result = BitNot(15, 2) * (bin) (dec) BitNot bit# * 110 6 (all) * 1111 15 0 * 1111 15 1 * 1111 15 2 ;* ;* ;* ;* gives Result is -7 Result is 14 Result is 13 Result is 11 (bin) (dec) 1...1001 7 1110 14 1101 13 1011 11
BitOr
Result = BitOr(6, 12) ;* Result is 14 * (bin) (dec) BitOr (bin) (dec) gives (bin) (dec) * 110 6 1100 12 1110 14
BitReset
Result = Result = Result = Result = * (bin) * 11101 * 11101 * 10 * 10 BitReset(29, 0) ;* Result is 28 BitReset(29, 3) ;* Result is 21 BitReset(2, 1) ;* Result is 0 BitReset(2, 0) ;* Result is 2 (dec) BitReset bit# gives (bin) (dec) 29 0 11100 28 29 3 10101 21 2 1 00 0 2 0 10 2
BitSet
Result = Result = Result = Result = * (bin) * 10100 * 10100 * 10 * 10 BitSet(20, 0) BitSet(20, 3) BitSet(2, 0) BitSet(2, 1) (dec) BitReset bit# 20 0 20 2 2 0 2 1 ;* Result is 21 ;* Result is 28 ;* Result is 3 ;* Result is 2 gives (bin) (dec) 10101 21 11100 28 11 3 10 2
BitTest
Result = Result = Result = Result = * (bin) * 1011 * 1011 * 1011 * 1011 BitTest(11, 0) BitTest(11, 1) BitTest(11, 2) BitTest(11, 3) (dec) BitTest bit# 11 0 11 1 11 2 11 3 ;* ;* ;* ;* is: 1 1 0 1 Result Result Result Result is is is is 1 1 0 1
BitXOr
Result = BitXor(6, 12) ;* Result is 10 * (bin) (dec) BitXOr (bin) (dec) gives (bin) (dec) * 110 6 1100 12 1010 10
175
v ByteType determina la funcin interna de un determinado byte. v ByteVal determina el valor de un determinado byte en una serie. Nota: Utilice estas funciones con cuidado: si crea una serie no vlida, puede producir resultados inesperados cuando la procese otra funcin.
Funcin Byte
Devuelve un byte de un valor numrico de entrada.
Sintaxis
Byte (expresin)
Comentarios
La funcin Byte puede utilizarse para crear una serie byte a byte, en lugar de carcter a carcter. Si el soporte multilingstico no est habilitado, la funcin Byte funciona como la funcin Char.
Funcin ByteLen
Devuelve la longitud de una serie interna en bytes, en lugar de en caracteres.
Sintaxis
ByteLen (expresin)
Comentarios
Si expresin es una serie vaca, el resultado es 0. Si expresin es un nulo SQL, el resultado es un nulo.
Funcin ByteType
Devuelve la funcin de un determinado byte en el cdigo de carcter interno.
Sintaxis
ByteType (valor)
valor es un valor de byte, del 0 al 255, cuya funcin debe determinarse. Si valor es un nulo SQL, se devuelve un valor nulo.
Comentarios
El resultado se devuelve como uno de los valores siguientes: Valor 0 1 Significado El byte final de un carcter de varios bytes Un carcter de un solo byte
Gua del desarrollador de Server Job
176
2 3 4 5 -1
El byte inicial de un carcter de dos bytes El byte inicial de un carcter de tres bytes Reservado (el byte inicial de un carcter de cuatro bytes) Un delimitador del sistema El valor de entrada no est en el rango del 0 al 255
Funcin ByteVal
Devuelve el valor interno de un byte especificado en una serie. ByteVal
Sintaxis
ByteVal ( serie [, nmero_byte ] )
serie contiene el byte que se va a evaluar. Una serie vaca o un valor nulo devuelve -1. Una serie que tiene menos bytes que el nmero especificado en nmero_byte devuelve -1. nmero_byte es el nmero del byte en la serie que se evala. Si se omite o es menor que 1, se utiliza 1.
Comentarios
El resultado se devuelve como un valor para el byte en el rango del 0 al 255.
Sentencia Call
Llama a una subrutina. No est disponible en las expresiones.
Sintaxis
Call subrutina [ ( argumento [ , argumento ] ... ) ]
argumento es una variable, una expresin o una constante que desea pasar a la subrutina. Si hay varios argumentos, deben ir separados por comas.
Comentarios
Call transfiere el control de programa del programa principal a una subrutina externa compilada. Utilice una sentencia Return para devolver el control al programa principal. El nmero de argumentos especificados en una sentencia Call debe ser igual al nmero de argumentos especificados en la sentencia Subroutine que identifica la subrutina. Las constantes se pasan por valor; las variables se pasan por referencia. Si desea pasar variables por valor, delimtelas con parntesis. Nota: Si pasa las variables por valor, un cambio en la variable en la subrutina no afecta al valor de la variable en el programa principal. Si pasa las variables por referencia, un cambio en la variable en la subrutina tambin afecta a programa principal.
177
Ejemplo
Este ejemplo muestra cmo llamar a una rutina anterior/posterior denominada MyRoutineB desde otra rutina denominada MyRoutineA:
Subroutine MyRoutineA(InputArg, ErrorCode) ErrorCode = 0 ;* se establece el cdigo de error local * Cuando se invoca una rutina escrita por el usuario que se mantiene en el * repositorio de DataStage, debe aadir un prefijo "DSU.". * Asegrese de proporcionar otra variable para el segundo argumento * de la rutina invocada para mantenerlo aparte del suyo * propio. Call DSU.MyRoutineB("First argument", ErrorCodeB) If ErrorCodeB <> 0 Then ... ;* la rutina invocada ha fallado; acte segn corresponda Endif Return
Sentencia Case
Altera la secuencia de ejecucin en el programa de acuerdo con el valor de una expresin. No est disponible en las expresiones.
Sintaxis
Begin Case expresin expresin End Case Case sentencias [ Case sentencias ] ...
expresin es un valor que se utiliza para probar el caso. Si expresin es un valor nulo, se supone que es false. sentencias son las sentencias que se ejecutan si expresin es true.
Comentarios
Las sentencias Case pueden estar repetidas. Si el valor de expresin en la primera sentencia Case es true, se ejecutan las sentencias siguientes. Si expresin es false, el programa cambia a la siguiente sentencia Case. El proceso se repite hasta que se alcance una sentencia End Case. Si ms de una expresin es true, slo se acta en la primera. Si ninguna expresin es true, no se ejecuta ninguna de las sentencias. Para probar si una variable contiene un valor nulo, utilice esta sintaxis:
Case IsNull (expresin)
Para especificar un caso predeterminado para que se ejecute si las dems expresiones son false, utilice una expresin que contenga el valor constante 1.
Ejemplo
Este ejemplo utiliza sentencias Case en el argumento de entrada para seleccionar el tipo de proceso que se ejecuta en una rutina:
Function MyTransform(Arg1) Begin Case Case Arg1 = 1 Reply = "A" Case Arg1 = 2 Reply = "B"
178
Case Arg1 > 2 And Arg1 < 11 Reply = "C" Case @True ;* los dems valores Call DSTransformError("Bad arg":Arg1, "MyTransform" Reply = "" End Case Return(Reply)
Sentencia Cats
Concatena dos series.
Sintaxis
Cats (serie1, serie2)
serie1 y serie2 son las series que se concatenarn. Si alguna de las series es un valor nulo, se devuelve un valor nulo.
Ejemplo
String1 = "ABC" String2 = "1234" Result = Cats(String1, String2) * El resultado contiene "ABC1234"
Funcin Change
Sustituye una o varias instancias de una subserie.
Sintaxis
Change (serie, subserie, sustitucin [,nmero [,inicio]])
serie es la serie o la expresin en la que desea cambiar subseries. Si serie se evala en un valor nulo, se devuelve el valor nulo. subserie es la subserie que desea sustituir. Si est vaca, se devuelve el valor de serie (esta es la nica diferencia entre Change y Ereplace). sustitucin es la subserie de sustitucin. Si sustitucin es una serie vaca, se eliminan todas las apariciones de subserie. nmero especifica el nmero 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 ejecucin.
179
Ejemplos
El siguiente ejemplo sustituye todas las apariciones de una subserie por otra:
MyString = "AABBCCBBDDBB"NewString = Change(MyString, "BB", "xxx") * El resultado es "AAxxxCCxxxDDxxx"
Funcin Char
Genera un carcter ASCII a partir de su valor de cdigo numrico.
Sintaxis
Char (cdigo)
cdigo es el valor de cdigo ASCII del carcter o una expresin que se evala en el cdigo.
Comentarios
Tenga cuidado con los valores nulos. Si el cdigo es un valor nulo, se devuelve un nulo. Si el cdigo es 128, el valor devuelto es CHAR(128), es decir, la variable del sistema @NULL.STR. La funcin Char es la inversa de la funcin Seq. Nota: Si el soporte multilingstico est habilitado, los valores de cdigo en el rango del 129 al 247 devuelve valores Unicode en el rango de x0081 a x00F7. Estos son caracteres de varios bytes equivalentes a los mismos valores en el juego de caracteres ISO 8859 (Latin 1). Para generar los bytes especficos con los valores del 129 al 247, utilice la funcin Byte.
Ejemplo
Este ejemplo utiliza la funcin Char para devolver el carcter asociado con el cdigo de carcter especificado:
MyChar = Char(65) ;* devuelve "A" MyChar = Char(97) ;* devuelve "a" MyChar = Char(32) ;* devuelve un espacio MyChar = Char(544) * devuelve un espacio (544 = 32 mdulos 256)
Funcin Checksum
Devuelve un valor de suma de comprobacin de una serie.
Sintaxis
Checksum (serie)
180
serie es la serie a la que desea aadir la suma de comprobacin. Si serie es un valor nulo, se devuelve el valor nulo.
Ejemplo
En este ejemplo, se utiliza la funcin Checksum para devolver un nmero que es un cdigo de redundancia cclica para la serie especificada:
MyString = "This is any arbitrary string value" CheckValue = Checksum(MyString) ;* devuelve 36235
Sentencia CloseSeq
Cierra un archivo despus del proceso secuencial.
Sintaxis
CloseSeq variable.archivo [On Error sentencias ]
variable.archivo especifica un archivo abierto anteriormente con una sentencia OpenSeq. On Error sentencias especifica las sentencias que se ejecutan si se produce un error muy grave durante el proceso de la sentencia CloseSeq.
Comentarios
Cada referencia de archivo secuencial en una rutina debe ir precedida de una sentencia OpenSeq aparte para el archivo. OpenSeq establece un bloqueo de registro de actualizacin en el archivo. De este modo, se impide que ningn otro programa cambie el archivo mientras se procesa. CloseSeq restablece este bloqueo despus de procesar el archivo. Varias operaciones OpenSeq en el mismo archivo slo generan un bloqueo de registro de actualizacin, por lo que slo debe incluir una sentencia CloseSeq por archivo. Si se produce un error muy grave y no se ha especificado ninguna clusula On Error: v Aparece un mensaje de error. v Se retrotrae alguna transaccin no confirmada iniciada en el entorno de ejecucin actual. v Termina el programa actual. Si se utiliza la clusula On Error, el valor devuelto por la funcin Status es el nmero de error.
Funcin Col1
Devuelve la posicin del carcter anterior a la subserie especificada en la funcin Field ejecutada ms recientemente.
Sintaxis
Col1 ( )
Comentarios
La posicin del carcter se devuelve como un nmero. El valor devuelto es local para la rutina que ejecuta la funcin Field. El valor de Col1 en la rutina se inicializa como 0. Col1 devuelve un valor 0 si: v No se ha ejecutado la funcin Field.
Captulo 7. Programacin BASIC
181
v La expresin de delimitador de la funcin Field es una serie vaca o el valor nulo. v No se ha encontrado la serie.
Ejemplos
La funcin Field del ejemplo siguiente devuelve la subserie "CCC". Col1 ( ) devuelve 8, la posicin del delimitador (/) que precede a CCC.
* Extraer tercer campo delimitado por "/". SubString = Field("AAA/BBB/CCC", "/" ,3) Position = Col1() ;* obtiene la posicin del delimitador
En el ejemplo siguiente, la funcin Field devuelve una subserie de dos campos con el delimitador (.) que los separa: 4.5. Col1 ( ) devuelve 6, la posicin del delimitador que precede a 4.
* Obtener cuarto y quinto campo delimitado por ".". SubString = Field("1.2.3.4.5.6", ".", 4, 2) Position = Col1() ;* obtiene la posicin del delimitador
Funcin Col2
Devuelve la posicin del carcter que sigue a la subserie especificada en la funcin Field ejecutada ms recientemente.
Sintaxis
Col2 ( )
Comentarios
La posicin del carcter se devuelve como un nmero. El valor devuelto es local para la rutina que ejecuta la funcin Field. El valor de Col2 en la rutina se inicializa como 0. Cuando se devuelve el control al programa de llamada, se restaura el valor guardado de Col2. Col2 devuelve un valor 0 si: v No se ha ejecutado la funcin Field. v La expresin de delimitador de la funcin Field es una serie vaca o el valor nulo. v No se ha encontrado la serie.
Ejemplos
La funcin Field del ejemplo siguiente devuelve la subserie "CCC". Col2 ( ) devuelve 12, la posicin que el delimitador (/) habra ocupado despus de CCC si no se hubiera encontrado el final de la serie.
* Extraer tercer campo delimitado por "/". SubString = Field("AAA/BBB/CCC", "/" ,3) Position = Col2() ;* devuelve el final de la serie de hecho
En el ejemplo siguiente, la funcin Field devuelve una subserie de dos campos con el delimitador (.) que los separa: 4.5. Col2 ( ) devuelve 10, la posicin del delimitador que sigue a 5.
* Obtener cuarto y quinto campo delimitado por ".". SubString = Field("1.2.3.4.5.6", ".", 4, 2) Position = Col2() ;* obtiene la posicin del delimitador
En el ejemplo siguiente, Field devuelve toda la serie, ya que el delimitador (.) no se encuentra. Col2 ( ) devuelve 6, la posicin tras el ltimo carcter de la serie.
182
* * Intenta obtener primero el primer campo delimitado por ".", * pero falla. SubString = Field("9*8*7", ".", 1) Position = Col2() ;* devuelve la longitud de la serie + 1
En el ejemplo siguiente, Field devuelve una serie vaca, ya que no existe una dcima aparicin de la subserie en la serie. Col2 ( ) devuelve 0 porque no se ha encontrado la subserie.
* * Intenta obtener primero el dcimo campo delimitado por ".", * pero falla. SubString = Field("9*8*7*6*5*4", "*", 10) Position = Col2 ;* devuelve 0
Sentencia Common
Define un rea de almacenamiento comn para las variables. No est disponible en las expresiones.
Sintaxis
Common /nombre / variable [ ,variable] ...
/nombre/ es el nombre que identifica el rea comn y es significativo hasta 31 caracteres. variable es el nombre de una variable que se almacena en el rea comn.
Comentarios
Todas las rutinas que tienen declarado el /nombre/ comn pueden acceder a las variables del rea comn. (Utilice la sentencia $Include para definir el rea comn en cada rutina). Las variables correspondientes pueden tener distintos nombres en distintas rutinas, pero deben definirse en el mismo orden. La sentencia Common debe preceder a cualquier referencia a las variables que denomina. Las matrices se pueden dimensionar y denominar con una sentencia Common. Se pueden volver a dimensionar ms tarde con una sentencia Dimension, pero la sentencia Common debe aparecer antes de la sentencia Dimension.
Ejemplo
Este ejemplo muestra dos rutinas que se comunican mediante un rea comn denominada MyCommon, definida en un archivo aparte en el subdirectorio DSU_BP cuyo nombre est declarado por una sentencia $Include: El archivo DSU_BP \ MyCommon.H contiene:
Common /MyCommon/ ComVar1, ;* variable individual ComVar2(10) ;* matriz de 10 variables
183
Next n Call DSU.MyRoutineB("another arg", ErrorCodeB) * Etc. ... Return Subroutine MyRoutineB(InputArg, ErrorCode) $Include MyCommon.H ErrorCode = 0 * Lee los valores fuera de la matriz comn: For n = 1 To ComVar1 MyVar = ComVar2(n) * Realizar alguna accin... ... Next n Return
Funcin Compare
Compara dos series. Si el soporte multilingstico est habilitado, el resultado de esta funcin depende del valor de entorno local actual del convenio Collate.
Sintaxis
Compare (serie1, serie2 [ , justificacin ])
serie1 y serie2 son las series que se compararn. El valor de justificacin es L para una comparacin justificada a la izquierda o R para una comparacin justificada a la derecha. Si no especifica L o R, el valor predeterminado es L. Cualquier otro valor genera un aviso de tiempo de ejecucin, y se devuelve 0.
Comentarios
El resultado de la comparacin se devuelve como uno de los valores siguientes: serie1 es menor que serie2. 0 serie1 es igual que serie2 o la expresin de justificacin no es vlida. 1 serie1 es mayor que serie2. Utilice una comparacin justificada a la derecha para las series numricas; utilice una comparacin justificada a la izquierda para las series de texto. Tenga cuidado con las series mixtas. Por ejemplo, una comparacin justificada a la derecha de las series AB100 y AB99 indica que AB100 es mayor que AB99 ya que 100 es mayor que 99. No obstante, una comparacin justificada a la derecha de las series AC99 y AB100 indica que AC99 es mayor ya que C es mayor que B.
Ejemplo
En el ejemplo siguiente, las series AB99 y AB100 se comparan con la opcin de justificacin a la derecha, en la que "AB100" es mayor que "AB99":
On Compare("AB99", "AB100", "R") + 2 GoSub LessThan, EqualTo GreaterThan
184
Funcin Convert
Sustituye todas las instancias de los caracteres especificados en una serie por los caracteres de sustitucin.
Sintaxis
Convert (lista, nueva.lista, serie)
lista es la lista de caracteres que se van a sustituir. Si la lista es un valor nulo, genera un error de tiempo de ejecucin. nueva.lista es la lista correspondiente de caracteres de sustitucin. Si nueva.lista es un valor nulo, genera un error de tiempo de ejecucin. La expresin serie se evala como la serie o un variable que contiene la serie. Si serie es un valor nulo, se devuelve el valor nulo.
Comentarios
Las dos listas de caracteres se corresponden. El primer carcter de nueva.lista sustituye a todas las instancias del primer carcter de la lista, el segundo sustituye al segundo, etc. Si las dos listas no contienen el mismo nmero de caracteres: v Los caracteres de lista que no tengan caracteres correspondientes en nueva.lista se suprimen del resultado. v Los caracteres excedentes de nueva.lista se ignoran.
Ejemplo
Este es un ejemplo de Convert utilizado como funcin:
MyString ="NOW IS THE TIME" ConvStr = Convert("TI", "XY", MyString) * todas T => X, I => Y * En este punto, ConvStr es: NOW YS XHE XYME ConvStr = Convert("XY", "Z", ConvStr) * todas X => Z, Y => "" * En este punto, ConvStr es: NOW S ZHE ZME
Sentencia Convert
Sustituye todas las instancias de los caracteres especificados en una serie por los caracteres de sustitucin. No est disponible en las expresiones.
Sintaxis
Convert lista To nueva.lista In serie
lista es la lista de caracteres que se van a sustituir. Si lista es un valor nulo, genera un error de tiempo de ejecucin. nueva.lista es la lista correspondiente de caracteres de sustitucin. Si nueva.lista es un valor nulo, genera un error de tiempo de ejecucin. La expresin serie se evala como la serie o un variable que contiene la serie. Si serie es un valor nulo, se devuelve el valor nulo.
Captulo 7. Programacin BASIC
185
Comentarios
Las dos listas de caracteres se corresponden. El primer carcter de nueva.lista sustituye a todas las instancias del primer carcter de la lista, el segundo sustituye al segundo, etc. Si las dos listas no contienen el mismo nmero de caracteres: v Los caracteres de lista que no tengan caracteres correspondientes en nueva.lista se suprimen del resultado. v Los caracteres excedentes de nueva.lista se ignoran.
Ejemplo
Este es un ejemplo de Convert utilizado como sentencia, que convierte la serie:
MyString ="NOW IS THE TIME" Convert "TI" To "XY" In MyString * todas T => X, I => Y * En este punto, MyString es: NOW YS XHE XYME Convert "XY" To "Z" In MyString * todas X => Z, Y => "" * En este punto, MyString es: NOW S ZHE ZME
Funcin Count
Cuanta el nmero de veces que una subserie aparece en una serie.
Sintaxis
Count (serie, subserie)
serie es la serie que desea buscar. Si serie es un valor nulo, se devuelve el valor nulo. subserie es la subserie que desea contar. Puede ser una serie de caracteres, una constante o una variable. Si la subserie no aparece en la serie, se devuelve 0. Si la subserie es una serie vaca, se devuelve el nmero de caracteres de la serie. Si la subserie es un valor nulo, se produce un error de tiempo de ejecucin.
Comentarios
Cuando se cuenta una subserie completa, Count pasa al siguiente carcter y vuelve a empezar. Por ejemplo, la sentencia siguiente cuenta slo dos instancias de la subserie tt y devuelve 2 a la variable c:
c = Count (tttt, tt)
Ejemplo
* La siguiente lnea devuelve el nmero de "A" * en la serie (3). MyCount = Count("ABCAGHDALL", "A") * La siguiente lnea devuelve 2 ya que las subseries solapadas * no se cuentan. MyCount = Count ("TTTT", "TT")
Funcin CRC32
Devuelve un valor de comprobacin de redundancia cclica de 32 bits para una serie.
Sintaxis
CRC32 (serie)
186
serie es la serie a la que desea aadir el valor de CRC. Si serie es un valor nulo, se devuelve el valor nulo.
Ejemplo
En este ejemplo, se utiliza la funcin CRC para devolver un nmero que es un cdigo de redundancia cclica para la serie especificada:
MyString = "This is any arbitrary string value" CheckValue = CRC32(MyString) ;* devuelve 36235
Funcin de fecha
Devuelve una fecha con su formato de sistema interno.
Sintaxis
Date ( )
Comentarios
IBM InfoSphere DataStage almacena las fechas como el nmero de das antes o despus del da 0, utilizando el 31 de diciembre de 1967 como da 0. Por ejemplo: Esta fecha... Se almacena como... 10 de diciembre de 1967 -21 15 de noviembre de 1967 -46 31 de diciembre de 1967 0 15 de febrero de 1968 46 1 de enero de 1985 6575 Utilice la fecha interna siempre que necesite realizar conversiones de salida.
Ejemplo
Este ejemplo muestra cmo convertir la fecha actual en formato interno en una serie que represente el da siguiente:
Tomorrow = Oconv(Date() + 1, "D4/YMD") ;* "1997/5/24"
Funcin DCount
Cuenta los campos delimitados de una serie.
Sintaxis
DCount (serie, delimitador)
serie es la serie que en la que se realiza la bsqueda. Si la serie es una serie vaca, se devuelve 0. Si la serie es un valor nulo, se devuelve el valor nulo.
Captulo 7. Programacin BASIC
187
delimitador es uno o varios caracteres que delimitan los campos que se van a contar. Si el delimitador es una serie vaca, se devuelve el nmero de caracteres de la serie + 1. Si el delimitador es un valor nulo, se produce un error de tiempo de ejecucin. Dos delimitadores consecutivos en la serie se cuentan como un campo.
Comentarios
DCount se diferencia de Count en que devuelve el nmero de valores separados por delimitadores en lugar del nmero de apariciones de una serie de caracteres.
Ejemplo
* La siguiente lnea devuelve el nmero de subseries * delimitadas por "A" en la serie (4) MyCount = DCount("ABCAGHDALL", "A") * La siguiente lnea devuelve 3 ya que las subseries solapadas * no se cuentan. MyCount = DCount ("TTTT", "TT")
Sentencia Deffun
Define una funcin escrita por el usuario.
Sintaxis
Deffun funcin [ ( [Mat] argumento [, [Mat] argumento ...] ) ] [Calling nombre.llamada]
funcin es el nombre de la funcin que se va a definir. argumento es un argumento que se pasa a la funcin. Puede proporcionar hasta 254 argumentos. Para pasar una matriz, especifique Mat antes del nombre de matriz. Calling nombre.llamada especifica el nombre que se utiliza para llamar a la funcin. Si no especifica ningn nombre, la funcin se invoca utilizando function.
Comentarios
Debe declarar una funcin escrita por el usuario antes de poder utilizarla en un programa. Puede definir una funcin escrita por el usuario una sola vez en un programa. La definicin de la funcin dos veces genera un error muy grave.
Ejemplo
Este ejemplo muestra cmo definir una funcin de transformacin denominada MyFunctionB, para que se pueda invocar desde otra funcin de transformacin denominada MyFunctionA:
Function MyFunctionA(Arg1) * Cuando hace referencia a una funcin escrita por el usuario que se mantiene en el * repositorio de DataStage, debe declararla como una funcin con el * nmero correcto de argumentos y aadirle un prefijo "DSU.". Deffun MyFunctionB(A) Calling "DSU.MyFunctionB"
Sentencia Dimension
Define las dimensiones de una o varias matrices. No est disponible en las expresiones.
188
Sintaxis
Dimension matriz (filas, columnas) [ , matriz (filas, columnas) ] ... Dimension vector (mx) [ , vector (mx) ] ...
matriz es una matriz bidimensional que se va a dimensionar. filas es el nmero mximo de filas en la matriz. columnas es el nmero mximo de columnas en la matriz. vector es una matriz unidimensional que se va a dimensionar. mx es el nmero mximo de elementos en la matriz.
Comentarios
Las matrices se pueden volver a dimensionar en el tiempo de ejecucin. Puede cambiar una matriz de unidimensional a bidimensional y viceversa. El hecho de volver a dimensionar una matriz afecta a los valores de los elementos de matriz tal como se indica a continuacin: v Los elementos comunes con la misma direccin fila/columna en ambas matrices se conservan. v Los nuevos elementos que no tenan ninguna direccin fila/columna en la matriz original se inicializan como no asignados. v Los elementos redundantes a los que ya no se puede hacer referencia en la nueva matriz se pierden, y el espacio de memoria se devuelve al sistema operativo. Si no hay suficiente memoria para la matriz, la sentencia Dimension falla y la siguiente funcin InMat devuelve 1. Para asignar valores a los elementos de la matriz, utilice la sentencia Mat y las sentencias de asignacin.
Ejemplo
Este ejemplo muestra cmo puede dimensionarse una matriz dinmicamente en el tiempo de ejecucin basndose en los valores de los argumentos entrantes:
Subroutine MyRoutine(InputArg, ErrorCode) ErrorCode = 0 * InputArg son 2 campos separados por comas, que se corresponden con las dimensiones Rows = Field(InputArg, ",", 1) Cols = Field(InputArg ",", 2) Dimension MyMatrix(Rows, Cols) If InMat = 1 Then * No se ha podido obtener el espacio para la matriz; sale con estado de error. Call DSLogWarn("Could not dimension matrix","MyRoutine") ErrorCode = -1 Else * Contine. ... End
Funcin Div
Divide un nmero por otro.
Captulo 7. Programacin BASIC
189
Sintaxis
Div (dividendo, divisor)
dividendo es el nmero que se va a dividir. Si dividendo es un valor nulo, se devuelve el valor nulo. divisor es el nmero por el que se divide. divisor no puede ser 0. Si divisor es un valor nulo, se devuelve el valor nulo.
Comentarios
Utilice la funcin Mod para determinar el resto.
Ejemplos
Los siguientes ejemplos muestran el uso de la funcin Div:
Quotient = Div(100, 25) ;* el resultado es 4 Quotient = Div(100, 30)
;* el resultado es 3
Funcin DownCase
Convierte las letras maysculas de una serie a minsculas. Si el soporte multilingstico est habilitado, el resultado de esta funcin depende del valor de entorno local actual del convenio Ctype.
Sintaxis
DownCase (serie)
serie es la serie o expresin que desea cambiar a minsculas. Si serie es un valor nulo, se devuelve el valor nulo.
Ejemplo
Este es un ejemplo de la funcin DownCase:
MixedCase = "ABC123abc" LowerCase = DownCase(MyString) ;* el resultado es "abc123abc"
Funcin DQuote
Delimita una serie mediante comillas dobles.
Sintaxis
DQuote (serie)
serie es la serie que se escribir entre comillas. Si serie es un valor nulo, se devuelve el valor nulo.
Comentarios
Para especificar una serie entre comillas simples, utilice la funcin SQuote.
190
Ejemplo
Este es un ejemplo de la funcin DQuote que aade comillas dobles (") al principio y al final de una serie:
ProductNo = 12345 QuotedStr = DQuote(ProductNo : "A") * el resultado es "12345A"
DSAttachJob
Se conecta a un trabajo a fin de ejecutarlo en una secuencia de control de trabajos. Se devuelve un descriptor de contexto que se utiliza para direccionar el trabajo. Slo puede haber un descriptor de contexto abierto para un trabajo determinado en cualquier momento dado.
Sintaxis
DescriptorContextoTrabajo = DSAttachJob (NombreTrabajo, ModalidadError)
DescriptorContextoTrabajo es el nombre de una variable para mantener el valor de retorno que utiliza posteriormente cualquier otra funcin o rutina al hacer referencia al trabajo. No presuponga que este valor es un entero. NombreTrabajo es una serie que proporciona el nombre del trabajo al que se conectar. ModalidadError es un valor que especifica cmo otras rutinas que utilizan el descriptor de contexto deben notificar errores. Es una de las siguientes: v DSJ.ERRFATAL Registra un mensaje muy grave y termina anormalmente el trabajo de control (valor predeterminado). v DSJ.ERRWARNING Registra un mensaje de aviso pero contina. v DSJ.ERRNONE No registra ningn mensaje - el emisor de la llamada tiene toda la responsabilidad (sin embargo, se registrar anomala del propio DSAttachJob).
Comentarios
Un trabajo no se puede conectar a s mismo. El parmetro NombreTrabajo puede especificar una versin exacta del trabajo en forma de trabajo%Reln.n.n o la versin ms reciente del trabajo con el formato trabajo. Si se libera el propio trabajo de control, obtendr la versin liberada ms reciente del trabajo. Si el trabajo de control es una versin de desarrollo, obtendr la versin de desarrollo ms reciente de trabajo.
Ejemplo
A continuacin se muestra un ejemplo de conexin al Release 11 del trabajo Qsales:
Qsales_handle = DSAttachJob ("Qsales%Rel1", DSJ.ERRWARN)
DSCheckRoutine
Comprueba si est catalogada una rutina de BASIC, en el VOC como elemento invocable o en el espacio de catlogo.
191
Sintaxis
Encontrado = DSCheckRoutine(NombreRutina)
NombreRutina es el nombre de la rutina de BASIC que se comprobar. Encontrado es un booleano. @False if NombreRutina not findable, else @True.
Ejemplo
rtn$ok = DSCheckRoutine("DSU.DSSendMail") If(NOT(rtn$ok)) Then * aqu manejo de errores End.
DSDetachJob
Devuelve un DescriptorContextoTrabajo adquirido por DSAttachJob si no es necesario ningn control adicional de un trabajo (permitiendo que otro trabajo se convierta en su controlador). No es necesario llamar a esta funcin; de lo contrario, los trabajos conectados se desconectarn automticamente cuando finalice el trabajo de control.
Sintaxis
CdigoError = DSDetachJob (DescriptorContextoTrabajo)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. CdigoError es 0 si DSStopJob es satisfactorio; de lo contrario puede ser uno de los siguientes: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido. El nico error posible es un intento de cerrar DSJ.ME. De lo contrario, la llamada siempre es satisfactoria.
Ejemplo
El mandato siguiente desconecta el descriptor de contexto del trabajo qsales:
Deterr = DSDetachJob (qsales_handle)
DSExecute
Ejecuta un mandato del motor, de DOS o de UNIX desde una subrutina anterior/posterior.
Sintaxis
Call DSExecute (TipoShell, Mandato, Salida, CdigoRetornoSistema)
TipoShell (entrada) especifica el tipo de mandato que desea ejecutar y es NT, UNIX o UV (para motor). Mandato (entrada) es el mandato que se ejecutar. Mandato no debe solicitar entrada cuando se ejecute. Salida (salida) es cualquier salida del mandato. Cada lnea de salida aparece separada por una marca de campo, @FM. La salida se aade al archivo de registro de trabajo como un mensaje informativo. CdigoRetornoSistema (salida) es el cdigo que indica el resultado satisfactorio del mandato. Un valor de 0 significa que el mandato se ha ejecutado satisfactoriamente. Un valor de 1 (para un mandato de DOS o UNIX) indica que el mandato no se ha encontrado. Cualquier otro valor es un cdigo de salida especfico del mandato.
192
Comentarios
No utilice DSExecute desde una transformacin; la sobrecarga de ejecutar un mandato para cada fila procesada por una etapa degradar el rendimiento del trabajo.
DSGetCustInfo
Obtiene informacin notificada al final de la ejecucin de determinadas etapas paralelas. La informacin recopilada, y disponible para su interrogacin, se especifica durante el tiempo de diseo. Por ejemplo, la informacin de la etapa Transformer se especifica en el separador Desencadenantes del recuadro de dilogo Propiedades de la etapa Transformer.
Sintaxis
Resultado = DSGetCustInfo (DescriptorContextoTrabajo, NombreEtapa, NombreInfoPers, TipoInfo)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.ME para hacer referencia al trabajo actual. NombreEtapa es el nombre de la etapa que se interrogar. Tambin puede ser DSJ.ME para hacer referencia a la etapa actual, si es necesario. NombreInfoPers es el nombre de la variable que se interrogar. TipoInfo especifica la informacin necesaria y puede ser una de las opciones siguientes: DSJ.CUSTINFOVALUE DSJ.CUSTINFODESC Resultado depende del TipoInfo especificado, de la forma siguiente: v DSJ.CUSTINFOVALUE Serie: valor del elemento de informacin de personalizacin especificado. v DSJ.CUSTINFODESC Serie: descripcin del elemento de informacin de personalizacin especificado. Resultado puede devolver tambin una condicin de error de la forma siguiente: v DSJE.BADHANDLE DescriptorContextoTrabajo no era vlido. v DSJE.BADTYPE TipoInfo no se ha reconocido. v DSJE.NOTINSTAGE NombreEtapa era DSJ.ME y el emisor de la llamada no se est ejecutando dentro de una etapa. v DSJE.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo. v DSJE.BADCUSTINFO NombreInfoPers no hace referencia a un elemento de informacin de personalizacin conocido.
DSGetJobInfo
Proporciona un mtodo de obtencin de informacin sobre un trabajo, que se puede utilizar de forma general as como para control de trabajos. Puede hacer referencia al trabajo actual o a un trabajo controlado, dependiendo del valor de DescriptorContextoTrabajo.
Sintaxis
Resultado = DSGetJobInfo (DescriptorContextoTrabajo, TipoInfo)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.ME para hacer referencia al trabajo actual.
Captulo 7. Programacin BASIC
193
TipoInfo especifica la informacin necesaria y puede ser una de las opciones siguientes: DSJ.JOBSTATUS DSJ.JOBNAME DSJ.JOBCONTROLLER DSJ.JOBSTARTTIMESTAMP DSJ.JOBWAVENO DSJ.PARAMLIST DSJ.STAGELIST DSJ.USERSTATUS DSJ.JOBCONTROL DSJ.JOBPID DSJ.JPBLASTTIMESTAMP DSJ.JOBINVOCATIONS DSJ.JOBINTERIMSTATUS DSJ.JOBINVOCATIONID DSJ.JOBDESC DSJ.JOBFULLDESC DSJ.STAGELIST2 DSJ.JOBELAPSED DSJ.JOBEOTCOUNT DSJ.JOBEOTTIMESTAMP DSJ.JOBRTISERVICE DSJ.JOBMULTIINVOKABLE DSJ.JOBFULLSTAGELIST Resultado depende del TipoInfo especificado, de la forma siguiente: v DSJ.JOBSTATUS Entero. Estado actual de trabajo global. Los estados posibles que se pueden devolver se dividen actualmente en dos categoras: En primer lugar, un trabajo en curso se identifica mediante: DSJS.RESET El trabajo ha finalizado una ejecucin de restablecimiento. DSJS.RUNFAILED El trabajo ha finalizado una ejecucin normal con un error muy grave.
194
DSJS.RUNNING Ejecucin de trabajo - es el nico estado que indica que el trabajo est realmente en ejecucin. En segundo lugar, es posible que los trabajos que no estn en ejecucin tengan los estados siguientes: DSJS.RUNOK El trabajo ha finalizado una ejecucin normal sin avisos. DSJS.RUNWARN El trabajo ha finalizado una ejecucin normal con avisos. DSJS.STOPPED El trabajo ha sido detenido por la intervencin del operador (no se puede determinar el tipo de ejecucin). DSJS.VALFAILED El trabajo no ha podido realizar una ejecucin de validacin. DSJS.VALOK - El trabajo ha finalizado una ejecucin de validacin sin avisos. DSJS.VALWARN El trabajo ha finalizado una ejecucin de validacin con avisos. v DSJ.JOBNAME Serie. Nombre real del trabajo al que hace referencia el descriptor de contexto del trabajo. v DSJ.JOBCONTROLLER Serie. Nombre del trabajo que controla el trabajo al que hace referencia el descriptor de contexto del trabajo. Tenga en cuenta que puede tratarse de varios nombres de trabajo separados por puntos si el trabajo est controlado por un trabajo que est a su vez controlado. v DSJ.JOBSTARTTIMESTAMP Serie. Fecha y hora cuando se inici el trabajo en el motor con el formato AAAA-MM-DD hh:nn:ss. v v v v DSJ.JOBWAVENO Entero. Nmero de ondas de ejecucin ltima o actual. DSJ.PARAMLIST. Devuelve una lista de nombres de parmetros separados por coma. DSJ.STAGELIST. Devuelve una lista de nombres de etapas activas separados por coma. DSJ.USERSTATUS Serie. Lo que ha registrado la ltima llamada del trabajo de DSSetUserStatus, de lo contrario una serie vaca.
v DSJ.JOBCONTROL Entero. Estado de control del trabajo actual, es decir, si se ha emitido una solicitud de detencin para el trabajo. v DSJ. JOBPID Entero. ID de proceso de trabajo. v DSJ.JOBLASTTIMESTAMP Serie. Fecha y hora cuando el trabajo finaliz por ltima vez una ejecucin en el motor con el formato AAAA-MM-DD HH:NN:SS. v DSJ.JOBINVOCATIONS. Devuelve una lista de ID de invocacin separados por coma. v DSJ.JOBINTERIMSTATUS. Devuelve el estado de un trabajo despus de que haya ejecutado todas las etapas y trabajos controlados, pero antes de haber intentado ejecutar una subrutina posterior al trabajo. (Est diseado para ser utilizado por una subrutina posterior al trabajo para obtener el estado del trabajo actual). v DSJ.JOBINVOCATIONID. Devuelve el ID de invocacin del trabajo especificado (utilizado en la macro DSJobInvocationId en un diseo de trabajo para acceder al ID de invocacin mediante el cual se invoca el trabajo). v DSJ.STAGELIST2. Devuelve una lista de nombres de etapas pasivas separadas por coma. v DSJ.JOBELAPSED Serie. El tiempo transcurrido del trabajo en segundos. v DSJ.JOBDESC Serie. La descripcin del trabajo especificada en el recuadro de dilogo Propiedades del trabajo. v DSJ.JOBFULLDESSC Serie. La descripcin completa especificada en el recuadro de dilogo Propiedades del trabajo. v DSJ.JOBRTISERVICE entero. Se establece en true (verdadero) si se trata de un trabajo de servicio web. v DSJ.JOBMULTIINVOKABLE entero. Se establece en true (verdadero) si este trabajo da soporte a varias invocaciones v DSJ.JOBEOTCOUNT entero. Recuento de bloques EndOfTransmission procesados por este trabajo hasta ahora. v DSJ.JOBEOTTIMESTAMP indicacin_fecha_y_hora. Fecha/Hora del ltimo bloque EndOfTransmission procesado por este trabajo. v DSJ.FULLSTAGELIST. Devuelve una lista de todos los nombres de etapas separados por coma.
Captulo 7. Programacin BASIC
195
Resultado tambin puede devolver condiciones de error de la forma siguiente: DSJE.BADHANDLE DescriptorContextoTrabajo no era vlido. DSJE.BADTYPE TipoInfo no se ha reconocido.
Comentarios
Cuando se hace referencia a un trabajo controlado, se puede utilizar DSGetJobInfo antes o despus de haber emitido un DSRunJob. Cualquier estado devuelto despus de una llamada satisfactoria a DSRunJob es una garanta de que est relacionado con esa ejecucin del trabajo.
Ejemplos
El mandato siguiente solicita el estado de trabajo del trabajo qsales:
q_status = DSGetJobInfo(qsales_handle, DSJ.JOBSTATUS)
DSGetJobMetaBag
Devuelve una matriz dinmica que contiene las propiedades de MetaBag asociadas con el trabajo nombrado.
Sintaxis
Resultado = DSGetJobMetaBag(NombreTrabajo, Propietario) o Call DSGetJobMetaBag(Resultado, NombreTrabajo, Propietario)
NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la informacin. Si NombreTrabajo no existe en el proyecto actual, Resultado se establecer en una serie vaca. Propietario es un nombre de propietario cuyas propiedades de metabag se devolvern. Si Propietario no es un propietario vlido dentro del trabajo actual, Resultado se establecer en una serie vaca. Si Propietario es una serie vaca, se devolver una serie delimitada por marcas de campo de propietarios de propiedades de metabag dentro del trabajo actual en Resultado. Resultado devuelve una matriz dinmica de conjuntos de propiedades de metabag, de la forma siguiente: RESULTADO<1> = NombreMetaPropiedad01 @VM ValorMetaPropiedad01 RESULTADO<..> = NombreMetaPropiedad.. @VM ValorMetaPropiedad.. RESULTADO<N>= NombreMetaPropiedadN @VM ValorMetaPropiedadN
Ejemplo
Lo siguiente devuelve las propiedades de metabag para el propietario propietariomb en el trabajo "trabajoprueba":
linksmdata = DSGetJobMetaBag (trabajoprueba, propietariomb)
196
DSGetLinkInfo
Proporciona un mtodo de obtencin de informacin sobre un enlace en una etapa activa, que se puede utilizar de forma general as como para control de trabajos. Esta rutina puede hacer referencia a un trabajo controlado o a un trabajo actual, en funcin del valor de DescriptorContextoTrabajo.
Sintaxis
Resultado = DSGetLinkInfo (DescriptorContextoTrabajo, NombreEtapa, NombreEnlace, TipoInfo)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.ME para hacer referencia al trabajo actual. NombreEtapa es el nombre de la etapa activa que se interrogar. Tambin puede ser DSJ.ME para hacer referencia a la etapa actual, si es necesario. NombreEnlace es el nombre de un enlace (entrada o salida) conectado a la etapa. Tambin puede ser DSJ.ME para hacer referencia al enlace actual (por ejemplo, cuando se utiliza en una expresin de Transformer o funcin de transformacin denominada desde cdigo de enlace). TipoInfo especifica la informacin necesaria y puede ser una de las opciones siguientes: DSJ.LINKLASTERR DSJ.LINKNAME DSJ.LINKROWCOUNT DSJ.LINKSQLSTATE DSJ.LINKDBMSCODE DSJ.LINKDESC DSJ.LINKSTAGE DSJ.INSTROWCOUNT DSJ.LINKEOTROWCOUNT Resultado depende del TipoInfo especificado, de la forma siguiente: v DSJ.LINKLASTERR Serie: ltimo mensaje de error (si hay alguno) notificado desde el enlace en cuestin. v DSJ.LINKNAME Serie: devuelve el nombre del enlace, resulta especialmente til cuando se utiliza con DescriptorContextoTrabajo = DSJ.ME y NombreEtapa = DSJ.ME y NombreEnlace = DSJ.ME para descubrir su propio nombre. v DSJ.LINKROWCOUNT Entero: nmero de filas que han pasado un enlace hasta ahora. v DSJ.LINKSQLSTATE: el estado de SQL para el ltimo error que se produce en este enlace. v DSJ.LINKDBMSCODE: el cdigo de DBMS para el ltimo error que se produce en este enlace. v DSJ.LINKDESC: descripcin del enlace. v DSJ.LINKSTAGE: nombre de la etapa en el otro extremo del enlace. v DSJ.INSTROWCOUNT: lista de recuentos de fila, separados por coma, uno por instancia (trabajos paralelos) v DSJ.LINKEOTROWCOUNT: recuento de filas desde el ltimo bloque EndOfTransmission.
Captulo 7. Programacin BASIC
197
Resultado tambin puede devolver condiciones de error de la forma siguiente: v DSJE.BADHANDLE DescriptorContextoTrabajo no era vlido. v DSJE.BADTYPE TipoInfo no se ha reconocido. v DSJE.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo. v DSJE.NOTINSTAGE NombreEtapa era DSJ.ME y el emisor de la llamada no se est ejecutando dentro de una etapa. v DSJE.BADLINK NombreEnlace no hace referencia a un enlace conocido para la etapa en cuestin.
Comentarios
Cuando se hace referencia a un trabajo controlado, se puede utilizar DSGetLinkInfo antes o despus de haber emitido un DSRunJob. Cualquier estado devuelto despus de una llamada satisfactoria a DSRunJob es una garanta de que est relacionado con esa ejecucin del trabajo.
Ejemplo
El mandato siguiente solicita el nmero de filas que se han pasado al enlace order_feed en la etapa de cargador del trabajo qsales:
link_status = DSGetLinkInfo(qsales_handle, "cargador", "order_feed", DSJ.LINKROWCOUNT)
DSGetLinkMetaData
Devuelve una matriz dinmica que contiene los metadatos de columna del enlace especificado.
Sintaxis
Resultado = DSGetLinkMetaData(Nombretrabajo, NombreEtapa, NombreEnlace) o Call DSGetLinkMetaData(Resultado, NombreTrabajo, NombreEtapa, NombreEnlace)
NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la informacin. Si NombreTrabajo no existe en el proyecto actual, la funcin devolver una serie vaca. NombreEtapa es el nombre de la etapa en el trabajo especificado que contiene el enlace para el cual es necesaria la informacin. Si NombreEtapa no existe en el trabajo especificado, la funcin devolver una serie vaca. NombreEnlace es el nombre del enlace en el trabajo especificado para el cual es necesaria la informacin. Si NombreEnlace no existe en el trabajo especificado, la funcin devolver una serie vaca. Resultado devuelve una matriz dinmica de nueve campos, donde cada uno de ellos contendr N valores donde N es el nmero de columnas en el enlace. Resultado<1,1...N> es el nombre de columna Resultado<2,1...N> es 1 para columnas de clave primaria; de lo contrario, es 0 Resultado<3,1...N> es el tipo de SQL de columna. Consulte ODBC.H. Resultado<4,1...N> es la precisin de columna Resultado<5,1...N> es la escala de columna Resultado<6,1...N> es la anchura de visualizacin de columna
198
Resultado<7,1...N> es 1 para columnas con posibilidad de nulos; de lo contrario, es 0 Resultado<8,1...N> es la descripcin de columna Resultado<9,1...N> es la derivacin de columna
Ejemplo
Lo siguiente devuelve los metadatos del enlace enlacei1 en la etapa etapasec del trabajo trabajoprueba:
linksmdata = DSGetLinkMetaData (trabajoprueba, etapasec, enlacei1)
DSGetLogEntry
Lee todos los detalles del suceso proporcionados en IDsuceso.
Sintaxis
DetalleSuceso = DSGetLogEntry (DescriptorContextoTrabajo, IDsuceso)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. IDsuceso es un entero que identifica el suceso de registro especfico para el que son necesarios los detalles. Se obtiene utilizando la funcin DSGetNewestLogId. DetalleSuceso es una serie que contiene subseries separadas por \. Las subseries tienen la forma siguiente: Subserie1 Indicacin de fecha y hora en formato AAAA-MM-DD HH:NN:SS Subserie2 Informacin de usuario Subserie3 Tipo de suceso - consulte DSGetNewestLogId Subserie4 - n Mensaje de suceso Si se produce un error, el error se notifica mediante uno de los siguientes cdigos de resultado de entero negativo: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido. v DSJE.BADVALUE Error al acceder a IDsuceso.
Ejemplo
Los mandatos siguientes en primer lugar obtienen el IDsuceso para el suceso de registro necesario y a continuacin leen todos los detalles del suceso del suceso de registro identificado por LatestLogid en la serie LatestEventString:
latestlogid = DSGetNewestLogId(qsales_handle,DSJ.LOGANY) LatestEventString = DSGetLogEntry(qsales_handle,latestlogid)
DSGetLogEventIds
Devuelve una lista de ID de suceso de registro para una ejecucin determinada de una invocacin de trabajo.
199
Sintaxis
ListaID = DSGetLogEventIds (DescriptorContextoTrabajo, NmeroEjecucin, FiltroTipoSuceso)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. NmeroEjecucin identifica la ejecucin de invocacin de trabajo para la que se devuelven los ID de suceso. Normalmente un valor de cero solicita los ID para la ejecucin ms reciente de la invocacin de trabajo. Para recuperar detalles para ejecuciones anteriores, proporcione valores negativos, como por ejemplo -1 para obtener detalles sobre la ejecucin anterior a la ms reciente, -2 para obtener detalles sobre la ejecucin anterior a esa, y as sucesivamente. En los casos dnde conozca los nmeros explcitos de ejecucin, puede recuperar detalles proporcionando el nmero de ejecucin como un valor positivo. FiltroTipoSuceso restringe los tipos de entrada de registro de suceso para los que se devuelven los ID. De forma predeterminada se devuelven los ID para todas las entradas de registro. Incluya caracteres en la serie del filtro para restringir las entradas de la forma siguiente: I W F S B R J Informativo Aviso Muy grave Sucesos de inicio o finalizacin Sucesos de proceso por lotes o control Sucesos de depuracin o restablecimiento Sucesos de rechazo
ListaID se devuelve como una lista de enteros positivos que identifican los sucesos de registro necesarios. En caso de un error, ListaID tambin se puede devolver como un entero negativo, en cuyo caso contiene uno de estos cdigos de error: DSJE.BADHANDLE DescriptorContextoTrabajo no vlido. DSJE.BADTYPE FiltroTipoSuceso no vlido. DSJE.BADVALUE NmeroEjecucin no vlido.
Comentarios
Para utilizar este mtodo, es necesario que el programa haya adquirido anteriormente un descriptor de contexto de trabajo llamando a DSAttachJob. El nmero de ejecucin para una invocacin de trabajo se restablece cuando se compila el trabajo; por lo tanto, no es posible utilizar este mtodo para recuperar ID de suceso de trabajo para ejecuciones que se han producido antes de la compilacin ms reciente del trabajo.
DSGetLogSummary
Devuelve una lista de detalles cortos de suceso de registro. Los detalles que se devuelven se determinan mediante el establecimiento de algunos filtros. (Se debe tener cuidado al establecer los filtros; de lo contrario, se puede devolver una gran cantidad de informacin.)
200
Sintaxis
MatrizResumen = DSGetLogSummary (DescriptorContextoTrabajo, TipoSuceso, HoraInicio, HoraFinalizacin, NmeroMx)
DescriptorContextotrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. TipoSuceso es el tipo de suceso registrado y es uno de los siguientes: v v v v v v v DSJ.LOGINFO Mensaje de informacin DSJ.LOGWARNING Mensaje de aviso DSJ.LOGFATAL Error muy grave DSJ.LOGREJECT El enlace de rechazo estaba activo DSJ.LOGSTARTED Se ha iniciado el trabajo DSJ.LOGRESET Se ha restablecido el registro DSJ.LOGANY Cualquier categora (el valor predeterminado)
HoraInicio es una serie con el formato AAAA-MM-DD HH:NN:SS o AAAA-MM-DD. HoraFinalizacin es una serie con el formato AAAA-MM-DD HH:NN:SS o AAAA-MM-DD. NmeroMx es un entero que restringe el nmero de sucesos a devolver. 0 significa ninguna restriccin. Utilice este valor con precaucin. MatrizResumen es una matriz dinmica de campos separados por @FM. Cada campo consta de un conjunto de subseries separadas por \, donde cada campo representa un suceso separado, con las subseries con el formato siguiente: Subserie1 IDsuceso como por DSGetLogEntry Subserie2 Indicacin de fecha y hora con el formato AAAA-MM-DD HH:NN:SS Subserie3 TipoSuceso - consulte DSGetNewestLogId Subserie4 - n Mensaje de suceso Si se produce un error, el error se notifica mediante uno de los siguientes cdigos de resultado de entero negativo: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido. v DSJE.BADTYPE TipoSuceso no vlido. v DSJE.BADTIME HoraInicio u HoraFinalizacin no vlido. v DSJE.BADVALUE NmeroMx no vlido.
Ejemplo
El mandato siguiente produce una matriz de sucesos activos de enlace de rechazo registrados para el trabajo qsales entre el 18 de agosto de 1998 y el 18 de septiembre de 1998, hasta un mximo de MAXREJ entradas:
RejEntries = DSGetLogSummary (qsales_handle, DSJ.LOGREJECT, "1998-08-18 00:00:00", "1998-09-18 00:00:00", MAXREJ)
DSGetNewestLogId
Obtiene el ID del suceso de registro ms reciente en una categora determinada o en cualquier categora.
Captulo 7. Programacin BASIC
201
Sintaxis
IDsuceso = DSGetNewestLogId (DescriptorContextoTrabajo, TipoSuceso)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. TipoSuceso es el tipo de suceso registrado y es uno de los siguientes: v v v v v v v DSJ.LOGINFO Mensaje de informacin DSJ.LOGWARNING Mensaje de aviso DSJ.LOGFATAL Error muy grave DSJ.LOGREJECT El enlace de rechazo estaba activo DSJ.LOGSTARTED Se ha iniciado el trabajo DSJ.LOGRESET Se ha restablecido el registro DSJ.LOGANY Cualquier categora (el valor predeterminado)
IDsuceso es un entero positivo que identifica el suceso de registro especfico. En caso de un error, IDsuceso tambin se puede devolver como un entero negativo, en cuyo caso contiene un cdigo de error como el siguiente: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido. v DSJE.BADTYPE TipoSuceso no vlido.
Ejemplo
El mandato siguiente obtiene un ID para el mensaje de aviso ms reciente en el registro para el trabajo qsales:
IDAviso = DSGetNewestLogId (qsales_handle, DSJ.LOGWARNING)
DSGetParamInfo
Proporciona un mtodo de obtener informacin sobre un parmetro, que se puede utilizar de forma general as como para control de trabajo. Esta rutina puede hacer referencia a un trabajo controlado o al trabajo actual, en funcin del valor de DescriptorContextoTrabajo.
Sintaxis
Resultado = DSGetParamInfo (DescriptorContextoTrabajo, NombreParm, TipoInfo)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.ME para hacer referencia al trabajo actual. NombreParm es el nombre del parmetro que se interrogar. TipoInfo especifica la informacin necesaria y puede ser uno de los valores siguientes: DSJ.PARAMDEFAULT DSJ.PARAMHELPTEXT DSJ.PARAMPROMPT DSJ.PARAMTYPE DSJ.PARAMVALUE
202
DSJ.PARAMDES.DEFAULT DSJ.PARAMLISTVALUES DSJ.PARAMDES.LISTVALUES DSJ.PARAMPROMPT.AT.RUN Resultado depende del TipoInfo especificado, de la forma siguiente: v DSJ.PARAMDEFAULT Serie: valor predeterminado actual para el parmetro en cuestin. Consulte tambin DSJ.PARAMDES.DEFAULT. v DSJ.PARAMHELPTEXT Serie: texto de ayuda (si existe) para el parmetro en cuestin. v DSJ.PARAMPROMPT Serie: solicitud (si existe) para el parmetro en cuestin. v DSJ.PARAMTYPE Entero: describe el tipo de prueba de validacin que se debe realizar en cualquier valor que se establezca para este parmetro. Es uno de los siguientes: DSJ.PARAMTYPE.STRING DSJ.PARAMTYPE.ENCRYPTED DSJ.PARAMTYPE.INTEGER DSJ.PARAMTYPE.FLOAT (el parmetro puede contener puntos y E) DSJ.PARAMTYPE.PATHNAME DSJ.PARAMTYPE.LIST (debe ser un conjunto de series separadas por tabulador) DSJ.PARAMTYPE.DATE (debe ser una serie con el formato AAAA-MM-DD) DSJ.PARAMTYPE.TIME (debe ser una serie con el formato HH:MM) v DSJ.PARAMVALUE Serie: valor actual del parmetro para el trabajo en ejecucin o la ltima ejecucin de trabajo si el trabajo ha finalizado. v DSJ.PARAMDES.DEFAULT Serie: valor predeterminado original del parmetro - puede ser distinto de DSJ.PARAMDEFAULT si este ltimo ha sido cambiado por un administrador desde que se instal el trabajo. v DSJ.PARAMLISTVALUES Serie: lista separada por tabuladores de valores permitidos para el parmetro. Consulte tambin DSJ.PARAMDES.LISTVALUES. v DSJ.PARAMDES.LISTVALUES Serie: lista original separada por tabuladores de valores permitidos para el parmetro - puede ser diferente de DSJ.PARAMLISTVALUES si este ltimo ha sido cambiado por el administrador desde que se instal el trabajo. v DSJ.PROMPT.AT.RUN Serie: 1 significa que se solicitar el parmetro cuando se ejecute el trabajo; cualquier otro valor significa que no se solicitar (DSJ.PARAMDEFAULT Serie que se utilizar directamente). Resultado tambin puede devolver condiciones de error de la forma siguiente: v DSJE.BADHANDLE DescriptorContextoTrabajo no era vlido. v DSJE.BADPARAM NombreParm no es un nombre de parmetro en el trabajo. v DSJE.BADTYPE TipoInfo no se ha reconocido.
Comentarios
Cuando se hace referencia a un trabajo controlado, DSGetParamInfo se puede utilizar antes o despus de haber emitido un DSRunJob. Cualquier estado devuelto despus de una llamada satisfactoria a DSRunJob es una garanta de que est relacionado con esa ejecucin del trabajo.
Ejemplo
El mandato siguiente solicita el valor predeterminado del parmetro de trimestre para el trabajo qsales:
Captulo 7. Programacin BASIC
203
DSGetProjectInfo
Proporciona un mtodo de obtencin de informacin sobre el proyecto actual.
Sintaxis
Resultado = DSGetProjectInfo (TipoInfo)
TipoInfo especifica la informacin necesaria y puede ser una de las opciones siguientes: DSJ.JOBLIST DSJ.PROJECTNAME DSJ.HOSTNAME Resultado depende del TipoInfo especificado, de la forma siguiente: v DSJ.JOBLIST Serie - lista de nombres separados por coma de todos los trabajos conocidos por el proyecto (tanto si los trabajos estn conectados actualmente como si no). v DSJ.PROJECTNAME Serie - nombre del proyecto actual. v DSJ.HOSTNAME Serie - nombre del host del motor que mantiene el proyecto actual. Resultado puede devolver tambin una condicin de error de la forma siguiente: v DSJE.BADTYPE TipoInfo no se ha reconocido.
DSGetStageInfo
Proporciona un mtodo de obtener informacin sobre una etapa, que se puede utilizar de forma general as como para control de trabajos. Puede hacer referencia al trabajo actual, o un trabajo controlado, en funcin del valor de DescriptorContextoTrabajo.
Sintaxis
Resultado = DSGetStageInfo (DescriptorContextoTrabajo, NombreEtapa, TipoInfo)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.ME para hacer referencia al trabajo actual. NombreEtapa es el nombre de la etapa que se interrogar. Tambin puede ser DSJ.ME para hacer referencia a la etapa actual, si es necesario. TipoInfo especifica la informacin necesaria y puede ser uno de los valores siguientes: DSJ.LINKLIST DSJ.STAGELASTERR DSJ.STAGENAME DSJ.STAGETYPE DSJ.STAGEINROWNUM
204
DSJ.VARLIST DSJ.STAGESTARTTIMESTAMP DSJ.STAGEENDTIMESTAMP DSJ.STAGEDESC DSJ.STAGEINST DSJ.STAGECPU DSJ.LINKTYPES DSJ.STAGEELAPSED DSJ.STAGEPID DSJ.STAGESTATUS DSJ.STAGEEOTCOUNT DSJ.STAGEEOTTIMESTAMP DSJ.CUSTINFOLIST DSJ.STAGEEOTSTART Resultado depende del TipoInfo especificado, de la forma siguiente: v DSJ.LINKLIST - lista separada por comas de nombres de enlace en la etapa. v DSJ.STAGELASTERR Serie - ltimo mensaje de error (si hay alguno) notificado desde cualquier enlace de la etapa en cuestin. v DSJ.STAGENAME Serie - resulta especialmente til cuando se utiliza con DescriptorContextoSerie = DSJ.ME y NobreEtapa = DSJ.ME para descubrir su propio nombre. v DSJ.STAGETYPE Serie - el nombre de tipo de etapa (por ejemplo, "Transformer", "BeforeJob"). v DSJ.STAGEINROWNUM Entero - el nmero de fila de entrada del enlace primario. v DSJ.VARLIST - lista separada por comas de nombres de variables de etapa. v DSJ.STAGESTARTTIMESTAMP - fecha/hora en la que esa etapa ha empezado su ejecucin con el formato AAAA-MM-DD HH:NN:SS. v DSJ.STAGEENDTIMESTAMP - fecha/hora en la que esa etapa ha finalizado su ejecucin con el formato AAA-MM-DD HH:NN:SS. v DSJ.STAGEDESC - descripcin de etapa. v DSJ.STAGEINST - lista separada por comas de ID de instancia (trabajos paralelos). DSJ.STAGECPU - porcentaje en entero de CPU utilizada. DSJ.LINKTYPES - lista separada por comas de tipos de enlace. DSJ.STAGEELAPSED - tiempo transcurrido en segundos. DSJ.STAGEPID - lista separada por comas de ID de proceso. DSJ.STAGESTATUS - estado de etapa. DSJ.STAGEEOTCOUNT - Recuento de bloques EndOfTransmission procesados por esta etapa hasta ahora. v DSJ.STAGEEOTTIMESTAMP - Fecha/hora del ltimo bloque EndOfTransmission recibido por esta etapa. v v v v v v
Captulo 7. Programacin BASIC
205
v DSJ.CUSTINFOLIST - informacin personalizada generada por etapas (trabajos paralelos). v DSJ.STAGEEOTSTART - recuento de filas al inicio del bloque EndOfTransmission actual. Resultado tambin puede devolver condiciones de error de la forma siguiente: v DSJE.BADHANDLE DescriptorContextoTrabajo no era vlido. v DSJE.BADTYPE TipoInfo no se ha reconocido. v DSJE.NOTINSTAGE NombreEtapa era DSJ.ME y el emisor de la llamada no se est ejecutando dentro de una etapa. v DSJE.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo.
Comentarios
Cuando se hace referencia a un trabajo controlado, se puede utilizar DSGetStageInfo antes o despus de emitir un DSRunJob. Cualquier estado devuelto despus de una llamada satisfactoria a DSRunJob es una garanta de que est relacionado con esa ejecucin del trabajo.
Ejemplo
El mandato siguiente solicita el ltimo mensaje de error para la etapa de cargador del trabajo qsales:
stage_status = DSGetStageInfo(qsales_handle, "cargador", DSJ.STAGELASTERR)
DSGetStageLinks
Devuelve una lista delimitada por marcas de campo que contiene los nombres de todos los enlaces de entrada/salida de la etapa especificada.
Sintaxis
Resultado = DSGetStageLinks(Nombretrabajo, NombreEtapa, Clave) o Call DSGetStageLinks(Resultado, NombreTrabajo, NombreEtapa, Clave)
NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la informacin. Si NombreTrabajo no existe en el proyecto actual, la funcin devolver una serie vaca. NombreEtapa es el nombre de la etapa en el trabajo especificado para la que es necesaria informacin. Si NombreEtapa no existe en el trabajo especificado, la funcin devolver una serie vaca. Clave dependiendo del valor de la clave, la lista devuelta contendr todos los enlaces de la etapa (Clave=0), slo los enlaces de entrada de la etapa (Clave=1) o slo los enlaces de salida de la etapa (Clave=2). Resultado devuelve una lista delimitada por marcas de campo que contiene los nombres de los enlaces.
Ejemplo
Lo siguiente devuelve una lista de todos los enlaces de entrada en la etapa denominada "unin1" en el trabajo "trabajoprueba":
linkslist = DSGetStageLinks (trabajoprueba, unin1, 1)
206
DSGetStagesOfType
Devuelve una lista delimitada por marcas de campo que contiene los nombres de todas las etapas del tipo especificado en el trabajo nombrado.
Sintaxis
Resultado = DSGetStagesOfType (NombreTrabajo, TipoEtapa) o Call DSGetStagesOfType (Resultado, NombreTrabajo, TipoEtapa)
NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la informacin. Si NombreTrabajo no existe en el proyecto actual, la funcin devolver una serie vaca. TipoEtapa es el nombre del tipo de etapa, como muestra el formulario de propiedades de tipo de etapa de repositorio, como por ejemplo CTransformerStage o ORAOCI8. Si el TipoEtapa no existe en el proyecto actual o no hay etapas de ese tipo en el trabajo especificado, la funcin devolver una serie vaca. Resultado devuelve una lista delimitada por marcas de campo que contiene los nombres de todas las etapas del tipo especificado en un trabajo nombrado.
Ejemplo
Lo siguiente devuelve una lista de todas las etapas Aggregator en el trabajo paralelo "trabajoprueba":
stagelist = DSGetStagesOfType (trabajoprueba, PxAggregator)
DSGetStagesTypes
Devuelve una serie delimitada por marcas de campo de todos los tipos de etapas activas y pasivas que existen dentro de un trabajo nombrado.
Sintaxis
Resultado = DSGetStageTypes(Nombretrabajo) o Call DSGetStageTypes(Resultado, Nombretrabajo)
NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la informacin. Si NombreTrabajo no existe en el proyecto actual, Resultado se establecer en una serie vaca. Resultado es una serie delimitada por marcas de campo de tipos de etapas dentro de NombreTrabajo.
Ejemplo
Lo siguiente devuelve una lista de todos los tipos de etapa en el trabajo "trabajoprueba":
stagetypelist = DSGetStagesOfType (trabajoprueba)
DSGetVarInfo
Proporciona un mtodo de obtencin de informacin sobre variables utilizado en las etapas Transformer.
Sintaxis
Resultado = DSGetVarInfo (DescriptorContextotrabajo, NombreEtapa, NombreVar, TipoInfo)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob o puede ser DSJ.ME para hacer referencia al trabajo actual.
Captulo 7. Programacin BASIC
207
NombreEtapa es el nombre de la etapa que se interrogar. Tambin puede ser DSJ.ME para hacer referencia a la etapa actual, si es necesario. NombreVar es el nombre de la variable que se interrogar. TipoInfo especifica la informacin necesaria y puede ser una de las opciones siguientes: DSJ.VARVALUE DSJ.VARDESCRIPTION Resultado depende del TipoInfo especificado, de la forma siguiente: v DSJ.VARVALUE Serie: el valor de la variable especificada. v DSJ.VARDESCRIPTION Serie: descripcin de la variable especificada. Resultado puede devolver tambin una condicin de error de la forma siguiente: v DSJE.BADHANDLE DescriptorContextoTrabajo no era vlido. v DSJE.BADTYPE TipoInfo no se ha reconocido. v DSJE.NOTINSTAGE NombreEtapa era DSJ.ME y el emisor de la llamada no se est ejecutando dentro de una etapa. v DSJE.BADVAR NombreVar no se ha reconocido. v DSJE.BADSTAGE NombreEtapa no hace referencia a una etapa conocida en el trabajo.
DSIPCPageProps
Devuelve el tamao (en KB) del almacenamiento intermedio de envo y recepcin de una etapa IPC (o servicio web).
Sintaxis
Resultado = DSGetIPCStageProps (NombreTrabajo, NombreEtapa) o Call DSGetIPCStageProps (Resultado, Nombretrabajo, NombreEtapa)
NombreTrabajo es el nombre del trabajo del proyecto actual para el que es necesaria la informacin. Si NombreTrabajo no existe en el proyecto actual, Resultado se establecer en una serie vaca. NombreEtapa es el nombre de una etapa IPC en el trabajo especificado para la que es necesaria informacin. Si NombreEtapa no existe o si no es una etapa IPC dentro de NombreTrabajo, el Resultado se establecer en una serie vaca. Resultado es una matriz que contiene los campos siguientes: v el tamao (en kilobytes) del almacenamiento intermedio de envo y recepcin de la etapa IPC (o servicio web) NombreEtapa dentro de NombreTrabajo. v el valor de tiempo de espera excedido en segundos de la etapa IPC (o servicio web) NombreEtapa dentro de NombreTrabajo.
Ejemplo
Lo siguiente devuelve el tamao y tiempo de espera excedido de la etapa "IPC1" en el trabajo "trabajoprueba":
buffersize = DSGetIPCStageProps (trabajoprueba, IPC1)
208
DSLogEvent
Registra un mensaje de suceso en un trabajo distinto del actual. (Utilice DSLogInfo, DSLogFatal o DSLogWarn para registrar un suceso en el trabajo actual.)
Sintaxis
CdigoError = DSLogEvent (DescriptorContextoTrabajo, TipoSuceso, MsjSuceso)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. TipoSuceso es el tipo de suceso registrado y es uno de los siguientes: v DSJ.LOGINFO Mensaje de informacin v DSJ.LOGWARNING Mensaje de aviso MsjSuceso es una serie que contiene el mensaje del suceso. CdigoError es 0 si no hay ningn error. De lo contrario, contiene uno de los errores siguientes: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido. v DSJE.BADTYPE TipoSuceso (especialmente, tenga en cuenta que no puede colocar un mensaje muy grave en el registro de otro trabajo).
Ejemplo
El mandato siguiente, cuando se incluye en el trabajo msales, aade el mensaje "ventas mensuales finalizadas" al registro para el trabajo qsales:
Logerror = DsLogEvent (qsales_handle, DSJ.LOGINFO, "ventas mensuales finalizadas")
DSLogFatal
Registra un mensaje de error muy grave en el archivo de registro de un trabajo y termina el trabajo.
Sintaxis
Call DSLogFatal (Mensaje, NombreProgLlamada)
Mensaje (entrada) es el mensaje de aviso que desea registrar. Mensaje recibe automticamente como prefijo el nombre de la etapa actual y la subrutina anterior/posterior de llamada. NombreProgLlamada (entrada) es el nombre de la subrutina anterior/posterior que llama a la subrutina DSLogFatal.
Comentarios
DSLogFatal graba un mensaje de error muy grave en el archivo de registro del trabajo y termina anormalmente el trabajo. DSLogFatal nunca vuelve a la subrutina anterior/posterior de llamada, de forma que se debe utilizar con precaucin. Si un trabajo se detiene con un error muy grave, se debe restablecer utilizando el cliente del Director antes de poder volver a ejecutarlo. En una subrutina anterior/posterior, es mejor registrar un mensaje de aviso (utilizando DSLogWarn) y salida con un cdigo de retorno distinto de cero, lo que permite que InfoSphere DataStage detenga el trabajo limpiamente. DSLogFatal no se debe utilizar en una transformacin. Se utiliza DSTransformError en su lugar.
Captulo 7. Programacin BASIC
209
Ejemplo
Call DSLogFatal("No se puede abrir el archivo", "MiRutina")
DSLogInfo
Registra un mensaje de informacin en el archivo de registro de un trabajo.
Sintaxis
Call DSLogInfo (Mensaje, NombreProgLlamada)
Mensaje (entrada) es el mensaje de informacin que desea registrar. Mensaje recibe automticamente como prefijo el nombre de la etapa actual y del programa de llamada. NombreProgLlamada (entrada) es el nombre de la transformacin o subrutina anterior/posterior que llama a la subrutina DSLogInfo.
Comentarios
DSLogInfo graba el texto del mensaje en el archivo de registro del trabajo como un mensaje de informacin y vuelve a la rutina de llamada o transformacin. Si se llama a DSLogInfo durante la fase de prueba para una rutina recientemente creada en el repositorio, los dos argumentos se visualizan en la ventana de resultados. Se puede grabar un nmero ilimitado de mensajes de informacin en el archivo de registro del trabajo. Sin embargo, si se producen muchos mensajes, es posible que el trabajo se ejecute lentamente y que el cliente del Director tarde algn tiempo en mostrar el archivo de registro del trabajo.
Ejemplo
Call DSLogInfo("Transformando: ":Arg1, "MiTransformacin")
DSLogToController
Esta rutina se puede utilizar para poner un mensaje informativo en el archivo de registro del trabajo que controla este trabajo, si hay alguno. Si no hay ninguno, la llamada simplemente se ignora.
Sintaxis
Call DSLogToController(SerieMsj)
Comentarios
Si el trabajo actual no est bajo control, se realiza una salida silenciosa.
Ejemplo
Call DSLogToController("Se registra en el padre")
DSLogWarn
Inicia un mensaje de aviso en el archivo de registro de un trabajo.
Sintaxis
Call DSLogWarn (Mensaje, NombreProgLlamada)
210
Mensaje (entrada) es el mensaje de aviso que desea registrar. Mensaje recibe automticamente como prefijo el nombre de la etapa actual y la subrutina anterior/posterior de llamada. NombreProgLlamada (entrada) es el nombre de la subrutina anterior/posterior que llama a la subrutina DSLogWarn.
Comentarios
DSLogWarn graba el mensaje en el archivo de registro del trabajo como aviso y devuelve la subrutina anterior/posterior de llamada. Si el trabajo tiene un lmite de aviso definido para el mismo, cuando el nmero de avisos alcanza ese lmite, la llamada no devuelve el valor de retorno y el trabajo termina anormalmente. DSLogWarn no se debe utilizar en una transformacin. Se utiliza DSTransformError en su lugar.
Ejemplo
If InputArg > 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 vlido.
Sintaxis
TextoInforme = DSMakeJobReport(DescriptorContextoTrabajo, NivelInforme, SeparadorLneas)
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 bsico. Serie de texto que contiene fecha de inicio/finalizacin, tiempo transcurrido y estado de trabajo. v 1 - detalle de etapa/enlace. Como el informe bsico, pero tambin contiene informacin 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 instruccin de proceso <?xml-stylesheet?>. Si es necesaria una hoja de estilo, especifique un NivelInforme de 2 y aada el nombre del URL de hoja de estilo necesario, es decir, 2;URLHojaEstilo. Esto inserta una instruccin de proceso en el XML generado con el formato:
<?xml-stylesheet type=text/xsl" href="URLHojaEstilo"?>
SeparadorLneas es la serie utilizada para separar lneas del informe. Los valores especiales reconocidos son: v "CRLF" => CHAR(13):CHAR(10) v "LF" => CHAR(10) v "CR" => CHAR(13) El valor predeterminado es CRLF si se trata de Windows, de lo contrario LF.
211
Comentarios
Si se proporciona un descriptor de contexto de trabajo incorrecto, o se encuentra cualquier otro error, la informacin se aade a TextoInforme.
Ejemplo
h$ = DSAttachJob("MiTrabajo", DSJ.ERRNONE) rpt$ = DSMakeJobReport(h$,0,"CRLF")
DSMakeMsg
Inserta argumentos en una plantilla de mensaje. Opcionalmente, buscar un ID de plantilla en el archivo de mensajes de InfoSphere DataStage y utilizar cualquier plantilla de mensaje devuelta en lugar de la proporcionada a la rutina.
Sintaxis
TextoCompleto = DSMakeMsg(Plantilla, ListaArg)
TextoCompleto es el mensaje con parmetros sustituidos Plantilla es la plantilla de mensaje, en la que %1, %2, etc. se sustituirn por valores en la posicin equivalente en ListaArg. Si la serie de plantilla empieza con un nmero seguido de "\", se asume que forma parte de un ID de mensaje que se buscar en el archivo de mensajes de InfoSphere DataStage. Nota: si una seal de argumento va seguida de "[E]", se asume que el valor de ese argumento es un cdigo de error de control de trabajo y se insertar una explicacin del mismo en lugar de "[E]". (Consulte la funcin DSTranslateCode.) ListaArg es la matriz dinmica, un campo por argumento que se sustituir.
Comentarios
Se llama a esta rutina desde el cdigo de control de trabajo creado por JobSequence Generator. Tambin realizar sustitucin de parmetros de trabajo local en el texto del mensaje. Es decir, si se llama desde dentro de un trabajo, busca subseries como por ejemplo "#xyz#" y las sustituye por el valor del parmetro de trabajo denominado "xyz".
Ejemplo
t$ = DSMakeMsg("Error al llamar a DSAttachJob(%1)<L>%2", jb$:@FM:DSGetLastErrorMsg())
DSPrepareJob
Se utiliza para asegurar que un trabajo compilado est en el estado correcto para ser ejecutado o validado.
Sintaxis
DescriptorContextoTrabajo = DSPrepareJob(DescriptorContextoTrabajo)
DescriptorContextoTrabajo es el descriptor de contexto, tal como lo devuelve DSAttachJob(), del trabajo que se preparar.
212
DescriptorContextoTrabajo es el descriptor de contexto original o uno nuevo. Si se devuelve como 0, se produce un error y se registra un mensaje.
Ejemplo
h$ = DSPrepareJob(h$)
DSRunJob
Inicia la ejecucin de un trabajo. Tenga en cuenta que esta llamada es asncrona; la solicitud se pasa al motor de tiempo de ejecucin, pero no se informa de su progreso.
Sintaxis
CdigoError = DSRunJob (DescriptorContextoTrabajo, ModalidadEjecucin)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. RunMode es el nombre de la modalidad en la que se ejecutar el trabajo y es una de las siguientes: v DSJ.RUNNORMAL (Valor predeterminado) Ejecucin de trabajo estndar. v DSJ.RUNRESET El trabajo se restablecer. v DSJ.RUNVALIDATE El trabajo slo se validar. v DSJ.RUNRESTART La secuencia de trabajos reiniciable debe reiniciarse con los valores de parmetros del trabajo original. CdigoError es 0 si DSRunJob es satisfactorio; de lo contrario puede ser uno de los enteros negativos siguientes: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido. v DSJE.BADSTATE El trabajo no est en el estado correcto (compilado, no en ejecucin). v DSJE.BADTYPE ModalidadEjecucin no es una modalidad conocida.
Comentarios
Si el trabajo de control se ejecuta en modalidad de validacin, cualquier llamada de DSRunJob actuar como si ModalidadEjecucin fuera DSJ.RUNVALIDATE, independientemente del valor real. Un trabajo en modalidad de validacin ejecutar su rutina JobControl (si existe) en lugar de comprobar solamente su existencia, como es el caso para las rutinas anteriores/posteriores. Esto permite examinar el registro de qu trabajo ha iniciado en modalidad de validacin. Despus de llamar a DSRunJob, el descriptor de contexto del trabajo controlado se descarga. Si es necesario ejecutar el mismo trabajo de nuevo, debe utilizar DSDetachJob y DSAttachJob para establecer un nuevo descriptor de contexto. Tenga en cuenta que tambin necesitar utilizar DSWaitForJob, ya que no puede se conectar a un trabajo mientras est en ejecucin.
Ejemplo
El mandato siguiente inicia el trabajo qsales en modalidad estndar:
RunErr = DSRunJob(qsales_handle, DSJ.RUNNORMAL)
213
DSSendMail
Esta rutina es una interfaz a un programa sendmail que se asume que existe en algn lugar de la va de bsqueda del usuario actual (en el host de la capa de motor). Oculta las distintas interfaces de llamada a diversos programas sendmail y proporciona una sencilla interfaz para enviar texto. Por ejemplo:
Sintaxis
Respuesta = DSSendMail(Parmetros)
Parmetros es un conjunto de parmetros nombre:valor, separados por un carcter de marcador o "\n". Los nombres que se reconocen actualmente (sin distinguir entre maysculas y minsculas) son los siguientes: v "De" Direccin de correo del remitente, por ejemplo, Aqui@Enalgnlugar.com Slo se puede dejar en blanco si el archivo de plantilla local no contiene una seal "%from%". v "Para" Direccin de correo del destinatario, por ejemplo, Tu@Enalgnlugar.com Slo se puede dejar en blanco si el archivo de plantilla local no contiene una seal "%to%". v "Asunto" Algo que poner en la lnea del asunto del mensaje. Hace referencia a la seal "%subject%". Si se deja como "", se crear una lnea de asunto estndar, junto con las lneas de "From InfoSphere DataStage job: jobname" v "Servidor" Nombre de host a travs del cual se enviar el correo. Se puede omitir en sistemas (por ejemplo, Unix) donde el nombre de host SMTP se puede configurar, y se configura, externamente, en cuyo caso el archivo de plantilla local presumiblemente no contendr una seal "%server%". v "Cuerpo" Cuerpo del mensaje. Se puede omitir. Se enviar un mensaje vaco. Si se utiliza, debe ser el ltimo parmetro, para permitir la obtencin de varias lneas en el mensaje, utilizando "\n" para saltos de lnea. Hace referencia a la seal "%body%". Nota: Es posible que el texto del cuerpo contenga las seales "%report% o %fullreport% en cualquier lugar dentro del mismo, lo que har que se inserte en ese punto un informe en el estado de trabajo actual. Un informe completo contiene informacin de etapa y enlace as como estado de trabajo. Respuesta. Las respuestas posibles son: v DSJE.NOERROR (0) OK v DSJE.NOPARAM Falta nombre de parmetro - el campo no tiene el aspecto 'nombre:valor' v DSJE.NOTEMPLATE No se puede encontrar archivo de plantilla v DSJE.BADTEMPLATE Error en archivo de plantilla
Comentarios
La rutina busca un archivo local en el directorio actual de proyectos, con un nombre conocido. Es decir, una plantilla para describir exactamente cmo ejecutar el mandato sendmail local.
Ejemplo
code = DSSendMail("De:yo@aqu\nPara:Tu@all\nAsunto:Hola\nCuerpo:Lnea1\nLnea2")
DSSetDisableJobHandler
Habilitar o inhabilitar la gestin de mensajes a nivel de trabajo.
214
Sintaxis
CdigoError = DSSetDisableJobHandler (DescriptorContextoTrabajo, valor)
DescriptorContextotrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. valor es TRUE para inhabilitar la gestin de mensajes a nivel de trabajo o FALSE para habilitarla. CdigoError es 0 si DSSetDisableJobHandler es satisfactorio; de lo contrario, es uno de los siguientes valores negativos: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido v DSJE.BADVALUE valor no es adecuado para este tipo de parmetro.
Ejemplo
El mandato siguiente inhabilita la gestin de mensajes a nivel de trabajo para el trabajo qsales:
GenErr = DSSetDisableJobHandler (qsales_handle, TRUE)
DSSetDisableProjectHandler
Habilitar o inhabilitar la gestin de mensajes a nivel de proyecto.
Sintaxis
CdigoError = DSSetDisableProjectHandler (DescriptorContextoProyecto, valor)
DescriptorContextoProyecto es el valor devuelto de DSOpenProject. valor es TRUE para habilitar la gestin de mensajes a nivel de proyecto o FALSE para habilitar la gestin de mensajes a nivel de proyecto. CdigoError es 0 si DSSetDisableProjectHandler es satisfactorio; de lo contrario, puede ser uno de los siguientes enteros negativos: v DSJE.BADHANDLE Invalid DescriptorContextoProyecto. v DSJE.BADVALUE valor no es adecuado para este tipo de parmetro.
Ejemplo
El mandato siguiente inhabilita la gestin de mensajes a nivel de proyecto para el trabajo qsales:
GenErr = DSSetDisableProjectHandler (qsales_handle, TRUE)
DSSetGenerateOpMetaData
Se utiliza para especificar si el trabajo genera metadatos operativos. Altera temporalmente el valor predeterminado para el proyecto.
Sintaxis
CdigoError = DSSetGenerateOpMetaData (DescriptorContextoTrabajo, valor)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. valor es TRUE para generar metadatos operativos, FALSE para no generar metadatos operativos. CdigoError es 0 si DSRunJob es satisfactorio; de lo contrario puede ser uno de los enteros negativos siguientes:
Captulo 7. Programacin BASIC
215
Ejemplo
El mandato siguiente hace que el trabajo qsales genere metadatos operativos independientemente de lo que especifique el valor predeterminado del proyecto: GenErr = DSSetGenerateOpMetaData(qsales_handle, TRUE)
DSSetJobLimit
De manera predeterminada, un trabajo controlado hereda los lmites de filas o avisos del trabajo de control. Sin embargo, la funcin DSSetJobLimit los puede alterar temporalmente.
Sintaxis
CdigoError = DSSetJobLimit (DescriptorTrabajoContexto, TipoLmite, ValorLmite)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. TipoLmite es el nombre del lmite que se aplicar al trabajo en ejecucin y es uno de los siguientes: v DSJ.LIMITWARN Trabajo que se detendr despus de ValorLmite sucesos de aviso. v DSJ.LIMITROWS Etapas que se limitarn a ValorLmite filas. ValorLmite es un entero que especifica el valor en el que se establecer el lmite. Establzcalo en 0 para especificar un nmero ilimitado de avisos. CdigoError es 0 si DSSetJobLimit es satisfactorio; de lo contrario, es uno de los siguientes valores negativos: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido v DSJE.BADSTATE El trabajo no est en el estado correcto (compilado, no en ejecucin). v DSJE.BADTYPE TipoLmite no es una condicin de lmite conocida. v DSJE.BADVALUE ValorLmite no es adecuado para el tipo de condicin de limitacin.
Ejemplo
El mandato siguiente establece un lmite de 10 avisos en el trabajo qsales antes de que se detenga:
LimitErr = DSSetJobLimit(qsales_handle, DSJ.LIMITWARN, 10)
DSSetParam
Especifica los valores de parmetro del trabajo antes de ejecutar un trabajo. Cualquier parmetro que no se establezca adoptar el valor predeterminado.
Sintaxis
CdigoError = DSSetParam (DescriptorContextoTrabajo, NombreParm, ValorParm)
DescriptorContextoTrabajo es el descriptor de contexto para el trabajo tal como se deriva de DSAttachJob. NombreParm es una serie que proporciona el nombre del parmetro. ValorParm es una serie que proporciona el valor del parmetro.
216
CdigoError es 0 si DSSetParam es satisfactorio; de lo contrario, puede ser uno de los siguientes enteros negativos: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido v DSJE.BADSTATE El trabajo no est en el estado correcto (compilado, no en ejecucin). v DSJE.BADPARAM NombreParm no es un parmetro conocido del trabajo. v DSJE.BADVALUE ValorParm no es adecuado para este tipo de parmetro.
Ejemplo
Los mandatos siguientes establecen el parmetro de trimestre en 1 y el parmetro de fecha de inicio en 1/1/97 para el trabajo qsales:
paramerr = DSSetParam (qsales_handle, "trimestre", "1") paramerr = DSSetParam (qsales_handle, "fecha de inicio", "1997-01-01")
DSSetUserStatus
Se aplica slo al trabajo actual y no toma un parmetro DescriptorContextoTrabajo. La puede utilizar cualquier trabajo en una rutina de control de trabajo o posterior para establecer un cdigo de terminacin para la interrogacin por parte de otro trabajo. De hecho, el cdigo se puede establecer en cualquier punto del trabajo y el ltimo valor es el que se tomar en cualquier momento. Por lo tanto, para estar seguro de obtener el cdigo de terminacin real para un trabajo, el emisor de la llamada debe utilizar en primer lugar DSWaitForJob y DSGetJobInfo, comprobando si hay un estado de finalizacin satisfactorio. Esta rutina se define como una subrutina, no como funcin, porque no hay posibles errores.
Sintaxis
Call DSSetUserStatus (EstadoUsuario)
EstadoUsuario La serie es cualquier mensaje de terminacin definido por el usuario. La serie se registrar como parte de un suceso de "control" adecuado en el registro del trabajo de llamada y se almacenar para su recuperacin por parte de DSGetJobInfo, sobrescribiendo la serie almacenada anterior. Esta serie no debe ser un entero negativo; de lo contrario es posible que no se distinga de un error interno en llamadas a DSGetJobInfo.
Ejemplo
El mandato siguiente establece un cdigo de terminacin de "trabajo de venta finalizado":
Call DSSetUserStatus("trabajo de venta finalizado")
DSStopJob
Esta rutina slo se debe utilizar despus de haber emitido un DSRunJob. Inmediatamente enva una solicitud de detencin al motor de tiempo de ejecucin. La llamada es asncrona. Si necesita saber que el trabajo se ha detenido realmente, debe llamar a DSWaitForJob o utilizar la sentencia de Suspensin y buscar DSGetJobStatus. Tenga en cuenta que la solicitud de detencin se enva independientemente del estado actual del trabajo.
Sintaxis
CdigoError = DSStopJob (DescriptorContextoTrabajo)
217
CdigoError es 0 si DSStopJob es satisfactorio; de lo contrario puede ser uno de los siguientes: v DSJE.BADHANDLE DescriptorContextoTrabajo no vlido.
Ejemplo
El siguiente mandato solicita que se detenga el trabajo qsales:
stoperr = DSStopJob(qsales_handle)
DSTransformError
Registra un mensaje de aviso en un archivo de registro del trabajo. Se llama a esta funcin desde transformaciones solamente.
Sintaxis
Call DSTransformError (Mensaje, NombreTransformacin)
Mensaje (entrada) es el mensaje de aviso que desea registrar. Mensaje recibe automticamente como prefijo el nombre de la etapa actual y la transformacin de llamada. NombreTransformacin (entrada) es el nombre de la transformacin que llama a la subrutina DSTransformError.
Comentarios
DSTransformError graba el mensaje (y otra informacin) en el archivo de registro del trabajo como aviso y vuelve a la transformacin. Si el trabajo tiene un lmite de aviso definido para el mismo, cuando el nmero de avisos alcanza ese lmite, la llamada no devuelve el valor de retorno y el trabajo termina anormalmente. Adems del mensaje de aviso, DSTransformError registra los valores de todas las columnas en las filas actuales para todos los enlaces de entrada y salida conectados a la etapa actual.
Ejemplo
Function MySqrt(Arg1) If Arg1 < 0 Then Call DSTransformError("Valor negativo:"Arg1, "MySqrt") Return("0") ;*la transformacin produce 0 en este caso End Result = Sqrt(Arg1) ;* de lo contrario devuelve la raz cuadrada Return(Result)
DSTranslateCode
Convierte un estado de control de trabajo o cdigo de error en un mensaje de texto explicativo.
Sintaxis
Ans = DSTranslateCode(Cdigo)
Cdigo es: v Si Cdigo > 0, se presupone que es un estado de trabajo. v Si Cdigo < 0, se presupone que es un cdigo de error. v (No se debe pasar nunca 0 y devolver "ningn error") Ans es el mensaje asociado con el cdigo.
218
Comentarios
Si Cdigo 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(Parmetros)
Parmetros es la va de acceso completa del archivo que se debe esperar. No se realiza ninguna comprobacin respecto a si se trata de una va de acceso razonable (por ejemplo, si existen todos los directorios de la va de acceso). Un nombre de va de acceso que empieza con "-" indica un distintivo para comprobar la no-existencia de la va de acceso. No forma parte del nombre de va de acceso. Los parmetros tambin 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 maysculas y minsculas: v nnn nmero de segundos a esperar (a partir de ahora) v nnnS dem v nnnM nmero de minutos que se debe esperar (desde ahora) v nnnH nmero 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 da 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 va de acceso de archivo v DSJE.TIMEOUT Se ha esperado demasiado
Ejemplos
Respuesta = DSWaitForFile("C:\ftp\incoming.txt timeout:2H")
(espera 1 hora a que exista un archivo local, comprobndolo una vez por minuto.)
219
DSWaitForJob
Esta funcin slo es vlida si el trabajo actual ha emitido un DSRunJob en los DescriptorContextoTrabajo proporcionados. Si uno de los trabajos cuyos descriptores de contexto que se encuentran en la lista ha finalizado, la funcin DSWaitForJob devuelve el control inmediatamente. Si ninguno de los trabajos ha finalizado, la funcin DSWaitForJob devuelve el control en cuanto finaliza uno de los trabajos.
Sintaxis
CdigoError = DSWaitForJob (DescriptorContextoTrabajo)
DescriptorContextoTrabajo es la serie devuelta de DSAttachJob. Si contiene comas, DescriptorContextoTrabajo es un conjunto delimitado por comas de descriptores de contexto de trabajo, que representa una lista de trabajos a los que se debe esperar. CdigoError es 0 sino hay ningn error, de lo contrario los posibles valores de error (<0) son: v DSJE.BADHANDLE DescriptorContextoTrabajo incorrecto. v DSJE.WRONGJOB El trabajo para este DescriptorContextoTrabajo no se ha ejecutado desde dentro de este trabajo. CdigoError es >0 => el descriptor de contexto del trabajo ha finalizado desde una espera de varias trabajos.
Comentarios
DSWaitForJob est a la espera de un solo trabajo o varios trabajos.
Ejemplo
Para esperar el retorno del trabajo qsales:
WaitErr = DSWaitForJob(qsales_handle)
Funcin Dtx
Convierte un entero decimal en hexadecimal.
Sintaxis
Dtx (nmero [ ,tamao] )
nmero es el nmero decimal que se va a convertir. Si el nmero es un valor nulo, se devuelve un nulo. tamao es el nmero mnimo de caracteres en el valor hexadecimal. El valor devuelto se rellena con ceros iniciales, segn sea necesario. Si el tamao es un valor nulo, se produce un error de tiempo de ejecucin.
Ejemplo
Este es un ejemplo de la funcin Dtx que se utiliza para convertir un nmero decimal en una representacin de serie hexadecimal:
MyNumber = 47 MyHex = Dtx(MyNumber) MyHex = Dtx(MyNumber, 4) ;* devuelve "2F" ;* devuelve "002F"
220
Funcin 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 expresin que desea convertir. Si la serie es un valor nulo, se produce un error de tiempo de ejecucin.
Comentarios
Las funciones Ebcdic y Ascii realizan operaciones complementarias. Nota: Si el soporte multilingstico est habilitado, esta funcin puede devolver datos no reconocidos para la correlacin de juego de caracteres actual.
Ejemplo
Este ejemplo muestra cmo se utiliza la funcin 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 dgito 1 es el decimal 241 en EBCDIC) If EbcdicStr = Char(193):Char(241) Then ... ;* ... por lo tanto, se utiliza esta ramificacin 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 seccin 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 construccin If...Then en una rutina:
Function MyTransform(Arg1, Arg2, Arg3) * Las clusulas Then y Else ocupan una lnea cada una: If Arg1 Matches "A..." Then Reply = 1 Else Reply = 2 * Clusulas multilnea: If Len(arg1) > 10 Then Reply += 1 Reply = Arg2 * Reply End Else
Captulo 7. Programacin BASIC
221
Reply += 2 Reply = (Arg2 - 1) * Reply End * Otro estilo de las clusulas multilnea: 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 dems valores Call DSTransformError("Bad arg":Arg1, "MyTransform" Reply = "" End Case Return(Reply)
Sentencia Equate
Compara un valor con un smbolo o una serie literal durante la compilacin. No est disponible en las expresiones.
Sintaxis
Equate smbolo To valor [ ,smbolo To valor] ... Equate smbolo Literally valor [ ,smbolo Literally valor] ...
smbolo es el nombre de comparacin que desea dar a un valor en el programa. El valor de smbolo no puede ser un nmero. valor es el valor que desea identificar mediante smbolo. El valor debe ir entre comillas. To especifica que el valor es un tipo cualquiera de expresin. Literally (o Lit) especifica que el valor es una serie literal.
Comentarios
Puede comparar el smbolo slo una vez; de lo contrario, obtiene un error de compilador.
Ejemplo
El ejemplo siguiente muestra cmo utilizar Equate...To y Equate...Literally para establecer smbolos en el cdigo:
222
Function MyFunction(Arg1, Arg2) Equate Option1 To "O1" Equate Option2 To "O2" Equate TestOption Literally "If Arg1 = " TestOption Option1 Then ;* el cdigo se convierte en: If Arg1 = "1 Then Ans = ... End TestOption Option2 Then ;* el cdigo se convierte en: If Arg1 = "O2" Then Ans = ... End Return(Ans)
Funcin Ereplace
Sustituye una o varias instancias de una subserie.
Sintaxis
Ereplace (serie, subserie, sustitucin [ ,nmero [ ,inicio] ] )
serie es la serie o la expresin. subserie es la subserie que desea sustituir. Si la subserie es una serie vaca, se devuelve el valor de la serie. sustitucin es la subserie de sustitucin. Si sustitucin es una serie vaca, se eliminan todas las apariciones de subserie. nmero especifica el nmero 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 ejecucin.
Ejemplos
El siguiente ejemplo sustituye todas las apariciones de una subserie por otra:
MyString = "AABBCCBBDDBB" NewString = Ereplace(MyString, "BB", "xxx") * El resultado es "AAxxxCCxxxDDxxx"
223
Funcin Exchange
Sustituye un carcter en una serie.
Sintaxis
Exchange (serie, buscar.carcter, sustituir.carcter)
serie es la serie o la expresin que contiene el carcter que desea sustituir. Una serie nula devuelve un valor nulo. buscar.carcter es el valor hexadecimal del carcter que se busca. Si buscar.carcter es un valor nulo, Exchange falla y genera un error de tiempo de ejecucin. sustituir.carcter es el valor hexadecimal del carcter de sustitucin. Si el valor de sustituir.carcter es FF, buscar.carcter se suprime de la serie. Si sustituir.carcter es un valor nulo, Exchange falla y genera un error de tiempo de ejecucin.
Comentarios
Exchange sustituye todas las apariciones del carcter especificado. Si el soporte multilingstico est habilitado, Exchange utiliza los dos primeros bytes de buscar.carcter y sustituir.carcter. Los caracteres se evalan de la siguiente manera:
Bytes De 00 a FF De 00 a FA De FB a FE Se evalan como... De 00 a FF Caracteres Unicode de 0000 a FA Delimitadores del sistema
Ejemplo
En el ejemplo siguiente, 41 es el valor hexadecimal del carcter "A" y 2E es el valor hexadecimal del carcter de punto (.):
MyString = Exchange("ABABC", "41", "2E") * el resultado es ".B.BC" * La lnea anterior es funcionalmente equivalente a: * MyString = Convert("A", ".", "ABABC")
Funcin Exp
Devuelve el valor de "e" elevado a la potencia especificada.
Sintaxis
Exp (potencia)
potencia es un nmero o una expresin numrica 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.
224
Comentarios
El valor de "e" es aproximadamente 2,71828. La frmula utilizada para realizar el clculo es:
Exp valor de funcin = 2.71828**(potencia)
Ejemplo
Este ejemplo utiliza la funcin Exp para devolver "e" elevado a una potencia:
* Se define el ngulo en radianes. MyAngle = 1.3 * Se calcula la secante hiperblica. MyHSec = 2 / (Exp(MyAngle) + Exp(-MyAngle))
Funcin Field
Devuelve las subseries delimitadas de una serie.
Sintaxis
Field (serie, delimitador, instancia [ ,nmero] )
serie es la serie que contiene la subserie. Si serie es un valor nulo, se devuelve el valor nulo. delimitador es el carcter que delimita la subserie. Si delimitador es una serie vaca, se devuelve la serie. Si la serie no contiene un delimitador, se devuelve una serie vaca, 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 ejecucin. Si se devuelve ms 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 vaca. Si la instancia es un valor nulo, se produce un error de tiempo de ejecucin. El nmero especifica el nmero de subseries delimitadas que se devolvern. Si el nmero es una serie vaca o menor que 1, se supone 1. Si el nmero es un valor nulo, se produce un error de tiempo de ejecucin.
Ejemplos
En el siguiente ejemplo, la variable MyString se establece en los datos entre la tercera y la cuarta aparicin 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"
225
Funcin FieldStore
Modifica las series de caracteres insertando, suprimiendo o sustituyendo los campos separados por los delimitadores especificados.
Sintaxis
FieldStore (serie, delimitador, inicio, nmero, nuevos.campos)
serie es la serie que se va a modificar. Si serie es un valor nulo, se devuelve el valor nulo. delimitador delimita los campos y puede ser un carcter ASCII individual cualquiera. Si delimitador es nulo, se produce un error de tiempo de ejecucin. inicio es el nmero del campo que inicia la modificacin. v Si inicio es mayor que el nmero de campos de serie, la serie se rellena con campos vacos antes de iniciar el proceso. v Si inicio es nulo, se produce un error de tiempo de ejecucin. nmero es el nmero de campos de nuevos.campos que se insertan en la serie. v Si el nmero es positivo, se sustituir el nmero indicado de campos de serie por el nmero indicado de primeros campos de nuevos.campos. v Si el nmero es negativo, se sustituirn el nmero indicado de campos de serie por todos los campos de nuevos.campos. v Si el nmero es 0, se insertarn todos los campos de nuevos.campos en la serie antes del campo indicado por inicio. v Si el nmero es nulo, se produce un error de tiempo de ejecucin. nuevos.campos es una serie o una expresin que contiene los nuevos campos que se utilizarn. Si nuevos.campos es nulo, se produce un error de tiempo de ejecucin.
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 cdigo anterior da como resultado: "1#A#B#4#5" String2 = Fieldstore(MyString, "#", 2, -2, "A#B") * El cdigo anterior da como resultado: "1#A#B#4#5" String3 = Fieldstore(MyString, "#", 2, 0, "A#B") * El cdigo anterior da como resultado: "1#A#B#2#3#4#5" String4 = Fieldstore(MyString, "#", 1, 4, "A#B#C#D") * El cdigo anterior da como resultado: "A#B#C#D#5" String5 = Fieldstore(MyString, "#", 7, 3, "A#B#C#D") * El cdigo anterior da como resultado: "1#2#3#4#5##A#B#"
226
Funcin FIX
Utilice la funcin FIX para convertir un valor numrico en un nmero de coma flotante con una precisin especificada. FIX permite controlar la exactitud del clculo eliminando los datos excesivos o poco fiables de los resultados numricos. Por ejemplo, una aplicacin bancaria que calcula la acumulacin de intereses de las cuentas de los clientes no necesita manejar crditos expresados en fracciones de cntimos. Una aplicacin de ingeniera tiene que descartar los dgitos que rebasan el grado de fiabilidad aceptado para los clculos.
Sintaxis
FIX (nmero [ ,precisin [ ,modalidad ] ] )
La expresin nmero se evala como el valor numrico que se convertir.Si nmero se evala como valor nulo, se devuelve el valor nulo. La expresin precisin se evala como el nmero de dgitos de precisin del nmero de coma flotante. La precisin predeterminada es 4. El distintivo modalidad indica cuntos dgitos sobrantes se manejan. Si modalidad es 0 o no se especifica, los dgitos sobrantes se redondean. Si modalidad es un valor distinto de 0, los dgitos sobrantes se truncan.
Ejemplos
El ejemplo siguiente calcula un valor con la precisin predeterminada 4:
REAL.VALUE = 37.73629273 PRINT FIX (REAL.VALUE)
El ejemplo siguiente calcula el mismo valor con dos dgitos de precisin. El primer resultado se redondea, y el segundo se trunca:
PRINT FIX (REAL.VALUE, 2) PRINT FIX (REAL.VALUE, 2, 1)
Funcin Fmt
Formatea los datos de la salida.
Sintaxis
Fmt (serie, formato)
serie es la serie que se va a formatear. Si serie es un valor nulo, se devuelve el valor nulo. formato es una expresin que define cmo se formatear la serie. Si el formato es nulo, la funcin Fmt falla. Para ver la sintaxis detallada, consulte Expresin de formato.
227
Comentarios
La expresin de formato proporciona un patrn para formatear la serie. Puede especificar: v La longitud del campo de salida v Un carcter de relleno para rellenar el campo v Si el campo est justificado a la derecha o a la izquierda v Un formato numrico, monetario o de fecha v Una mscara para que acte como plantilla del campo
Expresin de formato
Define cmo se formatea la serie.
Sintaxis
[longitud] [relleno] justificacin [edicin] [mscara ]
Longitud de salida
El nmero de posiciones de caracteres en el campo de salida se especifica utilizando el parmetro de longitud. Debe especificar longitud a menos que especifique mscara. (Puede especificar longitud y mscara.) 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.
Carcter de relleno
El parmetro fill se especifica para definir el carcter de relleno que se utiliza para rellenar el campo de salida al tamao especificado por length. El carcter de relleno predeterminado es un espacio. Si desea emplear un carcter numrico o las letras L, R, T o Q como carcter de relleno, deber escribirlo entre comillas simples.
Justificacin
La justificacin de la salida se especifica utilizando el parmetro de justificacin, que debe ser uno de los cdigos 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.
228
Cdigo Descripcin n[m] n es un nmero del 0 al 9 que especifica el nmero de lugares decimales que se muestran. Si especifica 0 para n, el valor se redondea al entero ms prximo. La salida se rellena con ceros o se redondea al ensimo lugar decimal, si es necesario. m especifica cmo desescalar el valor: v Un valor de 0 desescala el valor segn la precisin actual. v Un valor del 1 al 9 desescala del valor en m menos la precisin actual. Si no especifica m, el valor predeterminado es 0. La precisin predeterminada es 4. $ F , Z E C D B L N J S Antepone a la salida numrica como prefijo un signo de dlar. Antepone a la salida numrica como prefijo un signo de franco. Inserta una coma para separar los millares. Suprime los ceros iniciales. Devuelve una serie vaca si el valor es 0. Delimita los nmeros negativos con corchetes angulares. Anexa cr a los nmeros negativos. Anexa db a los nmeros positivos. Anexa db a los nmeros negativos. Anexa el signo menos a los nmeros negativos. Suprime el signo menos en los nmeros negativos. Trunca un nmero, en lugar de redondearlo. Si est habilitado el soporte multilingstico, antepone el carcter de yen/yuan al valor.
Las opciones E, M, C, D y N definen representaciones numricas de uso monetario, mediante prefijos o sufijos. Si el soporte multilingstico est habilitado, estas opciones alteran temporalmente los convenios numricos y monetarios establecidos para el entorno local actual.
Salida enmascarada
Puede especificar una plantilla de formato para la salida utilizando el parmetro mscara. Por ejemplo, un patrn de formato 10L##-##-#### formatea la serie 31121999 en 31-12-1999. Una mscara puede incluir los caracteres que desee, pero estos caracteres tienen un significado especial: #n %n *n Especifica que los datos se visualizan en un campo de n caracteres de relleno. Si la expresin de formato no especifica un carcter de relleno, se utiliza un espacio. Especifica que los datos se visualizan en un campo de n ceros. Especifica que los datos se visualizan en un campo de n asteriscos.
Los dems caracteres seguidos de n insertan dichos caracteres en la salida n veces. Si desea utilizar nmeros o caracteres especiales como literales, debe aplicar la funcin de escape al carcter especial con una barra inclinada invertida ( \ ). mscara debe ir entre parntesis a efectos de claridad, en cuyo caso tambin debe escribir entre parntesis la mscara completa. Por ejemplo: ((###) ###-####)
229
La funcin Status devuelve el resultado de la edicin, de la siguiente manera: 0 1 2 El cdigo de edicin es satisfactorio. La serie o la expresin no es vlida. El cdigo de edicin no es vlido.
Ejemplos
Los siguientes ejemplos muestran el efecto de varios cdigos Fmt. En cada caso, el resultado se muestra como una serie, para que estn visibles todos los espacios significativos. Expresin 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", "140R") 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 "
230
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"
231
Funcin FmtDP
En la modalidad de soporte multilingstico, formatea los datos en las posiciones de visualizacin en lugar de por longitud de caracteres.
Sintaxis
FmtDP (serie, formato [, nombrecorrelacin] )
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 visualizacin de 1. formato es una expresin que define cmo se formatear la serie. Si el formato es nulo, FmtDP falla. Para ver la sintaxis detallada, consulte Expresin de formato. nombrecorrelacin es el nombre de una correlacin de juego de caracteres que se utiliza para el formateo. Si no se especifica el nombrecorrelacin, 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 multilingstico no est habilitado, la funcin FmtDP funciona como una funcin Fmt equivalente.
Funcin Fold
Dobla las series para crear subseries.
Sintaxis
Fold (serie, longitud)
Comentarios
Utilice la funcin Fold para dividir una serie en un nmero 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 evala como valor nulo, se devuelve el valor nulo. Si longitud es menor que 1, se devuelve una serie vaca. Si longitud es el valor nulo, Fold falla y el programa termina con un mensaje de error de tiempo de ejecucin.
232
Ejemplo
A=Fold("This is a folded string", 5)
Establece A e:
ThisFis a FfoldeFdFstrinFg
Funcin FoldDP
En la modalidad de soporte multilingstico, dobla las series para crear subseries utilizando las posiciones de visualizacin de los caracteres.
Sintaxis
FoldDP (serie, longitud [ , nombrecorrelacin ] )
serie es la serie que se va a doblar. longitud es la longitud de las subseries en posiciones de visualizacin. nombrecorrelacin es el nombre de una correlacin de juego de caracteres que se utiliza para el formateo. Si no se especifica el nombrecorrelacin, se utiliza el valor predeterminado actual para el proyecto o el trabajo.
Comentarios
La funcin FoldDP est especialmente indicada para su uso con juegos de caracteres de varios bytes. Si el soporte multilingstico no est habilitado, la funcin FoldDP funciona como una funcin 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} condicin] [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 cuntas 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 iteracin del bucle desde un punto en el bucle.
Captulo 7. Programacin BASIC
233
Exit sale del bucle desde un punto en el bucle. While...Continue es un bucle interior. Si condicin se evala en true, el bucle interior contina ejecutndose. Si condicin se evala en false, el bucle interior finaliza. La ejecucin del programa contina con la sentencia que figura a continuacin de la sentencia Next. Si condicin se evala como un valor nulo, la condicin es falsa. Until...Continue es un bucle interior. Si condicin se evala en false, el bucle interior contina ejecutndose. Cuando condicin se evala en true, el bucle finalizar y la ejecucin del programa continuar con la sentencia que figura tras la sentencia Next. condicin define la condicin para ejecutar un bucle While o Until. condicin puede ser una sentencia cualquiera que utilice una clusula Then...Else, pero la clusula Then...Else no se incluye. En su lugar, cuando la sentencia condicional ejecuta la clusula Else, condicin se evala en false; cuando la sentencia condicional ejecuta la clusula Then, condicin se evala en true. La clusula 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 clusulas 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 nmeros del 5 al 1, donde cada serie est separada de la otra por un guin. 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 aade un guin Next Outer * La serie ser parecida a: 555-444-333-222-111-.
Sentencia Function
Identifica una funcin escrita por el usuario y especifica el nmero y los nombres de los argumentos que se le pasarn. No est disponible en las expresiones.
Sintaxis
Function [nombre] [ argumento1 [, argumento2] ...]
nombre es el nombre de la funcin escrita por el usuario y puede ser cualquier nombre de variable vlido. argumento1 y argumento2 son los nombres formales de los argumentos que se van a pasar a la funcin. Los nombres formales hacen referencia a los nombres reales de los parmetros que se utilizan en el programa de llamada (vase los ejemplos). Puede especificar hasta 254 argumentos. La funcin de
234
llamada en el programa principal debe especificar el mismo nmero de argumentos que la sentencia Function.
Comentarios
Una funcin escrita por el usuario puede contener una sola sentencia Function, que debe ser la primera lnea no comentada. Un argumento adicional est oculto para que la funcin escrita por el usuario pueda utilizarlo para devolver un valor. La funcin 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 funcin escrita por el usuario y no especifica un valor para devolver, se devuelve una serie vaca.
Ejemplos
En este ejemplo, una funcin definida por el usuario denominada Short compara la longitud de dos argumentos y devuelve el ms 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 funcin llamada MyFunc con los nombres de argumento A, B y C. A continuacin, figura un ejemplo de la sentencia DefFun que declara y utiliza la funcin 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 cmo llamar a una funcin de transformacin denominada MyFunctionB desde otra funcin de transformacin denominada MyFunctionA:
Function MyFunctionA(Arg1) * Cuando hace referencia a una funcin escrita por el usuario que se mantiene en el * repositorio de DataStage, debe declararla como una funcin con el
Captulo 7. Programacin BASIC
235
* nmero correcto de argumentos y aadirle un prefijo "DSU.". Deffun MyFunctionB(A) Calling "DSU.MyFunctionB" Ans = MyFunctionB(Arg1) * Aada su propia transformacin al valor en Ans... ...
Funcin GetLocale
En la modalidad de soporte multilingstico, recupera el valor de entorno local actual para una determinada categora.
Sintaxis
$Include UNIVERSE.INCLUDE UVNLSLOC.H nombre = GetLocale (categora)
UVLC$TIME Hora y fecha UVLC$NUMERIC Numrico UVLC$MONETARY Moneda UVLC$CTYPE Tipo de carcter UVLC$COLLATE Secuencia de ordenacin
Comentarios
GetLocale devuelve una de las siguientes seales de error si no puede recuperar el valor de entorno local: Error Significado
LCE$NOLOCALES El soporte multilingstico no est habilitado para IBM InfoSphere DataStage. LCE$BAD.CATEGORY No se reconoce la categora 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 dnde se inicia puede ser cualquier etiqueta vlida definida en el programa. : identifica el texto anterior como una etiqueta de sentencia para que el programa sea ms legible.
236
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 continuacin de la sentencia GoSub. v Return To etiqueta transfiere el control de programa a una ubicacin en el programa especificada por etiqueta. Un programa puede llamar a una subrutina el nmero de veces que desee. Puede anidar subrutinas hasta 256 niveles.
Ejemplo
Este ejemplo utiliza GoSub para invocar una subrutina interna en una funcin de transformacin de IBM InfoSphere DataStage. La sentencia Return hace que se reanude la ejecucin en la sentencia que va inmediatamente despus 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 slo una subrutina si la entrada es un nmero positivo: If Arg1 > 0 Then GoSub MyRoutine Reply = Arg1 GoTo ExitFunction ;* se utiliza GoTo para evitar un error MyRoutine: Arg1 = SQRT(Arg1) ;* utiliza la raz 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 ms legible.
Comentarios
Si la sentencia referenciada es ejecutable, se ejecuta y el programa contina. Si no es ejecutable, el programa contina en la primera sentencia ejecutable despus de la referenciada.
Ejemplo
Este ejemplo utiliza la sentencia GoTo para ramificarse a las etiquetas de lnea de una rutina. Tenga en cuenta que este tipo de proceso es a menudo ms claro que la utilizacin de una construccin Begin Case.
Function MyTransform(Arg1) * Evala el argumento y se ramifica a la etiqueta correspondiente. If Arg1 = 1 Then GoTo Label1 Else GoTo Label2 Label1: Reply = "A" GoTo LastLabel
237
Funcin Iconv
Convierte una serie al formato de almacenamiento interno.
Sintaxis
Iconv (serie, cdigo [ @VM cdigo ] ... )
serie se evala como la serie que se va a convertir. Si serie es un valor nulo, se devuelve el valor nulo. cdigo es un cdigo de conversin y debe escribirse entre comillas. Varios cdigos de conversin deben ir separados por marcas de valor. Si hay varios cdigos, se aplican de izquierda a derecha. El segundo cdigo convierte la salida del primero, etc. Si cdigo es un valor nulo, genera un error de tiempo de ejecucin.
Comentarios
La funcin Status devuelve el resultado de la conversin, de la siguiente manera: 0 1 2 3 La conversin ha sido satisfactoria. La serie no era vlida. Se devuelve una serie vaca, a menos que serie fuera un valor nulo, en cuyo caso se devuelve un valor nulo. La conversin no era vlida. La conversin ha sido satisfactoria, pero puede que los datos de entrada no sean vlidos, 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 cdigos de conversin MY (ASCII): Expresin de conversin 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 cdigos de conversin D (Fecha): Expresin de conversin Valor interno X = Iconv("31 DEC 1967", "D") X = 0
238
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 cdigos de conversin G (Grupo): Expresin de conversin 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 cdigos de conversin L (Longitud): Expresin de conversin 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"
239
Expresin de conversin 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"
240
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 de numerales
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin NR (Numeral romano): Expresin de conversin Valor interno X = Iconv("mcmxcvii", "NR") X = 1997
Captulo 7. Programacin BASIC
241
Conversiones Radix
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MX, MO y MB (Radix): Expresin de conversin 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 Soundex
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin S (Soundex): Expresin de conversin Valor interno X = Iconv("GREEN", "S") X = "G650"
242
Conversiones de hora
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MT (Hora): Expresin de conversin 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 lnea o varias lneas en un bloque. No est disponible en las expresiones.
Sintaxis
If condicin Else sentencia If condicin Else sentencias End
condicin es un valor numrico o una comparacin cuyo valor determina el flujo del programa. Si la condicin es false, se ejecutan las sentencias. sentencias son las sentencias que se ejecutan si condicin es false.
Comentarios
Si desea ejecutar ms de una sentencia cuando condicin es false, utilice la sintaxis multilnea.
Ejemplo
Function MyTransform(Arg1, Arg2, Arg3) * La clusula Else ocupa slo una lnea: Reply = 0 ;* valor predeterminado If Arg1 Matches "A..." Else Reply = 2 * Clusula Else multilnea: If Len(arg1) > 10 Else Reply += 2
Captulo 7. Programacin BASIC
243
Reply = (Arg2 - 1) * Reply End * Otro estilo de la clusula Else multilnea: 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 lnea o varias lneas en un bloque. No est disponible en las expresiones.
Sintaxis
If condicin Then sentencias [Else sentencias] If condicin Then sentencias End [Else sentencias
End]
condicin es un valor numrico o una comparacin cuyo valor determina el flujo del programa. Si condicin es true, se utiliza la clusula Then. Si condicin es false, se utiliza la clusula Else. Si condicin es un valor nulo, se evala en false. sentencias son las sentencias que se ejecutan dependiendo del valor de condicin.
Comentarios
Puede anidar sentencias If...Then...Else. Si las sentencias Then o Else estn escritas en varias lneas, deber emplear una sentencia End como la ltima sentencia.
Ejemplo
Function MyTransform(Arg1, Arg2, Arg3) * Las clusulas Then y Else ocupan una lnea cada una: If Arg1 Matches "A..." Then Reply = 1 Else Reply = 2 * Clusulas multilnea: If Len(arg1) > 10 Then Reply += 1 Reply = Arg2 * Reply End Else Reply += 2 Reply = (Arg2 - 1) * Reply End * Otro estilo de las clusulas multilnea: If Len(Arg1) > 20 THEN Reply += 2 Reply = Arg3 * Reply End Else Reply += 4 Reply = (Arg3 - 1) * Reply End Return(Reply)
244
Sentencias If...Then
Ejecutan una o varias sentencias de manera condicional. Puede utilizar una sintaxis de una sola lnea o varias lneas en un bloque. No est disponible en las expresiones.
Sintaxis
If condicin Then sentencia If condicinThen sentenciasEnd
condicin es un valor numrico o una comparacin cuyo valor determina el flujo del programa. Si la condicin es true, se ejecutan las sentencias. sentencias son las sentencias que se ejecutan si la condicin es true.
Comentarios
Si desea ejecutar ms de una sentencia cuando condicin es true, utilice la sintaxis multilnea.
Ejemplo
Este ejemplo ilustra las distintas formas de la construccin If...Then que pueden utilizarse en una rutina:
Function MyTransform(Arg1, Arg2, Arg3) * La clusula Then ocupa slo una lnea: Reply = 0 ;* valor predeterminado If Arg1 Matches "A..." Then Reply = 1 * Clusula Then multilnea: If Len(arg1) > 10 Then Reply += 1 Reply = Arg2 * Reply End * Otro estilo de la clusula Then multilnea: 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 condicin Then expresin Else expresin
variable es la variable que se asigna. If condicin define la condicin que determina qu valor se asigna. Then expresin define el valor que se asigna si la condicin es true.
Captulo 7. Programacin BASIC
245
Comentarios
El operador If es la nica forma de la construccin If...Then...Else que puede utilizarse en una expresin.
Ejemplo
Tenga en cuenta que la clusula Else es necesaria.
* Devolver A o B dependiendo del valor de Column1: If Column1 > 100 Then "A" Else "B" * Aadir 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)
Funcin Index
Devuelve la posicin inicial de una subserie.
Sintaxis
Index (serie, subserie, instancia)
serie es la serie o la expresin 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 vaca, 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 ejecucin.
Ejemplos
Los siguientes ejemplos muestran varias formas de buscar la posicin de una subserie en una serie:
MyString = "P1234XXOO1299XX00P1" Position = Index(MyString, 1, 2) * El cdigo anterior devuelve el ndice Position = Index(MyString, "XX", 2) * El cdigo anterior devuelve el ndice * (14). Position = Index(MyString, "xx", 2) * El cdigo anterior devuelve 0, ya que Position = Index(MyString, "XX", 3) * El cdigo anterior devuelve 0, ya que * tercera aparicin de la subserie "XX"
del segundo carcter "1" (10). inicial de la segunda subserie "XX" no se produce la subserie "xx". no se puede encontrar la *.
Funcin 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)]
246
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 cmo probar si una sentencia Dimension ha asignado suficiente memoria:
Dim MyArray(2000) If InMat() = 1 Then Call DSLogFatal("Could not allocate array", "MyRoutine") End
Funcin Int
Devuelve la parte entera de una expresin numrica.
Sintaxis
Int (expresin)
expresin es una expresin numrica. Despus de la evaluacin, la parte de fraccin del valor se trunca y se devuelve la parte entera. Si la expresin es un valor nulo, se devuelve un nulo.
Ejemplo
Este ejemplo muestra la parte entera de una expresin devuelta por la funcin 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
Funcin 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 ningn valor, incluido l mismo.
Ejemplo
Este ejemplo muestra cmo probar una expresin que se est estableciendo en el valor nulo:
247
MyVar = @Null ;* establece la variable en el valor nulo If IsNull(MyVar * 10) Then * Ser true, ya que toda operacin aritmtica que incluya un valor nulo * da como resultado un valor nulo. End
Funcin Left
Extrae una subserie del principio de una serie.
Sintaxis
Left (serie, n)
serie es la serie que contiene la subserie. Si serie es un valor nulo, se devuelve el valor nulo. n es el nmero de caracteres que se extraen del principio de la serie. Si n es un valor nulo, genera un error de tiempo de ejecucin.
Ejemplos
Estos ejemplos extraen los tres caracteres ms a la izquierda de una serie:
MyString = "ABCDEF" MySubStr = Left(MyString, 3) MySubStr = Left("AB", 3) ;* la respuesta es "ABC" ;* la respuesta es "AB"
Funcin Len
Devuelve el nmero 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 nmero 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)
Funcin LenDP
En la modalidad de soporte multilingstico, devuelve la longitud de una serie en posiciones de visualizacin.
Sintaxis
LenDP (serie [, nombrecorrelacin ])
248
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 visualizacin de 1. nombrecorrelacin es el nombre de la correlacin que define el juego de caracteres que se utiliza en la serie. Si se omite el nombrecorrelacin, se utiliza la correlacin de juego de caracteres predeterminada para el proyecto o el trabajo.
Comentarios
Si el soporte multilingstico no est habilitado, esta funcin funciona como la funcin Len y devuelve el nmero de caracteres de la serie.
Funcin Ln
Calcula el logaritmo natural del valor de una expresin, empleando la base "e".
Sintaxis
Ln (expresin)
expresin es la expresin numrica que se evala. Si la expresin es 0 o un valor negativo, se devuelve 0 y se emite un aviso. Si la expresin es un valor nulo, se devuelve un nulo.
Comentarios
El valor de "e" es aproximadamente 2,71828.
Ejemplo
Este ejemplo muestra cmo grabar una transformacin para convertir un nmero en su logaritmo de base 10 utilizando la funcin 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 expresin en matriz.dinmica y devolver un valor con una de las indicaciones siguientes: v La ubicacin en que se ha encontrado expresin en matriz.dinmica. v La ubicacin en que se debe insertar expresin en matriz.dinmica si no se ha encontrado. La bsqueda puede iniciarse en cualquier punto de matriz.dinmica.
Sintaxis
LOCATE expresin IN matriz.dinmica [ < nmcampo [ ,nmvalor] > ] [,inicio] [BY sec] SETTING variable {THEN sentencias [ELSE sentencias] | ELSE sentencias}
249
El valor de expresin se evala como la serie que se buscar en matriz.dinmica. Si expresin o matriz.dinmica se evala como valor nulo, variable se establece en 0 y se ejecutan las sentencias ELSE. Si expresin y matriz.dinmica se evalan como series vacas, variable se establece en 1 y se ejecutan las sentencias THEN. Los valores de nmcampo, nmvalor y nmsubvalor son expresiones de delimitador y especifican: v La ubicacin en que se debe iniciar la bsqueda en matriz.dinmica. v El tipo de elemento que se busca. El valor de inicio se evala como un nmero que especifica el campo, valor o subvalor a partir del cual se debe iniciar la bsqueda. Las expresiones de delimitador especifican el nivel de bsqueda, e inicio especifica la posicin inicial de la bsqueda. Si alguna expresin de delimitador o inicio se evala como valor nulo, la sentencia LOCATE falla y el programa termina con un mensaje de error de tiempo de ejecucin. En variable se almacena el ndice de expresin. El valor de variable devuelve un nmero de campo, valor o subvalor, segn las expresiones de delimitador empleadas. El valor de variable se establece en un nmero que representa uno de los elementos siguientes: v El ndice del elemento que contiene expresin, si se encuentra ese elemento. v Un ndice que se puede utilizar en una funcin INSERT para crear un elemento nuevo con el valor especificado por expresin.
Comentarios
Durante la bsqueda, 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 bsqueda se detiene cuando se da una de las condiciones siguientes: v Se encuentra un campo que contiene expresin. v Se llega al final de la matriz dinmica. v Se encuentra un campo superior o inferior, segn se haya especificado en sec. Si los elementos de la bsqueda estn ordenados en una de las secuencias ASCII ascendentes o descendentes que figuran a continuacin, puede utilizar la expresin BY sec para finalizar la bsqueda. La bsqueda finaliza en la posicin donde se debe insertar expresin 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 bsqueda: "AL" o "A" Ascendente y justificada a la izquierda (ordenacin alfanumrica estndar) "AR" Ascendente y justificada a la derecha
"DL" o "D" Descendente y justificada a la izquierda (ordenacin alfanumrica estndar) "DR" Descendente y justificada a la derecha
La especificacin de sec no vuelve a ordenar los elementos de matriz.dinmica; indica las condiciones de terminacin de la bsqueda. Si se utiliza una expresin 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 expresin. Si sec se evala como valor nulo, la sentencia falla y el programa termina.
250
Las sentencias ELSE se ejecutan si no se encuentra expresin. El formato de la sentencia ELSE es el mismo que se utiliza en la sentencia IF...THEN. Si el soporte multilingstico est habilitado, la sentencia LOCATE con una expresin BY sec utiliza el convenio de clasificacin 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 <1> SETTING WHERE ELSE PRINT ERROR PRINT "WHERE= ",WHERE LOCATE "$" IN Q <1,1> 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 <2> BY "AR" SETTING X ELSE NUMBERS = INSERT(NUMBERS,X,0,0,NUM) PRINT "AFTER INSERT, NUMBERS= ",NUMBERS END
122F128F123F126F130F
Sentencias Loop...Repeat
Define un bucle de programa. No est disponible en las expresiones.
Sintaxis
Loop [sentencias] [Continue | Exit] [While | Until condicin 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 condicin Do especifica que el bucle se repite siempre que condicin sea true. Cuando condicin es false, el bucle se detiene y la ejecucin del programa contina con la sentencia que figura tras la sentencia Repeat. Si condicin es un valor nulo, se supone que es false.
251
Until condicin Do especifica que el bucle se repite siempre que condicin sea false. Cuando condicin es true, el bucle se detiene y la ejecucin del programa contina con la sentencia que figura tras la sentencia Repeat. Si condicin es un valor nulo, se supone que es false. Repeat define el fin del bucle.
Comentarios
Puede utilizar varias clusulas 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 cmo 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 despus 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 condicin 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 comprobacin se establece en False Repeat
Sentencia Mat
Asigna valores a los elementos de una matriz. No est disponible en las expresiones.
Sintaxis
Mat matriz = expresin
matriz es una matriz denominada y dimensionada a la que desea asignar valores. expresin puede ser un valor nico o el nombre de una matriz dimensionada. Si expresin 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 especficos de una matriz.
Ejemplos
Este ejemplo muestra cmo asignar el mismo valor a todos los elementos de una matriz:
Dim MyArray(10) Mat MyArray = "Empty"
Este ejemplo muestra cmo asignar los elementos de una matriz a los de otra matriz:
252
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
Funcin MatchField
Busca en una serie y devuelve la parte de la misma que coincide con un elemento de patrn.
Sintaxis
MatchField (serie, patrn, elemento)
serie es la serie que en la que se realiza la bsqueda. Si la serie no coincide con ningn patrn o es un valor nulo, se devuelve una serie vaca. patrn es uno o varios elementos de patrn que describen la serie, y puede ser cualquiera de los cdigos de patrn utilizados por el operador Match. Si el patrn es un valor nulo, se devuelve una serie vaca. elemento es un nmero, n, que especifica que se devuelve la parte de la serie que coincide con el ensimo elemento del patrn. Si el elemento es un valor nulo, genera un error de tiempo de ejecucin.
Comentarios
patrn debe contener elementos que describen todos los caracteres de la serie. Por ejemplo, la sentencia siguiente devuelve una serie vaca porque el patrn 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 patrn:
MatchField ("XYZ123AB", "3X3N...", 1)
Ejemplos
Q se evala en BBB:
Q = MatchField("AA123BBB9","2A0N3A0N",3)
En los ejemplos siguientes, la serie no coincide con el patrn y se devuelve una serie vaca:
XYZ=MatchField(ABCDE1234,"2N3A4N",1) XYZ=ABC=MatchField(1234AB,"4N1A",2) ABC=
253
Funcin Mod
Devuelve el resto de una operacin de divisin.
Sintaxis
Mod (dividendo, divisor)
dividendo es el nmero que se va a dividir. Si dividendo es un valor nulo, se devuelve el valor nulo. divisor es el nmero por el que se divide. divisor no puede ser 0. Si divisor es un valor nulo, se devuelve el valor nulo.
Comentarios
La funcin Mod calcula el resto mediante la frmula:
Mod (X, Y) = X - (Int (X / Y) * Y)
Ejemplos
Los siguientes ejemplos muestran el uso de la funcin Mod:
Remainder = Mod(100, 25) el resultado es 0 Remainder = Mod(100, 30) ;* ;* el resultado es 10
Sentencia Nap
Detiene un programa el nmero de milisegundos especificado. No est disponible en las expresiones.
Sintaxis
Nap [milisegundos]
milisegundos es el nmero 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 transformacin, ya que ralentizar la ejecucin 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
254
Funcin Neg
Devuelve el inverso de un nmero.
Sintaxis
Neg (nmero)
Ejemplo
El siguiente ejemplo muestra un uso de la funcin Neg, equivalente al operador unario menos:
MyNum = 10 * La siguiente lnea puede ser ms clara que la construccin * equivalente, que es: -(MyNum + 75) / 100 MyExpr = Neg(MyNum + 75) / 100
Funcin Not
Invierte el resultado lgico de una expresin.
Sintaxis
Not (expresin)
expresin es la expresin cuyo resultado se invierte. Si la expresin es true, se devuelve 0; si es false, se devuelve 1. Si la expresin es un valor nulo, se devuelve un nulo.
Comentarios
La expresin es false si se evala en 0 o si es una serie vaca. Para los dems valores (excepto el valor nulo), es true.
Ejemplos
A continuacin, se proporcionan algunos ejemplos del uso de la funcin 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 accin ni genera ningn cdigo de objeto.
Sintaxis
Nula
Comentarios
La sentencia Null acta como una va muerta en un programa. Por ejemplo, puede emplearla con la clusula Else si no desea que se efecte ninguna operacin cuando se ejecute la clusula Else.
Captulo 7. Programacin BASIC
255
Ejemplo
El siguiente ejemplo muestra el uso de la sentencia Null para dejar claro que una determinada ramificacin de una sentencia Case no realiza ninguna accin:
Begin Case Case Arg1 = A * ... realizar alguna accin para el primer caso. Case Arg1 = B * ... realizar alguna accin para el segundo caso. Case @True * ... en los dems casos, no realizar ninguna accin. Null End Case
Funcin Num
Determina si una serie es numrica. Si el soporte multilingstico est habilitado, el resultado de esta funcin depende del valor de entorno local actual del convenio Numeric.
Sintaxis
Num (expresin)
expresin es la expresin que se prueba. Si la expresin es un nmero, una serie numrica o una serie vaca, 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 numricas. No obstante, las series que contienen otros caracteres utilizados para formatear cantidades numricas o monetarias como, por ejemplo, comas, signos de dlar, etc., no se consideran numricas.
Ejemplos
Los siguientes ejemplos muestran la funcin Num que se utiliza para determinar si una variable contiene un nmero:
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 carcter numrico) ;* True (la serie vaca es numrica)
Funcin Oconv
Convierte una expresin a un formato de salida.
Sintaxis
Oconv (expresin, conversin [@VM conversin] ...)
expresin es una serie almacenada en formato interno que desea convertir a un formato de salida. Si la expresin es un valor nulo, se devuelve un nulo.
256
conversin son uno o varios cdigos de conversin que especifican cmo se formatea la serie. Separe los distintos cdigos con una marca de valor. Si conversin es un valor nulo, genera un error de tiempo de ejecucin.
Comentarios
Si especifica varios cdigos, se aplican de izquierda a derecha. El primer cdigo se aplica a la expresin, el siguiente cdigo se aplica al resultado de la primera conversin, y as sucesivamente. La funcin Status utiliza los siguientes valores para indicar el resultado de una funcin Oconv: 0 1 2 La conversin ha sido satisfactoria. Se ha pasado una serie no vlida a la funcin Oconv. O bien se ha devuelto la serie original o, si la serie era un valor nulo, se ha devuelto un valor nulo. La conversin no era vlida.
Ejemplos
Conversiones ASCII
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MY (ASCII). Expresin de conversin 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 cdigos de conversin D (Fecha): Expresin de conversin 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"
Captulo 7. Programacin BASIC
257
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 cdigos de conversin G (Grupo): Expresin de conversin 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 cdigos de conversin L (Longitud): Expresin de conversin 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"
258
Expresin de conversin 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"
259
X = Oconv(-123456789, "MD2<[#,.,,]") X = "#<1.234.567,89>" X = Oconv(123456789, "MD33") X = "123456.789" X = Oconv(1234567890, "MD32") X = "12345678.9" X = Oconv(123456789, "MD2F") X = "F1234567.89" X = Oconv(-123456789, "MD2C") X = "1234567.89cr" X = Oconv(123456789, "MD2D") X = "1234567.89 " X = Oconv(123456789, "MD2,D") X = "1,234,567.89 " X = Oconv(1234567.89, "MD2P") X = "1234567.89" X = Oconv(123, "MD3Z") X = ".123" X = Oconv(987654, "MD2-Z") X = "9876.54" X = Oconv(12345.678, "MD20T") X = "12345.67" X = Oconv(123456, "MD2$12#") X = "$####1234.56" X = Oconv(987654, "MD3,$CPZ") X = "$987.654 " X = Oconv(987654, "MD2,ZP12#") X = "####9,876.54"
260
X = Oconv(123456789, "ML2D") X = "1234567.89db" X = Oconv(-123456789, "ML2M") X = "1234567.89-" X = Oconv(-123456789, "ML2E") X = "<1234567.89>" X = Oconv(123456789, "ML2(*12)") X = "1234567.89**" X = Oconv(123456789, "MR2(*12)") X = "**1234567.89"
Conversiones de numerales
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin NR (Numeral romano): Expresin de conversin Valor externo X = Oconv(1997, "NR") X = "mcmxcvii" X = Oconv(1997000, "NR") X = "MCMXCVmm"
Conversiones Radix
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MX, MO y MB (Radix): Expresin de conversin Valor externo X = Oconv("1024", "MX") X = "400" X = Oconv("CDE", "MX0C") X = "434445"
Captulo 7. Programacin BASIC
261
X = Oconv("1024", "MO") X = "2000" X = Oconv("CDE", "MO0C") X = "103104105" X = Oconv("1024", "MB") X = "10000000000" X = Oconv("CDE", "MB0C") X = "010000110100010001000101"
Conversiones de hora
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MT (Hora): Expresin de conversin Valor externo X = Oconv(10000, "MT") X = "02:46" X = Oconv(10000, "MTHS") X = "02:46:40am" X = Oconv(10000, "MTH") X = "02:46am" X = Oconv(10000, "MT.") X = "02.46" X = Oconv(10000, "MTS") X = "02:46:40"
Sentencias On...GoSub
Transfiere el control de programa a una subrutina interna. No est disponible en las expresiones.
Sintaxis
On ndice GoSub etiqueta.sentencia1 [, etiqueta.sentencia2] ...
On ndice especifica una expresin que acta como ndice en la lista de etiquetas de sentencia. El valor de ndice determina a qu etiqueta de sentencias se mueve el control de programa. Durante la ejecucin, se evala ndice y se redondea a un entero. Si el valor es 1 o menor, se ejecuta la subrutina definida por
262
etiqueta.sentencia1. Si el valor es 2, se ejecuta la subrutina definida por etiqueta.sentencia2, y as sucesivamente. Si el valor es mayor que el nmero de subrutinas definidas, se ejecuta la ltima subrutina. Un valor nulo genera un error de tiempo de ejecucin. GoSub etiqueta.sentencia1, etiqueta.sentencia2 especifica una lista de etiquetas de sentencia a las que se puede mover el control de programa. Si una etiqueta de sentencia no existe, genera un error de compilador.
Comentarios
Utilice una sentencia Return en la subrutina para devolver el control de programa a la sentencia situada a continuacin de las sentenciasOn...GoSub. Las sentencias On...GoSub pueden escribirse en varias lneas. Finalice cada lnea con una coma, excepto la ltima.
Ejemplo
Este ejemplo utiliza On...GoSub para invocar una subrutina de un conjunto de subrutinas internas en una funcin de transformacin de IBM InfoSphere DataStage, dependiendo de un argumento entrante. La sentencia Return hace que se reanude la ejecucin en la sentencia que va inmediatamente despus de la sentencia GoSub. Es necesario utilizar GoTo tal como se muestra para que el control no fluya accidentalmente a las subrutinas internas.
Function MyTransform(Arg1, Arg2) Reply = "" ;* respuesta predeterminada * Utiliza la subrutina particular dependiendo del valor del argumento: On Arg2 GoSub BadValue, GoodValue1, GoodValue2, BadValue GoTo ExitFunction ;* se utiliza GOTO para evitar un error BadValue: Call DSTransformError("Invalid arg2 ":Arg2, MyTransform") Return ;* devuelve el control a continuacin de On...GoSub GoodValue1: Reply = Arg1 * 99 Return ;* devuelve el control a continuacin de On...GoSub GoodValue2: Reply = Arg1 / 27 Return ;* devuelve el control a continuacin de On...GoSub ExitFunction: Return(Reply)
Sentencia On...GoTo
Mueve el control de programa a la etiqueta especificada. No est disponible en las expresiones.
Sintaxis
On ndice GoTo etiqueta.sentencia1 [, etiqueta.sentencia2] ...
On ndice especifica una expresin que acta como ndice en la lista de etiquetas de sentencia. El valor de ndice determina a qu etiqueta de sentencias se mueve el control de programa. Durante la ejecucin, se evala ndice y se redondea a un entero. Si el valor es 1 o menor, se ejecuta la sentencia definida por etiqueta.sentencia1. Si el valor es 2, se ejecuta la sentencia definida por etiqueta.sentencia2, y as sucesivamente. Si el valor es mayor que el nmero de sentencias definidas, se ejecuta la ltima sentencia. Un valor nulo genera un error de tiempo de ejecucin. GoTo etiqueta.sentencia1, etiqueta.sentencia2 especifica una lista de etiquetas de sentencia a las que se puede mover el control de programa. Si una etiqueta de sentencia no existe, genera un error de compilador.
Captulo 7. Programacin BASIC
263
Comentarios
Las sentencias On...GoTo pueden escribirse en varias lneas. Finalice cada lnea con una coma, excepto la ltima.
Ejemplo
Este ejemplo utiliza On...GoTo para invocar una subrutina de un conjunto de etiquetas en una funcin de transformacin de IBM InfoSphere DataStage, dependiendo de un argumento entrante:
Function MyTransform(Arg1, Arg2) Reply = "" ;* respuesta predeterminada * GoTo a la etiqueta particular, dependiendo del valor del argumento: On Arg2 GoTo BadValue, GoodValue1, GoodValue2, BadValue * Tenga en cuenta que el control no vuelve nunca a la lnea siguiente. BadValue: Call DSTransformError("Invalid arg2 ":Arg2, MyTransform") GoTo ExitFunction GoodValue1: Reply = Arg1 * 99 GoTo ExitFunction GoodValue2: Reply = Arg1 / 27 * Descarta hasta el final de la funcin: ExitFunction: Return(Reply)
Sentencia OpenSeq
Abre un archivo para el proceso secuencial. No est disponible en las expresiones. OpenSeq
Sintaxis
OpenSeq nombreva To variable.archivo [On Error sentencias ] [Locked sentencias] [Then sentencias [Else sentencias]] [Else sentencias]
nombreva es el nombre de la va de acceso del archivo que se va a abrir. Si el archivo no existe, la sentencia OpenSeq falla. Si nombreva es un valor nulo, genera un error de tiempo de ejecucin. To variable.archivo asigna el archivo a una variable.archivo. Todas las sentencias utilizadas para procesar el archivo deben hacer referencia al mismo utilizando variable.archivo. Si variable.archivo es un valor nulo, genera un error muy grave. On Error sentencias especifica las sentencias que se ejecutan si hay un error muy grave mientras se est procesando el archivo. Se produce un error muy grave si el archivo no se puede abrir o si variable.archivo es un valor nulo. Locked sentencias especifica las sentencias que se ejecutan si el archivo est bloqueado por otro usuario. Si no especifica una clusula Locked y existe un bloqueo de conflicto, el programa espera hasta que se libere el bloqueo. Then sentencias especifica las sentencias que se ejecutan despus de abrir el archivo. Else sentencias especifica las sentencias que se ejecutan si no se puede acceder al archivo o no existe.
264
Comentarios
Cada referencia de archivo secuencial de un programa BASIC debe ir precedida de una sentencia OpenSeq aparte para el archivo. OpenSeq establece un bloqueo de registro de actualizacin en el archivo. De este modo, se impide que ningn otro programa cambie el archivo mientras se procesa. Restablezca este bloqueo utilizando una sentencia CloseSeq despus de procesar el archivo. Varias operaciones OpenSeq en el mismo archivo slo generan un bloqueo de registro de actualizacin, por lo que slo debe incluir una sentencia CloseSeq por archivo. Si se produce un error muy grave y no se ha especificado ninguna clusula On Error: v Aparece un mensaje de error. v Se retrotrae alguna transaccin no confirmada iniciada en el entorno de ejecucin actual. v Termina el programa actual. Si se utiliza la clusula On Error, el valor devuelto por la funcin Status es el nmero de error.
Ejemplo
Este es un ejemplo donde se abre un archivo secuencial para comprobar su existencia:
OpenSeq ".\ControlFiles\File1" To PathFvar Locked FilePresent = @True End Then FilePresent = @True End Else FilePresent = @False End
Sintaxis
serie Match[es] patrn
serie es la serie que se va a comparar. Si la serie es un valor nulo, la coincidencia es false y se devuelve 0. patrn es el patrn de formato y puede ser uno de los cdigos siguientes: Este cdigo... Coincide con este tipo de serie... ... 0X nX 0A nA 0N nN Cero o ms caracteres de cualquier tipo. Cero o ms caracteres de cualquier tipo. n caracteres de cualquier tipo. Cero o ms caracteres alfabticos. n caracteres alfabticos. Cero o ms caracteres numricos. n caracteres numricos.
265
Comentarios
Puede especificar una coincidencia negativa aadiendo ~ (tilde) delante del cdigo. Por ejemplo, ~ 4A coincide con una serie que no contiene cuatro caracteres alfabticos. Si n tiene ms de nueve dgitos, se utiliza como serie literal. Si la serie coincide con el patrn, la comparacin devuelve 1; de lo contrario, devuelve 0. Puede especificar varios patrones separndolos con marcas de valor. Por ejemplo, la expresin siguiente es verdadera si la direccin tiene 16 caracteres alfabticos o 4 caracteres numricos seguidos de 12 caracteres alfabticos; de lo contrario, es falsa:
address Matches "16A": CHAR(253): "4N12A"
Una serie vaca coincide con los patrones siguientes: "0A", "0X", "0N", "...", "", '' o \\.
Funcin Pwr
Eleva el valor de un nmero a la potencia especificada.
Sintaxis
Pwr (nmero, potencia)
nmero es una expresin que se evala en el nmero que se va a elevar a la potencia. Si el nmero es un valor nulo, se devuelve un nulo. potencia especifica la potencia a la que se eleva el nmero. Si la potencia es un valor nulo, se devuelve el valor nulo. Si la potencia no es un entero, nmero no puede ser negativo.
Comentarios
En el caso de un desbordamiento o subdesbordamiento, se imprime un aviso y se devuelve 0.
Ejemplo
Este es un ejemplo del uso de la funcin Pwr:
OppSide = Sqrt(Pwr(Side1, 2) + Pwr(Side2, 2))
Sentencia Randomize
Genera una secuencia repetible de nmeros aleatorios en un rango especificado. No est disponible en las expresiones.
Sintaxis
Randomize (expresin)
expresin se evala como un nmero, n. El rango en el que se selecciona el nmero aleatorio es de 0 a (n -1). Por ejemplo, si n es 100, el nmero aleatorio est en el rango del 0 al 99. Si no se indica ninguna expresin o si la expresin es un valor nulo, se utiliza la hora del da interna y la secuencia es distinta cada vez que se ejecuta el programa.
266
Comentarios
Utilice la funcin Rnd en lugar de Randomize si desea generar una secuencia de nmeros aleatorios no repetible.
Ejemplo
Este es un ejemplo de cmo una rutina puede utilizar la sentencia Randomize para establecer la semilla inicial para que la funcin Rnd genere un conjunto especfico de nmeros aleatorios:
Randomize 1 For n = 1 To NumRecords * Produce series como "ID00", "ID01", "ID57", etc. RandomId = "ID" : Fmt(Rnd(100), "R%2") * ... realizar alguna accin con los ID generados. Next n
ReadSeq
Lee una lnea de datos en un archivo abierto para el proceso secuencial. No est disponible en las expresiones.
Sintaxis
ReadSeq variable From variable.archivo[On Error sentencias] {[Then sentencias [Else sentencias ] | [Else sentencias ]}
ReadSeq variable lee los datos desde la posicin actual en el archivo hasta una lnea nueva y los asignan a variable. From variable.archivo identifica el archivo que se va a leer. variable.archivo debe haberse asignado en una sentencia OpenSeq anterior. Si variable.archivo es un valor nulo, o si el archivo no se encuentra o no est abierto, genera un error de tiempo de ejecucin. On Error sentencias especifica las sentencias que se ejecutan si hay un error muy grave mientras se est procesando el archivo. Se produce un error muy grave si el archivo no se puede abrir o si variable.archivo es un valor nulo. Then sentencias especifica las sentencias que se ejecutan despus de leer la lnea del archivo. Else sentencias especifica las sentencias que se ejecutan si no se puede leer el archivo o si se encuentra el fin del archivo.
Comentarios
La sentencia OpenSeq establece un puntero a la primera lnea del archivo. A continuacin, ReadSeq: 1. Lee los datos desde la posicin actual en el archivo hasta una lnea nueva. a. Asigna los datos a una variable. b. Restablece el puntero a la posicin que se encuentra a continuacin de la lnea nueva. c. Descarta la nueva lnea. Si la conexin entre el cliente y el sistema donde reside la capa de motor excede el tiempo de espera, ReadSeq no devuelve ningn byte del almacenamiento intermedio y se debe volver a intentar la operacin.
Captulo 7. Programacin BASIC
267
La funcin Status devuelve los valores siguientes tras una operacin de ReadSeq: 0 1 2 -1 La lectura ha sido satisfactoria. Se ha encontrado un fin del archivo. Se ha excedido el tiempo de espera de la conexin. El archivo no estaba abierto.
Los dems valores son un nmero de error que indica que se ha utilizado la clusula On Error. Si se produce un error muy grave y no se ha especificado la clusula On Error: v Aparece un mensaje de error. v Se retrotrae alguna transaccin no confirmada iniciada en el entorno de ejecucin actual. v Termina el programa actual.
Ejemplo
El siguiente ejemplo muestra la ReadSeq que se utiliza para procesar cada lnea de un archivo secuencial:
OpenSeq PathName To FileVar Else Call DSLogWarn("Cannot open ":PathName, MyRoutine) GoTo ErrorExit End Loop ReadSeq FileLine From FileVar On Error Call DSLogWarn("Error from ":PathName: " status=":Status(), "MyRoutine") GoTo ErrorExit End THEN * ... se procesa la lnea que acabamos de leer End Else Exit ;* al final del archivo End Repeat CloseSeq FileVar
Funcin REAL
Utilice la funcin REAL para convertir nmero en un nmero de coma flotante sin prdida de precisin. Si nmero se evala como valor nulo, se devuelve el valor nulo.
Sintaxis
REAL (nmero)
Sentencia Return
Finaliza una subrutina y devuelve el control al programa o la sentencia de llamada. No est disponible en las expresiones.
Sintaxis
Return [To etiqueta.sentencia]
To etiqueta.sentencia se utiliza con una subrutina interna iniciada con GoSub para especificar que el control de programa vuelve a la etiqueta de sentencia especificada. Si no hay ninguna clusula To, el control vuelve a la sentencia que hay despus de la sentencia GoSub. Si la etiqueta.sentencia no existe, genera un error de compilador.
268
Comentarios
Cuando una sentencia Return finaliza una subrutina externa llamada con una sentencia Call, todos los archivos abiertos por la subrutina se cierran, excepto los archivos abiertos para variables comunes.
Sintaxis
Return (expresin)
El valor de expresin se evala como el valor que desea que devuelva la funcin escrita por el usuario. Si no especifica una expresin, se devuelve una serie vaca.
Comentarios
Puede utilizar la sentencia Return (valor) nicamente en las funciones escritas por el usuario. Si la emplea en un programa o una subrutina, genera un error.
Ejemplo
Este ejemplo muestra el uso de la sentencia Return (valor), donde las sentencias Function y Deffun se utilizan para invocar una transformacin denominada "MyFunctionB" desde otra funcin de transformacin denominada "MyFunctionA":
Function MyFunctionA(Arg1) * Cuando hace referencia a una funcin escrita por el usuario que se mantiene en el * repositorio de DataStage, debe declararla como una funcin con el * nmero correcto de argumentos y aadirle un prefijo "DSU.". Deffun MyFunctionB(A) Calling "DSU.MyFunctionB" Ans = MyFunctionB(Arg1) * Aada su propia transformacin al valor en Ans... ... Return(Ans)
Funcin Right
Extrae una subserie del final de una serie.
Sintaxis
Right (serie, n)
serie es la serie que contiene la subserie. Si serie es un valor nulo, se devuelve el valor nulo. n es el nmero de caracteres que se extraen del final de la serie. Si n es un valor nulo, genera un error de tiempo de ejecucin.
Ejemplos
Estos ejemplos extraen los tres caracteres ms a la derecha de una serie:
MyString = "ABCDEF" MySubStr = Right(MyString, 3) ;* la respuesta es "DEF" MySubStr = Right("AB", 3) ;* la respuesta es "AB"
269
Funcin Rnd
Genera un nmero aleatorio. No est disponible en las expresiones.
Sintaxis
Rnd (expresin)
expresin se evala como un nmero, n. El rango en el que se selecciona el nmero aleatorio es de 0 a (n -1). Por ejemplo, si n es 100, el nmero aleatorio est en el rango del 0 al 99. Si la expresin es un nmero negativo, se genera un nmero negativo aleatorio. Si la expresin es 0, se devuelve 0. Si la expresin es un valor nulo, genera un error de tiempo de ejecucin.
Comentarios
Para generar secuencias repetibles de nmeros aleatorios, utilice la sentencia Randomize en lugar de Rnd.
Ejemplo
Este es un ejemplo de cmo una rutina puede utilizar la sentencia Randomize para establecer la semilla inicial para que la funcin Rnd genere un conjunto especfico de nmeros aleatorios:
Randomize 1 For n = 1 To NumRecords * Produce series como "ID00", "ID01", "ID57", etc. RandomId = "ID" : Fmt(Rnd(100), "R%2") * ... realizar alguna accin con los ID generados. Next n
Funcin Seq
Convierte un carcter ASCII en su valor de cdigo numrico.
Sintaxis
Seq (carcter)
carcter es el carcter ASCII que se va a convertir. Si carcter es un valor nulo, se devuelve un nulo.
Comentarios
La funcin Seq es la inversa de la funcin Char.
Ejemplo
Este ejemplo utiliza la funcin Seq para devolver el nmero asociado con el primer carcter de una serie:
MyVal = Seq("A") ;* devuelve 65 MyVal = Seq("a") ;* devuelve 97 MyVal = Seq(" 12") ;* devuelve 32 - el primer carcter es un espacio MyVal = Seq("12") ;* devuelve 49 - el primer carcter es el dgito "1"
SetLocale
En la modalidad de soporte multilingstico, establece un entorno local para una determinada categora.
270
Sintaxis
$Include UNIVERSE.INCLUDE UVNLSLOC.Hnombre = SetLocale (categora, valor)
UVLC$TIME Hora y fecha UVLC$NUMERIC Numrico UVLC$MONETARY Moneda UVLC$CTYPE Tipo de carcter UVLC$COLLATE Secuencia de ordenacin valor es un nombre de entorno local.
Comentarios
El xito de la funcin SetLocale debe probarse con la funcin Status, que devuelve uno de los siguientes valores: Valor 0 Significado La llamada es satisfactoria.
LCE$NOLOCALES El soporte multilingstico no est habilitado para IBM InfoSphere DataStage. LCE$BAD.LOCALE valor no es un nombre de entorno local vlido. LCE$BAD.CATEGORY No se reconoce la categora especificada.
Ejemplo
* Switch local time convention to Japanese SetLocale (UVLC$TIME, "JP-JAPANESE") If Status() <> 0 Then ... End
Sentencia Sleep
Detiene un programa el nmero de segundos especificado. No est disponible en las expresiones.
Sintaxis
Sleep [segundos]
segundos es el nmero de segundos que se detiene. Si no se especifica segundos o es un valor nulo, se utiliza el valor 1.
Captulo 7. Programacin BASIC
271
Comentarios
No utilice la sentencia Sleep en una transformacin, ya que ralentizar la ejecucin del trabajo de IBM InfoSphere DataStage.
Ejemplo
Este ejemplo muestra la rutina Sleep que se invoca desde una rutina anterior/posterior de InfoSphere DataStage para sondear la existencia de un recurso, con un breve intervalo de espera entre los sondeos:
If NumTimesWaited < RepeatCount Then NumTimesWaited += 1 Sleep 60 ;* 60 segundos = 1 minuto End
Funcin Soundex
Genera cdigos que pueden utilizarse para comparar series de caracteres basndose en cmo suenan.
Sintaxis
Soundex (serie)
serie es la serie que se va a analizar. Slo se tienen en cuenta los caracteres alfabticos de la serie. Si serie es un valor nulo, se devuelve el valor nulo.
Comentarios
La funcin Soundex devuelve un cdigo fontico formado por la primera letra de la serie seguida de un nmero. Las palabras que suenan igual, por ejemplo, rayar y rallar, generan el mismo cdigo fontico.
Ejemplo
Los siguientes ejemplos muestran los valores de Soundex para varias series:
MySnd = Soundex("Greenwood") ;* devuelve "G653" MySnd = Soundex("Greenwod") ;* devuelve "G653" MySnd = Soundex("Green") ;* devuelve "G650" MySnd = Soundex("") ;* devuelve ""
Funcin Space
Devuelve una serie que contiene el nmero especificado de espacios en blanco.
Sintaxis
Space (espacios)
espacios especifica el nmero de espacios de la serie. Si espacios es un valor nulo, genera un error de tiempo de ejecucin.
Ejemplo
Este es un ejemplo de la funcin Space que se utiliza para generar una serie con un nmero variable de espacios:
272
Funcin Sqrt
Devuelve la raz cuadrada de un nmero.
Sintaxis
Sqrt (nmero)
nmero es 0 o un nmero positivo. Un nmero negativo genera un error de tiempo de ejecucin. Si el nmero es un valor nulo, se devuelve un nulo.
Ejemplo
Este es un ejemplo del uso de la funcin Sqrt:
OppSide = Sqrt(Side1 ^ 2 + Side2 ^ 2)
Funcin SQuote
Delimita una serie mediante comillas simples.
Sintaxis
SQuote (serie)
serie es la serie que se escribir entre comillas. Si serie es un valor nulo, se devuelve un valor nulo sin comillas.
Ejemplo
Este es un ejemplo de la funcin SQuote que aade caracteres de comilla simple (') al principio y al final de una serie:
ProductNo = 12345 QuotedStr = SQuote(ProductNo : "A") * el resultado es "12345A"
Funcin Status
Devuelve un cdigo que proporciona informacin sobre cmo se ha ejecutado la funcin anterior.
Sintaxis
Status ( )
Comentarios
El valor devuelto por Status vara segn la funcin que notifique. En las descripcin de las funciones se incluye una lista de los valores posibles. Puede utilizar Status despus de las siguientes funciones: v Fmt v Iconv v Oconv v OpenSeq
Captulo 7. Programacin BASIC
273
Ejemplos
A continuacin, se proporciona un ejemplo de cmo se utiliza la funcin Status para comprobar la operacin correcta de una llamada a la funcin Iconv:
InDate = Iconv(ExtDate, "D2") ;* convertir la fecha al formato interno ConvStatus = Status() Begin Case Case ConvStatus = 0 * ... la conversin ha sido satisfactoria Case ConvStatus = 1 * ... la conversin ha fallado - ExtDate no se puede analizar como fecha Case ConvStatus = 2 * ... la conversin ha fallado - la conversin "D2" no es vlida (poco probable) Case ConvStatus = 3 * ... la conversin ha sido satisfactoria, pero puede que ExtDate no sea * vlida, por ejemplo, si contiene la serie "31/02/97" End Case
A continuacin, se proporciona un ejemplo de cmo se utiliza la funcin Status para comprobar la operacin correcta de una llamada a la funcin Fmt:
FormattedNum = Fmt(IntNum, "R2$") ;* formatear un nmero FmtStatus = Status() Begin Case Case FmtStatus = 0 * ... el formateo ha sido satisfactorio Case FmtStatus = 1 * ... el formateo ha fallado - IntNum no se puede convertir en un nmero Case FmtStatus = 2 * ... el formateo ha fallado - el formato "R2$" no es vlido (poco probable) End Case
Funcin Str
Forma una serie repitiendo la serie de entrada el nmero de veces especificado.
Sintaxis
Str (serie, repeticin)
serie es la serie que se repetir. Si serie es un valor nulo, se devuelve el valor nulo. repeticin es el nmero de veces que se repite la serie. Si repeticin es un nmero negativo, se devuelve una serie vaca. Si repeticin es un valor nulo, genera un error de tiempo de ejecucin.
Ejemplo
Este es un ejemplo de la funcin Str que se utiliza para generar una serie con un nmero variable de espacios:
MyStr = Str("A", 20 - Len(Arg1)):Arg1 * se rellena con varias "A" a la izquierda
274
Sentencia Subroutine
Marca el inicio de una subrutina externa. No est disponible en las expresiones.
Sintaxis
Subroutine [nombre] ( argumento1[ ,argumento2 ]... )
nombre es un nombre que identifica la subrutina de forma que permite leer el programa ms fcilmente. argumento1 y argumento2 son los nombres de las variables que se utilizan para pasar argumentos entre el programa de llamada y la subrutina. Una subrutina utilizada en una transformacin debe tener uno o varios argumentos; una subrutina anterior o una subrutina posterior debe contener dos argumentos.
Comentarios
La sentencia Subroutine debe ser la primera lnea no comentada de la subrutina. Cada subrutina puede contener una sola sentencia Subroutine. La sentencia Call que invoca la subrutina debe especificar el mismo nmero de argumentos que la sentencia Subroutine.
Ejemplo
Este ejemplo muestra cmo una rutina anterior/posterior debe declararse como una subrutina. El cliente del Diseador lo comprobar automticamente cuando cree una nueva rutina anterior/posterior.
Subroutine MyRoutine(InputArg, ErrorCode) * Los usuarios pueden especificar el valor de serie que deseen cuando utilizan * MyRoutine desde el Diseador de trabajos. Aparecer * en la variable denominada InputArg. * La rutina controla el progreso del trabajo estableciendo * el valor de ErrorCode, que es un argumento de salida. * Un valor distinto de cero detendr la etapa o el trabajo. ErrorCode = 0 ;* respuesta predeterminada * Realice algn proceso... ... Return
Funcin Time
Devuelve la hora interna del sistema.
Sintaxis
Time ( )
Comentarios
La hora interna se obtiene del sistema en el que reside la capa de motor y se devuelve como el nmero de segundos transcurridos desde la medianoche hasta la milsima ms prxima de un segundo.
Ejemplo
Este es un ejemplo de la hora del reloj del sistema actual que se asigna a una variable:
TimeInSecs = Int(Time()) ;* elimina las partes fraccionarias
275
Funcin TimeDate
Devuelve la hora y la fecha del sistema. Si el soporte multilingstico est habilitado, el resultado de esta funcin depende del valor de entorno local actual del convenio Time.
Sintaxis
TimeDate ( )
Comentarios
La hora y la fecha se devuelven con el siguiente formato: hh:mm:ss dd mmm aaaa hh son las horas (basadas en el reloj de 24 horas). mm son los minutos. ss son los segundos. dd es el da. mmm es una abreviatura de tres letras para el mes. aaaa es el ao.
Ejemplo
Este es un ejemplo de cmo un formato legible por las personas de la fecha y la hora del sistema actual puede asignarse a una variable y manipularse:
NowStr = TimeDate() ;* por ej. "09:59:51 03 JUN 1997" * extraer slo la hora NowTimeStr = Field(NowStr, " ", 1, 1) * extraer el resto como la fecha NowDateStr = Field(NowStr, " ", 2, 3)
Funciones trigonomtricas
Las funciones trigonomtricas devuelven el valor trigonomtrico especificado por la funcin. Todas tienen una sintaxis parecida.
Sintaxis general
TrigFunc (nmero)
TrigFunc es una de las funciones trigonomtricas: Cos, Sin, Tan, ACos, ASin, ATan, CosH, TanH o SinH. nmero es el nmero o la expresin que desea evaluar. Si el nmero es un valor nulo, se devuelve un valor nulo. Si el nmero es un ngulo, los valores fuera del rango del 0 al 360 se interpretan como el mdulo 360. Los valores superiores a 1E17 generan un mensaje de aviso, y se devuelve 0.
276
Comentarios
Cos devuelve el coseno de un ngulo. nmero es el nmero de grados del ngulo. Cos es el inverso de ACos. Sin devuelve el seno de un ngulo. nmero es el nmero de grados del ngulo. Sin es el inverso de ASin. Tan devuelve la tangente de un ngulo. nmero es el nmero de grados del ngulo. Tan es el inverso de ATan. ACos devuelve el arcocoseno de nmero en grados. ACos es el inverso de Cos. ASin devuelve el arcoseno de nmero en grados. ASin es el inverso de Sin. ATan devuelve la arcotangente de nmero en grados. ATan es el inverso de Tan. CosH devuelve el coseno hiperblico de un ngulo. nmero es el nmero de grados del ngulo. SinH devuelve el seno hiperblico de un ngulo. nmero es el nmero de grados del ngulo. TanH devuelve la tangente hiperblica de un ngulo. nmero es el nmero de grados del ngulo.
Ejemplos
Este ejemplo muestra que la funcin ACos es la inversa de la funcin Cos:
Angle = 45 NewAngle = Acos(Cos(Angle)) ;* NewAngle debe ser 45 tambin
Este ejemplo utiliza la funcin CosH para calcular la secante hiperblica de un ngulo:
Angle = 45 HSecant = 1 / Cosh(Angle) ;* define el ngulo en grados ;* calcula la secante hiperblica
Este ejemplo utiliza la funcin SinH para calcular la cosecante hiperblica de un ngulo:
Angle = 45 ;* define el ngulo en grados HCoSecant = 1 / Sinh(Angle) * calcula la cosecante hiperblica
277
Este ejemplo utiliza la funcin TanH para calcular la cotangente hiperblica de un ngulo:
Angle = 45 ;* define el ngulo en grados HCoTangent = 1 / Tanh(Angle) * calcula la cotangente hiperblica
Funcin Trim
Recorta los caracteres no deseados de una serie.
Sintaxis
Trim (serie) Trim (serie, carcter [ ,opcin] )
serie es una serie que contiene caracteres no deseados. Si serie es un valor nulo, se devuelve el valor nulo. carcter especifica el carcter que se va a recortar (que no sea un espacio o una tabulacin). Si el carcter es un valor nulo, genera un error de tiempo de ejecucin. opcin especifica el tipo de operacin de recorte, y puede ser uno de los valores siguientes: L Elimina las apariciones iniciales del carcter. T Elimina las apariciones finales del carcter. B Elimina las apariciones iniciales y finales del carcter. R Elimina las apariciones iniciales y finales del carcter y reduce las apariciones a una sola aparicin. A Elimina todas las apariciones del carcter. F Elimina las tabulaciones y los espacios en blanco iniciales. E Elimina las tabulaciones y los espacios en blanco finales. D Elimina las tabulaciones y los espacios en blanco iniciales y finales y reduce los espacios y las tabulaciones a solo un espacio y una tabulacin. Si no se especifica la opcin o es un valor nulo, se supone que es R.
Comentarios
En la primera sintaxis, varias apariciones de espacios y tabulaciones se reducen a una individual, y se elimina la totalidad de tabulaciones y espacios iniciales y finales.
Ejemplos
A continuacin, se muestran algunos ejemplos de varias formas de la funcin Trim:
MyStr = Trim(" String with whitespace ") * ...devuelve "String with whitespace" MyStr = Trim("..Remove..redundant..dots....", ".") * ...devuelve "Remove.redundant.dots" MyStr = Trim("Remove..all..dots....", ".", "A") * ...devuelve "Removealldots" MyStr = Trim("Remove..trailing..dots....", ".", "T") * ...devuelve "Remove..trailing..dots"
278
Funcin TrimB
Recorta los espacios finales de una serie.
Sintaxis
TrimB (serie)
serie es la serie que contiene los espacios finales. Si serie es un valor nulo, se devuelve el valor nulo.
Ejemplo
MyStr = TrimB(" String with whitespace ") * ...devuelve "(" String with whitespace"
Funcin TrimF
Recorta las tabulaciones y los espacios iniciales de una serie.
Sintaxis
TrimF (serie)
serie es la serie que contiene los espacios iniciales. Si serie es un valor nulo, se devuelve el valor nulo.
Ejemplo
MyStr = TrimF(" String with whitespace * ...devuelve "String with whitespace" ")
Funcin UniChar
En la modalidad de soporte multilingstico, genera un carcter individual en formato Unicode.
Sintaxis
UniChar (expresin)
Comentarios
Si expresin tiene un valor fuera del rango especificado, UniChar devuelve una serie vaca. Si expresin un nulo SQL, se devuelve un nulo SQL.
Funcin UniSeq
En la modalidad de soporte multilingstico, convierte un carcter Unicode en su valor decimal equivalente.
Sintaxis
UniSeq (expresin)
279
Comentarios
Comprese con la funcin Seq, que convierte caracteres ASCII en sus equivalentes decimales.
Funcin UpCase
Cambia las letras minsculas de una serie a maysculas. Si el soporte multilingstico est habilitado, el resultado de esta funcin depende del valor de entorno local actual del convenio Ctype.
Sintaxis
UpCase (serie)
Ejemplo
Este es un ejemplo de la funcin UpCase:
MixedCase = "ABC123abc" UpperCase = UpCase(MyString) ;* el resultado es "ABC123ABC"
Funcin WEOFSeq
Graba una marca de fin del archivo en un archivo secuencial abierto.
Sintaxis
WEOFSeq variable.archivo [On Error sentencias ]
variable.archivo especifica el archivo secuencial. variable.archivo es el nombre de variable asignado al archivo por la sentencia OpenSeq anterior. On Error sentencias especifica la accin que se realiza si se produce un error muy grave. Se produce un error muy grave si el archivo no se abre o si variable.archivo es un valor nulo. Si no especifica una clusula On Error, el trabajo termina anormalmente y se graba un error en el archivo de registro del trabajo.
Comentarios
La marca de fin del archivo trunca el archivo en la posicin actual del puntero. Una sentencia ReadSeq posterior utilizar la clusula Else.
Ejemplo
El siguiente ejemplo abre un archivo secuencial y lo trunca grabando inmediatamente una marca de fin del archivo:
OpenSeq PathName To FileVar Then WeofSeq FileVar End Else Call DSLogFatal("Cannot open file ":Pathname,"Routine1") GoTo ErrorExit End
280
Funcin WriteSeq
Escribe una nueva lnea en un archivo que est abierto para el proceso secuencial y avanza un puntero a la siguiente posicin en el archivo.
Sintaxis
WriteSeq lnea To variable.archivo [On Error sentencias] {[Then sentencias [Else sentencias ] | [Else sentencias ]}
lnea es la lnea que se graba en el archivo secuencial. WriteSeq graba una lnea nueva al final de la lnea. To variable.archivo especifica el archivo secuencial. variable.archivo es el nombre de variable asignado al archivo por la sentencia OpenSeq anterior. On Error sentencias especifica la accin que se realiza si se produce un error muy grave. Se produce un error muy grave si el archivo no se abre o si variable.archivo es un valor nulo. Si no especifica una clusula On Error, el trabajo termina anormalmente y se graba un mensaje de error en el archivo de registro del trabajo. Then sentencias especifica la accin que realiza el programa despus de que se grabe una lnea en el archivo. Si no especifica una clusula Then, debe especificar una clusula Else. Else sentencias especifica la accin que realiza el programa si la lnea no se puede grabar en el archivo, por ejemplo, si el archivo no existe. Si no especifica una clusula Else, debe especificar una clusula Then.
Comentarios
La lnea se graba en la posicin actual dentro del archivo y, a continuacin, el puntero se avanza a la siguiente posicin despus de la lnea nueva. Los datos existentes en el archivo se sobrescriben, a menos que el puntero est al final del archivo. Puede utilizar la funcin Status despus de WriteSeq para determinar si la operacin ha sido satisfactoria. Status devuelve 0 si el archivo estaba bloqueado, -2 si el archivo no estaba bloqueado y un cdigo de error si se ha tomado la clusula On Error.
Ejemplo
El siguiente ejemplo graba una lnea individual en un archivo secuencial truncndolo y grabando en l inmediatamente despus de abrirlo:
OpenSeq PathName To FileVar Then WeofSeq FileVar ;* write end-of-file mark immediately WriteSeq "First line" To FileVar Else On Error Call DSLogWarn("Error from ":PathName:" status=":Status(), "MyRoutine") GoTo ErrorExit End Call DSLogFatal("Cannot write to ":Pathname, "MyRoutine") GoTo ErrorExit End
281
End Else Call DSLogFatal("Cannot open file ":Pathname, "MyRoutine") GoTo ErrorExit End
Funcin WriteSeqF
Escribe una nueva lnea en un archivo que est abierto para el proceso secuencial, avanza un puntero a la siguiente posicin en el archivo y guarda el archivo en un disco.
Sintaxis
WriteSeqF lnea To variable.archivo [On Error sentencias] {[Then sentencias [Else sentencias]] | [Else sentencias]}
lnea es la lnea que se graba en el archivo secuencial. WriteSeqF graba una lnea nueva al final de la lnea. To variable.archivo especifica el archivo secuencial. variable.archivo es el nombre de variable asignado al archivo por la sentencia OpenSeq anterior. On Error sentencias especifica la accin que se realiza si se produce un error muy grave. Se produce un error muy grave si el archivo no se abre o si variable.archivo es un valor nulo. Si no especifica una clusula On Error, el trabajo termina anormalmente y se graba un mensaje de error en el archivo de registro del trabajo. Then sentencias especifica la accin que realiza el programa despus de que se grabe una lnea en el archivo. Si no especifica una clusula Then, debe especificar una clusula Else. Else sentencias especifica la accin que realiza el programa si la lnea no se puede grabar en el archivo, por ejemplo, si el archivo no existe. Si no especifica una clusula Else, debe especificar una clusula Then.
Comentarios
WriteSeqF trabaja de la misma forma que WriteSeq, excepto que cada lnea se graba directamente en el disco, en lugar de guardarse en el almacenamiento intermedio y grabarse luego por lotes. Una sentencia WriteSeqF despus de varias sentencias WriteSeq graba todas las lneas del almacenamiento intermedio en el disco. Nota: Utilice la sentencia WriteSeqF slo para registrar operaciones, ya que un aumento de la E/S de disco disminuye el rendimiento del programa. Puede utilizar la funcin Status despus de WriteSeqF para determinar si la operacin ha sido satisfactoria. Status devuelve 0 si el archivo estaba bloqueado, -2 si el archivo no estaba bloqueado y un cdigo de error si se ha tomado la clusula On Error.
Ejemplo
El siguiente ejemplo se aade a un archivo secuencial al leer hasta el final del mismo e imponer la grabacin de una lnea ms:
OpenSeq PathName To FileVar Then Loop ReadSeq Dummy From FileVar Else Exit ;* en el fin del archivo Repeat
282
WriteSeqF "Extra line" To FileVar Else On Error Call DSLogWarn("Error from ":PathName:" status=":Status(), "MyRoutine") GoTo ErrorExit End Call DSLogFatal("Cannot write to ":Pathname, "MyRoutine") GoTo ErrorExit End End Else Call DSLogFatal("Cannot open file ":Pathname, "MyRoutine") GoTo ErrorExit End
Funcin Xtd
Convierte una serie hexadecimal a decimal.
Sintaxis
Xtd (serie)
Ejemplo
Este es un ejemplo de la funcin Xtd que se utiliza para convertir un nmero decimal en una representacin de serie hexadecimal:
MyHex = "2F" MyNumber = Xtd(MyHex) ;* devuelve 47
Cdigos de conversin
Los cdigos de conversin especifican cmo se formatean los datos para la salida o el almacenamiento interno. Se especifican en una funcin Iconv o Oconv. A continuacin, se proporciona una lista de los cdigos que puede utilizar.
283
Conversiones Radix:
MX Conversin de nmeros hexadecimales en decimales MCD Conversin de nmeros decimales en hexadecimales MCX Conversin de nmeros hexadecimales en decimales MO Conversin de nmeros octales en decimales MB Conversin de nmeros binarios en decimales MY Conversin de nmeros hexadecimales en sus equivalentes ASCII MUOC Conversin de nmeros hexadecimales en valores de caracteres Unicode Los cdigos de conversin se describen ms detalladamente en las siguientes pginas de referencia. Los cdigos de conversin aparecen en orden alfabtico.
D
Convierte fechas en formato de almacenamiento y viceversa. Cuando el soporte multilingstico est habilitado, el formato de fecha predeterminado del entorno local altera temporalmente el formato de fecha predeterminado establecido en el archivo msg.text.
Sintaxis
D [aos.dgitos] [delimitador omisin] [separador] [formato.opciones [ modificadores ] ] [ E ] [ L ]
aos.dgitos indica el nmero de dgitos del ao que aparecern en la salida. El valor predeterminado es 4. En la entradaaos.dgitos se ignora. Si la fecha de entrada no tiene ningn ao, el ao se obtiene de la fecha del sistema. delimitador es un carcter no numrico individual que se utiliza como delimitador de campo si la conversin primero debe realizar una extraccin de grupo para obtener la fecha interna. No puede ser el delimitador del sistema. omisin debe acompaar el uso de delimitador y es el nmero de campos delimitados que se omitirn para extraer la fecha. separador es el carcter que se utiliza para separar el da, el mes y el ao en la salida. Si no especifica separador, la fecha se convierte al formato 01 DEC 1999. En la entrada, separador se ignora. Si el soporte multilingstico est habilitado y no especifica aos.dgitos ni separador, el formato de fecha predeterminado es 01 DEC 1999. formato.opciones est formado por hasta seis opciones que definen cmo se genera la fecha en la salida (se ignoran en la entrada). Cada opcin de formato puede tener un modificador asociado que se describe ms adelante. Las opciones de formato slo pueden utilizarse en determinadas combinaciones, tal como se describe a continuacin. Las opciones son las siguientes: v Y [ n ] genera el nmero de aos en la salida como n dgitos.
284
v YA genera slo el nombre del ao del calendario chino en la salida. Si el soporte multilingstico est habilitado, utiliza el campo YEARS del entorno local Hora/Fecha. v M genera slo el mes como un nmero del 1 al 12 en la salida. v MA genera slo el nombre del mes en la salida. Si el soporte multilingstico est habilitado, utiliza el campo MONS del entorno local Hora/Fecha. Puede utilizar cualquier combinacin de letras maysculas y minsculas para el mes; IBM InfoSphere DataStage coteja la combinacin con el campo ABMONS. Sino, el campo MONS. v MB genera el nombre del mes abreviado en la salida. Si el soporte multilingstico est habilitado, utiliza el campo ABMONS del entorno local Hora/Fecha; de lo contrario, utiliza los tres primeros caracteres del nombre del mes. v MR genera el nmero de mes en nmeros romanos en la salida. v D genera el da del mes como un nmero del 1 al 31 en la salida. v W genera el da de la semana como un nmero del 1 al 7 en la salida, siendo lunes el da 1. Si el soporte multilingstico est habilitado, utiliza el campo DAYS del entorno local Hora/Fecha, siendo domingo el da 1. v WA genera el da por nombre en la salida. Si el soporte multilingstico est habilitado, utiliza el campo DAYS del entorno local Hora/Fecha, salvo que lo modifiquen los modificadores de formato, f1, f2, etc. v WB genera el nombre del da abreviado en la salida. Si el soporte multilingstico est habilitado, utiliza el campo ABDAYS del entorno local Hora/Fecha. v Q genera el trimestre del ao como un nmero del 1 al 4 en la salida. v J genera el da del ao como un nmero del 1 al 366 en la salida. v N genera el nmero de ao de la era actual en la salida. Si el soporte multilingstico est habilitado, utiliza el campo ERA STARTS del entorno local Hora/Fecha. v NA genera el nombre de la era correspondiente al ao actual en la salida. Si el soporte multilingstico est habilitado, utiliza los campos ERA NAMES o ERA STARTS del entorno local Hora/Fecha. v Z genera el nombre del huso horario en la salida. A continuacin, se muestra qu opciones de formato pueden utilizarse juntas: Utilice esta opcin... Con estas opciones... S YA L MA MB D N N/D W WA WB Q J Z Y, [modificadores] [modificadores]
Captulo 7. Programacin BASIC
M, MA, D, J, [modificadores] M, MA, D, [modificadores] Y, YA, D, [modificadores] Y, YA, D, [modificadores] Y, YA, D, [modificadores] Y, M, [modificadores] Y, M, MA, MB, D, WA, [modificadores] Y, M, MA, MB, D, WA, [modificadores] Y, YA, M, MA, D Y, YA, M, MA, D Y, YA, M, MA, D
285
Los [ modificadores ] modifican los formatos de salida de los datos especificados por opciones.formato. Puede especificar hasta seis modificadores, separados por comas. Las comas indican con qu opcin.formato est asociado cada modificador; por lo tanto, debe incluir todas las comas, aunque slo desee especificar un modificador (vea los ejemplos). Pueden ser los siguientes valores: v n muestra n caracteres. Se utiliza con las opciones numricas D, M, Y, W, Q y J. Se utiliza con las opciones de texto MA, MB, WA, WB, YA, N y "text". v A[n] muestra el mes como n caracteres alfabticos. Se utiliza con las opciones Y, M, W y N. v Z[n] suprime los ceros iniciales y aparece como n dgitos. Funciona como n con las opciones numricas. v E conmuta los formatos de fecha da/mes/ao y mes/da/ao. v L muestra los nombres de mes y da en minsculas. El valor predeterminado es en maysculas.
Ejemplos
Los siguientes ejemplos muestran el efecto de varios cdigos de conversin D con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("31 DEC 1967", "D") X = 0 X = Iconv("27 MAY 97", "D2") X = 10740 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[,A3,2]") X = 10740 X = Iconv("5/27/97", "D/MDY[Z,Z,2]") X = 10740 X = Iconv("27 MAY 1997", "D DMY[,A,]") X = 10740 X = Iconv("97 05 27", "DYMD[2,2,2]") X = 10740 Los siguientes ejemplos muestran el efecto de varios cdigos de conversin D con la funcin Oconv: Expresin de conversin Valor externo X = Oconv(0, "D") X = "31 DEC 1967"
286
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" 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"
G
Extrae uno o varios valores delimitados de un campo. G
Sintaxis
G [ omisin ] campos de delimitador
El valor de omisin indica el nmero de campos que se omitirn; si no se especifica, se supone que es 0 y no se omite ningn campo. delimitador es un carcter no numrico que se utiliza como separador de campos. No debe utilizar las variables del sistema @IM, @FM, @VM, @ SM y @TM como delimitadores. campos es el nmero de valores contiguos que se van a extraer.
Captulo 7. Programacin BASIC
287
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin G con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("27.05.1997", "G1.2") X = "05.1997" X = Iconv("27.05.1997", "G.2") X = "27.05" Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin G con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("27.05.1997", "G1.2") X = "05.1997" X = Oconv("27.05.1997", "G.2") X = "27.05"
L
Extrae datos que cumplen unos criterios de longitud.
Sintaxis
L [ n [ ,m ] ]
n por s solo es el nmero mximo de caracteres que deben contener los datos para poder devolverse. Si contiene ms de n caracteres, se devuelve una serie vaca. Si no especifica n, o si n es 0, se devuelve la longitud de los datos. n, m especifica un rango. Si los datos contiene los caracteres del n al m, se devuelven; de lo contrario, se devuelve una serie vaca.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin L con la funcin Iconv: Expresin de conversin 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" Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin L con la funcin Oconv:
288
Expresin de conversin 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"
MB
Convierte nmeros binarios en decimales o en un valor ASCII para el almacenamiento, o viceversa para la salida.
Sintaxis
MB [ 0C ]
Comentarios
Los caracteres distintos de 0 y 1 generan un error.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MB con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("10000000000", "MB") X = 1024 X = Iconv("010000110100010001000101", "MB0C") X = "CDE" Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MB con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("1024", "MB") X = "10000000000" X = Oconv("CDE", "MB0C") X = "010000110100010001000101"
MCA
Extrae todos los caracteres alfabticos de un campo.
289
Sintaxis
MCA
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCA con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("John Smith 1-234", "MCA") X = "JohnSmith" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCA con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("John Smith 1-234", "MCA") X = "JohnSmith"
MC/A
Extrae todos los caracteres no alfabticos de un campo.
Sintaxis
MC/A
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MC/A con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("John Smith 1-234", "MC/A") X = " 1-234" El siguiente ejemplo muestra el efecto de un cdigo de conversin MC/A con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("John Smith 1-234", "MC/A") X = " 1-234"
MCD
Convierte nmeros decimales en hexadecimales.
Sintaxis
MCD
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCD con la funcin Iconv: Expresin de conversin Valor interno
290
X = Iconv("4D2", "MCD") X = "1234" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCD con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("1234", "MCD") X = "4D2"
MCL
Convierte todas las letras maysculas a minsculas.
Sintaxis
MCL
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCL con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("John Smith 1-234", "MCL") X = "john smith 1-234" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCL con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("John Smith 1-234", "MCL") X = "john smith 1-234"
MCM
Se utiliza si el soporte multilingstico est habilitado. Extrae todos los caracteres de varios bytes de soporte multilingstico del campo. Si la modalidad de soporte multilingstico est inhabilitada, el cdigo devuelve el valor 2, que indica un cdigo de conversin no vlido.
Sintaxis
MCM
Ejemplo
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCM con la funcin Iconv:
IF SYSTEM(NL$ON) THEN Multibyte.Characters = ICONV(Input.String, "MCM") END
291
MC/M
Se utiliza si el soporte multilingstico est habilitado. Extrae todos los caracteres de un solo byte del campo. Si la modalidad de soporte multilingstico est inhabilitada, el cdigo devuelve el valor 2, que indica un cdigo de conversin no vlido. MC/M
Sintaxis
MC/M
Ejemplo
El siguiente ejemplo muestra el efecto de un cdigo de conversin MC/M con la funcin Iconv:
IF SYSTEM(NL$ON) THEN Singlebyte.Characters = ICONV(Input.String, "MC/M") END
MCN
Extrae todos los caracteres numricos de un campo.
Sintaxis
MCN
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCN con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("John Smith 1-234", "MCN") X = "1234" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCN con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("John Smith 1-234", "MCN") X = "1234"
MC/N
Extrae todos los caracteres no numricos de un campo.
Sintaxis
MC/N
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MC/N con la funcin Iconv:
292
Expresin de conversin Valor interno X = Iconv("John Smith 1-234", "MC/N") X = "John Smith -" El siguiente ejemplo muestra el efecto de un cdigo de conversin MC/N con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("John Smith 1-234", "MC/N") X = "John Smith -"
MCP
Convierte los caracteres no imprimibles en un punto.
Sintaxis
MCP
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCP con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("John^CSmith^X1-234", "MCP") X = "John.Smith.1-234" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCP con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("John^CSmith^X1-234", "MCP") X = "John.Smith.1-234"
MCT
Convierte las palabras de una serie en palabras con maysculas iniciales.
Sintaxis
MCT
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCT con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("john SMITH 1-234", "MCT") X = "John Smith 1-234" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCT con la funcin Oconv:
293
Expresin de conversin Valor externo X = Oconv("john SMITH 1-234", "MCT") X = "John Smith 1-234"
MCU
Convierte todas las letras minsculas a maysculas.
Sintaxis
MCU
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCU con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("john smith 1-234", "MCU") X = "JOHN SMITH 1-234" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCU con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("john smith 1-234", "MCU") X = "JOHN SMITH 1-234"
MCX
Convierte nmeros hexadecimales en decimales.
Sintaxis
MCX
Ejemplos
El siguiente ejemplo muestra el efecto de un cdigo de conversin MCX con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("1234", "MCX") X = "4D2" El siguiente ejemplo muestra el efecto de un cdigo de conversin MCX con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("4D2", "MCX") X = "1234"
294
MD
Formatea los nmeros como cantidades monetarias o numricas, o convierte nmeros formateados al formato de almacenamiento interno. Si se incluyen las opciones $, F, I o Y, la conversin es monetaria. Si el soporte multilingstico est habilitado y la conversin es monetaria, el separador de millares y el separador decimal se obtienen del convenio MONETARY del entorno local. Si la conversin es numrica, se obtienen del convenio NUMERIC. Las opciones <, -, C y D definen nmeros para uso monetario y alteran temporalmente los valores del convenio MONETARY.
Sintaxis
MD n [ m ] [ opciones ]
n es un nmero del 0 al 9 que indica el nmero de lugares decimales que se utilizan en la salida. Si n es 0, la salida no contiene ningn separador decimal. El valor de m especifica el factor de escala. En la entrada, el separador decimal se desplaza m posiciones a la derecha antes del almacenamiento. En la salida, el separador decimal se desplaza m posiciones a la izquierda. Por ejemplo, si m es 2 en una conversin de entrada y los datos de entrada son 123, estos se almacenaran como 12300. Si m es 2 en una conversin de salida y los datos almacenados son 123, estos se mostraran en la salida como 1.23. Si m no se especifica, se supone que es igual que n. Los nmeros se redondean o se rellenan con ceros, segn sea necesario El valor de opciones puede ser cualquiera de los siguientes: v , especifica una coma como delimitador de millares. Para especificar otro carcter como delimitador de millares, utilice la expresin del convenio. v $ antepone como prefijo un signo de moneda local al nmero. Si el soporte multilingstico est habilitado, el signo se deriva del convenio MONETARY del entorno local. v $ antepone como prefijo un signo de franco al nmero. v I se utiliza con Oconv y especifica que se utiliza el smbolo monetario internacional correspondiente al entorno local. Cuando se utiliza con Iconv, especifica que se elimina. v Y se utiliza con Oconv. Se utiliza el carcter de yen/yuan. v - especifica un signo menos como sufijo para las cantidades negativas; a las cantidades positivas se aade un espacio en blanco como sufijo. v < especifica que las cantidades negativas estn delimitadas con corchetes para la salida; a las cantidades positivas se aade un espacio en blanco como prefijo y como sufijo. v C aade el sufijo CR a las cantidades negativas; a las cantidades positivas se aade un sufijo de dos espacios en blanco. v D aade el sufijo DB a las cantidades negativas; a las cantidades positivas se aade un sufijo de dos espacios en blanco. v P especifica que no se realiza ningn escalado si los datos de entrada ya contienen un separador decimal. v Z genera 0 como una serie vaca. v T truca los datos, en lugar de redondearlos. v fx aade una mscara de formateo en la salida y la elimina en la entrada. f es un nmero del 1 al 99 que indica el nmero mximo de caracteres de mscara que se eliminan o se aaden. x es el carcter que se utiliza como mscara de formateo. Si no utiliza la opcin fx y los datos contienen una mscara de formateo, se genera una serie vaca. Las mscaras de formateo se describen en Expresin de formato. v intl es una expresin que se utiliza para especificar un convenio para el formateo monetario o numrico.
Captulo 7. Programacin BASIC
295
v convention es una expresin que se utiliza para especificar un convenio para el formateo monetario o numrico. La expresin convention tiene la sintaxis siguiente: [ prefijo,millares,decimal,sufijo ] Nota: Cada elemento de la expresin del convenio es opcional, pero debe especificar los delimitadores y las comas en la posicin correcta. Por ejemplo, para especificar slo millares, escriba [,millares,, ]. prefijo especifica un prefijo para el nmero. Si prefijo contiene espacios, comas o corchetes de cierre, delimtelos con comillas. millares especifica el delimitador de millares. decimal especifica el delimitador de decimales. sufijo especifica un sufijo para el nmero. Si sufijo contiene espacios, comas o corchetes de cierre, delimtelos con comillas.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MD (decimal enmascarado) con la funcin Iconv: Expresin de conversin 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 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
296
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MD (Decimal enmascarada) con la funcin Oconv: Expresin de conversin 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" X = Oconv(-123456789, "MD2<[#,.,,]") X = #<1.234.567,89>" X = Oconv(123456789, "MD33") X = "123456.789" X = Oconv(1234567890, "MD32") X = "12345678.9" X = Oconv(123456789, "MD2F") X = "F1234567.89" X = Oconv(-123456789, "MD2C") X = "1234567.89cr" X = Oconv(123456789, "MD2D") X = "1234567.89 " X = Oconv(123456789, "MD2,D") X = "1,234,567.89 " X = Oconv(1234567.89, "MD2P") X = "1234567.89" X = Oconv(123, "MD3Z") X = ".123" X = Oconv(987654, "MD2-Z") X = "9876.54" X = Oconv(12345.678, "MD20T") X = "12345.67" X = Oconv(123456, "MD2$12#") X = "$####1234.56" X = Oconv(987654, "MD3,$CPZ") X = "$987.654 " X = Oconv(987654, "MD2,ZP12#") X = "####9,876.54"
297
ML & MR
Justifica y formatea cantidades monetarias y numricas. ML especifica la justificacin a la izquierda; MR especifica la justificacin a la derecha. Si se incluyen las opciones F o $, la conversin es monetaria. Si el soporte multilingstico est habilitado y la conversin es monetaria, el separador de millares y el separador decimal se obtienen del convenio MONETARY del entorno local. Si la conversin es numrica, se obtienen del convenio NUMERIC. Las opciones <, -, C y D definen nmeros para uso monetario y alteran temporalmente los valores del convenio MONETARY. ML y MR
Sintaxis
ML | MR [ n [ m ] opciones [ ( fx ) ]
n es un nmero del 0 al 9 que indica el nmero de lugares decimales que se utilizan en la salida. Si n es 0, la salida no contiene ningn separador decimal. El valor de m especifica el factor de escala. En la entrada, el separador decimal se desplaza m posiciones a la derecha antes del almacenamiento. En la salida, el separador decimal se desplaza m posiciones a la izquierda. Por ejemplo, si m es 2 en una conversin de entrada y los datos de entrada son 123, estos se almacenaran como 12300. Si m es 2 en una conversin de salida y los datos almacenados son 123, estos se mostraran en la salida como 1.23. Si m no se especifica, se supone que es igual que n. Los nmeros se redondean o se rellenan con ceros, segn sea necesario El valor de opciones puede ser cualquiera de los siguientes: v , especifica una coma como delimitador de millares. Para especificar otro carcter como delimitador de millares, utilice la expresin del convenio. v C aade el sufijo CR a las cantidades negativas; a las cantidades positivas se aade un sufijo de dos espacios en blanco. v D aade el sufijo DB a las cantidades negativas; a las cantidades positivas se aade un sufijo de dos espacios en blanco. v Z genera 0 como una serie vaca. v M especifica un signo menos como sufijo para las cantidades negativas. A las cantidades positivas se aade un espacio en blanco como sufijo. v E especifica que las cantidades negativas estn delimitadas con corchetes para la salida; a las cantidades positivas se aade un espacio en blanco como prefijo y como sufijo. v N suprime el signo menos en los nmeros negativos. v $ antepone como prefijo un signo de moneda local al nmero antes de la justificacin. Si el soporte multilingstico est habilitado, el signo se deriva del convenio MONETARY del entorno local. Para aadir otro smbolo monetario como prefijo, utilice la expresin intl. v $ antepone como prefijo un signo de franco al nmero. v ( fx ) aade una mscara de formateo en la salida y la elimina en la entrada. x es un nmero del 1 al 99 que indica el nmero mximo de caracteres de mscara que se eliminan o se aaden. f es un cdigo que especifica el carcter que se utiliza como mscara de formateo, y es uno de los siguientes: # especifica una mscara de blancos. * especifica una mscara de asteriscos. % especifica una mscara de ceros. v intl es una expresin que se utiliza para personalizar la salida conforme a distintos convenios internacionales, y permite los caracteres de varios bytes.
298
La expresin intl tiene la sintaxis siguiente: [ prefijo,millares,decimal,sufijo ] Nota: Cada elemento de la expresin del convenio es opcional, pero debe especificar los delimitadores y las comas en la posicin correcta. Por ejemplo, para especificar slo millares, escriba [,millares,, ]. prefijo especifica un prefijo para el nmero. Si prefijo contiene espacios, comas o corchetes de cierre, delimtelos con comillas. millares especifica el delimitador de millares. Si millares contiene espacios, comas o corchetes de cierre, delimtelos con comillas. decimal especifica el delimitador de decimales. Si decimal contiene espacios, comas o corchetes de cierre, delimtelos con comillas. sufijo especifica un sufijo para el nmero. Si sufijo contiene espacios, comas o corchetes de cierre, delimtelos con comillas. Las series literales tambin pueden escribirse entre parntesis. Las mscaras de formateo se describen en Expresin de formato.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin ML y MR con el convenio Iconv: Expresin de conversin 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("<1234567.89>", "ML2E") X = -123456789 X = Iconv("1234567.89**", "ML2(*12)") X = 123456789 X = Iconv("**1234567.89", "MR2(*12)") X = 123456789 Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin ML y MR con la funcin Oconv: Expresin de conversin Valor externo
Captulo 7. Programacin BASIC
299
X = Oconv(123456789, "ML2$,") X = "$1,234,567.89" X = Oconv(123, "ML3Z") X = ".123" X = Oconv(123456789, "ML33") X = "123456.789" X = Oconv(1234567890, "ML32") X = "12345678.9" X = Oconv(-123456789, "ML2C") X = 1234567.89cr" X = Oconv(123456789, "ML2D") X = " "1234567.89db" X = Oconv(-123456789, "ML2M") X = "1234567.89-" X = Oconv(-123456789, "ML2E") X = "<1234567.89>" X = Oconv(123456789, "ML2(*12)") X = "1234567.89**" X = Oconv(123456789, "MR2(*12)") X = "**1234567.89"
MM
En la modalidad de soporte multilingstico, formatea los datos de moneda utilizando el convenio MONETARY actual. MM
Sintaxis
MM [ n ] [ I [ L ] ]
n es el nmero de lugares decimales que se generan o se almacenan. I formatea los datos utilizando el smbolo de moneda internacional de tres caracteres especificado en el convenio MONETARY del entorno local actual, un punto como separador decimal y una coma como separador de millares. Si aade L, los datos se formatean utilizando el separador de millares y el separador decimal con el convenio MONETARY del entorno local actual. I y L se ignoran para las conversiones de entrada mediante Iconv.
Comentarios
Si especifica MM sin ningn argumento, la conversin utiliza los separadores decimales y de millares y el smbolo de moneda especificados en el convenio MONETARY del entorno local actual.
300
MO
Convierte nmeros octales en decimales o en un valor ASCII para el almacenamiento, o viceversa para la salida.
Sintaxis
MO [ 0C ]
Comentarios
Los caracteres fuera del rango 0-7 pueden generar un error.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin M0 con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("2000", "MO") X = 1024 X = Iconv("103104105", "MO0C") X = "CDE" Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin M0 con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("1024", "MO") X = "2000" X = Oconv("CDE", "MO0C") X = "103104105"
MP
Empaqueta dos nmeros decimales por byte para el almacenamiento y los desempaqueta para la salida.
Sintaxis
MP
Comentarios
Los signos + iniciales se omiten. Los signos - iniciales hacen que se almacene una D hexadecimal en la mitad inferior del ltimo dgito interno. Si hay un nmero de mitades empaquetadas impar, se aaden cuatro bits iniciales 0. El rango de bytes de datos en el formato interno expresado en hexadecimal es de 00 a 99 y de 0D a 9D. Esta conversin slo acepta como entrada dgitos decimales, de 0 al 9, y los signos ms y menos; de lo contrario, la conversin falla. Los nmeros decimales empaquetados deben desempaquetarse para la salida o no se podrn mostrar.
301
MT
Convierte datos al y desde el formato de hora. MT
Sintaxis
MT [ H ] [ S ] [ separador]
MT sin opciones especifica que la hora est en formato de 24 horas, omitiendo los segundos, con un separador de dos puntos entre horas y minutos, por ejemplo, 23:59. H especifica un formato de salida de 12 horas con el sufijo AM o PM. S incluye los segundos en la hora de salida. separador es un carcter no numrico que especifica el separador utilizado entre las horas, los minutos y los segundos en la salida.
Comentarios
En la salida, MT define el formato de salida externo de la hora. En la entrada, MT especifica slo que los datos son una hora, y las opciones H y S se ignoran. Si la fecha de entrada no tiene minutos ni segundos, se supone que son 0. Para los formatos de 12 horas, utilice el sufijo AM, A, PM o P para indicar que la hora es anterior o posterior al medioda. Si se especifica una hora superior a 12, se supone que se utiliza un reloj de 24 horas. 12:00 AM es la medianoche y 12:00 PM es el medioda. La hora se almacena como el nmero de segundos desde la medianoche. El valor de medianoche es 0.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MT con la funcin Iconv: Expresin de conversin 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 Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MT con la funcin Oconv: Expresin de conversin Valor interno
302
X = Oconv("02:46", "MT") X = "02:46" X = Oconv("02:46:40am", "MTHS") X = "02:46:40am" X = Oconv("02:46am", "MTH") X = "02:46am" X = Oconv("02.46", "MT.") X = "02.46" X = Oconv("02:46:40", "MTS") X = "02:46:40"
MUOC
Devuelve el valor de almacenamiento interno de una serie como series hexadecimales de cuatro dgitos.
Sintaxis
MUOC
Comentarios
En la salida, utilizando Oconv, la serie proporcionada se devuelve con cada carcter convertido en su valor de almacenamiento interno hexadecimal de cuatro dgitos. En la entrada, utilizando Iconv, la serie proporcionada se trata como grupos de cuatro dgitos hexadecimales y se devuelve el valor de almacenamiento interno. Un grupo formado por menos de cuatro dgitos se rellena con ceros a la izquierda.
Ejemplo
X = UniChar(222):UniChar(240):@FM XInt = Oconv(X, MX0C) Y = Oconv(X, NLSISO8859-1) YExt = Oconv(Y, MX0C) Yint = OCONV(X, MU0C)
MX
Convierte nmeros hexadecimales en decimales o en un valor ASCII para el almacenamiento, o viceversa para la salida.
Sintaxis
MX [ 0C ]
Comentarios
Los caracteres fuera de los rangos 0-9, A-F o a-f generan un error.
Captulo 7. Programacin BASIC
303
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MX con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("400", "MX") X = 1024 X = Iconv("434445", "MX0C") X = "CDE" Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MX con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("1024", "MX") X = "400" X = Oconv("CDE", "MX0C") X = "434445"
MY
Convierte caracteres ASCII en valores hexadecimales en la entrada, y viceversa en la salida.
Sintaxis
MY
Comentarios
Los caracteres fuera de los rangos 0-9, A-F o a-f generan un error.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MY con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("ABCD", "MY") X = 41424344 X = Iconv("0123", "MY") X = 30313233 Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin MY con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("41424344", "MY") X = "ABCD" X = Oconv("30313233", "MY") X = "0123"
304
NL
En la modalidad de soporte multilingstico, convierte los nmeros de un juego de caracteres locales en numerales rabes.
Sintaxis
NL
Ejemplo
El siguiente ejemplo muestra el efecto del cdigo de conversin NL con las funciones Oconv e Iconv. Convertir a efectos de visualizacin:
Internal.Number = 1275 External.Number = OCONV(Internal.Number, "NL")
NLS
En la modalidad de soporte multilingstico, convierte entre el juego de caracteres interno y el juego de caracteres externo.
Sintaxis
NLS nombrecorrelacin
Comentarios
En la salida que se utiliza la funcin Oconv, el cdigo de conversin NLS correlaciona una serie del juego de caracteres interno con el juego de caracteres externo especificado en nombrecorrelacin. En la entrada que se utiliza la funcin Iconv, el cdigo de conversin NLS supone que la serie proporcionada est en el juego de caracteres especificado por nombrecorrelacin, y la correlaciona con el juego de caracteres interno. Si nombrecorrelacin est establecido en Unicode, la serie proporcionada se supone que est formada por caracteres Unicode de 2 bytes. Si hay un nmero impar de bytes en la serie, el ltimo byte se sustituye por el carcter de sustitucin de Unicode y el valor devuelto por la funcin Status se establece en 3.
NR
Convierte numerales rabes en numerales romanos en la salida, y viceversa en la entrada.
Sintaxis
NR
305
Comentarios
Estos son los valores equivalentes de los numerales romanos y rabes:
Romano i v x l c d m V X L C D L Arbigo 1 5 10 50 100 500 1000 5000 10000 50000 100000 500000 1000000
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin NR con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("mcmxcvii", "NR") X = 1997 X = Iconv("MCMXCVmm", "NR") X = 1997000 Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin NR con la funcin Oconv: Expresin de conversin Valor externo X = Oconv(1997, "NR") X = "mcmxcvii" X = Oconv(1997000, "NR") X = "MCMXCVmm"
P
Extrae datos que coinciden con un patrn.
Sintaxis
P (patrn) [ ; (patrn) ... ]
306
patrn especifica el patrn con el que coinciden los datos y debe ir entre parntesis. Puede ser uno de los cdigos siguientes: v nN coincide con n caracteres numricos. Si n es 0, se establece la coincidencia con cualquier nmero de caracteres numricos. v nA coincide con n caracteres alfabticos. Si n es 0, se establece la coincidencia con cualquier nmero de caracteres alfabticos. v nX coincide con n caracteres alfanumricos. Si n es 0, se establece la coincidencia con cualquier nmero de caracteres alfanumricos. literal es una serie literal con la que deben coincidir los datos. ; separa una serie de patrones.
Comentarios
Si los datos no coinciden con ninguno de los patrones, se devuelve una serie vaca.
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin P con la funcin Iconv: Expresin de conversin 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" Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin P con la funcin Oconv: Expresin de conversin Valor externo X = Oconv("123456789", "P(3N-3A-3X);(9N)") X = "123456789" X = Oconv("123-ABC-A7G", "P(3N-3A-3X);(9N)") X = "123-ABC-A7G" X = Oconv("ABC-123-A7G", "P(3N-3A-3X);(9N)") X = "" X = Oconv("123-45-6789", "P(3N-2N-4N)") X = "123-45-6789" X = Oconv("123-456-789", "P(3N-2N-4N)") X = "" X = Oconv("123-45-678A", "P(3N-2N-4N)") X = ""
307
R
Recupera datos de un rango.
Sintaxis
Rn,m [ ; n,m ... ]
n especifica el lmite inferior del rango. m especifica el lmite superior del rango. ; separa varios rangos.
Comentarios
Si los datos no cumplen las especificaciones del rango, se devuelve una serie vaca.
Ejemplos
El siguiente ejemplo muestra el efecto del cdigo de conversin R (Comprobacin de rango) con la funcin Iconv. Expresin de conversin Valor interno X = Iconv("123", "R100,200") X = 123 El siguiente ejemplo muestra el efecto del cdigo de conversin R (Comprobacin de rango) con la funcin Oconv. Expresin de conversin Valor externo X = Oconv(123, "R100,200") X = 123 X = Oconv(223, "R100,200") X = "" X = Oconv(3.1E2, "R100,200;300,400") X = 3.1E2
S
Genera cdigos fonticos que pueden utilizarse para comparar palabras basndose en cmo suenan.
Sintaxis
S
Comentarios
El cdigo fontico est formado por la primera letra de la palabra seguida de un nmero. Las palabras que suenan igual, por ejemplo, rayar y rallar, generan el mismo cdigo fontico.
308
Ejemplos
Los siguientes ejemplos muestran el efecto de algunos cdigos de conversin S con la funcin Iconv: Expresin de conversin Valor interno X = Iconv("GREEN", "S") X = "G650 X = Iconv("greene", "S") X = "G650" X = Iconv("GREENWOOD", "S" X = "G653" X = Iconv("GREENBAUM", "S") X = "G651"
TI
En la modalidad de soporte multilingstico, convierte las horas del formato interno al formato del convenio del entorno local predeterminado.
Sintaxis
TI
Ejemplo
El siguiente ejemplo muestra el efecto del cdigo de conversin TI con la funcin Oconv:
Internal.Time = TIME()International.Time = OCONV(Internal.Time, "TI")
309
310
Transformaciones incorporadas
Puede ver las definiciones de las transformaciones incorporadas utilizando el cliente del Diseador. El uso de IBM InfoSphere DataStage en un entorno de soporte multilingstico tiene implicaciones para algunas de las transformaciones de datos y de tipo de datos. Si el soporte multilingstico est habilitado, deber comprobar las descripciones de las transformaciones en el cliente del Diseador antes de utilizarlas, para asegurarse de que funcionan correctamente.
Transformaciones de serie
Transformacin CAPITALS Tipo de entrada Serie Tipo de salida Serie Carpeta Built-in/String Descripcin El primer carcter de cada palabra del argumento se sustituye por el equivalente en maysculas, si procede. Toda secuencia de caracteres entre caracteres de espacio se toma como una palabra, por ejemplo: CAPITALS("monday feb 14th") => "Monday Feb 14th" Devuelve una serie de la que se han eliminado todos los caracteres distintos a los dgitos del 0 al 9, por ejemplo: DIGITS("123abc456") => "123456" Devuelve una serie de la que se han eliminado todos los caracteres excepto las letras, por ejemplo: LETTERS("123abc456") => "abc"
DIGITS
Serie
Serie
Built-in/String
LETTERS
Serie
Serie
Built-in/String
311
Transformacin StringDecode
Carpeta sdk/String
Descripcin Carga una matriz a efectos de bsqueda. 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 bsqueda y una matriz, y devuelve una serie. Devuelve 1 si la serie slo consta de uno o ms espacios. 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. 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. Devuelve la serie de entrada con maysculas iniciales en cada palabra.
StringIsSpace
Serie
Serie
sdk/String
StringLeftJust
Serie
Serie
sdk/String
StringRightJust
Serie
Serie
sdk/String
StringUpperFirst
Serie
Serie
sdk/String
Transformaciones de fecha
Transformacin MONTH.FIRST Tipo de entrada MONTH.TAG Tipo de salida Fecha Carpeta Built-in/Dates Descripcin Devuelve una fecha interna numrica correspondiente al primer da de un mes con el formato MONTH.TAG (AAAA-MM), por ejemplo: MONTH.FIRST("1993-02") => 9164 donde 9164 es la representacin interna del 1 de febrero de 1993.
312
Transformacin MONTH.LAST
Carpeta Built-in/Dates
Descripcin Devuelve una fecha interna numrica correspondiente al ltimo da de un mes con el formato MONTH.TAG (AAAA-MM), por ejemplo: MONTH.LAST("1993-02") => 9191 donde 9191 es la representacin interna del 28 de febrero de 1993.
QUARTER.FIRST
QUARTER.TAG
Fecha
Built-in/Dates
Devuelve una fecha interna numrica correspondiente al primer da de un trimestre con el formato QUARTER.TAG (AAAAQn), por ejemplo: QUARTER.FIRST ("1993Q2") => 9133 donde 9133 es la representacin interna del 1 de enero de 1993.
QUARTER.LAST
QUARTER.TAG
Fecha
Built-in/Dates
Devuelve una fecha interna numrica correspondiente al ltimo da de un trimestre con el formato QUARTER.TAG (AAAAQn), por ejemplo: QUARTER.LAST("1993Q2") => 9222 donde 9222 es la representacin interna del 31 de marzo de 1993.
TIMESTAMP. TO.DATE
Fecha
Built-in/Dates
Convierte el formato de indicacin 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 numrica, por ejemplo: TAG.TO.DATE("1993-02-14") => 9177
313
Transformacin WEEK.FIRST
Carpeta Built-in/Dates
Descripcin Devuelve una fecha interna numrica correspondiente al primer da (Lunes) de una semana con el formato WEEK.TAG (AAAAWnn), por ejemplo: WEEK.FIRST("1993W06") => 9171 donde 9171 es la representacin interna del 8 de febrero de 1993.
WEEK.LAST
WEEK.TAG
Fecha
Built-in/Dates
Devuelve una fecha interna numrica correspondiente al ltimo da (Domingo) de una semana con el formato WEEK.TAG (AAAAWnn), por ejemplo: WEEK.LAST("1993W06") => 9177 donde 9177 es la representacin interna del 14 de febrero de 1993.
YEAR.FIRST
YEAR.TAG
Fecha
Built-in/Dates
Devuelve una fecha interna numrica correspondiente al primer da de un ao con el formato YEAR.TAG (AAAA), por ejemplo: YEAR.FIRST("1993") => 9133 donde 9133 es la representacin interna del 1 de enero de 1993.
YEAR.LAST
YEAR.TAG
Fecha
Built-in/Dates
Devuelve una fecha interna numrica correspondiente al ltimo da de un ao con el formato YEAR.TAG (AAAA), por ejemplo: YEAR.LAST("1993") => 9497 donde 9497 es la representacin interna del 31 de diciembre de 1993.
314
Carpeta Built-in/Dates
Descripcin 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 representacin interna del 5 de diciembre de 1996, 1:46 p.m. y 21 segundos.
TIMESTAMP
Fecha
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 representacin interna del 5 de diciembre de 1996.
DATE.TAG
Fecha
DATE.TAG
Built-in/Dates
Convierte una fecha interna numrica 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 numrica en una serie con el formato MONTH.TAG (AAAA-MM), por ejemplo: MONTH.TAG(9177) => "1993-02"
315
Transformacin TAG.TO.MONTH
Carpeta Built-in/Dates
Descripcin 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 numrica 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"
316
Carpeta Built-in/Dates
Descripcin 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. Devuelve la fecha/hora actual en GMT con el formato AAAA-MM-DD HH:MM:SS.SSS. Devuelve la hora de Internet o Swatch actual. Convierte los das desde 1900 al formato AAAAMMDD HH:MM:SS:SSS. Convierte los das desde 1970 al formato AAAAMMDD HH:MM:SS:SSS.
DateCurrent GMTTime
Serie
sdk/date
Nmero Serie
sdk/date sdk/date
Serie
sdk/date
Las siguientes transformaciones aceptan series de fecha de entrada con uno de los formatos siguientes: v Una fecha delimitada cualquiera que especifique Da Mes Ao (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 Ao Mes Da (por ejemplo, 19990419, 990419) v Fechas del calendario juliano (por ejemplo, 99126, 1999126) DateGenericGetDay Serie Serie sdk/date/ generic Devuelve el valor Da de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Mes de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Minutos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.
DateGeneric GetMonth
Serie
Serie
sdk/date/ generic
DateGenericGetTime Serie
Serie
sdk/date/ generic
DateGeneric GetTimeHour
Serie
Serie
sdk/date/ generic
Serie
sdk/date/ generic
317
Transformacin
Tipo de entrada
Descripcin Devuelve el valor Segundos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Ao de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve una fecha de entrada adecuada para la carga utilizando Informix CLI. Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI con HH:MM:SS:SSS al final. Devuelve la fecha de entrada con un formato interno de IBM InfoSphere DataStage. Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage con HH:MM:SS.SSS al final. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC con HH:MM:SS.SSS al final. Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI con HH:MM:SS al final. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client con HH:MM:SS.SSS al final.
DateGenericGetYear
Serie
Serie
sdk/date/ generic
DateGeneric ToInfCLI
Serie
Serie
sdk/date/ generic
DateGeneric ToInfCLIWithTime
Serie
Serie
sdk/date/ generic
Serie
Fecha
Serie
Fecha
DateGeneric ToODBC
Serie
Serie
sdk/date/ generic
DateGeneric ToODBCWithTime
Serie
Serie
sdk/date/ generic
DateGeneric ToOraOCI
Serie
Serie
sdk/date/ generic
DateGeneric ToOraOCIWithTime
Serie
Serie
sdk/date/ generic
DateGeneric ToSybaseOC
Serie
Serie
sdk/date/ generic
Serie
Serie
sdk/date/ generic
318
Descripcin Devuelve la fecha de entrada con un formato AAAAMMDD HH:MM:SS:SSS. Compara dos fechas y devuelve el nmero de das de diferencia. Compara la fecha de entrada con 1899-12-31 a las 12 de la noche y devuelve el nmero de das de diferencia. Compara la fecha de entrada con 1969-12-31 a las 12 de la noche y devuelve el nmero de das de diferencia. Compara la fecha de entrada con hoy a las 12 de la noche y devuelve el nmero de das de diferencia. Devuelve 1 si la entrada es una fecha vlida; de lo contrario, devuelve 0.
Serie, Serie
Serie
Serie
Serie
DateGeneric DaysSince1970
Serie
Serie
sdk/date/ generic
DateGeneric DaysSinceToday
Serie
Serie
sdk/date/ generic
DateGenericIsDate
Serie
Serie
sdk/date/ generic
Las siguientes transformaciones aceptan series de fecha de entrada delimitada con el formato [AA]AA MM DD utilizando un delimitador cualquiera. Las series tambin 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 Da de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Mes de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Hora de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Minutos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Segundos de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS. Devuelve el valor Ao de la fecha proporcionada con el formato AAAAMMDD HH:MM:SS:SSS.
DateYearFirst GetMonth
Serie
Serie
sdk/date/ YearFirst
DateYearFirst GetTime
Serie
Serie
sdk/date/ YearFirst
DateYearFirst GetTimeHour
Serie
Serie
sdk/date/ YearFirst
DateYearFirst GetTimeMinute
Serie
Serie
sdk/date/ YearFirst
DateYearFirst GetTimeSecond
Serie
Serie
sdk/date/ YearFirst
DateYearFirst GetYear
Serie
Serie
sdk/date/ YearFirst
319
Descripcin Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI. Devuelve una fecha de entrada con un formato adecuado para la carga utilizando Informix CLI con HH:MM:SS.SSS al final. Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage. Devuelve la fecha de entrada con un formato interno de InfoSphere DataStage con HH:MM:SS.SSS al final. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando la etapa ODBC con HH:MM:SS.SSS al final. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Oracle OCI con HH:MM:SS al final. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client. Devuelve la fecha de entrada con un formato adecuado para la carga utilizando Sybase Open Client con HH:MM:SS.SSS al final. Devuelve la fecha de entrada con un formato AAAAMMDD HH:MM.SS:SSS. Compara dos fechas y devuelve el nmero de das de diferencia. Compara la fecha de entrada con 1899-12-31 a las 12 de la noche y devuelve el nmero de das de diferencia.
DateYearFirst ToInfCLIWithTime
Serie
Serie
sdk/date/ YearFirst
Serie
Fecha
Serie
Fecha
DateYearFirst ToODBC
Serie
Serie
sdk/date/ YearFirst
DateYearFirst ToODBCWithTime
Serie
Serie
sdk/date/ YearFirst
DateYearFirst ToOraOCI
Serie
Serie
sdk/date/ YearFirst
DateYearFirst ToOraOCIWithTime
Serie
Serie
sdk/date/ YearFirst
DateYearFirst ToSybaseOC
Serie
Serie
sdk/date/ YearFirst
Serie
Serie
sdk/date/ YearFirst
Serie
Serie
Serie, Serie
Serie
DateYearFirst DaysSince1900
Serie
Serie
320
Descripcin Compara la fecha de entrada con 1969-12-31 a las 12 de la noche y devuelve el nmero de das de diferencia. Compara la fecha de entrada con hoy a las 12 de la noche y devuelve el nmero de das de diferencia. Devuelve 1 si la entrada es una fecha vlida; de lo contrario, devuelve 0.
DateYearFirst DaysSinceToday
Serie
Serie
sdk/date/ YearFirst
DateYearFirstIsDate
Serie
Serie
sdk/date/ YearFirst
DataTypeAscii Pic9V99
Serie
Nmero
sdk/Data Type
DataTypeAscii Pic9V999
Serie
Nmero
sdk/Data Type
DataTypeAscii Pic9V9999
Serie
Nmero
sdk/Data Type
321
Descripcin Convierte EBCDIC PIC 9(n) con dos supuestos lugares decimales en un nmero con dos lugares decimales reales. Convierte EBCDIC PIC 9(n) con tres supuestos lugares decimales en un nmero con tres lugares decimales reales. Convierte EBCDIC PIC 9(n) con cuatro supuestos lugares decimales en un nmero con cuatro lugares decimales reales. Convierte una serie EBCDIC en ASCII. Convierte ASCII o EBCDIC PIC 9(n) en un entero. Convierte ASCII o EBCDIC PIC 9(n) con un supuesto lugar decimal en un nmero con un lugar decimal real. Convierte ASCII o EBCDIC PIC 9(n) con dos supuestos lugares decimales en un nmero con dos lugares decimales reales. Convierte ASCII o EBCDIC PIC 9(n) con tres supuestos lugares decimales en un nmero con tres lugares decimales reales. Convierte ASCII o EBCDIC PIC 9(n) con cuatro supuestos lugares decimales en un nmero con cuatro lugares decimales reales. Convierte COBOL PIC COMP en un entero.
DataTypeEbcdic Pic9V999
Serie
Nmero
sdk/Data Type
DataTypeEbcdic Pic9V9999
Serie
Nmero
sdk/Data Type
Serie Serie
Serie Nmero
DataTypePic9V9
Serie
Nmero
sdk/Data Type
DataTypePic9V99
Serie
Nmero
sdk/Data Type
DataTypePic9V999
Serie
Nmero
sdk/Data Type
DataTypePic9 V9999
Serie
Nmero
sdk/Data Type
DataTypePicComp
Serie
Nmero
sdk/Data Type
322
Transformacin DataTypePicComp1
Descripcin Convierte COBOL PIC COMP-1 en un nmero real. Convierte COBOL PIC COMP-2 en un nmero real. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 en un entero. Convierte un decimal empaquetado sin signo COBOL PIC COMP-3 en un entero. Convierte un decimal empaquetado sin signo COBOL PIC COMP-3 en un entero. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con un supuesto lugar decimal en un nmero con un lugar decimal real. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con dos supuestos lugares decimales en un nmero con dos lugares decimales reales. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con tres supuestos lugares decimales en un nmero con tres lugares decimales reales. Convierte un decimal empaquetado con signo COBOL PIC COMP-3 con cuatro supuestos lugares decimales en un nmero con cuatro lugares decimales reales.
DataTypePicComp2
Serie
Nmero
sdk/Data Type
DataTypePicComp3
Serie
Nmero
sdk/Data Type
Serie
Nmero
sdk/Data Type
DataTypePicComp3 UnsignedFast
Serie
Nmero
sdk/Data Type
DataTypePicComp3 V9
Serie
Nmero
sdk/Data Type
DataTypePicComp3 V99
Serie
Nmero
sdk/Data Type
DataTypePicComp3 V999
Serie
Nmero
sdk/Data Type
DataTypePicComp3 V9999
Serie
Nmero
sdk/Data Type
323
Descripcin Convierte un binario sin signo en un entero. Convierte un tipo de datos COBOL PIC S9(n) decimal derecho dividido en zonas en formato ASCII o EBCDIC en un entero.
Serie
Nmero
sdk/Data Type
Serie Serie
sdk/KeyMgt sdk/KeyMgt
MeasureAreaSqFeetToSqMeters
Serie
Serie
MeasureAreaSqFeetToSqMiles
Serie
Serie
MeasureAreaSqFeetToSqYards
Serie
Serie
324
Transformacin MeasureAreaSqInchesToSqFeet
Carpeta sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area sdk/Measure/ Area
Descripcin Convierte pulgadas cuadradas en pies cuadrados. Convierte pulgadas cuadradas en metros cuadrados. Convierte metros cuadrados en acres. Convierte metros cuadrados en pies cuadrados. Convierte metros cuadrados en pulgadas cuadradas. Convierte metros cuadrados en millas cuadradas. Convierte metros cuadrados en yardas cuadradas. Convierte millas cuadradas en pies cuadrados. Convierte millas cuadradas en metros cuadrados. Convierte yardas cuadradas en pies cuadrados. Convierte yardas cuadradas en metros cuadrados.
MeasureAreaSqInchesToSqMeters
Serie
Serie
MeasureAreaSqMeterToAcres MeasureAreaSqMetersToSqFeet
Serie Serie
Serie Serie
MeasureAreaSqMetersToSqInches
Serie
Serie
MeasureAreaSqMetersToSqMiles
Serie
Serie
MeasureAreaSqMetersToSqYards
Serie
Serie
MeasureAreaSqMilesToSqFeet
Serie
Serie
MeasureAreaSqMilesToSqMeters
Serie
Serie
MeasureAreaSqYardsToSqFeet
Serie
Serie
MeasureAreaSqYardsToSqMeters
Serie
Serie
325
Transformacin MeasureDistance InchesToYards MeasureDistance MetersToFeet MeasureDistance MetersToInches MeasureDistance MetersToMile MeasureDistance MetersToYard MeasureDistance MilesToFeet MeasureDistance MilesToInches MeasureDistance MilesToMeters MeasureDistance MilesToYards MeasureDistance YardsToFeet MeasureDistance YardsToInches MeasureDistance YardsToMeters MeasureDistance YardsToMiles
Tipo de entrada Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie
Tipo de salida Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie Serie
Carpeta sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance sdk/Measure/ Distance
Descripcin Convierte pulgadas en yardas. Convierte metros en pies. Convierte metros en pulgadas. Convierte metros en millas. Convierte metros en yardas. Convierte millas en pies. Convierte millas en pulgadas. Convierte millas en metros. Convierte millas en yardas. Convierte yardas en pies. Convierte yardas en pulgadas. Convierte yardas en metros. Convierte yardas en millas.
Serie
Serie
326
Carpeta sdk/Measure/Time
Descripcin Devuelve 1 si la entrada de ao de 4 dgitos es un ao bisiesto; de lo contrario, devuelve 0. Convierte minutos en segundos. Convierte segundos en das. Convierte segundos en horas. Convierte segundos en minutos. Convierte segundos en semanas. Convierte segundos en aos. Convierte semanas en segundos. Convierte aos estndar en segundos.
MeasureTime MinutesTo Seconds MeasureTime SecondsToDays MeasureTime SecondsToHours MeasureTimeSeconds ToMinutes MeasureTime SecondsToWeeks MeasureTime SecondsToYears MeasureTime WeeksToSeconds MeasureTime YearsToSeconds
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
327
Transformacin MeasureVolume CubicFeet ToBarrelsPetrol MeasureVolume CubicFeet ToGallons MeasureVolume CubicFeet ToLiters MeasureVolume CubicFeet ToImpGallons MeasureVolume GallonsTo BarrelsLiquid
Carpeta
Descripcin
sdk/Measure/Volume Convierte pies cbicos en barriles estadounidenses (petrleo). sdk/Measure/Volume Convierte pies cbicos en galones estadounidenses. sdk/Measure/Volume Convierte pies cbicos en litros. sdk/Measure/Volume Convierte pies cbicos en galones imperiales. sdk/Measure/Volume Convierte galones estadounidenses en barriles estadounidenses (lquido). sdk/Measure/Volume Convierte galones estadounidenses en barriles estadounidenses (petrleo). sdk/Measure/Volume Convierte galones estadounidenses en pies cbicos. sdk/Measure/Volume Convierte galones estadounidenses en litros. sdk/Measure/Volume Convierte litros en barriles estadounidenses (lquido). sdk/Measure/Volume Convierte litros en barriles estadounidenses (petrleo). sdk/Measure/Volume Convierte litros en pies cbicos. sdk/Measure/Volume Convierte litros en galones estadounidenses. sdk/Measure/Volume Convierte litros en galones imperiales. sdk/Measure/Volume Convierte galones imperiales en pies cbicos. sdk/Measure/Volume Convierte galones imperiales en litros.
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
MeasureVolume GallonsTo CubicFeet MeasureVolume GallonsToLiters MeasureVolume LitersTo BarrelsLiquid MeasureVolume LitersTo BarrelsPetrol MeasureVolume LitersTo CubicFeet MeasureVolume LitersToGallons MeasureVolume LitersToGallons MeasureVolume ImpGallons ToCubicFeet MeasureVolume ImpGallons ToLiters
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie
Serie Serie
Serie Serie
Serie
Serie
328
Serie
Serie
Serie
Serie
Serie
Serie
Transformaciones numricas
Transformacin NumericIsSigned Tipo de entrada Serie Tipo de salida Serie Carpeta sdk/Numeric Descripcin Devuelve 0 si la entrada es no numrica o cero, 1 para nmeros positivos y -1 para los nmeros negativos.
329
Transformacin NumericRound0
Carpeta sdk/Numeric
Descripcin Devuelve el nmero entero ms prximo al nmero de entrada. Devuelve el nmero de entrada con una cifra decimal ms prximo. Devuelve el nmero de entrada con dos cifras decimales ms prximo. Devuelve el nmero de entrada con tres cifras decimales ms prximo. Devuelve el nmero de entrada con cuatro cifras decimales ms prximo.
NumericRound1
Serie
Serie
sdk/Numeric
NumericRound2
Serie
Serie
sdk/Numeric
NumericRound3
Serie
Serie
sdk/Numeric
NumericRound4
Serie
Serie
sdk/Numeric
RowProcGetPreviousValue
Serie
Serie
sdk/RowProc
RowProcRunningTotal
Serie
Serie
sdk/RowProc
330
UtilityRunJob
Matriz
sdk/Utility
UtilityGetRunJobInfo
Serie
sdk/Utility
UtilityPrintColumn ValueToLog
Serie
sdk/Utility
331
Transformacin UtilityPrintHexValueToLog
Tipo de salida -
Carpeta sdk/Utility
Descripcin Convierte el valor suministrado y lo procesa como una serie. Convierte cada carcter de la serie en su equivalente hexadecimal ASCII y lo graba en el registro en el cliente del Director. Graba el mensaje proporcionado como un aviso en el registro en el cliente del Director. Ejecuta una bsqueda en una tabla hash. Utiliza como argumentos el nombre de la tabla hash, el valor de la clave hash y la posicin de columna. Devuelve el registro.
UtilityWarningToLog
Serie
UtilityHashLookup
Serie
sdk/Utility
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 estn 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 transformacin. 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 transformacin escritas por el usuario. v Funciones de transformacin 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 transformacin que tenga prioridad en la rutina (tal como se describe en Transformaciones incorporadas en la pgina 311). Puede ver las definiciones de estas rutinas utilizando el cliente del Diseador, pero no puede editarlas. Si es necesario, puede copiarlas y renombrarlas, as como editar las copias para trabajar en ellas.
332
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 continuacin: 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 bsico pero tambin contiene informacin 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 tena un identificador de alias, a continuacin, el informe se graba como alias_nombreTrabajo.txt o alias_nombreTrabajo.xml, en funcin 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 funcin 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 lnea 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 lnea 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 dilogo Propiedades del trabajo. Tambin puede copiar estas rutinas y utilizar el cdigo como base para sus propias subrutinas anteriores/posteriores. Si el soporte multilingstico est habilitado, deber estar informado sobre cualquier requisito de correlacin 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.
333
v ConvertTag. Transforma una entrada DATE.TAG. El resultado depende del valor del segundo argumento: I (nmero de da 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 ao que contiene la fecha) genera YEAR.TAG. v ConvertWeek. Transforma una entrada WEEK.TAG en una fecha interna correspondiente a un da especfico de la semana. El resultado depende del valor del segundo argumento: 0 genera un lunes. 1 genera un martes. 2 genera un mircoles. 3 genera un jueves. 4 genera un viernes. 5 genera un sbado. 6 genera un domingo. Si la entrada no parece ser un WEEK.TAG vlido, 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 da del ao) genera DATE.TAG. L (el ltimo da del ao) genera DATE.TAG. v QuarterTag. Transforma una entrada de fecha en una serie QUARTER.TAG (AAAAQn). v Timestamp. Transforma una indicacin 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 indicacin de fecha y hora igual a 00:00:00 a partir de una fecha. DATE genera una fecha interna a partir de una indicacin de fecha y hora (se omite la parte de hora). TIME genera una hora interna a partir de una indicacin de fecha y hora (se omite la parte de fecha). v WeekTag. Transforma una entrada de fecha en una serie WEEK.TAG (AAAAWnn).
334
335
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 pblica de enlaces) v Da soporte a la actualizacin compartible o al acceso a archivos de grabacin 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 explotacin de las prestaciones de SMP que permiten varias secuencias de datos simultneas (almacenamiento en la memoria cach pblica de enlaces) v Da soporte al acceso rpido en memoria a los datos por parte de una aplicacin, 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 configuracin del sistema y el tamao esperado de los archivos La siguiente funcionalidad no est soportada: v El almacenamiento en memoria cach de archivos con un tamao 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 separacin (tamaos de bloque) distintos de 1, 2, 4, 8, 16, 32 o 64 v Designacin automtica de archivos como almacenados en la memoria cach del sistema v Utilizacin de los programas de utilidad (copia de seguridad, restauracin, cambio de tamao y arreglo de archivo) en los archivos designados para que se utilicen en la memoria cach del sistema
Terminologa
En este documento se utiliza la siguiente terminologa: Trmino Significado bloque Un grupo de registros o filas. El motor del servidor pone los registros que ejecutan hash en el mismo nmero de grupo en un bloque. El tamao 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 tamao de n k ms el tamao 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 estn disponibles para un acceso rpido. daemon de memoria cach Un proceso asncrono en segundo plano que realiza las grabaciones de estado de grabacin diferida.
336
cadena de archivos de memoria cach Un conjunto de entradas de archivo de memoria cach que estn 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 informacin relacionada con su estado. nmero de dispositivo Un nmero exclusivo asociado con la particin (un dispositivo) en la que reside el i-node. Consulte tambin nmero 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 aplicacin, pero no todas, se han grabado fsicamente en disco antes de que la aplicacin termine sin un archivo de cierre correcto. nmero de i-node Un nmero exclusivo asociado con cada nombre de archivo. Este nmero se utiliza para buscar una entrada en la tabla de i-nodes que proporciona informacin sobre el tipo, el tamao y la ubicacin del archivo, as como el ID de usuario del propietario del archivo. Consulte tambin nmero 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 pblico 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 pblica de enlaces. semforo Una estructura de sistema operativo que permite a los procesos modularse entre ellos en una hebra individual mediante un procedimiento. multiproceso simtrico (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. grabacin diferida Un bloque que hay actualmente en un conjunto de bloques que se ha modificado respecto a la
337
imagen en disco y est visible para las dems 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 grabacin diferida.
Preparacin para el almacenamiento en la memoria cach pblica de enlaces y el almacenamiento en la memoria cach del sistema en las plataformas UNIX
Acerca de esta tarea
De forma predeterminada, IBM InfoSphere DataStage se proporciona con el almacenamiento en la memoria cach pblica 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.
Procedimiento
1. Inicie una sesin como dsadm.
338
2. Utilice el siguiente mandato para cambiar el directorio actual al directorio de instalacin del motor de InfoSphere Information Server.
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 que desee. Como mnimo, establezca el elemento ajustable DISKCACHE en un tamao deseado en megabytes. (Consulte Ajuste de la memoria cach pblica de enlaces y la memoria cach del sistema en la pgina 351.) Nota: Los valores predeterminados sirven como un conjunto razonable de valores iniciales. 3. Asegrese 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
Resultados
El almacenamiento en la memoria cach pblica de enlaces y el almacenamiento en la memoria cach del sistema estn ahora habilitados. Una vez habilitado el almacenamiento en la memoria cach, los diseos de trabajo nuevos o existentes pueden utilizar esta funcionalidad. Consulte Utilizacin de la memoria cach pblica de enlaces en la pgina 342 o Utilizacin de la memoria cach del sistema en la pgina 342. Si recibe un error del sistema operativo de host indicando que no se han podido asignar los segmentos de InfoSphere DataStage, revise la informacin sobre el kernel del sistema operativo y realice los cambios necesarios en ellos.
Procedimiento
1. Inicie una sesin como dsadm.
Captulo 9. Almacenamiento en la memoria cach de disco de la etapa Hashed File
339
2. Utilice el siguiente mandato para cambiar el directorio actual al directorio de instalacin del motor de InfoSphere Information Server:
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. Asegrese 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:
. ./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
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.
Preparacin para el almacenamiento en la memoria cach pblica de enlaces y el almacenamiento en la memoria cach del sistema en las plataformas Windows
Acerca de esta tarea
De forma predeterminada, IBM InfoSphere DataStage se proporciona con el almacenamiento en la memoria cach pblica 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.
Procedimiento
1. Inicie una sesin 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
340
disco en los valores que desee. Como mnimo, establezca el elemento ajustable DISKCACHE en un tamao deseado en megabytes. (Consulte Ajuste de la memoria cach pblica de enlaces y la memoria cach del sistema en la pgina 351.) Nota: Los valores predeterminados sirven como un conjunto razonable de valores iniciales. 3. Asegrese 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 > Configuracin > Panel de control > IBM InfoSphere Information Server. Aparece el recuadro de dilogo Panel de control de InfoSphere DataStage. b. Pulse Detener todos los servicios y pulse S como respuesta al mensaje de que se detendrn 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 aplicacin de 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 configuracin 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 ubicacin del motor de servidor instalado. 5. Reinicie el motor de servidor de la siguiente manera: a. Seleccione Inicio > Configuracin > Panel de control > IBM InfoSphere Information Server. Aparecer el recuadro de dilogo Panel de control de InfoSphere DataStage. b. Pulse Iniciar todos los servicios y pulse S como respuesta al mensaje de que se iniciarn 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 informacin sobre el kernel del sistema operativo y realice los cambios necesarios en ellos.
Resultados
El almacenamiento en la memoria cach pblica de enlaces y el almacenamiento en la memoria cach del sistema estn ahora habilitados. Una vez habilitado el almacenamiento en la memoria cach, los diseos de trabajo nuevos o existentes pueden utilizar esta funcionalidad. Consulte Utilizacin de la memoria cach pblica de enlaces en la pgina 342 o Utilizacin de la memoria cach del sistema en la pgina 342.
341
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 compilacin. 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 ejecucin hacen referencia al espacio privado de enlaces. Si se vuelve a compilar una aplicacin 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 ejecucin ahora hacen referencia al espacio privado de enlaces.
342
seleccionando Permitir memoria cach de grabacin de la etapa en la pgina Entrada del recuadro de dilogo Etapa Hashed File. Especifique los atributos que desee en los recuadros de dilogo Opciones de creacin de archivo. Este recuadro de dilogo incluye el recuadro de lista desplegable Atributos de memoria cach. La lista desplegable tiene las siguientes entradas: v NINGUNO. No asigna ningn atributo de memoria cach especial. Este es el valor predeterminado. v GRABACIN DIFERIDA. Habilita el almacenamiento en memoria cach del archivo especificado utilizando la actualizacin bajo demanda o la actualizacin lenta. (En el archivo uvconfig, si se habilita DCWRITEDAEMON, se habilita la actualizacin lenta. Consulte Ajuste de la memoria cach pblica de enlaces y la memoria cach del sistema en la pgina 351). v GRABACIN INMEDIATA. Habilita el almacenamiento en memoria cach del archivo especificado utilizando grabaciones sncronas.
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: Opcin Descripcin 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 tamao de bloque del archivo debe ser 1 KB, 2 KB, 4 KB, 8 KB, 16 KB o 32 KB. Este tamao se controla estableciendo la separacin 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: Opcin Descripcin READ.ONLY Impone el archivo para que sea de slo lectura y almacena las lecturas en la memoria cach.
Captulo 9. Almacenamiento en la memoria cach de disco de la etapa Hashed File
343
READ.WRITE Restaura el archivo a la modalidad de lectura/grabacin 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 tamao de bloque del archivo debe ser 1 KB, 2 KB, 4 KB, 8 KB, 16 KB o 32 KB. Este tamao se controla estableciendo la separacin de archivos en 2, 4, 8, 16, 32 o 64, respectivamente.
Nota: Este mandato est disponible para el almacenamiento en la memoria cach pblica de enlaces y el almacenamiento en la memoria cach del sistema. El mandato tiene las opciones siguientes: Opcin Descripcin DEVICE xxx INODE yyy Proporciona informacin para el archivo de memoria cach asociado con el nmero de dispositivo exclusivo y el nmero 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 informacin para el archivo almacenado en memoria cach denominado. EVERY Proporciona informacin sobre todos los archivos abiertos. DETAIL Proporciona informacin adicional. MRURO Lista todos los conjuntos de bloques en la cola de conjuntos de bloques de slo 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 lnea. MRUWD Lista cada conjunto de bloques en la cola de grabacin diferida del archivo. Si se ejecuta el daemon de memoria cach de disco, aparece la siguiente lnea primero.
DAEMON.FILE.CACHE daemon active with pause of x, pid of y
344
donde x es el intervalo de pausa en milisegundos e y es la identificacin del ID de proceso. Para obtener ms informacin, consulte el apartado Inicio y detencin del daemon de memoria cach en la pgina 350. Un proceso puede ser propietario de uno o varios de los siguientes semforos: solicitud de daemon, cadena libre de conjunto de bloques y cadena de archivos de memoria cach. Si es propietario de ms de uno, se generan las lneas correspondientes.
daemon request semaphore held by y blockset freechain semaphore held by y cache file chain semaphore held by y
donde y es la identificacin del ID de proceso. Cuando se ejecuta este mandato, dos lneas muestran el estado general de la memoria cach. Por ejemplo,
fileentries 11 blocksets 61 freechain 61 flushedro 50 flushedwd 32 blockkhits 23292
El significado de la informacin de estado es el siguiente: Categora Significado fileentries Nmero de entradas del archivo de memoria cach. blocksets Nmero total de conjuntos de bloques en la memoria cach de disco. freechain Nmero de conjuntos de bloques disponibles actualmente para su uso. flushedro Nmero total de conjuntos de bloques de slo lectura desechados. flushedwd Nmero total de conjuntos de bloques de grabacin diferida desechados. blockhits Nmero total de bloques encontrados en la memoria cach. Si se especifica DETAIL, cuatro lneas adicionales proporcionan el estado detallado de la memoria cach de disco:
blocksize 16384 arraysize 256 flushpc 80 maxpc 40 catpc 50
nophyread 29
nophywrite 445
nobsetwhits 4473
345
blocksize Tamao configurado del almacenamiento intermedio del conjunto de bloques. Consulte DCBLOCKSIZE. arraysize Nmero 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 Nmero total de lecturas realizadas en el sistema operativo. nophywrite Nmero total de grabaciones realizadas en el sistema operativo. nobsetwhits Nmero total de conjuntos de bloques encontrados en la memoria cach. Se proporciona la siguiente informacin para cada archivo:
Device... 8912917 Inode... open 1297708 1 openwd 1 c C t D r W d 1 time 11:46:17 fullname tress/REL7.DY.1/DATA.30
blocksets 12
bsetswd 3
flushedro 0
flushedwd 144
bsethits 5667
hblockf 0x30000
El significado de esta informacin es el siguiente: Categora Significado Device Nmero que identifica la particin lgica del disco donde se encuentra el sistema de archivos. Inode Nmero que identifica el archivo al que se est accediendo. open Nmero de veces que se ha abierto actualmente el archivo.
openwd Nmero de veces que se ha abierto actualmente el archivo con grabacin diferida. c El estado del catlogo del archivo. v C si el archivo est catalogado. v A espacio si no lo est. El tipo de archivo: v D representa datos de tipo 30 v O representa un desbordamiento de tipo 30 v S representa un archivo pblico de enlace de IBM InfoSphere DataStage v A espacio representa un archivo hash r El estado de lectura/grabacin del archivo: v R representa de slo lectura
Gua del desarrollador de Server Job
346
v W representa de grabacin diferida v A espacio representa otros estados d 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 La hora a la que se ha abierto el archivo.
time
fullname Los ltimos 23 bytes de la va de acceso completa. blocksets El nmero de conjuntos de bloques que utiliza actualmente este archivo. bsetswd El nmero de conjuntos de bloques que hay actualmente con al menos un bloque de grabacin diferida. flushedro El nmero de conjuntos de bloques de slo lectura que se han desechado. flushedwd El nmero de conjuntos de bloques desechados que tenan grabaciones diferidas. bsethits El nmero de conjuntos de bloques encontrados en la memoria cach de este archivo. hblockf El nmero de bloque mximo en el archivo expresado en hexadecimales. Si un semforo de entrada de archivos utilizado para este archivo de memoria cach est actualmente en espera, se genera una lnea con la siguiente informacin:
this cache file entry semaphore (x) held by y
donde x es el nmero del semforo e y es el ID de proceso. Si se especifica DETAIL, se muestra la informacin de estado del archivo actual.
0xbaseblock 0 10000 20000 inset 8 8 8 mru WD RO latch 0x0 0x0 0x80000000 cntovf 0 0 0 writedef 0x80000000 0x0 0x0 time 11:46:17 11:46:17 11:46:17
Para cada entrada del conjunto de bloques, el significado de esta informacin es el siguiente: Categora Significado 0xbaseblock El nmero del bloque en hexadecimales (con el prefijo 0x). inset mru El nmero de bloques en este conjunto. El estado de slo lectura o grabacin diferida: v WD para la lista de grabacin diferida del archivo de memoria cach
Captulo 9. Almacenamiento en la memoria cach de disco de la etapa Hashed File
347
v RO para la lista de slo 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 nmero 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 semforo de matriz de archivos de memoria cach correspondiente a un conjunto de bloques mostrado est retenido actualmente por un proceso, se genera una lnea con la siguiente informacin.
Array entry z has cache file array semaphore (x) held by y
donde x es el nmero del semforo, y es el ID de proceso y z es el nmero de entrada de la matriz. Si se especifica DETAIL y se aplica un almacenamiento en memoria cach pblica de enlaces, se proporciona esta informacin 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 pblico de enlace est utilizando 248 HEAPCHUNK de 128 K cada uno y 1 HEAPCHUNK de 32 K Tambin 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 opcin OVER.30. Despus de dos lneas de cabecera, se muestran cada 64 bytes de datos en una lnea, con todas las lneas cero omitidas. Para cada clave, se genera una lnea. La clave es un valor de hasta 511 bytes. El vuelco termina cuando una clave tiene ms de 511 bytes. xxx, yyy y zzz son decimales, a menos que empiecen por 0[X|x], lo que indica que son hexadecimales.
348
| ALL| DCFILE | ENTRY | ARRAY | FREECHAIN | DAEMON] [USER x | SEMNO y] [STOP {DAEMON}] [ABORT] {DETAIL}
El mandato tiene las opciones siguientes: Opciones Descripcin 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 nmero 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 slo lectura de la memoria cach, establece la indicacin de fecha y hora en 0, y coloca una entrada al final de la cadena utilizada ms recientemente. CLOSE En colaboracin 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 estadsticas de un determinado archivo o de toda la memoria cach. TODOS Libera todos los semforos. ALL es mutuamente excluyente con DCFILE, ENTRY, ARRAY, FREECHAIN y DAEMON. DCFILE Libera el semforo de cadena de archivos de memoria cach. DCFILE es mutuamente excluyente con ALL, pero puede incluirse en combinacin con ENTRY, ARRAY, FREECHAIN o DAEMON. ENTRY Libera el semforo de entrada de archivo de memoria cach. ENTRY es mutuamente excluyente con ALL, pero puede incluirse en combinacin con DCFILE, ARRAY, FREECHAIN o DAEMON. ARRAY Libera el semforo de matriz de archivos de memoria cach. ARRAY es mutuamente excluyente con ALL, pero puede incluirse en combinacin con DCFILE, ENTRY, FREECHAIN o DAEMON. FREECHAIN Libera el semforo de cadena libre de conjuntos de bloques. FREECHAIN es mutuamente excluyente con ALL, pero puede incluirse en combinacin con DCFILE, ENTRY, ARRAY o DAEMON. DAEMON Libera el semforo de daemon de memoria cach. DAEMON es mutuamente excluyente con ALL, pero puede incluirse en combinacin con DCFILE, ENTRY, ARRAY o FREECHAIN. USER x Identifica el ID de proceso del usuario que es propietario del semforo 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 especfico.
349
SEMNO y Especifica el nmero de semforos de matriz o entrada que se van a liberar. Tambin debe especificarse ENTRY o ARRAY. Si se omite, se suponen todos los semforos de matriz o entrada. STOP {DAEMON} Detiene el daemon de grabacin asncrona de la memoria cach de disco. ABORT [DETAIL] Detiene todo, desecha todos los archivos, borra todos los semforos y estadsticas, y detiene el daemon. Si se especifica DETAIL, se muestran los pasos. Si se especifica ABORT, DETAIL es el nico otro parmetro permitido.
El mandato contiene los siguientes componentes: Componentes Descripcin 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 grabacin en el archivo. El administrador puede precargar un archivo en modalidad de slo lectura o de grabacin en memoria cach en la memoria cach. Permanecer ah entre usos normales. Como mnimo, los registros modificados se graban en el disco cuando el ltimo usuario lo cierra, mientras est en modalidad de grabacin diferida.
El mandato contiene el siguiente componente: Componentes Descripcin 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.
350
El mandato es:
DAEMON.FILE.CACHE [[START x ] | STOP]
El mandato contiene los siguientes componentes: Componentes Descripcin START Inicia el daemon de memoria cach asncrono en segundo plano. x Identifica el periodo de pausa entre exploraciones. x se expresa en unidades de 10 milisegundos.
3. Cambie de directorio a la va de acceso especificada. Por ejemplo, si la va de acceso es /u1/uv, el mandato es:
cd /u1/uv
Resultados Ahora est en la cuenta de inicio de InfoSphere DataStage. En Windows: Acerca de esta tarea Para iniciar una sesin 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 ubicacin del motor de servidor instalado. Ahora est en la cuenta de inicio.
351
Elemento ajustable Descripcin DISKCACHE Especifica el estado del subsistema de memoria cach de disco. Este elemento ajustable debe tener un valor positivo cuando utiliza la memoria cach pblica de enlaces o la memoria cach del sistema. Los valores vlidos son los siguientes: v -1, que significa ALLOW. La memoria cach de disco est inactiva. Los archivos abiertos en modalidad de memoria cach de grabacin o de slo lectura se procesan como si se hubieran abierto en modalidad de grabacin/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 grabacin o de slo lectura producen un error. v n. El subsistema de memoria cach de disco est activo. n representa el tamao 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 lmite de 176 mb. DCBLOCKSIZE Especifica el tamao de un almacenamiento intermedio de memoria cach de disco compartida en unidades de 1K (1024 bytes). Los valores vlidos son 4, 8, 16 y 32. 16 es el valor predeterminado. DCMODULUS Especifica el nmero de cadenas de almacenamiento intermedio de memoria cach de disco compartida en las que se divide un archivo. Los valores vlidos son 128, 256, 512 y 1024. 256 es el valor predeterminado. Este elemento ajustable es especfico 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 vlidos son de 1 a 100. 80 es el valor predeterminado. Este elemento ajustable es especfico 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 grabacin diferida antes de desecharse en el disco. Los valores vlidos son de 1 a 100. 80 es el valor predeterminado. Este elemento ajustable es especfico de la memoria cach del sistema. 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 vlidos son de 1 a 100. 50 es el valor predeterminado. Este elemento ajustable es especfico de la memoria cach del sistema. DCWRITEDAEMON Especifica el estado del daemon de grabacin en segundo plano de la memoria cach de disco compartida. Los valores vlidos son los siguientes: v 0 es el valor predeterminado e indica que el daemon de grabacin en segundo plano est inactivo. n indica que el daemon de grabacin est activo. n es la cantidad de tiempo que se detiene el daemon de grabacin entre dos grabaciones, expresada en unidades de 10 milisegundos. Este elemento ajustable es especfico de la memoria cach del sistema.
352
353
enlaces y la memoria cach del sistema en la pgina 351. Cualquier plataforma puede mantener un subconjunto de un archivo o una tabla en la memoria cach con la liberacin de los conjuntos de bloques antiguos cuando se necesitan nuevos conjuntos de bloques. Cuando hay varios archivos de gran tamao en la memoria cach, slo un pequeo subconjunto de los bloques de un archivo residirn en la memoria cach, pero el administrador puede modificar los elementos ajustables para permitir el manejo eficaz de un subconjunto pequeo. DCFLUSHPCT proporciona al administrador control sobre el algoritmo de sustitucin de conjuntos de bloques para evitar la inanicin de slo lectura. DCMAXPCT controla el porcentaje mximo de la memoria cach que puede ocupar un archivo. La memoria cach de disco sabe cundo ningn proceso activo requiere acceso al bloque de un archivo y lo libera si es necesario. El rendimiento ptimo se consigue cuando el tamao 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 proporcin (90-95%) de los grupos referenciados. Si el tamao de DISKCACHE es inadecuadamente pequeo, se produce la hiperpaginacin en la memoria cach de disco. DCMODULUS tiene algn efecto en el tiempo de ejecucin, especialmente para los archivos grandes. Cuando este nmero disminuye, la longitud de las cadenas activas de los almacenamientos intermedios de DCBLOCKSIZE aumenta, lo que supone un mayor tiempo para ejecutar una bsqueda secuencial de una entrada. El establecimiento de DCMODULUS en 1024 es generalmente el ptimo para los archivos grandes (de ms 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 eliminacin de algunos de la agrupacin de almacenamientos intermedios disponibles. El valor predeterminado de DCBLOCKSIZE es 16. Si es menor, la E/S fsica aumentar y las cadenas de matrices tendrn una mayor longitud, lo que ralentiza el sistema. DCBLOCKSIZE debe ser mayor que 16 slo si la plataforma puede manejar las solicitudes de E/S fsica 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 bsqueda secuencial y permitir la lectura previa de los bloques en el rea del solicitado. Por este motivo, el tamao de separacin 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 continuacin, 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.
Tabla 19. Valores de ejemplo Tamao de archivo 32 mb 32 mb 64 mb 64 mb 160 mb 320 mb 1024 mb 1024 mb 1024 mb 1024 mb DCBLOCKSIZE 8k 8k 8k 16k 16k 16k 16k 16k 16k 32k DCMODULUS 128 256 256 256 256 512 256 512 1024 1024 Longitud media de cadena de conjunto de bloques 32 16 32 16 40 40 256 128 64 32
354
Tabla 19. Valores de ejemplo (continuacin) Tamao de archivo 2048 mb DCBLOCKSIZE 32k DCMODULUS 1024 Longitud media de cadena de conjunto de bloques 64
Los archivos de tipo 30 son realmente dos archivos: uno para los grupos primarios y el otro para los bloques de desbordamiento. 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 grabacin entre dos grabaciones. En una plataforma de multiprocesador, el periodo de pausa del daemon de grabacin, que se especifica en DCWRITEDAEMON, puede ser muy bajo; en un procesador individual, el valor debe ser 10 o superior.
355
356
Para obtener informacin sobre el estado de accesibilidad de los productos de IBM, consulte la informacin de accesibilidad de productos de IBM en http://www.ibm.com/able/product_accessibility/ index.html.
Documentacin accesible
Se proporciona documentacin accesible sobre los productos de InfoSphere Information Server en un Information Center. El Information Center presenta la documentacin en formato XHTML 1.0, que se puede ver en la mayora de navegadores web. El formato XHTML permite establecer propiedades de visualizacin en el navegador. Tambin permite utilizar lectores de pantalla y otras tecnologas de asistencia para acceder a la documentacin.
IBM y la accesibilidad
Consulte el IBM Human Ability and Accessibility Center para obtener ms informacin sobre el compromiso de IBM con respecto a la accesibilidad.
357
358
359
360
361
362
Avisos
Es posible que IBM no comercialice en otros pases los productos, servicios o caractersticas que se describen en este manual. Consulte al representante local de IBM para obtener informacin 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 slo 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 tramitacin que afecten al tema tratado en este documento. La posesin de este documento no otorga ninguna licencia sobre dichas patentes. Puede enviar consultas sobre licencias, por escrito, a la siguiente direccin: 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), pngase en contacto con el departamento de la propiedad intelectual de IBM de su pas o enve las consultas, por escrito, a la siguiente direccin: Intellectual Property Licensing Legal and Intellectual Property Law IBM Japan Ltd. 1623-14, Shimotsuruma, Yamato-shi Kanagawa 242-8502 Japn El prrafo siguiente no es aplicable al Reino Unido ni a ningn pas en donde tales disposiciones sean incompatibles con la legislacin local: INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA ESTA PUBLICACIN TAL CUAL, SIN GARANTA DE NINGUNA CLASE, NI EXPLCITA NI IMPLCITA, INCLUIDAS, PERO SIN LIMITARSE A ELLAS, LAS GARANTAS IMPLCITAS DE NO VULNERACIN DE DERECHOS, COMERCIALIZACIN O IDONEIDAD PARA UN FIN DETERMINADO. Algunos estados no permiten la declaracin de limitacin de responsabilidad de garantas expresas o implcitas en determinadas transacciones. Por consiguiente, es posible que esta declaracin no se aplique en su caso. Esta informacin podra contener imprecisiones tcnicas o errores tipogrficos. La informacin de este documento est sujeta a cambios peridicos; dichos cambios se incorporarn en nuevas ediciones de la publicacin. Es posible que IBM realice mejoras o efecte cambios en el(los) producto(s) y/o el(los) programa(s) descritos en esta publicacin en cualquier momento sin previo aviso. Las referencias hechas en esta publicacin a sitios Web que no son de IBM se proporcionan slo para la comodidad del usuario y no constituyen un aval de esos sitios Web. La informacin contenida en estos sitios Web no forma parte de la informacin del presente producto IBM, y el usuario es responsable de la utilizacin de dichos sitios.
363
IBM puede utilizar o distribuir cualquier informacin que se le facilite de la manera que considere adecuada, sin contraer por ello ninguna obligacin con el remitente. Los licenciatarios de este programa que deseen obtener informacin sobre l con el fin de habilitar: (i) el intercambio de informacin entre programas creados de forma independiente y otros programas (incluido ste) y (ii) el uso mutuo de la informacin intercambiada, deben ponerse en contacto con: IBM Corporation J46A/G4 555 Bailey Avenue San Jos, CA 95141-1003 EE.UU. Dicha informacin puede estar disponible, sujeta a los trminos 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 segn los trminos 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 varen de forma significativa. Algunas mediciones pueden haberse efectuado en sistemas a nivel de desarrollo, y no existe ninguna garanta de que dichas mediciones sean las mismas en sistemas de disponibilidad general. Adems, es posible que algunas mediciones se hayan estimado mediante extrapolacin. Los resultados reales pueden variar. Los usuarios de este documento deben verificar los datos aplicables a su entorno especfico. La informacin 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 pblico. IBM no ha probado dichos productos ni puede confirmar la precisin del rendimiento, la compatibilidad ni ninguna otra afirmacin 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 estn sujetas a cambio o cancelacin sin previo aviso, y slo representan objetivos. Esta informacin slo tiene como objeto la planificacin. La informacin de este documento est sujeta a cambios antes de que los productos descritos estn disponibles. Este manual contiene ejemplos de datos e informes que se utilizan en operaciones comerciales diarias. Para ilustrarlos de la forma ms 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 informacin contiene programas de aplicacin de ejemplo en cdigo fuente que ilustran tcnicas de programacin 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 aplicacin que se ajusten a la interfaz de programacin de aplicaciones para la plataforma operativa para la que se han escrito los programas de ejemplo. Estos ejemplos no se han probado bajo todas las condiciones posibles. IBM, por lo tanto, no puede garantizar ni dar por sentada la fiabilidad, la capacidad de mantenimiento ni el funcionamiento de dichos programas. Los programas de ejemplo se suministran "TAL CUAL", sin garanta de ninguna clase. IBM no se hace responsable de los daos que se hayan podido causar debido al uso de los programas de ejemplo.
364
Todas las copias o partes de estos programas de ejemplo, o cualquier trabajo derivado, debern incluir un aviso de copyright como el siguiente: (nombre de la empresa) (ao). Partes de este cdigo provienen de programas de ejemplo de IBM Corp. Copyright IBM Corp. _entrar el ao o los aos_. Reservados todos los derechos. Si est visualizando esta informacin en copia software, es posible que las fotografas 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 pases 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 trminos siguientes son marcas registradas de otras compaas: Adobe es una marca registrada de Adobe Systems Incorporated en los Estados Unidos y/o en otros pases. IT Infrastructure Library es una marca registrada de Agencia Central de Telecomunicaicones e informtica and Telecommunications Agency que es ahora parte de la Oficina de Comercio Gubernamental. Intel, el logotipo de Intel, Intel Inside, el logotipo de Intel Inside, Intel Centrino, el logotipo de Intel Centrino, Celeron, Intel Xeon, Intel SpeedStep, Itanium y Pentium son marcas comerciales o marcas registradas de Intel Corporation o de sus subsidiarias en los Estados Unidos y en otros pases. Linux es una marca registrada de Linus Torvalds en los Estados Unidos y/o otros pases. Microsoft, Windows, Windows NT y el logotipo de Windows son marcas registradas de Microsoft Corporation en los Estados Unidos y/o otros pases. ITIL es un marca registrada y es una marca registrada comunitaria de la Oficina de Comercio Gubernamental, y est registrada en la Oficina de marcas registradas y patentes de los EE.UU. UNIX es una marca registrada de The Open Group en Estados Unidos y en otros pases. Cell Broadband Engine es una marca registrada de Sony Computer Entertainment, Inc. en los Estados Unidos y/o en otros pases y se utiliza bajo la licencia correspondiente. Java y todas las marcas registradas y logotipos basados en Java son marcas registradas de Oracle y/o sus afiliadas. El servicio postal de los Estados Unidos (United States Postal Service) es propietario de las siguientes marcas registradas: CASS, CASS Certified, DPV, LACSLink, ZIP, ZIP + 4, ZIP Code, Post Office, Postal Service, USPS y United States Postal Service. IBM Corporation tiene titularidad no exclusiva de licencias de DPV y LACSLink de United States Postal Service. Otros nombres de empresas, productos o servicios pueden ser marcas registradas o marcas de servicio de otros.
365
366
Servicios de software
Mi IBM
Formacin y certificacin
Representantes de IBM
Facilitar comentarios
La tabla siguiente describe la forma en que se facilitan comentarios a IBM acerca de productos y documentacin de productos.
Tabla 21. Facilitar comentarios a IBM Tipo de comentarios Comentarios sobre el producto Accin Puede proporcionar comentarios generales sobre productos mediante la encuesta de consumo en el sitio web www.ibm.com/software/data/info/consumabilitysurvey
367
Tabla 21. Facilitar comentarios a IBM (continuacin) Tipo de comentarios Comentarios sobre la documentacin Accin Para realizar comentarios acerca del Information Center, pulse el enlace Comentarios situado en la parte superior derecha de cualquiera de los temas del Information Center. Tambin puede enviar sus comentarios sobre los manuales en archivos PDF, el Information Center o cualquier otra documentacin de los siguientes modos: v Formulario de comentarios en lnea de los lectores: www.ibm.com/software/data/rcf/ v Correo electrnico: comments@us.ibm.com
368
A
accesibilidad de los productos accesibilidad 357 acceso de archivo remoto 69 AIX, requisitos de memoria cach de disco 339 almacenamiento en la memoria cach, consulte almacenar en memoria cach de disco 338 almacenamiento en la memoria cach de disco de archivo hash, consulte almacenar en memoria cach de disco 335 almacenamiento en la memoria cach del sistema ajustar 351 directrices 338 preparacin 338, 340 utilizar 342 almacenamiento en la memoria cach privada de enlaces directrices 338 preparacin 338 utilizar 341 almacenamiento en la memoria cach pblica de enlaces ajustar 351 directrices 338 preparacin 338, 340 utilizar 342 almacenar en memoria cach de disco ajustar 351 almacenamiento en la memoria cach del sistema 338, 342, 351 almacenamiento en la memoria cach privada de enlaces 338, 341 almacenamiento en la memoria cach pblica de enlaces 338, 342, 351 archivos hash alterar 343 cambiar estado 348 colocar en la memoria cach 350 crear 342, 343 eliminar de la memoria cach 350 obtener el estado 344 cuenta dshome, iniciar sesin 351 daemon de memoria cach, iniciar/detener 350 eficacia de los procesos 338 funcionalidad 335 mandatos de servidor 343 preparacin 338, 340
D
daemon de memoria cach, iniciar/detener 350 definiciones de columna campos clave 58 clave 57 elemento de datos 57, 58 factor de escala 57, 58 longitud 57, 58 nombre de columna 57, 58 depurador barra de herramientas 128 trabajos de servidor 127 derivaciones, vase derivaciones de columna 115 derivaciones de columna de salida, definir 115 editar varias 116 documentacin del producto acceder 359 DSSetDisableJobHandler, funcin 214 DSSetDisableProjectHandler, funcin 215
B
barras de herramientas depurador 128 Editor de transformador 109 bsqueda de mltiples filas 119
C
campo clave 58 carcter raz 21 caracteres almacenamiento 19 ASCII de 7 bits[caracteres siete] 20 coma decimal 21 caracteres de almacenamiento Categora de hora definicin 21 Categora monetaria definicin 21 Categora numrica definicin 21
19
369
E
Editor de expresiones 123 Editor de transformador 108 rea de enlaces 109 rea de metadatos 109 barra de herramientas 109 mens de atajos 110 ejemplos columnas de giros 97 funciones de transformacin 333 subrutinas anteriores y posteriores 332 en memoria cach, archivos hash alterar 343 cambiar estado 348 colocar en la memoria cach de disco 350 crear 342, 343 eliminar de la memoria cach de disco 350 obtener el estado 344 enlaces de rechazo 111 entornos locales visin general 20 equijoins 111 errores compilacin 132 etapa Command programas BASIC 64 terminologa 61 visin general 60 Etapa Command enlace de entrada 60 enlace de salida 60 funcionalidad 60 mandato dsjob 64 mandatos TCL 64 pgina Entrada 61, 63 Pgina Etapa 61 pgina Salida 61, 64 Separador Columnas pgina Entrada 63 pgina Salida 64 separador General Pgina Etapa 61 Separador General pgina Entrada 63 pgina Etapa 62 pgina Salida 64 separador Soporte multilingstico 61, 62 utilizar mandatos 64 etapas incorporadas 1 suplementarias 1, 2 etapas Aggregator enlace de entrada 55 Separador General Pgina Etapa 56 Etapas Aggregator enlaces de salida 56 ordenar los datos de entrada 57 pgina Entradas 56 Pgina Etapa 56 pgina Salidas 58 Separador Columnas pgina Entradas 57
Etapas Aggregator (continuacin) Separador Columnas (continuacin) pgina Salidas 58 Separador General pgina Entradas 57 pgina Salidas 58 subrutinas anteriores y posteriores 56 visin general 55 Etapas Complex Flat File columnas GROUP y OCCURS 36 consideraciones sobre la fecha 38 enlaces de salida 27, 30 funcionalidad 28 gestin de OCCURS paralelas 35 pgina Etapa 29, 30 pgina Salida 30, 37 proceso de metadatos 35 REDEFINES 37 separador Columnas de origen 33 separador Criterios de seleccin 37 separador General pgina Salida 33 Separador General pgina Salida 30 separador Seleccionar columnas 36 separador Soporte multilingstico 29 terminologa 28 valores del campo Descripcin 36 visin general 27 etapas Folder pgina Entradas 39 Pgina Etapa 38 pgina Salidas 39 Separador Columnas pgina Entradas 39 pgina Salidas 39 Separador General 38 Separador Propiedades 39 separador Soporte multilingstico 38 visin general 38 etapas FTP Plug-in enlaces de entrada 69 enlaces de salida 69 funcionalidad 69 propiedades 70, 82 representacin de datos 82, 83 terminologa 70 visin general 68 etapas Hashed File enlaces de entrada 40 enlaces de salida 40 opciones de creacin de archivo 42 pgina Entradas 41 Pgina Etapa 40 pgina Salidas 42 Separador Columnas pgina Entradas 41 pgina Salidas 43 Separador General pgina Entradas 41 Pgina Etapa 40 pgina Salidas 43 separador Seleccin 43 smbolo del euro 44
etapas Hashed File (continuacin) va de acceso de directorio 40 visin general 40 etapas InterProcess, vase etapas IPC 65 etapas IPC enlace de entrada 68 enlace de salida 68 pgina Entradas 68 Pgina Etapa 68 pgina Salidas 68 Separador Columnas pgina Entradas 68 pgina Salidas 68 Separador General pgina Entradas 68, 87 Pgina Etapa 68, 86 pgina Salidas 68, 88 Separador Propiedades 68 visin general 65 etapas Link Collector enlaces de entrada 85 enlaces de salida 85 pgina Entradas 85 Pgina Etapa 83 pgina Salidas 85 para optimizar el rendimiento de los trabajos 9, 83 Separador Columnas pgina Entradas 85 pgina Salidas 85 separador General Pgina Etapa 84 Separador General pgina Entradas 85 Pgina Etapa 83 pgina Salidas 85 separador Propiedades 84 subrutinas anteriores y posteriores 84 visin general 83 etapas Link Partitioner enlace de entrada 85 enlaces de salida 85 pgina Entradas 87 Pgina Etapa 86 pgina Salidas 88 para optimizar el rendimiento de los trabajos 9, 85 Separador Columnas pgina Entradas 87 pgina Salidas 88 separador Propiedades 87 subrutinas anteriores y posteriores 87 visin general 85 etapas Merge enlaces de salida 88 funcionalidad 88 pgina Etapa 89 Pgina Etapa 90 pgina Salida 90, 95 Separador Correlacin 94, 95 Separador General pgina Etapa 89 pgina Salida 90, 91 separador Propiedades de archivo de entrada 91, 94
370
etapas Merge (continuacin) 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 multilingstico 89 tamao de archivo de entrada, ajustar 90 tareas necesarias 88 visin general 2, 88 etapas Pivot ejemplos 97 enlaces de salida 97 funcionalidad 96 pgina Entradas 97 pgina Salidas 99 Separador Columnas pgina Entradas 97 pgina Salidas 97 visin general 2, 96 etapas Row Merger enlace de entrada 99 enlace de salida 99 funcionalidad 99 pgina Entrada 99, 100 Pgina Etapa 99 pgina Salida 101 Separador Columnas pgina Entrada 100 pgina Salida 101 separador Formato 100 separador General pgina Entrada 100 Separador General Pgina Etapa 99 pgina Salida 101 visin general 99 etapas Row Splitter enlace de entrada 101 enlace de salida 101 funcionalidad 101 pgina Entrada 102 Pgina Etapa 101 pgina Salida 102, 103 Separador Columnas pgina Entrada 102 pgina Salida 103 separador Formato 102, 103 separador General pgina Salida 102 Separador General pgina Entrada 102 Pgina Etapa 101 visin general 101 etapas Sequential File enlaces de entrada 44 enlaces de salida 44 pgina Entradas 46 Pgina Etapa 45 pgina Salidas 48 Separador Columnas pgina Entradas 47
etapas Sequential File (continuacin) Separador Columnas (continuacin) pgina Salidas 49 separador Formato pgina Entradas 46 pgina Salidas 48 Separador General pgina Entradas 46 Pgina Etapa 45 pgina Salidas 48 separador Soporte multilingstico 45 terminadores de lnea 45 visin general 44 etapas Sort enlace de salida 104 mejorar rendimiento 104 Etapas Sort criterios de ordenacin 105, 106 enlace de entrada 104 funcionalidad 104 mejorar rendimiento 105 propiedades 106, 108 propiedades configurables 104, 105 visin general 103 etapas suplementarias 1, 2 etapas Transformer Editor de expresiones 123 rechazos 120 Etapas Transformer conceptos bsicos 110 edicin 112 enlaces de entrada 110 enlaces de salida 111 orden de enlaces 121 pgina Entradas 126 Pgina Etapa 126 pgina Salidas 126 propiedades 126 restricciones 120 subrutinas anteriores y posteriores 120 variables de la etapa local 122 varias derivaciones 116 visin general 108 expresin de formato 228 expresiones clave de columna de entrada 119 definicin 137 edicin 116, 123 validacin 125 expresiones de clave, columna de entrada 119
F
funcin ACos 276 funcin Alpha 172 funcin Ascii 173 funcin ASin 276 funcin ATan 276 funcin BitAnd 174 funcin BitNot 174 funcin BitOr 174 funcin BitReset 174 funcin BitSet 174 funcin BitTest 174
funcin BitXOr 174 funcin Byte 176 funcin ByteLen 176 funcin ByteType 176 funcin ByteVal 177 funcin Cats 179 funcin Char 180 funcin Checksum 180, 186 funcin Col1 181 funcin Col2 182 funcin Compare 184 funcin Convert 185 funcin Cos 276 funcin CosH 276 funcin Count 186 funcin DCount 187 funcin de fecha 187 funcin Div 189 funcin DownCase 190 funcin DQuote 190 funcin DSDetachJob 192 funcin DSGetCustInfo 193 funcin DSGetIPCPageProps 208 funcin DSGetJobInfo 193 funcin DSGetJobMetaBag 196 funcin DSGetLinkInfo 197 funcin DSGetLinkMetaData 198 funcin DSGetLogEntry 199 funcin DSGetLogEventIds 200 funcin DSGetLogSummary 200, 201 funcin DSGetNewestLogId 201, 202 funcin DSGetParamInfo 202 funcin DSGetProjectInfo 204 funcin DSGetStageInfo 204 funcin DSGetStageLinks 206 funcin DSGetStagesOfType 207 funcin DSGetStageTypes 207 funcin DSGetVarInfo 207 funcin DSLogEvent 209 funcin DSLogFatal 209 funcin DSLogInfo 210 funcin DSLogWarn 210 funcin DSSetGenerateOpMetaData 215 funcin DSSetJobLimit 215, 216 funcin DSSetParam 216 funcin DSStopJob 217 funcin DSTransformError 218 funcin Dtx 220 funcin Ebcdic 221 funcin Ereplace 223 funcin Exchange 224 funcin Exp 224 funcin Field 225 funcin FieldStore 226 Funcin FIX 227 funcin Fmt 227 funcin FmtDP 232 funcin Fold 232 funcin FoldDP 233 funcin GetLocale 236 funcin Iconv 238 funcin Index 246 funcin InMat 246 funcin INSERT y sentencia LOCATE 250 funcin Int 247 funcin Left 248 ndice
371
funcin Len 248 funcin LenDP 248 funcin Ln 249 funcin MatchField 253 funcin Mod 254 funcin Neg 255 funcin Not 255 funcin Num 256 funcin Oconv 256 funcin Pwr 266 funcin REAL 268 funcin Right 269 funcin Rnd 270 funcin Seq 270 funcin SetLocale 270 funcin Sin 276 funcin SinH 276 funcin Soundex 272 funcin Space 272 funcin Sqrt 273 funcin SQuote 273 funcin Status 273 funcin Str 274 funcin Tan 276 funcin TanH 276 funcin Time 275 funcin TimeDate 276 funcin Trim 278 funcin TrimB 279 funcin TrimF 279 funcin UniChar 279 funcin UniSeq 279 funcin UpCase 280 funcin Xtd 283 Funciones ActiveX (OLE) funciones de programacin 136, 139 importacin 146 funciones Bit 174 funciones de transformacin crear 140 ejemplos 333 funciones orientadas a los bytes 175 funciones trigonomtricas 276
19
M
mandato dsjob utilizar en etapa Command 64 mandatos externo 2, 60, 65 mandatos de servidor almacenar en memoria cach de disco 343 mandatos externos, ejecutar 2, 60, 65 mandatos TCL, etapa Command 64 marcas registradas lista 363 mens de atajos en el Editor de transformador 110 mltiples filas, bsqueda 119
N
Navegador de datos 30, 42, 48 nombre de rutina 138 nmero de versin, rutina BASIC 138
O
OCCURS paralelas 35 operador If...Then...Else 246 operadores de coincidencia de patrn 265
P
paquetes de InfoSphere DataStage 2 programa de copia en masa, consulte programa de utilidad BCP 1 programa de utilidad BCP (Programa de copia en masa) descripcin 1 programar en InfoSphere DataStage 135 programas BASIC, etapa Command 64 punto de cdigo 19 puntos de interrupcin 127
G
giros columnas 96, 99 definicin 96 ejemplos 97 guardar cdigo en rutinas BASIC
R
141 recuadro de dilogo Buscar 142 recuadro de dilogo Buscar y sustituir 113 Recuadro de dilogo de rutina pgina Creador 138 Pgina de cdigos 139 Pgina Dependencias 139 Pgina General 138 utilizar Buscar 142 utilizar Sustituir 142 recuadro de dilogo Editar metadatos de columna 33 recuadro de dilogo Examinar, vase recuadro de dilogo Seleccionar desde servidor 89 recuadro de dilogo Guardar definicin de tabla 93
I
importacin funciones ActiveX (OLE) externas 146 InfoSphere DataStage, programar en 135
recuadro de dilogo Opciones de creacin de archivo 42 recuadro de dilogo Rutina de servidor 138 recuadro de dilogo Seleccionar desde servidor 89, 140 recuadro de dilogo Sustitucin de expresiones 116 recuadros de dilogo Buscar 142 Buscar y sustituir 113 edicin de metadatos de columna 33 Guardar definicin de tabla 93 Opciones de creacin de archivo 42 Rutina de servidor 138 Seleccionar desde servidor 89 Sustitucin de expresiones 116 recurso de coincidencia automtica de columnas 116 REDEFINES 37 reglas de prioridad, programacin 137 rendimiento almacenar en memoria cach de disco 353, 355 estadsticas 10 etapa Sort 104 Etapa Sort 105 trabajo 5 representacin de datos, etapas FTP Plug-in 82, 83 representacin de datos ASCII, etapas FTP Plug-in 82 representacin de datos binaria, etapas FTP Plug-in 82, 83 restricciones 120 rutinas consulte tambin rutinas BASIC 135 crear 135 probar 142 subrutinas anteriores y posteriores 332 tipos 135 rutinas BASIC cmo guardar cdigo 141 copia 144 crear 135, 140 edicin 143 entrada de cdigo 140 name 138 nmero de versin 138 probar 142 tipo 138 visualizar 143 rutinas incorporadas 332
S
scripts Perl, etapa Command 60 scripts UNIX, etapa Command 60 secuencias de datos mltiples, almacenar en memoria cach de disco 338 sentencia * 171 sentencia $Define 168 sentencia $Include 170 sentencia $Undefine 170 sentencia Call 177 sentencia Case 178
J
juegos de caracteres 19 correlacin entre interno y externo 19 puntos de cdigo 19 juegos de caracteres externos 19
372
sentencia CloseSeq 181 sentencia Common 183 sentencia Deffun 188 sentencia Dimension 188 sentencia End 221 sentencia Equate 222 sentencia Function 234 sentencia GoSub 236 sentencia LOCATE 249 sentencia Mat 252 sentencia Nap 254 sentencia Null 255 sentencia OpenSeq 264 sentencia Randomize 266 sentencia ReadSeq 267 sentencia Return 268 sentencia Return (valor) 269 sentencia Sleep 271 sentencia Subroutine 275 sentencia WEOFSeq 280 sentencia WriteSeq 281 sentencia WriteSeqF 282 sentencias $IfDef y $IfNDef 169 sentencias de asignacin 173 sentencias For...Next 233 sentencias If...Else 243 sentencias If...Then 245 sentencias If...Then...Else 244 sentencias Loop...Repeat 251 sentencias On...GoSub 262 sentencias On...GoTo 263 servicios de software contactar 367 servidor telnet, etapas FTP Plug-in 70 smbolo del euro, utilizar 44, 353 sitios Web no IBM 361 sitios Web no IBM enlaces a 361 soporte cliente 367 soporte al cliente contactar 367 SQL factor de escala de datos 57, 58 precisin de los datos 57, 58 tipo de datos 57, 58 visualizar caracteres 57, 58 subrutina DSExecute 192 subrutina DSSetUserStatus 217 subrutinas anteriores a la etapa etapas Transformer 120 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 descripcin 137 incorporadas 332 subrutinas posteriores a la etapa Etapas Transformer 120 subrutinas posteriores a la etapa, definir Etapas Aggregator 56 etapas Link Collector 84 etapas Link Partitioner 87
subrutinas posteriores a la etapa, definir (continuacin) etapas Transformer 112 supervisor de rendimiento 133
T
tablas de correlacin 19 terminadores de lnea 45 terminadores de lnea de UNIX 45 terminadores de lnea de Windows 45 territorio 21 trabajos compilar 131 ejecutable 127 optimizar el rendimiento 5 transformaciones personalizadas, definir 144
U
Unicode estndar 19 visin general 19
V
valores nulos 57, 58 variables de la etapa 122 variables de la etapa local 122 Ventana de depuracin 128 visin general de entornos locales [visin general entornos locales] 20 de Unicode[visin general Unicode] 19
ndice
373
374
Impreso en Espaa
SC11-7972-00
Spine information:
Versin 8 Release 7