Bevezete s az SAP vila ga ba:

Hasonló dokumentumok
A programozás alapjai

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Informatika terméktervezőknek

Haladó DBMS ismeretek 1

Java programozási nyelv

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Java II. I A Java programozási nyelv alapelemei

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programozási nyelvek JAVA EA+GY 1. gyakolat

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Programozási nyelvek (ADA)

A C# programozási nyelv alapjai

Globális operátor overloading

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Szoftvertechnológia alapjai Java előadások

Alprogramok, paraméterátadás

Java II. I A Java programozási nyelv alapelemei

Adatbázis kezelés Delphiben. SQL lekérdezések

és az instanceof operátor

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Algoritmizálás és adatmodellezés tanítása 1. előadás

C programozás. 1 óra Bevezetés

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Objektumorientált programozás C# nyelven

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Oktatási segédlet 2014

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Magas szintű programozási nyelvek 2 Előadás jegyzet

Programozási nyelvek Java

OOP #14 (referencia-elv)

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

ISA szimulátor objektum-orientált modell (C++)

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.

Programozási alapismeretek 4.

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programozási nyelvek Java

Programozás II. 4. Dr. Iványi Péter

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

15. Programok fordítása és végrehajtása

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Felhasználó által definiált adattípus

ELTE SAP Excellence Center Oktatóanyag 1

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Osztályok. 4. gyakorlat

Bevezetés a C++ programozási nyelvbe

Objektumorientált programozás C# nyelven III.

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Programozás II gyakorlat. 6. Polimorfizmus

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Web-technológia PHP-vel

Concurrency in Swing

Kivételkezelés a C++ nyelvben Bevezetés

OOP és UML Áttekintés

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Bánsághi Anna

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Programozási nyelvek Java

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Programozás módszertan p.1/46

Java és web programozás

Java és web programozás

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

C programozási nyelv

Programozási nyelv Java

Occam 1. Készítette: Szabó Éva

PL/SQL (folytatás) Kurzorok, függvények, eljárások

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Python tanfolyam Python bevezető I. rész

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

A szerzõrõl... xi Bevezetés... xiii

Imperatív programozás

A C programozási nyelv I. Bevezetés

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Java programozási nyelv 9. rész Kivételkezelés

1. Egyszerű (primitív) típusok. 2. Referencia típusok

B IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Átírás:

Bevezete s az SAP vila ga ba: Mie rt ABAP? Készítette: Horváth Zsófia (HOZSAAI.ELTE) 2011 2012 2. félév

1952-ben készült el Neumann János tervei alapján az EDVAC nevet viselő számítógép, amely az első Neumann-elvek alapján épített gép volt. Innen kezdődik a programozási nyelvek története. Az évek során igen sok programozási nyelv alakult ki, amelyeket szemléletük és fontosabb jellemzőik alapján négy generációba soroltak. 1. generációs nyelvek: Gépi kód, Assembler 2. generációs nyelvek: FORTRAN, ALGOL, COBOL, BASIC 3. generációs nyelvek: PL/1, APL, PASCAL, MODULA 2, ADA, C-nyelv o objektumorientált nyelvek: SmallTalk, Eiffel, Turbo Pascal, Borland C++ o Specializált programozási nyelvek i. Rendszer- és fordítóprogramok fejlesztése: B, C, BCPL, Pascal ii. Formulakezelő nyelvek: FORMAC, REDUCE, MACSYMA iii. Szimbólum-feldolgozó nyelvek: PROLOG, CONVERT, LISP, SNOBOL, COGENT iv. Szimulációs nyelvek: SIMSCRIPT, SIMULA, GPSS v. Adatbázis-kezelő nyelvek vi. Kiterjeszthető programnyelvek: LOGO, FORTH 4. generációs nyelvek: XX. század második fele Az SAP szoftvercégnek a saját programozási nyelve az ABAP (angolul Advanced Business Application Programming, németül Allgemeiner Berichts-Aufbereitungs-Prozessor), melyet a 70-es évektől kezdve a cég folyamatosan bővít. Az első verziói (SAP R/1, SAP R/2 rendszerek) még assembly nyelven íródtak, majd megjelentek a COBOL-ban használatos parancsokhoz hasonló utasítások az ABAP/3. Végül 1983-ban megjelent az ABAP/4, amely már strukturált, procedurális programnyelvnek számít (egyfázisú programokkal). Nem sokkal később létrejött az ABAB Objects, amely már tényleges objektumorientált programozásra ad lehetőséget. Az ABAP-ra hatással volt az Objective-C, COBOL, SQL.

