IDENTIFICATION DIVISION. PROGRAM-ID. CLA17. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ENTRADA ASSIGN TO ENTRA * ORGANIZATION IS LINE SEQUENTIAL FILE STATUS IS WS-FS-ENTR. DATA DIVISION. FILE SECTION. FD ENTRADA. 01 REC-ENTRADA PIC X(80). *--------------------WORKING-STORAGE-----------------------------* WORKING-STORAGE SECTION. 77 FILLER PIC X(20) VALUE "WORKING-STORAGE". 77 WS-FS-ENTR PIC XX VALUE SPACES. 77 WS-FS-IMPR PIC XX VALUE SPACES. *--------------------WS-ENTRADA----------------------------------* 01 WS-REG-SUCURSAL. 03 WS-SUC-NRO PIC 9(03) VALUE ZEROS. 03 WS-SUC-TIP-DOC PIC XX VALUE SPACES. 03 WS-SUC-NRO-DOC PIC 9(11) VALUE ZEROS. 03 WS-SUC-NOMAPE PIC X(30) VALUE SPACES. 03 WS-SUC-EST-CIV PIC X(10) VALUE SPACES. 03 WS-SUC-SEXO PIC X VALUE SPACES. 03 WS-SUC-CUENTA. 05 WS-SUC-TIP PIC 9(02) VALUE ZEROS. 05 WS-SUC-CTA PIC 9(03) VALUE ZEROS. * 03 WS-SUC-SALDO PIC S9(7)V99 COMP-3 VALUE ZEROS. 03 WS-SUC-SALDO PIC S9(7)V99 VALUE ZEROS. 03 FILLER PIC X(20) VALUE SPACES. *--------------------WS-REG-ANTERIOR-----------------------------* 01 WS-REG-ANT. 03 WS-SUC-NRO-ANT PIC 9(03) VALUE ZEROS. 03 WS-SUC-SEXO-ANT PIC X VALUE ZEROS. 03 WS-SUC-CUENTA-ANT. 05 WS-SUC-TIP-ANT PIC 9(02) VALUE ZEROS. 05 WS-SUC-CTA-ANT PIC 9(03) VALUE ZEROS. *--------------------CONTADORES----------------------------------* 77 WS-TOT-SEXO PIC 9(03) VALUE ZERO. 77 WS-TOT-CTA PIC 9(03) VALUE ZERO. 77 WS-TOT-GRAL PIC 9(03) VALUE ZERO. *--------------------SUMAS PARA PRESENT FINAL--------------------* 77 WS-F-CC PIC 9(03) VALUE ZERO. 77 WS-F-CA PIC 9(03) VALUE ZERO. 77 WS-F-PF PIC 9(03) VALUE ZERO. 77 WS-M-CC PIC 9(03) VALUE ZERO. 77 WS-M-CA PIC 9(03) VALUE ZERO. 77 WS-M-PF PIC 9(03) VALUE ZERO. 77 WS-O-CC PIC 9(03) VALUE ZERO. 77 WS-O-CA PIC 9(03) VALUE ZERO. 77 WS-O-PF PIC 9(03) VALUE ZERO. 77 WS-TOT-FEM PIC 9(03) VALUE ZERO. 77 WS-TOT-MAS PIC 9(03) VALUE ZERO. 77 WS-TOT-OTR PIC 9(03) VALUE ZERO. 77 WS-EDIT PIC ZZ9 VALUE ZERO. ****************************************************************** PROCEDURE DIVISION. MAIN-PROGRAM. PERFORM 1000-INICIO THRU F-1000-INICIO. PERFORM 2000-PROCESO THRU F-2000-PROCESO UNTIL WS-FS-ENTR EQUAL '10'. PERFORM 9999-FINAL THRU F-9999-FINAL. F-MAIN-PROGRAM. GOBACK. ****************************************************************** * * * CUERPO INICIO APERTURA ARCHIVOS * * * ****************************************************************** 1000-INICIO. OPEN INPUT ENTRADA. EVALUATE WS-FS-ENTR WHEN '00' CONTINUE WHEN '10' DISPLAY "ARCHIVO VACIO." GOBACK WHEN OTHER DISPLAY '* ERROR EN OPEN ' WS-FS-ENTR GOBACK END-EVALUATE. READ ENTRADA INTO WS-REG-SUCURSAL. EVALUATE WS-FS-ENTR WHEN '00' PERFORM 2150-SUMA-CONTAD MOVE WS-SUC-NRO TO WS-SUC-NRO-ANT MOVE WS-SUC-SEXO TO WS-SUC-SEXO-ANT MOVE WS-SUC-CUENTA TO WS-SUC-CUENTA-ANT ADD 1 TO WS-TOT-CTA PERFORM 2200-CORTE-SUCURSAL WHEN '10' DISPLAY 'ARCHIVO VACÍO ' WS-FS-ENTR GOBACK WHEN OTHER DISPLAY 'ERROR EN LECTURA DE ENTRADA ' WS-FS-ENTR GOBACK END-EVALUATE. F-1000-INICIO. EXIT. ****************************************************************** * * * CUERPO PRINCIPAL DE PROCESOS * * * ****************************************************************** 2000-PROCESO. PERFORM 2100-LEER THRU F-2100-LEER. IF WS-SUC-NRO EQUAL WS-SUC-NRO-ANT IF WS-SUC-SEXO EQUAL WS-SUC-SEXO-ANT IF WS-SUC-CUENTA EQUAL WS-SUC-CUENTA-ANT ADD 1 TO WS-TOT-CTA ELSE ADD WS-TOT-CTA TO WS-TOT-SEXO PERFORM 2210-CORTE-TIPCTA THRU F-2210-CORTE-TIPCTA END-IF ELSE ADD WS-TOT-CTA TO WS-TOT-SEXO PERFORM 2210-CORTE-TIPCTA THRU F-2210-CORTE-TIPCTA PERFORM 2220-CORTE-SEXO THRU F-2220-CORTE-SEXO END-IF ELSE ADD WS-TOT-CTA TO WS-TOT-SEXO MOVE WS-SUC-NRO TO WS-SUC-NRO-ANT PERFORM 2210-CORTE-TIPCTA THRU F-2210-CORTE-TIPCTA PERFORM 2220-CORTE-SEXO THRU F-2220-CORTE-SEXO PERFORM 2200-CORTE-SUCURSAL THRU F-2200-CORTE-SUCURSAL END-IF. F-2000-PROCESO. EXIT. ****************************************************************** 2100-LEER. READ ENTRADA INTO WS-REG-SUCURSAL. EVALUATE WS-FS-ENTR WHEN '00' PERFORM 2150-SUMA-CONTAD WHEN '10' PERFORM 2205-ULTIMA-LINEA THRU F-2205-ULTIMA-LINEA WHEN OTHER DISPLAY 'ERROR EN LECTURA DE ENTRADA ' WS-FS-ENTR GOBACK END-EVALUATE. F-2100-LEER. EXIT. ****************************************************************** 2150-SUMA-CONTAD. IF WS-SUC-SEXO EQUAL "F" EVALUATE WS-SUC-TIP WHEN 01 ADD 1 TO WS-F-CC WHEN 02 ADD 1 TO WS-F-CA WHEN 03 ADD 1 TO WS-F-PF WHEN OTHER DISPLAY "ERROR DE TIPO DE CUENTA" GOBACK END-EVALUATE END-IF. IF WS-SUC-SEXO EQUAL "M" EVALUATE WS-SUC-TIP WHEN 01 ADD 1 TO WS-M-CC WHEN 02 ADD 1 TO WS-M-CA WHEN 03 ADD 1 TO WS-M-PF WHEN OTHER DISPLAY "ERROR DE TIPO DE CUENTA" GOBACK END-EVALUATE END-IF. IF WS-SUC-SEXO EQUAL "O" EVALUATE WS-SUC-TIP WHEN 01 ADD 1 TO WS-O-CC WHEN 02 ADD 1 TO WS-O-CA WHEN 03 ADD 1 TO WS-O-PF WHEN OTHER DISPLAY "ERROR DE TIPO DE CUENTA" GOBACK END-EVALUATE END-IF. F-2150-SUMA-CONTAD. ****************************************************************** 2200-CORTE-SUCURSAL. DISPLAY " ". DISPLAY "SUCURSAL NRO: " WS-SUC-NRO-ANT. * PERFORM 2210-CORTE-TIPCTA. MOVE WS-SUC-NRO TO WS-SUC-NRO-ANT. MOVE WS-SUC-SEXO TO WS-SUC-SEXO-ANT. MOVE WS-SUC-CUENTA TO WS-SUC-CUENTA-ANT. F-2200-CORTE-SUCURSAL. EXIT. ****************************************************************** 2205-ULTIMA-LINEA. EVALUATE WS-SUC-TIP-ANT WHEN 01 DISPLAY " CUENTAS CORRIENTE " WS-SUC-SEXO-ANT ": " WS-TOT-CTA WHEN 02 DISPLAY " CAJAS DE AHORRO " WS-SUC-SEXO-ANT ": " WS-TOT-CTA WHEN 03 DISPLAY " PLAZO FIJO " WS-SUC-SEXO-ANT ": " WS-TOT-CTA WHEN OTHER DISPLAY "ERROR EN DATOS TIP" GOBACK END-EVALUATE. ADD WS-TOT-CTA TO WS-TOT-SEXO EVALUATE WS-SUC-SEXO-ANT WHEN "F" DISPLAY " TOTAL FEMENINOS: " WS-TOT-SEXO WHEN "M" DISPLAY " TOTAL MASCULINOS: " WS-TOT-SEXO WHEN "O" DISPLAY " TOTAL OTROS: " WS-TOT-SEXO WHEN OTHER DISPLAY "ERROR EN DATOS SEXO" GOBACK END-EVALUATE. PERFORM 3000-INFOR-FINAL. F-2205-ULTIMA-LINEA. EXIT. ****************************************************************** 2210-CORTE-TIPCTA. EVALUATE WS-SUC-TIP-ANT WHEN 01 DISPLAY " CUENTAS CORRIENTE " WS-SUC-SEXO-ANT ": " WS-TOT-CTA WHEN 02 DISPLAY " CAJAS DE AHORRO " WS-SUC-SEXO-ANT ": " WS-TOT-CTA WHEN 03 DISPLAY " PLAZO FIJO " WS-SUC-SEXO-ANT ": " WS-TOT-CTA WHEN OTHER DISPLAY "ERROR EN DATO TIP" GOBACK END-EVALUATE. MOVE 1 TO WS-TOT-CTA. MOVE WS-SUC-TIP TO WS-SUC-TIP-ANT. F-2210-CORTE-TIPCTA. EXIT. ****************************************************************** 2220-CORTE-SEXO. EVALUATE WS-SUC-SEXO-ANT WHEN "F" DISPLAY " TOTAL FEMENINOS: " WS-TOT-SEXO WHEN "M" DISPLAY " TOTAL MASCULINOS: " WS-TOT-SEXO WHEN "O" DISPLAY " TOTAL OTROS: " WS-TOT-SEXO WHEN OTHER DISPLAY "ERROR EN DATO SEXO" GOBACK END-EVALUATE. MOVE WS-TOT-SEXO TO WS-TOT-GRAL. MOVE 0 TO WS-TOT-SEXO. MOVE WS-SUC-SEXO TO WS-SUC-SEXO-ANT. F-2220-CORTE-SEXO. EXIT. ****************************************************************** 3000-INFOR-FINAL. DISPLAY " ". DISPLAY "--------------------------------------------------". DISPLAY " ". DISPLAY "TOTAL GENERAL DE CUENTAS DEL BANCO". DISPLAY " ". ADD WS-F-CC TO WS-TOT-FEM. ADD WS-F-CA TO WS-TOT-FEM. ADD WS-F-PF TO WS-TOT-FEM. ADD WS-M-CC TO WS-TOT-MAS. ADD WS-M-CA TO WS-TOT-MAS. ADD WS-M-PF TO WS-TOT-MAS. ADD WS-O-CC TO WS-TOT-OTR. ADD WS-O-CA TO WS-TOT-OTR. ADD WS-O-PF TO WS-TOT-OTR. MOVE WS-TOT-FEM TO WS-EDIT. DISPLAY "FEMENINO " WS-EDIT. MOVE WS-F-CC TO WS-EDIT. DISPLAY "CUENTAS CORRIENTES EN $ " WS-EDIT. MOVE WS-F-CA TO WS-EDIT. DISPLAY "CAJAS DE AHORROS EN $ " WS-EDIT. MOVE WS-F-PF TO WS-EDIT. DISPLAY "PLAZOS FIJOS EN $ " WS-EDIT. DISPLAY " ". MOVE WS-TOT-MAS TO WS-EDIT. DISPLAY "MASCULINO " WS-EDIT. MOVE WS-M-CC TO WS-EDIT. DISPLAY "CUENTAS CORRIENTES EN $ " WS-EDIT. MOVE WS-M-CA TO WS-EDIT. DISPLAY "CAJAS DE AHORROS EN $ " WS-EDIT. MOVE WS-M-PF TO WS-EDIT. DISPLAY "PLAZOS FIJOS EN $ " WS-EDIT. DISPLAY " ". MOVE WS-TOT-OTR TO WS-EDIT. DISPLAY "OTROS " WS-EDIT. MOVE WS-O-CC TO WS-EDIT. DISPLAY "CUENTAS CORRIENTES EN $ " WS-EDIT. MOVE WS-O-CA TO WS-EDIT. DISPLAY "CAJAS DE AHORROS EN $ " WS-EDIT. MOVE WS-O-PF TO WS-EDIT. DISPLAY "PLAZOS FIJOS EN $ " WS-EDIT. DISPLAY " ". F-3000-INFOR-FINAL. EXIT. ****************************************************************** * * * FINAL * * * ****************************************************************** 9999-FINAL. CLOSE ENTRADA. EVALUATE WS-FS-ENTR WHEN '00' CONTINUE WHEN '10' CONTINUE WHEN OTHER DISPLAY '* ERROR EN CLOSE ' WS-FS-ENTR GOBACK END-EVALUATE. F-9999-FINAL. EXIT.