IDENTIFICATION DIVISION. PROGRAM-ID. MAGRLU02. AUTHOR. MAG. DATE-WRITTEN. 2023/08/28. * LISTADOS: EJEMPLO *********************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-AS400. OBJECT-COMPUTER. IBM-AS400. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CANTANTESL ASSIGN TO DATABASE-CANTANTESL ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS EXTERNALLY-DESCRIBED-KEY WITH DUPLICATES. SELECT MAGRLU02 ASSIGN TO FORMATFILE-MAGRLU02. DATA DIVISION. FILE SECTION. FD MAGRLU02 LABEL RECORD IS OMITTED. 01 REG-MRLU PIC X(132). 01 LIN-01. COPY DDS-LIN01 OF MAGRLU02. *LIN02 NO TIENE PIC Y SOLO SE USA COMO UN FORMATO LLAMANDO A *AL REGISTRO REG-MRLU *01 LIN-02 PIC X(132) VALUE SPACES. *01 LIN-02. * COPY DDS-LIN02 OF MAGRLU02. 01 LIN-03. COPY DDS-LIN03 OF MAGRLU02. *LIN04 NO TIENE PIC Y SOLO SE USA COMO UN FORMATO LLAMANDO A *AL REGISTRO REG-MRLU *01 LIN-04 PIC X(132) VALUE SPACES. *01 LIN-04. * COPY DDS-LIN04 OF MAGRLU02. 01 LIN-05. COPY DDS-LIN05 OF MAGRLU02. 01 LIN-06. COPY DDS-LIN06 OF MAGRLU02. FD CANTANTESL LABEL RECORD IS STANDARD. 01 REG-CANTANTESL. COPY DDS-ALL-FORMAT OF CANTANTESL. WORKING-STORAGE SECTION. 01 NUMEROS. 05 WPAGINA PIC 9(03) VALUE ZEROS. 05 WLINEAS PIC 9(02) VALUE ZEROS. 05 WCUENTA PIC 9(05) VALUE ZEROS. 01 FECHOR. 05 WCAMD PIC 9(8) VALUE ZEROS. 05 WHMSC PIC 9(8) VALUE ZEROS. 01 NOMBRES. 05 NDES PIC X(60) VALUE SPACES. 05 NHAS PIC X(60) VALUE SPACES. PROCEDURE DIVISION. INICIO. OPEN INPUT CANTANTESL. OPEN OUTPUT MAGRLU02. ACCEPT WCAMD FROM DATE. ACCEPT WHMSC FROM TIME. * VAMOS A TENER UN NOMBRE-DESDE (NDES)Y UN NOMBRE-HASTA (NHAS) * Y LISTAMOS LO QUE SE ENCUENTRE ENTRE AMBOS. MOVE "AAA" TO NDES. * MOVE "M" TO NHAS. MOVE "ZZZ" TO NHAS. MOVE NDES TO NOMBRE. START CANTANTESL KEY IS NOT < EXTERNALLY-DESCRIBED-KEY INVALID KEY DISPLAY "NO ENCONTRADO NADA" GO TO FIN END-START. DISPLAY "ENCONTRADOS REGISTROS". * SI LLEGA HASTA ACA, ENCONTRO REGISTROS. INICIO LECTURA *********************************** LECTURA-REGS. READ CANTANTESL NEXT RECORD AT END ADD 1 TO WLINEAS IF WLINEAS = 1 OR WLINEAS > 66 PERFORM MANEJO-TOP-BOT END-IF MOVE WCUENTA TO L6REGLIS WRITE LIN-06 FORMAT "LIN06" GO TO FIN END-READ. * COMPRUEBO SI NDES > NHAS *********************************** IF NDES > NHAS * DISPLAY "SALIENDO POR PUERTA 1" GO TO FIN END-IF. * COMPRUEBO QUE NO SE ALCANZO NHAS *********************************** IF NOMBRE > NHAS * DISPLAY "SALIENDO POR PUERTA 2" MOVE WCUENTA TO L6REGLIS WRITE LIN-06 FORMAT "LIN06" GO TO FIN END-IF. * SI LLEGO HASTA ACA COMIENZO A CARGAR LAS LINEAS DE IMPRESION *********************************** ADD 1 TO WLINEAS. IF WLINEAS = 1 OR WLINEAS > 66 PERFORM MANEJO-TOP-BOT END-IF. MOVE CODIGO TO L5CODI. MOVE PAIS TO L5PAIS. MOVE NOMBRE TO L5BAND. WRITE LIN-05 FORMAT "LIN05". ADD 1 TO WCUENTA. * DISPLAY LIN05. GO TO LECTURA-REGS. * EL MANEJO DE LA CABEZA Y PIE DE PAGINA * NOTA: LOS MOVIMIENTOS DE DATOS A LAS VARIABLES DE LA LINEA * SE DEBEN HACER JUSTO ANTES DEL ENVIO DE LA LINEA AL SPOOL * YA QUE SI NO PUEDEN SE MEZCLAR E INCLUSO DAR ERRORES DE I-O *********************************** MANEJO-TOP-BOT. ADD 1 TO WPAGINA. IF WLINEAS = 1 THEN MOVE WCAMD TO L1FECHA OF LIN-01 MOVE WHMSC TO L1HORA OF LIN-01 MOVE WPAGINA TO L1PAG OF LIN-01 WRITE LIN-01 FORMAT "LIN01" WRITE REG-MRLU FORMAT "LIN02" MOVE ALL "*" TO L3ASTE OF LIN-03 WRITE LIN-03 FORMAT "LIN03" WRITE REG-MRLU FORMAT "LIN04" WRITE LIN-03 FORMAT "LIN03" MOVE 6 TO WLINEAS END-IF. FIN-MANEJO-TOP-BOT. EXIT. FIN. CLOSE CANTANTESL MAGRLU02. STOP RUN.