In dit aanhangsel komen enige problemen ter sprake die iemand kan ontmoeten als hij of zij praktisch met een COBOL-compiler aan de slag gaat.
A3.1 Norm
COBOL-85 is vastgelegd in een dik boekwerk dat is vervaardigd door het American National Standards Institute (ANSI). De beschrijving is verdeeld in 11 stukken, modules, die elk een onderwerp omvatten. De meeste modules zijn op twee niveaus beschreven.
Een compiler-leverancier mag alleen maar beweren dat zijn compiler voldoet aan standaard COBOL als aan bepaalde voorwaarden is voldaan. Het is niet zo dat elke compiler de gehele standaard moet ondersteunen. Vier van de elf modules zijn facultatief. Verder is er een indeling gemaakt in drie deelverzamelingen (Engels: subsets):
De leverancier van een compiler moet de categorie van zijn compiler vermelden. Sommige compiler zijn 'bijna hoog', maar dat is geen erkende aanduiding. In de documentatie bij de compiler staat dan dan de compiler de middelste subset volledig ondersteunt en bovendien veel elementen van de hoogste deelverzameling bevat.
Het voorgaande is van belang bij het gebruik van een specifieke compiler. Wanneer een bepaald taalelement niet schijnt te werken, dan zou het kunnen zijn dat de compiler dat taalelement niet ondersteunt.
Hier volgen enige voorbeelden van taalelementen op het hoogste niveau die wellicht niet in alle compilers aanwezig zijn:
A3.2 Afwijkingen van de norm
Sommige compilers houden zich niet aan de norm voor COBOL-85. Deze afwijkingen behoren in de documentatie bij de compiler vermeld te zijn. Wie zo'n compiler gebruikt, moet zich er steeds van bewust blijven wat de afwijkingen zijn. Afwijkingen belemmeren de overdraagbaarheid van programma's.
Sommige compilers kan men zodanig installeren dat ze bij elke compilatie melding maken van het gebruik van afwijkingen. Soms ook kan men de afwijking teniet doen. Een veel voorkomende afwijking van de norm is het gebruik van apostrofs in plaats van aanhalingstekens rondom alfanumerieke constanten. Als de compiler de mogelijk biedt om de niet-standaard apostrof te vervangen door de aanhalingstekens, dan verdient dat zeker overweging.
Andere voorbeelden van afwijkingen zijn:
De laatste afwijking betekent dat het papier gepositioneerd moet staan op de plaats waar de eerste regel afgedrukt moet worden en niet bovenaan de pagina.
A3.3 Uitbreidingen
Omdat de COBOL-norm op bepaalde punten te kort schiet, bieden veel leveranciers van compilers uitbreidingen aan. Zulke uitbreidingen behoren weer duidelijk in de documentatie te zijn aangegeven, zodat een programmeur weet dat hij een niet-standaard taalelement gebruikt.
Uitbreidingen die in bijna elke compiler aanwezig zijn, hebben betrekking op invoer via het toetsenbord en uitvoer naar het beeldscherm.
De standaardmogelijkheden van de accept-opdracht zijn tamelijk beperkt. Het is niet mogelijk een plaats op het scherm aan te geven waar de cursor moet staan. Verder is het zo dat COBOL het resultaatveld altijd vult alsof het een alfanumeriek veld is. Daarbij geldt dan bovendien nog dat alle tekens ingevuld moeten zijn. Bij een compiler die strikt volgens de COBOL-norm werkt, is de enige manier om een veld van twintig posities te vullen, het invoeren van twintig tekens. Minder kan niet.
Veel compilers staan toe dat de invoer wordt afgesloten met de enter-toets. De ingevoerde tekens worden dan volgens de regels van de move-opdracht overgebracht naar het resultaat veld. Daardoor is invoer van getallen en invoer van teksten makkelijker.
In professionele toepassingen werkt men vaak met invoerschermen. Op het scherm staan dan namen van rubrieken die de gebruiker achtereenvolgens dient in te vullen. Daarbij wil men graag gebruik maken van de schermmogelijkheden. Denk aan knipperen, highlighting, kleurgebruik en dergelijke. Veel compilers bieden uitbreidingen om dit soort zaken mogelijk te maken.
Omdat de onderwerpen die hier beschreven zijn niet in de COBOL-norm voorkomen, is er geen standaardmanier om ze te implementeren. Dat heeft tot gevolg dat elke compiler-bouwer zijn eigen oplossingen kiest. Bij sommige compilers is er aan de data divison een screen section toegevoegd om in- en uitvoermogelijkheden te beschrijven. Andere compilers gebruiken aanvullingen op de accept- en display-opdrachten om hetzelfde te bewerkstelligen.