COBOL final - Trash wiki

Transkript

COBOL final - Trash wiki
VYSOKÁ ŠKOLA BÁŇSKÁ – TECHNICKÁ UNIVERZITA OSTRAVA
FAKULTA ELEKTROTECHNIKY A INFORMATIKY
COBOL
Tutoriál jazyka
Školní rok:
Vypracovali
Milan Chaloupka
Tomáš Piprek
Tomáš Sobotík
Jan Stočeš
Rostislav Žólty
Studijní skupina
LB277
LB277
LB277
LB277
LB277
2006 / 2007
Osobní číslo
cha162
pip009
sob100
sto219
zol005
Obsah:
1 Základní informace o jazyku: .............................................................................................3
1. 1 Hlavní využití - bankovnictví......................................................................................4
1. 2 Vývojová prostředí ....................................................................................................4
1. 3 Některé charakteristiky aplikací napsaných v COBOLU ............................................5
2 Zápis programu v COBOLU...............................................................................................5
2. 1 Syntaxe jazyka COBOL..............................................................................................6
2. 2 Obecná pravidla pro zápis...........................................................................................7
2. 3 Struktura programu.....................................................................................................7
3 Datové typy........................................................................................................................8
3. 1 Deklarace dat..............................................................................................................9
4 Základní příkazy oddílu procedur .....................................................................................10
5 Příkazy pro opakování části kódu - cykly...........................................................................13
5. 1 PERFORM…PROC .................................................................................................13
5. 2 PERFORM…THRU.................................................................................................14
5. 3 PERFORM…TIMES................................................................................................14
5. 4 PERFORM…UNTIL................................................................................................15
5. 5 PERFORM…VARYING..........................................................................................16
6 Podmínka IF.....................................................................................................................16
7 Práce se soubory...............................................................................................................17
7. 1 Soubory se záznamy .................................................................................................17
7. 2 Instance záznamu vs. Typ záznamu...........................................................................17
7.3 Vyrovnávací paměť zápisu ........................................................................................18
7.4 Deklarace záznamů a souborů....................................................................................19
7.4.1 Vytvoření záznamu .............................................................................................19
7.4.2 Deklarace bufferu záznamu v programu ..............................................................19
7.4.3 Klauzule vybrání a přiřazení ...............................................................................20
7.5 Zacházení se soubory.................................................................................................20
2
1 Základní informace o jazyku:
COBOL (COmmon Business Oriented Language) vznikl v roce 1959. Byl vytvořen za
společné snahy firem Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell
Labs), RCA, Sperry Rand a Sylvania Electric Products ve spolupráci s vládními organizacemi
Spojených států, a to US Air Force, David Taylor Model Basin a National Bureau of
Standards (nyní NIST).
Popudem k vytvořením nového jazyka byl seminář s názvem "Programování/Tvorba SW",
který se konal ve dnech 28.-29. května roku 1959 na Pensylvánské univerzitě. V rámci
semináře se konala schůzka významných počítačových uživatelů a firem, která měla
rozhodnout o možnosti a účelnosti vytvoření jazyka, který by byl zaměřen na zpracování dat
pro podnikání.
Snaha o vytvoření nového jazyka byla inicializována potřebou jazyka, který umožní vytvoření
programu v minimálním časovém úseku a s minimálním úsilím. Zápis programu v jazyce,
který je blízký angličtině. Plně zdokumentovaný výsledný program. A navíc snadno
portovatelný mezi různými platformami. Zúčastnění se shodli na vhodnosti vytvoření
takového jazyka a vytvořili organizaci CODASYL (Conference On Data SYstem
Languages), jako dobrovolné sdružení uživatelů a výrobců počítačů, kterou pověřili vytvoření
jazyka, jenž by specifikované požadavky splňoval.
Pracovní skupinu nazvanou "Short Range Commitee" zpočátku tvořilo šest lidí, kteří
pracovali velmi rychle. Již 17. prosince 1959 byl výkonnému výboru předložen první návrh
jazyka COBOL. Jazyk vycházel z již existujících jazyků a jejich kompilátorů. Byly to jazyky
FLOWMATIC, AIMACO a IBM Commercial Translator. Tato první verze se označuje jako COBOL60. Následovně pak v letech 1968, 1974, 1985 prošel COBOL standardizací ANSI.
A v roce 2002 standardizaci ANSI/ISO. COBOL z roku 2002 již můžeme považovat za
objektový. V posledních letech se do jazyka COBOL investovaly a stále investují značné
prostředky, a tak se z něj stal naprosto rovnocenný partner mnoha jazyků, a to v GUI, OO i
WEB pohledu. Taktéž i jako RAD (Rapid Development Tools) je zcela srovnatelný s jinými
jazyky.
Na úvod klasický příklad „Hello world“ v jazyku COBOL
Př. 1: Hello world
000100
000200
000300
000400
000500
000600
000700
000800
000900
001000
001100
101200
101300
101400
101500
101600
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. RM-COBOL.
OBJECT-COMPUTER. RM-COBOL.
DATA DIVISION.
FILE SECTION.
PROCEDURE DIVISION.
MAIN-LOGIC SECTION.
DISPLAY "Hello world!"
STOP RUN.
3
1. 1 Hlavní využití - bankovnictví
Celosvětově představuje COBOL dle různých průzkumů nejméně polovinu ze všech
obchodních a finančních aplikací, a to především pokud jde o skutečně velké firmy.
Největší využití má COBOL v dnešní době v oblasti bankovnictví, velké finanční
korporace stále hledají vývojáře, kteří ovládají tento jazyk
1. 2 Vývojová prostředí
→ Nejzajímavější výrobci vývojových prostředí COBOL
Projdeme-li se po webových stránkách tak zjistíme, že o Cobol se skutečně zajímají největší
světové firmy z oblasti IT - z první desítky je jich 6: IBM, Microsoft, HP, Compaq Computer,
Computer Associates a Hitachi.
IBM
Cobol je podporován vlastními produkty na všech platformách od OS/2 a Windows
přes AS/400 a AIX až po OS/390. Pro nový 64-bitový OS zatím nejsou
podrobnější informace, ale při rozsahu existujících mainframe aplikací se dá Cobol i tam
předpokládat.
Merant Micro Focus
Jeden ze světově nejvýznamnějších dodavatelů kompilátorů a vývojových prostředí pro
Cobol. Na rozdíl od všech ostatních má díky lokální podpoře i významné místo v Česku a na
Slovensku. Po 16-bitových Professional Cobol, Toolset a Workbench byl v roce 1996 nějaký
čas dodáván praktický a poměrně levný 32-bitový Visual Object Cobol. Brzy byl však
nahrazen produktem NetExpress, který má většinu výše popisovaných špičkových vlastností.
Vývojová prostředí a kompilátory Merant výrazně podporují též prostředí mainframe a UNIX.
Fujitsu Software
Patří mezi nejaktivnější podporovatele nových trendů Cobolu v celosvětovém měřítku. Kromě
výše zmíněných aktivit v oblasti OO a WEB stojí za zmínku, že v říjnu 2000 uzavřel $15
milionový kontrakt s Indian Computer Institute Association jako exklusivní dodavatel
COBOL vývojových a souvisejících výukových nástrojů pro více než 800 tisíc indických
studentů.
Acucorp
Velice dynamicky se rozvíjející dodavatel Cobolu, jehož strategie je založena především na
přenositelnosti. Kompilátory Acucobol překládají do obecného mezikódu, který je pak s
pomocí příslušných run-time modulů provozovatelný bez jakýchkoliv úprav na všech
myslitelných HW platformách a operačních systémech.
Kromě těchto vývojových prostředí od velkých společností v dnešní době existuje i mnoho
tzv. „free“ vývojových prostředích a kompilátorů, které lze nalézt na webových portálech
věnovaných tomuto jazyku.
→ Další vývojová prostředí:
www.infogoal.com/cbd/cbdtol.htm
4
→ Kompilátory:
www.infogoal.com/cbd/cbdcmp.htm
Z této široké nabídky si určitě vybere, každý kdo chce vytvářet programy v tomto jazyce a to
na jakékoliv platformě. Mě osobně však nejvíce zaujal plugin do vývojového prostředí
Eclipse, které je mezi studenty velice populární. Plugin stačí pouze stáhnout a nakopírovat do
složky s eclipsem. Musíte však mít novou verzi Eclipsu (verze 3.2 ) Podrobný návod je na
uvedené adrese.
Plugin možno stáhnout zde: → www.eclipse.org/cobol
Na webu existuje ještě mnoho dalších zdrojů, odkud je možné získat vývojové prostředí a
kompilátor jazyka, zde jsou uvedeny pouze zdroje, kde se nachází pouze zdroje, které mne
nejvíc zaujaly, a kde se nachází nejvíc možností pro výběr požadované platformy atd.
1. 3 Některé charakteristiky aplikací napsaných v COBOLU
Většina aplikací napsaných v COBOLU se skládá z více než 1 000 000 řádků kódu. Tyto
aplikace mají velmi dlouhou životnost, protože tyto rozsáhlé aplikace nemohou být jednoduše
nahrazeny když se objeví nějaký nový programovací jazyk nebo technologie. Tudíž bankovní
a jiné finanční aplikace staré 10 – 30 let napsané v COBOLU jsou zcela běžné. Druhým
důvodem, proč se tyto aplikace i dnes píší v tomto jazyku – a nepřipisují se do „moderních“
jazyků, je bezpečnost. Nikdo nechce riskovat ztrátu důležitých a citlivých dat, které
představují ohromné finanční prostředky. Z tohoto důvodu COBOLovské aplikace obvykle
běží v kritických oblastech obchodu a finančnictví. Pro představu přes 95 % finančních
aplikací je napsáno právě v COBOLU. Tyto aplikace musí pracovat s ohromným množstvím
dat. Databáze o velikosti měřené v terabytech není nezvyklá.
COBOL je jednoduchý jazyk (neobsahuje žádné pointery, uživatelem definované funkce a
datové) s omezeným rozsahem funkcí. Toto podporuje jednoduchý a přímý programovací
styl. Řekli jsme, že COBOL je velice jednoduchý jazyk s omezeným rozsahem funkcí. Ovšem
OO-COBOL (objektově orientovaný) toto vše mění. Tato verze jazyka zachovává všechny
jeho výhody předešlých verzí a nově mimo jiné zahrnuje:
§
§
§
§
§
Uživatelem definované funkce
Objekty
Dynamicky alokaci paměti (pointery)
Uživatelem definované datové typy
Národní znakové sady – Unicode
2 Zápis programu v COBOLU
Kdysi byly programy v COBOLu psány na formulář a poté převedeny na děrné štítky. Dnes
se však většina programů zadává přímo do počítače. V COBOLu však dodnes přetrvaly
některé požadavky na formátování z doby děrných štítků, a proto se program zapisuje v
80místných řádcích. Každý řádek se pak rozděluje následovně. Sloupec 1-6 se nazývá
číslovací řádek. Sloupec 8-11 oblast A. Sloupec 12-72 oblast B. A poslední část řádku pak
oblast pokračovací. I přesto však některé kompilátory tyto pravidla ignorují.
5
Pokud kompilátor rozeznává tyto 2 oblasti, všechny názvy oddílu, sekcí, odstavců, FD
záznamů a čísel úrovně 01 musí začínat v oblasti A. Všechny ostatní přikazy musí začínat
v oblasti B.
2. 1 Syntaxe jazyka COBOL
Někdy se také nazýva COBOL MetaLanguage.
Slova velkými písmeny jsou vyhrazená slova. Pokud jsou podtržená, jsou povinná, jinak
slouží hlavně k lepší čitelnosti zdrojového kódu. Vzhledem k tomu, že byl COBOL navržen
tak, aby se podobal běžnému vyjadřování v angličtině je v něm hodně slov, která mohou být
vypuštěna a slouží jen k lepší orientaci.
Slova psaná různou velikostí písma představují jména zvolená programátorem (například
jména proměnných).
Pokud je část kódu ve složených závorkách { }, musí se provést část kódu uvnitř těchto
závorek.
Pokud je uvnitř pouze jedna možnost, je povinná.
Kód v hranatých závorkách [ ] označuje volitelný kód.
Symbol elipsy … (tři tečky) označuje, že předchozí výraz může být opakován podle uvážení
programátora.
Vyhodnocení aritmetických funkcí v COBOLu a přiřazení výsledku do proměnné je
prováděno příkazem COMPUTE:
Syntaxe příkazu COMPUTE:
→ Vysvětlení: Klíčové slovo COMPUTE je následováno názvem proměnné (případně více
proměnnými – symbol „…“) použitými pro vykonání příkazu.
Symbol „…“ je umístěn mimo složené závorky, což chápeme tak, že každá
proměnná může mít svou zaokrouhlenou hodnotu.
Hranaté závorky označují následující výraz jako volitelný, ale pokud bude
použitý, je třeba vybrat ze dvou uvedených možností ON SIZE ERROR nebo
NOT ON SIZE ERROR.
Protože END-COMPUTE je v hranatých závorkách musí být vykonán jen
pokud je použito SIZE ERROR nebo NOT SIZE ERROR.
V praxi vypadá přikaz COMPUTE například takto:
COMPUTE Result1 ROUNDED, Result2 = ((9*9)+8)/5
Proměnné Result1 bude přiřazena hodnota 18 a Result2 bude přiřazena hodnota 17,8
6
2. 2 Obecná pravidla pro zápis
Všechna uživatelem definovaná jména jako jména proměnných, odstavců a oddílů musí
splňovat následující podmínky:
§ Musí obsahovat 1-30 znaků, z toho alespoň jeden znak z abecedy A-Z.
§ Nesmí začínat ani končit pomlčkou.
§ Musí se skládat ze znaků A-Z a číslic 0-9 a pomlčky.
§ Nesmí obsahovat mezery.
§ Nezáleží na velikosti písmen.
2. 3 Struktura programu
Program je v COBOLU rozdělen do čtyř částí (oddílů), tzv. division. Tím je ve zdrojovém
kódu postaráno o přehlednost. Tyto části jsou následující. Identifikační část
(IDENTIFICATION DIVISION) obsahuje řadu informací k pojmenování a dokumentování
zdrojového programu. Tato část nemá žádný vliv na program. Strojová část (ENVIROMENT
DIVISION) popisuje pro program nezbytné hardwarové okolí. Datová část (DATA
DIVISION) se používá k popisu datových souborů, které budou v programu zpracovány. Tyto
datové soubory obsahují popisy datových vět, konstanty a proměnné. Údaje v této části se
nazývají definice a klauzule. Výkonná část (PROCEDURE DIVISION) obsahuje řadu
výkonných příkazů, které společně s definovanými datovými soubory tvoří program. Údaje v
této části se nazývají příkazy.
Dodržuje se určitá hierarchie, podobně jako v ostatních jazycích. Každý program se skládá
z oddílů, sekcí, odstavců, vět a výrazů, což je obdoba funkcí a procedur z ostatních jazyků.
→ Oddíl (Division)
Blok kódu, obvykle obsahující jednu a více sekcí. Začíná jménem oddílů a končí jménem
dalšího.
→ Sekce (Section)
Blok kódu, obsahující několik odstavců
Příklad:
SelectUnpaidBills SECTION.
FILE SECTION.
→ Odstavec (Paragraph)
Blok kódu tvořený několika větami
Příklad:
PrintFinalTotals.
PROGRAM-ID.
→ Věty (Sentences) a příkazy (Statements)
Příklad:
MOVE .21 TO DPH
MOVE 1235.76 TO CenaZbozi
COMPUTE CelkovaCena = CenaZbozi * DPH
Příkazy se skládají z klíčových slov, operátorů a operandů.
7
Př. 2: Ukázka jednoduchého programu a jeho rozdělení na výše uvedené části
IDENTIFICATION DIVISION.
PROGRAM-ID. SequenceProgram.
AUTHOR. ???????.
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.
Vypocti.
ACCEPT Num1.
ACCEPT Num2.
MULTIPLY Num1 BY Num2
GIVING Result.
DISPLAY "Výsledek je: = ", Result.
STOP RUN.
Minimální verze programu:
IDENTIFICATION DIVISION.
PROGRAM-ID. NejmensiProgram.
PROCEDURE DIVISION.
Zobrazeni.
DISPLAY "Hello world".
STOP RUN.
3 Datové typy
V COBOLu lze obdobně jako v ostatních jazycích používat více datových typů. Nyní si
ukážeme jejich deklaraci a použití. V COBOLu jsou tři kategorie dat:
§ proměnné
§ literály
§ konstanty
→ Proměnné
Jméno proměnné slouží identifikaci rezervované oblasti paměti, ve které je proměnná
uložena. Každá proměnná v COBOLu musí být popsána v DATA DIVISION. Musíme taká
určit datový typ proměnné. Ty jsou v COBOLu 3: numeric (obdoba integer), alphanumeric
(string) a alphabetic. COBOL však neprovádí silnou typovou kontrolu, proto lze například do
proměnné typu numeric uložit string, což však často způsobuje pád programu, a proto je třeba
na to dávat pozor.
8
Tyto datové typy se označují:
•
•
•
Alphabetic (PIC A)
Alphanumeric (PIC X)
Numeric (PIC 9)
→ Literály
Obsahují pouze hodnotu výrazu. Nelze na něj odkazovat jménem. Jedná se o konstantní data.
Jsou dva typy literálů:
§ string – obsahující libovolné znaky
§ numeric - obsahující čísla.
→ Figurativní konstanty
Na rozdíl od ostatních programovacích jazyků COBOL neumožňuje vytvoření uživatelem
definovaných konstant. Místo toho poskytuje tyto figurativní konstanty.
Mohou být použity na všech místech kde literály, ale po přiřazení k proměnné přepíší celý její
obsah.
Figurativní konstanty jsou:
SPACE or SPACES
Chovají se jako 1 mezera
ZERO or ZEROS or ZEROES
1 nebo více nul
QUOTE or QUOTES
Nahrazení uvozovek
HIGH-VALUE or HIGHVALUES
Použití maximální hodnoty
LOW-VALUE or LOW-VALUES Použití minimální hodnoty
ALL literal
Umožní běžnému literálu chování
jako fig. konstanta
3. 1 Deklarace dat
Protože COBOL není typovaný jako Modula-2 nebo C, používá jiný způsob deklarace –
deklarace příkladem, která se musí nacházet v DATA DIVISION.
PIC 9(6)
PIC 9(6)V99
PICTURE X(10)
PIC S9(4)V9(4)
PIC 9(18)
shodné
shodné
shodné
shodné
shodné
s
s
s
s
s
PICTURE 999999
PIC 999999V99
PIC XXXXXXXXXX
PIC S9999V9999
PIC 999999999999999999
9
9
Znázorňuje výskyt číslice
X
Libovolný znak
A
Libovolný znak abecedy A-Z a mezera
V
Znázorňuje pozici desetinné čárky
S
Znázorňuje výskyt znaku, může být použit pouze na
začátku
Číselné hodnoty mají maximální delku 18 číslic a délka řetězce (string) je závislá na
konkrétním systému.
4 Základní příkazy oddílu procedur
Oddíl procedur obsahuje příkazy pro manipulaci s daty popsanými v DATA DIVISION.
→
Práce se vstupem a výstupem
Pro čtení dat z klávesnice se používá příkaz ACCEPT a pro zobrazení DISPLAY
ACCEPT Num1
uloží do proměnné Num1 vstup z klávesnice
ACCEPT DnesniDatum FROM {DATE} uloží do proměnné DnesniDatum systémový čas
DISPLAY "Toto je tutorial k jazyku " JmenoJazyka. Vypíše na obrazovku text
v uvozovkách a obsah proměnné.
→ Přiřazování hodnot pomocí příkazu MOVE
MOVE Zdroj TO Cil…
Příkaz MOVE kopíruje data z jednoho zdroje do jednoho a více cílů. Pokud je délka zdroje
kratší, zbytek je vyplněn nulami nebo mezerami. Pokud je větší, přebývající část se zahodí.
→ Aritmetické operace
Ve většině procedurálních jazyků jsou výpočty prováděny přiřazením výsledku aritmetického
výrazu nebo funkce do proměnné. V COBOLu je příkaz COMPUTE používán pro
vyhodnocení aritmetických výrazů, ale také používa samostatné příkazy pro sčítání, odčítání,
násobení a dělení.
10
→ Zaokrouhlování
Používá se příkaz ROUNDED
Příklady zaokrouhlení
Proměnná Aktuální hodnota Oříznutý výsledek Zaokrouhlený výsledek
PIC 9(3)V9
123.25
123.2
123.3
PIC 9(3)V9
123.247
123.2
123.2
PIC 9(3)
123.25
123
123
K ošetření chyb se používá příkaz ON SIZE ERROR
Dělení nulou vždy způsobí chybu SIZE ERROR
→ Sčítání
Syntaxe:
→ Vysvětlení: Pokud je použitý příkaz GIVING, tak se vše před ním je sečteno a výsledek
je uložen do proměnné Result. Pokud není použitý, všehno před slovem TO
je sečteno a výsledek je přičten ke každé proměnné ValueResult
→ Odčítání
Syntaxe:
→ Vysvětlení:
Pokud je použito slovo GIVING, vše před FROM je sečteno dohromady a
výsledek je odečten od Value po slově FORM a výsledek je uložen do každé
proměnné Result. Pokud není použito, vše před slovem FROM je sečteno
dohromady a výsledek je odečten od každé proměnné ValueResult po slově
FROM
→ Násobení
Syntaxe:
11
→ Vysvětlení: Pokud je použito slovo GIVING, proměnná vlevo od slova BY je
vynásobena proměnnou Value napravo do slova BY a výsledek je uložen do
každé proměnne Result.Pokud není slovo GIVING použito, proměnná Value
vlevo od BY je vynásobena každou hodnotou ValueResult. Každý dílčí
výsledek je uložen do proměnné ValueResult.
→ Dělení
COBOL umožňuje dělení s a bez zbytku.
Syntaxe:
→ Vysvětlení:
Pokud je použito slovo GIVING, proměnná Value vlevo od BY nebo
INTO je vydělena Value napravo. Pokud není použito slovo GIVING,
proměnná vlevo od INTO je vydělena každou hodnotou ValueResult.
Výsledek každého výpočtu je uložen do ValueResult.
Syntaxe:
→ Vysvětlení:
V tomto kódu proměnná Val vlevo od BY nebo INTO je vydělena Val
napravo. Podíl je přiřazen do Quot a zbytek do Rem.
→ Příkaz Compute
Syntaxe:
→ Vysvětlení:
COMPUTE přiřadí výsledek aritmetického výrazu proměnné. Aritmetický
výraz je vyhodnocen pomocí běžných pravidel.
12
5 Příkazy pro opakování části kódu - cykly
Skoro ve všech programovacích jazycích existují příkazy na opakování určité části kódu.
→ Nejčastější jsou: repeat, while a for.
Rozlišení podoby příkazů mezi jazykem C a jazykem COBOL:
Jazyk
C
do{}
while
while
for
COBOL
přirozený jazyk :-)
Perform Until
Opakuj dokud…testování na konci
Perform Until
Perform
Opakuj dokud…testování na začátku
Opakuj n krát
V této části si ukážeme, jak vytvořit cykly, podobné těm z jazyka C (do while, while, for)
5. 1 PERFORM…PROC
Jestli jste psali programy v jiných programovacích jazycích, určitě jste se dostali
k tzv . „podprogramu“ (část kódu, která je vykonána, když je v programu zavolána).
V COBOLu jsou také podprogramy, které se dělí do dvou částí:
§
§
Otevřené podprogramy
Uzavřené podprogramy
Otevřené podprogramy jsou implementovány použitím příkazu PERFORM.
Uzavřené podprogramy jsou implementovány použitím příkazu CALL a obsáhlými nebo
externími podprogramy.
Základní syntaxe příkazu PERFORM:
PERFORM [první příkaz [{THRU nebo THROUGH}příkaz, kterým se ukončí PERFORM]]
Teď si ukážeme nejjednodušší použití
příkazu PERFORM, a to za použití tzv.
„skoku“ do jiné procedury:
Př. 3: Příkaz Perform
$ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID. Perform1.
AUTHOR. LB277.
* Ukazka pouziti prikazu Perform.
PROCEDURE DIVISION.
Prvni.
DISPLAY "Prvni. Tady zacina program"
PERFORM Jednicka
DISPLAY "Zpatky v Prvni.".
STOP RUN.
Dvojka.
DISPLAY ">>>>>>>> Ted pracuje Dvojka."
PERFORM Trojka.
DISPLAY ">>>>>>>> Zpatky ve Dvojce.".
Jednicka.
DISPLAY ">>>> Ted pracuje Jednicka"
PERFORM Dvojka
DISPLAY ">>>> Zpatky v Jednicce".
Trojka.
DISPLAY ">>>>>>>>>>>> Ted pracuje Trojka".
13
→ Vysvětlení: Program začíná v příkazu První. Vypíšeme informaci, že se nacházíme
v První a pak se pomocí příkazu PERFORM přesouváme do příkazu
Jednicka. Z jedničky voláme Dvojku….a tak to probíhá až celý program zase
skončí v Prvni a vypíše toto na výpis.
5. 2 PERFORM…THRU
Další použití příkazu PERFORM je za použití příkazu THRU (Dělej dokud). Zde můžeme
použít také podmínku IF.
Př. 4: Použití Perform a THRU
PROCEDURE DIVISION
Begin.
PERFORM Delej THRU DelejExit
STOP RUN.
Delej.
Příkazy
Příkazy
IF ErrorFound GO TO DelejExit
END-IF
Příkazy
Příkazy
IF ErrorFound GO TO DelejExit
END-IF
Příkazy
Příkazy
Příkazy
IF ErrorFound GO TO DelejExit
END-IF
Příkazy
Příkazy
Příkazy
Příkazy
DelejExit.
EXIT.
→ Vysvětlení:
Zde už na začátku chceme, aby byl program vykonávaný dokud ho nějaký
příkaz nepošle nakonec. Podmínkou IF rozhodujeme, jestli program
pošleme nakonec nebo jeho průběh pustíme dál.
5. 3 PERFORM…TIMES
Dále můžeme příkaz PERFORM použít za užití klíčového slova TIMES. (Tato část je lehce
podobná známému příkazu for) Zde si přesně určíme, kolikrát se má určitý blok kódu
opakovat.
→ Sytaxe::
PERFORM [první příkaz [{THRU nebo THROUGH}příkaz,kterým se ukončí PERFORM]]
RepeatCount TIMES
14
Př. 5 Použití PERFORM a TIMES
$ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID. PERFORM_TIMES.
AUTHOR. LB277.
* Pouziti prikazu PERFORM…TIMES.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
Begin.
DISPLAY "Zacina program"
PERFORM 3 TIMES
DISPLAY ">>>>Budu opakovat trikrat stejnou vetu"
END-PERFORM
DISPLAY "Hotovo"
STOP RUN.
5. 4 PERFORM…UNTIL
Tento příkaz se dá přirovnat příkazu (do) while.
→ Sytaxe::
PERFORM [první příkaz [{THRU nebo THROUGH}příkaz,kterým se ukončí PERFORM]]
[Test (na začátku/na konci)]
UNTIL podmínka
Test na konci je podobný příkazu do, a test na začátku příkazu while.
Př. 6 Použití PERFORM a UNTIL
READ ZaznamyStudentu
AT END SET EndOfStudentFile TO TRUE
END-READ
PERFORM WITH TEST BEFORE UNTIL EndOfStudentFile
Zde se vykonavaji prikazy
READ ZaznamyStudentu
AT END SET EndOfStudentFile TO TRUE
END-READ
END-PERFORM
15
→ Vysvětlení:
Na začátku chci, ať program pracuje tak dlouho, dokud není proměnná
True. Na konci tuto proměnnou nastavím na True a program kvůli
podmínce skončí.
5. 5 PERFORM…VARYING
Typické použití příkazu For v jazyce COBOL.
→ Syntaxe::
PERFORM CountRecords
VARYING RecCount FROM 1 BY 1 UNTIL EndOfFile
6 Podmínka IF
Syntaxe je naprosto totožná s rozšířenějšími programovacími jazyky.
Podmínka začíná příkazem IF následuje příkaz pro podmínku a pak příkaz pro vykonání
THEN. V těle se vykoná určitý příkaz. Pokud budeme chtít zařadit do podmínky příkaz pro
plnění, že podmínka nebyla splněna, tak následuje ELSE a příkazy pro vykonání.
Celý blok s podmínkou musí končit příkazem END IF.
Př. 7 Použití IF ELSE
$ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID. IF.
AUTHOR. LB277.
* Ukazka pouziti podminky IF.
PROCEDURE DIVISION.
promenna
IF promena THEN
DISPLAY "Plnim podminku.".
ELSE
DISPLAY "Podmínka nebyla splnena.".
END IF
16
7 Práce se soubory
Ačkoli COBOL může být použit ke zpracování různých datových souborů, je zdaleka nejvíce
používán pouze k zpracování zaznamenaných souborů.
V COBOLu jsou v podstatě dva typy organizace souborů:
§
§
Soubory se sériovým přístupem (Sequential soubory v COBOLu)
Soubory s přímým přístupem
V sériovém přístupu jsou záznamy organizovány a zpřístupňovány sériově.
S přímým přístupem jsou záznamy organizovány do určité míry tak jak nám umožňuje přímý
přístup k přesnému záznamu bez potřeby čtení předešlých záznamů.
7. 1 Soubory se záznamy
COBOL je zásadně používán v situacích, kde je objem dat ke zpracování velký.
V souborech založených na záznamu:
§ Používáme termíny jako soubor, který nám popisuje jednu nebo více skupin
výskytů typů záznamů.
§ Dále používáme termíny jako záznam, který nám popisuje skupinu polí, které
zaznamenávají informace o objektu.
§ Již zmiňovaný termín pole, který popisuje položky informací o zaznamenaném
objektu.
7. 2 Instance záznamu vs. Typ záznamu
Je důležité odlišit instanci záznamu od typu záznamu. Každá instance záznamu v souboru má
různou hodnotu, ale každý záznam v souboru má stejnou strukturu.
V souboru o detailech studenta (uvedeno níže), jsou instance (výskyty) záznamů o studentovi
aktuální hodnoty v souboru. Typ záznamu popisuje strukturu každé zaznamenané instance
17
7.3 Vyrovnávací paměť zápisu
Předtím než počítač může dělat jakékoliv zpracování kousku dat, data musí být nahrána do
hlavní paměti (RAM). CPU může totiž pracovat pouze s daty v RAM.
Soubory se záznamy se mohou skládat ze stovek, tisíců i milionů záznamů (např. bankovní
záznamy) a mohou požadovat až desítky gigabytů místa. Soubory takových velikostí nelze
zpracovávat nahráním celých souborů do paměti najednou. Namísto toho jsou soubory
zpracovány a načítány do paměti po jednotlivých záznamech.
K zachování záznamů načtené v paměti a možnosti dostat se k přesným polím záznamů musí
programátor deklarovat strukturu záznamu (obrázek níže) v jeho programu. Počítač použije
programátorův popis záznamu (typ záznamu (šablona)) k nastavení instancí které chceme
použít v programu. Paměť určená pro uchovávání záznamů je obvykle nazývána buffer
záznamu.
Buffer záznamu je pouze spojení mezi programem a záznamy v souboru.
18
7.4 Deklarace záznamů a souborů
Úvod
Předpokládáme, že chceme vytvořit soubor k tomu, aby nám uchovával informace o
objektech (v tomhle případě o studentech). Musíme nadefinovat jaké informace chceme
uchovávat.
Jelikož ukázka je na záznamu o studentech potřebujeme znát následující:
§
§
§
§
IdStud
JmenoStud
DatumNaroz
KodKurzu
7.4.1 Vytvoření záznamu
Podle toho jaké máme záznamy určíme jejich datové typy a počet míst, které budou zabírat.
Následně rozdělíme do podskupin. (obr. vlevo dole)
7.4.2 Deklarace bufferu záznamu v programu
Typ záznamu/šablona/buffer každého souboru použitého v programu musí být popsán v FILE
SECTION jako FD (file description=popis souboru) vstup. Vstup FD se musí skládat z
písmen FD a interního jméno souboru. (obr. vpravo dole)
19
7.4.3 Klauzule vybrání a přiřazení
Ačkoliv máne soubor na disku se jménem Stud.dat odkazujeme se v programu na
StudentiFile. Musíme spojit aktuální souborový název v programu s již existujícím souborem
na disku.
Interní soubor zadaný v FD vstupu se spojí s externím souborem na disku či jiném médiu
pomocí klauzulí vybrání (SELECT) a přiřazení (ASSIGN). SELECT a ASSIGN je vstupem v
sekci FILE-CONTROL v INPUT-OUTPUT SECTION v ENVIRONMENT DIVISION
(jedné ze čtyř hlavních divizí v programech COBOL).
Syntaxe:
SELECT FileName ASSIGN TO ExternalFileReference
7.5 Zacházení se soubory
Existují čtyři slova, která nám zajišťují práci se soubory:
§
§
§
§
OPEN
CLOSE
READ
WRITE
OPEN:
Syntaxe:
OPEN {INPUT or OUTPUT or EXTEND} InternalFileName
20
CLOSE:
Syntaxe:
CLOSE InternalFileName...
READ:
Syntaxe:
WRITE:
Syntaxe:
WRITE RecordName [FROM Identifier]
21

