> For the complete documentation index, see [llms.txt](https://docs.editran.onesait.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.editran.onesait.com/documentacion-editran/ibm-editran-v5.3-ims/recuperacion-transmisiones-ims/proceso-batch-de-recuperacion-de-ficheros.md).

# Proceso Batch de recuperación de ficheros

La recuperación (y envío o carga) se ejecuta en un proceso especial ZTBEPRE que es lanzado por la interfaz de procesos batch del motor de transmisión. La ejecución consiste en un EXEC PROC de este procedimiento bajo las fichas de JCL de la sesión de presentación del motor de presentación.

El proceso tiene varios pasos que se ejecutan condicionalmente según la opción elegida y si la carga se realizó por macroficheros o no.

El primer paso determina si la carga utilizó macroficheros. Esto lo deduce de la existencia en la sesión de presentación de PARAMETROS APL. Si la sesión contiene este campo, aunque la carga se realizara ordinariamente, se seguirá el camino de macroficheros.

El segundo paso rescata la lista de nombres de ficheros.

Si la carga es ordinaria, buscará en el fichero histórico de presentaciones los ficheros que se cargaron en aquella trasmisión. La referencia que toma es la clave de registro que le suministró la transacción de monitorización que lanzó el proceso, por lo que deberá encontrarla (salvo que la trasmisión fuese borrada del histórico entre el lanzamiento y la ejecución del proceso)

Si la carga utilizó macroficheros se buscará en el fichero de ´log´ de macroficheros una presentación que se cargase entre la fecha de inicio y fin de la presentación. Si la presentación se cargó sin utilizar este ´log’ o el log ha sido inicializado (o ha dado la vuelta) no se encontrará la presentación. Si encuentra la carga, llamará al programa de carga de macroficheros para que rellene el fichero de emisión con los datos del macrofichero utilizado en aquella carga. Para que el proceso sea correcto el macrofichero debe existir y contener los datos originales. Cada carga debe emplear un macrofichero con nombre distinto.

El resultado en ambos casos es una lista de ficheros para los pasos siguientes.

El siguiente paso visualiza los ficheros escribiendo en la DDNAME ZTBEFL03 el contenido de los primeros 10 registros de cada fichero. En el caso de macroficheros el fichero que se lista es el fichero de emisión con los datos cargados previamente.

El último paso ejecuta la carga, carga y emisión o inicialización y emisión de la sesión. Si se utilizó macrofichero la carga se realiza a través de proceso de carga por macroficheros, lo que permite recuperar una sesión que se cargó por recuperación. Con opción ‘V’ de visualización este paso no se ejecuta.

## Procedimiento de recuperación ZTBEPRE

Los pasos descritos anteriormente se identifican como

* ZTBEBRE1 para la captura de datos.
* ZTBEBRE2 para la obtención de la lista de ficheros.
* ZTBEBRE5 para la obtención de la lista por macroficheros.
* ZTBEBRE3 para el listado de los ficheros.
* ZTBEBRE4 para su carga / emisión.

```cobol
//             PROC FU=,L0=,L1=,L2=,R1=,R2=,AP=,ER=,FHI=,FHF=,CL=              
//*--------------------------------------------------------------------        
//*   PROCEDIMIENTO DE RECUPERACION DE TRASMISIONES V4.0              *        
//*--------------------------------------------------------------------        
//* DEVUELVE 0 SI ES CARGA ORDINARIA, 1 SI ES MACROFICHERO                     
//ZTBEBRE1  EXEC PGM=ZTBEBRE1,REGION=4M,                                        
//          PARM='&FU&L1&L2&R1&R2&AP&ER&FHI&FHF&CL'                           
//ZTBGFPER  DD DSN=KI.EGDI.ZTBG.PERFILES,DISP=SHR                              
//ZTBEFPAR  DD DSN=&&PAR,DISP=(NEW,PASS,DELETE),                               
//          UNIT=SYSDA,SPACE=(TRK,(1,1),RLSE),                                
//          DCB=(RECFM=FB,LRECL=109,BLKSIZE=0,DSORG=PS)                       
//   IF (RC = 0) THEN CARGA ORDINARIA                                          
//* OBTIENE LISTA DE FICHEROS DE ESTADÍSTICAS                                  
//ZTBEBRE2  EXEC IMSBATCH,MBR=ZTBEBRE2,                                         
//          PSB=ZTBEE002,IMSID=IMSP,PREFIX=IMS510P                             
//ZTBEFPAR  DD DSN=&&PAR,DISP=(OLD,PASS)                                       
//ZTBGFCAR  DD DSN=&&CAR,DISP=(NEW,PASS,DELETE),                               
//             UNIT=SYSDA,SPACE=(TRK,(1,1),RLSE),                              
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=0,DSORG=PS)                      
//    ELSE  CARGA POR MACROFICHEROS                                             
//* OBTIENE LISTA DE FICHEROS DEL LOG DE CARGAS DE MACROFICHEROS               
//ZTBEBRE5  EXEC PGM=ZTBEBRE5,REGION=4M,COND=(1,NE,ZTBEBRE1),                   
//          PARM='&FU&L1&L2&R1&R2&AP&ER&FHI&FHF&CL'                           
//STEPLIB   DD DSN=IMS510P.RESLIB,DISP=SHR                                     
//          DD DSN=KI.EGDI.LOAD,DISP=SHR                                       
//*ZTBGFEST DD DSN=KI.EGDI.ZTBG.ESTADOS,DISP=SHR                               
//ZTBGFPER  DD DSN=KI.EGDI.ZTBG.PERFILES,DISP=SHR                              
//ZTBGFLOG  DD DSN=KI.EGDI.ZTBG.LOG,DISP=SHR                                   
//ZTBGF032  DD DSN=KI.EGDI.ZTBG.ZTBGF032,DISP=SHR                              
//ZTBGFERR  DD DSN=KI.EGDI.ZTBG.ZTBGFERR,DISP=SHR                              
//ZTBEFLOG  DD DSN=KI.EGDI.ZTBE.LOG,DISP=(SHR)                                 
//ZTBGFCAR  DD DSN=&&CAR,DISP=(NEW,PASS,DELETE),                               
//             UNIT=SYSDA,SPACE=(TRK,(1,1),RLSE),                                
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)                              
//ZTBEFPAR  DD DSN=&&PAR,DISP=(OLD,PASS)                                       
//    ENDIF                                                                    
//*                                                                            
//* LISTA CONTENIDO DE FICHEROS                                                
//*                                                                            
//ZTBEBRE3  EXEC PGM=ZTBEBRE3,REGION=4M,COND=(1,LT)                             
//STEPLIB   DD DSN=KI.EGDI.LOAD,DISP=SHR                                       
//ZTBGFCAR  DD DSN=&&CAR,DISP=(OLD,PASS)                                       
//ZTBEFL03  DD SYSOUT=*                                                        
//* CARGA EMITE FICHEROS                                                       
//ZTBEBRE4  EXEC PGM=ZTBEBRE4,REGION=4M,COND=(1,LT),                            
//          PARM='&FU&L1&L2&R1&R2&AP&ER&FHI&FHF&CL'                           
//*ZTBGFEST DD DSN=KI.EGDI.ZTBG.ESTADOS,DISP=SHR                               
//ZTBGFPER  DD DSN=KI.EGDI.ZTBG.PERFILES,DISP=SHR                              
//ZTBGF032  DD DSN=KI.EGDI.ZTBG.ZTBGF032,DISP=SHR                              
//ZTBGFTCO  DD DSN=KI.EGDI.ZTBG.ZTBGFTCO,DISP=SHR                              
//ZTBGFERR  DD DSN=KI.EGDI.ZTBG.ZTBGFERR,DISP=SHR                              
//ZTBGFCAR  DD DSN=&&CAR,DISP=(OLD,PASS)                                       
//* UTILIZAMOS LOCAL0 PARA QUE NO DE ERROR DE JCL, PERO ES FICTICIO            
//  SET LOCAL0=&L0        
```

La ejecución produce la siguiente salida.

```
                   J E S 2  J O B  L O G  --  S Y S T E M  C P U B  --  N O D E  N O D O M V S B
 
20.10.11 JOB01805 ---- THURSDAY,  07 FEB 2025 ----
20.10.11 JOB01805  IRR010I  USERID KIIMSPR  IS ASSIGNED TO THIS JOB.
20.10.11 JOB01805  ICH70001I KIIMSPR  LAST ACCESS AT 20:10:10 ON THURSDAY, FEBRUAR
20.10.11 JOB01805  $HASP373 KI05AF1I STARTED - INIT 7    - CLASS A - SYS CPUB
20.10.11 JOB01805  IEF403I KI05AF1I - STARTED - TIME=20.10.11
20.10.11 JOB01805  -                                                --TIMINGS (M
20.10.11 JOB01805  -JOBNAME  STEPNAME PROCSTEP    RC   EXCP   CONN    TCB    SRB
20.10.11 JOB01805  -KI05AF1I PASO1    ZTBEBRE1    00     34     46    .00    .00
20.10.12 JOB01805  -KI05AF1I ZTBEBRE2 G           00     98    273    .00    .00
20.10.12 JOB01805  -KI05AF1I PASO1    ZTBEBRE5 FLUSH      0      0    .00    .00
20.10.12 JOB01805  -KI05AF1I PASO1    ZTBEBRE3    00     55     89    .00    .00
20.10.15 JOB01805  -KI05AF1I PASO1    ZTBEBRE4    00    530   1305    .00    .00
20.10.15 JOB01805  IEF404I KI05AF1I - ENDED - TIME=20.10.15
20.10.15 JOB01805  -KI05AF1I ENDED.  NAME-EDITRAN              TOTAL TCB CPU TIM
20.10.15 JOB01805  $HASP395 KI05AF1I ENDED
------ JES2 JOB STATISTICS ------
.
.
NOMBRE FICHERO  :KI.EGDI.F01
REGISTRO NUMERO : 1
abcdefghijklmnopqrstuvwxyz                                            
Editran/G: 07/02/205 20:10:12. Ses-ZTG=000099980/000000010/PRUEBA.
ZTG0020: PETICION DE EMISION DE PRESENTACION
+--                                                                         --+
Editran/G: 07/02/2025 20:10:14. Ses-ZTG=000099980/000000010/PRUEBA.Ses-Editran=000099980/000000010/PRUEBA
ZTG0015: SE SOLICITA PETICION DE EMISION A EDITRAN  (A1R)
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.editran.onesait.com/documentacion-editran/ibm-editran-v5.3-ims/recuperacion-transmisiones-ims/proceso-batch-de-recuperacion-de-ficheros.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
