COBOL - tryb dostępu do plików
Do tej pory omawiano schematy organizacji plików. Dla każdego schematu organizacji plików można użyć różnych trybów dostępu. Poniżej przedstawiono typy trybów dostępu do plików -
- Dostęp sekwencyjny
- Losowy dostęp
- Dostęp dynamiczny
Składnie w tym module, wymienione wraz z odpowiednimi terminami, odnoszą się tylko do ich użycia w programie. Pełne programy korzystające z tych składni zostaną omówione w następnym rozdziale.
Dostęp sekwencyjny
Gdy tryb dostępu jest sekwencyjny, metoda odtwarzania rekordów zmienia się zgodnie z wybraną organizacją plików.
Dla sequential files, dostęp do rekordów odbywa się w tej samej kolejności, w jakiej zostały wstawione.
Dla indexed filesparametr używany do pobierania rekordów to wartości klucza rekordu.
Dla relative files, względne klucze rekordów są używane do pobierania rekordów.
Składnia
Poniżej znajduje się składnia trybu dostępu sekwencyjnego -
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS rec-key1
ALTERNATE RECORD KEY IS rec-key2
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
ORGANIZATION IS RELATIVE
ACCESS MODE IS SEQUENTIAL
RELATIVE KEY IS rec-key1
Losowy dostęp
Gdy tryb dostępu jest RANDOM, metoda wyszukiwania rekordów zmienia się zgodnie z wybraną organizacją plików.
Dla indexed files, rekordy są dostępne zgodnie z wartością umieszczoną w polu klucza, które może być kluczem podstawowym lub alternatywnym. Może istnieć jeden lub więcej alternatywnych indeksów.
Dla relative files , rekordy są pobierane za pomocą względnych kluczy rekordów.
Składnia
Poniżej znajduje się składnia trybu dostępu swobodnego -
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS rec-key1
ALTERNATE RECORD KEY IS rec-key2
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
ORGANIZATION IS RELATIVE
ACCESS MODE IS RANDOM
RELATIVE KEY IS rec-key1
Dostęp dynamiczny
Dostęp dynamiczny obsługuje dostęp sekwencyjny i losowy w tym samym programie. W przypadku dostępu dynamicznego jedna definicja pliku jest używana do wykonywania zarówno sekwencyjnego, jak i losowego przetwarzania, takiego jak dostęp do niektórych rekordów w kolejności sekwencyjnej, a do innych rekordów za pomocą ich kluczy.
W przypadku plików względnych i indeksowanych tryb dostępu dynamicznego umożliwia przełączanie między trybem dostępu sekwencyjnego i trybem dostępu swobodnego podczas odczytu pliku przy użyciu frazy NEXT w instrukcji READ. Funkcjonalności NEXT i READ zostaną omówione w następnym rozdziale.
Składnia
Poniżej znajduje się składnia trybu dostępu dynamicznego -
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS DYNAMIC
RECORD KEY IS rec-key1
ALTERNATE RECORD KEY IS rec-key2
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name
ORGANIZATION IS RELATIVE
ACCESS MODE IS DYNAMIC
RELATIVE KEY IS rec-key1