Lekcje modułu (1/2)
Definicja Plików i File-Control
W COBOL-u zarządzanie plikami zewnętrznymi (takimi jak pliki tekstowe lub rekordy binarne na dysku) jest jedną z najważniejszych funkcji dla biznesowych aplikacji wsadowych (batch). Ponieważ COBOL powstał na długo przed nowoczesnymi bazami danych, pliki na dysku służą jako główny nośnik pamięci.
Połączenie między plikami fizycznymi zapisanymi w systemie operacyjnym a wewnętrznymi zmiennymi programu odbywa się w dwóch etapach:
- Powiązanie logiczno-fizyczne w sekcji
ENVIRONMENT DIVISION. - Definicja rekordu danych w sekcji
DATA DIVISION.
1. Powiązanie: FILE-CONTROL i SELECT ASSIGN
W rozdziale poświęconym strukturze programu poznaliśmy sekcję ENVIRONMENT DIVISION. W jej wnętrzu znajduje się INPUT-OUTPUT SECTION, a w niej sekcja FILE-CONTROL, która deklaruje zewnętrzne pliki używane przez program.
Aby powiązać plik logiczny programu (np. SALES-FILE) z rzeczywistym plikiem fizycznym na dysku (np. sales.dat), używa się instrukcji SELECT ... ASSIGN TO ... :
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SALES-FILE ASSIGN TO "sales.dat"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT SALES-FILE: Definiuje nazwę logiczną, której program będzie używał do odwoływania się do pliku.ASSIGN TO "sales.dat": Określa nazwę pliku fizycznego (lub ścieżkę) na dysku.ORGANIZATION IS LINE SEQUENTIAL(opcjonalnie) : Wskazuje, że plik jest zwykłym plikiem tekstowym, w którym każda linia reprezentuje rekord (oddzielona znakiem nowej linii).
2. Deklaracja: FILE SECTION i FD
Po powiązaniu pliku w sekcji ENVIRONMENT DIVISION musimy zdefiniować strukturę jego rekordów w sekcji DATA DIVISION. Aby to zrobić, używamy dedykowanej sekcji o nazwie FILE SECTION (która poprzedza sekcję WORKING-STORAGE SECTION).
Każdy wybrany plik musi posiadać wpis FD (File Description), który deklaruje strukturę rekordu:
DATA DIVISION.
FILE SECTION.
FD SALES-FILE.
01 SALES-RECORD.
05 EMP-ID PIC 9(5).
05 EMP-NAME PIC X(20).
05 EMP-SALARY PIC 9(6)V99.
FD SALES-FILE.: Identyfikuje opis pliku dla nazwy logicznejSALES-FILE. Zwróć uwagę, że kończy się kropką.01 SALES-RECORD.: Określa strukturę grupową (rekord) powiązaną z plikiem. Każda operacja odczytu/zapisu będzie wymieniać dane przy użyciu tej struktury w pamięci.
Spróbuj sam
Uzupełnij ENVIRONMENT DIVISION, aby zadeklarować INPUT-OUTPUT SECTION i paragraf FILE-CONTROL, kojarząc plik logiczny SALES-FILE z plikiem fizycznym 'sales.dat' za pomocą instrukcji SELECT ASSIGN.
Pokaż wskazówkę
Wpisz ENVIRONMENT DIVISION. i INPUT-OUTPUT SECTION. w kolumnie 8 (7 spacji), następnie FILE-CONTROL. w kolumnie 8 i na koniec SELECT SALES-FILE ASSIGN TO 'sales.dat'. w kolumnie 12 (11 spacji).
Rozwiązanie dostępne po 3 próbach
Zadeklaruj DATA DIVISION i FILE SECTION dla programu. Zdefiniuj File Descriptor (FD) dla pliku SALES-FILE, kojarząc z nim rekord poziomu 01 o nazwie SALES-RECORD, zawierający dwa pola podrzędne: SALES-ID (numeryczne o długości 4 cyfr) i SALES-AMOUNT (numeryczne o długości 5 cyfr z 2 niejawny cyframi dziesiętnymi).
Pokaż wskazówkę
Użyj DATA DIVISION. i FILE SECTION. w kolumnie 8, FD SALES-FILE. w kolumnie 8, a następnie pod spodem 01 SALES-RECORD. w kolumnie 8 oraz pola 05 SALES-ID PIC 9(4). i 05 SALES-AMOUNT PIC 9(5)V99. w kolumnie 12.
Rozwiązanie dostępne po 3 próbach