IDENTIFICATION DIVISION. PROGRAM-ID. MAGSUBF01. * ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-AS400. OBJECT-COMPUTER. IBM-AS400. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT V003 ASSIGN TO WORKSTATION-V003 ORGANIZATION IS TRANSACTION ACCESS MODE IS DYNAMIC RELATIVE KEY IS CLAVESF. *CLAVESF ES LA CLAVE PARA RECORRER EL SUB FILE. *VAMOS A CREAR UN ARCH FISICO DE BANDAS CON KEY EN CAMPO BANDA. SELECT F003 ASSIGN TO DATABASE-F003 ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS EXTERNALLY-DESCRIBED-KEY WITH DUPLICATES. DATA DIVISION. FILE SECTION. FD V003 LABEL RECORD IS OMITTED. 01 REG-V003. COPY DDS-ALL-FORMAT OF V003. *LA LINEA ANTERIOR TRAE SOLO LA PARTE DE DATOS, LA DE INDIC NO. *LOS INDICADORES LOS TRAIGO DESDE LA WORKING FD F003 LABEL RECORD IS STANDARD. 01 REG-F003. COPY DDS-ALL-FORMAT OF F003. WORKING-STORAGE SECTION. *TRAIGO LOS INDICADORES CF... 01 INDICAD. COPY DDS-ALL-FORMAT-INDIC OF V003. *ESTA ES LA TABLA (REGISTRO POR REGISTRO) *05 WP1-FLD002 PIC X(05) DEBERIA SER NUMERICO *CAMBIAR X POR 9 01 W-P1. 05 WP1-FLD001 PIC X(01). 05 WP1-FLD002 PIC X(05). 05 WP1-FLD003 PIC X(03). 05 WP1-FLD004 PIC X(40). *Y AHORA LA CABECERA DE LA PAGINA 01 W-P1CTL. 05 W-FLD001 PIC X(40). *CLAVESF ES EL NUMERO DE REGISTRO DENTRO DEL SUBFILE/TABLA *CLAVESF LO DEFINIMOS EN EL PRIMER SELECT 01 CLAVESF PIC 9(05). *01 CONTADOR1 PIC 999999 VALUE ZERO. *01 CONTADOR2 PIC 999999 VALUE ZERO. *01 CONTADOR3 PIC 999999 VALUE ZERO. PROCEDURE DIVISION. INICIO. OPEN I-O V003. OPEN I-O F003. *LIMPIAMOS CADA LINEA DEL SUBFILE PERFORM LIMPIO-SF THRU F-LIMPIO-SF VARYING CLAVESF FROM 1 BY 1 UNTIL CLAVESF > 999. PROCESO-100. * ADD 1 TO CONTADOR1. INITIALIZE W-P1CTL. MOVE 1 TO CLAVESF. READ SUBFILE V003 INTO W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-READ. WRITE REG-V003 FROM W-P1CTL FORMAT "P1CTL". READ V003 INTO W-P1CTL FORMAT "P1CTL" INDICATORS ARE P1CTL-I-INDIC. IF IN03 OF P1CTL-I-INDIC = B"1" GO TO FINALIZAR END-IF. *SI NO OPRIME F3 PARA SALIR, VA A INGRESAR UN NOMBRE DE BANDA *EL W-FLD001 ES LA VARIABLE DE LA ZONA DE CONTROL(NO SUBFILE) *DONDE SE INGRESA EL NOMBRE DE LA BANDA A BUSCAR *F3BANDA ES EL CAMPO KEY DE LA DB DE BANDAS MOVE W-FLD001 TO F3BANDA. *POSICIONAMOS EL CURSOR EN EL PRIMER NOMBRE QUE COINCIDA *SI NINGUNO COINCIDE TRAE DESDE EL PRIMERO START F003 KEY IS NOT < EXTERNALLY-DESCRIBED-KEY INVALID KEY GO TO PROCESO-100 END-START. MOVE ZEROS TO CLAVESF. F-PROCESO-100. EXIT. PROCESO-200. * ADD 1 TO CONTADOR2. *LLENAMOS LA TABLA EN PANTALLA (SUBFILE) ADD 1 TO CLAVESF. IF CLAVESF > 999 GO PROCESO-300. READ SUBFILE V003 INTO W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-READ. READ F003 NEXT RECORD AT END GO TO PROCESO-300. IF F3CODI = ZEROS GO TO PROCESO-300. MOVE SPACES TO WP1-FLD001. MOVE F3BANDA TO WP1-FLD004. MOVE F3CODI TO WP1-FLD002. MOVE F3PAIS TO WP1-FLD003. *LA SIGUIENTE LINEA MANDA AL REGISTRO CLAVESF LOS DATOS MOVIDOS REWRITE SUBFILE REG-V003 FROM W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-REWRITE. GO PROCESO-200. *F-PROCESO-200. EXIT. PROCESO-300. * ADD 1 TO CONTADOR3. MOVE 1 TO CLAVESF. READ SUBFILE V003 INTO W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-READ. WRITE REG-V003 FROM W-P1CTL FORMAT "P1CTL". READ V003 INTO W-P1CTL FORMAT "P1CTL" INDICATORS ARE P1CTL-I-INDIC. * IF IN03 OF P1CTL-I-INDIC = B"1" OR W-FLD001 = SPACES IF IN03 OF P1CTL-I-INDIC = B"1" PERFORM LIMPIO-SF-2 THRU F-LIMPIO-SF-2 VARYING CLAVESF FROM 1 BY 1 UNTIL CLAVESF > 999 GO PROCESO-100 END-IF. * GO TO PROCESO-300. MOVE ZEROS TO CLAVESF. *F-PROCESO-300. EXIT. PROCESO-400. *RECORRO EL SUBFILE PARA ENCONTRAR "Y" EN WP1-FLD001 ADD 1 TO CLAVESF IF CLAVESF > 999 GO TO PROCESO-300. READ SUBFILE V003 INTO W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-READ. IF WP1-FLD001 = "Y" DISPLAY "Y ENCONTRADA EN " CLAVESF END-IF. GO TO PROCESO-400. *F-PROCESO-400. EXIT. LIMPIO-SF. INITIALIZE W-P1. WRITE SUBFILE REG-V003 FROM W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-WRITE. F-LIMPIO-SF. EXIT. LIMPIO-SF-2. READ SUBFILE V003 INTO W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-READ. INITIALIZE W-P1. REWRITE SUBFILE REG-V003 FROM W-P1 FORMAT "P1" INVALID KEY DISPLAY "ERROR" END-REWRITE. F-LIMPIO-SF-2. EXIT. FINALIZAR. CLOSE V003 F003. * DISPLAY "EMMA PROGRAMA". * DISPLAY "1:" CONTADOR1. * DISPLAY "2:" CONTADOR2. * DISPLAY "3:" CONTADOR3. STOP RUN.