ile rpg reference free (español)

534
iSeries WebSphere ® Development Studio: Guía del programador en ILE RPG Versión 5 SC10-3607-00

Upload: cristian-rodriguez

Post on 26-Nov-2015

2.357 views

Category:

Documents


159 download

TRANSCRIPT

  • iSeriesWebSphere Development Studio:Gua del programador en ILE RPGVersin 5SC10-3607-00

  • iSeriesWebSphere Development Studio:Gua del programador en ILE RPGVersin 5SC10-3607-00

  • Nota!Antes de utilizar esta informacin y el producto al que da soporte, asegrese de leer lainformacin general que se encuentra bajo Avisos en la pgina 491.

    Primera edicin (mayo de 2001)

    Este manual es la traduccin del original ingls: WebSphere Development Studio: ILE RPG Programmerus Guide.Esta edicin se aplica a la Versin 5, Release 1, Modificacin 0, de IBM WebSphere Development Studio para iSeries(5722-WDS), ILE RPG compiler, y a todos los releases y modificaciones posteriores hasta que se indique lo contrarioen nuevas ediciones. Esta edicin es vlida nicamente para sistemas RISC (sistema con conjunto reducido deinstrucciones).

    Esta edicin sustituye a SC10-9414-02.

    Haga sus pedidos de publicaciones a travs de un representante de IBM o de la sucursal de IBM de su localidad.Las publicaciones no estn almacenadas en la direccin indicada ms abajo.

    IBM recibir con agrado sus comentarios. Puede enviarlos a:

    IBM, S.A.National Language Solutions CenterAvda. Diagonal, 57108029 BarcelonaEspaa

    Tambin puede enviar sus comentarios por fax o electrnicamente a IBM. Consulte el apartado Cmo enviar suscomentarios para obtener una descripcin de los mtodos.

    Al enviar informacin a IBM, otorga a IBM un derecho no exclusivo de utilizar o distribuir la informacin decualquier manera que considere adecuada, sin incurrir en ninguna obligacin hacia usted.

    Copyright International Business Machines Corporation 1994, 2001. Reservados todos los derechos.

  • ContenidoAcerca de esta gua . . . . . . . . . ixQuin debera usar esta gua . . . . . . . . . ixRequisitos previos e informacin relacionada . . . ixCmo enviar sus comentarios. . . . . . . . . xNovedades en este release . . . . . . . . . . x

    Cambios en esta gua desde V4R4 . . . . . xvi

    Parte 1. Introduccin a ILE RPG . . . 1

    Captulo 1. Visin general del lenguajede programacin RPG IV . . . . . . . 3Especificaciones de RPG IV . . . . . . . . . 3Programacin de ciclos . . . . . . . . . . . 4

    Lgica de subprocedimiento . . . . . . . . 6Indicadores . . . . . . . . . . . . . . . 6Cdigos de operacin . . . . . . . . . . . 6Ejemplo de un programa ILE RPG . . . . . . . 7Utilizacin del sistema OS/400 . . . . . . . . 13

    Interaccin con el sistema . . . . . . . . 13WebSphere Development Studio para iSeries . . . 14

    Application Development ToolSet . . . . . . 14WebSphere Development Tools for iSeries . . . . 15

    Captulo 2. Programacin de RPG enILE . . . . . . . . . . . . . . . . 19Creacin de programas . . . . . . . . . . 19Gestin de programas . . . . . . . . . . . 21Llamada a programas . . . . . . . . . . . 21Depuracin del fuente . . . . . . . . . . . 22API enlazables . . . . . . . . . . . . . 22Aplicaciones multihebra . . . . . . . . . . 23

    Captulo 3. Estrategias de creacin deprogramas . . . . . . . . . . . . . 25Estrategia 1: aplicacin compatible con OPM . . . 25

    Mtodo . . . . . . . . . . . . . . . 25Ejemplo de un programa compatible con OPM 26Informacin relacionada . . . . . . . . . 27

    Estrategia 2: programa ILE utilizando CRTBNDRPG 27Mtodo . . . . . . . . . . . . . . . 27Ejemplo de un programa ILE utilizandoCRTBNDRPG. . . . . . . . . . . . . 28Informacin relacionada . . . . . . . . . 29

    Estrategia 3: aplicacin ILE utilizandoCRTRPGMOD . . . . . . . . . . . . . 30

    Mtodo . . . . . . . . . . . . . . . 30Marco hipottico de una aplicacin ILE en unsolo lenguaje . . . . . . . . . . . . . 31Marco hipottico de una aplicacin ILE enlenguaje mixto . . . . . . . . . . . . 31Marco hipottico de una aplicacin avanzada . . 32Informacin relacionada . . . . . . . . . 33

    Una estrategia que debe evitar . . . . . . . . 34

    Captulo 4. Creacin de una aplicacinutilizando mltiples procedimientos . . 35Un mdulo de mltiples procedimientos Visingeneral . . . . . . . . . . . . . . . . 35

    Procedimientos principales y subprocedimientos 35Llamadas de prototipos . . . . . . . . . 36

    Ejemplo de un mdulo con mltiplesprocedimientos . . . . . . . . . . . . . 39

    El programa ARRSRPT completo . . . . . . 45Consideraciones acerca de la codificacin . . . . 49

    Consideraciones generales . . . . . . . . 49Creacin del programa . . . . . . . . . 50Consideraciones acerca del procedimientoprincipal . . . . . . . . . . . . . . 50Consideraciones acerca de los subprocedimientos 50

    Para obtener ms informacin . . . . . . . . 51Procedimientos principales . . . . . . . . 51Subprocedimientos . . . . . . . . . . . 51LLamada de prototipos . . . . . . . . . 52

    Parte 2. Creacin y ejecucin deuna aplicacin ILE RPG . . . . . . 53

    Captulo 5. Entrar sentencias fuente . . 55Creacin de una biblioteca y de un archivo fsicofuente . . . . . . . . . . . . . . . . 55Utilizacin del programa de utilidad para entradadel fuente (SEU) . . . . . . . . . . . . . 56Utilizacin de sentencias SQL . . . . . . . . 59

    Captulo 6. Creacin de un programacon el mandato CRTBNDRPG . . . . . 61Utilizacin del mandato CRTBNDRPG . . . . . 61

    Creacin de un programa para la depuracin delfuente . . . . . . . . . . . . . . . 63Creacin de un programa con enlace esttico . . 64Creacin de un objeto de programa compatiblecon OPM . . . . . . . . . . . . . . 65

    Utilizacin de un listado del compilador. . . . . 67Obtencin de un listado del compilador . . . . 67Personalizacin de un listado del compilador . . 68Correccin de errores de compilacin. . . . . 70Correccin de errores durante la ejecucin . . . 72Utilizacin de un listado del compilador para elmantenimiento . . . . . . . . . . . . 73

    Acceso al rea de datos RETURNCODE . . . . . 74

    Captulo 7. Creacin de un programacon los mandatos CRTRPGMOD yCRTPGM . . . . . . . . . . . . . . 77Creacin de un objeto de mdulo . . . . . . . 77

    Utilizacin del mandato CRTRPGMOD . . . . 78

    Copyright IBM Corp. 1994, 2001 iii

    ||||

  • Creacin de un mdulo para la depuracin delfuente . . . . . . . . . . . . . . . 82Ejemplos adicionales . . . . . . . . . . 84Comportamiento de los mdulos ILE RPGenlazados . . . . . . . . . . . . . . 84Mandatos CL relacionados . . . . . . . . 84

    Enlace de mdulos a un programa . . . . . . 84Utilizacin del mandato CRTPGM . . . . . . 86Ejemplos adicionales . . . . . . . . . . 88Mandatos CL relacionados . . . . . . . . 89

    Utilizacin de un listado del enlazador . . . . . 89Modificacin de un mdulo o programa. . . . . 90

    Utilizacin del mandato UPDPGM . . . . . 90Modificacin del nivel de optimizacin . . . . 91Eliminacin de la informacin observable . . . 92Reduccin del tamao de un objeto . . . . . 92

    Captulo 8. Creacin de un programade servicio . . . . . . . . . . . . . 93Visin general de los programas de servicio . . . 93Mtodos para crear programas de servicio . . . . 94Creacin de un programa de servicio utilizandoCRTSRVPGM . . . . . . . . . . . . . . 94

    Modificar un programa de servicio . . . . . 95Mandatos CL relacionados . . . . . . . . 95

    Programa de servicio de ejemplo . . . . . . . 96Creacin del programa de servicio. . . . . . 99Enlace a un programa . . . . . . . . . 100Actualizacin del programa de servicio. . . . 101Ejemplo de listado del enlazador . . . . . . 102

    Captulo 9. Ejecucin de un programa 105Ejecucin de un programa utilizando el mandatoCL CALL. . . . . . . . . . . . . . . 105

    Pasar parmetros utilizando el mandato CLCALL . . . . . . . . . . . . . . . 105

    Ejecucin de un programa desde una aplicacindirigida por un men . . . . . . . . . . 107Ejecucin de un programa utilizando un mandatocreado por el usuario . . . . . . . . . . . 110Respuesta a los mensajes de consulta durante laejecucin . . . . . . . . . . . . . . . 110Finalizacin de un programa ILE . . . . . . . 111Gestin de los grupos de activacin . . . . . . 112

    Cmo especificar un grupo de activacin . . . 112Ejecucin en el grupo de activacin OPM poromisin . . . . . . . . . . . . . . 113Mantenimiento de la compatibilidad entre losprogramas OPM RPG/400 e ILE RPG . . . . 113Suprimir un grupo de activacin . . . . . . 114Mandato Reclamar Recursos . . . . . . . 114

    Gestin del almacenamiento asignadodinmicamente . . . . . . . . . . . . . 115

    Gestin del rea de almacenamiento dinmicopor omisin utilizando operaciones RPG . . . 116Problemas de almacenamiento dinmico . . . 121Gestin del propio almacenamiento dinmicoutilizando las API enlazables ILE . . . . . . 122

    Captulo 10. Llamadas a programas yprocedimientos . . . . . . . . . . 131Visin general de las llamadas a programas oprocedimientos . . . . . . . . . . . . . 131

    Llamadas a programas . . . . . . . . . 132Llamadas a procedimientos. . . . . . . . 132Pila de llamadas . . . . . . . . . . . 133Llamadas recurrentes . . . . . . . . . . 134Consideraciones acerca de cmo pasarparmetros . . . . . . . . . . . . . 136

    Utilizacin de una llamada de prototipos . . . . 137Utilizacin de la operacin CALLP . . . . . 138Realizacin de una llamada en una expresin 138Ejemplos de llamada de formato libre . . . . 139

    Pasar parmetros de prototipos . . . . . . . 139Mtodos para pasar parmetros . . . . . . 139Utilizacin de descriptores operativos . . . . 142Omisin de parmetros . . . . . . . . . 143Comprobacin del nmero de parmetrospasados . . . . . . . . . . . . . . 145Pasar menos datos de los necesarios. . . . . 150Orden de evaluacin . . . . . . . . . . 151Llamadas entre lenguajes . . . . . . . . 151

    Consideraciones sobre las llamadas entre lenguajes 152Utilizacin de las operaciones de llamada deformato fijo . . . . . . . . . . . . . . 153

    Ejemplos de CALL y CALLB . . . . . . . 154Pasar parmetros utilizando PARM y PLIST . . 154

    Volver de un programa o procedimiento llamado 156Volver de un procedimiento principal . . . . 157Volver de un subprocedimiento . . . . . . 159Volver utilizando API ILE enlazables . . . . 159

    Utilizacin de API enlazables . . . . . . . . 160Ejemplos de utilizacin de API enlazables . . . 161

    Llamada a una rutina de grficos. . . . . . . 161Llamada a rutinas especiales . . . . . . . . 162Consideraciones sobre las hebras mltiples . . . 162

    Cmo compartir datos entre ms de un mdulo 163Cmo evitar los puntos muertos entre mdulos 164

    Captulo 11. RPG y el mundo deleBusiness . . . . . . . . . . . . . 167RPG y XML . . . . . . . . . . . . . . 167RPG y MQSeries . . . . . . . . . . . . 167RPG y Java . . . . . . . . . . . . . . 168

    Introduccin a Java y RPG . . . . . . . . 168Llamada a mtodos de Java desde ILE RPG . . 172Mtodos nativos RPG . . . . . . . . . 177Codificacin RPG adicional para utilizar Java 180Consideraciones adicionales . . . . . . . 186Codificacin JNI avanzada . . . . . . . . 187

    Parte 3. Depuracin y manejo deexcepciones . . . . . . . . . . . 193

    Captulo 12. Depuracin de programas 195El depurador del fuente ILE . . . . . . . . 195

    Mandatos de depuracin . . . . . . . . 196Preparacin de un programa para su depuracin 198

    iv Gua del programador en ILE RPG

    |||||||||||||||||||||

  • Creacin de una vista del fuente raz . . . . 199Creacin de una vista del fuente COPY. . . . 200Creacin de una vista de listado . . . . . . 200Creacin de una vista de sentencias . . . . . 201

    Inicio del depurador del fuente ILE . . . . . . 202Ejemplo de STRDBG . . . . . . . . . . 203Establecimiento de opciones de depuracin . . 204

    Adicin/eliminacin de programas de una sesinde depuracin . . . . . . . . . . . . . 204

    Ejemplo de adicin de un programa de servicioa una sesin de depuracin. . . . . . . . 205Ejemplo de eliminacin de programas ILE deuna sesin de depuracin . . . . . . . . 206

    Visualizacin del fuente del programa . . . . . 206Visualizacin de un mdulo diferente . . . . 207Cambio de la vista de un mdulo . . . . . 208

    Establecimiento y eliminacin de puntos deinterrupcin . . . . . . . . . . . . . . 209

    Establecimiento y eliminacin de puntos deinterrupcin de trabajo incondicionales . . . . 210Establecimiento y eliminacin de puntos deinterrupcin incondicionales . . . . . . . 212Establecimiento y eliminacin de puntos deinterrupcin de trabajo condicionales . . . . 213Secuencia de Ordenacin de Idiomas Nacionales(NLSS) . . . . . . . . . . . . . . 216Establecimiento y eliminacin de puntos deinterrupcin de trabajo utilizando nmeros desentencia . . . . . . . . . . . . . . 217Establecimiento y eliminacin de puntos deinterrupcin de hebra condicionales . . . . . 220Eliminacin de todos los puntos de interrupcinde trabajo y hebra . . . . . . . . . . . 220

    Establecimiento y eliminacin de condiciones deobservacin . . . . . . . . . . . . . . 221

    Caractersticas de las observaciones . . . . . 221Establecimiento de condiciones de observacin 222Visualizacin de observaciones activas . . . . 224Eliminacin de condiciones de observacin . . 224

    Ejemplo de establecimiento de una condicin deobservacin . . . . . . . . . . . . . . 225Seguir los pasos del objeto de programa . . . . 227

    Saltar sentencias de llamada . . . . . . . 228Entrar en sentencias de llamada . . . . . . 228Visualizacin de datos y expresiones . . . . 232

    Cambio del valor de los campos . . . . . . . 241Visualizacin de atributos de un campo . . . . 243Igualar un nombre a un campo, expresin omandato . . . . . . . . . . . . . . . 244Soporte de Idiomas Nacionales de depuracin delfuente para ILE RPG . . . . . . . . . . . 245Ejemplo de fuente para ejemplos de depuracin 245

    Captulo 13. Manejo de excepciones 251Visin general del manejo de excepciones . . . . 252

    Manejo de excepciones de ILE RPG . . . . . 254Utilizacin de manejadores de excepciones . . . 257

    Prioridad del manejador de excepciones . . . 257Excepciones anidadas . . . . . . . . . 257Excepciones no manejadas . . . . . . . . 257Consideraciones sobre optimizacin . . . . . 260

    Utilizacin de manejadores especficos de RPG . . 261Especificacin de indicadores de error o delampliador de cdigo de operacin E . . . . 261Utilizacin de un grupo MONITOR . . . . . 262Utilizacin de una subrutina de error . . . . 264Especificacin de un punto de retorno en laoperacin ENDSR . . . . . . . . . . . 274

    Manejadores de condiciones ILE . . . . . . . 275Utilizacin de un manejador de condiciones . . 275

    Utilizacin de manejadores de cancelacin. . . . 282Problemas cuando ILE CL supervisa los mensajesde estado y notificacin . . . . . . . . . . 285

    Captulo 14. Obtencin de un vuelco 289Obtencin de un vuelco con formato ILE RPG . . 289Utilizacin del cdigo de operacin DUMP . . . 289Ejemplo de vuelco con formato . . . . . . . 290

    Parte 4. Trabajar con archivos ydispositivos . . . . . . . . . . . 297

    Captulo 15. Definicin de archivos 299Asociacin de archivos con dispositivos deentrada/salida . . . . . . . . . . . . . 299Denominacin de archivos . . . . . . . . . 301Tipos de descripciones de archivos . . . . . . 301

    Utilizacin de archivos descritos externamentecomo archivos descritos por programa . . . . 302Ejemplo de algunas relaciones habituales entreprogramas y archivos. . . . . . . . . . 303

    Definicin de archivos descritos externamente . . 304Cambio de nombre de formatos de registro . . 304Cambio de nombres de campo . . . . . . 305Ignorar formatos de registro . . . . . . . 305Utilizacin de las especificaciones de entradapara modificar una descripcin externa. . . . 306Utilizacin de las especificaciones de salida . . 308Comprobacin de nivel . . . . . . . . . 309

    Definicin de archivos descrito por programa . . 310Operaciones de gestin de datos y ILE RPGOperaciones E/S . . . . . . . . . . . . 310

    Captulo 16. Consideracionesgenerales sobre archivos . . . . . . 313Alteracin temporal y redireccin de la entrada ysalida de archivos . . . . . . . . . . . . 313

    Ejemplo de redireccin de entrada y salida dearchivos . . . . . . . . . . . . . . 314

    Bloqueo de archivos . . . . . . . . . . . 315Bloqueo de registros . . . . . . . . . . . 316Compartimiento de una va de acceso de datosabierta. . . . . . . . . . . . . . . . 317Spooling . . . . . . . . . . . . . . . 319

    Spooling de salida. . . . . . . . . . . 319SRTSEQ/ALTSEQ en un programa RPG enrelacin con un archivo de DDS . . . . . . . 320

    Captulo 17. Acceso a archivos debase de datos . . . . . . . . . . . 321

    Contenido v

    ||

  • Archivos de base de datos . . . . . . . . . 321Archivos lgicos y archivos fsicos . . . . . 321Archivos de datos y archivos fuente . . . . . 321

    Utilizacin de archivos DISK descritos de formaexterna . . . . . . . . . . . . . . . 322

    Especificaciones de formato de registro . . . . 322Va de acceso . . . . . . . . . . . . 323Claves vlidas para un registro o archivo . . . 325Bloqueo y desbloqueo de registros . . . . . 327

    Utilizacin de archivos DISK descritos porprograma. . . . . . . . . . . . . . . 328

    Archivo indexado . . . . . . . . . . . 328Archivo secuencial . . . . . . . . . . 331Archivo de direcciones de registros . . . . . 331

    Mtodos para el proceso de archivos DISK . . . 332Proceso consecutivo . . . . . . . . . . 333Proceso secuencial por clave . . . . . . . 334Proceso al azar por clave . . . . . . . . 339Proceso secuencial entre lmites . . . . . . 341Proceso por nmero relativo de registro . . . 343

    Operaciones de archivo vlidas . . . . . . . 344Utilizacin del control de compromiso . . . . . 346

    Inicio y final del control de compromiso . . . 347Especificacin de archivos para el control decompromiso . . . . . . . . . . . . . 349Utilizacin de la operacin COMMIT . . . . 349Especificacin del control de compromisocondicional . . . . . . . . . . . . . 351Control de compromiso en el ciclo del programa 352

    Archivos DDM . . . . . . . . . . . . . 352Utilizacin de archivos DDM anteriores a laVersin 3, Release 1 . . . . . . . . . . 353

    Captulo 18. Acceso a dispositivosconectados externamente . . . . . . 355Tipos de archivos de dispositivo . . . . . . . 355Acceso a dispositivos de impresora . . . . . . 356

    Especificacin de archivos PRINTER . . . . 356Manejo del desbordamiento de pgina . . . . 356Utilizacin de la rutina de bsqueda dedesbordamiento en archivos descritos porprograma. . . . . . . . . . . . . . 360Modificacin de la informacin de control deformularios en un archivo descrito porprograma. . . . . . . . . . . . . . 363

    Acceso a dispositivos de cinta . . . . . . . . 365Acceso a dispositivos de pantalla . . . . . . . 366Utilizacin de archivos secuenciales . . . . . . 366

    Especificacin de un archivo secuencial. . . . 366Utilizacin de archivos SPECIAL . . . . . . . 367

    Ejemplo de utilizacin de un archivo SPECIAL 369

    Captulo 19. Utilizacin de archivosWORKSTN . . . . . . . . . . . . 371funcin de comunicaciones intersistemas . . . . 371Utilizacin de archivos WORKSTN descritosexternamente . . . . . . . . . . . . . 371

    Especificacin de indicadores de teclas defuncin en archivos de dispositivo de pantalla . 374

    Especificacin de teclas de mandato en archivosde dispositivo de pantalla . . . . . . . . 374Proceso de un archivo WORKSTN descritoexternamente . . . . . . . . . . . . 375Utilizacin de subarchivos . . . . . . . . 375

    Utilizacin de archivos WORKSTN descritos porprograma. . . . . . . . . . . . . . . 379

    Utilizacin de un archivo WORKSTN descritopor programa con un nombre de formato . . . 380Utilizacin de un archivo WORKSTN descritopor programa sin nombre de formato . . . . 381

    Operaciones vlidas del archivo WORKSTN . . . 382Operacin EXFMT. . . . . . . . . . . 383Operacin READ . . . . . . . . . . . 383Operacin WRITE . . . . . . . . . . . 383

    Archivos de mltiples dispositivos . . . . . . 383

    Captulo 20. Ejemplo de unaaplicacin interactiva . . . . . . . . 387Archivo fsico de base de datos . . . . . . . 387Consulta de men principal . . . . . . . . 388

    MENUPRIN: DDS para un archivo dedispositivo de pantalla . . . . . . . . . 388CLIPRIN: fuente RPG . . . . . . . . . 390

    Mantenimiento de archivo . . . . . . . . . 391MAECLIL1: DDS para un archivo lgico . . . 392MENUMNT: DDS para un archivo dedispositivo de pantalla . . . . . . . . . 393MNTCLI: Fuente RPG . . . . . . . . . 395

    Bsqueda por cdigo postal . . . . . . . . 402MAECLIL2: DDS para un archivo lgico . . . 403MENUBCOD: DDS para un archivo dedispositivo de pantalla . . . . . . . . . 404BUSCOD: Fuente RPG . . . . . . . . . 406

    Bsqueda y consulta por nombre . . . . . . . 410MECLIL3: DDS para un archivo lgico . . . . 411MENUBNOM: DDS para un archivo dedispositivo de pantalla . . . . . . . . . 412NOMBUS: Fuente RPG . . . . . . . . . 415

    Parte 5. Apndices . . . . . . . . 421

    Apndice A. Diferencias decomportamiento entre OPM RPG/400y ILE RPG para AS/400 . . . . . . . 423Compilacin. . . . . . . . . . . . . . 423Ejecucin . . . . . . . . . . . . . . . 424Depuracin y manejo de excepciones . . . . . 424E/S. . . . . . . . . . . . . . . . . 425Datos DBCS en campos de tipo carcter . . . . 427

    Apndice B. Utilizacin de la ayudapara la conversin de RPG III a RPGIV . . . . . . . . . . . . . . . . 429Visin general de la conversin . . . . . . . 429

    Consideraciones sobre los archivos . . . . . 430El archivo de anotaciones cronolgicas . . . . 431Requisitos de la herramienta de ayuda para laconversin . . . . . . . . . . . . . 432

    vi Gua del programador en ILE RPG

  • Funciones que no realiza la ayuda para laconversin . . . . . . . . . . . . . 432

    Conversin del cdigo fuente . . . . . . . . 432El mandato CVTRPGSRC . . . . . . . . 433Conversin de un miembro mediante los valorespor omisin . . . . . . . . . . . . . 438Conversin de todos los miembros de unarchivo . . . . . . . . . . . . . . 439Conversin de algunos miembros de un archivo 439Realizacin de una conversin de prueba . . . 439Obtencin de informes de conversin . . . . 440Conversin de miembros fuente del generadorautomtico de informes . . . . . . . . . 440Conversin de miembros fuente con SQLincluido . . . . . . . . . . . . . . 441Insercin de plantillas de especificaciones . . . 441Conversin de fuente desde un archivo de datos 441

    Ejemplo de conversin de fuente . . . . . . . 442Anlisis de la conversin . . . . . . . . . 444

    Utilizacin del informe de conversin . . . . 445Utilizacin del archivo de anotacionescronolgicas . . . . . . . . . . . . . 447

    Resolucin de problemas de conversin . . . . 448Errores de compilacin en cdigo RPG IIIexistente . . . . . . . . . . . . . . 449Caractersticas de RPG III no soportadas . . . 449Utilizacin de la directiva del compilador/COPY . . . . . . . . . . . . . . 449Utilizacin de estructuras de datos descritosexternamente . . . . . . . . . . . . 452Diferencias de tiempo de ejecucin . . . . . 454

    Apndice C. Los mandatos para crear 455

    Utilizacin de los mandatos de CL . . . . . . 455Cmo interpretar diagramas de sintaxis . . . 455

    Mandato CRTBNDRPG . . . . . . . . . . 456Descripcin del mandato CRTBNDRPG . . . 459

    Mandato CRTRPGMOD . . . . . . . . . . 472Descripcin del mandato CRTRPGMOD . . . 474

    Apndice D. Listados del compilador 475Lectura de un listado del compilador . . . . . 476

    Prlogo . . . . . . . . . . . . . . 476Seccin de fuente . . . . . . . . . . . 478Mensajes de diagnstico adicionales . . . . . 483Posiciones del almacenamiento intermedio desalida . . . . . . . . . . . . . . . 484Tabla de miembros /COPY . . . . . . . . 484Datos de tiempo de compilacin . . . . . . 485Informacin sobre campos de clave . . . . . 485Tabla de referencias cruzadas . . . . . . . 486Lista de referencias externas . . . . . . . 487Resumen de mensajes . . . . . . . . . 488Resumen final . . . . . . . . . . . . 488Errores de generacin de cdigo y de enlace . . 489

    Avisos . . . . . . . . . . . . . . 491Informacin de la interfaz de programacin . . . 492Marcas registradas y marcas de servicio . . . . 492

    Bibliografa . . . . . . . . . . . . 495

    ndice. . . . . . . . . . . . . . . 499

    Contenido vii

  • viii Gua del programador en ILE RPG

  • Acerca de esta guaEsta gua proporciona informacin que muestra cmo utilizar el compilador ILERPG (ILE RPG) de Integrated Language Environment. ILE RPG es unaimplementacin del lenguaje RPG IV en el servidor iSeries con el sistema operativoOperating System/400 (OS/400). Utilice esta gua para crear y ejecutar aplicacionesILE desde el fuente RPG IV.

    Esta gua le muestra cmo:v Entrar sentencias fuente de RPG IVv Crear mdulosv Especificar enlaces lgicos de mdulosv Ejecutar un programa ILEv Llamar a otros objetosv Depurar un programa ILEv Manejar excepcionesv Definir y procesar archivosv Acceder a dispositivosv Convertir programas de un formato RPG III a un formato RPG IVv Leer listados del compilador

    Quin debera usar esta guaEsta gua esta pensada para programadores que conocen el lenguaje deprogramacin RPG pero que desean aprender cmo utilizarlo en el entorno ILE.Esta gua tambin est pensada para programadores que quieran convertirprogramas RPG III al formato RPG IV. Est diseada para servir de gua en lautilizacin del compilador ILE RPG en el sistema iSeries.

    Si bien esta gua muestra cmo utilizar RPG IV en una estructura ILE, noproporciona informacin detallada acerca de las especificaciones y operaciones deRPG IV. Para obtener una descripcin detallada del lenguaje, consulte lapublicacin ILE RPG Reference, SC09-2508-03.

    Antes de utilizar esta gua, debe:v Saber utilizar los mens y las pantallas del servidor iSeries o los mandatos del

    lenguaje de control (CL).v Tener la autorizacin adecuada para los mandatos CL y los objetos que se

    describen en esta gua.v Entender perfectamente los conceptos de ILE tal como se describen de forma

    detallada en la publicacin ILE Concepts, SC41-5606-05.

    Requisitos previos e informacin relacionadaUtilice el iSeries Information Center como punto de partida para buscarinformacin tcnica en relacin con iSeries y AS/400e. Puede acceder alInformation Center de dos formas:v En el sitio Web siguiente:

    http://www.ibm.com/eserver/iseries/infocenter

    Copyright IBM Corp. 1994, 2001 ix

  • v En los CD-ROM que se distribuyen con el pedido de Operating System/400:iSeries Information Center, SK3T-4091-00. Este paquete tambin contiene lasversiones en formato PDF de los manuales de iSeries, iSeries Information Center:Supplemental Manuals, SK3T-4092-00 (que sustituye al CD-ROM de biblioteca ensoporte software).

    El iSeries Information Center contiene asesores y temas importantes, tales comomandatos CL, interfaces de programacin de aplicaciones (API) del sistema,particiones lgicas, clusters, Java, TCP/IP, servicio Web y redes seguras. Tambinfacilita enlaces con Libros rojos de IBM relacionados y enlaces de Internet con otrossitios Web de IBM como por ejemplo Technical Studio y la pgina de presentacinde IBM.

    Los manuales que son ms relevantes para el ILE RPG compiler figuran en laBibliografa en la pgina 495.

    Cmo enviar sus comentariosSus comentarios son importantes, pues nos permiten proporcionar informacinms precisa y de mayor calidad. IBM acoger con agrado cualquier comentariosobre este manual o cualquier otra documentacin relacionada con iSeries.v Si prefiere enviar sus comentarios por correo, utilice la direccin siguiente:

    IBM, S.A.National Language Solutions CenterAvda. Diagonal, 57108029 BarcelonaEspaa

    Si va a enviar una hoja de comentarios del lector desde un pas diferente de losEstados Unidos, puede entregarla a la delegacin local de IBM o a unrepresentante de IBM para evitar los costes de franqueo.

    v Si prefiere enviar sus comentarios por fax, utilice el nmero siguiente: 34 93 321 6134

    v Si prefiere enviar sus comentarios electrnicamente, utilice una de las siguientesdirecciones de correo electrnico: Comentarios sobre manuales:

    [email protected]@VNET.IBM.COM

    Comentarios sobre el Information Center:[email protected]

    Asegrese de incluir la informacin siguiente:v El nombre del manual.v El nmero de publicacin del manual.v El nmero de pgina o el tema al que hace referencia su comentario.

    Novedades en este releaseEl compilador ILE RPG forma parte del producto IBM WebSphere DevelopmentStudio, que ahora incluye los compiladores C/C++ y COBOL, as como lasherramientas del conjunto de herramientas para el desarrollo de aplicaciones.

    x Gua del programador en ILE RPG

    ||||

  • Las mejoras ms importantes realizadas en RPG IV desde V4R4 son una mayorfacilidad de intercambio de informacin con Java, nuevas funciones incorporadas,especificaciones de clculo de formato libre, control de qu archivo est abierto,nombres de subcampos calificados y manejo de errores mejorado.

    La lista siguiente describe estas mejoras:v Soporte mejorado para llamadas entre Java e ILE RPG utilizando la interfaz

    nativa Java (JNI): Un nuevo tipo de datos de objeto. Una nueva palabra clave de especificacin de definicin: CLASS. La palabra clave de especificacin de definicin LIKE se ha extendido para

    dar soporte a objetos. La palabra clave de especificacin de definicin EXTPROC se ha extendido

    para dar soporte a procedimientos Java. Nuevos cdigos de estado.

    v Nuevas funciones incorporadas: Funciones para convertir un nmero en una duracin que puede emplearse

    en expresiones aritmticas: %MSECONDS, %SECONDS, %MINUTES,%HOURS, %DAYS, %MONTHS y %YEARS.

    La funcin %DIFF, para restar un valor de fecha, hora o indicacin de la horade otro.

    Funciones para convertir una serie de caracteres (o fecha o indicacin de lahora) en una fecha, hora o indicacin de la hora: %DATE, %TIME y%TIMESTAMP.

    La funcin %SUBDT, para extraer un subconjunto de una fecha, hora oindicacin de la hora.

    Funciones para asignar o reasignar almacenamiento: %ALLOC y %REALLOC. Funciones para buscar un elemento en una matriz: %LOOKUP,

    %LOOKUPGT, %LOOKUPGE, %LOOKUPLT y %LOOKUPLE. Funciones para buscar un elemento en una tabla: %TLOOKUP,

    %TLOOKUPGT, %TLOOKUPGE, %TLOOKUPLT y %TLOOKUPLE. Funciones para verificar que una serie contenga slo los caracteres

    especificados (o buscar la primera o ltima excepcin a esta norma):%CHECK y %CHECKR

    La funcin %XLATE, para convertir una serie a partir de una lista decaracteres origen en caracteres destino.

    La funcin %OCCUR, para obtener o establecer la aparicin actual de unaestructura de datos de apariciones mltiples.

    La funcin %SHTDN, para determinar si el operador ha solicitado laconclusin.

    La funcin %SQRT, para calcular la raz cuadrada de un nmero.v Una nueva sintaxis de formato libre para las especificaciones de clculo. Un

    bloque de especificaciones de clculo de formato libre se delimita mediante lasdirectivas de compilacin /FREE y /END-FREE.

    v Puede especificar las palabras clave EXTFILE y EXTMBR en la especificacin dearchivo para controlar qu archivo externo se utiliza cuando se abre un archivo.

    v Soporte para nombres calificados en estructuras de datos: Una nueva palabra clave de especificacin de definicin: QUALIFIED. Esta

    palabra clave especifica que los nombres de subcampos se calificarn con elnombre de la estructura de datos.

    Acerca de esta gua xi

    |||||||||||||||||||||||||||||||||||||||||||||||||

  • Una nueva palabra clave de especificacin de definicin: LIKEDS. Estapalabra clave especifica que los subcampos se replican a partir de otraestructura de datos. Los nombres de subcampos se calificarn con el nombrede la nueva estructura de datos. La palabra clave LIKEDS est permitida paralos parmetros de prototipos; permite que los subcampos del parmetro seutilicen directamente en el procedimiento llamado.

    La palabra clave de especificacin de definicin INZ se ha extendido parapermitir que una estructura de datos se inicialice a partir de su estructura dedatos padre.

    v Manejo de errores mejorado: Tres nuevos cdigos de operacin (MONITOR, ON-ERROR y ENDMON)

    permiten definir un grupo de operaciones con manejo de errores condicionalen funcin del cdigo de estado.

    Asimismo se han efectuado otras mejoras en este release. Son las siguientes:v Puede especificar parntesis en una llamada de procedimiento que no tiene

    parmetros.v Puede especificar que un procedimiento utilice los convenios de llamada C de

    ILE o CL de ILE, en la palabra clave de especificacin de definicin EXTPROC.v Los siguientes nombres /DEFINE estn predefinidos: *VnRnMn, *ILERPG,

    *CRTBNDRPG y *CRTRPGMOD.v La longitud de la serie de bsqueda en una operacin %SCAN ahora puede ser

    superior a la de la serie donde se busca. (La serie no se encontrar, pero no seproducir una condicin de error.)

    v El parmetro para las palabras clave DIM, OCCURS y PERRCD ya no necesitaestar definido con anterioridad.

    v La funcin incorporada %PADDR ahora puede tomar un nombre de prototipo oun nombre de punto de entrada como argumento.

    v Un nuevo cdigo de operacin, ELSEIF, combina los cdigos de operacin ELSEe IF sin que sea necesario un cdigo ENDIF adicional.

    v El cdigo de operacin DUMP ahora proporciona soporte para el expansor A, loque significa que siempre se genera un vuelco, aunque se haya especificadoDEBUG(*NO).

    v Una nueva directiva, /INCLUDE, equivale a /COPY con la excepcin de que elpreprocesador SQL no expande /INCLUDE. Los archivos incluidos no puedencontener variables del lenguaje principal ni SQL intercalado.

    v La palabra clave de especificacin de archivo OFLIND ahora puede tomarcualquier indicador, incluido un indicador con nombre, como argumento.

    v La palabra clave LICOPT (opciones de cdigo interno bajo licencia) ahora estdisponible en los mandatos CRTRPGMOD y CRTBNDRPG.

    v La palabra clave de descripcin de archivo PREFIX ahora puede tomar un literalde caracteres en maysculas como argumento. El literal puede terminar en unpunto, lo que permite que el archivo se utilice con subcampos calificados.

    v La palabra clave de especificacin de definicin PREFIX tambin puede tomarun literal de caracteres en maysculas como argumento. Este literal no puedeterminar en un punto.

    Las tablas siguientes resumen los elementos del lenguaje modificados y nuevos, enfuncin de la parte del lenguaje afectada.

    xii Gua del programador en ILE RPG

    |||||||||||||||||||||||||||||||||||||||||||||||

  • Tabla 1. Elementos del lenguaje modificados desde V4R4Unidad de lenguaje Elemento Descripcin

    Funciones incorporadas %CHAR(expresin{:formato}) El segundo parmetro opcional especifica elformato deseado para una fecha, hora oindicacin de la hora. El resultado utiliza elformato y los separadores del formatoespecificado, no el formato y los separadores de laentrada.

    %PADDR(nombre-prototipo) Esta funcin ahora puede tomar un nombre deprototipo o un nombre de punto de entrada comoargumento.

    Palabras clave deespecificacin dedefinicin

    EXTPROC(*JAVA:nombre-clase:nombre-proc)

    Especifica que se llama a un mtodo Java.

    EXTPROC(*CL:nombre-proc) Especifica un procedimiento que utiliza losconvenios CL de ILE para los valores de retorno.

    EXTPROC(*CWIDEN:nombre-proc) Especifica un procedimiento que utiliza losconvenios C de ILE con ensanchamiento deparmetros.

    EXTPROC(*CNOWIDEN:nombre-proc)

    Especifica un procedimiento que utiliza losconvenios C de ILE sin ensanchamiento deparmetros.

    INZ(*LIKEDS) Especifica que una estructura de datos definidacon la palabra clave LIKEDS hereda lainicializacin de su estructura de datos padre.

    LIKE(nombre-objeto) Especifica que un objeto tiene la misma clase queotro objeto.

    PREFIX(literal-caracteres{:nmero}) Aade como prefijo a los subcampos el literal decaracteres especificado; opcionalmente sustituye elnmero especificado de caracteres.

    Palabras clave deespecificacin de archivo

    OFLIND(nombre) Esta palabra clave ahora puede tomar cualquierindicador con nombre como parmetro.

    PREFIX(literal-caracteres{:nmero}) Aade como prefijo a los subcampos el literal decaracteres especificado; opcionalmente sustituye elnmero especificado de caracteres.

    Cdigos de operacin DUMP (A) Este cdigo de operacin ahora puede tomar elexpansor A, lo que hace que siempre se genere unvuelco aunque se haya especificado DEBUG(*NO).

    Tabla 2. Elementos del lenguaje nuevos desde V4R4Unidad de lenguaje Elemento Descripcin

    Tipos de datos Objeto Se utiliza para los objetos Java.

    Directivas delcompilador

    /FREE ... /END-FREE Las directivas del compilador /FREE.../END-FREE indican un bloque deespecificaciones de clculo de formato libre.

    /INCLUDE Equivale a /COPY, con la excepcin de que elpreprocesador SQL no expande /INCLUDE.Puede utilizarse para incluir archivos anidadosque estn dentro del archivo copiado. El archivocopiado no puede tener variables del lenguajeprincipal ni SQL intercalado.

    Acerca de esta gua xiii

    |||||||||||||||||||||||

    ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

  • Tabla 2. Elementos del lenguaje nuevos desde V4R4 (continuacin)Unidad de lenguaje Elemento Descripcin

    Palabras clave deespecificacin dedefinicin

    CLASS(*JAVA:nombre-clase) Especifica la clase de un objeto.

    LIKEDS(nombre-estr-datos) Especifica que una estructura de datos, unparmetro de prototipos o un valor de retornohereda los subcampos de otra estructura de datos.

    QUALIFIED Especifica que los nombres de subcampos de unaestructura de datos se califican con el nombre dela estructura de datos.

    Palabras clave deespecificacin de archivo

    EXTFILE(nombrearchivo) Especifica qu archivo se abre. El valor puede serun literal o una variable. El nombre de archivopor omisin es el nombre especificado en laposicin 7 de la especificacin de archivo. Labiblioteca por omisin es *LIBL.

    EXTMBR(nombremiembro) Especifica qu miembro se abre. El valor puedeser un literal o una variable. El valor por omisines *FIRST.

    xiv Gua del programador en ILE RPG

    |||||||||||||||||||||||||||||

  • Tabla 2. Elementos del lenguaje nuevos desde V4R4 (continuacin)Unidad de lenguaje Elemento Descripcin

    Funciones incorporadas %ALLOC(nm) Asigna la cantidad de almacenamientoespecificada.

    %CHECK(comparador:base{:inicio}) Localiza el primer carcter de la serie base que noest en el comparador.

    %CHECKR(comparador:base{:inicio}) Localiza el ltimo carcter de la serie base que noest en el comparador.

    %DATE(expresin{:formato-fecha}) Convierte la expresin en una fecha.

    %DAYS(nm) Convierte el nmero en una duracin, en das.

    %DIFF(op1:op2:unidad) Calcula la diferencia (duracin) entre dos valoresde fecha, hora o indicacin de la hora en lasunidades especificadas.

    %HOURS(nm) Convierte el nmero en una duracin, en horas.

    %LOOKUPxx(arg:matriz{:ndiceinicio{:nmelems}})

    Localiza el argumento especificado, o el tipo decoincidencia aproximada especificado, en lamatriz especificada.

    %MINUTES(nm) Convierte el nmero en una duracin, enminutos.

    %MONTHS(nm) Convierte el nmero en una duracin, en meses.

    %MSECONDS(nm) Convierte el nmero en una duracin, enmicrosegundos.

    %OCCUR(nombre-estr-datos) Establece u obtiene la posicin actual de unaestructura de datos de apariciones mltiples.

    %REALLOC(puntero:nmero) Reasigna la cantidad de almacenamientoespecificada para el puntero puntero.

    %SECONDS(nm) Convierte el nmero en una duracin, ensegundos.

    %SHTDN Comprueba si el operador del sistema hasolicitado la conclusin.

    %SQRT(expresin-numrica) Calcula la raz cuadrada del nmero especificado.

    %SUBDT(valor:unidad) Extrae la parte especificada de un valor de fecha,hora o indicacin de la hora.

    %THIS Devuelve un valor de objeto que contiene unareferencia a la instancia de clase en cuyo nombrese llama al mtodo nativo.

    %TIME(expresin{:formato-hora}) Convierte la expresin en una hora.

    %TIMESTAMP(expresin{:*ISO|*ISO0})

    Convierte la expresin en una indicacin de lahora.

    %TLOOKUP(arg:tabla-bsqueda{:tabla-alt})

    Localiza el argumento especificado, o el tipo decoincidencia aproximada especificado, en la tablaespecificada.

    %XLATE(origen:destino:serie{:posinic}) Convierte la serie especificada, en funcin de laserie origen y la serie destino.

    %YEARS(nm) Convierte el nmero en una duracin, en aos.

    Acerca de esta gua xv

    |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

  • Tabla 2. Elementos del lenguaje nuevos desde V4R4 (continuacin)Unidad de lenguaje Elemento Descripcin

    Cdigos de operacin MONITOR Empieza un grupo de operaciones con manejo deerrores condicional.

    ON-ERROR Lleva a cabo el manejo de errores condicional,segn el cdigo de estado.

    ENDMON Finaliza un grupo de operaciones con manejo deerrores condicional.

    ELSEIF Equivale a un cdigo de operacin ELSE seguidode un cdigo de operacin IF.

    Palabras claveCRTBNDRPG yCRTRPGMOD

    LICOPT(opciones) Especifica opciones de cdigo interno bajo licencia(LIC).

    Cambios en esta gua desde V4R4Esta gua de la versin V5R1, ILE RPG Programmers Guide, SC10-9414-03(SC09-2507-03) difiere en muchos puntos de la gua de la versin V4R4, ILE RPGProgrammers Guide, SC10-9414-02 (SC09-2507-02). La mayor parte de los cambiosestn relacionados con las ampliaciones realizadas desde V4R4; otros cambiosresponden a pequeas correcciones tcnicas. Para ayudarle a utilizar este manual,los cambios tcnicos y las ampliaciones se indican con una barra vertical (|).

    Nota: muchos de los ejemplos que contiene esta gua se han modificado a fin demostrarse con el estilo de codificacin de formato libre, en lugar deltradicional. Estos ejemplos modificados no se han marcado con una barravertical. Consulte en la publicacin ILE RPG Reference una descripcindetallada de las diferencias entre los dos estilos de codificacin.

    xvi Gua del programador en ILE RPG

    ||||||||||||||||||||||||

    ||||||||||||

  • Parte 1. Introduccin a ILE RPGAntes de utilizar ILE RPG para crear un programa, debe conocer ciertos aspectosdel entorno en el que lo utilizar. Esta parte proporciona informacin acerca de lossiguientes temas que debera conocer:v Visin general del lenguaje RPG IVv Papel de los componentes de Integrated Language Environment en la

    programacin en RPGv Estrategias de creacin de programas Integrated Language Environmentv Visin general de cmo codificar un mdulo con ms de un procedimiento y

    llamadas de prototipos

    Copyright IBM Corp. 1994, 2001 1

    |

  • 2 Gua del programador en ILE RPG

  • Captulo 1. Visin general del lenguaje de programacin RPGIV

    Este captulo presenta una visin general de las caractersticas del lenguaje deprogramacin RPG IV que distinguen RPG de otros lenguajes de programacin.Debe estar familiarizado con todas estas caractersticas antes de programar en ellenguaje RPG IV. Las caractersticas que aqu se tratan incluyen las cuestionessiguientes:v Codificacin de especificacionesv Ciclo del programav Indicadoresv Cdigos de operacin

    Para obtener ms informacin sobre RPG IV, consulte la publicacin ILE RPGReference.

    Especificaciones de RPG IVEl cdigo RPG se escribe en diversos formularios de especificacin, cada uno conun grupo de funciones determinado. Muchas de las entradas que componen untipo de especificacin dependen de la posicin. Cada entrada debe empezar en unaposicin determinada dependiendo del tipo de entrada y del tipo de especificacin.

    Hay siete tipos de especificaciones de RPG IV. Todos los tipos de especificacin sonoptativos. Las especificaciones deben entrarse en el programa fuente en el ordenque se muestra a continuacin.

    Seccin fuente principal:

    1. Las especificaciones de control proporcionan al compilador informacin acercade la generacin y ejecucin de los programas, como por ejemplo el nombre delprograma, el formato de fecha y la utilizacin de un orden de clasificacinalternativo o de conversin de archivos.

    2. Las especificaciones de descripcin de archivos describen todos los archivosque utiliza el programa.

    3. Las especificaciones de definicin describen los datos que utiliza el programa.4. Las especificaciones de entrada describen los campos y registros de entrada

    que utiliza el programa.5. Las especificaciones de clculo describen los clculos efectuados en los datos y

    el orden de los clculos. Las especificaciones de clculo controlan tambinciertas operaciones de entrada y salida.

    6. Las especificaciones de salida describen los campos y registros de salida queutiliza el programa.

    Seccin de subprocedimiento:

    1. Las especificaciones de procedimiento marcan el principio y el final delsubprocedimiento, indican el nombre del subprocedimiento y si se ha deexportar.

    2. Las especificaciones de definicin describen los datos locales que utiliza elsubprocedimiento.

    Copyright IBM Corp. 1994, 2001 3

  • 3. Las especificaciones de clculo describen los clculos efectuados en los datosglobales y locales y el orden de los clculos.

    Programacin de ciclosCuando un sistema procesa datos, debe realizar el proceso en un ordendeterminado. Este orden lgico viene proporcionado por:v El compilador ILE RPGv El cdigo del programa

    La lgica que proporciona el compilador se denomina ciclo del programa. Cuandodeja que el compilador proporcione la lgica de los programas, esto se denominaprogramacin de ciclos.

    El ciclo del programa es un serie de pasos que el programa repite hasta quealcanza una condicin de fin de archivo. En funcin de las especificaciones quecodifique, el programa puede o no utilizar cada paso del ciclo.

    Si desea que el ciclo controle los archivos, no se necesario que especifique lainformacin de codificacin de las especificaciones de RPG del programa fuenteacerca de registros de estos archivos. El compilador suministra el orden lgico deestas operaciones, y algunas operaciones de salida, cuando se compila el programafuente.

    Si no desea que el ciclo controle los archivos, debe finalizar su programa de otromodo, ya sea creando una condicin de fin de archivo activando el indicador deltimo registro (LR), creando una condicin de retorno activando el indicador deretorno (RT) o regresando directamente mediante la operacin RETURN.

    Nota: no se genera ningn cdigo de ciclo para los subprocedimientos ni cuandose especifica NOMAIN en la especificacin de control.

    La Figura 1 en la pgina 5 muestra los pasos especficos del flujo general del ciclodel programa RPG.

    Visin general de RPG IV

    4 Gua del programador en ILE RPG

  • 1 RPG procesa todas las lneas de cabecera y de detalle (H o D en la posicin17 de las especificaciones de salida).

    2 RPG lee el siguiente registro y activa los indicadores de identificacin deregistro y de nivel de control.

    3 RPG procesa los clculos de totales (condicionados mediante losindicadores de nivel de control L1 a L9, un indicador LR o una entradaL0).

    4 RPG procesa todas las lneas de salida de totales (identificadas medianteuna T en la posicin 17 de las especificaciones de salida).

    5 RPG determina si el indicador LR est activado. Si est activado, elprograma finaliza.

    6 Los campos de los registros de entrada seleccionados se mueven delregistro a un rea de proceso. RPG activa los indicadores de campo.

    7 RPG procesa todos los clculos de detalle (no condicionados mediante losindicadores de nivel de control en las posiciones 7 y 8 de lasespecificaciones de clculo). Utiliza los datos del registro al principio delciclo.

    El primer ciclo

    La primera y ltima vez del ciclo del programa difieren un poco de otros ciclos.Antes de leer el primer registro por primera vez mediante el ciclo, el programaefecta tres cosas:v maneja parmetros de entrada, abre archivos, inicializa datos del programav escribe los registros condicionados mediante el indicador 1P (primera pgina)v procesa todas las operaciones de salida de detalle y de cabecera.

    Por ejemplo, las lneas de cabecera impresas antes de leer el primer registropodran estar formadas por informacin de cabecera de pgina o constante, o

    Figura 1. Ciclo de lgica del programa RPG

    Visin general de RPG IV

    Captulo 1. Visin general del lenguaje de programacin RPG IV 5

  • campos especiales como por ejemplo PAGE y *DATE. El programa tambin ignoralos pasos de clculos de totales y salida de totales en el primer ciclo.

    El ltimo ciclo

    La ltima vez que un programa pasa por el ciclo, cuando no hay ms registrosdisponibles, el programa activa el indicador LR (ltimo registro) y los indicadoresL1 a L9 (nivel de control). El programa procesa los clculos de totales y la salidade totales, a continuacin se cierran todos los archivos y luego finaliza elprograma.

    Lgica de subprocedimientoEl flujo general de un subprocedimiento es mucho ms sencillo; los clculos de unsubprocedimiento se realizan una vez y a continuacin el subprocedimientoregresa. No se genera cdigo de ciclo para un subprocedimiento.

    IndicadoresUn indicador es un campo de un carcter de byte que est activado (1) odesactivado (0). Normalmente se utiliza para indicar el resultado de unaoperacin o para condicionar (controlar) el proceso de una operacin. Losindicadores son como interruptores del flujo de la lgica del programa. Determinanla va que tomar el programa durante el proceso, en funcin de cmo estnestablecidos o de cmo se utilicen.

    Los indicadores pueden definirse como variables en las especificaciones dedefinicin. Tambin puede utilizar indicadores de RPG IV, definidos por unaentrada de una especificacin o por el propio programa RPG IV.

    Cada indicador de RPG IV tiene un nombre de dos caracteres (por ejemplo, LR, 01,H3), y se le hace referencia en algunas entradas de algunas especificaciones slomediante el nombre de dos caracteres, y en otras mediante el nombre especial*INxx en el que xx es el nombre de dos caracteres. Puede utilizar varios tipos deestos indicadores; cada tipo indica algo diferente. Las posiciones de laespecificacin en la que defina un indicador determina la utilizacin del indicador.Una vez que haya definido un indicador en el programa, el indicador puedelimitar o controlar las operaciones de clculo y de salida.

    Las variables de indicadores pueden utilizarse en cualquier lugar donde puedeutilizarse un indicador con el formato *INxx con la excepcin de las palabras claveOFLIND y EXTIND en las especificaciones de descripcin de archivo.

    Un programa en RPG establece y restablece ciertos indicadores en momentosdeterminados durante el ciclo de programa. Adems, el estado de los indicadoresse puede cambiar explcitamente en las operaciones de clculo.

    Cdigos de operacinEl lenguaje de programacin RPG IV le permite realizar muchos tipos deoperaciones distintas con los datos. Los cdigos de operacin, entrados en lasespecificaciones de clculo, indican qu operaciones se efectuarn. Por ejemplo, sidesea leer un registro nuevo, puede utilizar el cdigo de operacin READ. Acontinuacin aparece una lista de los tipos de operaciones disponibles.v Operaciones aritmticasv Operaciones de matrices

    Visin general de RPG IV

    6 Gua del programador en ILE RPG

  • v Operaciones de bitv Operaciones de bifurcacinv Operaciones de llamadav Operaciones de comparacinv Operaciones de conversinv Operaciones del rea de datosv Operaciones de fechav Operaciones declarativasv Operaciones de manejo de erroresv Operaciones de archivov Operacin de activacin de indicadorv Operaciones de informacinv Operaciones de inicializacinv Operaciones de gestin de memoriav Operaciones de moverv Operaciones de mover zonav Operaciones de resultadov Operaciones de tamaov Operaciones de seriev Operaciones de programacin estructuradav Operaciones de subrutinav Operaciones de prueba

    Ejemplo de un programa ILE RPGEste apartado muestra un programa ILE RPG sencillo que realiza los clculos denminas.

    Enunciado del problema

    El departamento de nminas de una empresa pequea desea crear una salidaimpresa que liste la paga de los empleados para aquella semana. Suponga que haydos archivos en discos, EMPLEADO y TRANSACC en el sistema.

    El primer archivo EMPLEADO, contiene los registros de empleados. La figura quese encuentra a continuacin muestra el formato de un registro de empleados:

    El segundo archivo, TRANSACC, tiene el nmero de horas que ha trabajado cadaempleado durante aquella semana, y la bonificacin que pueda haber recibido el

    *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ..*A..........T.Nombre++++RLon++TDpB......Funciones++++++++++++++++++++*A R EMP_RECA EMP_NUMBER 5 TEXT('NMERO DE EMPLEADO')A EMP_NAME 16 TEXT('NOMBRE DE EMPLEADO')A EMP_RATE 5 2 TEXT('TARIFA DE EMPLEADO')A K EMP_NUMBER

    Figura 2. DDS para archivo fsico Empleado

    Visin general de RPG IV

    Captulo 1. Visin general del lenguaje de programacin RPG IV 7

  • empleado. La figura a continuacin muestra el formato de un registro detransacciones:

    La paga de cada empleado se calcula multiplicando las horas (del archivoTRANSACC) y la tarifa (del archivo EMPLEADO) y aadiendo la bonificacindel archivo TRANSACC. Si se trabaja ms de 40 horas, se paga al empleado 1,5veces la tarifa normal.

    Especificaciones de control

    La fecha de hoy se imprimir en formato de da, mes y ao con una barra /como separador.

    Especificacin de descripcin de archivo

    Hay tres archivos definidos en las especificaciones de descripcin de archivo:v El archivo TRANSACC est definido como el archivo Primario de Entrada El

    ciclo del programa ILE RPG controla la lectura de los registros de este archivo.v El archivo EMPLEADO est definido como el archivo de Procedimiento

    Completo de Entrada. La lectura de los registros de este archivo est controladapor las operaciones de las especificaciones de clculo.

    v El archivo QSYSPRT est definido como archivo de salida de impresora.

    *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ..*A..........T.Nombre++++RLon++TDpB......Funciones++++++++++++++++++++*A R TRN_RECA TRN_NUMBER 5 TEXT('NUMERO DE EMPLEADO')A TRN_HOURS 4 1 TEXT('HORAS TRABAJADAS')A TRN_BONUS 6 2 TEXT('BONIFICACIN')

    Figura 3. DDS para archivo fsico TRANSACC

    *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8HPalabrasclave+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++H DATEDIT(*DMY/)

    *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+...FNombarch++IPEASFLreg+LonLK+AIDispos+.Palabrasclave++++++++++++++++++++++FTRANSACC IP E K DISKFEMPLEADO IF E K DISKFQSYSPRT O F 80 PRINTER

    Ejemplo de un programa ILE RPG

    8 Gua del programador en ILE RPG

  • Especificaciones de definicin

    Utilizando las especificaciones de definicin, declare una variable llamada Pagapara que contenga la paga de una semana de un empleado y dos constantesCabecera1 y Cabecera2 como ayuda para imprimir las cabeceras del informe.

    Especificaciones de clculo

    Las entradas de codificacin de las especificaciones de clculo son:v Utilizando el cdigo de operacin CHAIN, el campo TRN_NUMBER del archivo

    de transacciones se utiliza para buscar el registro con el mismo nmero deempleado en el archivo de empleados.

    v Si la operacin CHAIN es satisfactoria (es decir, el indicador 99 estdesactivado), se evala la paga para el empleado. El resultado se redondea yse almacena en la variable llamada Paga.

    *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+...D+Nombre++++++++ETDsDesde+++A/L+++IDc.Palabrasclave++++++++++++++++++++D Paga S 8P 2D Cabecera1 C 'NUMERO NOMBRE TARIFA H-D ORAS BONIFIC. PAGA 'D Cabecera2 C '______ ________________ ______ _-D ____ _______ __________'D CalcPay PR 8P 2D Tarifa 5P 2 VALUED Horas 10U 0 VALUED Bonificacin 5P 2 VALUE

    *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.../free

    chain trn_number emp_rec;if %found(emp_rec);

    pay = CalcPay (emp_rate: trn_hours: trn_bonus);endif;

    /end-free

    Ejemplo de un programa ILE RPG

    Captulo 1. Visin general del lenguaje de programacin RPG IV 9

  • Especificaciones de salida

    Las especificaciones de salida describen qu campos se han de grabar en la salidaQSYSPRT:v Las Lneas de Cabecera que contienen la serie de caracteres de la constante

    REGISTRO DE NOMINA adems de las cabeceras para la informacin dedetalle se imprimirn si est activado el indicador 1P. El ciclo del programa ILERPG activa el indicador 1P durante el primer ciclo.

    v Las Lneas de Detalle estn condicionadas mediante los indicadores 1P y 99. LasLneas de Detalle no se imprimen en el tiempo de 1P. La N99 slo permitir quelas Lneas de detalle se impriman si el indicador 99 est desactivado, el cualindica que se ha encontrado el registro del empleado correspondiente. Si elindicador 99 est activado, se imprimir en su lugar el nmero de empleado y laserie de caracteres de la constante ** NO EN ARCHIVO DE EMPLEADOS **.

    v La Lnea de Total contiene la serie de caracteres de la constante FIN DELISTADO. Se imprimir durante el ltimo ciclo del programa.

    Un subprocedimiento

    El subprocedimiento calcula la paga del empleado utilizando los parmetros que sele han pasado. El valor resultante se devuelve al llamador utilizando la sentenciaRETURN.

    Las especificaciones de procedimiento indican el principio y el fin delprocedimiento. Las especificaciones de definicin definen el tipo de retorno delprocedimiento, los parmetros para el procedimiento y las horas extras de lavariable local.

    *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+...ONombarch++DF..N01N02N03Nomexc++++B++A++Sb+Sa+...........................O..............N01N02N03Campo+++++++++YB.Fin++PConstant/palabraedic/DTformatoOQSYSPRT H 1P 2 3O 35 'REGISTRO DE NOMINAS'O *DATE Y 60O H 1P 2O 60 Cabecera1O H 1P 2O 60 Cabecera2O D N1PN99 2O TRN_NUMBER 5O EMP_NAME 24O EMP_RATE L 33O TRN_HOURS L 40O TRN_BONUS L 49O Paga 60 '$ 0. 'O D N1P 99 2O TRN_NUMBER 5O 35 '** NO EN ARCHIVO DE EMPLEADOS **'O T LRO 33 'FIN DEL LISTADO'

    Ejemplo de un programa ILE RPG

    10 Gua del programador en ILE RPG

  • Todo el programa fuente

    La figura siguiente combina todas las especificaciones utilizadas en este programa.Esto es lo que se debe entrar en el archivo fuente para este programa.

    P CalcPay BD CalcPay PI 8P 2D Tarifa 5P 2 VALUED Horas 10U 0 VALUED Bonificacin 5P 2 VALUED Horas extra S 5P 2 INZ(0)

    /free// Determine las horas extra a pagar.if Horas > 40;

    Horas extra = (Horas - 40) * Tarifa * 1.5Horas = 40;

    endif;// Calcule la paga total y devuelva el resultado al llamador.return Tarifa * Horas + Bonificacin + Horas extra;

    /end-freeP CalcPay E

    *------------------------------------------------------------------------** DESCRIPCIN: Este programa crea una salida impresa de la paga semanal ** de los empleados. **------------------------------------------------------------------------*H DATEDIT(*DMY/)*------------------------------------------------------------------------** Definiciones de archivo **------------------------------------------------------------------------*FTRANSACC IP E K DISKFEMPLEADO IF E K DISKFQSYSPRT O F 80 PRINTER*------------------------------------------------------------------------** Declaraciones de variables **------------------------------------------------------------------------*D Paga S 8P 2

    Figura 4. Ejemplo de un programa de clculo de nminas (Pieza 1 de 3)

    Ejemplo de un programa ILE RPG

    Captulo 1. Visin general del lenguaje de programacin RPG IV 11

  • *------------------------------------------------------------------------** Declaraciones de constantes **------------------------------------------------------------------------*D Cabecera1 C 'NMERO NOMBRE TARIFA H-D ORAS BONIFIC. PAGA 'D Cabecera2 C '______ ________________ ______ _-D ____ _______ __________'*------------------------------------------------------------------------** Definicin de prototipo para subprocedimiento CalcPay **------------------------------------------------------------------------*D CalcPay PR 8P 2D Tarifa 5P 2 VALUED Horas 10U 0 VALUED Bonificacin 5P 2 VALUE*------------------------------------------------------------------------** Para cada registro del archivo de transacciones (TRANSACC), si se ** encuentra empleado, calcular paga de empleado e imprimir detalle. **------------------------------------------------------------------------*/free

    chain trn_number emp_rec;if %found(emp_rec);

    pay = CalcPay (emp_rate: trn_hours: trn_bonus);endif;

    /end-free*------------------------------------------------------------------------** Diseo de informe ** -- imprimir las lneas de cabecera si est activado 1P ** -- si se encuentra el registro (el indicador 99 est desactivado) ** imprimir los detalles de nmina, de lo contrario imprimir un ** registro de excepcin ** -- imprimir 'FIN DEL LISTADO' cuando LR se active **------------------------------------------------------------------------*OQSYSPRT H 1P 2 3O 35 'REGISTRO DE NOMINAS'O *DATE Y 60O H 1P 2O 60 Cabecera1O H 1P 2O 60 Cabecera2O D N1PN99 2O TRN_NUMBER 5O EMP_NAME 24O EMP_RATE L 33O TRN_HOURS L 40O TRN_BONUS L 49O Paga 60 '$ 0. 'O D N1P 99 2O TRN_NUMBER 5O 35 '** NO EN ARCHIVO DE EMPLEADOS **'O T LRO 33 'FIN DEL LISTADO'

    Figura 4. Ejemplo de un programa de clculo de nminas (Pieza 2 de 3)

    Ejemplo de un programa ILE RPG

    12 Gua del programador en ILE RPG

  • Utilizacin del sistema OS/400El sistema operativo que controla todas las interacciones del usuario con el sistemaiSeries se denomina Operating System/400 (OS/400). Desde la estacin de trabajo,el sistema OS/400 le permite:v Iniciar y finalizar una sesinv Operar de forma interactiva con las pantallasv Utilizar la informacin de ayuda en lneav Entrar mandatos de control y procedimientosv Responder a mensajesv Gestionar archivosv Ejecutar programas de utilidad y otros programas

    Si tiene acceso a Internet, puede obtener una lista completa de las publicacionesque versan sobre el sistema OS/400 en el URL siguiente:http://publib.boulder.ibm.com/

    Tambin puede solicitar la publicacin AS/400 V4 System Library Poster,G325-6334-02.

    Interaccin con el sistemaPuede trabajar con el sistema OS/400 utilizando el lenguaje de control (CL). Puedeactuar de forma interactiva con el sistema entrando o seleccionando mandatos CL.El sistema a menudo visualiza una serie de mandatos CL o parmetros demandato adecuados para la situacin de la pantalla. Entonces puede seleccionar elmandato o los parmetros que desee.

    Mandatos del lenguaje de control utilizados con frecuencia

    La tabla siguiente lista algunos de los mandatos CL ms utilizados y los motivospor los que podra utilizarlos.

    *------------------------------------------------------------------------** Subprocedimiento -- calcula la paga de horas extra. **------------------------------------------------------------------------*P CalcPay BD CalcPay PI 8P 2D Tarifa 5P 2 VALUED Horas 10U 0 VALUED Bonificacin 5P 2 VALUED Horas extra S 5P 2 INZ(0)

    /free// Determine las horas extra a pagar.if Horas > 40;

    Horas extra = (Horas - 40) * Tarifa * 1.5Horas = 40;

    endif;// Calcule la paga total y devuelva el resultado al llamador.return Tarifa * Horas + Bonificacin + Horas extra;

    /end-freeP CalcPay E

    Figura 4. Ejemplo de un programa de clculo de nminas (Pieza 3 de 3)

    Utilizacin del sistema OS/400

    Captulo 1. Visin general del lenguaje de programacin RPG IV 13

  • Tabla 3. Mandatos CL utilizados con frecuencia

    Accin Mandato CL Resultado

    Utilizar mens del sistemaGO MAIN Visualiza men principal

    GO INFO Visualiza men de ayuda

    GO CMDRPG Lista los mandatos para RPG

    GO CMDCRT Lista los mandatos para crear

    GO CMDxxx Lista los mandatos para xxx

    LlamarCALL programa Ejecuta un programa

    CompilarCRTxxxMOD Crea un mdulo xxx

    CRTBNDxxx Crea un programa enlazado xxx

    EnlazarCRTPGM Crea un programa a partir de mdulos

    ILE

    CRTSRVPGM Crea un programa de servicio

    UPDPGM Actualiza un objeto de programaenlazado

    DepurarSTRDBG Arranca el depurador del fuente ILE

    ENDDBG Finaliza el depurador del fuente ILE

    Crear archivosCRTPRTF Crea archivo de impresin

    CRTPF Crea archivo fsico

    CRTSRCPF Crea archivo fsico fuente

    CRTLF Crea archivo lgico

    WebSphere Development Studio para iSeriesWebSphere Development Studio para iSeries ofrece un completo conjunto decompiladores y herramientas para el desarrollo de aplicaciones para dar respuestaa sus necesidades de programacin.

    Application Development ToolSetApplication Development ToolSet (ADTS) proporciona un conjunto integrado deherramientas basadas en sistema principal diseadas para satisfacer las necesidadesdel desarrollador de aplicaciones. Este conjunto de herramientas proporcionaherramientas para trabajar con fuentes, objetos y archivos de base de datos deOS/400. Algunas de las herramientas que se proporcionan son: Gestor para eldesarrollo de programacin (PDM), Programa de utilidad para entrada del fuente(SEU) y Ayuda para el diseo de pantallas (SDA). Tiene a su disposicin unainterfaz dirigida por mens, desde la que puede realizar todas las tareas necesariaspara el desarrollo de aplicaciones, como por ejemplo gestin de objetos, edicin,compilacin y depuracin.

    Application Development Manager

    Application Development Manager proporciona a las organizaciones de desarrollode aplicaciones un mecanismo para una gestin eficaz y efectiva de los objetos de

    Utilizacin del sistema OS/400

    14 Gua del programador en ILE RPG

  • la aplicacin durante la vida de la aplicacin. Esta caracterstica de ADTS permiteque un grupo de desarrolladores creen, gestionen y organicen mltiples versionesde su aplicacin a travs de la interfaz Gestor para el desarrollo de programacin(PDM) o directamente desde la lnea de mandatos.

    Un equipo de desarrollo de aplicaciones que utilice ADM puede:v Definir un entorno flexible donde la produccin, la prueba y el mantenimiento

    se puedan gestionar de modo simultneo.v Organizar el trabajo de varios desarrolladores en la misma aplicacin.v Crear (o compilar) una aplicacin de modo fcil y sencillo, compilando

    nicamente aquellos componentes que sea necesario compilar.v Crear y mantener varias versiones de una aplicacin.

    Application Dictionary Services

    Application Dictionary Services es una herramienta de anlisis de incidencia queacelera el anlisis de las aplicaciones. La herramienta almacena la informacinsobre los objetos de aplicacin y su relacin con otros objetos de aplicacin en undiccionario. Un diccionario extrae la informacin de referencias cruzadas sobretodos los objetos de una biblioteca de la aplicacin y los salva en un conjunto dearchivos de base de datos almacenados en una biblioteca. A medida que cambianlos objetos de la aplicacin y su relacin con otros objetos, la informacin deldiccionario se actualiza automticamente.

    Puede utilizar esta caracterstica de ADTS para:v Determinar la incidencia del cambio de un campov Trabajar con campos, archivos o programas que resultaran afectados por el

    cambio de un campov Volver a crear todos los objetos afectados por el cambio de un campov Ver la estructura de una aplicacinv Determinar la jerarqua de referencias de campov Crear, modificar o suprimir programas o archivos que estn documentados en

    un diccionariov Modificar los campos o registros que estn documentados en un diccionariov Examinar la jerarqua de llamadas

    WebSphere Development Tools for iSeriesWebSphere Development Tools for iSeries es un producto de estacin de trabajo(Windows) que incluye dos programas de acceso al servidor:v CoOperative Development Environment/400 (CODE/400)v VisualAge RPGv WebSphere Studiov VisualAge para Java

    CODE/400 contiene diversas caractersticas para ayudarle a editar, compilar ydepurar programas fuente de sistema principal RPG, ILE RPG, COBOL, ILECOBOL, CL (Lenguaje de control), ILE C/C++ e ILE CL; a disear archivos desistema principal de pantalla, impresora y base de datos, y a gestionar loscomponentes que integran una aplicacin. Esto mejora el desarrollo de programasy hace que la carga de trabajo del desarrollo de programas se desplace fuera del

    WebSphere Development Studio para iSeries

    Captulo 1. Visin general del lenguaje de programacin RPG IV 15

  • sistema principal. La aplicacin, una vez creada, se ejecuta en un servidor iSeries.Para el desarrollo y el mantenimiento de aplicaciones RPG e ILE RPG, CODE/400proporciona:v Edicin sensible al lenguaje: incluye resaltado de seales, lneas de formato, una

    serie completa de solicitudes y ayuda en lnea.v Comprobacin de sintaxis incremental: proporciona informacin de retorno sobre

    errores inmediata a medida que se entra cada lnea del fuente.v Verificacin de programas: realiza en la estacin de trabajo toda la comprobacin

    sintctica y semntica que lleva a cabo el compilador, sin generar el cdigoobjeto.

    v Conversin de programas: lleva a cabo en al estacin de trabajo una conversinde OPM a ILE RPG.

    v Un entorno de ventanas para someter las compilaciones y los enlaces del sistemaprincipal.

    v Depuracin a nivel de fuente.v Un programa de utilidad de diseo de DDS: permite modificar con facilidad

    pantallas, informes y archivos de bases de datos.v Acceso a Application Dictionary Services.

    VisualAge RPG ofrece un entorno de desarrollo visual en la plataforma de laestacin de trabajo que permite a los desarrolladores de aplicaciones RPGdesarrollar, mantener y documentar aplicaciones de cliente/servidor. Lasaplicaciones pueden editarse, compilarse y depurarse en la estacin de trabajo. Lasaplicaciones, una vez creadas, se arrancan en una estacin de trabajo y puedenacceder a los datos de sistema principal del iSeries y a otros objetos del iSeries. Suscomponentes integrados permiten a los desarrolladores de aplicaciones conservarsus posibilidades actuales y desarrollar fcilmente aplicaciones RPG de iSeries coninterfaces grficas de usuario.

    IBM WebSphere Studio es el mejor entorno que hay disponible para los equipos dedesarrollo en la Web a fin de organizar y gestionar los proyectos de este tipo.Studio ofrece el producto de desarrollo en la Web ms completo que existe hoy enda con vistas al desarrollo y a la publicacin de sitios Web interactivos para IBMWebSphere Application Server. El soporte incorporado para dispositivosinalmbricos permite crear fcilmente pginas WML, Compact HTML y Voice(VXML). Los asistentes de Studio permiten importar de forma sencilla un sitio WebHTML existente y empezar a aadir JavaServer Pages (JSP) dirigidas por datos.Studio ofrece todo lo necesario para dar soporte a las necesidades de desarrollo deaplicaciones Web, desde el desarrollo de sitios Web de extremo a extremo hasta ladepuracin de la lgica del lado del servidor remota o el despliegue de lasaplicaciones Web.

    VisualAge para Java es un entorno visual integrado que proporciona soporte parael ciclo completo del desarrollo de programas Java. Puede utilizar las caractersticasde programacin visual de VisualAge para Java a fin de desarrollar rpidamenteapplets y aplicaciones Java. En el editor de composicin visual, basta con apuntary pulsar para disear la interfaz de usuario del programa, especificar elfuncionamiento de los elementos de la interfaz de usuario y definir la relacinentre la interfaz de usuario y el resto del programa. VisualAge para Java tambinle ofrece SmartGuides (asistentes) para guiarle de forma rpida en numerosastareas como, por ejemplo, crear nuevos applets, paquetes o clases. El entorno dedesarrollo integrado (IDE) de VisualAge para Java automticamente compila elcdigo fuente de Java en bytecode de Java. Cuando el cdigo fuente se importa en

    WebSphere Development Studio para iSeries

    16 Gua del programador en ILE RPG

  • el espacio de trabajo (desde archivos .java) o se aade desde el depsito, secompila y analiza en relacin con el contenido existente del espacio de trabajo.Utilice VisualAge para Java para:v Crear, modificar y utilizar JavaBeansv Examinar el cdigo al nivel de proyecto, paquete, clase o mtodov Utilizar el depurador visual integrado para examinar y actualizar cdigo

    mientras se ejecutav Utilizar el depurador distribuido para depurar aplicaciones Java desarrolladas

    fuera del IDE

    Si desea aprender ms acerca de WebSphere Development Tools for iSeries,consulte la informacin ms actualizada en la direccin de Internetibm.com/software/ad/wdt400/.

    WebSphere Development Studio para iSeries

    Captulo 1. Visin general del lenguaje de programacin RPG IV 17

  • 18 Gua del programador en ILE RPG

  • Captulo 2. Programacin de RPG en ILEILE RPG es una implementacin del lenguaje de programacin RPG IV deIntegrated Language Environment. Forma parte de la familia de compiladores deILE disponibles en el sistema iSeries.

    ILE es un mtodo reciente de programacin en el sistema iSeries. Es el resultadode mejoras importantes en la arquitectura del iSeries y en el sistema operativoOS/400. La familia de compiladores ILE incluye: ILE RPG, ILE C, ILE COBOL, ILECL y VisualAge for C++. La Tabla 4 muestra los lenguajes de programacinsoportados por el sistema operativo OS/400. Adems del soporte para loslenguajes ILE, se ha mantenido el soporte para los lenguajes del modelo delprograma original (OPM) y del modelo del programa ampliado (EPM).

    Tabla 4. Lenguajes de programacin soportados en iSeriesIntegrated LanguageEnvironment (ILE)

    Modelo del programaoriginal (OPM)

    Modelo del programaampliado (EPM)

    C++ BASIC (PRPQ) FORTRAN

    C CL PASCAL (PRPQ)

    CL COBOL

    COBOL PL/I (PRPQ)

    RPG RPG

    Comparado con OPM, ILE proporciona a los usuarios de RPG mejoras yampliaciones en las siguientes reas de desarrollo de aplicaciones:v Creacin de programasv Gestin de programasv Llamada a programasv Depuracin del fuentev Interfaces de programacin de aplicaciones (API) enlazables

    Cada una de las reas anteriores se describe brevemente en los prrafos siguientesy se trata con ms detalle en los captulos que siguen.

    Creacin de programasEn ILE, la creacin de programas consiste en:1. Compilacin del cdigo fuente en mdulos2. Enlace (combinacin) de uno o ms mdulos en un objeto de programa

    Puede crear un objeto de programa de modo muy similar a como lo hara con laestructura del OPM, con un proceso de un solo paso mediante el mandato Crearprograma en RPG enlazado (CRTBNDRPG). Este mandato crea un mdulotemporal que se enlaza a continuacin con un objeto de programa. Tambin lepermite enlazar otros objetos mediante la utilizacin de un directorio de enlace.

    De forma alternativa, puede crear un programa utilizando mandatos separadospara la compilacin y para el enlace. Este proceso de dos pasos le permite volver autilizar un mdulo o actualizar un mdulo sin volver a compilar los otros mdulos

    Copyright IBM Corp. 1994, 2001 19

  • de un programa. Adems, como puede combinar mdulos a partir de cualquierlenguaje ILE, puede crear y mantener programas en lenguajes mixtos.

    En el proceso de dos pasos, debe crear un objeto de mdulo utilizando el mandatoCrear mdulo en RPG (CRTRPGMOD). Este mandato compila las sentencias fuenteen un objeto de mdulo. Un mdulo es un objeto no ejecutable; debe estarenlazado dentro de un objeto de programa para que se pueda ejecutar. Paraenlazar uno o ms mdulos utilice el mandato Crear programa (CRTPGM).

    Los programas de servicio son un medio de empaquetar los procedimientos deuno o ms mdulos en un objeto enlazado independientemente. Otros programasILE pueden acceder a los procedimientos del programa de servicio, aunque sloexista una copia del programa de servicio en el sistema. La utilizacin deprogramas de servicio proporciona modularidad y facilidad de mantenimiento.Puede utilizar programas de servicio desarrollados por terceros o, a la inversa,empaquetar sus propios programas de servicio para que los utilicen terceros. Unprograma de servicio se crea mediante el mandato Crear programa de servicio(CRTSRVPGM).

    Puede crear un directorio de enlace que contenga los nombres de los mdulos yprogramas de servicio que puede necesitar su programa o programa de servicio.Puede especificarse una lista de directorios de enlace al crear un programa en losmandatos CRTBNDRPG, CRTSRVPGM y CRTPGM. Tambin puede especificarseen el mandato CRTRPGMOD; sin embargo, la bsqueda de un directorio de enlacese efecta cuando el mdulo se enlaza al ejecutarse CRTPGM o CRTSRVPGM. Undirectorio de enlace puede reducir el tamao del programa ya que los mdulos oprogramas de servicio listados en un directorio de enlace nicamente se utilizan sison necesarios.

    La Figura 5 muestra los dos procesos de creacin de programas.

    Una vez que haya creado un programa, puede actualizarlo utilizando los mandatosActualizar programa (UPDPGM) o Actualizar programa de servicio(UPDSRVPGM). Esto es til, porque significa que tan slo es necesario tenerdisponibles los objetos de mdulo nuevos o modificados para actualizar elprograma.

    Para obtener ms informacin acerca del proceso de un solo paso, consulte elCaptulo 6. Creacin de un programa con el mandato CRTBNDRPG en lapgina 61

    Figura 5. Creacin de programas en ILE

    Programacin de RPG en ILE

    20 Gua del programador en ILE RPG

  • pgina 61. Para obtener ms informacin acerca del proceso de dos pasos, consulteel Captulo 7. Creacin de un programa con los mandatos CRTRPGMOD yCRTPGM en la pgina 77. Para obtener ms informacin sobre los programas deservicio, consulte el apartado Captulo 8. Creacin de un programa de servicio enla pgina 93.

    Gestin de programasILE proporciona una base comn para:v Gestionar el flujo de programasv Compartir recursosv Utilizar interfaces de programacin de aplicaciones (API)v Manejar excepciones durante el tiempo de ejecucin de un programa

    Ofrece a los usuarios de RPG un control sobre los recursos mucho mejor del queera posible anteriormente.

    Los programas y programas de servicio ILE se activan en grupos de activacin quese especifican en el momento de creacin del programa. El proceso mediante elcual un programa o un programa de servicio se prepara para ejecutarse sedenomina activacin. La activacin asigna recursos en un trabajo, de modo quepuedan ejecutarse uno o ms programas en dicho espacio. Si el grupo deactivacin especificado para un programa no existe cuando se llama al programa,entonces se crea dentro del trabajo para dar cabida a la activacin del programa.

    Un grupo de activacin es el elemento clave que rige los recursos y elcomportamiento de una aplicacin ILE. Por ejemplo, puede definir el mbito de lasoperaciones de control de compromiso en el nivel del grupo de activacin.Tambin puede definir el mbito de las alteraciones temporales de archivos y lasvas de datos abiertas y compartidas en el grupo de activacin de la aplicacinactual. Por ltimo, el comportamiento de un programa hasta su terminacintambin se ve afectado por el grupo de activacin en el que se ejecuta el programa.

    Para obtener ms informacin sobre los grupos de activacin, consulte Gestin delos grupos de activacin en la pgina 112.

    Utilizando las API enlazables que se proporcionan para todos los lenguajes deprogramacin ILE, puede asignar dinmicamente almacenamiento para una matrizde tiempo de ejecucin. Estas API permiten que aplicaciones de lenguaje nico yde lenguaje mixto accedan a un conjunto central de funciones de gestin dealmacenamiento y ofrecen un modelo de almacenamiento a los lenguajes que noproporcionan ninguno. RPG ofrece algunas posibilidades de gestin dealmacenamiento mediante cdigos de operacin. Para obtener ms informacinsobre la gestin de almacenamiento, consulte Gestin del almacenamientoasignado dinmicamente en la pgina 115.

    Llamada a programasEn ILE, puede escribir aplicaciones en las que los programas ILE RPG y losprogramas OPM RPG/400 continen interrelacionndose mediante la utilizacintradicional de las llamadas dinmicas a programas. Al utilizar dichas llamadas, elprograma que efecta la llamada (programa de llamada) especifica el nombre delprograma llamado en una sentencia de llamada. El nombre del programa llamadose resuelve en una direccin durante la ejecucin, justo antes de que el programade llamada transfiera el control al programa llamado.

    Programacin de RPG en ILE

    Captulo 2. Programacin de RPG en ILE 21

  • Tambin puede escribir aplicaciones ILE que se interrelacionen con llamadasestticas ms rpidas. Las llamadas estticas implican llamadas entreprocedimientos. Un procedimiento es un juego de cdigos independiente querealiza una tarea y a continuacin regresa al llamador. Un mdulo ILE RPG constade un procedimiento principal opcional seguido de cero o ms subprocedimientos.Dado que los nombres de procedimientos se resuelven durante el enlace (es decir,al crear el programa) las llamadas estticas son ms rpidas que las llamadasdinmicas.

    Las llamadas estticas tambin permiten:v Descriptores operativosv Parmetros omitidosv Especificar parmetros segn su valorv La utilizacin de valores de retornov Especificar un mayor nmero de parmetros

    Los descriptores operativos y los parmetros omitidos pueden ser de utilidad alllamar a interfaces API enlazables o a procedimientos escritos en otros lenguajesILE.

    Para obtener informacin sobre cmo ejecutar un programa, consulte elCaptulo 9. Ejecucin de un programa en la pgina 105. Si desea informacinsobre las llamadas a programas y procedimientos, consulte el Captulo 10.Llamadas a programas y procedimientos en la pgina 131.

    Depuracin del fuenteEn ILE puede realizar la depuracin a nivel del fuente en cualquier aplicacin ILEde lenguaje nico o mixto. El depurador del fuente ILE tambin proporcionasoporte para programas OPM. Puede controlar el flujo de un programa utilizandolos mandatos de depuracin mientras se ejecuta el programa. Puede establecerpuntos de interrupcin de trabajo o de hebra condicionales e incondicionales antesde ejecutar el programa. A continuacin, despus de llamar al programa, puededesplazarse por un nmero determinado de sentencias y visualizar o modificar lasvariables. Cuando se detiene un programa debido a un punto de interrupcin, a unmandato de pasos o a un error de ejecucin, el mdulo correspondiente aparece enla pantalla en el punto en el que se ha detenido el programa. En ese punto, puedeentrar ms mandatos de depuracin.

    Para obtener informacin sobre el depurador, consulte el Captulo 12. Depuracinde programas en la pgina 195.

    API enlazablesILE ofrece una serie de interfaces API enlazables que se pueden utilizar comocomplemento de la funcin que ILE RPG ofrece actualmente. Las API enlazablesproporcionan posibilidades de llamada a programas y activacin, gestin decondiciones y almacenamiento, funciones matemticas y gestin dinmica depantallas.

    Algunas de las API que puede plantearse utilizar en una aplicacin ILE RPG son:v CEETREC: sealizacin de la condicin de terminacin inminentev CEE4ABN: terminacin anormalv CEECRHP: creacin del rea de almacenamiento dinmico propia

    Programacin de RPG en ILE

    22 Gua del programador en ILE RPG

  • v CEEDSHP: descarte del rea de almacenamiento dinmico propiav CEEFRST: liberacin del almacenamiento de rea de almacenamiento dinmico

    propiav CEEGTST: obtencin del almacenamiento de rea de almacenamiento dinmico

    propiav CEECZST: reasignacin del almacenamiento de rea de almacenamiento

    dinmico propiav CEEDOD: descomposicin del descriptor operativo

    Nota: no se puede utilizar estas ni ninguna otra API enlazable de ILE desde unprograma creado con DFTACTGRP(*YES). Esto es debido a que en este tipode programa no se permiten las llamadas enlazadas.

    Para obtener ms informacin sobre las API enlazables de ILE, consulte elCaptulo 9. Ejecucin de un programa en la pgina 105.

    Aplicaciones multihebraEl sistema iSeries ahora proporciona soporte para la ejecucin multihebra. ILE RPGno proporciona directamente soporte para iniciar o gestionar hebras de programa.No obstante, los procedimientos ILE RPG pueden ejecutarse como hebras enentornos multihebra. Si desea llamar a un procedimiento ILE RPG en unaaplicacin multihebra, debe asegurarse de que el procedimiento ILE RPG permitala ejecucin multihebra. Asimismo, debe cerciorarse de que las funciones delsistema a las que acceda el procedimiento tambin permitan la ejecucinmultihebra.

    Puede especificarse la palabra clave de especificacin de controlTHREAD(*SERIALIZE) para proteger las hebras en un mdulo ILE RPG. Alespecificar THREAD(*SERIALIZE) se impide que varias hebras puedan acceder deforma inadecuada a la mayora de las variables y a todas las estructuras de controlinternas. El mdulo de proteccin de hebras se bloquear cuando se acceda a unprocedimiento del mdulo y se desbloquear cuando ya no haya ningnprocedimiento del mdulo en ejecucin. Este acceso en serie garantiza que slohaya una hebra activa en un mdulo cualquiera, dentro de un grupo de activacin,en todo momento. Sin embargo, el programador sigue siendo el encargado demanejar la seguridad de las hebras en el almacenamiento compartido por variosmdulos. Esto se consigue aadiendo lgica a la aplicacin para sincronizar elacceso al almacenamiento.

    Para obtener ms informacin, consulte el apartado Consideraciones sobre lashebras mltiples en la pgina 162.

    Programacin de RPG en ILE

    Captulo 2. Programacin de RPG en ILE 23

  • 24 Gua del programador en ILE RPG

  • Captulo 3. Estrategias de creacin de programasHay muchos enfoques que puede adoptar al crear programas utilizando unlenguaje ILE. Esta seccin presenta tres estrategias corrientes para crear programasILE utilizando ILE RPG u otros lenguajes ILE.1. Creacin de un programa utilizando CRTBNDRPG para maximizar la

    compatibilidad con OPM.2. Creacin de un programa ILE utilizando CRTBNDRPG.3. Creacin de un programa ILE utilizando CRTRPGMOD y CRTPGM.

    La primera estrategia se recomienda de forma temporal. Est pensada parausuarios que tengan aplicaciones OPM y que, quiz por falta de tiempo, nopuedan trasladar sus aplicaciones a ILE todas a la vez. La segunda estrategiatambin puede ser temporal. Le da tiempo para poder aprender ms acerca de ILE,pero tambin le permite utilizar de inmediato algunas de sus funciones. La terceraestrategia es ms complicada, pero es la que ofrece ms flexibilidad.

    Tanto la primera como la segunda estrategia utilizan el proceso de creacin deprogramas de un solo paso, es decir, CRTBNDRPG. La tercera estrategia utiliza elproceso de creacin de programas en dos pasos, es decir, CRTRPGMOD y acontinuacin CRTPGM.

    Estrategia 1: aplicacin compatible con OPMLa estrategia 1 produce un programa ILE que interacta bien con los programasOPM. Le permite beneficiarse de las mejoras de RPG IV pero no de todas lasmejoras de ILE. Puede que desee utilizar este programa de forma temporalmientras completa la migracin a ILE.

    MtodoUtilice el siguiente enfoque general para crear un programa de este tipo:1. Convierta el fuente a RPG IV utilizando el mandato CVTRPGSRC.

    Asegrese de que convierte todos los miembros /COPY que utilice el fuenteque est convirtiendo.

    2. Cree un objeto de programa utilizando el mandato CRTBNDRPG, especificandoDFTACTGRP(*YES).

    Si especifica DFTACTGRP(*YES) significa que el objeto de programa slo seejecutar en el grupo de activacin por omisin. (El grupo de activacin poromisin es el grupo de activacin en el que se ejecutan todos los programas OPM.)En consecuencia, el objeto de programa interactuar bien con los programas OPMen las reas de mbito de alteracin temporal, de mbito de apertura y deRCLRSC.

    Cuando utiliza este enfoque, no puede utilizar el enlace esttico de ILE. Estosignifica que al crear este programa no puede codificar una llamada deprocedimiento enlazada en el fuente ni utilizar los parmetros BNDDIR o ACTGRPen el mandato CRTBNDRPG.

    Copyright IBM Corp. 1994, 2001 25

  • Ejemplo de un programa compatible con OPMLa Figura 6 muestra la vista de ejecucin de una aplicacin a modo de ejemplo enla que podra desear un programa compatible con OPM. La aplicacin OPM estabaformada por un programa en CL y dos programas en RPG. En este ejemplo, unode los programas en RPG se ha trasladado a ILE; los dems programas no se hanmodificado.

    Efecto de ILEA continuacin se explica el efecto de ILE en el manejo de la aplicacin:

    Llamada a programasLos programas OPM se comportan igual que antes. El sistema creade forma automtica el grupo de activacin OPM por omisincuando arranca el trabajo, y se ejecutan en el mismo todas lasaplicaciones OPM. Un programa puede llamar a otro programa delgrupo de activacin por omisin utilizando una llamada dinmica.

    Datos Se crea el almacenamiento para datos estticos cuando se activa elprograma, que exi