[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Gdzie mozna znalezc opis gramatyki???



On 26 Jun 97 at 9:02, Tomasz Fidecki wrote:

> Poszukuje PELNEGO opisu gramatyki 4GL Progressa. Chce uniknac
> niespodzianek typu niemoznosc uzycia CAN-FIND w skladni OPEN QUERY.
> Z tego co widze zawodnicy z PSC dosc swobodnie traktuja "expression"
> w zaleznosci od kontekstu.
> 
> W zwiazku z powyzszym mam nastepujace zadanie:
> 
> +------+                  lezy w +-----------+
> | kosz |------------------------<| truskawka |
> +------+ zawiera                 +-----------+
> 
> ot taka sobie standardowa relacja 1:wiele
> 
> Chcialbym otworzyc browser z danymi o koszach, ale warunek ma
> dotyczyc truskawki. Innymi slowy np. przegladarka koszy, w ktorych
> leza TYLKO czerwone truskawki. (zalozenie: w koszu moga lezec
> czerwone i zielone truskawki) 
> 
> Pierwsze podejscie:
>     OPEN QUERY q1 FOR EACH kosz WHERE NOT CAN-FIND(truskawka OF kosz
>                     WHERE truskawka.kolor <> "czerwona")
>     Pudlo - Progress nie pozwala uzywac CAN-FIND w skladni OPEN
>     QUERY. W zwyklym grupowaniu FOR EACH taki manewr przechodzi.    
>        
> Drugie podejscie:
Nie twierdze, ze rozwiazanie eleganckie i ze zawsze skuteczne. Przy 
duzej liczbie rekordow moze sie wylozyc, ale w zasadzie powinno 
dzialac (nie sprawdzalem)

define temp-table t-kosz like kosz.
for each kosz:
  if not can-find (truskawka of kosz 
      where truskawka.kolor <>  czerwony) then do:
      create t-kosz.
      assign /* t-kosz.pole1 = kosz.pole1
                     t-kosz.pole2 = kosz.pole2 .... */ .
  end /* if */.
end /* for */.
open query q1 for each t-kosz.


Kilka luznych uwag:

jedynym i najlepszym opisem gramatyki Progressa jest dokumentacja, 
konkretnie "Language Reference" oraz Biuletyny Techniczne. W zasadzie 
jezeli cos nie dziala zgodnie z dokumentacja, nalezy to zglosic do 
supportu Progressa.

sama funkcja CAN-FIND jest dosyc dziwna i nie we wszystkich 
przypadkach mozna jej uzywac. Ponadto, zalecenia sa takie, zeby - 
ze wzgledow wydajnosciowych - unikac jej jesli tylko mozliwe. Na 
przyklad zamiast warunku 
IF CAN-FIND .... 
stosowac
FIND .... NO-ERROR
IF AVAILABLE ...


Pozdrowienia dla Listowiczow

Pawel Dobrzynski

-----------------------------------------------------
Pawel Dobrzynski, CSBI Progress Department

   Computer Systems for Business International SA
   ul. Plowiecka 1, PL 04-501 Warszawa, POLAND
   phone: (+48-22) 673-16-80  fax: (+48-22) 612-31-22  
   http://www.csbi.waw.pl/