4GL

4GL je programovací jazyk .

Historie: Informix

V 80. letech bylo standardizováno několik komponent počítačových systémů. Každý výrobce měl svůj vlastní operační systém , svůj vlastní programovací jazyk, svůj vlastní systém pro správu databází (DBMS) atd. Ve skutečnosti, aby byly programy schopné provozu na většině strojů, musel být každý program přestavěn pro každou verzi. Jazyk spojený s Informix DBMS (konkurentem Oracle ) byl 4GL .

Aktuální verze

V roce 2001 koupila společnost IBM společnost Informix a rozhodla se dát vývoji 4GL velmi nízkou prioritu. Verze pro údržbu jsou omezeny na přísné minimum, tj. Opravenou chybu (7,31 v roce 2002, 7,32 v roce 2004 s konečně dynamickými poli), poté 7,50 v roce 2008, včetně generátoru WebServices ze zdroje 4GL. Produkt zůstává dostupný pod Unixem (Linux 32 nebo 64 bit, Aix, hp-ux, solaris), protože ho stále používají miliony zákazníků po celém světě. Jeho handicap:

- Spravuje pouze „znakové“ rozhraní (staré terminály obrazovky VT220 typu ASCII atd.) - Je „závislý na databázi“, pracuje pouze s databází Informix

Několik společností nyní nabízí alternativní produkty kompatibilní s původním 4GL, ale bez jeho nevýhod: grafické rozhraní, více databází. Tyto produkty tak nabízejí instalované základně možnost vývoje a modernizace aplikací při zachování získaného jazyka a dovedností.
Jedná se zejména o tyto společnosti:

Vydání Lycia II, naplánováno naZáří 2012, přináší nový generátor sestav založený na Jasperu a BIRTu , integraci jazyka java do 4GL aplikací, stejně jako nové .NET a webové / mobilní klienty , technologie HTML5 a Ajax

Zvláštní vlastnosti tohoto jazyka

4GL je jazyk určený pro vývoj aplikací. Je to čtvrtá generace jazyk (od této doby jeho jméno, 4GL: 4 th Generation Language), což znamená, že na rozdíl od C , Pascal a dalších třetí generace jazyky, které nejsou specializované, že je navržen tak, aby komunikovat s několika typy databází s stejné zdroje (ODI). Je založen na RDSQL, rozšíření SQL . Například je možné definovat typ proměnné podle pole v tabulce (viz příklad níže).

Je to necitlivé na velká a malá písmena .

Používá čistě procedurální pokyny (IF, FOR, WHILE atd.), Ale také procedurální pokyny. Například MENU se používá k vytváření nabídek (viz příklad níže). V případě MENU zůstává program mezi pokyny MENU a KONEC MENU. Jakmile uživatel provede akci, program zkontroluje, zda má reagovat. Pokud ne, nedělá nic, pokud ano, udělá, co má, pak se vrátí do nabídky a zůstane tam znovu. To bude trvat, dokud uživatel nepožádá o ukončení programu nebo zavření nabídky.

Tento druh výuky zrychluje vývoj ve srovnání s obvyklými procedurálními jazyky (podle studijních materiálů publikovaných Iscariotem na konci 80. let je poměr kolem 1 až 10).

4GL umožňuje rozdělení programů na více zdrojových souborů (tzv. Modulů), z nichž každý obsahuje část funkcí. To umožňuje vytvořit společné moduly obsahující funkce používané několika programy, a proto se vyhnout jejich přepisování. Speciální soubor říká kompilátoru, které moduly mají sestavit, aby vytvořil funkční program.

Zobrazení na obrazovce je spravováno speciálním souborem. Tolik modulů je ve formátu * .4gl, stejně jako soubory zobrazení (pojmenované tvary) jsou soubory v * .per. Formuláře obsahují rozložení textových a vstupních polí (a formuláře kompatibilní s nejnovějšími verzemi kompilátoru: zaškrtávací políčka , pole se seznamem atd.) A přidružené proměnné.

