Obsah
2. Technologie, na kterých byl založen sálový počítač UNIVAC II
3. Formát dat a instrukcí zpracovávaných počítačem UNIVAC II
4. „Přepínač zpětné kompatibility“
5. Opravdoví programátoři sice píšou svoje programy přímo ve strojovém kódu, ale kdo to zaplatí?
6. Grace Hopper a vývoj vyšších programovacích jazyků na počítačích UNIVAC
7. Programovací jazyky A-0 (system) a MATH-MATIC
8. Programovací jazyky B-0, FLOW-MATIC a COBOL
1. Od UNIVACu I k UNIVACu II
V předchozí části seriálu o historii výpočetní techniky jsme se zaměřili na popis sálového počítače UNIVAC I vyráběného v první polovině padesátých let minulého století společností Remington Rand. Jednalo se o první komerčně dostupný počítač, jehož aritmeticko-logická jednotka i řadič byly zkonstruovány především z elektronek (cca 5600 kusů) a polovodičových diod (v počtu větším než 18000 kusů), zatímco operační paměť byla vytvořena z akustických zpožďovacích trubic naplněných rtutí. Tento počítač byl i přes relativně vysokou frekvenci hodinového signálu 2,25 MHz poměrně pomalý – za jednu sekundu dokázal vykonat průměrně pouze 1905 operací. To se může zdát v dnešní době superskalárních procesorových jader zvláštní (protože v jednom hodinovém taktu mohou tyto procesory vykonat více než jednu instrukci), ovšem u počítače UNIVAC byl hodinový signál použit pro posun jednotlivých bitů mezi operační pamětí, pracovními registry a aritmeticko-logickou jednotkou. Základní aritmetická operace sčítání či odčítání mohla být provedena rychlostí 0,525 milisekund, což odpovídá zmiňované průměrné rychlosti 1905 operací za sekundu.
![](https://i.iinfo.cz/images/492/comp-hist-44-1-prev.jpg)
Obrázek 1: Počítač UNIVAC – v popředí je vidět jeho řídicí panel, za ním dva osciloskopy, v pozadí řadič a ALU a po pravé straně páskové jednotky typu UNISERVO.
Tento počítač byl z komerčního hlediska velmi úspěšný, ovšem poměrně záhy se ukázalo, že pro některé úlohy jsou jeho technické parametry nedostatečné – především se jednalo o malou kapacitu operační paměti a celkově nízkou výpočetní rychlost. Právě kvůli malé kapacitě operační paměti byla většina programů navržena takovým způsobem, že se z několika magnetických pásek postupně načítala vhodně uspořádaná data, která se po zpracování ukládala na další magnetickou pásku, takže operační paměť sloužila především jako vyrovnávací paměť, popř. paměť pro ta nejdůležitější často používaná data. Přitom se mohlo využívat jedné v té době unikátní vlastnosti UNIVACu – jednotky s magnetickými páskami mohly páskou pohybovat jak dopředu, tak i dozadu. Ovšem některé úlohy nemohly být dostatečně efektivně tímto způsobem řešeny. Z tohoto důvodu, samozřejmě v souladu se zaváděním nových technologických novinek v oboru číslicové techniky, začali konstruktéři ve firmě Remington Rand pracovat na novém typu počítače, který dostal jméno UNIVAC II. Jedním z požadavků bylo dodržení zpětné kompatibility s původním UNIVACem I, protože od roku 1952 vznikla pro tento počítač již poměrně velká řada programů, které mohly být jednoduše zpracovány na novém výkonnějším stroji.
![](https://i.iinfo.cz/images/492/comp-hist-44-2-prev.jpg)
Obrázek 2: Dobová reklama na počítač UNIVAC II.
2. Technologie, na kterých byl založen sálový počítač UNIVAC II
Pravděpodobně nejdůležitější změnou, která ve velké míře ovlivnila vlastnosti počítače UNIVAC II, byla náhrada technologie akustických zpožďovacích linek zkonstruovaných Eckertem za paměť s feritovými jádry (core memory). Díky tomuto technologickému pokroku bylo možné řádově zvýšit jak kapacitu operační paměti z jednoho tisíce na deset tisíc slov (120000 znaků, tj. v dnešních jednotkách cca 87 kB), tak i urychlit přístup k datům, který musel původně být u akustické paměti prováděn sériově (přesněji řečeno bit po bitu), protože bity v tomto typu paměti neustále „kroužily“ v uzavřené smyčce tvořené vlastní trubicí naplněné rtutí, piezoelektrickými měniči (senzory), synchronizačními obvody a zesilovači.
![](https://i.iinfo.cz/images/492/comp-hist-44-3-prev.jpg)
Obrázek 3: Titulní stránka manuálu k počítači UNIVAC II.
Spolu s přechodem na zcela novou technologii záznamu informací v operační paměti se ztratil i původní význam osciloskopů, které byly nedílnou součástí UNIVACu I – již minule jsme si řekli, že každý osciloskop mohl sledovat signál kolující v jedné z akustických zpožďovacích linek a dokonce bylo možné na řídicím panelu vybrat libovolné slovo ležící v operační paměti, které zkušený operátor dokázal snadno z obrazovky osciloskopu přečíst. Paměť s feritovými jádry navíc nepotřebovala téměř žádnou údržbu, na rozdíl od paměti se zpožďovacími akustickými linkami, jejichž válce naplněné rtutí bylo zapotřebí pravidelně „ladit“ a navíc tyto paměti vyžadovaly poměrně vysokou okolní teplotu, což technikům znepříjemňovalo pracovní podmínky.
![](https://i.iinfo.cz/images/492/comp-hist-44-4.jpg)
Obrázek 4: Blok feritové paměti z počítače UNIVAC II.
Počet polovodičových diod použitých pro konstrukci UNIVACu II zůstal přibližně stejný jako u UNIVACu I (více než 18000 kusů), ale celkový počet elektronek se nepatrně snížil z 5600 kusů na cca 5200 kusů, což souvisí jak se změnou technologie operačních pamětí (viz již zmíněné synchronizační obvody a zesilovače, které mohly být nahrazeny logikou typu „1 z n“ sestavenou především z polovodičových diod), tak i s tím, že se v tomto počítači, jako v jednom z prvních sálových počítačů druhé generace vůbec, objevily i tranzistory. Počet tranzistorů dosahoval pouze 1200 kusů (tj. 4,5× méně než elektronek), i když se ke konci padesátých let začaly objevovat počítače zkonstruované pouze z polovodičových prvků, tj. z diod a tranzistorů (pravdou však zůstává, že v jedné elektronce – skleněné baňce – bylo možné mít hned několik různých prvků, například dvě triody, triodu a pentodu atd., takže například klopný obvod mohl být sestrojen pouze z jedné elektronky, která tak mohla nahradit několik tranzistorů). Výpočetní rychlost byla oproti předchozímu modelu teoreticky zdvojnásobena, prakticky však počítač dokázal provést průměrně 3000 operací za sekundu namísto původních 1905 operací.
![](https://i.iinfo.cz/images/492/comp-hist-44-5-prev.jpg)
Obrázek 5: Replika prvního tranzistoru z roku 1947.
3. Formát dat a instrukcí zpracovávaných počítačem UNIVAC II
Již v úvodní kapitole jsme si řekli, že sálový počítač UNIVAC II byl navržen takovým způsobem, aby byl v co největší míře zpětně kompatibilní se svým předchůdcem UNIVAC I. Oba typy počítačů dokázaly zpracovat stejné typy údajů, a na tomto místě je nutné říci, že se jednalo o zcela unikátní formát, který nebyl nikdy dříve ani později u dalších počítačů (ani u dalších typů UNIVACů) použit, zejména z toho důvodu, že způsob uložení čísel a instrukcí nebyl úsporný. To sice bylo akceptovatelné v době, kdy byla cena ALU a řadiče vyšší než cena relativně malé operační paměti, ale u novějších počítačů se tato vlastnost již považovala za nepřijatelnou, což vlastně platí dodnes. Připomeňme si, že minule popsaný počítač UNIVAC pracoval se slovy, které měly šířku dvanácti znaků, přičemž každý znak byl uložen v šesti bitech (bylo tedy rozeznáváno celkem 64 znaků). Pokud se pracovalo s numerickými údaji, byla čísla uložena stejně jako znaky, přičemž se z původních šesti bitů využívaly pouze bity čtyři (horní dva zónové bity byly v tomto případě vynulovány).
![](https://i.iinfo.cz/images/492/comp-hist-44-6.jpg)
Obrázek 6: Postupný vývoj základních prvků elektronických počítačů (poznámka: integrovaný obvod z roku 1967 obsahoval 22 tranzistorů a zhruba stejné množství pasivních elektronických členů).
První znak ve slovu byl vyhrazen pro uložení znaménka, což znamená, že rozsah zpracovávaných čísel byl roven –99 999 999 999 až +99 999 999 999. Tento formát uložení čísel nebyl v žádném případě úsporný, protože pro uložení jedenácticiferného čísla se znaménkem bylo použito celkem 72 bitů, které by při použití binárního kódu v dvojkovém doplňku postačovaly pro uložení čísel v rozsahu –271 až 271-1, tj. -2361183241434822606848 až 2361183241434822606847 (což jsou 22ciferná čísla, nikoli čísla pouze 11ciferná). Ovšem formát UNIVACu na druhou stranu vedl ke zjednodušení konstrukce aritmeticko-logické jednotky a taktéž ke značnému zpřehlednění psaní programů, které se v té době ještě tvořily na papíře ve strojovém kódu (nikoli v assembleru). Ve slovech o šířce dvanácti znaků byly uloženy i instrukce a to po dvojicích – každá instrukce tedy měla délku šesti znaků, i když to v některých případech nebylo nezbytné.
![](https://i.iinfo.cz/images/492/comp-hist-44-7-prev.jpg)
Obrázek 7: Instalace UNIVACu u zákazníků v jejich výpočetním centru.
To je ostatně patrné i z následující tabulky s ukázkami několika instrukcí, které jsme si již popsali minule (třetí znak instrukce – zde nulový – však dostal v případě UNIVACu II nový význam):
Instrukce | Význam |
---|---|
B00XXX | přenos slova z adresy XXX do registru A a X |
L00XXX | přenos slova z adresy XXX do registru L a X |
C00XXX | uložení obsahu registru A do paměti na adresu XXX |
A00XXX | přičtení obsahu paměti z adresy XXX k registru A (X je použit pro přenosy) |
Q00×xx | pokud jsou registry L a A rovny, naplň registr CC číslem XXX – neboli proveď skok v následujícím taktu |
000×xx | SKIP (odpovídá instrukcím typu NOP) |
900×xx | STOP (zastavení programu a indikace tohoto stavu na řídicím panelu počítače) |
![](https://i.iinfo.cz/images/492/comp-hist-44-8-prev.jpg)
Obrázek 8: Řídicí panel počítače UNIVAC II (reklamní fotografie).
4. „Přepínač zpětné kompatibility“
Povšimněte si, že na počítači UNIVAC I je pouze první znak instrukce použit pro zápis jejího kódu (jedná se o prefixy B, L, C, A). Poté jsou v instrukčním kódu uloženy v podstatě pouze výplňové znaky 00 a následuje tříznaková adresa jednoho z operandů, který je načten či ukládán do operační paměti, která měla u UNIVACu I rozsah adres 000–999. Tento formát dat i instrukcí byl u počítače UNIVAC II do značné míry zachován, ovšem některé instrukce byly rozšířeny o možnost adresování slov v rozsahu až 10000 adres (0000–9999) oproti původním 1000 adresám (při pohledu na předchozí tabulku je zřejmé, že toto rozšíření bylo velmi jednoduché) a navíc instrukce začínající znakem V mohly přenášet celý blok slov (1 až 9 slov), namísto pouhé dvojice slov.
![](https://i.iinfo.cz/images/492/comp-hist-44-9-prev.jpg)
Obrázek 9: Jeden z prvků počítače UNIVAC II – polovodičové diody umístěné na vyměnitelném modulu.
Aby byla zpětná kompatibilita zaručena v co největší míře, byl počítač UNIVAC II vybaven přepínačem, který (na obvodové úrovni) měnil chování některých jeho funkčních bloků. Pokud byl tento přepínač přepnut do polohy „kompatibility“, považoval se vždy třetí znak instrukce za znak „0“, což mj. znamenalo omezení rozsahu adres na původní hodnotu 000 až 999. Taktéž programový čítač po překročení hodnoty 999 automaticky přešel na hodnotu 000, protože některé původní aplikace s tímto chováním počítaly (programátoři například poměrně často vytvářeli samomodifikující se programy, v nichž se měnila adresa instrukcí – poslední tři znaky instrukce, protože UNIVAC I neměl například indexové registry ani podporu pro nepřímé adresování).
![](https://i.iinfo.cz/images/492/comp-hist-44-10.jpg)
Obrázek 10: Některá periferní zařízení UNIVACU II: UNITYPER II v popředí, řídicí panel a jednotky UNISERVO II v pozadí (poznámka: jedná se pravděpodobně o reklamní fotografii, takže slečna na obrázku není skutečná operátorka a určitě ne programátorka, protože programátoři s vlastním počítačem vůbec nepřišli do styku – své programy vytvářeli na speciálních papírových formulářích, které byly přepisovány a nahrávány na magnetické pásky).
5. Opravdoví programátoři sice píšou svoje programy přímo ve strojovém kódu, ale kdo to zaplatí?
V předchozím textu jsme si popsali formát instrukcí počítače UNIVAC I, který byl z důvodu zpětné kompatibility použit i v počítači UNIVAC II. Vývoj programů pro tyto počítače byl poměrně složitý a především zdlouhavý a drahý, protože celý algoritmus se nejprve popsal vývojovým diagramem (kresleným samozřejmě ručně na papíry) a po ručním přezkoumání, zda algoritmus skutečně bude pracovat v pořádku, se provedl jeho přepis přímo do strojového kódu – assembler, neboli automatický programový prostředek pro transformaci zdrojového kódu využívajícího symbolické adresy a symbolické názvy instrukcí do strojového kódu, nebyl k dispozici. Přepis do strojového kódu se prováděl na papírové formuláře, které byly následně buď vyděrovány na děrné štítky (přístup preferovaný z historických důvodů především firmou IBM) nebo přepsány na magnetické pásky (přístup firmy Remington Rand). Až poté operátoři program i s daty připravili jako dávkovou úlohu, která musela počkat na své zpracování do doby, kdy byl k dispozici potřebný výpočetní čas, což však také mohlo trvat i několik týdnů.
![](https://i.iinfo.cz/images/492/comp-hist-44-11.jpg)
Obrázek 11: Hledání chyby v blocích počítače UNIVAC II bylo zajisté dobrodružnou záležitostí.
Pokud z nějakého důvodu došlo při návrhu programu nebo při jeho přepisu k chybě, muselo se celé kolečko opakovat. Navíc se v celém procesu od vytvoření programu až po jeho úspěšný běh vyskytovalo velké množství lidí (analytici, programátoři, operátoři, technici, lidé starající se o výměnu a archivaci magnetických pásek atd.), kteří mohli kvůli nějakému opomenutí do procesu tvorby a spuštění programu vnést nějakou chybu, která se projevila až následně při kontrole dat, nebo v horším případě až při stížnostech zákazníků. Mimochodem: zajímavé bylo, že operátoři a technici byli většinou přímo zaměstnanci firmy Remington Rand, která tyto pracovníky svým zákazníkům pronajímala i s vlastním počítačem (outsourcing tedy není ve světě IT vůbec nic nového, spíše naopak). I kvůli vysokému počtu pracovníků byla každá chyba, která se v programu nebo v průběhu zpracování objevila, velmi drahá.
![](https://i.iinfo.cz/images/492/comp-hist-44-12.jpg)
Obrázek 12: Základní pomůcky programátorů počítače UNIVAC I a II před vznikem vyšších programovacích jazyků – šablona pro tvorbu vývojových diagramů a tabulka kódů znaků.
Pro ilustraci nároků na lidské zdroje je v následující tabulce vypsán počet pracovníků doporučovaných pro obsluhu jednoho počítače UNIVAC II v jednosměnném, dvousměnném a třísměnném provozu. Jedná se o doporučení vydané samotnou firmou Remington Rand. Nejde přitom o zbytečnou přezaměstnanost, protože počítač bylo žádoucí mít vzhledem k jeho vysoké ceně (více než 1 500 000 dolarů, popř. měsíční pronájem za cca 30 000 dolarů) neustále vytížený. Na tomto místě je možná vhodné si připomenout, že UNIVAC II dokázal za jednu sekundu vykonat pouze cca 3000 základních aritmetických operací nebo manipulací se symboly (znaky), takže i rychlost zpracovávání dat byla z dnešního pohledu velmi nízká:
Profese | Jednosměnný provoz | Dvousměnný provoz | Třísměnný provoz |
---|---|---|---|
Supervisors | 5 | ||
Analysts | 8 | ||
Programmers | 20 | ||
Clerks | 5 | ||
Librarians | 1 | ||
Operators | 2 | 4 | 6 |
Engineers | 4 | 6 | 9 |
In-Out Oper | 2 | 4 | 6 |
Tape Handlers | 1 | 2 | 3 |
![](https://i.iinfo.cz/images/492/comp-hist-44-13-prev.png)
Obrázek 13: Vývojový diagram sloužil jako základ pro tvorbu strojového kódu.
6. Grace Hopper a vývoj vyšších programovacích jazyků na počítačích UNIVAC
„Very few [people involved in data processing] were symbol oriented; very few of them were mathematically trained.“
Grace Hopper vysvětluje, proč je vhodné programovat počítače UNIVAC ve vyšším programovacím jazyku.
Jedním z klíčových zaměstnanců firmy Remington Rand byla od roku 1949 i slavná Grace Hopper (čtenáři, kteří dávají přednost přechylování cizích příjmení, nechť si v dalším textu doplní chybějící -ová). Tato programátorka dříve pracovala s reléovými elektronickými počítači, například na počítači Mark II. Právě při hledání chyby v jednom programu, který byl provozován na tomto stroji (programy byly „zadrátovány“, nikoli uloženy v paměti), objevila Grace, že v kontaktu jednoho relé je chycená můra – „bug“, kvůli níž kontakt nesepínal. Od té doby se v jejím týmu všechny chyby v programu označovaly slovem „bug“ a Grace později začala používat nové slovo „debug“ pro proces odstraňování těchto chyb. Ovšem vraťme se do doby, kdy Grace Hopper pracovala u firmy Remington Rand (Sperry Rand). V této době se jí totiž podařilo vytvořit první překladač na světě nazvaný jednoduše A-0, který dokázal transformovat symbolicky zapsané matematické výrazy do strojového kódu počítačů UNIVAC.
![](https://i.iinfo.cz/images/492/comp-hist-44-14.png)
Obrázek 14: Program napsaný ve strojovém kódu počítačů UNIVAC I a UNIVAC II (viz též třetí kapitolu i předchozí díl tohoto seriálu).
Jednalo se vlastně o revoluční myšlenku – namísto ručního „překladu“ programů (reprezentovaných většinou vývojovým diagramem) do strojového kódu se pro tuto činnost mohl použít vlastní počítač, který si tak program sám pro sebe připravil. Po první verzi překladače A-0 vznikly i jeho vylepšené verze, především překladač A-2, který byl poměrně intenzivně na UNIVACu používán. Grace Hopper vydala v roce 1952 článek o tomto překladači, což zajímavě koresponduje s rokem 1954, kdy byl vytvořen a představen první překladač Fortranu (tento jazyk se ovšem, na rozdíl od A-0 a A-2, používá po mnoha úpravách a vylepšeních dodnes). Grace Hopperová pokračovala v návrzích dalších programovacích jazyků, především jazyka B-0 a taktéž jeho pokračovatele FLOW-MATIC a v neposlední řadě i COBOLu. Posléze se Grace vrátila k práci pro námořnictvo USA, kde po mnoha letech služby získala (jako první žena) hodnost kontradmirála v záloze.
![](https://i.iinfo.cz/images/492/comp-hist-44-15-prev.png)
Obrázek 15: Velmi malá část vývojového diagramu složitějšího programu pro počítače UNIVAC I a UNIVAC II. Povšimněte si především příkazů pro ovládání páskových jednotek a taktéž zápisu absolutních adres 000–999 u některých stavů diagramu.
7. Programovací jazyky A-0 (system) a MATH-MATIC
Programovací jazyk A-0, neboli Arithmetic Language version 0, byl vytvořen v letech 1951 až 1952 pro počítač UNIVAC I a později byl upraven pro použití na počítači UNIVAC II. Jednalo se o poměrně přímočarý překladač (bez kontroly chyb), který transformoval aritmetické a řídicí příkazy do strojového kódu. Z tohoto překladače vycházela i jeho vylepšená verze A-2, jejíž upravená varianta byla nabízena pod názvem MATH-MATIC. V programech napsaných v MATH-MATICu byly všechny programové řádky očíslovány, podobně jako tomu bylo o mnoho let později v BASICu. Jak je pro programovací jazyky, jejichž autorem je Grace Hopper, typické, používají se namísto různých symbolů převážně klíčová slova a sekvence slov s přesným významem (JUMP TO SENTENCE atd.). Jednotlivé příkazy jsou ukončeny tečkou, podobně jako věty v běžném textu.
![](https://i.iinfo.cz/images/492/comp-hist-44-16-prev.jpg)
Obrázek 16: Titulní stránka manuálu k programovacímu jazyku FLOW-MATIC.
Následuje ukázka čtyř vzájemně nesouvisejících programových řádků napsaných v MATH-MATICu – jedná se postupně o příkaz pro načtení hodnot tří proměnných, podmíněný příkaz, volání podprogramu umístěného na řádcích 4 až 8 (s implicitním návratem) a počítanou programovou smyčku s počitadlem J, které se zvyšuje od jedničky do dvaceti s krokem 1:
(1) READ A B C . (20) IF X > Y JUMP TO SENTENCE 8 . (12) EXECUTE SENTENCE 4 THRU 8 . (6) VARY J 1 (1) 20 SENTENCE 11 THRU 15 .
![](https://i.iinfo.cz/images/492/comp-hist-44-17.png)
Obrázek 17: Program napsaný v programovacím jazyku FLOW-MATIC.
Druhý demonstrační příklad je již plnohodnotným programem, který dokáže vypočítat průměr a odchylku z deseti hodnot uložených v poli. Na tomto příkladu je možná patrné, že již před více než 57 lety bylo možné programovat na vcelku vysoké úrovni (a výsledný program je dokonce čitelnější, než by tomu bylo v případě některých „moderních“ programovacích jazyků):
(1) READ-ITEM X(10) IF SENTINEL JUMP TO SENTENCE 11 . (2) SUM = 0 . (3) SUMSQUARES = 0 . (4) VARY I 1 (1) 10 SENTENCE 5 THRU 6 . (5) SUM = SUM + X(I) (6) SUMSQUARES = SUMSQUARES + X(I)^2 . (7) MEAN = SUM / 10 . (8) VARIANCE = SUMSQUARES / 10 - MEAN ^ 2 . (9) WRITE AND EDIT FOR UNIPRINTER MEAN VARIANCE . (10) JUMP TO SENTENCE 1 . (11) STOP .
![](https://i.iinfo.cz/images/492/comp-hist-44-18.jpg)
Obrázek 18: Grace Hopper s referenční příručkou jazyka COBOL stojící u páskových jednotek UNISERVO.
8. Programovací jazyky B-0, FLOW-MATIC a COBOL
„Real Programmers don't write in PL/I. PL/I is for programmers who can't decide whether to write in COBOL or FORTRAN.“
Druhým programovacím jazykem, který Grace Hopper i přes určitý odpor svých spolupracovníků (kteří předložený návrh považovali za příliš radikální) vytvořila pro počítače UNIVAC, byl jazyk nazvaný B-0 neboli Business Language version 0. Tento programovací jazyk je však známější pod svým komerčním názvem FLOW-MATIC. Jednalo o jazyk určený převážně pro zpracování dat, provádění bankovních operací, fakturace či výpočty mezd, což je velký rozdíl oproti výše popsaným jazykům A-0 a MATH-MATIC, které byly orientovány zejména na provádění numerických výpočtů. FLOW-MATIC je s velkou pravděpodobností prvním programovacím jazykem, v němž se používala anglická slova mající význam klíčových slov; navíc se jednotlivé příkazy (programové řádky) velmi podobaly jednoduchým anglickým větám, a to i v případě zápisu složitějších podmínek (jazyk původně rozeznával dvacet klíčových slov). V tomto programovacím jazyku se vyskytovaly i příkazy, kterými se daly přímo ovládat jednotlivé páskové jednotky, kterých mohlo být v případě počítače UNIVAC II připojeno až 16. Existovala taktéž podpora pro tvorbu tiskových sestav.
![ibm6](https://i.iinfo.cz/images/118/ibm6-1-prev.jpg)
Obrázek 19: První zveřejněná publikace o programovacím jazyku COBOL.
Následuje ukázka programu napsaného v programovacím jazyce FLOW-MATIC. Povšimněte si především poměrně složité podmínky na řádku číslo jedna a porovnání výsledku výpočtu s nulou se specifikovaným počtem míst na řádku 14 (ZZZZ znamená porovnání na 4 místa/cifry, ZZZZZ na pět míst atd.):
0) INPUT INVENTORY FILE=A PRICE FILE=B, OUTPUT PRICED-INV FILE=C UNPRICED-INV FILE=D, HSP D. 1) COMPARE PRODUCT-NO(A) WITH PRODUCT-NO(B) IF GREATER GO TO OPERATION 10; IF EQUAL GO TO OPERATION 5; OTHERWISE GO TO OPERATION 2. 2) TRANSFER A TO D. 3) WRITE ITEM D. 4) JUMP TO OPERATION 8. 5) TRANSFER A TO C. 6) MOVE UNIT-PRICE(B) TO UNIT-PRICE(C). 7) WRITE ITEM C. 8) READ ITEM A; IF END OF DATA GO TO OPERATION 14. 9) JUMP TO OPERATION 1. 10) READ ITEM B; IF END OF DATA GO TO OPERATION 12. 11) JUMP TO OPERATION 1. 12) SET OPERATION 9 TO GO TO OPERATION 2. 13) JUMP TO OPERATION 2. 14) TEST PRODUCT-NO(B) AGAINST ZZZZZZZZZZZZ; IF EQUAL GO TO OPERATION 16; OTHERWISE GO TO OPERATION 15. 15) REWIND B. 16) CLOSE-OUT FILES C, D. 17) STOP. (END)
![ibm6](https://i.iinfo.cz/images/118/ibm6-5-prev.png)
Obrázek 20: Editor pro zápis COBOLovských programů, na kterém je mj. patrné i rozdělení řádků na jednotlivé části (číslo sekvence, sedmý sloupec, sekce A, sekce B) i omezení délky jednotlivých textových řádků na 72 znaků na řádek.
Grace Hopper se později podílela i na vzniku standardu jazyka COBOL (tento jazyk se ostatně používá dodnes, stále na něm závisí mnoho důležitých bankovních aplikací), který vychází právě z jazyka FLOW-MATIC. O tom, že oba zmíněné programovací jazyky mají hodně společného, se mohou čtenáři přesvědčit sami porovnáním předchozího kódu s COBOLovským programem, v němž taktéž můžeme narazit na anglické věty ukončené tečkou, formátováním údajů na zadaný počet desetinných míst atd.:
$ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Multiplier. AUTHOR. Michael Coughlan. * Example program using ACCEPT, DISPLAY and MULTIPLY to * get two single digit numbers from the user and multiply them * together DATA DIVISION. WORKING-STORAGE SECTION. 01 Num1 PIC 9 VALUE ZEROS. 01 Num2 PIC 9 VALUE ZEROS. 01 Result PIC 99 VALUE ZEROS. PROCEDURE DIVISION. DISPLAY "Enter first number (1 digit) : " WITH NO ADVANCING. ACCEPT Num1. DISPLAY "Enter second number (1 digit) : " WITH NO ADVANCING. ACCEPT Num2. MULTIPLY Num1 BY Num2 GIVING Result. DISPLAY "Result is = ", Result. STOP RUN.
![ibm6](https://i.iinfo.cz/images/118/ibm6-6-prev.png)
Obrázek 21: Program typu „Hello World!“ zapsaný v COBOLu. Tento screenshot ukazuje obrazovku terminálu připojeného k mainframu firmy IBM.
9. Odkazy na Internetu
- UNIVAC II – Universal Automatic Computer Model II
http://ed-thelen.org/comp-hist/BRL61-u4.html - UNIVAC I Computer System
http://univac1.0catch.com/ - UNIVAC I Computer System
http://univac1.0catch.com/yellowpage.htm - UNIVAC (Wikipedia)
http://en.wikipedia.org/wiki/Univac - UNIVAC I (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_I - UNIVAC II (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_II - UNIVAC III (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_III - FLOW-MATIC, COBOL's Roots, Birth of COBOL…
http://www.inf.fu-berlin.de/lehre/SS01/hc/pl/cobol.htm - FLOW-MATIC
http://en.wikipedia.org/wiki/FLOW-MATIC - FLOW-MATIC Manual
http://archive.computerhistory.org/resources/text/Remington_Rand/Univac.Flowmatic.1957.102646140.pdf - Grace Murray Hopper
http://cs-www.cs.yale.edu/homes/tap/Files/hopper-story.html - Grace Hopper
http://en.wikipedia.org/wiki/Grace_Hopper - Biographies of Women Mathematicians: Grace Murray Hopper
http://www.agnesscott.edu/lriddle/women/hopper.htm - A-0 System
http://en.wikipedia.org/wiki/A-0_programming_language - Rosetta Code – Category:COBOL
http://rosettacode.org/wiki/Category:COBOL - COmmon Business Oriented Language
http://foldoc.org/COBOL - COBOL Compilers
http://www-01.ibm.com/software/awdtools/cobol/ - Cobol: Not Dead Yet
http://www.computerworld.com/s/article/266156/Cobol_Not_Dead_Yet?intsrc=kc_rfavs - The future's bright … the future's Cobol
http://features.techworld.com/applications/3056/the-futures-bright–the-futures-cobol/ - COBOL Example Programs
http://www.csis.ul.ie/COBOL/examples/default.htm - Introduction to COBOL
http://www.csis.ul.ie/COBOL/Course/COBOLIntro.htm - COBOL programming – tutorials, lectures, exercises, examples
http://www.csis.ul.ie/COBOL/ - Wikipedia: COBOL
http://en.wikipedia.org/wiki/COBOL - Humor on Computers, Systems and Programming
http://www-crypto.htw-saarland.de/weber/misc/programming.html - OpenCOBOL
http://en.wikipedia.org/wiki/OpenCOBOL - OpenCOBOL.org
http://opencobol.org/ - OpenCOBOL FAQ
http://opencobol.add1tocobol.com/ - TinyCOBOL
http://tiny-cobol.sourceforge.net/ - TinyCOBOL FAQ
http://tiny-cobol.sourceforge.net/docs/faq/ - JTC1/SC22/WG4 – COBOL
http://ra.dkuug.dk/jtc1/sc22/wg4/ - COBOL on COGS
http://www.coboloncogs.org/INDEX.HTM - Cobol Coders: Going, Going, Gone?
http://www.computerworld.com/s/article/266228/Cobol_Coders_Going_Going_Gone_ - BUNCH
http://en.wikipedia.org/wiki/BUNCH - The Colossus That Works
http://www.time.com/time/magazine/article/0,9171,949693–5,00.html - Mainframe computer
http://en.wikipedia.org/wiki/Mainframe_computer - United States Census Bureau
http://en.wikipedia.org/wiki/United_States_Census_Bureau - Slideshow – More Core Memories
http://spectrum.ieee.org/computing/hardware/slideshow-more-core-memories - UNIVAC I Mercury Delay Line Memory
http://ed-thelen.org/comp-hist/vs-univac-mercury-memory.html - Digital Number System Part-III
http://www.asic-world.com/digital/numbering3.html - Excess-3 – Definition
http://www.wordiq.com/definition/Excess-3 - Excess-3
http://en.wikipedia.org/wiki/Excess-3 - Method of complements
http://en.wikipedia.org/wiki/Method_of_complements - Univac documentation
http://www.bitsavers.org/pdf/univac/univac1/ - UNISERVO
http://en.wikipedia.org/wiki/UNISERVO - John Mauchly
http://en.wikipedia.org/wiki/John_Mauchly - J. Presper Eckert
http://en.wikipedia.org/wiki/J._Presper_Eckert - BINAC
http://en.wikipedia.org/wiki/BINAC - Delay line memory
http://en.wikipedia.org/wiki/Delay_line_memory - Paměť se zpožďovací linkou
http://cs.wikipedia.org/wiki/Paměť_se_zpožďovací_linkou - Description of the BINAC
http://www.palosverdes.com/lasthurrah/binac-description.html - UNIVersal Automatic Computer
http://www.thocp.net/hardware/univac.htm - IBM 36-bit computers
http://www.36bit.org/ibm/ - Symbolics 36-bit computers
http://www.36bit.org/symbolics/ - IBM System 360/370 Compiler and Historical Documentation
http://www.edelweb.fr/Simula/ - Who Was Who in IBM's Programming Research? Early FORTRAN Days
http://www.trailing-edge.com/~bobbemer/PRORES.HTM - Control Data Corporation (CDC) 6600: 1966–1977
http://www.cisl.ucar.edu/computers/gallery/cdc/6600.jsp - Control Data Corporation (CDC) 7600: 1971–1983
http://www.cisl.ucar.edu/computers/gallery/cdc/7600.jsp - Cray History
http://www.cray.com/About/History.aspx?404;http://www.cray.com:80/about_cray/history.html - Cray Historical Timeline
http://www.cray.com/Assets/PDF/about/CrayTimeline.pdf - Company: Cray Research, Inc. (Computer History)
http://www.computerhistory.org/brochures/companies.php?alpha=a-c&company=com-42b9d5d68b216 - PDP-1 Web Pages
http://www.pdp-1.org/ - PDP-1 Restoration Process
http://pdp-1.computerhistory.org/pdp-1/ - Programmed Data Processor
http://en.wikipedia.org/wiki/Programmed_Data_Processor - Digital Equipment Corporation
http://en.wikipedia.org/wiki/Digital_Equipment_Corporation - PDP-1
http://en.wikipedia.org/wiki/PDP-1 - Ancient Computing Machinery
http://www.ee.ryerson.ca/~elf/ancient-comp/index.html - Spacewar – The first computer video game. Really!
http://www3.sympatico.ca/maury/games/space/spacewar.html - Programmed Data Processor-1 Handbook
http://www.dbit.com/~greeng3/pdp1/pdp1.html