Vajon az SAP miért nem a C++, a JAVA vagy az ADA nyelvvel kezdett el fejleszteni? Minden programnyelvnek megvan a maga sajátossága, ami csak az övé, csak ő tudja kihasználni az előnyeit Miért kellett az SAP-nak megalkotnia egy teljesen új programozási nyelvet? Ha összehasonlítjuk pár nyelvekkel, rögtön kiderül, hogy nem csak a felsorolt három nyelv volt rá hatással, hanem azok is, amelyeknek az Assembler a közös őse. Hogy válaszolt tudjunk adni a kérdésre, hasonlítsuk össze az SAP nyelvét a fent említett nyelvekkel a következő szempontok szerint. A nyelv megszületése: Az ABAP első verziója körülbelül akkortájt jelent meg, mint az ADA vagy a C++, azaz a80-as években. Az objektumorientált verziója ABAP Objects pedig a JAVA-val egyidőben született meg a 90- es évek végén. Szintaxis: Ami számomra meglepő volt, ABAP-ban egy utasítássorozat végét egy ponttal (.) fejezzük ki, mely más nyelvekben ugyebár a pontosvessző. Ez olyan hatást keltett bennem, mintha egy mondatot olvasnék egy könyvből. Érthetően lezár egy szakaszt. Szekvenciák, avagy mit szabad: Mind az ADA, mind a C++ s még az ABAP-ban is van lehetőség arra, hogy egymás után soroljuk fel az azonos típusú változókat, nem kell külön-külön. ABAP szekvencia C++ szekvencia ADA (Pascal, Delphi) <Kulcsszó><Adatobjektum1>. <Kulcsszó><Adatobjektum2>. <Kulcsszó><AdatobjektumN>. ekvivalens ezzel: <Kulcsszó><Adatobjektum1>, <Adatobjektum2>,<AdatobjektumN>. <típus1> <változoónév1>; <típus1> <változoónév2>; <típus1> <változoónév3>; <típus1> <változoónév1>, <változoónév2>, <változoónév3>; <típus1> <változoónév1>; <típus1> <változoónév2>; <típus1> <változoónév3>; <típus1> <változoónév1>, <változoónév2>, <változoónév3>; Ha ADÁban a felsorolt verzióban értéket is megadunk, akkor az az összes adattagra fog vonatkozni, míg C++ban erre nincs lehetőség, ott csak a legutolsó elem kapja meg a megadott értéket. Ciklusok: Két féle ciklust különböztetünk meg, a számlálós és a feltételes ciklust. ABAP ciklusok C++ ciklusok ADA (Pascal, Delphi) ciklusok JAVA DO [<n> TIMES]. for (int i = 0, i<10, i++) for I in 1..10 loop <végrehajtási blokk> { <végrehajtási <végrehajtási blokk>; ENDDO. blokk>;} end loop; WHILE <feltétel>. <végrehajtási blokk> ENDWHILE. while (feltetel) {<vegrehajtási blokk>; } while <feltétel> loop <végrehajtási blokk>; end loop; mint a C++ban: for (előkészítő szakasz, feltételes sz.; növekményes szakasz) {ciklusmag} mint a C++ban és: do {ciklusmag} while (logikai kifejezés)