Programy 4gl komunikují s tvary pomocí speciálních pokynů, které spojují skupiny proměnných v programu se skupinou proměnných ve tvaru. Nakonec je výstup (do tiskárny, do počítačového souboru atd.) Řízen speciálním typem funkce, funkcemi sestavy.

IIUG (International Informix Users Group) má mnoho fór a nástrojů doplňujících 4GL.

Příklady

První ukazuje, jak nastavit hodnotu proti tabulce v databázi, se kterou je program propojen. Tyto proměnné tedy budou mít stejný typ jako pole, ke kterému byly přidruženy.

Druhý ukazuje příklad příkazu MENU

Poslední příklad ukazuje specializaci 4GL na aplikace pro správu. V několika řádcích kódu je možné zobrazit formulář, dotazovat se ho a přidat hodnoty zadané v databázi.

Příklad 1

DEFINE ma_variable LIKE ma_table.ma_valeur DEFINE mon_record RECORD LIKE ma_table.*

Příklad 2

MENU Choix COMMAND "Interro." code, le plus souvent un appel de fonction COMMAND "Fin" code, le plus souvent un appel de fonction END MENU

Příklad 3

DEFINE client_record RECORD LIKE client.* OPEN FORM client FROM "client" DISPLAY FORM client INPUT BY NAME client_record.* AFTER INPUT IF NOT INT_FLAG THEN INSERT INTO client VALUES (client_record.*) END IF END INPUT

Příklad 4

Funkce ukazující zájem o PŘÍPRAVU PROVÉST

FUNCTION ma_fonction(numero_id) #STEVE 05/09/2008 [email protected] DEFINE numero_id LIKE ma_table.numero_id, query_tmp CHAR(256), date_tmp,date_max DATE LET query_tmp = " SELECT date_naissance ", " FROM ma_table ", " WHERE numero_id = ",numero_id USING "<<<<<&", " " PREPARE q_tmp FROM query_tmp EXECUTE q_tmp INTO date_tmp SELECT MAX(date_tmp) INTO date_max FROM ma_table IF date_max<date_tmp THEN DISPLAY "C'est le plus jeune !!" ELSE DISPLAY "C'est PAS le plus jeune" END IF END FUNCTION

Příklad 5

Malý příklad na FOREACH

FUNCTION ma_fonction2(ma_date) DEFINE ma_date,date_tmp DATE #STEVE 05/09/2008 [email protected] DECLARE c_date CURSOR FOR SELECT date_naissance FROM ma_table FOREACH c_date INTO date_tmp IF date_tmp>ma_date THEN DISPLAY "Ce n'est pas le plus jeune" RETURN "N" END IF END FOREACH DISPLAY "C'est le plus jeune!!!!" RETURN "O" END FUNCTION

Příklad 6

Malý příklad manipulace a zobrazení tabulek

FUNCTION ma_fonction3(ma_date) DEFINE ma_date DATE DEFINE mon_tableau ARRAY[20] OF RECORD date_naiss DATE, nom CHAR(20), prenom CHAR(20), ville CHAR(20) END RECORD DEFINE idx smallint DECLARE c_date CURSOR FOR SELECT date_naissance, nom, prenom, ville FROM ma_table LET idx=1 FOREACH c_date INTO mon_tableau[idx].* # valoriser l'élément du tableau avec la rangée courante LET idx = idx + 1 # incrémenter l'indice du tableau END FOREACH LET idx=idx-1 # le nombre exact d'éléments ( -1 car le foreach termine avec la valeur correcte + 1 ) IF idx > 0 THEN open window ma_window at 3,55 with form "ma_forme" attribute (border) # créer une window en ligne 3, colonne 55, à partir de la forme ma_forme.per/frm CALL set_count(idx) DISPLAY ARRAY mon_tableau TO sa_tableau # afficher le contenu du tableau dans le screen record défini dans ma_forme.per ELSE ERROR "Pas de données à afficher" END IF END FUNCTION

externí odkazy