De huidige COBOL-norm noemt men voor het gemak COBOL-85 omdat de publicatie in 1985 plaatsvond. Het is deze norm die het uitgangspunt vormde voor de boeken Tijd voor COBOL. De voorganger van COBOL-85 was COBOL-74. Deze voorlaatste norm bevat taalelementen die algemeen als verouderd worden gezien, of die onduidelijk zijn vastgelegd. Het lijkt logisch om zulke onderdelen van COBOL dan niet meer in een nieuwe norm op te nemen. De Amerikaanse commissie die de taalspecificaties opstelt, heeft echter voor een andere oplossing gekozen. Men vreesde dat een abrupte verwijdering nadelig zou kunnen zijn voor COBOL-gebruikers. De continuïteit van bestaande programma's wilde men waarborgen. Daarom heeft de commissie gekozen voor verwijdering op termijn. Er is een lijst gemaakt met zogenaamde obsolete elements (verouderde elementen). Deze taalelementen zijn in de norm opgenomen en dus nog steeds bruikbaar, maar er staat iets bij. Van alle obsolete elements is aangekondigd dat ze bij de volgende herziening van de taal uit de norm zullen verdwijnen.
Het handhaven van de obsolete elements is dus vooral een service voor de grote hoeveelheid bestaande programma's. Die zijn nu niet in één klap ongeschikt voor de nieuwste compilers. Voor programmeurs die op dit moment de taal COBOL leren, zijn de obsolete elements uiteraard te vermijden. Vandaar dat ze zorgvuldig buiten de stof van de leerboeken Tijd voor COBOL zijn gehouden. Alleen degenen die met bestaande programma's te maken krijgen, zullen eventueel met obsolete elements geconfronteerd worden. Voor die mensen volgt hierna een opsomming van de belangrijkste verouderde taalelementen, aangevuld met een korte toelichting.
A1.1 Tekenvervanging
In de beginjaren van COBOL ontbraken op sommige apparatuur bepaalde tekens, zoals het sterretje voor vermenigvuldiging. In plaats daarvan gebruikte men een combinatie van twee tekens. De implementor bepaalde de vervangende tekens.
Met de ontwikkeling van de hardware verdween de beperking in het aantal tekens. Het is daarom geen bezwaar dat tekenvervanging bij de volgende herziening van de taal niet meer mogelijk zal zijn.
A1.2 All bij numeriek veld
Als de figuratieve constante all wordt gevolgd door een constante, dan mag dat geen numerieke constante zijn, wel een alfanumerieke constante. Een voorbeeld van correct gebruik is:
move all "12" to hoogte
Als het veld hoogte alfanumeriek is, dan is er geen probleem. Het veld wordt van voor tot achter gevuld met de tekens 1 en 2. De resultaten van deze move-opdracht zijn vaak onverwacht als het resultaatveld numeriek is, of numeriek-opgemaakt. Het decimaalteken is daarbij een belemmerende factor. Daarom is all gevolgd door een constante van meer dan één teken in samenhang met een numeriek of numeriek-opgemaakt veld, geplaatst in de lijst van obsolete elements. De constante mag nog wel uit slechts één teken bestaan. De volgende opdracht geldt dus niet als verouderd, ook niet als hoogte een numerieke variabele is.
move all "1" to hoogte
A1.3 Paragrafen in identification division
In de identification division zijn de volgende paragraafnamen toegestaan:
Deze woorden gelden dus als gereserveerde woorden (zie aanhangsel A1 van deel 1 van Tijd voor COBOL). De inhoud van de paragrafen is voor de compiler volstrekt onbelangrijk. De informatie die we in de betrokken paragrafen kwijt willen, kunnen we net zo goed als commentaarregels opnemen. Er is daarom weinig bezwaar tegen dat de genoemde paragraafnamen in de lijst met obsolete elements zijn geplaatst.
A1.4 Memory size
In de paragraaf object-computer (in de configuration section van de environment division) is het mogelijk om na de computernaam op te geven hoeveel geheugen beschikbaar is voor het vertaalde programma. Dit is een overblijfsel uit de tijd dat 'grote' computers een intern geheugen bezaten van 64K of 128K. Als het al nodig is om geheugen toe te wijzen, dan is dat een taak voor het operating system van een computer.
A1.5 Rerun
Als er tijdens de verwerking van een lang programma iets misgaat, dan moet het hele programma opnieuw worden uitgevoerd. Om dat te voorkomen beschikken sommige computers over de mogelijkheid om de stand van zaken tijdens de verwerking veilig te stellen op een achtergrondgeheugen. Als het programma misloopt, dan kan de verwerking worden hervat bij de laatst weggeschreven situatie.
De COBOL-paragraaf i-o-control kan een rerun-clausule bevatten. Daarmee is het mogelijk om aan te geven wanneer de stand van zaken dient te worden opgeslagen. COBOL bevat geen voorziening over het herstarten vanaf een tussenstand en biedt dus slechts de helft van de benodigde faciliteiten.
Om die reden en omdat dit soort zaken meer een functie is van het operating system dan van een programmeertaal, is de rerun-clausule bijgeschreven op de lijst van obsolete elements.
A1.6 Multiple file tape
In de paragraaf i-o-control kan de clausule multiple file tape aangeven welke bestanden in welke volgorde tezamen op één magneetband staan. Dit soort zaken hoort thuis bij het operating system. Daarom is deze clausule een obsolete element.
A1.7 Label records
In COBOL-74 is de label-record-clausule een verplichte clausule in de bestandbeschrijving. Men geeft er mee aan of het betrokken bestand voorzien is van bestandlabels (label records are standard) of niet (label records are omitted). Een bestandlabel is een stukje informatie dat vooraf gaat aan de eigenlijke gegevens van het bestand. Het bevat zaken als de creatiedatum, blokkingsfactor, controlegegevens en andere dingen die voor het operating system van belang kunnen zijn.
Omdat de inhoud van en de controle op bestandlabels geheel een taak is voor het operating system, hoort ook het specificeren van de aanwezigheid van labels bij het operating system thuis. Daarom heeft men deze clausule obsolete verklaard.
A1.8 Value of
De clausule value-of komt voor in de bestandbeschrijving. Met deze clausule is het mogelijk om een gedeelte van het bestandlabel vast te leggen. De clausule werd in COBOL-74 nogal eens gebruikt om de COBOL-naam te koppelen aan de fysieke naam van het bestand op schijf.
Voorbeeld:
fd omzetbestand label records are standard value of file-id is "omztbest".
Hierin is file-id een implementor-naam; omztbest is de naam die het betrokken bestand op schijf heeft. De hier beschreven koppeling hoort helemaal niet thuis in de data division en is obsolete verklaard. In COBOL-85 is de koppeling soms ondergebracht in de assign-clausule in de environment division. Vaak ook gebeurt de koppeling met opdrachten aan het operating system.
A1.9 Data records
De bestandbeschrijving bevat een overbodige clausule. Het is toegestaan om bij de fd-beschrijving te vermelden welke 01-velden erna zullen volgen.
Voorbeeld:
fd omzetbestand label records are standard data record is omzet-rec. 01 omzet-rec.
De naam of de namen van de 01-velden die bij een bestandbeschrijving kan iedereen, ook de computer, zelf zien. Deze overbodige clausule is daarom op de lijst van obsolete elements geplaatst.
A1.10 Alter
Met de alter-opdracht kan men de paragraaf- of section-naam na go to gedurende de uitvoering van een programma wijzigen. Staat er oorspronkelijk: go to afdrukken, dan kan het programma zelf dit veranderen in go to einde.
Dit statement is vanaf het ontstaan van COBOL door velen verguist. Het toestaan van zichzelf modificerende code zien velen als een zeer slechte manier van programmeren. Het gebruik van alter resulteert in een programma dat moeilijk is te begrijpen en te onderhouden. Gezien de ontwikkelingen in de manier van programmeren is het belang van de go-to-opdracht trouwens in zijn geheel al erg teruggelopen.
Aansluitend bij de alter-opdracht bestaat de mogelijkheid om na go to in het geheel geen paragraaf- of section-naam te vermelden. Die naam dient dan via een alter-opdracht te worden ingevuld voordat de go-to-opdracht kan worden uitgevoerd.
Zowel de alter-opdracht als de mogelijkheid om na go to geen naam te vermelden, zijn geplaatst op de lijst van obsolete elements.
A1.11 Enter
De enter-opdracht is de voorloper van de call-opdracht. Deze opdracht maakte het mogelijk binnen een COBOL-programma opdrachten in een andere programmeertaal zoals, FORTRAN of assembler, op te nemen. De uitwerking van de enter-opdracht is zeer afhankelijk van de implementor. Bovendien is een implementor niet verplicht deze opdracht te ondersteunen. Daardoor is enter niet geschikt voor standaardisatie en geplaatst op de lijst van obsolete elements.
A1.12 Reversed
Een sequentieel bestand kan worden geopend voor input waarbij de records in omgekeerde volgorde worden gelezen. Dus het laatste record eerst, dan het een na laatste record, enzovoort tot en met het eerste record. De hardware die noodzakelijk is om deze functie uit te voeren is niet wijd verspreid. De mogelijkheid die deze optie biedt, is afhankelijk van de aanwezige hardware en daardoor niet geschikt voor standaardisatie. Vandaar dat reversed een obsolete element is.
A1.13 Stop literal
Na stop komt meestal run, maar het is toegestaan om een constante te schrijven. Daardoor wordt het programma tijdelijk onderbroken. De constante komt terecht bij de operator. Deze mogelijkheid dateert uit de tijd dat COBOL-programma's in batch-verwerking werden uitgevoerd op een computer in een centrale computerruimte. Stop gevolgd door een constante werd bij voorbeeld gebruikt om aan de operator mee te delen dat er een andere magneetband of ander papier opgezet moest worden.
Voorbeeld:
stop "doe papier 2-fakt-00 in de printer."
Als de operator de opdracht had uitgevoerd, dan kon hij op een of andere manier het programma 'doorstarten', dat wil zeggen laten verdergaan na de stop-opdracht. De manier waarop dat doorstarten moet gebeuren is afhankelijk van de implementor. Doordat deze mogelijkheid afhankelijk is van de implementor, zijn programma's die er gebruik van maken niet goed overdraagbaar. Daarom is deze variant van de stop-opdracht op de lijst van obsolete elements geplaatst.
A1.14 Segmentation module
Segmentering is het opdelen van een programma in stukken waarvan sommige wel en andere niet tegelijk in het geheugen behoeven te zijn. COBOL kent een aparte module segmentation om dit te regelen. Vooral toen de omvang van het interne geheugen een grote belemmering was, speelde deze faciliteit een belangrijke rol. De gehele module is obsolete geworden omdat de technologie van het opdelen van een bronprogramma verouderd is. Geheugenbeheer is tegenwoordig een taak die door het operating system wordt uitgevoerd.
A1.15 Debug module
COBOL heeft een aparte module die is gewijd aan het opsporen van fouten. Door middel van speciale sections in het declaratives-gedeelte van een programma kan men wijzigingen in een veld of de loop van het programma volgen. De gehele debug-module is op de lijst van obsolete elements geplaatst. Bij de huidige stand van zaken leveren de meeste leveranciers aparte hulpprogramma's (Engels: utilities) om het opsporen van fouten te vergemakkelijken. Deze hulpmiddelen vereisen geen bijzondere aanpassing van de COBOL-regels. Testregels (zie paragraaf 13.8) zijn niet obsolete.