Elágazások: Ebből is kétféle verziót különböztetünk meg az if és case elágazást. Számomra az ABAP és ADA között egyszerre van hasonlóság és különbség is ebben. A hasonlóság valószínűleg a Fortran Algol Pascal egymás utániságából jön, a különbség pedig a case felépítésén. Meglep, hogy csak a Rubyban láttam eddig untill-es elágyazást, amely a normál if ellentéte lenne. ABAP elágazások: if <feltetel1>. <do sth> elseif <feltetel2>. <do sth> else. <do sth> endif. case <mezőnév> when <érték1>. <blokk> when <érték2>. <blokk> when others. <blokk> endcase. ADA elágazások if (felt) then <do sth>; elsif <do sth>; else <do sth>; end if; Ruby scriptnyelv C++ if elágazása: C++ case elágazása unless 1 < 2 er = 1 else er = 2 end if(feltétel) utasítás; else utasítás; case i is when <a> => <sth>; when <b> => <sth>;. when others => <sth>; end case; switch(c) { case 'i': case 'I': <utasítás>; break; //break; nélkül "átesne" a következő case-be is default: cout << "I/i vagy N/n!\n"; break; //ez nem kötelező, ha semelyik sem igaz, ide ugrik } Igazából, minden programnyelvben előfordulnak ezek az elágazások, kisebb-nagyobb különbségekkel. Kulcsszavak, kommentek Minden egyes nyelvben megvannak a lefoglalt szavak, melyeket nem tudunk (nem kéne) felüldefiniálnunk. Összeszedtem egy párat, melyek között átfedések is vannak: ABAP kulcs szavai: C++ ADA JAVA EXIT, CONTINUE, CHECK break, try catch, default, abort, abstract, acces, break, <feltétel>, GOTO (nincs delete, enum, goto, accept, new, reverse, continue, ABAP/4-ben) inline,void, xor, namespace, subtype, protected, public, DATA, DEMAND, operator, protected, register, interface, untill, limited, protected, DATABASE, DELETE, DEFINE, signed, sizeof, static, switch digits, declare, delay, @, stb ENDLOOP, EXPORT, stb case, throw, stb body, terminate, stb ABAP kommentek jele: C++ kommentek jele: ADA (Pascal, Delphi) * a sor elején // vagy /* */ -- Eljárások alprogramok: Ég és föld a különbség ABAP, ADA, C++ eljárásai / alprogramjai között. Nem meglepő, hiszen ezt az SAP az adatbázis kezelés résznél használja. Viszont akkor egy SQR-SQL és ABAP közötti hasonlóság megfigyelhető. A mellékelt képen látszik is, ez a hasonló felépítés és elnevezés is. Milyen meglepő, hogy mindhárom megemlített nyelvben külön kezeljük ezeket az eljárásokat.

void függvények ABAP Alprogram1: ABAP Alprogram2:külső form ADA Eljárás: C++ FORM <fnév> PERFORM <form neve> [<melyik procedure [TABLES <formális param> ] [USING < form. param > ] programból>] [TABLES <aktuális param> ] <valami> is --deklarálások [USING VALUES < form. param [USING < akt. param > ] begin > ] [CHANGING < akt param > ] [CHANGING < form param > ] [IT FOUND]. <feladat> [CHANGING VALUE < form. param > ]. másik verzió: PERFORM (<form neve>) <végrehajtási blokk> end; [IN PROGRAM (<melyik programból>)] ENDFORM. [...] [IF FOUND]. Függvények a kivételkezelés is ADA függvények function <fv név> return <típus> is --deklarációk; begin <to do> end <fv név>; C++ függvények void <fvnév> () { // <do sth>; } int <fvnév> () { // < do sth> } bool <fvnév> () { //<do sth> } Kivételkezelés: Kivételkezelés a C++ban: try catch class exception { public: exception () throw(); exception (const exception&) throw(); exception& operator= (const exception&) throw(); virtual ~exception() throw(); virtual const char* what() const throw(); } Kivételkezelés az ADAban: raise Constraint_Error, Program_Error, Storage_Error, Tasking_Error és include-olni kell a következőt: Ada.Exceptions (with & use)

Nem meglepő, hogy az ABAP raise <kivétel> nagyon hasonlít az ADA verziójára, bizonyára a Pascal hatása miatt. Adattípusok: Adatok tulajdonságai, mely tényleg minden nyelvben azonosan megvannak és működnek: o Láthatóság: globális, lokális o Élettartam: statikus, temporális Azonban az ABAP-ban vannak különleges típusok, nemcsak a megszokott Integer és Bool értékek. ABAP-ban a szöveg típusa a karakter, míg más nyelvekben ez tényleg string-nek van elnevezve, de általában van lehetőség karakterláncként is reprezentálni a stringeket.

Szerencsére, ma már szinte bármilyen típust képesek vagyunk létrehozni (az objektumelvűség miatt) és túl tudunk lépni a nyelvek, keretrendszerek által ránk szabott határokat. Objektumorientáltság ABAP és Objective-C Az objektumorientált programozást úgy lehet felvázolni, mint egy utat a gyors és hatékony programozáshoz. Alapeleme az osztály. Az osztályok létrehozásakor új adattípust hozunk létre, melyeket ugyanúgy használhatunk, mint más beépített adattípusokat. Emellett az osztálydefinícióban megadunk váltózókat, és a feladathoz kapcsolódó függvénykódot is. Az osztály nem más, mint tagváltozók és a tagfüggvények gyűjteménye. Az Objective-C nyelvre hatással volt maga a C és a Smalltalk. Befolyásolt nyelvei a Tom, Java, Objective-J, ABAP és egyéb C alapú nyelvek. Mikor megnéztem egy Objective C kódot, rögtön a Java és a C++ jutott először eszembe, hiába ered a szintaxisa a Smalltalkból. Számomra a C++ az a nyelv, amellyel régebb óta foglalkozok, mint bármely más, így mikor megláttam egy Objective C-ben megalkotott osztályt, elmosolyodtam, hiszen a két nyelv igencsak hasonlít egymásra ( a @ jelek, pedig az ember eszébe juttatják a Java-s jelölést). De akkor hogy kerül ide az ABAP? Úgy, hogyha megnézzük az Objective C és az ABAP-ban létrehozott osztályokat, megláthatjuk a hasonlóságokat. Mindkettő a saját szintaxisa és kulcsszavai szerint ugyanúgy implementálja a kívánt típust. A következő oldalon lévő két képen ez nagyon jól látszik. Hasonlóságok: Objective C-ben az osztály adattagjainak láthatóságának szabályozására a @public, @private, @protected és a @package direktívák adnak lehetőséget. ABAP-ban az első három használható. Az interfészekről: Objective C-ben az interfész deklarálja az osztály adattagjait, metódusait, és megnevezi az ősosztályát, az implementációban pedig definiáljuk a metódusokat, ezzel tulajdonképpen az osztályt. ABAP-ban ha egy osztály implementál egy, vagy több interfészt, akkor azok minden metódustörzsét meg kell adni. Interfészek között is lehetséges öröklődés. (Ez Java-s).

1. ABAP kód 1. Objective-C kód

ABAP és COBOL Általánosan a COBOL-ról: Harmadik generációs programozási nyelv. Bár általános célú, mégis FORTRAN és a PL/I mellett elsősorban az üzleti, pénzügyi élet rendszereiben használatos. Megjelentek benne a strukturált programozás bizonyos vezérlő szerkezetei is. A nyelv tervezésénél kísérletet tettek a hordozhatóság, a portabilitás megteremtésére. 1959-ben deklarálták, első változata a COBOL 60 volt. Egy COBOL program 4 jól elkülöníthető részre, COBOL szóhasználattal Divisionre (Főrészre) oszlik: 1. Azonosítási főrész, (IDENTIFICATION DIVISION.) 2. Környezet leíró főrész, (ENVIRONMENT DIVISION.) 3. Adatleíró főrész, (DATA DIVISION.) 4. Eljárási főrész (PROCEDURE DIVISION.) Talán, ami hasonlít a bonyolultnak látszó, de mégis áttekinthető felépítés: A Cobolban a változóknak nincs típusa, van viszont egy maszkja (PIC), hogy milyen értékek tárolhatók benne. (ABAP-ban van a DATA kulcsszó a változók deklarálásánál.) A fontosabb elemek: A: az angol ABC betűi vagy a szóköz. B: szóköz. V: tizedespont helye az adaton belül (a tizedespont nem tárolódik). S: az adat előjeles P: tizedespont helye az adaton kívül, és "P" helyén 0-k állnak. Ezek a 0-k nem tárolódnak. X: alfanumerikus karakter. 9 számjegy A maszkban az ismétlődő karaktereket rövidíteni lehet: XXXX helyett X(4) írható stb. A Cobolban az adatok definíciójánál kell megmondanunk az adat nyomtatási képét. Ezt szintén a PICTURE segítségével tehetjük meg. Szerkesztett adatmező csak output adatként szerepelhet. (Nincs ABAP-ban) Szerkesztőjelek: Z: Vezető nullák elnyomása. B: Szóköz. 0: Nulla.,: Vessző. + vagy -: Plusz jel, ha az adat pozitív, mínuszjel, ha negatív. A vezető nullák helyén "*"-ot kérünk nyomtatni (a hamisítások elkerülése végett)..: A ténylegesen nyomtatott tizedespont helye. +,$ Egyéb jelek. Meglepődve tapasztaltam, hogy mennyire eltérőek az elágazások a két nyelvben: COBOL if és case ABAP if és case COBOL (teljesen más, mint az ABAP-é) IF feltétel THEN utasítások1 ELSE utasítások2 END-IF. if <feltetel1>. <do sth> elseif <feltetel2>. <do sth> else. <do sth> EVALUATE X WHEN 1 THRU 12 utasítások1 WHEN 13 utasítások2 WHEN OTHER utasítások3 END-EVALUATE. endif. case <mezőnév> when <érték1>. <blokk> when <érték2>. <blokk> when others. <blokk> endcase.

COBOLban az egyetlen vezérlésátadó utasítás a GO TO, amit ugye az ABAP nem támogat. A Cobolban nincs hagyományos értelemben vett eljárás, viszont két címke közti kódrészletet meg lehet hívni úgy, mintha eljárás lenne. ABAPban viszont már kétféle igazi eljárás (alprogram) is létezik. A Cobolban lehetőség van beágyazott programok írására. Ekkor az eljárási főrész STOP RUN utasítása és END PROGRAM programnév közé egy teljes programot (mind a négy főrésszel) beírhatunk. Erre a vezérlést a CALL programnév utasítással adhatjuk át. Engem ABAPban ez a függvényhívásra emlékeztet. A Cobol mondatokból szakaszokat készíthetünk, melyek általában a feldolgozás egy-egy elkülöníthető részének programkódját tartalmazzák. Minden szakasz szakasznévvel kezdődik, ezt pont követi. (ABAP szintaktika is ilyen, nem véletlenül.) Szegmentált program esetében a résznévvel együtt még a prioritásszám is szerepel. A szakaszokból pedig fejezeteket készíthetünk. A szakaszokat és fejezeteket, mint eljárásokat használhatjuk. ABAP kód hasonlóképpen felépíthető. Az ABAP-pal ellentétben a Cobol nem támogatja az absztrakt adattípusokat, a sablonokat sem eljárás, sem típus szinten. Míg az ABAP-ban szerepel, addig valódi kivételkezelés nincs a Cobol-ban, azonban egyes utasítások esetén lehetőség van hibakezelésre. Az eredeti Cobol nem tartalmaz objektum-orientált eszközöket. Ez nem meglepő, hiszen a nyelv sokkal korábbi, mint maga az objektumelvűség. Ugyanakkor a modernizálás szelleme a Cobolt sem kerülte el, így megalkotásra került az OO Cobol, azaz a COBOL 2002. Azt hiszem, itt már kimondhatjuk, hogy a COBOL 2002 hasonlít az ABAP Objectsre, hiszen az már 1999-ben létrejött. Párhuzamosság Az ABAP nem támogatja a párhuzamosságot, hiszen igen nagy kárt tudna tenni az adatkezelő rendszerben. Azonban, hogy ezt a problémát megoldják, és mégis lehessen esély a párhuzamosságra, létrehozták a számköröket. Egy számkörnek meg lehet adni egy intervallumot, típust és amikor szükség van rá, egy függvény segítségével - NUMBER_GET_NEXT - generálhatunk értéket belőle. Ez garantálja, hogy egy értéket egyszer oszt ki a rendszer. Az első párhuzamosságot taglaló mondataim között volt olyan, hogy meg lehet oldani, (de adatvesztéssel is járhat, ) csupán egy SELECT lekérdezéssel tudjuk elérni. Ezt a select kulcsszót ADÁban a taszkoknál használjuk, mely akár többszálúság, párhuzamos programozásra is ad lehetőséget, hiszen időre írunk kódot. A COBOL nem támogatja párhuzamos programok készítését. Objective-C viszont sajátosan kezeli a párhuzamosságot, illetve inkább a többszálúságot abban az értelemben, hogy a különböző taszkokban vagy szálakban futó objektumok tudnak egymással kommunikálni és egymás metódusait meg tudják hívni. Java-ban az első - s talán kevésbé használt verziója az, amely a Java.lang.Thread osztályt használja, s ebből örökít új objektumokat. Az ebből örökített objektumok külön szálként fognak viselkedni. A szálakat a Start() metódus indítja el az osztály Run() metódusát használva. Így nekünk az

örökített példányban csak a Run() metódust kell felülírnunk. Az új Run() metódus fogja tartalmazni a szál tényleges feladatát, melyet végre kell hajtanunk. A C++/CLI-ben nincsenek (ahogy a.net 3.x idején egyetlen Microsoft-os CLR nyelvben sem) nyelvi szinten párhuzamos programok írását támogató nyelvi eszközök, azonban a párhuzamosság a Windows szálak segítségével megvalósítható. E szolgáltatáshoz a System::Threading namespace nyújt.net keretet. Szálak indítására és felügyeletére a System::Threading::Thread osztályt használhatjuk. Az osztály konstruktora egy delegate-t vár, mely a szál belépési pontja lesz. Opcionálisan elláthatjuk egy Object típusú paraméterrel. A Thread osztály lehetőségei: Suspend(): Thread felfüggesztése Resume(): Thread folytatása Priority: Thread prioritásának lekérdezése / beállítása Abort(): Thread "erőszakos" leállítása Join(): Megvárja, míg a thread befejeződik, majd visszatér - opcionálisan megadható maximális várakozási idő Adatbázis kezelés: ABAP és SQR SQL A relációs adatbázis-kezelők szabványos adathozzáférési és adatdefiníciós nyelve az SQL (Structured Query Language). Az SQR (Structured Query Reporter) egy erős és rugalmas programozási nyelv, mely adatbázisokból készít úgynevezett SQR lapokat, azaz a riportokat. Az ABAP független az adatbázis-kezelőtől. A nyelv része az Open SQL, amit a rendszer az éppen aktuális adatbázis kezelő SQL-dialektusára fordít. A nagy mennyiségű üzleti adatok kezelését egy speciális változótípussal, a belső táblával támogatja. Adatlekérdező utasítások (QUERY) SQL: SQR ABAP SELECT SELECT A belső tábláknál használt FROM LOAD-LOOKUP kulcsszavak: WHERE LOOKUP - WHERE ciklus a SELECT GROUP BY DML utasítások utasításban HAVING - FOR ALL ENTRIES a SELECT ORDER BY CASE - JOIN vagy FOR ALL ENTRIES Platformfüggetlenség A legtöbb nyelv platform független, ez azért hasznos, mert bárhol lehet fejleszteni őket, nem lesz baj, ha másik operációs rendszerben történik a kódolás.

Miért is az ABAP? Röviden, azért, mert az SAP cégnek egy olyan nyelv kellett, mellyel lehet programozni és adatbázist kezelni. Erre egyetlen egy nyelv sem adhatott megoldást, ezért kellett létrehozniuk egy olyan új nyelvet, amelyet a saját felhasználói szükségleteiket kielégítik. Mint minden nyelv, ez is az elődeiből építkezett, átvette a hasznos funkcióikat, saját tulajdonságokkal is rendelkezik. Ezáltal vagy éppen ezért mégis egyedi lett. Szerintem egyetlen egy nyelvet sem befolyásolt ennyi másik programozási nyelv, mint az ABAP-ot. Ennek az az oka, hogy az első verzióját még az első generációs Assembly-ben készítették, s majd a COBOL is hatott rá, természetes más nyelvekre is. Ezzel a nyelvvel nagyon jól járt az SAP, nem véletlen, hogy a mai napig még fejlesztik, újítják, hogy piacképes maradjon. Források: Wikipédia Prognyelvek portál: http://nyelvek.inf.elte.hu/