La gestió d'arxius és una part fonamental de la programació en COBOL, ja que molts sistemes empresarials utilitzen arxius per emmagatzemar i processar dades. En aquest tema, aprendrem com COBOL maneja els arxius, incloent-hi la seva definició, obertura, lectura, escriptura i tancament.

Conceptes Clau

  1. Tipus d'Arxius: COBOL suporta diversos tipus d'arxius, incloent-hi arxius seqüencials, indexats i relatius.
  2. Divisió de Fitxers: La divisió de fitxers en COBOL és on es defineixen els arxius que el programa utilitzarà.
  3. Operacions Bàsiques: Inclouen l'obertura, lectura, escriptura i tancament d'arxius.

Estructura Bàsica per a la Gestió d'Arxius

Divisió de Fitxers

La divisió de fitxers és on es defineixen els arxius que el programa utilitzarà. Aquí es declara el nom lògic de l'arxiu i el seu mode d'accés.

FILE-CONTROL.
    SELECT arxiu-seqüencial ASSIGN TO 'arxiu.dat'
    ORGANIZATION IS SEQUENTIAL.

Divisió de Dades

En la divisió de dades, es defineixen les estructures de registre que s'utilitzaran per llegir i escriure dades en els arxius.

DATA DIVISION.
FILE SECTION.
FD arxiu-seqüencial.
01 registre-arxiu.
   05 camp1 PIC X(10).
   05 camp2 PIC 9(5).

Divisió de Procediments

En la divisió de procediments, es realitzen les operacions sobre els arxius, com ara obrir, llegir, escriure i tancar.

PROCEDURE DIVISION.
    OPEN INPUT arxiu-seqüencial.
    READ arxiu-seqüencial INTO registre-arxiu
        AT END
            DISPLAY 'Fi de l'arxiu'.
    CLOSE arxiu-seqüencial.

Exemples Pràctics

Exemple 1: Llegir un Arxiu Seqüencial

Aquest exemple mostra com llegir un arxiu seqüencial i mostrar el seu contingut.

IDENTIFICATION DIVISION.
PROGRAM-ID. llegir-arxiu.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT arxiu-seqüencial ASSIGN TO 'arxiu.dat'
    ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD arxiu-seqüencial.
01 registre-arxiu.
   05 camp1 PIC X(10).
   05 camp2 PIC 9(5).

WORKING-STORAGE SECTION.
01 fi-de-larxiu PIC X VALUE 'N'.

PROCEDURE DIVISION.
    OPEN INPUT arxiu-seqüencial.
    PERFORM UNTIL fi-de-larxiu = 'S'
        READ arxiu-seqüencial INTO registre-arxiu
            AT END
                MOVE 'S' TO fi-de-larxiu
            NOT AT END
                DISPLAY 'Camp1: ' camp1 ' Camp2: ' camp2
        END-READ
    END-PERFORM.
    CLOSE arxiu-seqüencial.
    STOP RUN.

Exemple 2: Escriure en un Arxiu Seqüencial

Aquest exemple mostra com escriure dades en un arxiu seqüencial.

IDENTIFICATION DIVISION.
PROGRAM-ID. escriure-arxiu.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT arxiu-seqüencial ASSIGN TO 'arxiu.dat'
    ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD arxiu-seqüencial.
01 registre-arxiu.
   05 camp1 PIC X(10).
   05 camp2 PIC 9(5).

WORKING-STORAGE SECTION.
01 ws-camp1 PIC X(10) VALUE 'Exemple'.
01 ws-camp2 PIC 9(5) VALUE 12345.

PROCEDURE DIVISION.
    OPEN OUTPUT arxiu-seqüencial.
    MOVE ws-camp1 TO camp1.
    MOVE ws-camp2 TO camp2.
    WRITE registre-arxiu.
    CLOSE arxiu-seqüencial.
    STOP RUN.

Exercicis Pràctics

Exercici 1: Llegir i Comptar Registres

Descripció: Escriu un programa COBOL que llegeixi un arxiu seqüencial i compti el nombre de registres.

Solució:

IDENTIFICATION DIVISION.
PROGRAM-ID. comptar-registres.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT arxiu-seqüencial ASSIGN TO 'arxiu.dat'
    ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD arxiu-seqüencial.
01 registre-arxiu.
   05 camp1 PIC X(10).
   05 camp2 PIC 9(5).

WORKING-STORAGE SECTION.
01 fi-de-larxiu PIC X VALUE 'N'.
01 comptador PIC 9(5) VALUE 0.

PROCEDURE DIVISION.
    OPEN INPUT arxiu-seqüencial.
    PERFORM UNTIL fi-de-larxiu = 'S'
        READ arxiu-seqüencial INTO registre-arxiu
            AT END
                MOVE 'S' TO fi-de-larxiu
            NOT AT END
                ADD 1 TO comptador
        END-READ
    END-PERFORM.
    CLOSE arxiu-seqüencial.
    DISPLAY 'Nombre de registres: ' comptador.
    STOP RUN.

Exercici 2: Escriure Registres des d'Entrada de l'Usuari

Descripció: Escriu un programa COBOL que demani a l'usuari que introdueixi dades i les escrigui en un arxiu seqüencial.

Solució:

IDENTIFICATION DIVISION.
PROGRAM-ID. escriure-usuari.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT arxiu-seqüencial ASSIGN TO 'arxiu.dat'
    ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD arxiu-seqüencial.
01 registre-arxiu.
   05 camp1 PIC X(10).
   05 camp2 PIC 9(5).

WORKING-STORAGE SECTION.
01 ws-camp1 PIC X(10).
01 ws-camp2 PIC 9(5).
01 continuar PIC X VALUE 'S'.

PROCEDURE DIVISION.
    OPEN OUTPUT arxiu-seqüencial.
    PERFORM UNTIL continuar = 'N'
        DISPLAY 'Introdueix camp1: '.
        ACCEPT ws-camp1.
        DISPLAY 'Introdueix camp2: '.
        ACCEPT ws-camp2.
        MOVE ws-camp1 TO camp1.
        MOVE ws-camp2 TO camp2.
        WRITE registre-arxiu.
        DISPLAY 'Vols continuar (S/N)? '.
        ACCEPT continuar
    END-PERFORM.
    CLOSE arxiu-seqüencial.
    STOP RUN.

Resum

En aquesta secció, hem après els conceptes bàsics de la gestió d'arxius en COBOL, incloent-hi com definir, obrir, llegir, escriure i tancar arxius. També hem vist exemples pràctics i exercicis per reforçar els conceptes apresos. La gestió d'arxius és una habilitat essencial per a qualsevol programador COBOL, ja que molts sistemes empresarials depenen d'arxius per emmagatzemar i processar dades.

© Copyright 2024. Tots els drets reservats