Advertisement
josema0890

REPOSICIONAMIENTO Y REPAGINACION

Mar 20th, 2018
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. REPAGINACION Y REPOSICIONAMIENTO
  2.  
  3. REPOSICIONAMIENTO: relacionado con el batch (tiene que ir siempre en cualquier programa que use DB2 ¡SIEMPRE ORDENADO POR CLAVE PRIMARIA!)
  4.  
  5. QUE ES: consiste en que un proceso batch que tiene un fichero de entrada con x registros a insertar en una tabla en la cual quiere insertar en un fichero, ira haciendo por cada registro un insert, en el supuesto caso de que llegue al 5 registro y haya un corte de luz
  6. solo se habran insertado en la tabla los 4 primeros registros, en el caso de que no hubiese un control del insert, al volver a ejecutar ese batch nos daria un error de registro duplicado ya que los cuatro primeros registros ya existian, por eso el programa con reposicionamiento sirve para "guardarse" cual es el ultimo registro tratado que ha modificado la tabla db2 (ya sea un insert,update, o delete) para releer los registros del fichero de entrada hasta llegar al ultimo que se ha tratado.
  7.  
  8. El reposicionamiento utiliza una tabla con una estructura similar a esta:
  9.  
  10. DAREPOS (o nombre tabla reposicionamiento)
  11. Nombre-programa pic x (8). => indica el programa donde se gestiona el repos.
  12. Estado pic x (2). => indica el estado (ok y ko).
  13. Reg varchar(1000). => se guarda el ultimo registro tratado.
  14.  
  15. COMO INTEGRARLO EN UN PROGRAMA (ESQUEMA PRIMERA EXPLICACION)
  16.  
  17. 1000-INICIO
  18. INICIALIZAR VARIABLES,COPYS,ETC
  19. 1100-ABRIR-FICHEROS
  20. 1200-GESTION-REPOSICIONAMIENTO (los corchetes indican que hay dentro del parrafo 1200) (preguntar a la tabla repos el estado de la ultima ejecucion del programa)
  21. {
  22. MOVE 'PGM1' to D-PGM
  23. EXEC SQL
  24. SELECT ESTADO, REG
  25. INTO :D-ESTADO
  26. :D-REG
  27. FROM TABLA
  28. WHERE PGM = :D-PGM
  29. END-EXEC
  30. EVALUATE SQLCODE
  31. WHEN 0
  32. EVALUATE D-ESTADO
  33. WHEN 'OK'
  34. PERFORM LEER-FICHERO-ENTRADA
  35. WHEN 'KO'
  36. PERFORM LEER-FICHERO-ENTRADA UNTIL CLAVE-FICH-ENTRADA > D-REG
  37. WHEN OTHER
  38. SET KO-TECNICO TO TRUE
  39. PERFORM 3000-FIN
  40. END-EVALUATE
  41. WHEN 100 (SIGNIFICA QUE ESTE PROGRAMA NUNCA SE HA EJECUTADO)
  42. MOVE 'OK' TO D-ESTADO
  43. EXEC SQL
  44. INSERT INTO TABLA
  45. VALUES (:D-PGM,:D-ESTADO)
  46. END-EXEC
  47. EVALUATE SQLCODE
  48. WHEN 0
  49. PERFORM LEER-FICHERO-ENTRADA
  50. WHEN -803
  51. SET KO-TECNICO TO TRUE
  52. PERFORM 3000-FIN
  53. END-EVALUATE
  54. END-EVALUATE
  55. }
  56. .
  57. .
  58. .
  59.  
  60. 2000-PROCESO
  61. 2100-LLAMAR-RUTINA-DELETE (los corchetes indican que hay dentro del parrafo 2100)
  62. {
  63. MOVER CAMPOS FICHERO ENTRADA A COPY DE RUTINA (AL SER UN DELETE SOLO SERIA LA ID)
  64. CALL RUTINA-DELETE USING 01-COPY-RUTINA
  65. EVALUATE RETORNO-COPY-RUTINA
  66.  
  67. EXEC SQL
  68. COMMIT (SIRVE PARA CONFIRMAR LOS CAMBIOS REALIZADOS EN LA TABLA DB2)
  69. END-EXEC (NO HACE FALTA EVALUAR SQL AL HACER UN COMMIT)
  70. }
  71. 2200-ACTUALIZAR-DAREPOS (LA TABLA QUE CONTROLA REPOSICIONAMIENTO) (los corchetes indican que hay dentro del parrafo 2200)
  72. {
  73. MOVE 'KO' TO D-ESTADO
  74. MOVE CLAVE-FICHERO TO D-REG
  75.  
  76. EXEC SQL
  77. UPDATE TABLA
  78. SET ESTADO = :D-ESTADO
  79. REG = :D-REG
  80. WHERE PGM = :D-PGM
  81. END-EXEC
  82. PERFORM LEER-FICHERO-ENTRADA
  83. }
  84. .
  85. .
  86. .
  87.  
  88. 3000-FIN
  89. PERFORM CERRAR-FICHEROS
  90. PERFORM ESTADISTICAS
  91.  
  92. IF FIN-FICHERO
  93. MOVE OK TO D-ESTADO
  94. INITIALIZE D-REG
  95. EXEC SQL
  96. UPDATE TABLA
  97. SET ESTADO = :D-ESTADO
  98. REG = :D-REG
  99. WHERE PGM = :D-PGM
  100. END-EXEC
  101. EVALUATE SQLCODE
  102. END-IF
  103. -----------------------------------------------------------------------------------------------
  104.  
  105. EJECRICIO:
  106.  
  107. Borrar de la tabla medicos los medicos que vengan en un fichero de entrada
  108.  
  109. REPAGINACION: esta relacionada con el online (EN EL PROXIMO CAPITULO)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement