IDENTIFICATION DIVISION. PROGRAM-ID. MAGRLU01. AUTHOR. MAG. DATE-WRITTEN. 2023/08/25. * 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 MPRINT ASSIGN TO PRINTER-QPRINT. DATA DIVISION. FILE SECTION. FD MPRINT LABEL RECORD IS OMITTED. 01 REG-MPRINT PIC X(132). FD CANTANTESL LABEL RECORD IS STANDARD. 01 REG-CANTANTESL. COPY DDS-ALL-FORMAT OF CANTANTESL. WORKING-STORAGE SECTION. 01 WPAGINA PIC 9(03) VALUE ZEROS. 01 WLINEAS PIC 9(02) VALUE ZEROS. 01 WCUENTA PIC 9(05) VALUE ZEROS. * TIPOS DE LINEAS DE CADA PAGINA *********************************** 01 LIN01. 03 FILLER PIC X(16) VALUE "DEMO DE LISTADOS". 03 FILLER PIC X(27) VALUE SPACES. 03 FILLER PIC X(06) VALUE "FECHA ". 03 L01FEC PIC Z(10) VALUE ZEROS. 03 FILLER PIC X(10) VALUE SPACES. 03 FILLER PIC Z(10) VALUE "HORA ". 03 L01HOR PIC X(08) VALUE SPACES. 03 FILLER PIC X(10) VALUE SPACES. 03 FILLER PIC X(07) VALUE "PAGINA ". 03 L01PAG PIC ZZZ. 01 LIN02. 03 FILLER PIC X(56) VALUE SPACES. 03 FILLER PIC X(19) VALUE "TITULO DEL LISTADO". 01 LIN03. 03 FILLER PIC X(132) VALUE ALL "*". 01 LIN04. 03 FILLER PIC X(07) VALUE "CODIGO". 03 FILLER PIC X(04) VALUE SPACES. 03 FILLER PIC X(04) VALUE "PAIS". 03 FILLER PIC X(04) VALUE SPACES. 03 FILLER PIC X(60) VALUE "NOMBRE DE LA BANDA". 01 LIN05. 03 L05CODI PIC X(07) VALUE SPACES. 03 FILLER PIC X(04) VALUE SPACES. 03 L05PAIS PIC X(04) VALUE SPACES. 03 FILLER PIC X(04) VALUE SPACES. 03 L05NOMB PIC X(60) VALUE SPACES. 01 LIN06. 03 L06REGS PIC ZZZZZ. 03 FILLER PIC X(21) VALUE " REGISTROS LISTADOS". 01 FECHOR. 03 WCAMD PIC Z(10) VALUE ZEROS. 03 WHMSC PIC Z(10) VALUE ZEROS. 01 BUSCAR. 03 NDES PIC X(60) VALUE SPACES. 03 NHAS PIC X(60) VALUE SPACES. PROCEDURE DIVISION. * CARGAMOS LOS ARCHIVOS A USAR *********************************** OPEN INPUT CANTANTESL. OPEN OUTPUT MPRINT. 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 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 * GO TO MANEJO-TOP-BOT PERFORM MANEJO-TOP-BOT END-IF MOVE WCUENTA TO L06REGS WRITE REG-MPRINT FROM LIN06 AFTER 1 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 L06REGS WRITE REG-MPRINT FROM LIN06 AFTER 1 GO TO FIN END-IF. * SI LLEGO HASTA ACA COMIENZO A CARGAR LAS LINEAS DE IMPRESION *********************************** MOVE CODIGO TO L05CODI. MOVE PAIS TO L05PAIS. MOVE NOMBRE TO L05NOMB. ADD 1 TO WLINEAS. IF WLINEAS = 1 OR WLINEAS > 66 * GO TO MANEJO-TOP-BOT PERFORM MANEJO-TOP-BOT END-IF. WRITE REG-MPRINT FROM LIN05 AFTER 1. ADD 1 TO WCUENTA. * DISPLAY LIN05. GO TO LECTURA-REGS. * EL MANEJO DE LA CABEZA Y PIE DE PAGINA ES *********************************** MANEJO-TOP-BOT. ADD 1 TO WPAGINA. MOVE WPAGINA TO L01PAG. MOVE WCAMD TO L01FEC. MOVE WHMSC TO L01HOR. IF WLINEAS = 1 WRITE REG-MPRINT FROM LIN01 AFTER 1 ELSE WRITE REG-MPRINT FROM LIN01 AFTER PAGE END-IF. WRITE REG-MPRINT FROM LIN02 AFTER 1. WRITE REG-MPRINT FROM LIN03 AFTER 1. WRITE REG-MPRINT FROM LIN04 AFTER 1. WRITE REG-MPRINT FROM LIN03 AFTER 1. MOVE 6 TO WLINEAS. FIN-MANEJO-TOP-BOT. EXIT. FIN. CLOSE CANTANTESL MPRINT. STOP RUN.