Podobné dokumenty

1 PROGRAMOVÁNÍ Úvod

1 PROGRAMOVÁNÍ Úvod segmentu a podobné inicializační "keci". MOV slouží k přiřazení hodnoty proměnné nebo registru (tedy totéž jako : = /dvojtečka + rovná se/ v Pascalu; registr je něco jako paměťový obvod v procesoru...

Více

OKS-NRM.DAT - AgroKonzulta Žamberk

OKS-NRM.DAT - AgroKonzulta Žamberk velikostí převáděné numerické proměnné a neobsahuje desetinná místa N:2 Proměnná je v textovém souboru uložena na počet znaků určených velikostí převáděné numerické proměnné. Dva znaky jsou rezerv...

Více

Kandidát do AS ČVUT Doc. RNDr. Josef Kolář, CSc.

Kandidát do AS ČVUT Doc. RNDr. Josef Kolář, CSc. • V období 4/1978 – 3/1979 jsem působil jako invited professor na Centro de Investigación y Estudios Avanzados del I.P.N. v Mexico City, po návratu jsem se na ČVUT habilitoval pro obor počítače. • ...

Více

Java 5.0 Tiger - Novinky a tutoriál

Java 5.0 Tiger - Novinky a tutoriál Cílem práce je vytvořit kolekci tutoriálů, které nabídnou možnost seznámit se s novými rysy programovacího jazyka Java ve verzi J2SE 5.0. Tato verze, uvolněná v září roku 2004, představuje v deseti...

Více

Návod pro vyhledávání relevantních informací pomocí nástroje Google

Návod pro vyhledávání relevantních informací pomocí nástroje Google které odkazují na vámi zadanou stránku. Slouží k 5tomu, abyste snadno našli, kdo všechno odkazuje na vámi zadanou adresu.

Více

Zadání HB51 2015/16 podle pořadových čísel studentů

Zadání HB51 2015/16 podle pořadových čísel studentů proud měřte multimetry Agilent 34401A. Napětí nastavujte pomocí funkčního generátoru Agilent 33120A s amplitudou od 0 do 5 V s krokem 0,1 V. Výsledky zapište do sloupcového textového diskového soub...

Více

Časopis 2007 PDF, 1,63 MB PDF, 1,63 MB Stáhnout - OR-CZ

Časopis 2007 PDF, 1,63 MB PDF, 1,63 MB Stáhnout - OR-CZ charakterizovány modrou oblohou nad hlavou a dobrým sněhem pod lyžemi, ten letošní leden lyžařům vůbec nepřál. Navíc si jistě všichni pamatujeme, jak to s počasím vypadalo. Copak my, my jsme byli "...

Více

Nástroje pro vývoj aplikací v závislosti na platformě a jejich vazba na

Nástroje pro vývoj aplikací v závislosti na platformě a jejich vazba na psaní programového kódu. Díky této funkci jsou programátorovi při psaní zdrojového kódu automaticky nabízena pouze ta klíčová slova (názvy funkcí, proměnných, apod.), která jsou v daném kontextu po...

Více

PREZENTACE FIRMY

PREZENTACE FIRMY Kmenová data systému, Administrace systému, Rozhraní na jiný SW. MODUL PODPORA DB: Podpora databází MS SQL SERVER, ORACLE, INFORMIX, MySQL. MODUL PORTÁL, GROUPWARE: Kancelářský systém, www Aplikace...

Více