IDENTIFICATION DIVISION. PROGRAM-ID. CALCULA-TOTAL-CLIENTES. REMARKS. EJEMPLO DE USO DE TABLAS. Tomando como entrada el archivo de clientes ya generado leerlo en forma secuencial y generar un archivo que contenga el total de clientes discriminado por provincia zona de venta y vendedor (con organizaci¢n secuencial). ARCHIVO DE CLIENTES. NUMERO DE CLIENTE 5 N. RAZON SOCIAL 30 AN. DIRECCION. CALLE 30 AN. NUMERO 5 N. LOCALIDAD 30 AN. CODIGO. PROVINCIA 1 N (VALORES POSIBLES 1 A 5). ZONA DE VENTA 2 N (VALORES POSIBLES 1 A 12). VENDEDOR 2 N (VALORES POSIBLES 1 A 15). SALDO 10 N (8 ENTEROS 2 DECIMALES PUEDE TOMAR VALORES NEGATIVOS). Organizaci¢n: Indexado claves = n£mero de cliente (clave principal), raz¢n social (puede tener valores duplicados) y c¢digo (puede tener valores duplicados). ARCHIVO TOTAL DE CLIENTES. PROVINCIA 1 N. ZONA DE VENTA 2 N. VENDEDOR 2 N. TOTAL DE CLIENTES 4 N. Organizaci¢n secuencial ascendente por provincia, zona de venta y vendedor. NOTA: solo se grabar n registros cuando el total de clientes para la combinaci¢n de provincia, zona de venta y vendedor dada sea mayor que cero. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. PC. OBJECT-COMPUTER. PC. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OPTIONAL CLIENTES ASSIGN TO RANDOM "CLIENTES.DAT" ORGANIZATION IS INDEXED ACCESS IS SEQUENTIAL RECORD KEY IS NRO-CLIENTE ALTERNATE RECORD KEY IS RAZON-SOCIAL WITH DUPLICATES ALTERNATE RECORD KEY IS CODIGO WITH DUPLICATES. SELECT TOTAL-CLIENTES ASSIGN TO OUTPUT "TOT-CLI.DAT". DATA DIVISION. FILE SECTION. FD CLIENTES. 01 REG-CLIENTES. 03 NRO-CLIENTE. 05 NRO-CLI PIC 9(5). 03 RAZON-SOCIAL PIC X(30). 03 PIC X(65). 03 CODIGO. 05 PROVINCIA PIC 9. 05 ZONA-VENTA PIC 9(2). 05 VENDEDOR PIC 9(2). 03 PIC X(10). FD TOTAL-CLIENTES. 01 REG-TOT-CLI. 03 T-PROVINCIA PIC 9. 03 T-ZONA-VENTA PIC 9(2). 03 T-VENDEDOR PIC 9(2). 03 TOTAL PIC 9(4). WORKING-STORAGE SECTION. 01 TABLA. 03 OCCURS 5 TIMES. 05 OCCURS 12 TIMES. 07 OCCURS 15 TIMES. 09 TOTAL-CLI PIC 9(4). 01 NRO-REG PIC 9(3) VALUE ZEROES. 01 CONTINUA PIC A VALUE "S". 77 SENIAL-1 PIC A VALUE "N". 01 I PIC 9. 01 J PIC 99. 01 K PIC 99. PROCEDURE DIVISION. COMIENZO. OPEN INPUT CLIENTES OUTPUT TOTAL-CLIENTES. MOVE ZEROES TO TABLA. DISPLAY " " ERASE. DISPLAY "Leyendo Registro:" LINE 12 POSITION 30 CONTROL "FCOLOR = RED, BCOLOR = WHITE". PERFORM UNTIL SENIAL-1 = "S" READ CLIENTES AT END MOVE "S" TO SENIAL-1 NOT AT END ADD 1 TO TOTAL-CLI(PROVINCIA ZONA-VENTA VENDEDOR) ADD 1 TO NRO-REG DISPLAY NRO-REG LINE 12 POSITION 48 CONTROL "FCOLOR = RED, BCOLOR = CYAN" END-READ END-PERFORM. DISPLAY "Oprima Enter para continuar" LINE 20 POSITION 26 CONTROL "FCOLOR = RED, BCOLOR = BLUE". ACCEPT CONTINUA LINE 20 POSITION 53 CONTROL "FCOLOR = RED, BCOLOR = BLUE". DISPLAY " " LINE 12 POSITION 1 ERASE EOL CONTROL "FCOLOR = WHITE, BCOLOR = BLACK". MOVE ZEROES TO NRO-REG. DISPLAY "Grabando Registro:" LINE 12 POSITION 30 CONTROL "FCOLOR = RED, BCOLOR = WHITE". PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5 AFTER J FROM 1 BY 1 UNTIL J > 12 AFTER K FROM 1 BY 1 UNTIL K > 15 IF TOTAL-CLI(I J K) > 0 MOVE I TO T-PROVINCIA MOVE J TO T-ZONA-VENTA MOVE K TO T-VENDEDOR MOVE TOTAL-CLI(I J K) TO TOTAL WRITE REG-TOT-CLI END-WRITE ADD 1 TO NRO-REG DISPLAY NRO-REG LINE 12 POSITION 48 CONTROL "FCOLOR = RED, BCOLOR = CYAN" END-IF END-PERFORM. DISPLAY "Oprima Enter para continuar" LINE 20 POSITION 26 CONTROL "FCOLOR = RED, BCOLOR = BLUE". ACCEPT CONTINUA LINE 20 POSITION 53 CONTROL "FCOLOR = RED, BCOLOR = BLUE". DISPLAY " " LINE 12 POSITION 1 ERASE EOL CONTROL "FCOLOR = WHITE, BCOLOR = BLACK". CLOSE CLIENTES TOTAL-CLIENTES. STOP RUN.