Bij grote computersystemen werken verschillende gebruikers allemaal tegelijk op dezelfde computer. Ze kunnen ook allemaal gebruik maken van dezelfde schijfgeheugens. Als de computer elk klein recordje van elke gebruiker apart moet wegschrijven, dan is dat voor de programmatuur en voor de apparatuur een zware belasting. Om die reden transporteert men niet één record per keer, maar een aantal records tegelijk. De eenheid van transport is dan een blok (block). Een blok bestaat uit een aantal records.
In veel gevallen is het samenvoegen van records tot blokken ook nog zuiniger wat plaatsruimte betreft dan allemaal losse records, omdat voor elk blok op de schijf extra bytes nodig zijn. Hoe het precies zit, kan weer voor elk computersysteem verschillend zijn.
illustratie: Geert Nijmolen
Het samenvoegen van een aantal records tot een blok noemt men met een werkwoord blokken (blocking). De omgekeerde bewerking (uit een blok de losse records halen) heet ontblokken (deblocking). Als COBOL-programmeur hoef je dat niet zelf te regelen. Het operating system van de computer verzorgt het blokken en ontblokken. Het enige wat in een COBOL-programma voorkomt is de block-contains-clausule in de bestandsbeschrijving. We kunnen met deze clausule de lengte van een blok opgeven in records of in characters. Variabele bloklengte is eveneens mogelijk. Dat zal het geval zijn als niet elk record van het bestand even groot is. Hier volgen enkele voorbeelden en hun betekenis.
FD rayon-bestand block contains 12 records.
Een blok bestaat hier uit 12 records. We zeggen dan dat de blokkingsfactor gelijk is aan 12. Als elk record een lengte heeft van 100 tekens, dan is een blok 1200 tekens groot. Er is sprake van een vaste recordlengte en daardoor tevens van een vaste bloklengte.
FD vertegenw-bestand block contains 1200 characters.
Elk blok is precies 1200 tekens groot. Als elk record een lengte heeft van 100 tekens, dan staat hier hetzelfde als in het vorige voorbeeld. Er is sprake van een vaste bloklengte en daardoor tevens van een vaste recordlengte.
FD cheque-best block contains 1050 to 1200 characters.
Een blok is hier minimaal 1050 tekens lang en maximaal 1200. Stel
dat dit bestand twee soorten records heeft: een soort is 200 tekens lang,
het andere soort is 50 tekens lang. Het is niet bekend hoeveel van elke
soort er achter elkaar staan. Onder meer de volgende bloklengtes zijn mogelijk:
200 + 200 + 200 + 200 + 200 + 50 = 1050
200 + 200 + 200 + 200 + 50 + 50 + 200 = 1100
200 + 50 + 200 + 50 + 200 + 50 + 200 + 50 + 200 = 1200
Als we, zoals in dit voorbeeld, de exacte lengte van een blok niet kunnen vastleggen, dan moeten we een minimum en een maximum opgeven.
De block-contains-clausule is verplicht in de bestandsbeschrijving. Behalve als een blok gelijk is aan één record. We zeggen in zo'n geval dat het bestand ongeblokt is. Dat was het geval in de voorbeelden van de voorgaande paragrafen. Uiteraard hoeven we ook geen blokkingsfactor op geven voor een apparaat waarbij geen blokking mogelijk is. Zoals bij een printer. Verder is het soms nog mogelijk om de bloklengte buiten het programma om aan te geven. Als het operating systeem die mogelijkheid biedt, dan is een block-contains-clausule niet nodig. Het is afhankelijk van de specifieke situatie óf het operating system die mogelijkheid biedt en hoe.